КАТЕГОРИИ: Архитектура-(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
Выбор базовых адресов стандартных устройств (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 Стандартные каналы прямого доступа к памяти
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; Просмотров: 510; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |