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 сбрасывается)