Академический Документы
Профессиональный Документы
Культура Документы
Instrução Significado
1ª versão: processador RISC puro
load r1,[940] r1 ← Mem[940]
load r2,[941] r2 ← Mem[941]
load r3,[942] r3 ← Mem[942]
mult r1,r1 r1 ← r1 x r1
mult r2,r3 r2 ← r2 x r3
mult r2,4 r2 ← r2 x 4
sub r1,r2 r1 ← r1 – r2
store r1,[943] r1 → Mem[943]
2ª versão: processador CISC puro
load [940] AC ← Mem[940]
mult [940] AC ← AC x Mem[940]
store [970] AC → Mem[970]
load [941] AC ← Mem[941]
mult [942] AC ← AC x Mem[940]
mult 4 AC ← AC x 4
store [971] AC → Mem[971]
load [970] AC ← Mem[970]
sub [971] AC ← AC – Mem[971]
store [972] AC → Mem[972]
2. Utilize a técnica de coloração de grafos para cada um dos programas cujas análises são
ilustradas a seguir, supondo a existência apenas de três registradores reais,
denominados R1, R2 e R3.
De acordo com a figura vemos que, se não houver maneira de descartar no 6º ciclo de
relógio a instrução seguinte à instrução de desvio incondicional, o valor de r1 que será
armazenado no endereço 666 da Memória Principal estará incorreto, pois ele terá sido
modificado pela instrução add r1,4. Assim, utilize a técnica do desvio atrasado
otimizado para modificar o programa e ilustre como a execução da nova versão do
programa é mais rápida do que a da versão original, além de ser mais segura.
4. No fragmento de código abaixo, supondo-se sua execução por um processador escalar
em um pipeline perfeito, teríamos a instrução load r1,[r2] sendo executada no
ciclo i, a instrução add r5,r6,r7 sendo executada no ciclo i + 1, e daí por diante.
Determine qual a dinâmica de execução deste fragmento supondo que ele seja
executado por um processador superescalar capaz de executar duas instruções
simultaneamente.
Instrução Significado
load r1,[r2] r1 ← Mem[r2]
add r5,r6,r7 r5 ← r6 + r7
sub r4,r1,r4 r1 ← r1 - r4
mult r8,r9,r10 r8 ← r9 x r10
store r4,[r11] r4 → Mem[r11]
Instrução Significado
add r1,r2,r3 r1 ← r2 + r3
load r4,[r5] r4 ← Mem[r5]
sub r7,r1,r9 r7 ← r1 – r7
mult r5,r4,r4 r5 ← r4 x r4
sub r1,r12,r10 r1 ← r12 – r10
store r14,[r13] r14 → Mem[r13]
or r15,r14,r12 r15 ← r14 or r12
Identifique todos os riscos LAE (Leitura Após Escrita), EAE (Escrita Após Escrita), ELA
(Escrita Após Leitura) e LAL (Leitura Após Leitura) para o fragmento. A seguir, descreva
sua dinâmica de execução por um processador que permita que, no máximo, duas
instruções sejam executadas simultaneamente. Por fim, repita o procedimento
6. No fragmento de código abaixo, determine quais são os riscos LAE (Leitura Após
Escrita), EAE (Escrita Após Escrita) e EAL (Escrita Após Leitura). Em seguida, utilize a
técnica de renomeação de registradores para eliminar os riscos cabíveis.
Instrução Significado
load r1,[r2] r1 ← Mem[r2]
add r3,r4,r1 r3 ← r4 + r1
sub r4,r5,r6 r4 ← r5 + r6
mult r7,r4,r8 r7 ← r4 x r8
xor r8,r9,r10 r8 ← r9 xor r10
sub r11,r8,r12 r11 ← r8 – r12
div r12,r13,r14 r12 ← r13 / r14
store r12,[r15] r12 → Mem[r15]
Respostas
1. Para a 1ª versão: I = 32 B; O = 16 B; M = 48 B
Para a 2ª versão: I = 40 B; O = 36 B; M = 76 B
2.
3.
4.
Ciclo Instruções
i load r1,[r2] add r5,r6,r7
i+1 sub r4,r1,r4 mult r8,r9,r10
i+2 store r4,[r11]
5.
6.