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

Организация микропроцессоров и микропроцессорных систем. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
21
ность команд программы. Каждая команда в свою очередь интерпретиру­ется соответствующей микропрограммой. Таким образом, в УП хранятся микропрограммы, реализующие систему команд процессора.
2. ОРГАНИЗАЦИЯ МПС НА ОСНОВЕ МИКРОПРОЦЕССОРОВ С АРХИТЕКТУРОЙ х86/16. РЕАЛЬНЫЙ РЕЖИМ
2.1. Структурная модель МП с архитектурой х86/16 при работе в реальном режиме
Реальный режим (режим реальных адресов) МП обеспечивает одно-
пользовательскую, однозадачную работу МПС. Наиболее важной особен­ностью работы МП в этом режиме является конвейерный принцип выпол­нения команд с их предварительной выборкой. Это обеспечивает макси­мальную пропускную способность системы шины.
Рассмотрим, как реализуется этот принцип. В общем виде процесс выполнения команды программы содержит следующие этапы: 1) выборка кода команды из памяти; 2) декодирование команды; 3) чтение операндов из памяти, если это необходимо; 4) выполнение операции в арифметико­логическом устройстве (АЛУ); 5) запись результатов, если этого требует команда.
Обычно в МП эти этапы выполняются последовательно, что приво­дит к малой загрузке по времени магистралей МПС. Здесь же структура МП ориентирована на параллельную реализацию этапов выборки и выпол­нения команд. Поэтому в состав МП входят два относительных устройст­ва, работающих асинхронно. Это операционное устройство (ОУ) и устрой­ство сопряжения с системной шиной или шинный интерфейс (ШИ).
Упрощенная структурная схема МП в реальном режиме работы представлена на рис. 2.1. Здесь ШД – шина (магистраль) данных; ША – шина (магистраль) адресов; ШУ – шина (магистраль) управления.
В состав ОУ входят: шестнадцатиразрядное АЛУ; общие регистры или регистры общего назначения (РОН) AX, BX, CX, DX, SI, DI, SP, BP и буферные регистры; регистр флагов или признаков F; схема управления МП.
Все регистры и внутренние магистрали ОУ 16-разрядные. Операци-
онное устройство не имеет связи с внешними шинами МП. На АЛУ посту­пают коды команд из очереди команд, расположенной в шинном интерфей­се. Получение операндов также производится через шинный интерфейс (ре­гистр обмена).
МП ориентирован на обработку 16-разрядных слов, поэтому и адре­са, которые выдает ОУ, также являются 16-разрядными. Шинный интерфейс преобразует их в 20-разрядные, что позволяет обращаться к 1 МБ оператив­ной памяти. ШИ осуществляет: 1) выборку команд из памяти; 2) обращение
22
ОУ
Сумматор адреса
CS DS ES
SS
IP
Рг обмена
15 0
Схема
управления
системной
шиной
AH AL BH BL CH CL DH DL
SP
BP
SI
DI
15 8 7 0
AX BX CX DX
1 2 3 4 5
6
Схема
управ-
ления
МП
Буферные Рг
АЛУ
F
16
8 16
20 ШИ
ШД
ША ШУ
Очередь команд
Общие регистры
Внутренняя шина данных
к памяти или внешнему устройству для считывания операндов и записи результатов по запросам ОУ.
В состав ШИ входят: сегментные регистры CS, DS, ES, SS, необходи-
мые для обращения к памяти; сумматор адреса, используемый для преобра­зования 16-разрядных логических адресов в 20-разрядные физические или исполнительные адреса; указатель команд IP, аналогичный по назначению программному счетчику (счетчику команд); регистр обмена используется для передачи информации между шинным интерфейсом и ОУ; очередь ко­манд, состоящих из шести 8-битных регистров, предназначенная для хране­ния байтов кода команд.
Функционирование шинного интерфейса производится следующим
образом. Когда ОУ занято выполнением команды, ШИ самостоятельно про­изводит опережающую выборку очередных байтов команд из памяти. Они поступают во внутреннюю регистровую память и называются очередью ко­манд. Эта очередь может содержать до 6 байт потока команд. Это позволяет выдавать на ОУ сохраненные команды по мере их необходимости без за­грузки внешних магистралей МП системы. Когда в очереди команд оказы­вается два свободных байта, ШИ производит выборку из памяти следующе­го командного слова.
Очевидно, что очередь обеспечивает положительный эффект только
при естественном порядке передачи команд. Если ОУ выполняет команду
Рис. 2.1
23
передачи управления в другую точку программы, то ШИ выполняет сле­дующие действия: 1) очищает очередь команд; 2) получает код команды из нового адреса; 3) передает этот код в ОУ и начинает заполнять очередь ко­манд заново.
В том случае когда ОУ требует обращения к памяти или внешнему
устройству, ШИ приостанавливает выборку команд и запись их в очередь для организации необходимого обмена информацией.
2.2. Организация регистров в реальном режиме
Все программно-доступные регистры можно разделить на 4 группы.
Форматы регистров представлены на рис. 2.2.
Рис. 2.2
В программной модели МП имеется четырнадцать 16-разрядных ре-
гистров.
1. Группа РОН используется обычно для хранения операндов при выполнении арифметических и логических операций над байтами или сло­вами. В этой группе допускается раздельная адресация старших и младших байтов. Некоторые команды предписывают регистрам данной группы спе­циальное назначение: АХ – 16-разрядный аккумулятор, в котором АL -
24
восьмиразрядный аккумулятор; ВХ – базовый регистр в командах с соот­ветствующей адресацией; СХ - счетчик в циклах и командах сдвигов; DХ ­расширение аккумулятора до 32-х разрядов. Кроме того, DХ используется при косвенной адресации УВВ.
Указательные и индексные регистры предназначены для хранения индексной информации. Указательные регистры SP и ВР хранят 16­разрядные значения смещений адреса в пределах сегмента памяти, выде­ленного под стек. При этом SP указывает на вершину стека, а ВР – на ос­нование стека.
2. Индексные регистры SP, DI содержат смещение адреса в пределах
сегментов памяти, выделенных под данные. Используются они в качестве индексных регистров в соответствующих способах адресации. Кроме того, в командах работы с цепочками байт или слов SI указывает на исходную цепочку, а DI – на результирующую цепочку. Важной особенностью реги­стров этой группы является возможность их использования в качестве 16­разрядных РОН в арифметико-логических операциях, т.е. как и регистров
1-й группы.
3. Наличие четырех сегментных регистров объясняется способом
адресации памяти. Хотя в реальном режиме МП вырабатывает 20-разряд­ные исполнительные адреса, оперирует он с 16-разрядными логическими адресами, состоит из базового адреса сегмента (базы) и внутрисегментного адреса (смещения). Сумматор адреса преобразует эти составляющие логи­ческие адреса в 20-разрядный физический адрес. При выполнении про­граммы МП могут одновременно обращаться к 4 сегментам памяти по 64 КБ каждый.
Начальные (базовые) адреса сегментов содержатся в сегментных ре­гистрах: CS – регистр сегмента кода, содержащий базовый адрес сегмента кода, откуда выбираются команды программы; DS - регистр сегмента дан­ных, содержащий базовый адрес сегмента данных, в котором размещаются переменные и массивы программы; SS - регистр сегмента стека, содержа­щий базовый адрес стека, в котором реализуются все стековые операции; ES - регистр дополнительного сегмента, который содержит базовый адрес сегмента, обычно использующегося для хранения промежуточных данных.
4. Последнюю группу составляют два 16-битных регистра: IP - ука-
затель команд, который является аналогом стандартного программного счетчика РС; F- регистр флагов или признаков.
Шинный интерфейс осуществляет модификацию IP таким образом, что он указывает на следующую по порядку команду. Изменение содер­жимого IP пользователем может быть выполнено только с помощью ко­манд передачи управления.
Регистр признаков F имеет формат, представленный на рис. 2.3.
25
OF
DF
IF
TF
SF
ZF AF PF CF
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Флаги управления Флаги состояния
Рис. 2.3 Флаги состояния характеризуют признаки результата. CF – флаг переноса. Этот бит устанавливается в 1, если арифметиче-
ская операция вызвала перенос (заём) из старшего бита результата. Ис­пользуется при сложении и вычитании многобайтных чисел, а также в ко­мандах сдвига.
PF – флаг паритета (четность). Устанавливается в 1, если младшие
восемь разрядов результата содержат четное число единичных бит. Ис­пользуется для контроля ошибок передачи данных.
AF – флаг вспомогательного переноса. Устанавливается в 1, если
арифметическая операция вызвала перенос (заём) из младшей тетрады в старшую, исполняется в командах десятичной арифметики при работе с упакованными числами.
ZF – флаг нуля. При установке в 1 характеризует признак нулевого
результата.
SF – флаг знака результата. Устанавливается в состояние, в котором
находится старший бит результата.
OF – флаг переполнения. Устанавливается в 1, если результат пре-
вышает диапазон представимых чисел в разрядной сетке АЛУ.
Флаги управления воздействуют на те или иные аспекты работы МП. DF – флаг направления. Управляет направлением обработки данных
в операциях с цепочками байт или слов. При DF=1 используется автодекре­ментный режим индексных регистров SI, DI, а при DF=0 - автоинкремент­ный режим.
IF – флаг прерывания. При IF=1 разрешается обработка внешних
маскируемых прерываний. При IF=0 – запрет.
TF - покомандный режим работы МП. Используется при отладке
программ. Если TF=1, то МП выполняет команды пошагово.
2.3. Организация памяти и ввода/вывода в МПС на основе
микропроцессоров с архитектурой х86
В реальном режиме МП обеспечивает адресацию памяти емкостью 1
мегабайт (МБ). Это пространство памяти представляет собой одномерный массив байт, каждый из которых имеет 20-разрядный адрес. Байт является минимально адресуемой единицей памяти. Для записи адресов использу­ется 16-ричная система счисления. Адреса ячеек имеют значения 00000h,
00001h, …, FFFFEh, FFFFFh.
26
Базовый адрес
(CS, DS, ES, SS)
0000
0000
Смещение
(IP, SP, DI, SI, EA)
Сумматор адреса
Логический
адрес
19 4 3 0
19 16 15 0
19 0
ШИ
ША 19-0
Физический
адрес
Любые два смежных байта образуют 16-разрядное слово, где млад-
ший байт имеет меньший адрес, а старший – больший. Обращение к слову производится путем указания адреса его младшего байта.
Каждая программа делит пространство памяти на сегменты по 64 КБ.
Сегмент состоит из смежных ячеек памяти и является независимой и от­дельно адресуемой единицей памяти. Сегменты могут быть смежными (со­седними), непересекающимися, пересекающимися частично или полно­стью.
Начальные адреса сегментов хранятся в соответствующих сегмент-
ных регистрах. Текущие сегменты обеспечивают для программы следую­щее рабочее пространство: 64 КБ для объектного кода; 64 КБ для стека; 128 КБ для данных. Адрес каждой ячейки (байта) памяти в реальном ре­жиме является 20-разрядным, а МП работает с 16-разрядной информацией.
Рассмотрим, каким образом осуществляется формирование адресов
памяти. Принято считать, что каждая ячейка памяти имеет два адреса: фи­зический и логический. Физический адрес – это 20-битное значение, кото­рое выдается на ША и однозначно указывает положение каждого байта в пространстве памяти 1МБ. Программы оперируют логическими адресами, что позволяет записать их без предварительного размещения в памяти, т.е. использовать относительные адреса. Логический адрес состоит из двух 16­битных значений: базового адреса сегмента (базы); внутрисегментного ад­реса (смещения). Он задается в виде база: смещение.
База указывает адрес первого байта сегмента, смещение определяет
расстояние в байтах от начала сегмента до соответствующей ячейки. Зна­чения базы и смещения задаются 16-ричными числами из диапазона от 0000h до FFFFh, например 4AC8h:8D6Eh.
Когда ШИ обращается к памяти, он формирует из логического адре-
са физический. Для этого база сегмента и смещение суммируются в соот­ветствии со схемой, представленной на рис. 2.4.
Источники логического адреса зависят от типа обращения к памяти и
приведены в табл. 2.1.
Рис. 2.4
27
Тип обращения к памяти
База по умолчанию
Вариант базы
Смещение
Выбор команды
CS
-
IP
Стековая операция
SS
-
SP
Выборка операнда
DS
CS, ES, SS
EA
Цепочка – источник
DS
CS, ES, SS
SI
Цепочка - приёмник
ES
-
DI
МП с архитек-
турой x86
(реальный ре-
жим)
ША ШД ШУ
Память
1МБ
Порты
ввода/вывода
16
20
16
16
16
20
Таблица 2.1
Здесь ЕА – эффективный адрес, т.е. смещение операнда, которое вычисля­ет ОУ в соответствии с заданным в команде режимом адресации.
Организация ввода/вывода. Для связи с внешними устройствами МП
с архитектурой х86 в реальном режиме имеет дополнительное пространст­во ввода/вывода, изолированное от пространства памяти. Структурная схема МПС, отражающая организацию памяти и ввода/вывода, показана на рис. 2.5.
Рис. 2.5 Адресное пространство ввода/вывода МП содержит до 64К 8-битных
портов или до 32К 16-битных портов, где К=1024.
Команды ввода IN и вывода ОUТ передают данные между аккумуля-
торами AL (байты) или АХ (слова) и адресуемыми портами. Пространство ввода/вывода не сегментируется.
Для обращения к порту ввода/вывода ШИ выдает 16-битный адрес
порта на младшие разряды шины адреса ША 15-0. Возможно использова­ние 8-битных адресов устройств ввода/вывода (УВВ). Тогда 8-битный ад­рес порта дублируется на линиях ША 7-0, ША 15-8.
Доступ к портам пространства ввода/вывода может быть организо-
ван с использованием 2-х методов адресации: прямого и непрямого (кос­венного). В случае прямой адресации номер порта задается 8-битовым не­посредственным операндом в команде. В этом случае обеспечивается об­ращение к первым 256 портам с номерами от 00h до FFh.
Непрямая адресация портов подобна косвенной регистровой адреса-
ции данных в памяти. Номер требуемого порта берется из регистра DX и может указать любую ячейку пространства ввода/вывода объемом 64 КБ.
28
7 2
1 0
7 0
7 0
7 0
КОП
d w
Байт
адресации
dispL
dispH
Младший байт
Старший байт
7 1
0 7 0
7 0
7 0
7 0
7 0
КОП
w
Байт адре-
сации/КОП
dispL
dispH
dataL
dataH
2.4. Форматы команд микропроцессора
Команды при реальном режиме работы МП занимают от 1 до 6 байт
в памяти. На формат команд влияет выбор режима адресации. МП имеет организацию команд типа «регистр-память». С точки зрения адресации это означает, что команды адресуют не более двух операндов, причем одно­временное обращение к двум ячейкам памяти не допускается.
Наиболее общим случаем является двухадресная команда, когда ре-
зультат замещает один из операндов. Первым операндом в такой команде является содержимое регистра или ячейки памяти, вторым операндом – содержимое регистра или непосредственный операнд в команде.
Рассмотрим основные форматы команд.
1. Формат двухоперандной команды для случаев, когда вторым
операндом является содержимое регистра, показан на рис. 2.6.
Смещение
Рис. 2.6 В первом байте команды содержатся код операции (КОП) и два спе-
циальных бита w и d. Бит w «слово» определяет тип операнда. При w =1 операндом является 16-разрядное слово, при w = 0 – байт. Бит d определя­ет приемник результата, т.е. какой из двух операндов замещается результа­том. Если d=1, то второй операнд, при d = 0 - первый операнд. Остальные байты команды содержат информацию об адресах операндов.
Второй байт команды называется постбайтом режима адресации
(байтом адресации). Он определяет: 1) регистр, в котором содержится 2-й операнд; 2) где находится 1-й операнд: в регистре или в ячейке памяти. Ес­ли в регистре, то указывается его номер, если в ячейке памяти, то – режим адресации памяти.
В 3-м и 4-м байтах команды находится смещение адреса disp. В зави-
симости от режима адресации смещение может быть 16-разрядным (disp = dispL dispH), 8–разрядным (disp = dispL) или отсутствовать, когда оба операнда находятся в регистрах.
2. Формат двухоперандной команды с непосредственным операн-
дом приведен на рис. 2.7.
Смещение Непосредственный операнд
Рис. 2.7
29
7 1
0 7 0
7 0
7 0
КОП
w
Байт адре­сации/КОП
dispL
dispH
mod
reg
r/m
Код поля
reg
Регистр второго операнда
при w=0
при w=1
000 001 010 011 100 101 110 111
AL CL DL BL AH CH DH BH
AX
CX
DH
BH
SP
BP
SI
DI
Длина команды в таком формате может достигать 6 байт. Первый
операнд размещается в регистре или ячейке памяти, второй – непосредст­венно в команде. Непосредственный операнд имеет длину 1 или 2 байта в зависимости от значения бита w.
По сравнению с предыдущим форматом команды здесь имеются сле-
дующие отличия: 1) в первом байте отсутствует бит d, так как результат можно поместить только на место 1-го операнда; 2) во втором байте адре­сации не требуется указывать регистр для 2-го операнда. Освободившиеся в результате этого разряды используются для расширения кода операции.
3. Формат однооперандной команды имеет вид, приведенный на
рис. 2.8.
Рис. 2.8 Он подобен второму типовому формату, но не содержит поле data
непосредственного операнда.
Структура и кодирование постбайта режима адресации. Пост-
байт режима адресация или байт адресации (БА) является вторым в боль­шинстве команд МП. Он указывает способ адресации одного или двух операндов. Формат этого байта представлен на рис. 2.9.
7 6 5 3 2 0
Рис. 2.9 Здесь mod – поле режим; r/m – поле регистр-память; reg – поле ре-
гистр. Поле reg используется только в том случае, когда второй операнд команды размещается в регистре. Выбор этого регистра осуществляется в соответствии с табл. 2.2.
Таблица 2.2
30
Код поля r/m
EA
000 001 010 011 100 101 110 111
(BX)+(SI)+disp
(BX)+(DI)+disp
(BP)+(SI)+disp
(BP)+(DI)+disp
(SI)+disp
(DI)+disp
(BP)+disp
(BX)+disp
Код поля
mod
Смещение
Расположение первого
операнда
00
disp = 0
Память
01
disp = dispL
Память
10
disp = dispL dispH
Память
11
disp = 0
Регистр
В командах, где требуется определенный адрес только одного опе-
ранда (в том числе двухоперандных с непосредственной адресацией), поле reg используется для расширения поля КОП первого байта команды.
Поля mod и r/m задают расположение первого операнда в памяти или
регистре. Если операнд в памяти, то по этим полям производится вычисле­ние его эффективного адреса ЕА. Способ вычисления ЕА определяется по коду поля r/m в соответствии с табл. 2.3.
Таблица 2.3
го операнда, как это показано в табл. 2.4. В случае когда первый операнд размещается в регистре, его номер кодируется в поле r/m аналогично полю
reg в табл. 2.2.
Исключением из перечисленных случаев является комбинация
mod=00 и r/m =110. Здесь эффективный адрес равен disp = dispL dispH, что
позволяет обеспечить прямую адресацию операнда без использования ре­гистров.
класса: 1) виды адресации операндов в командах работы с данными; 2) ви­ды адресации переходов в командах передачи управления.
1. Непосредственная адресация. Здесь операнд представляет собой константу длиной 8 или 16 бит, которая содержится в команде. Схема об­ращения к операнду представлена на рис. 2.10.
Поле mod указывает величину смещения disp и расположение перво-
Таблица 2.4
2.5. Виды адресации микропроцессора
В реальном режиме все виды адресации можно разделить на два
2.5.1. Виды адресации данных
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]