Сравнительный анализ и оценка возможностей НГМД и НЖМД

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



у-передаче байта;

  • бит 6 - DIO - направление данных: 1 - от FDC KCPU;
  • бит 5 NON DMA использование DMA: I DMA не используется;
  • бит 4 CMD BSY: 1 контроллер занят выполнением команды;
  • биты [0:3] привод А:, В:, С:, D: занят (в AT используются только биты 0,1)
  • 3F4 (374)

    W: DSR (Datarate Select Register) регистр выбора скорости:

    • бит 7: 1 сброс контроллера (обнуляется автоматически);
    • бит 6: 1 отключение питания контроллера;
    • бит 5: должен быть 0(1 разрешение внешней);
    • биты [4:2] выбор времени предварительной компенсации записи (000 предварительная компенсация по умолчанию);
    • биты [1:0] скорость обмена: 00 500 кбит/с, 01 300 кбит/с, 10 - 250 кбит/с, 11-1 Мбит/с3F5 (375) RW: PR (Data Register) - регистр команд/данных3F7 (377) W: CCR (Configuration Control Register) регистр параметров контроллера (AT):
    • биты [7:2] не используются;
    • биты [1:0] скорость обмена: 00 500 кбит/с, 01 300 кбит/с, 10-250 кбит/с, 11-1 Мбит/с3F7 (377) R: DIR (Digital Input Register) регистр состояния (только в AT):
    • бит 7: 1 смена носителя (чтение инвертированной линии DC);
    • биты [6:0] не используются, при чтении не выводятся на шину данных

    Контроллер НГМД может быть использован и для работы со стримерами; специально для этого в контроллере имеется регистр TDR (Tape Drive Register), пара младших битов которого задает, какому номеру устройства соответствует стример (для него иначе настраиваются цепи сепаратора данных).

    Контроллер НГМД поддерживается дисковым сервисом BIOS Int 13h. С контроллером общается и обработчик аппаратного прерывания от таймера IRQO (BIOS Int 08h), который декрементирует счетчик времени работы мотора НГМД (BIOS Data Area, ячейка 0:0440), и по его обнулению отключает мотор. Адрес дисковода, мотор которого включен, в позиционном коде содержит ячейка памяти 0:043Е При каждом обращении к дискете в регистре контроллера устанавливается бит включения мотора и в счетчик времени заносится константа, соответствующая выдержке на отключение (по умолчанию 2 с). Таким образом, если в течение этого интервала нет следующих обращений, мотор автоматически выключается (если BIOS отрабатывает аппаратные прерывания от таймера). Не отключающийся мотор может быть косвенным признаком зависания компьютера.

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

    Программное взаимодействие с дисководами осуществляется через контроллер НГМД, который управляет механизмом привода и работает с сигналами головок записи-чтения. Все операции с дискетами выполняются по командам, посылаемым хостом в регистр DR (3F5) согласно состоянию битов регистра MSR (3F4). Запись байта команды или данных в регистр DR разрешается лишь при текущем значении MSR=10xxxxxxb, чтение при MSR=llxxxxxxb. Для записи-чтения этого регистра приходится использовать отдельные подпрограммы, не только дожидающиеся разрешающих значений MSR, но и имеющие аварийный выход по тайм-ауту. Хост также выполняет запись в регистр DOR (3F2) для запуска-останова дисковода, а также в CCR (3F7) или DSR (3F4) для выбора скорости передачи данных. В операциях обмена данными с дискетами обычно участвует контроллер DMA, и он должен быть своевременно проинициализирован. Сигнал ТС (завершение цикла DMA) используется как признак завершения фазы данных. В общем, виде процедура обмена данными состоит из следующих шагов.

    1. Запуск мотора и выбор дисковода (записью в регистр DOR).
    2. Установка скорости (записью в регистр CCR).
    3. Выполнение команды рекалибровки.
    4. Ожидание раскрутки двигателя (если мотор не проработал 0,5 с).
    5. Позиционирование головки на требуемый цилиндр.
    6. Инициализация контроллера DMA.

    7. Посылка команды чтения-записи.

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

    9. По прерыванию от контроллера считываются байты результата, и, если ошибок нет, на этом обмен успешно завершается. Если есть ошибки, то снова переходят на шаг 6 (инициализация DMA) и далее повторяют команду чтения-записи. Если за три раза успеха не достигается, выполняется рекалибровка, затем инициализация DMA и повторные попытки чтения-записи. Если успеха не достигается и после нескольких рекалибровок, обмен прекращается аварийно [30].

    Контроллер поддерживает команды чтения данных, чтения удаленных данных, чтения трека, записи данных, записи удаленных данных, верификации, форматирования трека, рекалибровки, поиска, относительного поиска, чтения прерывания, чтения состояния привода, чтения идентификатора, а также служебные. команды спецификации параметров привода, включения перпендикулярного режима (для дискет 2,88 Мбайт), конфигурирования и опроса версии контроллера, блокировки сброса параметров и отладочного считывания регистров. Программный интерфейс контроллера считывает координаты и код размера (С, Н, R, N) из первого успешно считанного идентификатора адреса сектора с ее помощью можно произвести полный переучет всех секторов на каждом тр