Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Прямого доступа в пам'ять




Лекция 15. Порты ввода/вывода, система

15.1. Карта портов ввода/вывода

Для взаимодействия различных устройств ПЭВМ используется система портов ввода/вывода. Процессоры семейства х86 имеют раздельную адресацию памяти и портов ввода-вывода. Это разделение обеспечивается выделением специальных инструкций ввода-вывода, с помощью которых возможна передача данных между портами и регистрами процессора (или портами и памятью).

Инструкции ввода-вывода порождают шинные циклы обмена, в которых вырабатываются сигналы чтения из порта и записи в порт. На шине ISA это сигналы I0RD# и I0WR# соответственно, они и отличают пространство ввода-вывода от пространства памяти, где соответствующие операции чтения и записи вырабатывают сигналы MEMRD# и MEMWR#. На шине PCI разделение памяти и пространства ввода-вывода происходит иначе – здесь тип операции кодируется 4-байтной командой в зависимости от типа инструкции, выполняемой процессором.

В инструкциях ввода-вывода используется 16-битная адресация, что обуславливает размер пространства ввода-вывода в 64 кбайт. Для дешифрации адресов портов в оригинальном IBM PC из 16 бит использовались только младшие 10 (А0-А9), что обеспечивает обращение к портам в диапазоне адресов 0-3FFh (всего 1К портов). Старшие биты адреса хотя и поступают на шину, но устройствами игнорируются. В результате обращения по адресам, к примеру, 378h, 778h, B78h и F78h, воспринимаются устройствами одинаково. Это упрощение, нацеленное на снижение стоимости как системной платы, так и схем плат адаптеров, для шины ISA никто не отменял. Устаревшие адаптеры (legacy card) для шины ISA для старших битов адреса не имеют даже печатных ламелей на своем краевом разъеме. Впоследствии перешли к 12-битной адресации устройств шины ISA, но ее приходится применять с оглядкой на возможное присутствие устройств с 10-битной адресацией. В адаптерах для шин МСА и PCI используются все 16 бит адреса, полная дешифрация адреса применяется и в современных системных платах.

Карта распределения адресов ввода-вывода стандартных устройств PC приведена в табл. 15.1. Эта карта подразумевает 10-битную дешифрацию адреса. Естественно, что в конкретном компьютере реально присутствуют не все перечисленные устройства, но в то же время там могут оказаться другие, не попавшие в таблицу. Пространство портов можно разделить на три части: первые 255 портов предназначены для системных нужд, следующие 240 почти непрерывно следующих портов свободны и могут использоваться нестандартными устройствами; наконец, вторая половина портов зарезервирована для стандартных периферийных адаптеров и устройств.

Таблица 15.1

PC/XT AT и PS/2 Назначение
000-00F 000-00F Контроллер DMA #1 8237
020-021 020-021 Контроллер прерываний #1 – 8259А
040-043 040-05F Таймер (PC/XT: 8253, AT: 8254)
  070-07F Память CMOS и маска NMI
    Диагностический регистр
  0A0-0BF Контроллер прерываний #2 – 8259А
  0C0-0DF Контроллер DMA #2 8237A
  0F0-0FF Сопроцессор 80287
  170-177 Контроллер НЖМД #2 (IDE #2)
  1F0-1F7 Контроллер НЖМД#1 (IDE #1)
2F8-2FF 2F8-2FF COM2
320-32F   Жесткий диск XT
  338-33F COM3
378-37F 378-37F Параллельный порт LPT1 (LPT2 при наличии MDA)
3C0-3DF 3C0-3DF VGA
3D0-3DF 3D0-3DF CGA/EGA
  3E8-3EF COM3
3F0-3F7 3F0-3F7 Контроллер НГМД #1
  3F6-3F7 Порты команд IDE #1
3F8-3FF 3F8-3FF СОМ1

Выбор базовых адресов стандартных устройств (3F8h, 3F0h, 378h и т.п.) объясняется стремлением к экономии. Эти адреса выбирались так, чтобы в их дешифрации участвовало максимальное количество единиц и минимальное – нулей (логические схемы «И-НЕ» применяются чаще, чем схемы «ИЛИ», а применение более сложных схем для дешифрации было нежелательно).

Каждой шине назначается своя область адресов ввода, и дешифратор адресов, расположенный на системной плате, при чтении открывает соответствующие буферы данных, так что реально считываться будут данные только с одной шины. При записи в порты данные (и сигнал записи) могут распространяться и по всем шинам компьютера (широковещательно). В стандартном распределении адреса 0h-0FFh отведены для устройств системной платы. При наличии (и разрешении работы) периферийных устройств на системной плате чтение по этим адресам не распространяется на шины расширения. Для современных плат со встроенной периферией и несколькими шинами (ISA, PCI) распределением адресов управляет BIOS через регистры конфигурирования чипсета, а в иерархии шин PCI (и PCI-E) диапазоны адресов задаются программированием мостов.

15.2. Организация прямого доступа в память

Прямой доступ к памяти (Direct Memory Access, DMA) – это обмен между системной памятью (ОЗУ) и устройством, выполняемый без непосредственного участия процессора. Обмен осуществляет контроллер прямого доступа. Контроллер имеет два основных режима: пассивный при работе с CPU и активный при выполнении циклов ПДП. В пассивном режиме производится программирование контроллера (в частности, его инициализация), а также анализ состояния его регистров. Контроллер может быть запрограммирован на одиночную передачу, блочную передачу, передачу по требованию, а также на режим "память-память" (что реализовано в AT). Подготовка к ПДП состоит в записи адресов в страничные регистры и программировании соответствующих каналов контроллера DMA.

Процесс ПДП обеспечивается аппаратно с помощью контролера DMA без участия микропроцессора. Для устройств ISA в архитектуре PC/AT присутствует централизованный контроллер DMA, совместимый с «исторической» микросхемой i8237A (контроллер, предназначеный для ПДП по 4-м независимым каналам с положительным или отрицательным приращением адреса и с объемом передачи до 64Кбайт). Для устройств шины PCI (и всех ее «родственников») контроллер является частью устройства – мастера шины (bus master). Штатного централизованного контроллера DMA, как это было в архитектуре ISA, для шины PCI нет.

Многоканальный контроллер DMA, программируемый по командам от центрального процессора, присутствует на системной плате PC-совместимого компьютера. Первоначально он использовался устройствами шины ISA, теперь он используется интегрированной традиционной периферией: контроллером НГМД, портами LPT и СОМ и некоторыми встроенными аудиосредствами. Процессор при обмене по DMA занят только инициализацией контроллера, которая сводится к записи в его регистры нескольких байтов, задающих начальный адрес и размер пересылаемого блока памяти, направление и режим обмена. Затем обмен производят системная шина и контроллер DMA, а инициатором обмена выступает устройство, сигнализирующее контроллеру DMA о своей готовности к обмену. Во время операций DMA процессор может продолжать работу, если выбранный режим обмена не занимает всей пропускной способности шин, задействованных процессором в данный момент (шины памяти, шины PCI, через которые подключается ISA в современных компьютерах). Контроллер DMA можно считать простейшим сопроцессором ввода-вывода, разгружающим центральный процессор от рутинных операций обмена.

В системах PC/AT используются два контроллера i8237A и, соответственно, доступны 7 каналов ПДП: четыре 8-битных (номера 0-3) и три 16-битных (5-7), подключенные к первичному и вторичному контроллерам соответственно. Канал 4 требуется для каскадирования (соединения контроллеров), канал 2 – для контроллера НГМД. Контроллеры DMA программно совместимы с микросхемами i8237, используемыми в первых моделях PC/XT и AT. Стандартные каналы и адреса регистров приведены в табл. 15.2.

Таблица 15.2

Стандартные каналы прямого доступа к памяти

Номер канала DМА#                
Разрядность, байт   2 с четного адреса
Макс. размер блока 64 Кбайт 128 Кбайт, четный
Граница блока Кратна 10000h Кратна 20000h
Регистр страниц 8 бит А16-А23 7 бит А17-А23
Адреса регистров:  
– страниц         08F 08В    
– адреса         0С0 0С4 0С8 0СС
– счетчика         0С2 0С6 0СА 0СЕ

16-битные каналы DMA 5-7 обеспечивают передачу только 16-битных слов по четным адресам. Они могут быть использованы и интеллектуальными устройствами для прямого управления шиной (bus mastering) ISA, при этом контроллер DMA, фактически, лишь играет роль арбитра шины. Интеллектуальный контроллер может выполнять более эффективные процедуры обмена, чем стандартный контроллер DMA. Однако архитектура шины ISA ограничивает доступное пространство памяти областью в 16 Мбайт, что по нынешним меркам маловато. «Заботливые» операционные системы (например, Novell NetWare) для таких адаптеров позволяют под буферы резервировать область в пределах младших 16 Мбайт.

В контроллерах 8237А регистры адресов и счетчики передач являются 16-разрядными. Для расширения разрядности адреса применяются внешние регистры страниц, загружаемые программно (и не модифицируемые автоматически). Это сковывает свободу использования контроллера: передача не должна пересекать границ 64-килобайтных (для 8-битных каналов) или 128-килобайтных (для 16-битных) страниц. Стандартные регистры страниц расширяют адрес только до 24 бит (адресуемо только 16 Мбайт ОЗУ). Ограничения на доступную память для режима DMA в новых машинах могут быть сняты применением расширенных регистров страниц, но об этих не совсем стандартных возможностях, конечно же, должно «знать» и программное обеспечение.

Для интерфейса ПУ каждый канал DMA представляется парой сигналов: запрос обмена – DRQx, подтверждение обмена – DACKx#. В операциях по каналу DMA адресуется текущая ячейка памяти, адрес порта не фигурирует, а используется только пара сигналов, соответствующая номеру канала.

Стандартный контроллер DMA на шине ISA с частотой 8 МГц работает медленно, даже в блочных передачах пропускная способность не превышает 1Мбайт/с для 8-битных каналов и 2Мбайт/с для 16-битных. Программно-управляемый ввод-вывод, выполняемый инструкциями REP INS/0UTS на той же шине может работать в два раза быстрее. По этой причине для обмена данными с контроллерами жестких дисков стандартные каналы DMA использовали редко, предпочитая обмен PIO.

С появлением шин МСА и EISA появился новый контроллер DMA, программно-совместимый с контроллером AT, но имеющий и дополнительные возможности конфигурирования. Он может работать в более производительных режимах (Туре А, В, С) со скоростями до 33 Мбайт/с. В системах PCI для обмена с устройствами системной платы возможно использование контроллеров DMA с типом Type F (режим одиночной передачи или передачи по запросу и только с инкрементом адреса).

По стандартным каналам DMA возможно обращение как к системной памяти (расположенной на системной плате), так и к памяти, подключенной к шинам ISA и PCI. Обращение к 8-разрядной памяти, расположенной на адаптерах, допустимо только по 8-битным каналам (преобразование циклов выполнять некому). Однако ПУ, использующие эти каналы, могут располагаться лишь в слотах ISA/EISA или на системной плате (контроллер НГМД, LPT-порт в режиме ЕСР или Fast Centronics, аудиокодек). Если эти устройства системной платы используют каналы DMA, то данные каналы становятся недоступными для абонентов шины ISA. Контроллерам АТА, расположенным на системной плате, стандартные каналы DMA не требуются.

На время переходного периода, связанного с «изживанием» шины ISA, потребовалась возможность эмуляции каналов DMA для устройств шины PCI, что было обусловлено требованием совместимости звуковых карт PCI с существующим программным обеспечением, которое во многих случаях работает с аппаратными средствами напрямую, без каких-либо драйверов. Фактический стандарт на программную модель звуковой карты SB 16 подразумевает доставку цифрового потока по каналу DMA.

Существуют два механизма эмуляции каналов DMA: PC/PCI и DDMA. Механизм PC/PCI был разработан фирмой Intel для обеспечения возможности использования слотов ISA блокнотными ПК, подключаемыми к док-станции по шине PCI. Альтернативное решение – механизм DDMA (Distributed Direct Memory Access – распределенный прямой доступ к памяти). Как известно, контроллеры DMA для шины ISA располагаются на системной плате, и управление несколькими каналами выполняется через одни и те же регистры. DDMA позволяет «расчленить» стандартный контроллер и отдельные его каналы эмулировать средствами карт PCI. Оба этих механизма реализуемы только как часть моста между первичной шиной PCI и шиной ISA, поэтому их поддержка может обеспечиваться (или не обеспечиваться) лишь на системной плате и разрешаться в CMOS Setup. Для других карт расширения (например, адаптеров локальных сетей, контроллеров интерфейсов) задача эмуляции DMA не возникает, поскольку с ними ПО, как правило, работает через драйверы, поставляемые вместе с этими картами.

Контрольные вопросы

1. Что такое порты ввода/вывода?

2. Дайте классификацию портов ввода/вывода.

3. Может ли функционировать компьютер без прямого доступа в память?

4. Что дает применение ПДП?

5. Каково назначение контроллера ПДП.

 

 




Поделиться с друзьями:


Дата добавления: 2014-12-07; Просмотров: 498; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.027 сек.