WikiDer > Intel 8237
Intel 8237 это прямой доступ к памяти (DMA) контроллер, часть MCS 85 семейство микропроцессоров. Он обеспечивает передачу данных между памятью и вводом-выводом с уменьшенной нагрузкой на главный процессор системы, обеспечивая память управляющими сигналами и информацией об адресе памяти во время передачи DMA.
8237 - это четырехканальное устройство, которое может быть расширено за счет включения любого количества входных каналов DMA. 8237 может передавать DMA со скоростью до 1,6 мегабайт в секунду. Каждый канал способен адресовать полный раздел памяти размером 64 Кбайт и может передавать до 64 Кбайт за одно программирование.[1]
Один 8237 использовался в качестве контроллера DMA в оригинальном IBM PC и IBM XT. В IBM PC AT добавил еще 8237 в конфигурации главный-подчиненный, увеличив количество каналов DMA с четырех до семи.[2] Более поздние IBM-совместимые персональные компьютеры могут иметь наборы микросхем, которые имитируют функции 8237 для обратной совместимости.
Режимы
8237 работает в четырех различных режимах, в зависимости от количества байтов, передаваемых за цикл, и количества используемых микросхем:
- Одиночный - один цикл DMA, один цикл ЦП перемежается, пока счетчик адреса не достигнет нуля.[3]
- Блокировка - передача продолжается до тех пор, пока счетчик слов не достигнет нуля или пока не станет активным сигнал EOP.[3]
- Требование - передачи продолжаются до тех пор, пока TC или EOP не станет активным или DRQ не станет неактивным. ЦП разрешается использовать шину, когда не запрашивается передача.[3]
- Каскад - используется для каскадирования дополнительных контроллеров DMA. DREQ и DACK сопоставляются с HRQ и HLDA от следующего чипа, чтобы установить цепочку приоритетов. Фактические сигналы шины обрабатываются каскадным чипом.[3]
Возможна передача из памяти в память. Это означает, что данные могут быть перенесены с одного запоминающего устройства на другое запоминающее устройство. Регистр текущего адреса канала 0 является источником для передачи данных, а канал 1, и передача завершается, когда регистр текущего счетчика слов становится равным 0. Канал 0 используется для обновления DRAM на устройствах, совместимых с IBM PC.[3]
В режиме автоинициализации адрес и значения счетчика восстанавливаются после приема сигнала конца процесса (EOP). Это происходит без вмешательства процессора. Используется для повтора последней передачи.[3]
Терминальный счетчик (TC) сигнализирует об окончании передачи на карты ISA. В конце передачи произойдет автоматическая инициализация, настроенная для этого.
Одиночный режим
В одиночном режиме за один запрос передается только один байт. При каждой передаче счетный регистр уменьшается, а адрес увеличивается или уменьшается в зависимости от программирования. Когда счетный регистр достигает нуля, счетчик терминала TC сигнал отправляется на карту.[4][5]
Запрос DMA DREQ должен быть поднят картой и удерживаться активным до тех пор, пока это не будет подтверждено подтверждением DMA DACK.[4]
Блокировать режим передачи
Перевод активируется DREQ который может быть деактивирован после подтверждения DACK. Передача продолжается до конца процесса EOP (внутренний или внешний) активируется, что запускает счетчик клемм TC на карту. В этом режиме можно запрограммировать автоматическую инициализацию.[4]
Режим передачи спроса
Перевод активирован DREQ и признан DACK и продолжается до тех пор, пока TC, внешний EOP или DREQ становится неактивным. Только TC или внешний EOP может активировать автоинициализацию, если это запрограммировано.[4]
Внутренние регистры
В 8237 для передачи данных используются следующие внутренние регистры:
- Регистр базового адреса: для хранения начального адреса, откуда будет происходить передача данных.
- Регистр подсчета базовых слов: для хранения количества выполняемых передач
- Регистр текущего адреса: для сохранения текущего адреса, откуда передаются данные.
- Текущий регистр подсчета слов: для хранения количества переводов, оставшихся для выполнения.
- Регистр временного адреса: для хранения адреса данных во время передачи из памяти в память
- Регистр временного подсчета слов: для хранения количества передач, которые должны быть выполнены при передаче из памяти в память.
- Регистр режима: 8-битный регистр, в котором хранится используемый канал, режим работы, то есть режим передачи, и другие параметры передачи.
- Регистр команд: 8-битный регистр, который инициализирует канал, который будет использоваться для передачи данных
- Регистр запроса: 8-битный регистр, используемый для указания того, какой канал запрашивает передачу данных.
- Регистр маски: 8-битный регистр, используемый для маскировки определенного канала от запроса услуги DMA.
- Регистр состояния: 8-битный регистр, используемый для указания того, какой канал в настоящее время находится в режиме DMA, и некоторых других параметров.
Использование IBM PC
Как член семейства устройств Intel MCS-85, 8237 является 8-битным устройством с 16-битной адресацией. Однако он совместим с 8086/88 микропроцессоры. Модели IBM PC и PC XT (типы компьютеров 5150 и 5160) имеют процессор 8088 и 8-битную архитектуру системной шины; последний подключается непосредственно к 8237, но 8088 имеет 20-битную адресную шину, поэтому четыре дополнительных 4-битных адресных защелки, по одной для каждого канала DMA, добавляются вместе с 8237 для увеличения счетчиков адресов. Однако, поскольку эти внешние защелки отделены от счетчиков адресов 8237, они никогда не увеличиваются или не уменьшаются автоматически во время операций DMA, что делает невозможным выполнение операции DMA через границу адреса в 64 КиБ. Попытки пересечь границу 64 КиБ при передаче DMA будут выполняться в пределах одного блока памяти размером 64 КБайт. (Например, если канал DMA и связанная с ним защелка адреса были запрограммированы на передачу 256 байтов по возрастающим адресам, начиная с адреса 0x3FF8C, вместо передачи на адреса от 0x3FF8C до 0x4008B, данные будут передаваться на адреса от 0x3FF8C до 0x3FFFF, а затем на адреса от 0x30000 до 0x3008B.)
IBM PC AT (тип машины 5170) и полностью совместимые устройства используют процессор 80286 и 16-битную архитектуру системной шины. В дополнение к 8237 от моделей ПК и XT, добавлен второй, каскадный 8237, для передачи 16-битного DMA. Это возможно, несмотря на то, что 8237 является 8-битным устройством, потому что 8237 выполняет передачи между портом ввода / вывода и памятью как «пролетные» передачи, при которых данные помещаются на шину исходной памятью или вводом / выводом. Порт вывода и прямое чтение одновременно портом ввода-вывода или памятью назначения без обработки 8237. Для этого режима передачи ширина шины данных по существу не имеет значения для 8237 (пока она подключен к шине данных шириной не менее 8 бит для программирования 8237 регистров). Второй 8237 в ПК класса AT предоставляет три 16-битных канала DMA (его каналы с 1 по 3, названные каналами с 5 по 7 в AT ПК); его канал 0 (названный каналом 4 в AT PC) используется в каскадном режиме для подключения 8237 для 8-битного прямого доступа к памяти в качестве «ведомого» в каскадном устройстве; 8237, обеспечивающий 16-битные каналы, является «главным». Чтобы он мог адресовать 16-битные слова, он подключен к адресной шине таким образом, что он считает даже адреса (0, 2, 4, ...) вместо отдельных адресов. Как и первый 8237, он дополнен четырьмя регистрами расширения адреса. В ПК класса AT все восемь регистров увеличения адреса имеют ширину 8 бит, так что можно указать полные 24-битные адреса - размер адресной шины 80286. Передача DMA по любому каналу по-прежнему не может пересечь границу в 64 КБ. (16-битный DMA ограничен 32 768 16-битными словами, даже если канал DMA может вести счет до 65536 адресов; старший бит счетчика адресов из 16-битного канала DMA игнорируется.) Поскольку память 8237 - Режим DMA в память работает путем передачи байта из исходной ячейки памяти во внутренний временный 8-битный регистр в 8237, а затем из временного регистра в целевую ячейку памяти, этот режим не может использоваться для 16-битной памяти. в память DMA, так как временный регистр недостаточно велик. Кроме того, 16-битный DMA с преобразованием памяти в память потребует использования канала 4, что противоречит его использованию для каскадирования 8237, который обрабатывает 8-битные каналы DMA. Однако на AT 8-битный канал DMA 0 больше не используется для обновления DRAM, он был заменен специализированной логикой обновления, поэтому должна быть возможность выполнять 8-битный DMA с памятью в память с использованием каналов 0 и 1 без прерывание обновления DRAM.
Дизайн DMA на основе 8237 в совместимых с ПК AT не был обновлен с переходом на 32-разрядные процессоры и 32-разрядные архитектуры системной шины. Следовательно, ограничение на этих машинах состоит в том, что контроллеры DMA 8237 с их регистрами расширения "страницы" сопутствующего адреса могут адресовать только 16 МБ памяти, в соответствии с исходной конструкцией, ориентированной на ЦП 80286, который сам имеет такое же ограничение адресации.[6] Это означает, что для других областей памяти данные должны быть сначала переданы с помощью DMA от устройства ввода-вывода в промежуточный буфер в первых 16 МиБ физического адресного пространства, а затем перемещены ЦП в последнюю память; или, в другом направлении, он должен быть передан процессором из начальной памяти в промежуточный буфер перед передачей по DMA из этого буфера в устройство ввода-вывода. Эта техника называется "буфер отказов". В общем, он теряет любое общее преимущество скорости, связанное с DMA, но это может быть необходимо, если к периферийному устройству требуется доступ с помощью DMA из-за высоких требований к синхронизации или негибкости аппаратного интерфейса.
в PS / 2 В серии компьютеров IBM обновила оборудование DMA для поддержки 32-битных данных и адресов в некоторых системах с процессорами 80386, но они сделали это, заменив 8237 контроллером DMA новой конструкции. Новый дизайн включает режим совместимости 8237 для обратной совместимости с PC AT.
Интеграция в чипсеты
Хотя это устройство может не выступать в качестве отдельного компонента в современных персональных компьютерах, оно присутствует в наборах микросхем системного контроллера. Например, интегрированный системный периферийный контроллер 82875P ISP имеет два внутренних контроллера прямого доступа к памяти, запрограммированных почти так же, как 8237.[7]
Варианты
Номер модели | Тактовая частота | Скорость передачи[список 1] | Цена (долл. США)[список 2] |
---|---|---|---|
8237 | 3 МГц | ||
8237-2 | 5 МГц | 1,6 м / с | $20.00[8] |
Смотрите также
- Intel 8284 - Генератор часов
- Intel 8288 - Контроллер шины
- 8250 UART - Асинхронный последовательный контроллер (EIA-232)
- Intel 8253 - Программируемый интервальный таймер (PIT)
- Intel 8255 - Программируемый периферийный интерфейс (PPI)
- Intel 8259 - Программируемый контроллер прерываний (PIC)
- Параллельный ATA (P-ATA)
- Стандартная отраслевая архитектура (ЭТО)
- Базовый адрес ввода / вывода на IBM PC совместимых
Рекомендации
- ^ Микропроцессоры Intel от Барри Б. Брея
- ^ Н. МАТИВАНАН (2007). ИНСТРУМЕНТЫ НА ОСНОВЕ ПК: КОНЦЕПЦИИ И ПРАКТИКА. PHI Learning Pvt. Ltd. С. 227–229. ISBN 978-81-203-3076-4.
- ^ а б c d е ж aluzina.org - Intel 8237 / 8237-2 Высокая производительность. Программируемый контроллер DMA (.pdf) техническое описание
- ^ а б c d books.google.com - Современные микропроцессоры и периферийные устройства, 2006 с312 / 313
- ^ pinouts.ru - Распиновка и разводка шины ISA, 2008-10-20
- ^ brokenthorn.com - Серия "Разработка операционных систем"
- ^ https://pdos.csail.mit.edu/6.828/2012/readings/hardware/8237A.pdf
- ^ Корпорация Intel, «Компоненты микрокомпьютера: новый контроллер DMA Intel 8237 обеспечивает ответ DMA 5 МГц для систем на базе 8088 и 8085A-2», Intel Preview, май / июнь 1979 г., стр. 9.
внешняя ссылка
- DMA: что это такое и как работает Справочник разработчика FreeBSD. 1997 (интернет-архив).