Автор: Пользователь скрыл имя, 16 Ноября 2011 в 16:09, курс лекций
Тема 1. Основные характеристики, области применения ЭВМ различных классов.
Определение производительности ЭВМ.
Тема 2.
Функциональная и структурная организация процессора.
Алгоритм работы процессора.
Теперь извлечем информацию: выполним команду "прочитать из стека в N3". При этом процессор
1. считает в N3 значение из стека;
2. увеличит указатель на 2 (рис. г);
3. аналогично прочитаем N2 и N1, после чего стек опустеет и вернется к начальному состоянию (рис. а.)
Примечание. Значение в стеке после считывания не исчезает. Но его там можно не увидеть. Дело в том, что процессор иногда временно использует стек для своих "внутренних" нужд. При этом некоторые ячейки, адреса которых меньше текущего указателя стека изменятся. Следовательно, во избежание неприятностей лучше всегда считать, что после считывания информации в стековой памяти она пропадает.
В командах работы со стеком адрес ОЗУ не фигурирует в явном виде. Но при этом предполагалось, что указатель стека уже установлен на свободную область ОЗУ. В противном случае, запись в стек может стереть нужную информацию. Ответственность за правильность значения указателя стека лежит на программном обеспечении.
Стек используется в вычислительной технике очень широко:
1. На аппаратном уровне процессор запоминает в стеке текущее значение счетчика адреса команд при вызове подпрограммы.
2. В стек предварительно заносятся необходимые для подпрограммы параметры (так реализуется вызов процедур и функций с параметрами в языке Паскаль).
3. Стек используется для временного сохранения значений внутренних регистров процессора
4. Процессор использует стек при реализации прерываний от внешних устройств.
Самая простая реализация стека - это массив и индекс последнего находящегося в стеке элемента. Этот индекс называется указателем стека (SP- Stack Pointer).Стек может расти как вверх, так и вниз.
дрес операнда образуется путем сложения регистра и адресного поля команды. Этот режим имеет другие названия, например, базовая адресация.
Варианты режима:
· Смещение представляет собой абсолютный адрес начала массива, а в регистре хранится индекс. Этот режим может использоваться для индексации массива. В этом случае смещение должно представлять собой полноценный адрес.
· Регистр хранит указатель на стековый кадр или блок параметров процедуры, а смещение - адрес локальной переменной в этом кадре или определенного параметра. В этих случаях используется укороченное смещение.
Стековый кадр является стандартным способом выделения памяти под локальные переменные в алголоподобных процедурных языках (С, С++, Раscal) и других языках, допускающих рекурсивные вызовы.
Семантика рекурсивного вызова в алголоподобных языках требует, чтобы каждая из рекурсивно вызванных процедур имела собственную копию локальных переменных. Большинство процессоров выделяют память под локальные переменные в стеке, размещаемом в ОЗУ.
В этом режиме адрес операнда образуется сложением двух или большего количества регистров и, возможно, еще и адресного смещения. Такой режим может использоваться для адресации массивов - один регистр содержит базовый адрес массива, второй - индекс. Иногда значение индексного режима умножается на размер операнда.
Современные процессоры реализуют такой режим с помощью нескольких команд и с использованием промежуточного регистра, в который помещают сумму базового и индексного регистров.
Адресация команд при их последовательной выборке осуществляется при помощи счетчика команд с постинкрементом. У процессоров с командами переменной длины величина постинкремента зависит от кода команды.
Некоторые процессоры позволяют использовать счетчик команд наравне со всеми остальными регистрами общего назначения. Запись в этот регистр приводит к передаче управления по адресу, который соответствует записанному значению. Чтение из этого регистра позволяет узнать адрес текущей команды.
Использование счетчика команд в косвенно-регистровом режиме со смещением позволяет адресовать код и данные относительно адреса текущей команды. Такой режим адресации называется относительным. Программный модуль, в котором используется только такая адресация, позиционно независим: его можно перемещать по памяти.
Во
всех современных процессорах
Основное
применение условного перехода - это
реализация условных операторов и циклов,
в которых переход
Выборка и дешифрация команды
Процесс выборки команды зависит от ее длины и значения младшего бита адреса. Для упрощения выборки команд примем, что все они выровнены по границе слова и содержат четное число байтов. При этом возможно появление в программе “холостых” байтов. Основные этапы выборки и дешифрации команды:
ARAM:=IP; {адрес команды}
ЧтОП; RGK:=RGR; {чтение команды}
IP:=IP+2;
Decode;
Для записи из RGR в регистр команд используется запись в регистр Е РЗУ. При этом занесение в RGK происходит автоматически.
Микропрограмма выборки команды начинается с адреса 0. В последней МК записывается инструкция JMAP схемы УПМ для перехода к нужной микропрограмме по коду операции (CHA=2). В конце микропрограммы исполнения команды записывается инструкция JZ для перехода к выборке следующей команды (CHA=0).
5.3. Команды пересылки и преобразования данных
Микропрограммы операций типов ARM, RM, и RRM составляются с учетом способа адресации (поля mod и r/m), который рассматривается как часть кода операции. В данной работе mod=11, а поле r/m задает номер регистра и в код операции не входит. При микропрограммировании команд с непосредственным операндом помните, что он записан в одном или двух дополнительных байтах и адресуется IP. Однобайтовый операнд может быть записан в младшем байте RGK. В этом случае он выбирается без дополнительного обращения к памяти.
Если команды выровнены по границе слова, однобайтовый непосредственный операнд всегда записан во втором байте RGK, а двухбайтовый - в следующем слове памяти.
Для расширения
знака однобайтового операнда используется
соответствующая функция
Для команд формата АМ адрес записан во втором и третьем байтах команды. При обращении к памяти следует учитывать четность или нечетность адреса.
5.4. Команды переходов, циклов и останова
В микропрограммах условных переходов анализируются флажки, зафиксированные в RFD. При выполнении условия нужно запрограммировать расширение знака младшего байта команды и прибавление его к IP. Для сокращения затрат времени анализ условия и расширение знака задаются одной МК. Аналогично, но без анализа условия выполняется короткий безусловный переход.
Операции циклов отличаются от условных переходов манипуляциями над счетчиком СХ и анализом его состояния.
Команда останова HALT реализуется записью кода 5 в поле JFI.
6. КОДИРОВАНИЕ
ПРОГРАММЫ И ТАБЛИЦЫ
Команды кодируются в соответствии с их форматами и кодами операций, приведенными в разделе 4. При кодировании переходов и циклов обратите особое внимание на правильность вычисления смещения. Ввод программы осуществляется в произвольную область памяти при условии, что адреса команд не превышают 3FE.
Таблица преобразования
адресов устанавливает
В нашей модели принято, что код операции включает в себя биты, определяющие режим адресации операндов. Биты RGK, не относящиеся к коду операции, не влияют на значение начального адреса.
Таблица состоит из двух столбцов, в первый из которых записываются адреса микропрограмм, а во второй - соответствующий код операции. Безразличные биты в коде операций заменяются символами ‘Х‘. Если введено менее 16 двоичных цифр или Х-в, то в конец кода записываются символы Х.
7. ПРИМЕР МИКРОПРОГРАММИРОВАНИЯ
В качестве примера рассмотрим поиск наименьшего из чисел, записанных в регистрах CX, DX, BX, и занесение этого числа в AX. Алгоритм решения данной задачи был приведен в лабораторной работе
№ 2.
Программа поиска приведена в табл. 4.
Программа поиска наименьшего числа Таблица 4
Адрес команды | Метка | Мнемоника | 16-ричный код | |
10 | MOV | AX, CX | 8BC1 | |
12 | CMP | AX, DX | 3BC2 | |
14 | JLE | Min1 | 7E02 | |
16 | MOV | AX, DX | 8BC2 | |
18 | Min1: | CMP | AX, BX | 3BC3 |
2А | JLE | Min2 | 7E02 | |
2С | MOV | AX, BX | 8ВC3 | |
2E | Min2: | HALT | FF00 |
7.1. Кодирование команд
Кодирование команд MOV AX, CX, CMP AX,DX и HALT приведено в табл. 5. Аналогично кодируются MOV AX, DX, CMP AX, BX и MOV AX, BX.
Рассмотрим кодирование
команды JLE Min1. Код операции берем
из табл. 3, КОП = 0111 1110. Смещение – это значение,
которое необходимо прибавить к IP, чтобы
получить адрес перехода. У нас IP=16 (IP содержит
адресследующей команды), адрес перехода
равен 18, следовательно, смещение Disp=18–16=02h.
Таким образом, код команды JLE Min1 равен
0111111000000010b = 7E02h. Аналогично кодируется
JLE Min2.
Кодирование команд MOV, CMP и HALT Таблица 5
Команда | Формат | Код команды в двоичном виде | Код команды в 16-ричном виде | |||
MOV AX, CX | RRM | КОП | mod | reg | r/m | |
1000 1011 | 11 | 000 | 001 | 8BC1 | ||
AX | CX | |||||
CMP AX, DX | RRM | КОП | mod | reg | r/m | |
0011 1011 | 11 | 000 | 010 | 3BC2 | ||
AX | DX | |||||
HALT | 1111 1111 | 0000 0000 | FF00 |
7.2. Кодирование микропрограмм
7.2.1. Микропрограмма выборки команд
Микропрограмма выборки команды приведена в табл. 6. Адрес очередной команды определяется указателем IP. Микропрограмма выборки команд начинается с нулевого адреса. В таблице приведены поля микрокоманды, значения которых не совпадают со значениями по умолчанию.
Микропрограмма
выборки команд