Часто говорят, что интерфейс жесткого диска является узким местом в передаче данных. Например, в случае жестких дисков данные передаются из буфера жесткого диска в модуль памяти жесткого диска. И поскольку буфер жесткого диска является кэш-памятью, почему тогда интерфейс является узким местом? Я имею в виду, что кэш является типом sram. Поэтому скорость передачи должна быть высокой. Почему это не так?
решение1
В наши дни жесткие диски и твердотельные накопители чаще всего используют последовательное соединение, но исторически использовали интерфейс IDE. IDE был по сути упрощенной версией шины ISA, которую использовали ранние ПК. В таких компьютерах можно было просто напрямую обращаться к регистрам устройств, как вы и предлагаете. Но когда появился PCI, он стал быстрее, поэтому старые диски IDE были слишком медленными для прямого доступа. Более поздние версии IDE (или, скорее, ATA, как его переименовали) увеличили скорость (хотя и не ширину: PCI имел ширину 32 бита, а ATA оставался 16 бит), но скорость процессора продолжала расти, и ни PCI, ни ATA не могли за ней угнаться.
В конце концов мы перешли с параллельного интерфейса ATA на последовательный интерфейс. Это делает соединение с процессором менее прямым, но последовательные интерфейсы могут работать намного быстрее, поэтому они гораздо ближе к работе на полной скорости, но все равно это вносит задержку и работает медленнее, чем быстрая RAM.
Старые высокоскоростные ATA-диски часто использовали память 70 или 80 нс, которая работала на скоростях, схожих с шиной. Современная память быстрее, но далеко не так быстро, как шина. Я полагаю, что современные диски перешли с 16-битных процессоров, которые они использовали, на более широкие размеры шины, чтобы увеличить пропускную способность.
решение2
А поскольку буфер жесткого диска представляет собой кэш-память, почему тогда интерфейс является узким местом?
Буферы добавляют задержку (больше времени на запрос), потому что содержимое буфера/кэша нужно проверять. Так зачем же они нам? потому что обычно данные линейны, поэтому есть вероятность, что при следующей проверке буфера они уже будут в буфере, и диск проверять не нужно.
Другая проблема в том,
Я имею в виду, что кэш — это тип sram. Поэтому скорость передачи должна быть высокой. Почему это не так?
Если данные загружаются из буфера/кэша, то это быстро. Это происходит только если данные уже там. Если данных нет в кэше, то они отправляются на диск, и это медленнее. Если данные считываются непрерывно, то есть вероятность, что их нет в кэше, так как кэши малы по сравнению с диском.