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