Скачиваний:
23
Добавлен:
11.05.2015
Размер:
998.91 Кб
Скачать

5.7.5. Дополнительная память (Expanded Memory Specification — ems)

Хотя адресная шина процессоров XT была только 20 бит, допускалась установка дополнительной памяти теоретически неограниченного объема. Однако дополнительная память в этом случае была «видна» в одном или нескольких свободных окнах UMA фрагментами по 64 кБ, а необходимый фрагмент выбирался специальными программными переключателями (регистром управления памятью). Физически такая память представляла собой обычную карту с микросхемами памяти и управления.

В дальнейшем, при расширении адресного пространства последующих процессоров, от дополнительной памяти в виде карт отказались, а вышеописанный метод доступа теперь эмулируется драйвером EMM386.EXE для устаревших программ, не «умеющих» использовать современный вариант адресации.

EMM386.EXE требует для своей работы драйвера HIMEM.SYS и фактически является для последнего не более, чем одним из «клиентов», т.е. в машинах на процессорах 80386 и выше EMS память — не более, чем фикция, это лишь способ обращения к XMS памяти.

5.8. Обмен информацией с периферийными устройствами

5.8.1. Порты ввода/вывода

Для связи с внешними устройствами процессоры 80x86 используют шину данных и 16 бит шины адреса. Команды обращения к внешним устройствам out и in позволяют записать в порт устройства или прочитать из него 8, 16 или 32 (в зависимости от процессора) бита информации. При обращении ко внешним устройствам процессор вместо сигналов «обращения к памяти» формирует сигналы «обращения к портам».

С учетом используемой разрядности шины адреса нетрудно рассчитать, что всего может поддерживаться 65536 портов ввода/вывода. Однако в устройствах AT зачастую используется несколько модифицированный способ обращения к регистрам. Этот способ подразумевает наличие двух портов, один из которых адресный, а другой  порт данных. Для обращения к некоторым данным требуется сначала занести в порт адреса номер регистра в пределах устройства, а затем прочитать(записать) значение из(в) порта данных.

Прямой способ (один адрес — один регистр) использует, например, порт принтера, последовательные порты; модифицированный (регистр адреса и данных) — звуковую карту AdLib и совместимые с ней; смешанный способ (несколько адресных регистров и несколько регистров данных) — видеокарты VGA и EGA. В них различные блоки (система разверток, блок ЦАП, блок управления адресом, выборки и т. д.) используют собственные пары регистров адреса/данных.

Не все регистры, доступные для чтения, допускают запись (устройство может просто проигнорировать ее), а также не все регистры, доступные для записи, возвращают записанные значения при чтении. Многие устройства при записи любят подставлять регистры, которые по логике работают «на запись», а при чтении по этому же адресу Вы прочитаете значение совершенно другого регистра, который предназначен в данном устройстве для чтения.

Другая особенность некоторых устройств  перекрывающиеся регистры. Например, контроллер IDE по адресу 1F0h имеет 16-битный (в более поздних контроллерах — 32-битный) регистр данных, а по адресу 1F1h — 8-битный регистр ошибок (при чтении) и регистр свойств (при записи). Таким образом, старшая часть регистра данных читается, как бы, из порта по адресу 1F1h, фактически же контроллер различает 16-битный запрос к 1F0h и 8-битный запрос на 1F1h и подставляет различные регистры.

С появлением шины PCI адреса портов устройств не обязаны быть фиксированными. Для старых устройств фиксация сохраняется из соображений совместимости, однако все новые устройства имеют неопределенные адреса. Программа, использующая их, должна обратиться к специальным процедурам BIOS и запросить информацию о текущей настройке устройства.

В приведенной ниже таблице описан ряд портов, наследуемых современными компьютерами еще со времен IBM PC/XT, AT и PS/2.

AT/PS-2

PC/XT

Описание

000-01F

000-00F

Первый DMA-контроллер

020-03F

020-021

Первый контроллер прерываний

040-05F

040-043

Таймер

060-063

Набор различных устройств

060-06F

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

070-07F

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

080

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

080-08F

080-083

DMA-контроллер

0A0-0BF

Второй контроллер прерываний

0C0-0DF

Второй DMA-контроллер

0F0-0FF

Сопроцессор

170-177

Жесткий диск № 2

1F0-1F7

Жесткий диск № 1

200-207

200-20F

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

238-23F

Стык RS-232 № 4 (в PS/2)

278-27F

278-27F

Параллельный принтер № 2

2C0-2DF

2C0-2DF

Видеоадаптер

2F8-2FF

2F8-2FF

Стык RS-232 № 2

320-32F

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

338-33F

Стык RS-232 № 3 (в RS/2)

370-377

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

378-37F

378-37F

Параллельный принтер

3B0-3BF

3B0-3BF

Видеоадаптер и принтер

3C0-3CF

3C0-3CF

Видеоадаптер

3D0-3DF

3D0-3DF

Видеоадаптер

3F0-3F7

3F0-3F7

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

3F8-3FF

3F8-3FF

Стык RS-232 № 1

Разумеется, в современных ЭВМ используется гораздо большее количество портов.

Соседние файлы в папке Введение в вычислительную технику.