Расчет времени чтения модели блока жесткого диска


8

Мой профессор опубликовал слайд о том, как рассчитать получение данных с жесткого диска, используя блочную модель. Спецификации были:

  • 7200 об / мин
  • 5 мсек
  • Скорость передачи 80 МБ / с
  • МОДЕЛЬ БЛОКА: Размер блока 4KB

Я не понимаю, как он сделал следующий расчет или откуда взялись некоторые цифры:

5 мс + 1000/240 мс + 0,05 мс = 9,216 мс для чтения блока.

Кто-нибудь может сказать мне, откуда взялись 1000/240 мс и 0,05 мс?

РЕДАКТИРОВАТЬ: Если бы цифры оказались совершенно неверными, как бы вы сделали это тогда?


Есть три компонента. Время поиска, время вращения данных под считывающей головкой (в качестве среднего значения используется половина полного времени вращения) и время передачи.
Дэвид Маршалл

На самом деле есть четвертый компонент, «время передачи» заключается в двух разных, не перекрывающихся операциях. Сначала есть чтение с диска в секторный буфер. Затем происходит еще один перенос из сектора в буфер на хост через интерфейс накопителя (например, SATA). Существует распространенное заблуждение, что эти две передачи могут происходить одновременно; они не могут. Данные сектора должны быть проверены после того, как они были прочитаны и перед их отправкой на хост. @Hennes упоминает это как часть игнорируемых предметов.
опилки

Помните, что тонкие моменты времени поиска плохо поняты почти всем. Время поиска - это не линейная функция, а кривая, основанная на количестве цилиндров. Поиск (с использованием исполнительного элемента звуковой катушки) состоит из фазы ускорения и фазы замедления, а когда поиск достаточно длинный, между фазами максимальной скорости. Среднее время поиска должно быть взвешенным на счет только 2 возможных полного хода стремится , но 2 * (NCYL-1) однопутной стремится, 2 * (NCYL-2) 2-трековый ищет ... и NCYL «ищет» нулевого времени, когда перемещение головы не требуется.
опилки

Ответы:


11

Данный диск имеет скорость передачи 80 МБ / с, или 81920 КБ / с, или 20480 блоков / с. Здесь мы округлим до 20000 блоков в секунду, так как, похоже, это сделал ваш профессор. Это равняется 0,05 мс для передачи блока, объясняя последний член в уравнении.

Наконец, в дополнение к поиску времени (времени для перемещения головки привода на дорожку) существует также задержка вращения самого диска, с которой приходится иметь дело. При 7200 об / мин в худшем случае нам приходится ждать 1 полный оборот, но в среднем нам приходится ждать пол оборота - или 4,166 мс (7200 об / мин = 120 об / сек = 8,333 мс / об).

Таким образом, для передачи одного блока к компьютеру, мы должны ждать эквивалент Seek Time+ Rotational Latency+ Transfer Time:

5 ms + 4.166 ms + 0.05 ms = 9.216 ms

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

Таким образом, в общем случае общее время доступа для чтения одного сектора диска составляет (без учета программного обеспечения):

Rotational/Hard Drive:  Seek Time + Rotational Latency + Transfer Time

Solid-State Drive:      Seek Time + Transfer Time

5

Время поиска 5 мс - это время, когда жесткий диск перемещает свою головку на правильную дорожку (и выбирает правую головку, что также требует времени, но которое ваш проф. Проигнорировал).


Как только головка находится над правильной дорожкой, нужно подождать, пока правый сектор пройдет под головкой R / W. Нам говорят, что это 7200 оборотов в минуту. Это значит:

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

Чтобы узнать время полного вращения на 7200 об / мин:

  • 7200 оборотов в минуту (7200 об / мин)
  • Или 7200/60 раз в секунду.
  • Или 120 раз в секунду.
  • Или один поворот занимает 1 / 120 - й секунды.
  • Что составляет 8,3 мс

Таким образом , половина вращения должна будет взять половину того времени, 1 / 240 - й секунды.

1 секунда - 1000 мс

Это ваши 1000 / 240 мс.


Все это время, когда накопитель может начать чтение данных. Это все еще должно будет прочитать это и передать с хозяином.

Чтение с диска обычно намного быстрее, чем прохождение, поэтому я сосредоточусь на более медленной части:

Даны:

1) Скорость передачи 80 МБ / с
2) МОДЕЛЬ БЛОКА: Размер блока 4 КБ

  • 80 МБ / с или 80 * 1024 КБ / с или 4 * 20 * 1024 КБ / с.
  • Разделите на 20480.
  • 4 КБ на 1 / 20480 - й секунды.
  • Или 0,488281 мс, что является вашей последней 0,05 мс .


Обратите внимание, что этот ответ игнорирует, что:

  1. диск должен прочитать данные, прежде чем он сможет их передать, это сделает его немного медленнее.
  2. Но нет информации о том, как быстро данные читаются с диска. (который зависит от скорости вращения, длины данных, которые нужно прочитать, длины данных контрольной суммы и межсекторных промежутков. (4 КБ может быть 8 чтениями «Заголовка | данных | контрольной суммы | промежутка» или одним чтением.
  3. Он также игнорирует, что данные могут уже присутствовать в кэше дисков.
  4. И это предполагает, что вычисление контрольной суммы не занимает много времени.

Вероятно, это первый раз, когда я увидел правильное упоминание о времени передачи диска, в котором проводится различие между чтением диска и передачей (интерфейса). «Контрольная сумма» - это действительно код с исправлением ошибок (ECC), который может обнаружить и исправить ошибку короткого пакета.
опилки
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.