Пространство ввода-вывода

Общие сведения о портах ввода-вывода. В компьютерах любое устройство (например, контроллер, установленный на карте расширения или на материнской плате), за исключением оперативной памяти, рассматривается центральным процессором как периферийное. Обмен данными между центральным процессором и периферийными устройствами осуществляется через порты ввода-вывода. Конструктивно порт ввода-вывода – это буферное устройство или регистр контроллера, процессора обработки сигналов и т.п., которые непосредственно подключены к шине ввода-вывода компьютера. Порты ввода-вывода предназначены для расширения возможностей компьютера путем подключения к ним разнообразных внутренних и внешних устройств, например:

  • принтер, подключенный к параллельному порту, позволяет вывести на бумагу результаты работы;
  • • мри подключении сканера к параллельному порту можно ввести в компьютер графические изображения или текст непосредственно с листа бумаги и преобразовать их в необходимый формат для дальнейшей обработки;
  • • подключение накопителей на гибких магнитных дисках к системной плате обеспечивает обмен данными (с помощью дискет) между компьютерами;
  • модем, соединенный с последовательным портом, обеспечивает непосредственную связь по телефонным линиям с другими компьютерами, находящимися на больших расстояниях.

Большинство компьютеров имеют хотя бы два последовательных порта и один параллельный. Последовательные порты обозначаются как СОМ 1 и COM2, а параллельный – как LPT1. В компьютере можно установить до 4 последовательных (СОМ1 – COM4) и 3 параллельных (LPTI – LPT3) портов.

Порты ввода-вывода позволяют установить в компьютере связь между устройствами и программным обеспечением. Они подобны двусторонним радиоканалам, так как обмен информацией в ту и другую сторону происходит по одному и тому же каналу.

Адресное пространство портов. Для управления обменом данными между устройствами компьютера каждому порту ввода- вывода присваивается свой уникальный номер – адрес порта. В персональных компьютерах для адресации портов ввода-вывода используется 16-разрядный код. Поэтому существует 216 = 65 536 портов, пронумерованных от OOOOh до FFFFh. Стандартный диапазон адресов портов ввода-вывода для IBM-совместимых компьютеров со- ставляет 0–3FFh. Сюда входят порты контроллеров клавиатуры, жестких и гибких дисков, видеоадаптеров EGA/VGA, звуковых карт, последовательных и параллельных интерфейсов, игровых портов и любого другого периферийного оборудования. Периферийное устройство способно использовать несколько портов ввода-вывода. Иногда их количество может достигать нескольких десятков, например:

  • • контроллер параллельного интерфейса, к которому обычно подключается принтер, имеет три регистра (регистр вывода данных, регистр состояния и регистр управления), адресуемых через свои порты ввода-вывода;
  • • контроллер последовательного интерфейса содержит 10 регистров, адресуемых через 7 портов ввода-вывода.

Отметим, что реально можно использовать адреса вплоть до FFFFh. Например, порты процессора WT-синтеза звуковой карты имеют адреса в диапазоне 620h–E23h.

Адресное пространство памяти не совпадает с адресным пространством портов ввода-вывода, что дает возможность использовать полный объем памяти и полный набор портов ввода-вывода. Хотя порты ввода-вывода обозначаются шестнадцатеричными кодами, подобными адресам памяти, однако они не являются памятью. Различие состоит в том, что данные, посланные по адресу памяти AAAAh, будут сохранены в модуле памяти. Если же данные посланы по адресу AAAAh порта ввода-вывода, то они попадают в адресуемый канал и любое устройство, прослушивающее этот канал, может принять их. Если этот адрес порта не прослушивается никаким устройством, то данные достигнут конца шины и будут поглощены ее нагрузочными резисторами.

Системная плата и набор микросхем системной логики обычно используют адреса портов ввода-вывода от Oh до FFh, а все другие устройства – от 100h до FFFFh. В табл. 3.1 приведены адреса стандартных портов ввода-вывода. Более подробные таблицы имеются в [10].

Особенности адресации. Адресация портов осуществляется центральным процессором при выполнении той или иной программы. Чтобы не указывать конкретный адрес каждого порта ввода- вывода периферийного устройства при программировании, а также для оперативного изменения адреса в зависимости от конкретной конфигурации компьютера, используют понятие базовый адрес порта ввода-вывода (Base Address ln/Out). Базовый адрес присваивается каждому периферийному устройству и соответствует младшему адресу из группы портов (обычно адресу порта регистра данных). Адресация остальных портов периферийного устройства осуществляется путем задания смещения (целое число) относительно базового адреса. Например, для адресации порта регистра состояния в контроллере параллельного интерфейса необходимо значение базового адреса порта LPT увеличить на единицу.

Следует иметь в виду, что базовым адресом ввода-вывода периферийного устройства может быть любой адрес из диапазона адресов портов ввода-вывода. Система BIOS резервирует ряд диапазонов адресов портов ввода-вывода стандартных аппаратных устройств, которые не могут быть использованы другими периферийными устройствами (табл. 3.1). Например, под интерфейс LPT1 резервируется диапазон адресов 378h – 37Eh, в пределах которого можно выбирать базовый адрес порта ввода-вывода. Тогда будет исключена возможность конфликтов при адресации портов на аппаратно-программном уровне. Поскольку для управления и контроля LPT1 используются три регистра, в пределах этого диапазона адресов имеется 5 возможных значений базового адреса – 378h-s-37Ch. Диапазон адресов 2001н-207й зарезервирован под игровой порт для джойстика, хотя фактически из 8 адресов обычно используется только один – 200h или 20 lh. Подобная ситуация наблюдается и для других устройств.

Организация обращения к портам ввода-вывода. Для обращения программы к пространству ввода-вывода предназначены всего четыре команды процессора:

  • • IN – ввод из порта в регистр процессора;
  • • OUT – вывод в порт из регистра процессора;
  • • INS – ввод из порта в элемент строки памяти;
  • • OUTS – вывод элемента из строки памяти в порт.

Команды INS и OUTS с префиксом повтора REP обеспечивают быструю пересылку блоков данных между портом и памятью.

Для разделения пространства ввода-вывода и памяти используются различные средства:

  • • на шине ISA с помощью сигналов IORD# / IOWR# соответственно чтения порта / записи в порт отличают пространство ввода-вывода от пространства памяти. В последнем случае для чтения и записи используются сигналы MEMRD# и MEMWR#, где # – логическое отрицание;
  • • на шине PCI такое разделение осуществляется с помощью 4-байт- ного кода, зависящего от типа команды (или операции), выполняемой процессором.

Для обмена данными с портами широко используется программированный ввод-вывод (Programmed Input/Output – PIO), при котором с помощью строковых команд передаются слова с разрядностью 8, 16 или 32 бита. Слово может передаваться за один или несколько шинных циклов с указанием соответствующего нарастающего адреса в каждом цикле обращения к памяти. Шинные циклы обмена инициируются в процессе выполнения команды ввода-вывода. Количество циклов зависит от выравненности адреса по границе слова и разрядности данных используемой шины. Для уменьшения их числа следует выравнивать адреса 16-битных портов по границе слова, а 32-битных – по границе двойного слова.

Скорость обмена PIO превышает скорость обмена по стандартному каналу прямого доступа к памяти (Direct Memory Access – DMA). Однако обмен по каналу DMA в отличие от PIO почти не занимает процессорного времени.

Для дешифрации адресов портов из 16 бит используются только младшие 10 (А9...А0) разряды, что обеспечивает обращение к портам

Таблица 3.1

АТ и PS/2

PC/XT

Назначение

000-00F

000-00F

Контроллер DMA #1 – 8237

010-01F

PS/2 – расширение DMA #1

020-021

020-021

Контроллер прерываний #1 – 8259А

040-05F

040-043

Таймер (PC/XT: 8253, АТ: 8254)

060

060

Диагностический регистр POST (только запись)

060-063

Системный интерфейс 8255

060, 064

Контроллер клавиатуры АТ 8042

061

Источники NMI и управление звуком

070-07F

Память CMOS и маска NMI

080

Диагностический регистр

080-08F

080-083

Регистры страниц DMA

090-097

PS/2 микроканальный арбитр

ОАО

Маски NMI

0А0-0ВF

Контроллер прерываний #2 – 8259А

0С0-0DF

Контроллер DMA #2 8237А-5

0F0-0FF

Сопроцессор 80287

100-IEF

PS/2 управление микроканалом

170-177

Контроллер НЖМД #2 (1DE42)

1F0-1F7

Контроллер НЖМД #1 (IDE# 1)

200-207

200-20F

Игровой адаптер

210-217

Блок расширений

238-23F

COM4

278-27F

278-27F

Параллельный порт LPT2 (LPT3 при наличии MDA)

2А2-2АЗ

Часы MSM4832IRS

2C0-2DF

2C0-2DF

EGA #2

2Е0-2Е7

COM4

2E8-2EF

COM4

2F8-2FF

2F8-2FF

COM2

300-31F

Плата прототипа

320-32F

Жесткий диск XT

338-33F

COM3

370-377

Контроллер НГМД #2

376-377

Порты команд IDE#2

378-37F

378-37F

Параллельный порт LPTI (LPT2 при наличии MDA)

380-38F

380-38F

Синхронный адаптер SDLC/BSC #2

3A0-3AF

3А0-3А0

Синхронный адаптер BSC #1

3В0-ЗВВ

ЗВО-ЗВВ

Монохромный адаптер (MDA)

3В4-ЗС9

PS/2 видеосистема

3BC-3BF

3BC-3BF

Параллельный порт LPT1 платы MDA

3C0-3CF

3C0-3CF

EGA #1

3C0-3DF

3C0-3DF

VGA

3D0-3DF

3D0-3DF

CGA/EGA

ЗЕ0-ЗЕ7

COM3

3E8-3EF

COM3

BF0-3F7

3F0-3F7

Контроллер НГМД #1

BF6-3F7

Порты команд IDE# 1

3F8-3FF

3F8-3FF

СОМ1

Примечание: NMI – немаскируемое прерывание; DMA – прямой доступ к памяти.

в диапазоне адресов 0...3FFh. Старшие биты адреса, хотя и поступают на шину, устройствами игнорируются. В результате обращения по таким адресам, как 378h, 778h, B78h и F78h, будут восприниматься устройствами одинаково. В адаптерах для шин MCA и PCI используются все 16 бит адреса, полная дешифрация адреса осуществляется и в современных системных платах. В табл. 3.1 приведена карта распределения адресов ввода-вывода стандартных устройств. Эта карта подразумевает 10-битную дешифрацию адреса. Выбор базовых адресов стандартных устройств (3F8h, 3F0h, 378h и т.п.) объясняется тем, что в их дешифрации участвует максимальное количество единиц и минимальное – нулей. Поэтому в дешифраторах применяются более простые логические схемы И–НЕ, чем схемы ИЛИ.

 
< Пред   СОДЕРЖАНИЕ     След >