План лекции на тему "Накопители на магнитных дисках типа «винчестер»"

Вид материалаЛекции

Содержание


Гермоблок: элементы гермоблока(шпиндель, диски, двигатель, фильтр, позиционер, статор, магнитная защелка, предусилитель сигнала)
Физическая структура диска
Первоначальная разметка диска (низкоуровневое форматирование), сервоинформация
Физическое кодирование
Разобраться в FM-кодировании очень просто. В каждой битовой ячейке содержится две
Позиционирование головок
Шаговый двигатель
Логическая структура дисков, хранение информации и адресование - Разделы, логические диски, главная загрузочная область
Общие понятия: блок, кластер, сектор с точки зрения хранения информации
Cylinder, head, sector (CHS) способ адресации, ограничение на объем диска при данном адресовании
Logical block addressing (LBA) и Large Mode способы адресации
Описание интерфейса IDE и программирование ATA контроллера Общие сведенья о контроллере
Описание портов контроллера
описание регистров портов
Основной протокол обмена PIO
Команды ATA на примере чтения сектора и остановки винчестера
Материал подготовлен с использованием следующих источников
Подобный материал:
Санкт-Петербургский государственный электротехнический университет

“ЛЭТИ”


кафедра вычислительной техники


Материал лекции

на тему

"Накопители на магнитных дисках типа «винчестер»"

по дисциплине "Организация ЭВМ"


Выполнил: студент Тихомиров П.А.


Группа: 4371


Санкт-Петербург

2006 г.

План лекции на тему

"Накопители на магнитных дисках типа «винчестер»"


- Гермоблок: элементы гермоблока(шпиндель, диски, двигатель, фильтр, позиционер, статор, магнитная защелка, предусилитель сигнала), их функции

- Плата электроники: основной процессор винчестера, ПЗУ, ОЗУ, цифровой сигнальный процессор (DSP), тестирование винчестера через технологический интерфейс и техническая информация

-Физическая структура диска


- Первоначальная разметка диска (низкоуровневое форматирование), сервоинформация

- Физический принцип работы жесткого диска: включение, считывание сервометок, тестирование позиционера, слежение за положением головок, процесс записи информации, выключение

Физическое кодирование

- Позиционирование головок

Шаговый двигатель

1.Логическая структура дисков, хранение информации и адресование

- Разделы, логические диски, главная загрузочная область

- Общие понятия: блок, кластер, сектор с точки зрения хранения информации

Cylinder, head, sector (CHS) способ адресации, ограничение на объем диска при данном адресовании

- Logical block addressing (LBA) и Large Mode способы адресации

2.Описание интерфейса IDE и программирование ATA контроллера

Общие сведенья о контроллере

- Описание портов контроллера

- описание регистров портов

Основной протокол обмена PIO

- Команды ATA на примере чтения сектора и остановки винчестера

1. Физическое устройство «винчестеров»

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


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


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

- Гермоблок: элементы гермоблока(шпиндель, диски, двигатель, фильтр, позиционер, статор, магнитная защелка, предусилитель сигнала), их функции



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


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


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


Обмотку позиционера окружает статор, представляющий собой постоянный магнит. При подаче в обмотку тока определенной величины и полярности коромысло начинает поворачиваться в соответствующую сторону с соответствующим ускорением; динамически изменяя ток в обмотке, можно устанавливать позиционер в любое положение. Такая система привода получила название Voice Coil (звуковая катушка) - по аналогии с диффузором громкоговорителя.


На хвостовике обычно расположена так называемая магнитная защелка - маленький постоянный магнит, который при крайнем внутреннем положении головок (landing zone - посадочная зона) притягивается к поверхности статора и фиксирует коромысло в этом положении. Это так называемое парковочное положение головок, которые при этом лежат на поверхности диска, соприкасаясь с нею. В ряде дорогих моделей (обычно SCSI) длятфиксации позиционера предусмотрен специальный электромагнит, якорь которого в свободном положении блокирует движение коромысла. В посадочной зоне дисков информация не записывается.


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


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


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

- Плата электроники: основной процессор винчестера, ПЗУ, ОЗУ, цифровой сигнальный процессор (DSP), тестирование винчестера через технологический интерфейс и техническая информация



Плата электроники - съемная, подключается к гермоблоку через один-два разъема различной конструкции. На плате расположены основной процессор винчестера, ПЗУ с программой, рабочее ОЗУ, которое обычно используется и в качестве дискового буфера, цифровой сигнальный процессор (DSP) для подготовки записываемых и обработки считанных сигналов, и интерфейсная логика. На одних винчестерах программа процессора полностью хранится в ПЗУ, на других определенная ее часть записана в служебной области диска. На диске также могут быть записаны параметры накопителя (модель, серийный номер и т.п.). Некоторые винчестеры хранят эту информацию в электрически репрограммируемом ПЗУ (EEPROM).


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

-Физическая структура диска


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

- Первоначальная разметка диска (низкоуровневое форматирование), сервоинформация



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


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


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

- Физический принцип работы жесткого диска: включение, считывание сервометок, тестирование позиционера, слежение за положением головок, процесс записи информации, выключение



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


После достижения дисками скорости вращения, близкой к номинальной (обычно - 3600, 4500, 5400 или 7200 об/мин) головки выводятся из зоны парковки и начинается поиск сервометок для точной стабилизации скорости вращения. Затем выполняется считывание информации из служебной зоны - в частности, таблицы переназначения дефектных участков.


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


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


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





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


Для согласования скоростей потоков данных - на уровне считывания/записи и внешнего интерфейса - винчестеры имеют промежуточный буфер, часто ошибочно называемый кэшем, объемом обычно в несколько десятков или сотен килобайт. В ряде моделей (например, Quantum) буфер размещается в общем рабочем ОЗУ, куда вначале загружается оверлейная часть микропрограммы управления, отчего действительный объем буфера получается меньшим, чем полный объем ОЗУ.У других моделей ОЗУ буфера и процессора сделаны раздельными.


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

Физическое кодирование



Частотная модуляция (Frequency Modulation - FM) - метод, используемый в накопителях на сменных магнитных дисках. Иначе, кодирование методом FM можно назвать кодированием с единичной плотностью. Метод предполагает запись на носитель в начале каждого битового элемента данных бита синхронизации. Битовый элемент определяется как минимальный интервал времени между битами данных, получаемый при постоянной скорости вращения диска носителя. Метод гарантирует, по меньшей мере, одну перемену направления магнитного потока за единицу времени вращения. Такой временной интервал соответствует максимальной продольной плотности магнитного потока 2330 перемен на 1 см и скорости передачи данных – 125 Кбит/сек. Простота кодирования и декодирования по методу FM определяется постоянной частотой следования синхроимпульсов. Однако, наличие этих бит синхронизации и является одним из недостатков данного метода, т.к. результирующий код малоэффективен с точки зрения компактности данных (половина пространства носителя занимается битами синхронизации). Это один из первых методов, не используемый в настоящее время в накопителях на ЖД.


Модифицированная частотная модуляция (Modified Frequency Modulation - MFM) - улучшенный метод FM. Модификация заключается в сокращении вдвое длительности битового элемента - до 4 мкс и использовании бит синхронизации не после каждого бита данных, а лишь в случаях, когда в предшествующем и текущем битовых элементах нет ни одного бита данных. Такой способ кодирования позволяет удвоить емкость носителя и скорость передачи данных, по сравнению с методом FM, т.к. в одном и том же битовом элементе никогда не размещаются бит синхронизации и данных, а на один битовый элемент приходится только одна перемена направления магнитного потока. Также, в настоящее время не используется.


Запись с групповым кодированием (Run Limited Length - RLL) - метод, полностью исключающий запись на диск каких-либо синхронизационных бит. Синхронизация достигается за счет использования бит данных. Однако, такой подход требует совершенно иной схемы кодирования, т.к. простое исключение бит синхронизации приведет к записи последовательностей из одних нулей или единиц в которых не будет ни одной перемены полярности магнитного потока. Метод RLL происходит от методов, используемых для кодирования данных при цифровой записи на магнитную ленту. При этом, каждый байт данных разделяется на два полубайта, которые кодируются специальным 5-ти разрядным кодом, суть которого – добиться хотя бы одной перемены направления магнитного потока для каждой пары его разрядов. Что означает, необходимость наличия в любой комбинации 5-ти разрядных кодов не более двух стоящих рядом нулевых бит. Из 32 комбинаций 5 бит такому условию отвечают 16. Они и используются для кодирования по методу RLL. При считывании происходит обратный процесс. При применении метода кодирования RLL скорость передачи данных возрастает с 250 до 380 Кбит/с, а число перемен полярности магнитного потока до 3330 перемен/см. При этом длительность битового элемента снижается до 2.6 мкс. Поскольку, максимальный интервал времени до перемены магнитного потока известен (два последовательно расположенных нулевых бита), биты данных могут служить битами синхронизации, что делает метод кодирования RLL самосинхронизирующимся и самотактируемым. Интересным является тот факт, что метод MFM является частным случаем метода RLL. Для обозначения типа используемого RLL метода применяется аббревиатура вида: RLL2,7, RLL1,7, RLL2,8, RLL1,8, где первая цифра - минимальная, а вторая - максимальная длина последовательности бит - нулей, содержащихся между соседними единицами. Аббревиатура метода MFM в терминологии RLL записывается как RLL1,3.


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

Все ячейки перехода, в которых записаны сигналы синхронизации, содержат зоны смены знака. В то же время, ячейки перехода, в которых записаны данные, содержат зону смены знака только в том случае, если значение бита равно логической единице. При нулевом значении бита зона смены знака не формируется. Поскольку в нашем примере значение первого бита равно 0, он будет записан в виде комбинации TN. Значение следующего бита равно 1, и ему соответствует комбинация ТТ. Третий бит — тоже нулевой (TN) и т.д. С помощью приведенной выше диаграммы FM-кодирования вы легко сможете проследить всю кодирующую комбинацию для рассматриваемого примера байта данных. Отметим, что при данном способе записи зоны смены знака могут следовать непосредственно одна за другой, что в терминах RLL-кодирования означает, что минимальный "пробег" равен нулю. С другой стороны, максимально возможное количество пропущенных подряд зон смены знака не может превышать единицы — вот почему FM-кодирование можно обозначить как RLL 0,1.


При MFM-кодировании в ячейках также записывается синхросигнал и биты данных. Но, как видно из схемы, ячейки для записи синхросигнала содержат зону смены знака только в том случае, если значения и текущего, и предыдущего битов равны нулю. Первый бит слева - нулевой, значение же предыдущего бита в данном случае неизвестно, поэтому предположим, что он тоже равен нулю. При этом последовательность зон смены знака будет выглядеть следующим образом: TN. Значение следующего бита равно единице, которой всегда соответствует комбинация NT. Следующему нулевому биту предшествует единичный, поэтому ему соответствует последовательность NN. Аналогичным образом можно проследить процесс формирования сигнала записи до конца байта. Легко заметить, что минимальное и максимальное число ячеек перехода между любыми двумя зонами смены знака равны 1 и 3 соответственно. Следовательно, MFM-кодирование в терминах RLL может быть названо методом RLL 1,3.


Поскольку в данном случае используется только половина зон смены знака (по сравнению с FМ-кодированием), частоту синхронизирующего сигнала можно удвоить, сохранив при этом то же расстояние между зонами смены знака, которое использовалось при методе FM. Это означает, что плотность записываемых данных остается такой же, как и при MFM-кодировании, но данных кодируется вдвое больше.


Труднее всего разобраться в диаграмме, иллюстрирующей метод RLL 2,7, поскольку в нем кодируются не отдельные биты, а их группы. Первая группа слева, совпадающая с одной из приведенных комбинаций (см. выше), состоит из трех битов: 010. Она преобразуется в такую последовательность зон смены знака: TNNTNN. Следующим двум битам (11) соответствует комбинация TNNN, а последним трем (000) — NNNTNN. Как видите, в данном примере для корректного завершения записи дополнительные биты не потребовались. В этом примере минимальное и максимальное число пустых ячеек перехода между двумя зонами смены знака равно 2 и 6 соответственно, хотя в другом примере максимальное количество пустых ячеек перехода может равняться 7. Именно поэтому такой способ кодирования называется RLL 2,7. Поскольку в данном случае записывается еще меньше зон смены знака, чем при MFM-кодировании, частоту сигнала синхронизации можно увеличить в 3 раза, по сравнению с методом FM и в 1,5 раза - по сравнению с методом MFM. Это позволяет на таком же пространстве диска записать больше данных. Но необходимо отметить, что минимальное и максимальное физическое расстояние на поверхности диска между любыми двумя зонами смены знака одинаково для всех трех методов кодирования.


Словарь RLL 2, 7

Битовая последовательность

Кодированная последовательность

11

TNNN

10

NTNN

011

NNTNNN

010

TNNTNN

000

NNNTNN

0010

NNTNNT

0011

NNNNTNNN


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


Модифицированная запись с групповым кодированием (Advanced Run Limited Length – ARLL) – улучшенный метод RLL, в котором, наряду с логическим уплотнением данных, производится повышение частоты обмена между контроллером и накопителем.


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

- Позиционирование головок



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


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


Шаговый двигатель


Основной недостаток такого подхода заключался в том, что позиции ротора шагового двигателя были фиксированными. Блок головок перемещался на то место, где должна быть дорожка, а не где она есть на самом деле. При нагреве диски расширялись и дорожки смещались относительно своего точного положения на диске на некоторую величину, соответствующую коэффициенту теплового расширения. Фиксированный шаг перемещения позиционера не позволял компенсировать это явление, а отсутствие обратной связи не позволяло контроллеру точно подстраивать блок головок записи/чтения точно по центру дорожки. Минусом данной системы было также большое время доступа к требуемой дорожке, ведь при считывании данных с внутренних и внешних дорожек пластины блок головок должен с помощью прикрепленной к нему рейки "отщелкать" максимум шагов шестерни шагового двигателя.


Увеличивающаяся плотность записи требовала увеличения количества дорожек на один сантиметр радиуса рабочей поверхности пластины ЖД, и как следствие - уменьшения расстояния между двумя соседними дорожками, и сокращению ширины самой дорожки. Поэтому эту систему позиционирования блока головок на основе шагового двигателя заменила более прогрессивная система позиционирования с соленоидным двигателем (называемая также звуковой катушкой). Сначала она была основана на линейном перемещении блока головок, но уменьшение размеров НЖМД потребовало перейти к принципу сбалансированного ротационного позиционирования. В таком приводе блок головок записи/чтения связан с катушкой индуктивности, помещенной в магнитное поле постоянного магнита. Головки жестко закреплены на поворотной рамке позиционера вместе со звуковой катушкой, через которую протекает ток. Изменение тока в звуковой катушке приводит к ее перемещению относительно жестко закрепленного магнита, а значит и к перемещению блока головок. Управляя направлением и величиной тока через катушку, можно быстро перевести блок головок в любое положение над пластиной жесткого диска. Замкнутая система обратной связи, отслеживающая положение головки, обеспечивает ее точное позиционирование и нахождение в нужной точке. Управление сервоприводом может быть оптимизировано по времени перемещения блока головок на требуемую позицию. В этом случае, если отклонение от нужного положения большое, то подается большой ток, вызывающий большое ускорение и быстрый полет блока головок записи/чтения. По мере приближения к нужной точке ток уменьшается, а для компенсации инерции в конце полета ток может поменять направление. При этом будет происходить торможение.




Схема позиционирования

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


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


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



При протекании токов I+, I- (рис.15, сечение А-А) через витки рабочих участков катушки на них воздействует сила Лоренца, создающая вращающий момент, направление которого определяется по правилу "правой руки". Если через катушку пропускать постоянный ток, то под воздействием постоянного вращающего момента позиционер будет поворачиваться с постоянным ускорением (без учета сил трения) до упора. Максимальный угол поворота позиционера max составляет около 30°. Предельные положения позиционера ограничиваются механическими фиксаторами (упорами). Ось поворота катушки с рычагами выбирается таким образом, чтобы траектория головок, представляющая дугу окружности радиуса R, проходила приблизительно по радиусу диска.


  1. Логическая структура дисков, хранение информации и адресование

- Разделы, логические диски, главная загрузочная область



Пространство на жестком диске может быть организовано в виде одного или нескольких разделов, а разделы могут содержать один или несколько логических дисков. На жестком диске по физическому адресу 0-0-1 располагается главная загрузочная запись (master boot record, MBR). В состав MBR входят:


1. внесистемный загрузчик (non-system bootstrap - NSB);

2. таблица описания разделов диска (таблица разделов, partition table, PT). Эта таблица расположена в MBR по смещению 0x1BE и занимает 64 байта;

3. сигнатура MBR. Последние два байта MBR должны содержать число 0xAA55.


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


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


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


Разделы диска могут быть двух типов - primary (первичный, основной) и extended (расширенный). Максимальное число primary-разделов равно четырем. Наличие на диске хотя бы одного primary-раздела является обязательным. Extended-раздел может быть разделен на большое количество подразделов - логических дисков. Таблица разделов располагается в конце MBR, для описания раздела в таблице отводится 16 байт.

Таблица 2. Структура записи элемента таблицы разделов



Смещение

Размер поля, байт

Содержание

0x00

1

Признак активности (0 - раздел не активный,

0x80 - раздел активный)

0x01

1

Номер головки диска с которой начинается раздел

0x02

2

Номер цилиндра и номер сектора с которых начинается раздел

0x04

1

Код типа раздела System ID

0x05

1

Номер головки диска на которой заканчивается раздел

0x06

2

Номер цилиндра и номер сектора, которыми заканчивается раздел

0x08

4

Абсолютный (логический) номер начального раздела

0x0C

4

Размер раздела (число секторов)


Первым байтом в элементе раздела идет флаг активности раздела (0 - неактивен, 0x80 - активен). Он служит для определения, является ли раздел системным загрузочным и есть ли необходимость производить загрузку операционной системы с него при старте компьютера. Активным может быть только один раздел. За флагом активности раздела следуют координаты начала раздела - три байта, означающие номер головки, номер сектора и номер цилиндра. Номера цилиндра и сектора задаются в формате прерывания Int 0x13, т.е. биты 0-5 содержат номер сектора, биты 6-7 - старшие два бита 10-разрядного номера цилиндра, биты 8-15 - младшие восемь битов номера цилиндра.


Затем следует кодовый идентификатор System ID, указывающий на принадлежность данного раздела к той или иной операционной системе. Идентификатор занимает один байт. За системным идентификатором расположены координаты конца раздела - три байта, содержащие номера головки, сектора и цилиндра, соответственно. Следующие четыре байта - это число секторов перед разделом, и последние четыре байта - размер раздела в секторах.


Элемент первичного раздела указывает сразу на загрузочный сектор логического диска (в первичном разделе всегда имеется только один логический диск), а элемент расширенного раздела - на список логических дисков, составленный из структур, которые именуются вторичными MBR (Secondary MBR, SMBR).


Свой блок SMBR имеется у каждого диска расширенного раздела. SMBR имеет структуру, аналогичную MBR, но загрузочная запись у него отсутствует (заполнена нулями), а из четырех полей описателей разделов используются только два. Первый элемент раздела при этом указывает на логический диск, второй элемент указывает на следующую структуру SMBR в списке. Последний SMBR списка содержит во втором элементе нулевой код раздела.

- Общие понятия: блок, кластер, сектор с точки зрения хранения информации



Жесткий диск, как и всякое другое блочное устройство, хранит информацию фиксированными порциями, которые называются блоками. Блок является наименьшей порцией данных, имеющей уникальный адрес на жестком диске. Для того чтобы прочесть или записать нужную информацию в нужное место, необходимо представить адрес блока в качестве параметра команды, выдаваемой контроллеру жесткого диска. Размер блока уже довольно с давних пор является стандартным для всех жестких дисков - 512 байт.


К сожалению, достаточно часто происходит путаница между такими понятиями как "сектор", "кластер" и "блок". Фактически, между "блоком" и "сектором" разницы нет. Правда, одно понятие логическое, а второе топологическое. "Кластер" - это несколько секторов, рассматриваемых операционной системой как одно целое. Почему не отказались от простой работы с секторами? Отвечу. Переход к кластерам произошел потому, что размер таблицы FAT был ограничен, а размер диска увеличивался. В случае FAT16 для диска объемом 512 Мб кластер будет составлять 8 Кб, до 1 Гб - 16 Кб, до 2 Гб - 32 Кб и так далее.

  • Cylinder, head, sector (CHS) способ адресации, ограничение на объем диска при данном адресовании



Для того чтобы однозначно адресовать блок данных, необходимо указать все три числа (номер цилиндра, номер сектора на дорожке, номер головки). Такой способ адресации диска был широко распространен и получил впоследствии обозначение аббревиатурой CHS (cylinder, head, sector). Именно этот способ был первоначально реализован в BIOS, поэтому впоследствии возникли ограничения, связанные с ним. Дело в том, что BIOS определил разрядную сетку адресов на 63 сектора, 1024 цилиндра и 255 головок. Однако развитие жестких дисков в то время ограничилось использованием лишь 16 головок в связи со сложностью изготовления. Отсюда появилось первое ограничение на максимально допустимую для адресации емкость жесткого диска: 1024*16*63*512 = 504Mb.


Со временем, производители стали делать HDD большего размера. Соответственно число цилиндров на них превысило 1024, максимально допустимое число цилиндров (с точки зрения старых BIOS). Однако, адресуемая часть диска продолжала равняться 504 Мбайтам, при условии, что обращение к диску велось средствами BIOS. Это ограничение со временем было снято введением так называемого механизма трансляции адресов, о котором чуть ниже.

- Logical block addressing (LBA) и Large Mode способы адресации



Проблемы, возникшие с ограниченностью BIOS по части физической геометрии дисков, привели в конце концов к появлению нового способа адресации блоков на диске. Этот способ довольно прост. Блоки на диске описываются одним параметром - линейным адресом блока. Адресация диска линейно получила аббревиатуру LBA (logical block addressing). Линейный адрес блока однозначно связан с его CHS адресом:


lba = (cyl*HEADS + head)*SECTORS + (sector-1);


Введение поддержки линейной адресации в контроллеры жестких дисков дало возможность BIOS'aм заняться трансляцией адресов. Суть этого метода состоит в том, что если в приведенной выше формуле увеличить параметр HEADS, то потребуется меньше цилиндров, чтобы адресовать то же самое количество блоков диска. Но зато потребуется больше головок. Однако головок-то как раз использовалось всего 16 из 255. Поэтому BIOS'ы стали переводить избыточные цилиндры в головки, уменьшая число одних и увеличивая число других. Это позволило им использовать разрядную сетку головок целиком. Это отодвинуло границу адресуемого BIOS'ом дискового пространства до 8Gb.


Нельзя не сказать несколько слов и о Large Mode. Этот режим работы предназначен для работы жестких дисков объемом до 1 Гб. В Large Mode количество логических головок увеличивается до 32, а количество логических цилиндров уменьшается вдвое. При этом обращения к логическим головкам 0..F транслируются в четные физические цилиндры, а обращения к головкам 10..1F - в нечетные. Винчестер, размеченный в режиме LBA, несовместим с режимом Large, и наоборот.

  1. Описание интерфейса IDE и программирование ATA контроллера




  • Общие сведенья о контроллере


Итерфейс IDE (Integrated Drive Electronics - электроника, встроенная в привод), или ATA (AT Attachment - подключаемый к AT) - простой и не- дорогой интерфейс для PC AT. Все функции по управлению накопителем обеспечивает встроенный контроллер, а 40-проводной соединительный кабель является фактически упрощенным сегментом 16-разрядной магистрали AT-Bus (ISA). Адаптеры IDE обычно не содержат собственного BIOS - все функции поддержки IDE встроены в системный BIOS PC AT. Однако интеллектуальные или кэширующие контроллеры могут иметь собственный BIOS, подменяющий часть или все функции системного.


Основной режим работы устройств IDE - программный обмен (PIO) под управлением центрального процессора, однако все современные винчестеры поддерживают обмен в режиме DMA, а большинство контроллеров - режим Bus Mastering.

- Описание портов контроллера



Стандартный IDE контроллер, применяемый в PC, поддерживает 2 канала, на каждом из которых может быть 2 устройства АТА (то есть всего может быть 4 устройства). Каждый канал имеет свою собственную часть пространства ввода-вывода. Для первого канала - 1F0h-1F7h для второго - 170h-177h. На данном этапе надо ввести понятие базового порта: в общем это лучше всего пояснить на примере: адреса портов формируются следующим образом: базовый_порт+смещение. Загрузив в базовый_порт значение 1F0h или 170h можно больше не думать, о том с каким каналом ты работаешь, потому что функции портов к примеру 1F3h и 173h совпадают для разных каналов IDE.


Номер порта

CHS адресация

LBA адресация

Read

Write

1F0h (170h)







Порт данных

Порт данных

1F1h (171h)







Порт ошибок

Порт свойств

1F2h (172h)







Счетчик секторов

Счетчик секторов

1F3h (173h)

Номер сектора

Адрес 0-7







1F4h (174h)

Цилиндр [0:7]

Адрес 8-15







1F5h (175h)

Цилиндр [8:15]

Адрес 16-23







1F6h (176h)

Номер головки и устройства

Адрес 24-27, устройство







1F7h (177h)







Регистр состояния

Регистр команды

3F6h (376h)







Регистр состояния

Управление

3F7h (377h)

Не используется

Не используется








Колонка 4 и 5 показывают, что находится в регистре в зависимости от того, читаем мы или пишем, 2-я и 3-я колонки означают режим адресации.


Порт 1F0h(170h) является единственным 16-битным портом контроллера, из него принимаются и в него записываются данные при работе с винчестером.

Порт ошибок, он же порт 1F1h содержит коды ошибок после выполнения команды, если там все нули значит "все хорошо".

Регистр 1F2h используется в групповых операциях (читается или записывается группа секторов за один раз), он выступает в роли счетчика секторов, его содержимое уменьшается на единицу после обработки каждого сектора из группы.


Следующие регистры 1F3h-1F6h хранят адрес. Тут все понятно надеюсь.

- описание регистров портов


Регистр порта 1F6h:


7

6

5

4

3

2

1

0

1

AM

1

DEV

LBA27

LBA26

LBA25

LBA24


С разрядами [0:3] все понятно - туда пишем соответствующую часть LBA адреса. Биты 5 и 7 зарезервированы, там всегда должно быть 1.


Бит AM (Addressing Mode) определяет режим адресации - 0-CHS, 1-LBA. Наконец, добрались до главного - бит DEV определяет устройство на канале (Master/Slave) к которому относится все то что пишешь в остальные порты: 0-Master, 1- Slave.


Регистр порта 1F7h (регистр состояния):


7

6

5

4

3

2

1

0

BSY

DRSY

DF

DSC

DRQ

CORR

IDX

ERR


BSY- устройство занято выполнением команды.

DRDY - устройство готово к приему команды.

DF - устройство неисправно.

DSC - поиск завершен.

DRQ - устройство готово к обмену данными.

CORR - была ошибка, но данные были скорректированы.

IDX - в разных источниках написано по разному, этот бит зависит от производителя, и самое верное решение - просто его игнорировать.

ERR - в процессе выполнения команды, были обнаружены ошибки, какие именно - указывает 1F1h.

Наконец, порт 3F6h - в нем используются только биты 1 и 2.


1 - прерывания от устройства запрещены, 0 - разрешены.

2 - программный сброс всех подключенных к каналу устройств (при установке его в 1).

  • Основной протокол обмена PIO



Протокол PIO (Programmable Input/Output) заключается в следующих основных положениях (при работе без прерываний):

Дождаться готовности устройства (BSY=0)

Записать в DEV номер устройства на канале.

Дождаться BSY=0, DRDY=1 считывая 1F7h или 3F6h (для первого канала).

Записать в регистры остальные параметры.

Записать в регистр команды код операции.

Читать регистр статуса пока устройство не установит BSY=0.

Дождаться готовности обмена данными (DRQ=1)

Принять данные (или передать).


Пока BSY установлен в 1, ничего делать нельзя, надо подождать, пока винчестер разберется со своими проблемами и будет готов заняться твоими, причем BSY=1 указывает на занятость канала, а не устройства. В этом кроется причина невозможности параллельной работы двух устройств на одном канале - прежде чем обращаться к какому-либо устройству, нужно, чтобы оба подключенных к каналу устройства освободились, так как они разделяют бит BSY между собой.


DRDY=1 показывает, что диск готов к приёму команд, поскольку согласно протоколу анализ этого бита должен происходить после выбора устройства на канале: он показывает занятость именно конкретного выбранного устройства. DRQ=1 говорит, что диск готов к обмену данными. Важно понимать разницу между DRDY и DRQ. После посылки команды в порт, устройство установит DRDY=0, что указывает на занятость устройства выполнением команды, и только после того, как данные будут считаны во внутренний буфер, устройство установит DRQ=1, при этом в протоколе не оговаривается, что устройство сразу же должно быть готово к приему следующей команды.

- Команды ATA на примере чтения сектора и остановки винчестера


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


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


Чтение секторов с винчестера выглядит следующим образом:

Запретить прерывания записью в 3F6h

Дождаться готовности канала читая бит BSY в порту 1F7h

Выбрать устройство на канале записью в 1F6h

Дождаться DRDY=1 и BSY=0

Загрузить LBA адрес.

Послать команду чтения (20h)

Дождаться BSY=0

Дождаться готовности обмена данными (DRQ=1)

Принять данные от устройства через 1F0h строковой операцией ввода из порта.

Разрешить прерывания от устройства.


В случае остановки винчестера необходимо послать команду E6h, при этом данные отправлять не надо и следовательно остальные пункты для данной операции не требуются. Для того, чтобы восстановить работу винчестера, необходимо установить второй бит в регистр порта 3F6h.

Материал подготовлен с использованием следующих источников


1. В. Морозов, А. Тарахтелюк «Диагностика и ремонт НЖДМ типа Винчестер» Москва, АО «Звезды и С», 1993 г.

2. Л.В. Букчин, Ю.Л. Безрукий «Дисковая подсистема IBM-совместимых персональных компьютеров», МП. «Бином», 1993 г.

3. С. Гореликов « IMB PC. Дисковая система: контроллеры, накопители и иъ обслуживание», Москва, АО «Звезды и С», 1992 г.

4. Журнал "Компьютер Днепропетровска" N 19 (1998), электронная версия по адресу: ссылка скрыта

5. Цикл статей «Анатомия HDD”: ссылка скрыта

6. Сайт посвященный аппаратному программированию: ссылка скрыта

7. Статья журнала Техно-Collection «Винчестер снаружи и изнутри»: № 11, 1997