Команда умовного переходу.

Прикладом команди умовного переходу є команда BNEZ R5, data. Виконуються на­ступні мікродії:

ALUoutput = NPC + Imm;

Cond (ition) = (A op 0).

Обидві мікродії є сумісними в часі. За допомогою першої мікродії вираховується ці­льова адреса умовного переходу. При цьому до вже визначеної адреси наступної коман­ди (NPC), тобто такої, яка розташована безпосередньо за командою умовного переходу, додається константа зі службового регістра Imm, (саме він містить значення data). Друга мікродія визначає (істинним чи хибним) є значення умови Condition умовного переходу. Заради цього вміст службового регістра А, що є збіжним із вмістом регістра R5 (у коман- ді-прикладі), порівнюється на основі операції (ор) з нулем. Згідно з семантикою коман­ди BNEZ отримується, що Cond = true, коли вміст регістра R5 ненульовий, або Cond = false, якщо регістр R5 містить нуль. Фізично Cond є однобітним регістром у складі вузла Zero?

Звернемо увагу на те, що зараз сформовано лише значення двох необхідних елемен­тів виконання умовного переходу, а саме: однобітний код умови Cond та цільова адре­са переходу, яка тимчасово зберігається у службовому вихідному регістрі ALU, тобто в ALUoutput. Безпосереднє виконання умовного переходу, що полягає в природній (за чергою) чи неприродній (коли виконують стрибок до цільової адреси) зміні вмісту про­грамного лічильника PC, виконується на наступній фазі.

 

4.2.4.4. Фаза звернення до пам’яті та завершення умовного переходу

Звернення до пам’яті.

В рамках фази звернення до пам’яті МЕМ виконуються наступні мікродії:

LMD = DM [ALUoutput];

DM [ALUoutput] = В.

Звернення до пам’яті застосовується в командах завантаження (наприклад, LW R6, 112(R3)) та в командах збереження (наприклад, SW 112(R3),R6).

Перша мікродія виконується тільки у випадку команди Load (завантаження). Тут за допомогою попередньо розрахованої адреси пам’яті даних, яка тимчасово зберігається у службовому регістрі ALUoutput, здійснюється доступ до пам’яті, що і позначено за­писом DM [ALUoutput].

Фізично з пам’яті завжди зчитується 32 біти (або навіть цілі пакети з 32-х бітових структурних одиниць). Отриманий з пам’яті даних бінарний код тимчасово завантажується до ще одного службового регістра LMD (Load Memory Data). І тільки на наступній фазі WB, яка поки що не розглядалася, зчитаний код пересилається з регістра LMD до конкретної комірки (в нашому прикладі - це комірка з адресою R6) регістрового файла.

Друга мікродія реалізується лише при виконанні команди Store (збереження). Тут до комірки пам’яті даних за адресою, що зберігається в службовому регістрі ALUoutput = (R3) + 112, засилається вміст службового регістра В. При цьому (в наведеному прикладі) для команди SW має місце тотожність (B)=(R6).

Умовний перехід.

Виконується наступна мікродія:

if (condition) PC = ALUoutput else PC = NPC.

Здійснюється природна (cond=0) або неприродна (cond =1) заміна вмісту програм­ного лічильника PC з метою реалізації наступної за умовним переходом команди.

4.2.4.5. Фаза зворотного запису

На цій, вже останній фазі виконання команди, у разі потреби результат, що отримано на попередніх фазах, записується до деякої комірки RX регістрового файла. Наприклад, в R1, якщо поточною є команда ADD R1,R2,R3, або в R6 для команди LW R6,#112(R3). Тому вона і має назву зворотного запису (write/back - WB).

Потрібно звернути увагу, що на цій фазі змінюється програмний стан комп’ютера. Після її виконання поновлення попереднього стану є неможливим.

Команди виконання операції арифметико-логічного пристрою типу “регістр-ре- гістр”.

Виконується наступна мікродія:

Regs[IR11…15] = ALUoutput.

Мікродія зберігає результат операції ALU в регістрі призначення (наприклад, в ре­гістрі R1 на прикладі команди ADD). Зрозуміло, що біти 16...20 відповідного формату команди містять бінарний номер регістра призначення.

Команди виконання операції арифметико-логічного пристрою типу “регістр-без- посередній операнд”.

Виконується наступна мікродія:

Regs[IR11… 15 ] = ALUoutput.

Ця мікродія також зберігає результат операції, наприклад, SUB R5, R4, #1002, в ко­мірці R5 регістрового файла.