Контроллеры жестких дисков
Собственно контроллер накопителя физически расположен на плате электроники и предназначен для обеспечения операций преобразования и пересылке информации от головок чтения/записи к интерфейсу накопителя. Часто, контроллером называют интерфейс накопителя или интерфейс ПК с накопителем, что в общем не верно. Контроллер жестких дисков представляет собой сложнейшее устройство - микрокомпьютер, со своим процессором, ОЗУ и ПЗУ, схемами и системой ввода/вывода и т.п.. Однако, в большинстве случаев, производители размещают их в одном или двух микро-чипах. Контроллер занимается множеством операций преобразования потока данных. Так как длинна дорожек неравна, данные на различные дорожки необходимо записывать неравномерно. Это становится проблемой, по сравнению с гибкими дисками, для носителей с высокой плотностью записи (число дорожек более 1000). Простые контроллеры, как правило, записывают одно и тоже количество информации на каждую дорожку, независимо от ее длинны. Для этого контроллер упаковывает данные более плотно, начиная с определенной по счету дорожки. Цилиндр, с которого начинается более плотная упаковка данных называется цилиндром начальной прекомпенсации (Starting Cylinder for Precompensation - SCP). Для компенсации искажения информации при чтении, запись данных производится с предварительным смещением битов, которое учитывает искажения. Многие производители создают устройства, которые записывают различный объем информации на внутренние и внешние дорожки за счет размещения на них разного числа секторов. Это возможно, благодаря аппаратному скрытию от программ и пользователя физических характеристик устройства на уровне его контроллера и/или интерфейса (устройства с IDE, EIDE и SCSI интерфейсами). Поэтому, накопители, как правило, имеют различное физическое и логическое число цилиндров. Также, в силу исторических причин, многие операционные системы, работающие с накопителями на ЖМД через BIOS, разработаны таким образом, что не могут оперировать числом цилиндров более 1024. Поскольку в настоящее время, накопители больших объемов (более 1Мб) имеют более 1024 физических цилиндра, то применяется программный пересчет, при котором, накопитель определяется его контроллером и процедурами BIOS как имеющий не более 1024 цилиндра, но имеющий некоторое нереальное число головок, поверхностей и секторов. Функция же пересчета для отыскания нужного сектора ложится либо на BIOS ПК, либо на BIOS контроллера, либо на интерфейс. Данные, записываемые в сектора, защищаются от некоторых ошибок чтения/записи при помощи расчета и записи вместе с ними контрольной суммы - кода контроля ошибок (Error Correction Code - ECC). Записывая байты на диск, адаптер производит накопление циклическим делением входных данных на специальный полином, остатка от деления, который представляет уникальную комбинацию бит и записывается контроллером вместе с данными. Число байт ECC для каждого устройства определяется видом используемого полинома. При считывании данных производится аналогичное накопление и расчет контрольной суммы. В случае несовпадения результатов рассчитываемого и хранимого с данными ECC, производится попытка восстановления - коррекции данных при помощи полинома, имеющихся данных и контрольной суммы. Число байт данных, которое может быть скорректировано, определяется порядком используемого полинома. Чем она выше, тем большее количество байт подряд может быть скорректировано, но тем длиннее и сам код ECC. Используются разные полиномы и число байт ECC может быть от 4 до 8 и более. Число же бит информации, требуемое для записи одного байта, зависит от используемого метода кодирования. Необходимо отметить, что восстановление данных при помощи полинома и кода ECC происходит на уровне контроллера и прозрачно для программ и пользователя, однако, на основе процедур BIOS программным путем можно получить информацию о том, была ли произведена процедура коррекции. Большинство современных накопителей поддерживают режимы работы контроллеров Ultra DMA, DMA2, и PIO. DMA - Direct Memory Access - прямой доступ к памяти - режим взаимодействия контроллера накопителя и интерфейса ПК, при котором обмен данными по интерфейсу осуществляется без участия центрального процессора ПК. Режим DMA позволяет заметно разгрузить процессор по сравнению с режимом PIO (Programmed Input/Output - программный ввод/вывод), при котором все пересылки выполняет непосредственно центральный процессор ПК. Это достигается за счет использования специального контроллера и канала прямого доступа к оперативной памяти ПК, без участи центрального процессора. Все современные накопители могут работать в режиме DMA2, если это поддерживается операционной системой, а скорость обмена при этом может достигать, в зависимости от модели, 16.6 Мб/с. А накопители и системы с поддержкой режима Ultra DMA, при использовании соответствующего драйвера, могут передавать и принимать информацию со скоростью 33.3 Мб/с. Однако, это лишь предельно возможные скорости обмена данными контроллера с буфером накопителя. Реальная же скорость чтения/записи даже в лучших моделях с интерфейсом ATA в настоящее время не превышает 10-11 Мб/с. Основная нагрузка при работе ложится именно на чтение/запись, передача данных в буфер и из буфера занимает лишь малую часть этого времени, и сам факт перехода на Ultra DMA, как правило, дает прирост лишь в единицы процентов. Но накопители с Ultra DMA, обычно, имеют высокую скорость вращения шпинделя, а следовательно - и более высокую скорость чтения/записи.
|