ARO2 – Architecture des Ordinateurs 2 - Laboratoire Microarchitecture EXECUTE
- 3 -
En exécutant pas à pas le programme, relevez un chronogramme des signaux suivants en sortie du
bloc DECODE :
adr_reg_n, adr_reg_m, adr_reg_d numéros des registres
reg_dat_out_n, reg_data_out_m contenus des registres(0 avant initialisation des registres)
sel_op_alu: code indiquant l’opération de l’alu (voir ci-dessous)
sel_operand1 indique sur quel bus est placé l’opérande 1(voir ci-dessous)
sel_operand2 indique sur quel bus est placé l’opérande 2 (voir ci-dessous)
immed_3, immed_5, immed_8 valeurs immédiates
Etudiez la façon dont sont générés ces signaux dans le bloc DECODE fourni.
Expliquez les valeurs relevées dans le chronogramme pour les instructions :
ADD r3, r2, #7
ADD r5, r3, r0
Information: Le bloc DECODE fournit au bloc EXECUTE avec le bus « Execute_control_bus » les
informations suivantes : les numéros de registres, les types d’opérations à faire, les opérandes à
utiliser. Le format des informations de ce bus est donné ci-dessous :
Execute_control_bus[0..22]=>
[0..2]=sel_op_shift
000: Bypassdubloc
001: Operand1shiftarithmétiqueàdroiteavecOperand2
010: Operand1shiftlogiqueàgaucheavecOperand2
011: Operand1shiftlogiqueàdroiteavecOperand2
100: Operand1shiftrotatifàdroiteavecOperand2
[3..6]=sel_op_alu
0000: Bypassdubloc(Operand1ensortie)
0001: Operand1+Operand2
0010: Operand1‐Operand2
0011: Operand1ANDOperand2
0100: Operand1OROperand2
0101: Operand1XOROperand2
0110: NOTOperand1
0111: Operand1AND(NOTOperand2)
1000: Operand1*Operand2
[7..8]=sel_operand_2
00:reg_data_out_m
01:immediate3
10:notused
11:immediate8
[9..10]=sel_operand_1
00:reg_data_out_n
01:0x0000
10:Branchwithlink
11:notused
[20]=sel_shift
0:immediate5
1:reg_data_out_m