Читать «Архитектура компьютера» онлайн - страница 87

Эндрю Таненбаум

Следует упомянуть, что из-за наличия преамбул, ECC-кодов, промежутков между секторами, а также из-за того, что определенное время затрачивается на поиск дорожки и ожидание сектора, существует огромная разница между скоростью передачи данных для случаев, когда необходимые данные разбросаны в разных частях диска и когда они находятся в одном месте и считываются последовательно. Максимальная скорость передачи данных в первом случае достигается в тот момент, когда головка располагается над первым битом данных. Однако такая скорость работы может сохраняться только на одном секторе. Для некоторых приложений (например, мультимедийных) имеет значение именно средняя скорость передачи за некоторый период с учетом необходимого времени поиска и времени ожидания сектора.

Немного сообразительности, и старая школьная формула для вычисления длины окружности c = 2пr откроет, что суммарная длина внешних дорожек больше, чем длина внутренних. Поскольку все магнитные диски вращаются с постоянной угловой скоростью независимо от того, где находятся головки, возникает очевидная проблема. Раньше при производстве дисков изготовители создавали максимально возможную плотность записи на внутренней дорожке, и при продвижении от центра диска плотность записи постепенно снижалась. Если дорожка содержит, например, 18 секторов, то каждый из них занимает дугу в 20°, и не важно, на каком цилиндре находится эта дорожка.

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

Рис. 2.18. Диск с пятью зонами. Каждая зона содержит несколько дорожек

С диском связан так называемый контроллер — микросхема, которая управляет диском. Некоторые контроллеры содержат целый процессор. В задачи контроллера входит получение от программного обеспечения таких команд, как READ, WRITE и FORMAT (то есть запись всех преамбул), управление перемещением кронштейна, обнаружение и исправление ошибок, преобразование байтов, считываемых из памяти, в непрерывный поток битов, и наоборот. Некоторые контроллеры производят буферизацию и кэширование нескольких секторов на случай их дальнейшего использования, а также пропускают поврежденные секторы. Необходимость последней функции вызвана наличием секторов с поврежденным, то есть постоянно намагниченным, участком. Когда контроллер обнаруживает поврежденный сектор, он заменяет его одним из свободных секторов, которые выделяются специально для этой цели в каждом цилиндре или зоне.