디스크 드라이브 인터페이스가 데이터 전송의 병목 현상이라고 흔히 말합니다. 예. 하드 드라이브의 경우 데이터는 하드 드라이브 버퍼에서 하드 드라이브 메모리 모듈로 전송됩니다. 그리고 하드 드라이브 버퍼는 캐시 메모리인데 왜 인터페이스에 병목 현상이 발생합니까? 캐시는 일종의 스램입니다. 따라서 전송 속도가 빨라야 합니다. 왜 그렇지 않습니까?
답변1
요즘 하드 디스크와 SSD는 직렬 연결을 가장 일반적으로 사용하지만 역사적으로는 IDE 인터페이스를 사용했습니다. IDE는 기본적으로 초기 PC에서 사용했던 ISA 버스의 단순화된 버전이었습니다. 그러한 컴퓨터에서는 제안한 대로 장치 레지스터에 직접 액세스할 수 있습니다. 그러나 PCI가 등장했을 때 속도가 빨라졌기 때문에 구형 IDE 드라이브는 직접 액세스하기에는 너무 느렸습니다. IDE(또는 이름이 바뀐 ATA)의 최신 개정판에서는 속도가 증가했지만(폭은 증가하지 않았습니다. PCI는 32비트 폭이었지만 ATA는 16비트에 머물렀습니다) 프로세서 속도는 계속 증가했고 PCI나 ATA도 이를 따라잡을 수 없었습니다.
결국 우리는 ATA의 병렬 인터페이스에서 직렬 인터페이스로 전환했습니다. 이로 인해 프로세서에 대한 연결이 덜 직접적으로 이루어지지만 직렬 인터페이스는 훨씬 더 빠르게 실행될 수 있으므로 최대 속도로 실행하는 데 훨씬 더 가깝지만 여전히 대기 시간이 발생하고 빠른 RAM보다 느립니다.
기존 고속 ATA 드라이브는 버스와 비슷한 속도로 실행되는 70~80ns 메모리를 사용하는 경우가 많았습니다. 최신 메모리는 더 빠르지만 버스만큼 빠른 곳은 없습니다. 나는 최신 드라이브가 처리량을 높이기 위해 사용하던 16비트 프로세서에서 더 넓은 버스 크기로 전환했다고 상상합니다.
답변2
그리고 하드 드라이브 버퍼는 캐시 메모리인데 왜 인터페이스에 병목 현상이 발생합니까?
버퍼/캐시 내용을 확인해야 하기 때문에 버퍼는 대기 시간(요청당 더 많은 시간)을 추가합니다. 그렇다면 왜 우리는 그것들을 가지고 있습니까? 일반적으로 데이터는 선형이므로 다음에 버퍼를 확인할 때 이미 버퍼에 있으므로 디스크를 확인할 필요가 없습니다.
다른 문제는
캐시는 일종의 스램입니다. 따라서 전송 속도가 빨라야 합니다. 왜 그렇지 않습니까?
데이터가 버퍼/캐시에서 로드되면 속도가 빠릅니다. 이는 데이터가 이미 있는 경우에만 발생합니다. 데이터가 캐시에 없으면 디스크로 이동하므로 속도가 느려집니다. 데이터를 계속해서 읽는다면 캐시가 디스크에 비해 작기 때문에 캐시에 없을 가능성이 높습니다.