Documente Academic
Documente Profesional
Documente Cultură
Enunciado
Admita um processador em pipeline semelhante ao MIPS, mas com 4
andares de execuo, como se indica na figura a seguir.
IF
24 de jul de 201
6
ID
BR
EX1
EX2
ME1
EX3
ME2
EX4
WB
Exerccio LU1 - 1
LU1
Enunciado (cont.)
Admita ainda que existe forwarding total para as instrues que no
necessitam de 4 ciclos de execuo, e que as instrues que nos vo
interessar neste problema exigem os seguinte nmero de ciclos de
execuo:
Multiplicao em vrgula flutuante 4 ciclos
Adio em vrgula flutuante 2 ciclos
Operao com inteiros 1 ciclo
Admita ainda que existe um branch delay slot, que no existe latncia
entre as operaes com inteiros e as operaes de branch que delas
dependem, e que a latncia para os pares de instrues (LoadUtilizador do Load) de 2 ciclos --- por outras palavras, o nmero de
delay slots para os Loads igual a 2.
Pretende-se fazer correr o seguinte cdigo neste pipeline, que calcula o
produto interno de dois arrays de nmeros em vrgula flutuante com 32
bits.
24 de jul de 201
6
Exerccio MI1 - 2
LU1
Enunciado (cont.)
Prod:
L.D
L.D
MUL.S
ADD.S
ADDI
ADDI
ADDI
BNE
NOP
F5,0(R1)
F6,0(R2)
F7,F5,F6
F4,F4,F7
R1,R1,4
R2,R2,4
R3,R3,-1
R3,R0,Prod
;
;
;
;
;
;
; fecha o ciclo
; branch delay slot
24 de jul de 201
6
Exerccio LU1 - 3
LU1
Enunciado (cont.)
2. Modifique o cdigo, por forma a obter o menor nmero possvel
de ciclos de execuo. No desdobre os ciclos (isto , no faa
loop unrolling). Mostre o cdigo que resulta desse escalonamento.
Quantos ciclos dura agora a execuo de uma iterao?
3. Faa agora um nico desdobramento do ciclo. Faa o escalonamento
por forma a eliminar completamente os stalls. Escreva o cdigo
resultante. Quantos ciclos dura agora a execuo de uma iterao?
4. Se desdobrar o ciclo 8 vezes, quantos ciclos por iterao se
conseguem? Nota: no precisa de escrever o cdigo que resulta do
desdobramento, nas precisa de justificar a sua resposta.
24 de jul de 201
6
Exerccio MI1 - 4
Resoluo
24 de jul de 201
6
L.D
L.D
NOP
NOP
MUL.S
NOP
NOP
NOP
ADD.S
ADDI
ADDI
ADDI
BNE
NOP
F5,0(R1)
F6,0(R2)
F7,F5,F6RAW ;-multiplica
4 ciclososdeelementos
execuo do MUL.S
WB no 4 ciclo
leitura de F7 no mesmo ciclo pelo ADD.S
F4,F4,F7
R1,R1,4
R2,R2,4
R3,R3,-1
R3,R0,Prod
; acumula resultado em F4
; incrementa ponteiro
; incrementa ponteiro
; fecha o ciclo
; branch delay slot
Exerccio MI1 - 5
LU1
Resoluo (cont.)
24 de jul de 201
6
L.D
L.D
ADDI
ADDI
MUL.S
ADDI
NOP
BNE
ADD.S
F5,0(R1)
; carrega elem. do primeiro array
F6,0(R2)
; carrega elem. do segundo array
R1,R1,4
; incrementa ponteiro
R2,R2,4
; incrementa ponteiro
2 ciclos
L.D-Utilizador
F7,F5,F6
R3,R3,-1 4 ciclos de execuo do MUL.S
R3,R0,Prod
F4,F4,F7
L.D
F5,0(R1)slot
; noProd:
branch
delay
L:D
F6,0(R2)
NOP
NOP
MUL.S
NOP
NOP
NOP
ADD.S
ADDI
ADDI
ADDI
BNE
NOP
F7,F5,F6
F4,F4,F7
R1,R1,4
R2,R2,4
R3,R3,-1
R3,R0,Prod
Exerccio LU1 - 6
LU1
Resoluo (cont.)
24 de jul de 201
6
L.D
L.D
L.D
L.D
MUL.S
ADDI
MUL.S
ADDI
ADD.S
ADDI
BNE
F5,0(R1)
F6,0(R2)
F8,4(R1)
F9,4(R2)
F7,F5,F6
R1,R1,8
F10,F8,F9
R2,R2,8
F4,F4,F7
R3,R3,-2
R3,R0,Prod
;
;
;
;
carrega
carrega
carrega
carrega
elem.
elem.
outro
outro
do primeiro array
do segundo array
elem. do prim. array
elem. do segundo array
; fecha o ciclo
ADD.S
F4,F4,F10
; acumula resultado em F4
; incrementa ponteiro
; incrementa ponteiro
; acumula resultado em F4
Exerccio
Exerccio LU1
MI1 - 7
LU1
Resoluo
24 de jul de 201
6
Exerccio LU1 - 8