Сделай Сам Свою Работу на 5

Протоколы и режимы передачи данных





Программа общается с устройствами АТА через регистры, используя инструкции ввода-вывода IN и OUT. Для передачи данных с максимальной скоростью приме­няют программный доступ РЮ к регистру данных инструкциями INSW/OUTSW или по каналу DMA. Тип обмена (РЮ или DMA) определяется командой обращения. Программный доступ РЮ обязателен для всех устройств, команды режима DMA устройствами могут не поддерживаться. Параметры различных режимов обмена приведены в табл. 9.7.

Таблица9.7. Параметры режимов передачи

 

Режим передачи Минимальное Скорость Интерфейс
  время цикла, не передачи, Мбайт/с  
РЮ mode 0 3,3 АТА
РЮ mode 1 5,2 АТА
РЮ mode 2 8,3 АТА
РЮ mode 3 11,1 E-IDE, АТА-2
      (используется IORDY)
РЮ mode 4 16,6 E-IDE, Fast АТА-2
      (используется IORDY)
Singleword DMA Mode 0 2,08 АТА
Singleword DMA Mode 1 4,16 АТА
Singleword DMA Mode 2 8,33 АТА
Multiword DMA Mode 0 4,12 АТА
Multiword DMA Mode 1 13,3 АТА-2
Multiword DMA Mode 2 16,6 FastАТА-2
Ultra DMA Mode 0 120' 16,6 ATA/ATAPI-4
Ultra DMA Mode 1 80' ATA/ATAPI-4
Ultra DMA Mode 2 601 ATA/ATAPI-4
Ultra DMA Mode 3 451 44,4 ATA/ATAPI-5
Ultra DMA Mode 4 ЗО1 66,6 ATA/ATAPI-5
Ultra DMA Mode 5 201 ATA/ATAPI-6

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



Программный доступ РЮ (Programmed Input/Output) выполняется в виде следу­ющих друг за другом операций чтения или записи в пространстве ввода-вывода по адресу регистра данных. Готовность устройства проверяется перед началом


9.2. Интерфейс ATA/ATAPI (IDE)_______________________________________ 377

передачи блока, после чего хост производит серию операций в определенном тем­пе, который определяется выбранным режимом РЮ Mode 0-4. Для каждого ре­жима определены допустимые параметры временной диаграммы цикла обмена. Обмен РЮ программно реализуется с помощью процессорных инструкций вво­да-вывода строк REP INS или REP OUTS с занесенным в регистр СХ количеством слов (или байтов) в передаваемом блоке. Эти инструкции обеспечивают максималь­но возможную скорость обмена для данного процессора и системной шины. «Обуз­дать» процессор в соответствии с выбранным режимом входит в задачу адаптера AT А, который использует для удлинения цикла сигнал готовности шины (для ISA — IOCHRDY). Традиционные режимы 0,1 и 2 имеют временные параметры, фиксируемые только хост-адаптером. Для прогрессивных режимов АТА-2 (РЮ Mode 3 и выше) устройство может затормозить обмен, используя сигнал готовно­сти IORDY. Программный обмен на все время передачи блока занимает и процес­сор, и системную шину.



Обмен по каналу DMA занимает исключительно шины ввода-вывода и памяти. Процессору требуется выполнить только процедуру инициализации канала, после чего он свободен до прерывания от устройства в конце передачи блока (этим могут воспользоваться многозадачные системы). Стандартные каналы DMA шины ISA для интерфейса АТА не используются из-за низкой пропускной способности. Вы­сокопроизводительные адаптеры АТА имеют собственные более эффективные кон­троллеры. Режимы обмена по каналу DMA бывают одиночными и множественны­ми. При одиночном режиме — Singleword DMA — устройство для передачи каждого слова вырабатывает сигнал запроса DMARQ и сбрасывает его по сигналу DMACK#, подтверждающему цикл обмена. При множественном режиме Multiword DMA — на сигнал DMARQ хост отвечает потоком циклов, сопровождаемых сигналами DMACK*. Если устройство не справляется с потоком, оно может приостановить его снятием сигнала DMARQ, а по готовности установить его снова. Множественный режим позволяет развить более высокую скорость передачи.

В спецификации ATA/ATAPI-4 появился новый режим — Ultra DMA, позволя­ющий перешагнуть барьер в 16,6 Мбайт/с, свойственный традиционным режимам и используемому кабелю. При этом обеспечивается и контроль достоверности передачи данных по шине, чего не делалось ни в РЮ, ни в стандартных режимах DMA (а зря!). Стандартом АТА-4 было определено 3 режима Ultra DMA (0,1 и 2), впоследствии ввели новые; выбор режима осуществляется командой Set Features. В режимах Ultra DMA сигналы DMARQ и DMACK* сохраняют свое назначение, а вот смысл сигналов DIOR#, DIQW# и IORDY на время передачи пакета (Ultra DMA Burst) существенно меняется. В пакете данные на шине сопровождаются стробом, генери­руемым источником данных, причем для синхронизации используются оба перепа­да сигналов. Это позволяет повысить пропускную способность шины до 33 Мбайт/с, не увеличивая частоту переключения сигналов сверх 8,33 с"1 (этот предел для обыч­ного кабеля достигается в режиме РЮ Mode 4 и Multiword DMA Mode 2). Каждое переданное слово участвует в подсчете CRC-кода, который передается хост-кон­троллером в конце пакета. Подсчет ведется и источником данных, и приемником.




378________________________________ Глава 9. Интерфейсы устройств хранения

При несовпадении принятого устройством кода с ожидаемым кодом фиксирует­ся ошибка передачи, о которой устройство сообщает в конце исполнения коман­ды. Передача в пакете может приостановиться, если приемник снимет сигнал го­товности (DDMARDY* или HDMARDY*). Передача пакета может прекращаться по инициативе устройства (снятием сигнала) или хоста (сигналом STOP). Проти­воположная сторона должна подтвердить окончание цикла сигналом STOP или DMARQ соответственно.

Способ сообщения об ошибке передачи зависит от типа выполнявшейся коман­ды. Для команд READ DMA,WRITE DMA, READ DMA QUEUED или WRITE DMA QUEUED в регистре ошибок ER устанавливается бит 7 (ICRC) и бит 2 (ABRT). Для пакетной команды REQUEST SENSE (уточнить состояние) в случае ошибки в регистре состо­яния SR устанавливается бит О (СНК) и сообщается ключ состояния (Sense key) OBh (команда отвергнута). Для всех других пакетных команд в случае ошибки устанавливается бит СНК и сообщается состояние 04h (аппаратная ошибка), а в последующих командах REQUEST SENSE сообщается значениеЛ5С/А5СО 08h/03h (ошибка CRC при связи с логическим устройством). Получив сообщение об ошиб­ке, хост должен повторить команду. Если ошибки появляются постоянно, хост должен понизить скорость обмена (вплоть до выхода из режима Ultra DMA).

Тип режима обмена определяется возможностями хост-адаптера (и его драйвера), устройств и кабеля, и для каждого устройства он будет ограничен минимумом из максимальных возможностей всех этих компонентов. Как правило, режимы уста­навливаются системой автоматически, но пользователю дается возможность при необходимости «подрезать крылья» контроллеру настройками BIOS Setup. Для работы в режимах Ultra DMA Mode 3 и выше требуется 80-проводный кабель, присутствие которого должно быть программно определено до включения это­го режима обмена. Правда, в спецификации есть оговорка, что при двухточечном соединении (контроллер—устройство) для режимов 3 и 4 можно использовать 40-проводный кабель (без среднего разъема). Система не должна позволить пользователю применить высокоскоростные режимы на обычном кабеле, при этом желательно, чтобы она сообщала об обнаруженном несоответствии. Для опреде­ления типа кабеля есть несколько возможностей [4].

Определение типа кабеля через хост-контроллер, для чего хост-контроллер должен иметь приемник сигнала CBLID*. После включения питания или аппа­ратного сброса хост ожидает завершения протокола сброса и затем подает ко­манду идентификации Identyf у (Packet) Devi се устройству 1. Устройство 1 стандарта АТА-3 и выше обязано после сброса снять сигнал PDIAG#/CBLID# не позднее, чем по приходу первой команды. Если обнаружено старое устройство, то протокол идентификации кабеля хостом работать не будет (но со старым устройством на шлейфе включать высокоскоростной режим и не стоит). Совре­менное устройство снимет сигнал, и хост-адаптер сможет определить наличие 80-проводного кабеля по низкому уровню CBLID*. Некорректно работающее устройство может удержать низкий уровень сигнала, и в этом случае 40-про­водный кабель будет ошибочно трактоваться как 80-проводный.


9-2. Интерфейс АТА/ATAPI (IDE)_______________________________________ 379

Определение типа кабеля через устройство не требует дополнительного при­
емника в контроллере — линия PDIAG#/CBLID# в хост-контроллере заземляет­ся через конденсатор емкостью 0,047 мкФ±20 %. Приемник сигнала идентифи­кации кабеля располагается в устройстве. Для определения типа кабеля хост посылает команду Identyf у (Packet) Device устройству 1, чтобы оно освобо­дило линию (сняло сигнал PDIAG*). Затем команда идентификации посылается устройству 0. Примерно через 30 мкс после получения команды устройство кратковременно обнуляет эту линию, затем отпускает и только через 20-30 мкс после этого считывает ее состояние и сообщает его в бите 13 слова 93. Линия подтягивается к +5 В резисторами 10 кОм, установленными в устройствах. Если используется 40-проводный кабель, то конденсатор в хост-адаптере не успеет перезарядиться и устройство сообщит нулевое значение бита. Если кабель 80-проводный, то конденсатор оказывается изолированным от линии PDIAG*/CBLID* в устройстве, и оно сообщит единичное значение бита. Если на хост-контроллере нет конденсатора, то даже 40-проводный кабель будет идентифи­
цироваться как 80-проводный, что опасно при передаче данных. Если некор­
ректно работающее ведомое устройство своевременно не отпустит линию, то
даже 80-проводный кабель будет казаться 40-проводным.

Комбинированный метод определения типа кабеля предполагает наличие на
хост-контроллере и приемника сигнала CBLID#, и конденсатора (они друг дру­гу не мешают). Решение о наличии 80-проводного кабеля принимается, только если это подтвердят оба метода. Возможная ошибка идентификации будет без­опасной — при некорректном устройстве 1 на 80-проводном кабеле не будет включен высокоскоростной режим (наверное, это и к лучшему).

Правильный выбор режима обмена обеспечивает надежность и производитель­ность. Все устройства поддерживают режим РЮ Mode 0, в котором считывается блок параметров идентификации. В блоке имеются поля, описывающие режим обмена по умолчанию и более эффективные режимы обмена, поддерживаемые устройством. Командой Set Features можно изменить параметры режима. Ино­гда накопитель не обеспечивает надежной передачи данных в заявленном высо­коскоростном режиме. Если данные начинают пропадать, первым делом следует понизить режим обмена.

BIOS определяет режим обмена с каждым устройством с учетом ограничений, заданных в Setup. Старые диски, не сообщающие своих параметров, могут не ра­ботать с новыми режимами PIO. На одном ленточном кабеле (канале ATА) могут присутствовать устройства с разным режимом обмена — спецификация это допус­кает. Однако реально могут возникать аппаратные или программные ограничения. Некоторые чипсеты не позволяют независимо программировать режим обмена для устройств канала. В таком случае при подключении двух разных устройств (например, PIO Mode 1 и 3) обмен с обоими устройствами будет происходить со скоростью меньшего (PIO Mode 1). Поэтому не рекомендуется к одному каналу АТА (порту IDE) подключать быстрый винчестер и медленный CD-ROM. Ино­гда завязка режимов обмена двух устройств обусловлена ограниченным набором параметров конфигурации в BIOS. Быстрые режимы множественного обмена по


380________________________________ Глава 9. Интерфейсы устройств хранения

DMA реализуются только драйверами ОС. «Глупый» драйвер может попытаться навязать медленный режим обоим устройствам канала, так что смешивать разные устройства не стоит и по этой причине.

Протокол обмена PIO хорош только для однозадачных ОС. Для многозадачных ОС больший интерес представляет обмен по протоколу DMA, если, конечно, под­держиваемый режим обеспечивает приемлемую скорость обмена. С точки зрения драйвера есть различия лишь между типами режимов (РЮ, DMA и UltraDMA); аппаратные нюансы режимов внутри типа влияют только на скорость передачи. Режим UltraDMA значительно отличается от обычного DMA необходимостью обработки возможных ошибок передачи по шине; в случае постоянных ошибок драйвер должен понизить режим UltraDMA (вплоть до перехода на традицион­ные режимы).

Протокол взаимодействия хоста с устройством выглядит следующим образом.

1. Хост читает регистр состояния устройства, дожидаясь нулевого значения бита В S Y.Если присутствуют два устройства, хост обращается к ним «наугад» — состо­яние будет сообщаться последним выбранным устройством.

2. Дождавшись освобождения устройства, хост записывает в регистр D/H байт,у которого бит DEV указывает на адресуемое устройство. Здесь кроется причи­на невозможности параллельной работы двух устройств на одной шине AT А:обратиться к устройству можно только после освобождения обоих устройств.

3. Хост читает основной или альтернативный регистр состояния адресованного
устройства, дожидаясь признака готовности (DRDY=1).

4. Хост заносит требуемые параметры в блок командных регистров.

5. Хост записывает код команды в регистр команд.

6. Устройство устанавливает бит BSY и переходит к исполнению команды.

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

Для команд, не требующих передачи данных, следующий шаг (шаг 7) — последний. Завершив исполнение команды, устройство сбрасывает бит BSY и устанавливает запрос прерывания (если он не запрещен). К этому моменту в регистрах состо­яния и ошибок уже имеется информация о результате исполнения. Единичное зна­чение бита BSY может «промелькнуть» между шагами 6 и 7 так быстро, что хост его не зафиксирует, но для фиксации факта выполнения команды или ее части предназначен запрос прерывания.

Для команд, требующих чтения данных в режиме РЮ, процедура продолжается следующим образом.

7. Подготовившись к передаче первого блока данных по шине АТА, устройство
устанавливает бит DRQ. Если была ошибка, она фиксируется в регистрах со­стояния и ошибок. Далее устройство сбрасывает бит BSY и устанавливает за­прос прерывания (если он не запрещен).

8. Зафиксировав обнуление бита BSY (или по прерыванию), хост считывает регистр состояния, что приводит к сбросу прерывания от устройства.


9.2. Интерфейс АТА/ATAPI (IDE)_______________________________________ 381

9. Если хост обнаружил единичное значение бита DRQ, он производит чтение пер­вого блока данных в режиме PIO (адресуясь к регистру данных). Если обнару­жена ошибка, считанные данные могут быть недостоверными. После передачи блока данных возможно одно из следующих действий:

• если на шаге 8 ошибка не обнаружена и требуется передача следующего
блока, устройство устанавливает бит BSY и данная последовательность повторяется с шага 7;

• если есть ошибка или передан последний блок данных, устройство сбрасы­
вает бит DRQ и выполнение команды завершается.

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

Для команд, требующих записи данных в режиме PIO, процедура после шага 6 про­должается следующим образом.

7. Подготовившись к приему первого блока данных по шине ATА, устройство устанавливает бит DRQ (если нет ошибок) и сбрасывает бит B5Y. Если была ошибка, она фиксируется.

8. Зафиксировав обнуление бита BSY, хост считывает регистр состояния.

9. Если хост обнаружил единичное значение бита DRQ, он производит запись пер­вого блока данных в режиме PIO по адресу в регистре данных.

10. После передачи блока данных возможно одно из следующих действий:

• если обнаружена ошибка, устройство сбрасывает бит DRQ, устанавливает за­прос прерывания и выполнение команды завершается, а переданные по шине данные остаются устройством необработанными (не записываются на носитель);

• если ошибка не обнаружена, устройство устанавливает бит BSY и перехо­дит к следующему шагу.

11. Устройство обрабатывает принятый блок данных, затем:

• если нет ошибок и обработанный блок — последний, устройство сбрасыва­ет бит B5Y и устанавливает запрос прерывания, на чем выполнение коман­ды успешно завершается;

• если обнаружена ошибка, выполнение команды завершается таким же об­
разом, но с установкой битов ошибок;

• если нет ошибок и требуется передача следующего блока, процедура про­
должается.

 

12. По готовности приема следующего блока устройство устанавливает бит DRQ, сбрасывает бит BSY и устанавливает запрос прерывания.

13. По обнулении бита BSY (или по прерыванию) хост считывает регистр состояния.

14. Обнаружив бит DRQ, хост выполняет запись очередного блока в регистр дан­ных, и последовательность повторяется с шага 11.


382________________________________ Глава 9. Интерфейсы устройств хранения

Команды с передачей данных в режиме DMA выполняются похожим образом, но с некоторыми исключениями.

♦ Вместо PIO используется прямой доступ к памяти. Хост должен инициализи­
ровать канал DMA до записи кода в регистр команд, чтобы при появлении сиг­нала DMARQ начался обмен.

♦ Запрос прерывания даже в многосекторных передачах производится один
раз — по выполнении команды.

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.