Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции / lections-rtf / lect05

.rtf
Скачиваний:
17
Добавлен:
16.04.2013
Размер:
129.11 Кб
Скачать

  1. Архитектура компьютера (продолжение)

Распределение памяти

Распределение памяти PC, непосредственно адресуемой процессором, приведено на рис. 5.1 и представляется следующим образом:

  • 00000h-9FFFFh – Conventional (Base) Memory, 640 Кбайт – стандартная память, доступная DOS и программам реального режима. Иногда верхние 128 Кбайт стандартной памяти (80000h-9FFFFh) называют Extended Conventional Memory;

  • A0000h- FFFFFh – Upper Memory Area (UMA), 384 Кбайт – верхняя память, зарезервированная для системных нужд;

  • Память выше 100000h – Extended Memory – дополнительная (расширенная) память, непосредственно доступная только в защищенном режиме.

Рис. 5.1. Распределение памяти PC.

Стандартная память распределяется следующим образом:

  • 00000h-003FFh – Interrupt Vectors – векторы прерываний (256 двойных слов);

  • 00400h-004FFh – BIOS Data Area – область переменных BIOS;

  • 00500h-00xxxh – DOS Area – область DOS;

  • 00xxxh-9FFFFh – User RAM – память, предоставленная пользователю (до 638 Кбайт).

Стандартное распределение верхней памяти следующее:

  • A0000h-BFFFFh – Video RAM, 128 Кбайт – видеопамять;

  • C0000h-DFFFFh – Adapter ROM, Adapter RAM, 128 Кбайт – резерв для адаптеров, использующих собственные модули ROM BIOS или специальное ОЗУ, разделяемое с системной шиной;

  • E0000h-EFFFFh – свободная область, 64 Кбайт, иногда занятая под System BIOS;

  • F0000h- FFFFFh – System BIOS, 64 Кбайт, ROM на системной плате;

  • FD000h- FDFFFh – Extended System Configuration Data – область энергонезависимой памяти, используемая для конфигурирования устройств Plug and Play.

В области UMA практически всегда присутствует графический адаптер. В зависимости от модели он занимает следующие области:

  • MDA RAM – B0000h- B0FFFh;

  • CGA RAM – B8000h- BBFFFh;

  • EGA ROM – C0000h- C3FFFh/C7FFFh;

  • VGA ROM – C0000h- C7FFFh;

  • EGA, VGA RAM – A0000h- BFFFFh, в зависимости от видеорежима используются следующие области:

  • Graphics – A0000h-AFFFFh;

  • Color Text – B8000h-BFFFFh;

  • Mono Text – B0000h-B7FFFh;

Формат команд

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

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

В общем виде команду можно записать так:

{<префикс>} <команда> {<операнд>, <операнд>}

Аппаратные прерывания

Прерывание означает временное прекращение основного процесса вычислений для выполнения некоторых действий, вызываемых работой аппаратуры или программ. Различают четыре источника прерываний:

  • внутренние прерывания процессора;

  • немаскируемые внешние прерывания;

  • маскируемые внешние прерывания;

  • программно–вызываемые прерывания.

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

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

Прерывания могут быть и вложенными, если процедура обслуживания установит флаг IF. Но тогда возникает опасность переполнения стека, поскольку каждое «вложение» будет использовать его для своих целей. Переполнение стека также может быть причиной зависаний. Длинные процедуры обработки со сброшенным флагом IF могут привести к потере системного времени, поскольку часы операционной системы используют аппаратные прерывания от таймера.

Немаскируемые прерывания обрабатываются процессором независимо от состояния флага IF. К ним относятся прерывания, приходящие по линии NMI (немаскируемое прерывание), а также по линии SMI#.

Сигнал на линию NMI приходит от схем контроля паритета памяти, от линии SERR# (системная ошибка) шины PCI. Если во время обработки немаскируемого прерывания появляется сигнал NMI, то вложенного прерывания не будет – повторный вызов обработчика NMI возможен только после исполнения инструкции IRET.

Прерывание SMI возникает от схем чипсета, участвующих в управлении энергопотреблением. Это прерывание имеет наивысший приоритет. Процессор не выполняет вызов процедур, описанный в таблице прерываний, а переходит в режим SMM (режим системного управления). В памяти SMRAM (а не в стеке!) сохраняется контекст процессора, после чего начинается исполнение кода системного управления. В режиме SMM обычные прерывания, в том числе немаскируемые, запрещены. Выход из режима SMM происходит по выполнении завершающей инструкции RSM.

Обработка маскируемых прерываний может запрещаться инструкцией DI (командой cli) и разрешаться – EI (sti). Эти прерывания обслуживаются контроллером, программно–совместимым с микросхемой 8259А. Такой контроллер имеет 8 входов запросов прерывания IRQ# от внешних источников и выход запроса INTR, по которому запрос поступает на одноименный вход процессора. При обработке запроса INTR процессор формирует шинный цикл подтверждения прерывания INTA, в котором контроллер передает по шине данных 8-битный вектор прерывания. Этот вектор и является номером, по которому ссылка на процедуру обработки хранится в таблице прерываний.

Таблица 5.1. Аппаратные прерывания

Имя

Вектор

Описание

Приоритет

NMI

02h

контроль канала, паритет

IRQ0

08h

таймер

IRQ1

09h

клавиатура

IRQ2

0Ah

каскад IRQ8 – IRQ15

IRQ8

70h

CMOS RTS – часы реального времени

IRQ9

71h

резерв

IRQ10

72h

резерв

IRQ11

73h

резерв

IRQ12

74h

PS/2 мышь

IRQ13

75h

сопроцессор

IRQ14

76h

контроллер HDD

IRQ15

77h

резерв

IRQ3

0Bh

COM2, COM4

IRQ4

0Ch

COM1, COM3

IRQ5

0Dh

LPT2

IRQ6

0Eh

контроллер FDD

IRQ7

0Fh

LPT1

Для запросов прерывания с шины PCI используются 4 линии запросов прерывания, которые обозначают как INTR A, B, C, D. Эти линии работают по низкому уровню и независимо коммутируются на доступные линии IRQ# с помощью конфигурационных регистров чипсета.

5

Соседние файлы в папке lections-rtf