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

Контроллер прямого доступа 8237А





Микросхема 8237А, применявшаяся в PC вплоть до первых моделей AT, представ­ляет собой четырехканальный контроллер прямого доступа к памяти, допуска­ющий каскадирование. Вторичный контроллер (8237#2) каскадно соединен с пер­вичным, при этом теряется возможность использования одного канала вторичного контроллера. Контроллер 8237А имеет 16-разрядные регистры адреса и счетчики, что обеспечивает возможность программирования передачи блока данных раз­мером до 64 Кбайт или слов. Назначение регистров контроллеров DMA, при­менительно к их адресам в пространстве ввода-вывода компьютера, приведено в табл. 12.4. Контроллер допускает довольно гибкое конфигурирование. Коррект­ное оперативное управление отдельными каналами не затрагивает общих настроек. Общее конфигурирование контроллеров (запись в регистры 008 и ODO) выполня­ет BIOS при инициализации во время теста POST; в XT тогда же программирует­ся и канал 0, применяемый для регенерации памяти. Для использования каналов устройствами шины ISA запись в регистры 008 и ODO не рекомендуется. Обмен с регистрами контроллера выполняется только однобайтными операциями вво­да-вывода. Для загрузки 16-битных значений задействуется триггер младшего/ старшего байта. По сбросу контроллера или записи любого байта по адресу OOCh (OD8h для второго контроллера) этот триггер сбрасывается, и контроллер готовит­ся к приему младшего байта. После приема этого байта триггер меняет состояние, и контроллер воспринимает старший байт, после которого триггер опять переклю­чается.




466______ Глава 12. Архитектурные компоненты IBM PC-совместимого компьютера

Таблица 12.4.Регистры контроллера DMA 8237A 8237#1

Программирование контроллера для каждого канала определяет начальный адрес, направление его модификации (инкремент/декремент), количество пересылаемых байт (слов), режим работы канала. Регистры адреса контроллеров 8237 А — 16-раз­рядные, и для расширения разрядности адреса для каждого канала имеются специ­альные регистры страниц (DMA page register), внешние по отношению к контролле­рам 8237А. В отличие от адресных регистров контроллера 8237А регистры страниц при выполнении циклов DMA не модифицируются — в них по команде процессора до начала обмена по каналу загружается требуемое значение. В PC/AT регистры страниц хранят биты А[23:16] для 8-битных каналов и А[23:17] — для 16-битных. В PC/XT регистры страниц хранили только 4 бита А[19:16]. Контроллер 16-битных каналов подключен к шине адреса со смещением на 1 бит, так что линией АО он не




12.4. Прямой доступ к памяти — DMA___________________________________ 467

управляет. При передаче по 16-битным каналам всегда А0=0 (передачи слов по четным адресам). Счетчики циклов каналов — 16-разрядные, что позволяет переда­вать блоки до 64 К байт (для 8-битных каналов) или слов (для 16-битных каналов). При инициализации в счетчик загружается число, на единицу меньшее требуемого числа циклов, так что FFFF соответствует 65 534 передачам (216). В последнем цикле передачи (когда счетчик отсчитает требуемое количество циклов) контроллер выра­батывает сигнал завершения ТС, общий для всех каналов. Этот сигнал устройство может использовать для выработки сигнала прерывания, а программа может опреде­лить, какой канал «отстрелялся», прочитав регистр состояния каналов в контролле­ре DMA. В зависимости от выбранного режима по окончании счета контроллер либо остановит работу данного канала, либо выполнит автоматическую реинициа-лизацию (автозагрузку) — восстановит прежде записанные значения регистра адре­са и счетчика циклов и будет снова готов к пересылке такого же блока данных.

ВНИМАНИЕ---------------------------------------------------------------------------------

При достижении регистром-счетчиком адреса значения FFFFh следующее его значение бу­дет OOOOh, а внешний регистр адреса страницы, естественно, останется неизменным. Таким образом, если блок начинается не с границы 64 Кбайт страницы памяти, возможно его «сво­рачивание» в кольцо. Но если для процессоров 80x86 в реальном режиме сегменты, также «сворачиваемые» в кольца, могут начинаться с адреса любого 16-байтного параграфа (грани­цы кратны 10h), то при прямом доступе эти границы кратны 10OOOh. Этот эффект обязательно необходимо учитывать при программировании прямого доступа —блок, пересекающий дан­ную границу, должен пересылаться за два сеанса циклов DMA, между которыми канал (вклю­чая и регистр страниц) должен быть реинициализирован. Эффект «сворачивания» сегментов в 16-битных каналах аналогичен, только для каналов. 5-7 эти «кольца» имеют размер 64 Кбайт слов и границы, кратные 20000h.



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

Каждый канал может работать в одном из трех логических режимов.

♦ Режим одиночной передачи (single transfer mode) — получив подтверждение DACKx#, устройство сразу снимает сигнал запроса DRQx, а контроллер DMA организует один цикл передачи. Счетчик адреса в контроллере модифициру­ется, счетчик циклов декрементируется.

♦ Режим блочной передачи (block transfer mode) — получив подтверждение
DACKx#, устройство сразу снимает сигнал запроса DRQx, а контроллер DMA организует последовательность циклов передачи до обнуления счетчика цик­лов. Если разрешена автозагрузка канала, то для пересылки следующего блока требуется повторная подача DRQx. На время передачи всего блока контроллер монопольно захватывает шину, при этом не выполняется регенерация памяти.

♦ Режим передачи по запросу (demand transfer mode) — получив подтверждение DACKx#, устройство не снимает сигнал запроса DRQx до тех пор, пока у него есть потребность в передаче. При наличии этого сигнала контроллер DMA организует последовательность циклов передачи вплоть до обнуления счетчи­ка циклов. Если сигнал запроса снят до обнуления счетчика, контроллер DMA отдает управление шине, а при последующем появлении этого запроса продол­жит обмен с того места, на котором остановился.


468_______ Глава 12. Архитектурные компоненты IBM PC-совместимого компьютера

ВНИМАНИЕ---------------------------- ——---------------- ——------------------------------------ —

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

Стандартный контроллер DMA на шине ISA с частотой 8 МГц работает на поло­винной частоте и требует для одиночной передачи не менее пяти своих тактов. Длительность одиночного цикла составляет 1,125 мкс. В блочных передачах пропуск­ная способность DMA достигает 1 Мбайт/с для 8-битных каналов и 2 Мбайт/с для 16-битных (время цикла составляет 1 мкс). На современных компьютерах кон­троллер DMA реализуется чипсетом системной платы; при сохранении программ­ной совместимости с 8237А он может работать на шине гораздо быстрее. Количе­ство тактов шины на один цикл может программироваться опциями BIOS Setup.

Процессоры х86

Все программы в IBM PC-совместимом компьютере исполняются центральным процессором, принадлежащим к семейству х86. Любое устройство для процессо­ра представляет собой лишь набор регистров (ячеек), отображенных в пространство памяти и (или) ввода-вывода, и необязательно источник аппаратных прерываний. Современные процессоры х86, работающие в защищенном режиме, имеют доволь­но сложные механизмы виртуализации памяти, ввода-вывода и прерываний, из-за которых приходится различать физические и логические пространства (адреса памяти и ввода-вывода) и события (операции ввода-вывода, прерывания). Физи­ческий адрес ячейки памяти или порта ввода-вывода — это адрес, формируемый для обращения к данной ячейке на физических шинах компьютера (системной шине процессора, шине PCI, ISA). Логический адрес — это тот адрес, который фор­мируется исполняемой программой (по замыслу программиста) для доступа к требуемой ячейке. Физическая операция ввода-вывода или обращения к памяти — это процесс (шинный цикл), во время которого генерируются электрические сиг­налы, обеспечивающие доступ к данной ячейке (порту). Логическая операция — это исполнение программной инструкции (команды) обращения к интересующей ячейке. Логическая операция не всегда порождает ожидаемую физическую опе­рацию: при определенных условиях она может блокироваться средствами защи­ты процессора, вызывая даже принудительное завершение программы, или же эмулироваться, создавая иллюзию физического исполнения.

Безопасность в защищенном режиме базируется на 4-уровневой системе приви­легий. В большинстве современных ОС ради упрощения и экономии процессор­ного времени используются только два крайних уровня — нулевой (supervisor), с неограниченными возможностями, и третий (user), с самыми жесткими ограниче­ниями. Смена уровней привилегий при исполнении программы занимает много тактов процессора, но это вынужденная плата за реализацию защиты, без которой устойчивую ОС не построить. Более подробно механизмы защиты и виртуализа­ции памяти, ввода-вывода и прерываний в процессорах х86 описаны в литературе [6, 7], здесь же изложены лишь некоторые прикладные аспекты их работы.


12.5. Процессоры х86________________________________________________ 469

 








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



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