ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Архитектуры системы команд
В команде указывается, какую операцию выполнять (КОП), над какими операндами выполнять операцию, а также, куда поместить операнд.
Стековая архитектура СК:
Операции: - занесение в стек (PUSH); - извлечение из стека (POP); - выполнение действий на стеком (извлечение операндов из вершины стека, выполнение действий, помещение результата в вершину стека).
Для выполнения арифметических операций их преобразуют к постфиксной форме (Польской записи): a=a+b*(c-d); Постфиксная форма: abcd-*+. Действия: push a; push b, push с; push d; sub; mul; add; pop a
(+) При размещении операндов в стековой памяти (LIFO) архитектура команд упрощается (большое количество действий выполняется аппаратно). (-) Отсутствие прямого доступа к памяти ограничивает область применения. (-) Сложность организации параллельной обработки.
Аккумуляторная архитектура СК:
Один из операндов должен обязательно находиться в специальном регистре-аккумуляторе. Результат также сохраняется в аккумулятору.
Операции: - занесение в аккумулятор (LOAD); - извлечение из аккумулятора (STORE); - выполнение действий над операндами (извлечение первого операнда из аккумулятора, извлечение второго операнда из ОП и помещение во временный теневой регистр TMP, выполнение действий, помещение результата в аккумулятор). Пример: a = a + b * (c -d); Определение троек: T1=c-d; T2=b*T1; T3=a+T2; Действия:LOAD c; SUB D; MUL b; ADD a; STORE a.
(+) В команде необходимо указывать только адрес второго операнда. (+) Ускоряются длинные вычисления (a*b/c+d-e). (-) Наличие одного аккумулятора является узким местом, т.к. временно ненужный результат необходимо перезаписывать в другой регистр или ОП. Регистровая архитектура СК:
В состав процессора входит большое количество однотипных регистров. В команде необходимо указать номера регистров, хранящих операнды, а также номер регистра операнда.
Для данной архитектуры возможны варианты размещения операндов: оба операнда в памяти; один операнд в памяти и один в РОН; оба операнда в РОН. Для уменьшения размерности команд и для упрощения декодирования накладывают ограничения на размещение операндов.
Типы команд
• Команды пересылки данных. - регистр-регистр - регистр-память - память-память • Команды арифметической и логической обработки (сложение, вычитание, умножение, деление, инкремент, декремент, сравнение, операции над ЧПЗ, логические операции, операции сдвига). Сдвиг: логический, арифметический, циклический, циклический через дополнительным разряд. • Команды работы со строками (могут быть реализованы набором других команд, однако удобны при работе с символьной информацией). • Команды векторной обработки (позволяет выполнять однотипные действия над большим количеством однородных данных). Пример арифметики с насыщением: 1011 0111 1010 + 0001 1001 1000 1100 1111 1111 • Команды преобразования: служат для табличного преобразования данных из одной системы кодов в другую (2-10 <-> 2) • Команды ввода/вывода. Служат для управления, проверки состояния и обмена данными с периферийными устройствами. - Команды вывода в порт - Команды ввода из порта. • Команды управления потоком команд. Данные команды служат для указания очередности выполняемых команд. Вычисление адреса очередной команды может выполняться несколькими способами: - увеличением адреса на длину исполненной (естественный порядок). - изменением адреса на длину следующей (перешагивание) - изменением адреса на значение, указанное в текущей команде (короткий переход). - непосредственное указание следующей команды (длинный переход). Перечисленные команды могут выполняться лишь по некоторому условию (уловные переходы). Команды условного перехода составляют 80% команд управления. Команды безусловного перехода: вызовы и возвраты из процедур, и.т.д.
Форматы команд.
Четырехадресная команда:
Трехадресная команда:
Двухадресная команда:
Данный формат команд характерен для CISC-архитектуры.
Аккумуляторная архитектура:
Второй операнд хранится в аккумуляторе. Данный формат команд характерен для RISC-архитектур.
Нульоперандная команда:
Способы адресации
Непосредственная адресация Вместо адреса команда содержит непосредственно операнд. (+) команда выполняется быстро (-) непосредственный операнд может не войти в команду
Прямая адресация Адрес в команде является адресом операнда (+) если операнд находится в памяти, то это самый быстрый способ указать на него (-) заранее определенный адрес влияет на переносимость программы. (-) Адрес занимает много места
Неявная адресация Операнд подразумевается (следует из КОП). (+) Команда занимает мало места (-) только такие командах нельзя использовать для построение всей системы команд.
Регистровая адресация
Адрес в команде указывает не на ячейку ОП, а на регистр. (+) Быстрее прямой адресации (-) Количество регистров ограничено Косвенная адресация
Адрес в команде указывает на ячейку памяти, в которой находится адрес операнда. (+) удобна для обработки структурных типов данных. (-) приходится осуществлять много обращений к ОП.
Косвенная регистровая адресация
В команде содержится номер регистра, в котором содержится адрес операнда. (+) быстрее косвенной адресации (-) для перемещения по ОП нужно менять содержимое регистра
Относительная адресация Адрес вычисляется относительно счётчика команд
(+) Код переносим, команды занимают мало места (-) Может понадобиться длинный адрес
Базовая регистровая адресация
Адрес в команде представляет собой смещение, которое складывается со значением в базовом регистре для получения адреса операнда (+) Удобна для работы со структурами данных, размещаемых динамически. (-) Переносимость меньше, чем у относительной адресации
Индексная регистровая адресация
В поле адреса команды содержится базовый адрес, складываемый со значением смещения в индексном регистре. (+) Удобна для работы со структурами данных, размещаемых динамически. (-) Переносимость меньше, чем у относительной адресации
Автоинкрементная/автодекрементная адресация Разновидность регистровой индексной или базовой адресации. До или после выполнения команды значение базового или индексного регистра увеличивается/уменьшается на единицу. (+) Способ адресации удобен для команд обработки строк. (-) Автоматическое изменение часто требуется выполнять на величину, большую единицы.
Индексная адресация с масштабированием Индексный регистр умножается на масштаб M и суммируется с базовым адресом из команды. (+) Удобен для модификации адреса на величину M. (-) Вычисление адреса замедляется, т.к. требуется выполнять умножение.
Базовая индексная адресация с масштабированием
Адрес определяется по формуле Адрес=Индекс*Масштаб+База+Смещение.
(+) Базовая индексная адресация с масштабированием часто используется при обращении к системным таблицам, находящимся в ОП (таблица дескрипторов, таблицы страниц, таблица векторов прерываний и т.д.) (-) Ограниченное на величину M (M=1,2,4,8).
Не нашли, что искали? Воспользуйтесь поиском:
|