30.3.1. ВЫПОЛНЕНИЕ ТИПИЧНЫХ ОПЕРАЦИЙ
ALU операции
ALU операция регистровая
Используется: Register File, ALU
Поля команды выбирают 2 регистра операнда, 1 регистр результата
и код ALU операции.
ALU выполняет операцию, результат записывается в Register File и
обновляется регистр флагов.
ALU операция с непосредственным операндом:
Используется: Register File, ALU
Поля команды выбирают 1 регистр операнда, 1 регистр результата,
поля непосредственного числа выставляется на шину B прямо из команды
(дополняется 0 или 1 до нужной разрядности) и код ALU операции.
ALU выполняет операцию, результат записывается в Register File и
обновляется регистр флагов.
Условные и безусловные переходы
Абсолютный безусловный переход
Используется: CU
Адресс следующей комманды записывается в PC прямо из комманды.
Относительный безусловный переход
Используется: CU
PC складывается с непосредственным числом из комманды (дополненным
0 или 1 до нужной разрядности) и результат записывается в PC.
Непрямой переход
Используется: CU, Register File
Поля команды выбирают регистр в регистровом файле,
содержимое этого регистра записывается в PC.
Если у процессора есть prefetcher то он сбрасывается
Условный относительный переход
Используется: CU, Flag Register
Из Flag Register выбирается флаг соответствующий полю в команде,
в зависимости от поля команды он инвертируется или нет.
Если полученный результат равен 1, то PC складывается с непосредственным
числом из комманды (дополненным 0 или 1 до нужной разрядности) и результат
записывается в PC.
Если результат равен 0, то ничего не делается.
Загрузка/Выгрузка
Загрузка регистра
Используется: AGU, BIU, Register File.
Поле Memory поступает в AGU (Address Generation Unit).
AGU выбирает регистры из Register File (при необходимости) и вычисляет
адресс, который передается в BIU. BIU читает память и выдает ее на шину C,
откуда она записывается в Register File.
Выгрузка регистра
Используется: AGU, BIU, Register File.
Используется: AGU, BIU, Register File.
Поле Memory поступает в AGU (Address Generation Unit).
AGU выбирает регистры из Register File (при необходимости) и вычисляет
адресс, который передается в BIU. Из Register File выбирается регистр
(например на шину C). BIU пишет в память.
Подпрограммы
Вызов подпрограммы (абсолютный):
Используется: CU, AGU, BIU, Register File.
AGU выбирает SP (Stack Pointer) из Register File, вычисляет
адресс куда писать в stack и передает его BIU.
Паралельно ALU выбирает SP и обновляет его.
CU передает PC в BIU. BIU пишет PC в память (stack).
В PC записывают адресс из поля команды.
Возврат из подпрограммы
(не показано, что надо очистить prefetcher)
Используется: CU, AGU, BIU, Register File.
AGU выбирает SP (Stack Pointer) из Register File, вычисляет
адресс откуда читать в stackе и передает его BIU.
Паралельно ALU выбирает SP и обновляет его.
BIU передает данные из памяти (из stack) в CU, CU записывает
их в PC.
Если у процессора есть prefetcher то он сбрасывается.
Прерывания
Вызов прерывания:
Вызов прерывания - почти как вызов подпрограммы,
но переход происходит по предопределенному адрессу.
Еще как правило запрещаются прерывания.
(если прерывание аппаратное то prefetcher сбрасывается)
Index Prev Next