logo search
AOM / Мельник А

4.2.4.3. Фаза виконання та формування ефективної адреси

Мікродії, що виконують в рамках фази виконання та визначення ефективної адреси ЕХ, вже залежать від типу поточної команди. Враховуючи це, вигідно поділити усі ко­манди процесора на наступні три групи:

•. команди виконання операцій завантаження операндів з основної пам'яті та збере­ження результатів у основній пам'яті;

В рамках фази ЕХ операції звернення до пам'яті даних (load/store instructions) го­тують значення ефективної адреси, тобто вираховують значення бінарного коду, що є адресою комірки пам'яті даних. Виконується наступна мікродія:

ALUoutput = А + Imm.

Позначене в мікродії додавання безпосереднього операнда (однієї з компонент адре­си) з вмістом робочого регістра А (другої компоненти) реалізується в ALU. Отримана сума (вона завжди ціла і додатна, переносом нехтують) записується до ще одного, про­зорого для програміста, регістра ALUoutput.Цей регістр має розрядність 32 біти. Він зберігає коди результатів, що з'являються на виході комбінаційної схеми з назвою ALU. Якщо пригадати дію команди LW, тоді призначення та форма запису наведеної мікродії стає зрозумілою.

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

Прикладом команди типурегістр-регістр є команда ADDR1,R2,R3.Виконується вка­зана командою наступна мікродія

ALUoutput=Aop В.

Тут узагальнене позначення (ор) можна конкретизувати як (add), (sub)тощо, залежно від конкретного виду поточної команди, яка опрацьовується в інформаційному тракті комп'ютера Підкреслимо, що на попередній щодо ЕХ фазі, а саме на фазі ID,до службо­вих регістрів уже завантажено вміст вибраних регістрів регістрового файла з адресами R2і R3.Результат дії поки що не збережено в регістрі R1,але його тимчасово записано до службового регістра ALUoutput.

149

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

Прикладом команди типу регістр-безпосередній операнд є команда ADDR1,R2,#23.Виконується наступна мікродія:

ALUoutput= Aop Imm.

Ясно, що замість вмісту регістра R3в операції бере участь безпосередній операнд, який з урахуванням «знакового» розширення до 32-х бітів зчитується із службового ре­гістра Imm.

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

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

ALUoutput=NPC+ Imm;Cond(ition)= (Aop 0).

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

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