жесткий диск - Как тип доступа ввода / вывода влияет на время доступа?


1

Я пытаюсь лучше понять, как тип доступа ввода-вывода влияет на время доступа. Может ли обычный жесткий диск выполнять как произвольный, так и последовательный доступ?

Если да, то почему вы хотите сохранить условия для обоих? После прочтения этот после того, как я понял, что последовательный доступ лучше, чем произвольный доступ, как это так? Поскольку при последовательном доступе мне нужно пройти через все предыдущие ячейки памяти, чтобы добраться до желаемого местоположения. Находясь в произвольном доступе, я могу просто «прыгнуть» на него. Таким образом, произвольный доступ обеспечивает все возможности последовательного доступа.

Также в каких ситуациях жесткий диск будет прибегать к случайному / последовательному доступу?

Ответы:


2

Может ли обычный жесткий диск выполнять как произвольный, так и последовательный доступ?

Жесткий диск относится к категории устройств с произвольным доступом. Секторы жесткого диска являются адресуемыми, а операция чтения или записи требует указания адреса сектора. Операция R / W не зависит от местоположения предыдущей операции.

Устройства с последовательным доступом, такие как магнитная лента (катушка или картридж) и перфорированная (бумага или майлар) лента, не имеют адресуемых записей или блоков. Записи / блоки зависят от положения, и доступ для чтения / записи должен начинаться с начала носителя. Существуют некоторые приемы (например, метки файлов на магнитной ленте), позволяющие осуществлять высокоскоростной поиск, но в настоящее время устройства с последовательным доступом в основном существуют из-за сохранения данных и преимуществ стоимости за байт. При современном распространении жестких дисков и SDD устройства с последовательным доступом не могут обеспечить производительность в качестве устройства хранения общего назначения (например, для файловой системы).

Если да, то почему вы хотите сохранить условия для обоих?

Последовательный доступ - это естественная возможность устройства с произвольным доступом.
Принимая во внимание, что устройство с последовательным доступом борется (то есть требует много дополнительных операций и требует времени) для выполнения произвольного доступа.

Технически жесткий диск не выполняет последовательный доступ. Интерфейс команды не имеет «читать дальше» или «писать дальше». Должен быть указан явный адрес сектора.

После прочтения этого поста у меня возникает мысль, что последовательный доступ лучше, чем произвольный, как это так?

Лучше чем?
(Кстати, эти ответы не на 100% точны.)

Некоторые приложения (например, регистратор / регистратор данных или архивирование жесткого диска) прекрасно работают с последовательным доступом и вообще не выиграют от использования произвольного доступа.
Некоторым приложениям абсолютно необходим произвольный доступ для своевременного выполнения их задачи (например, запрос к базе данных или файловая система).

Обратите внимание, что типичный ПК не имеет запоминающего устройства с последовательным доступом.
Как правило, устройство с произвольным доступом имеет большую полезность, чем устройство, ограниченное последовательным доступом. Вот почему жесткий диск (или SDD) (оба устройства с произвольным доступом) являются необходимыми периферийными устройствами для запоминающего устройства компьютера, тогда как устройства с последовательным доступом, такие как магнитная лента, считаются необязательными и относятся в основном к функциям архивирования.

Таким образом, произвольный доступ обеспечивает все возможности последовательного доступа.

Правильный.

Также в каких ситуациях жесткий диск будет прибегать к случайному / последовательному доступу?

Жесткий диск из-за своего командного интерфейса всегда выполняет произвольный доступ.
Чтобы получить доступ к «следующему последовательному» сектору, хост-компьютер должен запросить «предыдущий сектор + 1»; нет команды «читать (или писать) дальше». Каждая команда R / W должна указывать адрес сектора.

Обратите внимание, что программное обеспечение файловой системы операционной системы будет скрывать эту черту жесткого диска. Доступ к большинству файлов осуществляется последовательно: вы начинаете запись или чтение файла в его начале и продолжаете получать доступ к файлу по одной записи или строке за раз (т.е. последовательно). Копирование файла всегда выполняется путем последовательного чтения исходного файла. Но учиться этот ответ чтобы понять, как файловая система и жесткий диск должны выполнять дополнительный произвольный доступ для последовательного копирования содержимого файла.

Как тип доступа ввода / вывода влияет на время доступа?

Для начала нам нужно правильно определить «время доступа» к жесткому диску (поскольку ответы в упомянутом вами посте неточны). Есть несколько компонентов для доступа к времени, которые соответствуют работе жесткого диска:

  1. Команда чтения или записи должна отправляться с хост-компьютера на жесткий диск через интерфейс хост-диск (например, SATA).
  2. Контроллер жесткого диска обрабатывает команду. Если запрос на чтение может быть удовлетворен из кэша, то данные сектора уже доступны; перейти к шагу № 8. Для запроса на запись данные сектора также должны быть переданы, а затем вычисляются байты ECC.
  3. Фактическая операция с диском начнется с дополнительной операции поиска.
    Если сборка головки R / W еще не установлена ​​на требуемом цилиндре, то должна быть выполнена операция поиска. Временной интервал для выполнения этой операции перемещения головки R / W называется время поиска , Обратите внимание, что поиск (то есть движение головок R / W) требует ускорения, дополнительной фазы максимальной скорости и затем замедления. Скорость не постоянна, а время поиска не линейно пропорционально количеству пройденных цилиндров. Эти факты делают большинство короткоходных расчетов поддельными.
    Если сборка головки R / W уже установлена ​​на требуемом цилиндре, поиск не требуется, и время поиска фактически равно нулю.
  4. Как только сборка головки R / W находится на требуемом цилиндре, выбирается головка R / W, соответствующая запрашиваемой направляющей.
  5. Поскольку пластины вращаются «под» головками R / W, контроллер должен ждать, пока запрошенный сектор не появится. Это время ожидания называется задержка вращения , Если вы не можете предсказать, когда контроллер начнет ожидание относительно позиции вращения запрашиваемого сектора, средняя задержка вращения составляет половину периода вращения. (Период обратен скорости вращения.)
  6. Как только запрошенный сектор найден, выполняется фактическая операция чтения или записи. Для операции чтения биты, считанные с поверхности диска, записываются в виде байтов в секторный буфер. Для операции записи данные в буфере секторов сериализуются и записываются на поверхность диска.
  7. Как только весь сектор был считан в буфер сектора (контроллера), данные проверяются с использованием ECC. Коррекция применяется при необходимости (мягкая ошибка). Если ошибки не могут быть исправлены, то предпринимается попытка повторного чтения.
  8. Запрос R / W завершается ответом на хост-компьютер с данными сектора, которые были прочитаны, или подтверждением «запись OK» через интерфейс хост-диск.

время доступа будет общее время, затраченное на выполнение всех этих операций. За исключением № 3, времени поиска и № 5, задержки вращения, другие операции, как правило, имеют относительно короткую и предсказуемую продолжительность по сравнению с этими двумя операциями.

Случайный доступ к жесткому диску будет иметь тенденцию иметь длительное время доступа, потому что потребуется поиск неизвестного промежутка и задержки вращения.
Последовательный доступ к жесткому диску может иметь минимальное время доступа, потому что поиск не вероятен (если только предыдущий доступ не был последним сектором цилиндра), а задержка вращения может быть нулевой, если запрос уже был поставлен в очередь, или предыдущее чтение выполнило «чтение вперед» , Если время отправки последовательных запросов на жесткий диск плохое (т.е. слишком поздно, отсутствует следующий сектор), время доступа будет увеличено из-за задержки вращения, равной почти полному времени вращения. Эта задержка будет примерно такой же величины, как и поиск одного цилиндра.


«Если сборка головки R / W уже установлена ​​на требуемом цилиндре, то поиск не требуется, и время поиска фактически равно нулю». Я не знаю, это не строго произвольный доступ, хотя требование использовать абсолютную адресацию означает, что оно также не является строго последовательным. Я бы сказал, что в нем есть элементы того и другого, чего вы и ожидаете от механического устройства.
Marshall Eubanks

@MarshallEubanks «Я не знаю, это не строго случайный доступ» - Кажется, вы составляете свои собственные определения. Несмотря на ваши сомнения, концепции случайного и последовательного доступа и устройств хорошо известны в компьютерной индустрии на протяжении десятилетий. Что касается цитируемого вами предложения, оно не поддерживает то, на что вы претендуете. Цилиндр может содержать две или более дорожки (и целых 19 дорожек для блоков SMD, для которых я написал прошивку контроллера), поэтому поиск никогда не был обязательным для выполнения «произвольного» доступа.
sawdust

Вы сами говорите: «Последовательный доступ - это естественная возможность устройства с произвольным доступом». так что на самом деле неясно, о чем вы пытаетесь спорить, кроме общей педантичности. Должно быть, я пропустил это предложение, потому что единственное, на что я «претендовал», семантически идентично цитируемому предложению, хотя, возможно, и сформулировано плохо.
Marshall Eubanks

1

Последовательный доступ не означает чтение всего до определенного момента, это означает чтение группы секторов или кластеров один за другим, то есть «последовательно».

Фактически вы можете думать об этом как об одном «произвольном» доступе, за которым следует кластер последовательных обращений.

Чтобы продемонстрировать, почему последовательный доступ лучше, чем полностью При произвольном доступе нужно понимать, что входит в процесс чтения с диска.

Когда вы запрашиваете на жестком диске один кластер, накопитель должен переместить головку на место, а затем подождать, пока вращающийся диск вращается, чтобы кластер находился под головкой и был готов для чтения. Это известно как «время поиска» для диска. Для большинства жестких дисков время поиска составляет в среднем порядка 9 миллисекунд.

Для истинного случайного доступа ( каждый запрос для непоследовательного сектора / кластера), то каждый В запросе среднее время поиска составляет 9 миллисекунд, поскольку головка должна двигаться, а затем каждый раз ждать правильный сектор, эта задержка серьезно ограничивает общую пропускную способность данных, поскольку у вас есть цикл

seek
data
seek
data
seek
data
seek
data

Для 4 случайного чтения. При условии чтения 4 КБ у вас есть минимум 36 миллисекунд ожидания (плюс незначительное время для чтения каждого блока), прежде чем вы получите последний блок данных.

Для последовательного доступа вы можете указать начальную точку и затем сказать «продолжить чтение для блоков X». Вам больше не нужно ждать перемещения головки или диска под головкой, головка уже находится в нужном месте для следующего блока данных, когда он заканчивает предыдущий, поэтому вы просто продолжаете чтение. Вы эффективно удаляете время поиска 9 миллисекунд между каждым запросом данных.

Для последовательного чтения вы получите

seek
data
data
data
data

Что дает вам 9 миллисекунд плюс четыре небольших времени передачи данных для каждого блока.

Предполагая, что чтение 4KB занимает 1 мс (это приблизительная цифра), это в основном означает, что при чтении 4K вы получаете пропускную способность в порядке

  • 32 КБ за 40 мс для случайного чтения и
  • 32 КБ за 13 мс для последовательного чтения

Так что последовательные чтения много Быстрее.

Диски SSD разные, у них нет движущейся пластины, поэтому время поиска практически отсутствует. Случайный доступ по сути такой же быстрый, как и последовательный доступ.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.