Существует два альтернативных способа реализации доступа к управляющим регистрам и буферам данных устройств ввода-вывода

Первый способ (рисунок а)

1. Каждому управляющему регистру назначается номер порта ввода-вывода, 8- или 16-разрядное целое число. При помощи такой специальной команды процессора, как

IN REG.PORT

2. Центральный процессор может прочитать управляющий регистр устройства из порта PORT в регистр процессора REG. Аналогично с помощью команды

OUT PORT.REG

3. Центральный процессор может записать содержимое своего регистра REG в управляющий регистр устройства через порт PORT.

Подобным образом работали самые древние компьютеры, включая почти все мэйнфреймы, такие как IBM 360 и его преемники.

При такой схеме адресные пространства оперативной памяти и устройств ввода-вывода не пересекаются.

Второй способ (рисунок б)

Состоит в отображении всех управляющих регистров периферийных устройств на адресное пространство памяти. Каждому управляющему регистру назначался уникальный адрес в памяти. Такая система называется отображаемым на адресное пространство памяти вводом-выводом. Обычно для регистров устройств отводятся адреса на вершине адресного пространства.

Гибридные схемы (рисунок в)

Гибридные схемы – это схемы, сочетающие отображаемый на адресное пространство памяти буферами данных и отдельными портами ввода-вывода. Эта схема довольно широко применяется, например, в совместимых с IBM PC компьютерах на базе процессоров х86 и Pentium, в которых, помимо портов ввода-вывода с номерами от 0 до 64К, адресное пространство оперативной памяти от 640К до 1М зарезервировано под буферы данных устройств ввода-вывода.

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

mov mem,AX

где mem - символическое обозначение ячейки памяти, принадлежащей сегменту данных программы..

Если процессор, выполняя команду типа


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: