Подсистема прямого доступа к памяти
Прямой доступ к памяти (ПДП) - Direct Memory Access (DMA) - используется для высокоскоростной передачи данных между устройствами ввода-вывода и оперативной памятью без вмешательства ЦП. Типичным примером использования DMA являются контроллеры дисководов и винчестера. В системах IBM PC XT/AT используется контроллер DMA Intel 8237A (рис. 13.5), обеспечивающий четыре 8-битных канала DMA. В IBM PC AT применяется каскадное включение двух контроллеров DMA (рис. 13.6): 8237A, обеспечивающего четыре 8-битных канала, и 8237A-5, обеспечивающего четыре 16-битных канала (см. табл. 13.2).
0 | Устройство на шине ISA | 8 |
1 | Контроллер интерфейса SDLC | 8 |
2 | Контроллер дисковода | 8 |
3 | Контроллер винчестера | 8 |
4 | Используется для каскадирования | 16 |
5 | Устройство на шине ISA | 16 |
6 | Устройство на шине ISA | 16 |
7 | Устройство на шине ISA | 16 |
увеличить изображение
Рис. 13.5. Структура контроллера DMA Intel 8237A
увеличить изображение
Рис. 13.6. Каскадное включение контроллеров в IBM PC AT
В активном цикле обслуживание подсистемы DMA возможно в одном из четырех режимов:
- режим одиночной передачи (Single Transfer Mode);
- режим передачи блока (Block Transfer Mode);
- режим передачи по требованию (Demand Transfer Mode);
- каскадный режим (Cascade Mode).
Для формирования 24-разрядного адреса используется регистр страницы, который определяет старшие биты адреса. Младшие 16 бит задаются регистром базы соответствующего канала контроллера. Такая схема обеспечивает передачу данных в пределах адресного пространства 16 Мбайт.
Для 8-битных каналов DMA регистр страницы определяет биты 16-23 физического адреса, а регистр базы - биты 0-15:
2 16 3 | 8 7 0 5 |
Для 16-битных каналов DMA используется только 7 бит регистра страницы, определяющих биты 17-23 физического адреса. При этом регистр базы канала задает биты 1-16. Бит A0 всегда выставляется в 0, чтобы гарантировать выровненную передачу слова памяти:
23 17 | 16 15 8 7 1 | 0 |
Подсистема DMA предназначена для работы в двух основных циклах: холостом и активном. Каждый цикл - это совокупность некоторого количества ее состояний. Подсистема DMA может иметь семь состояний, каждое из которых соответствует одному периоду синхронизации:
- SI - неактивное состояние;
- S0 - первое состояние обслуживания подсистемы DMA, возникающее по действительному запросу (DREQ);
- S1, S2, S3, S4 - рабочие состояния;
- SW - состояние ожидания.