Информационно-справочный портал MorePC.ru

Основные сведения о жестких дисках

Сергей Андрианов
21.07.02

Устройство жесткого диска

Накопитель на жестких магнитных дисках состоит из одной или нескольких пластин с магнитным слоем, головок, позиционирующего устройства, корпуса, а также контроллера. Пластины – основной элемент накопителя, на них размещается информация. Головки предназначены для чтения и записи информации на пластины. Позиционирующее устройство обеспечивает перемещение головок к нужному месту на поверхности пластин. Корпус служит для крепления остальных элементов конструкции, а также для защиты пластин и головок от механических повреждений и пыли. Контроллер управляет всеми электрическими и электромеханическими узлами накопителя и обеспечивает передачу информации из компьютера и обратно.


рис.1

Геометрия жесткого диска

Пластины накопителя изготовляются из металла или стекла и имеют с одной или обеих сторон магнитный слой, на который и происходит запись информации. Сторона пластины с нанесенным магнитным слоем называется рабочей поверхностью. Поверхности пластин тщательно отполированы и покрыты ферромагнитным слоем. Материал покрытия и количество слоев (магнитный слой может состоять из нескольких слоев разных материалов) может быть различным для разных накопителей. На каждую рабочую поверхность приходится по одной головке (на самом деле в современных накопителях для увеличения плотности записи применяются отдельные головки записи и чтения, изготовленные по различным технологиям). Поверхность пластины разбивается на тонкие концентрические кольцевые зоны, называемые дорожками. А каждая дорожка, в свою очередь, делится на несколько участков, получивших названия секторов. Сектор можно условно разделить на две области: область данных и область служебной информации. Служебная информация записывается на пластину один раз на заводе-изготовителе и в дальнейшем не подлежит изменению. Служебная область включает уникальный адрес сектора в накопителе, по которому его опознает контроллер при записи или считывании информации. Область данных содержит полезную информацию, записываемую на накопитель. Эта область может быть многократно изменена в период эксплуатации. Объем области данных несколько превосходит информационную емкость сектора за счет дополнительной информации – для верификации и, возможно, исправления ошибок. Область данных сектора может быть обновлена только целиком. Т.е. на накопитель нельзя записать один или десять байт – только сектор целиком. Все головки перемещаются синхронно, и этот процесс занимает некоторое время. Совокупность дорожек на разных пластинах доступных одновременно при неизменном положении головок называется цилиндром. С точки зрения производительности дисковой системы целесообразно последовательные данные располагать в пределах одного цилиндра.


рис.2

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

Если представить такую конструкцию в декартовой системе координат (например, считать, что наш "диск" собран из нескольких плат с флэш-памятью), то она будет представлять собой по форме параллелепипед, разбитый на ячейки - сектора.

Однако, при такой разметке жесткого диска плотность записи на внешних дорожках оказывается примерно втрое ниже, чем на внутренних (одно и то же количество информации на втрое превосходящую длину дорожки). Поэтому в современных накопителях используется так называемая зонная запись, при которой поверхность пластин разделяется вдоль радиуса на несколько зон (обычно около десятка), в каждой из которых количество секторов на дорожку постоянно, однако, это количество меняется от зоны к зоне. На внешних дорожках размещается больше секторов, чем на внутренних. Это позволяет увеличить информационную емкость накопителя примерно вдвое без изменения максимальной плотности записи. Но, будучи представленной в декартовой геометрии, такая фигура будет иметь достаточно сложную форму, с которой не сможет работать BIOS. Поэтому из всего многообразия интерфейсов жестких дисков (ST506/412, ESDI, IDE, SCSI) остались только два последних, отличающихся наибольшей "интеллектуальностью", что выражается в способности осуществлять такое "преобразование координат" при котором фигура неправильной формы превращается в аккуратный "кирпичик". Заодно такое преобразование позволяет обойти или, по крайней мере, несколько смягчить ограничения, налагаемые BIOS на максимальные значения некоторых параметров. Например, BIOS не может работать более чем с 63 секторами на дорожке, в то время как на современных дисках их примерно на порядок больше. В то же время, BIOS может "думать", что у жесткого диска 16 или даже 255 головок, в то время как в реальных накопителях это число лежит в пределах, как правило, от 1 до 6.


рис.3

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


рис.4

Ограничения на объем

В свое время при разработке первых версий BIOS для IBM PC было решено ограничить количество секторов и цилиндров одним 16-разрядным числом, при этом для сектора отводилось 6 разрядов (максимальный номер 63), а для цилиндра – 10 (максимальный номер – 1023). Для номера головки BIOS было отведено 8 разрядов (максимальное число – 255). Но интерфейс IDE допускал не более 16 головок, что при размере сектора 512 байт по сумме всех ограничений давало верхнюю границу в 504 Мбайта (528 482 304 байта). Разрешение этой проблемы заключалось во введении режима LBA, т.е. "переносе" неиспользуемых разрядов номера головки для адресации номера цилиндра. Такое решение требовало одновременно как аппаратной (со стороны IDE-контроллера), так и программной (со стороны BIOS) поддержки. Одновременно оказалась исчерпанной пропускная способность шины ISA. Поэтому слегка переработанный контроллер (теперь уже с интерфейсом, называемым EIDE) стали помещать на системную плату, т. е. туда же, где располагалась микросхема BIOS с поддержкой новых возможностей.

  • Но только была преодолена эта граница, как выяснилось, что следующее ограничение связано уже с файловой системой FAT16 – размер логического диска не может быть больше 2 Гбайт (точнее 2047 Мбайт). При этом место на жестком диске расходуется на редкость неэффективно (см. Раздел "Проблемы кластеризации").

    Введение FAT32 позволило преодолеть этот предел, однако вскоре снова "вылезла" проблема BIOS – на полный адрес сектора отводилось 24 разряда, и адресация более 8 Гбайт (точнее 7.85 Гбайт) дисковой памяти при 512-байтных секторах оказалась невозможной. Пришлось ввести новые функции BIOS для большинства дисковых операций. Теперь лимит составляет 64 разряда, что соответствует 8 млрд. Тбайт, так что пока есть некоторый запас по времени. Кроме того оговорено, что нумерации подлежат блоки, а не сектора. Пока 1 блок равен 1 сектору, но как только объем накопителей приблизится к указанному лимиту, появится некоторый резерв за счет увеличения размера блока.

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

    Теперь программных ограничений на рост объемов накопителей в ближайшее время не предвидится (но некоторые программы из-за содержащихся в них ошибок не могут работать с дисками объемом выше 32 или 64 Мбайт), хотя остаются определенные ограничения, связанные с аппаратурой, т.е. с физической организацией интерфейса IDE.

    Взаимодействие между пользователем и дисковым накопителем

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

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

    Мы уже говорили о том, что данные в накопителе адресуются через номер логического сектора или через тройку цилиндр-головка-сектор. Именно таким образом и обращается ОС к BIOS. Последний же, в свою очередь, должен сообщить ОС объем накопителя и, при необходимости, его геометрические характеристики, а также перевести запрос на операцию с определенным сектором в последовательность команд того или иного интерфейса. Для ОС тип интерфейса, ST512/412, ESDI. IDE, SCSI, USB, IEEE1394 или режим работы, PIO, UDMA неинтересны. Ее интересуют только сектора и точка!

    Проблемы кластеризации

    Как мы видели, для работы с файлами постоянно требуется определенная информация по размещению их на диске. В приведенном выше случае это FAT. Для простоты ограничимся рассмотрением именно этого случая. Из 7 дисковых операций 3 относятся к FAT. Учитывая, что файловые операции, выполняемые с перемещением головки, происходят существенно медленнее операций без перемещения, получается, что хранение FAT в оперативной памяти увеличивает производительность файловой системы более чем вдвое. Но есть и явная отрицательная черта – если перед выключением компьютера не привести в соответствие копию FAT, хранящуюся на диске, с копией в оперативной памяти, неизбежна потеря информации. Поэтому выключение компьютера кнопкой или тумблером на передней панели, как это практиковалось в DOS, уже становится неприемлемым.

    При этом, если буфера для данных файла или каталога могли быть небольшими, в один сектор, то FAT иногда необходимо обрабатывать целиком, например, при поиске свободного фрагмента.

    В FAT16 максимальное количество фрагментов, предназначенных для размещения файлов, составляет около 65 тысяч, а занимаемое таблицами место – 128 Кбайт (64К 2-байтных слов). При распределении мест секторами максимальный объем диска составит, таким образом, 32 Мбайта (кое-кто еще помнит, что реально было и такое ограничение на объем жесткого диска).

    Для увеличения доступного ОС дискового пространства сектора пришлось объединять в кластеры, содержащие несколько секторов. Кроме того, очевидно, что при увеличении вдвое размера кластера вдвое же уменьшается размер FAT, а следовательно, как расход оперативной памяти, так и время поиска свободного места. Но увеличение размера кластеров ведет к неэффективному расходу дискового пространства. Мне когда-то попадалась аналогия распределения места на диске с необходимостью расплачиваться за любые товары только стодолларовыми купюрами: купил коробок спичек – и нет $100, купил батон хлеба – еще сотню долой. Действительно, при записи даже одного байта расходуется целиком кластер. Например, при 32-Кбайтных кластерах (диск объемом 2 Гбайт) 1000 однобайтных файлов суммарной длиной менее Кбайта займут на диске место равное 32 Мбайтам.

    Введение FAT32 отчасти устранило эту проблему, теперь для размещения аналогичного объема информации потребуется только 4 Мбайта. Но ничего бесплатного не бывает. Размер одного элемента FAT увеличился вдвое, а количество элементов – в 8 раз, так что теперь объем таблиц для данного случая составит уже 2 Мбайта. Конечно, по нынешним меркам это немного, но если учесть, что объем накопителей может превышать сотню Гбайт, то окажется, что значительная доля оперативной памяти будет использована не для размещения данных пользователя, а для внутренних нужд ОС. Вспомним и о том, что для поиска свободного фрагмента на диске может потребоваться просмотреть значительную часть FAT, так что в попытках увеличить скорость работы дисковой системы мы одновременно увеличиваем нагрузку на центральный процессор и оперативную память, что ведет к снижению итоговой производительности.

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

    Скоростные характеристики жестких дисков

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

    Время доступа (access time) – время с момента запроса небольшой порции данных (обращения к прерыванию BIOS) до момента их получения (возвращения из прерывания). Временем выполнения программы здесь можно пренебречь, в этом случае время доступа состоит из времени позиционирования (seek time), то есть нахождения нужной дорожки и среднего времени ожидания данных (latent time), т.е. времени на поворот диска, чтобы нужный сектор оказался под головкой чтения. Очевидно, что среднее время ожидания равно половине периода обращения диска: 5.56 мс при частоте вращения 5400 об/мин и 4.17 мс - при 7200 об/мин. Время позиционирования же складывается из времени необходимого на перемещение головки и времени для успокоения ее колебаний после перемещения. Так как требования к допустимой амплитуде колебаний при чтении и при записи отличаются, могут отличаться также средние времена доступа и позиционирования. К сожалению, не существует единой методики измерения этой величины, поэтому каждая фирма-производитель применяет собственную методику, выставляющую ее продукцию в наилучшем свете. Кроме того, для обозначения по сути одинаковых величин разные фирмы зачастую используют различные термины. Чаще в спецификациях приводится время позиционирования, т.к. оно меньше.

    Со скоростью линейной передачи данных тоже не все обстоит гладко. Во-первых, существует скорость передачи данных из кэш-памяти контроллера – величина, поддающаяся измерению и, как правило, наибольшая из всех скоростей обмена. Скорость обмена данными с пластинами обычно меньше. Кроме того, она зависит от номера дорожки, к концу диска эта скорость может снижаться в 2-3 раза по сравнению с тем, что наблюдается на первых дорожках. В спецификациях зачастую приводится максимальная мгновенная скорость чтения с пластин в бит/с. Тут можно только принимать или не принимать на веру слова изготовителя, т.к. измерить ее на накопителе, оснащенном кэш-памятью, нельзя. Поддается измерению максимальная установившаяся скорость обмена. "Максимальная" в данном случае означает, что она измеряется в той части диска, которая имеет наибольшее количество секторов на дорожку. Она определяется как отношение объема переданных данных ко времени. Естественно, во время включается как то, в течение которого головка летит над данными, так и то, в течение которого головка находится над зонами служебной информации, а также время перехода головки с дорожки на дорожку. Как правило, либо указывают максимальную величину этой скорости, либо строят график зависимости этой скорости от номера сектора (один такой график приведен в разделе "Геометрия жесткого диска", см. рис.3).

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

    В качестве примера приведем профиль скоростей чтения, записи и верификации для диска с максимальной установившейся скоростью передачи данных, превышающей скорость передачи интерфейса (на самом деле, конечно, дело не в интерфейсе самого диска - UDMA100, а в интерфейсе IDE-контроллера на системной плате, к которой подключен накопитель – UDMA33).


    рис.5

    Для современных дисков время доступа составляет порядка 15 мс, а устоявшаяся скорость линейной передачи данных – порядка 30 Мбайт/с. Нетрудно заметить, что за время поиска можно было бы считать или записать почти полмегабайта информации. Однако, реально информация читается чаще всего либо покластерно, т.е. по 4 Кбайта, либо максимальными фрагментами, поддерживаемыми BIOS – 64 Кбайта. Кроме того, объем однократно считанного фрагмента информации никогда не превышает размера файла (точнее, суммарной длины занимаемых им кластеров), а средний размер файла, как правило, не превосходит нескольких килобайт. Поэтому определяющий вклад в производительность дисковой системы вносит время доступа, а линейная скорость передачи лишь очень незначительно влияет на время выполнения файловых операций. Даже при записи или чтении одного длинного файла в однозадачной системе реальная скорость обмена оказывается существенно, иногда в разы, ниже установившейся скорости накопителя.


    рис.6

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

    Уменьшение времени доступа возможно в основном за счет уменьшения диаметра пластин, что делает возможным как увеличение скорости вращения, так и уменьшения времени позиционирования. Однако этот подход ведет к радикальному уменьшению емкости накопителя. И хотя первых жесткий диск имел пластины диаметром 24 дюйма, первый, применяемый в персональном компьютере – около 5 (формфактор корпуса 5.25”), а современные – около 3 (а скоростные накопители SCSI при формфакторе корпуса 3.5" имеют уменьшенные пластины), вряд ли в ближайшее время можно ожидать повального перехода на 2.5-дюймовые накопители. Скорее уж революцию во времени доступа следует связывать с переходом на твердотельные накопители.

    Наиболее эффективным средством повышения производительности дисковой системы является кэширование, т.е. хранение в оперативной памяти наиболее часто используемых данных с жесткого диска. Ведь для доступа к определенному байту, расположенному на диске, требуется около 15 мс, а к расположенному в оперативной памяти – порядка 0.1 мкс. Даже однокластерное (буфер 4 Кбайта) кэширование при построчном чтении текстового файла с длиной строки 80 символов приведет к уменьшению времени считывания в 50 раз. Увеличение объема буфера еще более ускорит этот процесс, поэтому, во-первых, сами накопители содержат буфер объемом, как правило, от 2 до 8 Мбайт, а во-вторых, кэширование производится на уровне ОС.

    Интерфейс

    В настоящее время для жестких дисков (не считая части накопителей для ноутбуков, носимой аппаратуры, а также внешних моделей) используются два параллельных интерфейса, разработанных в 80-х годах прошлого века: IDE (ATA) и SCSI.

    IDE более демократичен. Основная нагрузка в нем ложится на контроллер устройства. Первые его модификации работали в режиме программируемого ввода/вывода (PIO) и были ограничены скоростями от 3 до 16 Мбайт/с. Впрочем, внешние контроллеры часто еще сильнее "тормозились" шиной ISA. Реально даже на шине PCI от такого контроллер не удавалось добиться скорости обмена выше 8-9 Мбайт/с. Тогда был использован поддерживаемый PCI механизм прямого обмена с памятью (UDMA), в результате чего максимальная скорость выросла до 33, 66 или 100 Мбайт/с в зависимости от разновидности интерфейса (а компания Maxtor выпускает даже диски UDMA133).

    SCSI обладает как более широкими возможностями, так и более высокой ценой. К этому интерфейсу можно подключать не только дисковые накопители, но также ленточные накопители, сканеры, принтеры и т. д. Кроме того, он позволяет одновременно работать нескольким устройствам, что снижает нагрузку на центральный процессор. Диапазон скоростей, поддерживаемых SCSI простирается от 5 до 320 Мбайт/с. В перспективе планируется увеличение скорости обмена до 640 Мбайт/с.

    Последнее время IDE существенно потеснил SCSI. Особенно после введения режима UDMA, в результате чего сильно снизилась нагрузка на процессор, и исчезло основное преимущество SCSI перед IDE. Одновременно появление USB стало вытеснить SCSI из низкоскоростных устройств, таких как сканеры и принтеры.

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

    В настоящее время активно идет разработка последовательного варианта интерфейса IDE – Serial ATA. К контроллеру каждый накопитель будет подключаться своим 7-жильным кабелем. Первый намеченный рубеж скорости – 150 Мбайт/с, на очереди – 300 Мбайт/с. Эти интерфейсы, несмотря на существенное аппаратное различие будут программно совместимы с существующим сейчас параллельным IDE.

    Определенные разработки намечены и для совершенствования интерфейса SCSI. Здесь также намечен переход на последовательный интерфейс, а также на существенное снижение стоимости вследствие сильной конкуренции со стороны SerialATA.

    Для накопителей на жестких дисках помимо рассмотренных могут применяться интерфейсы Compact Flash Type II – для 1-дюймового накопителя IBM MicroDrive, USB, IEEE1394 (FireWire) – для внешних устройств и Fibre Channel – для наиболее производительных серверов.