Ata atapi devices что это
Перейти к содержимому

Ata atapi devices что это

PersCom — Компьютерная ЭнциклопедияКомпьютерная Энциклопедия

Вы здесь: Главная Устройства оптического хранения данных Интерфейс Интерфейс ATA/ATAPI

Архитектура ЭВМ

Компоненты ПК

Интерфейсы

Мини блог

Самое читаемое

  • Арифметико логическое устройство (АЛУ)
  • Страничный механизм в процессорах 386+. Механизм трансляции страниц
  • Организация разделов на диске
  • Диск Picture CD
  • White Book/Super Video CD
  • Прямой доступ к памяти, эмуляция ISA DMA (PC/PCI, DDMA)
  • Карты PCMCIA: интерфейсы PC Card, CardBus
  • Таблица дескрипторов прерываний
  • Разъемы процессоров
  • Интерфейс Slot A

Устройства оптического хранения данных

Интерфейс ATA/ATAPI

Это расширение интерфейса ATA, к которому обычно подключаются жесткие диски. Строго говоря, ATAPI — это стандартный программный расширенный интерфейс ATA для накопителей CD/DVD и других устройств, преобразующий команды SCSI/ASPI в стандарт ATA. С его помощью можно быстро приспособить новые высококачественные модели накопителей к работе с интерфейсом IDE, а также сохранить совместимость ATA-накопителей с DOS посредством программного интерфейса. В Windows 9х и более новых версиях программное обеспечение для CD-ROM содержится в драйвере CDFS (CD File System) VxD.

Накопители ATA/ATAPI иногда называют расширенными IDE-накопителями (Enhanced IDE), поскольку в техническом аспекте они являются усовершенствованной версией стандартного интерфейса IDE. В большинстве случаев накопители IDE/ATA CD или DVD подключаются ко второму каналу IDE (или интерфейсному кабелю), а первый используется для жестких дисков. Так делается потому, что в IDE плохо организовано совместное использование общего канала, поэтому жесткий диск должен находиться в состоянии ожидания, пока накопитель CD-ROM не выполнит переданную ему команду. В интерфейсе SCSI такой проблемы не существует, поскольку команды могут одновременно передаваться на разные устройства.

Если ваш компьютер не поддерживает интерфейс SATA, ATA станет самым экономным и эффективным решением при подключении приводов компакт-дисков и DVD.

Почти все современные компьютеры способны использовать устройство ATA/ATAPI CD/DVD в качестве загрузочного, что позволяет поставщикам готовых систем предоставлять пользователям компакт-диски, возвращающие компьютерную систему после сбоя в ее исходное состояние. Ниже будет показано, чем загрузочные компакт-диски отличаются от обычных и как с помощью недорогого программного обеспечения и привода CD-R/RW создать собственный загрузочный диск с нужной конфигурацией.

Ata atapi devices что это

Пожалуй, одной из основных задач разработчика ОС является работа с жесткими дисками и файловыми системами. В этой статье рассмотрим принципы работы с контроллерами ATA/ATAPI. Первая часть — способы поиска контроллеров дисков и проверка наличия на них устройств. Вторая часть — непосредственно чтение и запись данных на жёстких дисках с использованием всевозможных методов.

Вопросы, связанные с реализацией кэша и файловой системы, ищите в другом месте.

Содержание

Вступление

С развитием компьютера рос и объём жёсткого диска. Его геометрия менялась.

Сначала хватало способа адресации CHS (Cylinder-Head-Sector — Цилиндр-Головка-Сектор). Этот способ позволял адресовать до 8ГБ. Но такая адресация была до жути неудобной, и на смену ей тут же пришёл другой способ — LBA (Linear Block Addressing — линейная адресация сектора). Изначально родился стандарт LBA28, что позволяло использовать 28-битный адрес сектора, то есть максимальный объём диска мог достигать примерно 128ГБ. Однако, в последнее время объём данных на жёстких дисках превысил эту величину, вследствие чего появился стандарт LBA48 (с 48-битной адресацией секторов).

Способ адресации CHS долго использовался BIOS в прерываниях дискового сервиса. Но после появилось и расширение, способное адресовать через LBA.

С развитием геометрии дисков возросли и потребности в быстром доступе к дискам. Вначале было два способа доступа: ISA, и поэтому скорость такого способа передачи составляла 25 МБайт/с, что обусловлено частотой шины и, в свою очередь, частотой PCI с возможностью каждому устройству обращаться к памяти компьютера напрямую (минуя процессор). Вследствие этого появились и PCI IDE контроллеры. Разработчики реализовали новый сверхбыстрый способ передачи данных — Ultra DMA (UDMA). PCI IDE контроллер захватывал шину памяти в режиме Bus Master, и уже винчестер начинал контролировать передачу данных. Раньше за него эту работу выполнял ISA DMA контроллер. Появилась возможность передавать данные на высоких скоростях (33/66/100 МБайт/с и выше).

С появлением PCI IDE контроллера расширился способ доступа к диску.

В дальнейшем появился SATA контроллер. Кто его звал? Все жили счастливо без него. Ну что же, примем как должное и будем программировать и его.

Поиск контроллеров и дисков на них

Как найти контроллер дисков? Собственно, как и любой другой. Надо знать, где искать. А искать будем на шине PCI.

Ищем контроллер по его базовому классу 01.

BCC SCC PI Тип
01h 00h 00h SCSI контроллер
01h xxh IDE контроллер, смотри рисунок
02h 00h Контроллер гибких дисков
03h 00h IPI контроллер
04h 00h RAID контроллер
05h 00h
06h 01h AHCI контроллер
80h 00h Устройство массовой памяти другого типа

Просто сканируем все устройства и проверяем их класс. Как это делается, читайте в статьях про PCI.

Нас, собственно, интересует три пункта:

  • 0101xx — IDE
  • 0104xx — RAID
  • 010601 — AHCI

Найдя контроллер, мы должны получить адреса его базовых портов и каналов. Забудем про [1] [2] [3] :

Базовый адрес портов команд первичного канала

Базовый адрес порта контроля первичного канала

Базовый адрес портов команд вторичного канала

Базовый адрес порта контроля вторичного канала

Базовый адрес регистров для режима захвата шины

Надо сразу сказать, что контроллер может находиться в одном из двух состояний:

  • устаревшем — Legacy.
  • родном — Native.

Также для встроенных PCI будет виден только один контроллер.

Если контролер работает в устаревшем режиме (Legacy), то для доступа к каналам используются следующие порты:

Первичный канал: порты команд 01F0h-01F7h
порт контроля 03F4h+2
прерывание IRQ14
Вторичный канал: порты команд 0170h-0177h
порт контроля 0374h+2
прерывание IRQ15

У порта контроля базовым считается адрес 03F4h. А сам регистр имеет смещение 2 относительно базового. Смотри [3] .

В конфигурационном пространстве PCI на месте BAR-регистров будет нулевой адрес, что будет говорить о том, что порты эти либо не используются, либо используются особые порты, как в нашем случае. При этом BM_BASE будет выставлен.

Файл:Library.png Исходный код
Поиск HDD и CD

Выполнение команд, примеры чтения записи

Существует несколько классов команд. Но все протоколы можно разделить на два-три типа: с приемом блока данных, с передачей блока данных и без передачи блока данных.

Основной блок регистров — это Command Block. Ниже представлены мнемонические обозначения его структуры. Есть еще старые обозначения для CHS адресации, но их я опущу. Все регистры имеют разрядность 8 бит. Исключение составляет Date, в который запись и чтение идет словами (по 2 байта, то есть, 16 бит) или двойными словами (4 байта или 32 бита), так называемый режим PIO32.

Также следует обратить внимание на блок контроля: в нём задействованы только регистры со смещением 2. Поэтому часто, говоря о Control Block, подразумевают Device Control, и, следовательно, сразу считают базовый адрес относительно этого регистра.

Для начала разберемся в структуре регистра статуса.

Объясним значения битов:

  • BSY (Busy) — если бит установлен в 1, то устройство занято.
  • DRDY (Device ready) — если бит установлен в 1, то устройству можно передать команду.
  • DF (Device fault) — если бит установлен в 1, то возникла критическая ошибка.
  • DRQ (Data request) — если бит установлен в 1, устройство готово к передаче данных.
  • ERR (Error) — если бит установлен в 1, то возникла ошибка, код ошибки смотрим в регистре ошибок Error.

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

  1. Выбрать устройство установкой бита Dev (0-Master 1-Slave).
  2. Проверить DRDY=1, заодно и BSY=0.
  3. Заполнить регистры с данными для команды.
  4. Послать код команды, тем самым начнется передача.
  5. Дождаться, пока команда не будет выполнена. BSY=0 DRDY=0.

Для команд, работающих с передачей блока данных:

  1. Выбрать устройство установкой бита Dev (0-Master 1-Slave).
  2. Проверить DRDY=1, заодно и BSY=0.
  3. Заполнить регистры с данными для команды.
  4. Послать код команды, после чего начнется передача.
  5. Дождаться, пока команда не будет выполнена. BSY=0 DRDY=0.
  6. Если команда использует передачу данных, то дождаться DRQ=1.
  7. Прочитать блок данных 256 Слов (512Байт).

Резонный вопрос: как работать с LBA48, если все регистры имеют разрядность 8 бит?

При адресации через LBA48 запись адреса идет в те же регистры, но более хитрым способом. Сначала записывается старшая часть адреса и число секторов, а затем (во второй раз) в те же самые регистры записывается младшая часть.

Помимо этого, можно прочитать эти регистры, установив HOB-бит, чтобы прочитать старшую часть, или сбросив, если нужно прочитать младшую.

Все команды для LBA48 имеют суффикс EXT.

  • HOB — (high order Bit) служит для LBA48. Любая запись в регистр Command Block очищает этот бит.
  • r – резерв.
  • SRST — программный сброс(Reset) контролера.
  • nIEN — управляет INTRQ сигналом.

Если для адресации используется LBA48, то установка HOB=0 позволяет читать старшую часть адреса, а при HOB=1 из регистра Command Block доступна для чтения младшая часть адреса.

Посылка команды READ SECTOR(S)=20h Запрос

Посылка команды READ SECTOR(S) EXT =24h Запрос

Также важной характеристикой является максимальный адрес сектора. Код операций чтения для LBA28 и LBA48:

В ответ на команду READ NATIVE MAX ADDRESS=0F8h

После посылки команды READ NATIVE MAX ADDRESS EXT=027h

  • HOB — High Order Bit (бит 7) в Device Control register.

Напоминаю, что Device Control register — это порт контроля (к примеру, 03F4h+2). Читать из этого регистра нельзя, так как в нём хранятся другие данные. Бит устанавливается посылкой 80h (HOB=1) или 0h (HOB=0). Любая запись в Command Block приводит к сбросу HOB=0.

Связанные материалы

Первоисточник (прим. доступно черз зеркало)

  1. ↑ 1,01,1Programming Interface for Bus Master IDE Controller
  2. ↑ 2,02,1PCI IDE Controller Specification Revision 1.0 почти тоже самое что в предыдущем.
  3. ↑ 3,03,13,2Протоколы хост контроллера. Ошибка цитирования Неверный тег <ref> : название «ref3» определено несколько раз для различного содержимого

Стандарты ATA/ATAPI

Обозначение стандарат Наименование стандарта Официальная ссылка Зеркало
ATA-1 Information technology —
AT Attachment Interface for Disk Drives
d0791r4c-ATA-1.pdf d0791r4c-ATA-1.pdf
ATA-2 Information Technology —
AT Attachment Interface with Extensions (ATA-2)
d0948r4c-ATA-2.pdf d0948r4c-ATA-2.pdf
ATA-3 Information Technology —
AT Attachment-3 Interface(ATA-3)
d2008r7b-ATA-3.pdf d2008r7b-ATA-3.pdf
ATA/ATAPI-4 Information Technology —
AT Attachment
with Packet Interface Extension
(ATA/ATAPI-4)
d1153r18-ATA-ATAPI-4.pdf d1153r18-ATA-ATAPI-4.pdf
ATA/ATAPI-5 Information Technology —
AT Attachment
with Packet Interface — 5
(ATA/ATAPI-5)
d1321r3-ATA-ATAPI-5.pdf d1321r3-ATA-ATAPI-5.pdf
ATA/ATAPI-6 Information Technology —

AT Attachment
with Packet Interface — 6
(ATA/ATAPI-6)

AT Attachment with Packet Interface — 7
Volume 1 — Register Delivered Command Set, Logical
Register Set
(ATA/ATAPI-7 V1)

AT Attachment with Packet Interface — 7
Volume 2 — Parallel Transport Protocols and Physical
Interconnect
(ATA/ATAPI-7 V2)

AT Attachment with Packet Interface — 7
Volume 3 — Serial Transport Protocols and Physical
Interconnect
(ATA/ATAPI-7 V3)

AT Attachment 8 — ATA/ATAPI Command Set (ATA8-ACS)

Внимание! Это незаконченная статья. Вы можете помочь доработать статью и наполнить ее материалом.

Для улучшения статьи необходимо: Перевести таблицы в вики-разметку Grindars 15:06, 15 августа 2008 (MSD)

IDE ATA/ATAPI контроллеры

Сегодня, уважаемые читатели, я бы хотел поговорить с Вами о том, что такое ATA/ATAPI контроллеры, откуда появился интерфейс IDE и что это такое?

Для начала давайте с Вами усвоим необходимый минимум теории. Когда-то очень давно (еще в прошлом тысячелетии :)) фирма «Western Digital» разработала параллельный интерфейс подключения жестких дисков.

Новым и важным в этом было то, что контроллер (управлявший всеми операциями ввода-вывода) был интегрирован в сам привод, а не вынесен в виде отдельной платы расширения, как раньше. Это позволяло:

  1. убыстрить работу устройства
  2. удешевить производство
  3. и упростить схему обмена данными с накопителем

Давайте сразу разберем основные аббревиатуры, чтобы потом не путаться. Сначала интерфейс получил название «IDE» (Integrated Drive Electronics — "Диск со встроенным контроллером"), но проблема заключалась в том, что это было слишком общее определение, под которое могло подойти много чего, имеющего «диск» и «контроллер». В связи с этим был разработан стандарт, который получил название «ATA» (анг. AT Attachment). После появления устройств SATA, это название было изменено на PATA (Parallel ATA).

Многие компьютерщики иногда говорят IDE вместо ATA или — наоборот. В принципе, это — одно и то же, просто правильнее — ATA 🙂

Поначалу стандарт работал только с жёсткими дисками, но затем был изменен для работы и с другими устройствами. К таким устройствам относятся приводы CD и DVD-ROM, магнитооптические диски и ленточные накопители. Этот новый (расширенный) стандарт стал называться «Advanced Technology Attachment Packet Interface» (ATAPI), и поэтому полное его название выглядит как — «ATA/ATAPI».

Вот как выглядят разъемы этого образца на материнской плате (два нижних, верхний — флоппи диск):

IDE контроллеры - разъемы на плате

Данный интерфейс развивался во времени и одним из значимых этапов стал переход от программного ввода-вывода данных (PIO — Programmed input-output) к прямому доступу к памяти (DMA — Direct Memory Access). Что это значит? При использовании программного метода ввода-вывода считыванием данных с диска управлял центральный процессор, что приводило к абсолютно лишней на него нагрузке, так как ЦП приходилось заниматься еще и дисковыми операциями.

В то время пальму первенства держал интерфейс обмена данными, носящий название скази («SCSI» — Small Computer System Interface). Он выгодно отличался высокой скоростью передачи и применялся в высокопроизводительных серверных платформах. Поэтому режим DMA для устройств IDE стал мощным толчком для дальнейшего развития стандарта.

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

Вот, к слову, как выглядит плата типичного контроллера, устанавливаемая производителями на свои изделия:

Плата контроллера жесткого диска

Главный чип здесь — MCU (Microcontroller Unit), он и осуществляет управление всеми операциями ввода-вывода накопителя и контролирует его работу.

Примечание: Операция прямого доступа к памяти возможна только тогда, когда такой режим работы поддерживается одновременно «BIOS», контроллером и операционной системой. Иначе система будет работать используя предыдущий режим программного ввода-вывода (PIO).

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

История развития стандарта ATA

Как видите (из второй колонки) скорости обмена данными через интерфейс постоянно увеличивались, что, в свою очередь, на этапе внедрения ревизии «Ultra ATA Mode 4» (он же — Ultra DMA/66 со скоростью передачи 66 мегабайт в секунду) вызвало необходимость внедрения нового интерфейсного кабеля с удвоенным количеством проводников (четвертая колонка в таблице).

Для сравнения — оба кабеля рядом:

Шлейфы данных ATA

На цвет не обращайте внимания 🙂 Кабель слева имеет 80 жил (проводников), справа — 40. Как мы видим из таблицы, раньше все кабели имели именно 40 жил. Но дело в том, что с ростом скоростей передачи данных резко возросла роль взаимных помех и наводок отдельных проводников в кабеле друг на друга.

Именно поэтому был введен новый кабель. Причем все дополнительные двадцать пар его проводов это — проводники заземления (Ground), чередующиеся с проводниками информационными. Такое чередование уменьшает емкостную связь между отдельными жилами и, таким образом, сокращает взаимные наводки. Да и если подумать логически, что там еще может быть, если самих контактов (штырьков) на устройстве осталось все так же 40 (без учета "ключа") — по одному на каждый провод. Последующим (более быстрым режимам) «UDMA5» и «UDMA6» также требовался 80-жильный кабель.

Обратите Ваше внимание на колодки обоих кабелей. У них есть "ключ" (пластмассовый «П» образный выступ), который исключает неправильное подключение к разъему. Мало того, у 80-ти жильного кабеля на интерфейсе отсутствует одно из центральных гнезд (на материнских платах тогда начали устанавливать специальный IDE-разъем без центрального контакта), который также выполняет функцию дополнительного "ключа".

Но, — продолжим, чтобы закончить тему о кабелях. При возросших скоростях передачи данных появляется еще одно ограничение — на максимально допустимую длину кабеля. Стандарт ATA всегда устанавливал эту границу в 46 см. В продаже, к примеру, широко распространены кабели от 44-х до 48-ми сантиметров. Встречаются также изделия откровенно превышающие рекомендованный предел и, как Вы понимаете, их использование вряд ли можно рекомендовать.

Чтобы более полно осветить тему добавлю, что бывают еще, так называемые, "круглые" ATA шлейфы.

Нестандартный IDE шлейф

Выглядят они более благородно, чем свои "плоские" собратья, но, Вы же понимаете, что это снова — не стандарт, а — изделие сторонних производителей, которое должно обеспечивать работу на соответствующих скоростях и соответствовать заявленным характеристикам. Нам надо понимать, что ключевое слово здесь — должно ! 🙂

На пути своего развития стандарт ATA преодолел много препятствий, которые были заложены именно "в железе". Сначала это было ограничение, связанное с геометрией накопителя. Стандартный PC BIOS поддерживал жестко определенное предельно возможное число головок, секторов и цилиндров из которых состоят жесткие диски (максимально адресуемый размер пространства равнялся тогда 528 мегабайтам).

Это аппаратное ограничение было преодолено введением не физической (как раньше), а логической (условной) адресации, не имеющей уже ничего общего с реальной геометрией накопителя. Появились режимы работы для "больших" дисков «Large» и его преемник — «LBA» (Logical Block Address). Это позволяло адресовать (использовать) уже 8,46 гигабайта дискового пространства.

Со временем, когда объем жестких дисков опять увеличился, было преодолено и это ограничение и планка поднялась до 32-х гигабайт, а затем (с введением 28-ми битного режима адресации) — до невиданного ранее объема в 137 гигабайт ! 🙂 Запись 28-ми битного числа, организована методом вписывания его отдельных частей в соответствующие регистры самого диска. Последние спецификации ATA поддерживали уже 48-ми битную адресацию, расширяя возможный предел адресации до 144-х петабайт (1 петабайт — 1024 терабайта).

И тут, казалось бы, когда все ограничения на объем используемых дисков были так героически преодолены выяснилось, что параллельный интерфейс ATA (в том виде, в котором он существует на данный момент) не подходит для дальнейшего развития стандарта. Попытки увеличить его пропускную способность сводятся на нет возникающими вследствие возросших скоростей наводками в кабеле. Укорачивать сам кабель? Тоже не выход из положения.

И вот тут на сцену выходит новый стандарт передачи данных — «SATA» (Serial ATA).

Новые разъемы SATA

Это — переработанный, и улучшенный вариант предыдущего стандарта. Как Вы помните, АТА — параллельный интерфейс (Parallel), в то время как SATA — последовательный (Serial). В это время и происходит переименование отживающего свое «ATA» в «PATA» (Parallel ATA), однозначно указывая, таким образом, что это — параллельный интерфейс передачи данных.

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

В стандарте «SATA» Изменился также сам принцип передачи данных. Он получил название LVDS — низковольтная дифференциальная передача сигналов (англ. low-voltage differential signaling). Повышение скорости передачи и использование самосинхронизирующихся кодов позволяют отправлять больше данных по меньшему количеству проводов, чем в случае параллельной шины.

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

  • SATA-1 150 МБ/с (мегабайт в секунду)
  • SATA-2 300 МБ/с (мегабайт в секунду)
  • SATA-3 600 МБ/с (мегабайт в секунду)

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

На данный момент (в стандартных настольных конфигурациях) Вы вряд ли увидите скорость чтения с пластин, превышающую 100-120 мегабайт в секунду. Как видите, эта цифра только сейчас подошла к пределу пропускной способности старого стандарта Ultra ATA 133 (133 мегабайта в секунду). Как мы говорили выше, скорости передачи в SATA достигаются за счет другого, а все эти "300", и "600" мегабайт в секунду (три и шесть гигабит в секунду, соответственно) — работа на перспективу (твердотельные SSD накопители), а при их чрезмерном выпячивании — бессмысленная реклама, сбивающая с толку неподготовленного пользователя.

О чем это мы? Ах, да! О преимуществах сата: надо также помнить, что каждое SATA устройство располагается на отдельном канале (контроллере), поэтому отпадает необходимость в их конфигурировании с помощью перемычек (джамперов).

Хотя, справедливости ради стоит отметить, что на ранних этапах внедрения нового стандарта на SATA жестких дисках можно было обнаружить джамперы, но они использовались редко и то лишь для принудительного перевода накопителя SATA-2 в режим SATA-1 (для совместимости с первым поколением контроллеров).

Вот так друзья, коротко мы разобрали основные понятия, связанные с интерфейсом ATA/ATAPI. Теперь смело нажимайте на ссылку "следующая", переходим к практической части материала.

О том, как правильно подключать кабели передачи данных, смотрите в видео ниже:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *