2. Considere trs processadores diferentes, P1, P2 e P3, que implementam o mesmo conjunto de
instrues. A frequncia de seus clocks e os valores mdios de seus CPIs so, respectivamente,
2GHz, 3GHz e 4GHz e 1.2, 0.8 e 2.0. Considerando que os trs processadores executam uma dada
aplicao em 10 segundos, determine para cada processador: a) a quantidade de ciclos executada, e
b) a quantidade de instrues executada.
a) tempo = total de ciclos / velocidade_do_clock => total de ciclos = velocidade_do_clock x
tempo
P1: 10 x 2 x 109 = 2 x 1010 ciclos
P2: 10 x 3 x 109 = 3 x 1010 ciclos
P3: 10 x 4 x 109 = 4 x 1010 ciclos
b) total de ciclos = total de instrues x cpi => total de instrues = total de ciclos / cpi
P1: 2 x 1010 / 1.2 = 1.67 x 1010 instrues
P2: 3 x 1010 / 0.8 = 3.75 x 1010instrues
P3: 4 x 1010 / 2 = 2 x 1010 instrues
3. Uma falcia comum o uso da mtrica MIPS (Milhes de Instrues Por Segundo) na avaliao do
desempenho de processadores. Por esta mtrica, o processador que possui o maior MIPS o mais
rpido. Verifique se isso vlido para os seguintes processadores: P1, com frequncia de relgio de
3GHz, CPI de 1.1; e processador P2, com frequncia de relgio de 2.5GHz, CPI de 1.0. Considere
que um mesmo programa ao ser compilado para P1 gera 3x10 6 instrues, enquanto ao ser
compilado para P2 gera 0.5x106 instrues.
MIPS = contador de instrues / (tempo de execuo x 106) =>
MIPS = contador de instrues / (contador de instrues x cpi x tempo_ciclo x 106) =>
MIPS = velocidade_clock / (cpi x 106)
Por MIPS, melhor processador P1. Mas o que ocorre quando consideramos o tempo de
execuo?
4 e 5. Assuma que uma aplicao execute 600 instrues aritmticas, 200 instrues de leitura
memria, 600 instrues de escrita memria, e 100 instrues de desvio, num total de 1.500
instrues. Assuma que a instruo aritmtica execute em 1 ciclo de clock, acessos memria
(leituras e escritas) executem em 4 ciclos de clock e desvios em 2 ciclos de clock.
5. Se o nmero de instrues de leitura pode ser reduzida metade, qual ser o ganho obtido?
Total de ciclos, aps a reduo = 3600
Tempo de execuo = tempo de ciclo x total de ciclos = 1.8 ns
Ganho = 2.0 / 1.8 = 1.11 ou 11%
O CPI de cada mquina apenas a mdia ponderada dos CPIs para cada uma das classes de
instruo. Assim:
CPI de Mbase = 2*(0,40) + 3*(0,25) + 3*(0,25) + 5*(0,10) = 0,8 + 0,75 + 0,75 + 0,50 = 2,8
ciclos/instruo
CPI of Mopt = 2*(0,40) + 2*(0,25) + 3*(0,25) + 4*(0,10) = 0,8 + 0,50 + 0,75 + 0,40 = 2,45
ciclos/instruo
9. A equipe de compiladores ouviu sobre a discusso para melhorar o computador abordado nas
questes 6 a 8. A equipe prope melhorar o compilador para o computador a fim de ganhar mais
desempenho. Chame essa combinao do compilador melhorado e o computador bsico de M comp. As
melhorias na gerao de instrues para esse compilador aprimorado foram estimadas desta forma:
Por exemplo, se o computador bsico executou 500 instrues da classe A, M comp executaria 0,9*500
= 450 instrues da classe A para o mesmo programa. Qual o CPI para Mcomp?
Esse problema pode ser feito de uma dentre duas maneiras. Ou se encontra a nova
combinao e se ajustam as freqncias primeiro, ou se encontra a nova contagem de
instrues (relativa) e se divide o CPI por isso. Usamos a segunda.
Razo de instrues = 0,9 0,4 + 0,9 0,25 + 0,85 0,25 + 0,1 0,95 = 0,8925
10. Usando os dados da questo 9, o quanto Mcomp mais rpido do que Mbase?
Tempo de Mbase = (InstruesxCPI)/(Velocidade de clock) = (InstruesMbasex2,8)/(Velocidade de
Clock)
Tempo de Mcomp = (InstruesxCPI)/(Velocidade de clock) = (Instrues Mcompx2,45)/(Velocidade
de Clock)
Mas temos uma relao entre as instrues dos computadores MBase e MComp: MComp =
0,8925*Mbase. Alm disso, sabemos que as mudanas ocorreram apenas no compilador, no
afetando a velocidade de clock da mquina, que permaneceu igual. Portanto:
11. A equipe de compiladores salienta que possvel implementar tanto as melhorias de hardware da
questo 6 quanto as melhorias no compilador descritas na questo 9. Se as melhorias de hardware e
no compilador forem implementadas, produzindo o computador Mboth, o quanto Mboth ser mais rpido
do que Mbase?
O CPI diferente entre Mbase e Mboth. Logo, o primeiro passo encontrar o CPI de Mboth:
12. Voc precisa decidir se deve incorporar as melhorias de hardware sugeridas na questo 6 ou as
melhorias de compilador da questo 9 (ou ambas) para lanar o novo computador. Voc estima que o
seguinte tempo seria necessrio para implementar as otimizaes:
Lembre-se de que o desempenho da CPU melhora em aproximadamente 50% por ano, ou cerca de
3,4% por ms. Considerando que o computador bsico possui um desempenho igual aos seus
concorrentes, que otimizaes (se houver) voc escolheria implementar?
Primeiro calcule o crescimento de desempenho aps 6 e 8 meses. Aps 6 meses = 1,034 6 =
1,22. Aps 8 meses = 1,0348 = 1,31. A melhor escolha seria implementar Mboth.
13. Considere trs processadores diferentes, P1, P2 e P3, que implementam o mesmo conjunto de
instrues. A frequncia de seus clocks e os valores mdios de seus CPIs so, respectivamente,
3GHz, 2.5GHz e 4GHz e 1.5, 1.0 e 2.2. a) Qual processador tem o melhor desempenho, expresso em
instrues por segundo? b) Considerando que cada processador executa um determinado programa
em 10 segundos, encontre b.1) o nmero de ciclos e b.2) o nmero de instrues executadas por
cada um deles.
a)Tempo = (Instrues * CPI ) / Frequncia => Instrues = (Frequncia * Tempo)/CPI. Como
queremos a taxa em instrues por segundo, dividimos ambos os lados por segundo. Logo:
Instrues/segundo = Frequncia/CPI.
15. Considere duas implementaes distintas do mesmo ISA. Para este ISA, existem quatro classes
de instrues, A, B, C e D. A frequncia do relgio e o CPI de cada instruo para cada processador
so respectivamente 2.5GHz, 2, 1.5, 2 e 1 (processador P1); 3GHz, 1, 2, 1 e 1 (processador P2).
Dado um programa composto por 10 6 instrues, das quais 10% so da classe A, 20% da classe B,
50% da classe C e 20% da classe D, qual implementao a mais rpida? Justifique sua resposta
apresentando os clculos.
CPI_P1: 0.1 x 2 + 0.2 x 1.5 + 0.5 x 2 + 0.2 x 1 = 0.2 + 0.3 + 1 + 0.2 = 1.7
CPI_P2: 0.1 x 1 + 0.2 x 2 + 0.5 x 1 + 0.2 x 1 = 0.1 + 0.4 + 0.5 + 0.2 = 1.2
16. Uma empresa quer tornar a execuo de cdigos em Java mais rpida atravs de suporte de
hardware para coleta de lixo. A coleta de lixo atualmente responsvel por 20% das instrues do
programa. Duas mudanas possveis so propostas. A primeira prope implementar suporte para
coleta de lixo inteiramente em hardware, com o custo de aumentar o tempo de ciclo por um fator de
1,2. A segunda prope introduzir no ISA instrues de coleta de lixo, o que reduziria a metade o
nmero de instrues necessrias para realizar a coleta de lixo, mas aumentaria o tempo de ciclo por
um fator de 1,1. Em ambos as propostas, no haveriam alteraes no valor do CPI. Qual dessas
opes levaria a um maior ganho de desempenho? Justifique sua resposta numericamente.
A primeira opo reduz o nmero de instrues em 20%, mas aumenta o tempo de ciclo em 1,2
vezes. Logo levara: 0,8 * 1,2 = 0,96 do tempo do caso original. A segunda opo remove 20%/2
= 10% das instrues, aumentando o tempo em 1,1 vezes. Logo levar 0,9 * 1,1 = 0,99 do
tempo original. Conclui-se que a primeira opo a mais rpida de todas as possibilidades.
17. Considere uma mquina multiciclo, que execute um programa constitudo de 25% de loads, 10%
de stores, 11 de branches, 2% de jumps e 52% de instrues que executam na ALU. Nesta mquina
multiciclo, loads demandam 5 ciclos para executarem; stores, 4 ciclos; instrues na ALU 4 ciclos,
branches 3 ciclos; e jumps 3 ciclos. Qual o CPI desta aplicao em uma mquina multiciclo?
CPI = 0,25 x 5 + 0,1 x 4 + 0,52 x 4 + 0,11 x 3 + 0,02 x 3 = 4,12
18. Considere duas implementaes diferentes, M1 e M2, do mesmo conjunto de instrues (ISA). O
conjunto de instrues composto por trs classes de instrues, A, B e C. M1 possui clock de
80MHz e M2 possui clock de 100MHz. Instrues da classe A so executadas em 1 ciclo na mquina
M1 e 2 ciclos na mquina M2; instrues da classe B so executadas em 2 ciclos na mquina M1 e 3
ciclos na mquina M2; e instrues da classe C so executadas em 4 ciclos em ambas as mquinas.
Considerando um cdigo composto por 60% de instrues da classe A, 30% da classe B e 10% da
classe C, calcule: a) (10pts) o CPI mdio para cada mquina (M1 e M2); e b) (10pts) o valor do MIPS
para cada mquina (M1 e M2).
a) M1: CPI = (60/100)* 1 + (30/100)*2 + (10/100)*4= 1.6
M2: CPI = (60/100)*2 + (30/100)*3 + (10/100)*4 = 2.5
19. Considere uma aplicao constituda por duas classes distintas de instrues: ponto-flutuante e
inteiros. Suponha que com o emprego de uma tecnologia revolucionria possamos melhorar em 15
vezes o desempenho das instrues ponto-flutuante em um computador. Qual deveria ser o
percentual de instrues ponto-flutuante para que a aplicao pudesse executar 4 vezes mais rpida?
Usaremos a Lei de Amdahl para resolver essa questo. Seja T n o novo tempo para executar a
aplicao, aps a implementao das alteraes, Ta o tempo antigo e P o percentual do
programa. Temos ento que:
Tn = Ta/4 e
Tn = (Ta * P) / G + Ta * (1-P)
Logo:
20. Um computador C1 possui clock de 600MHz e implementa o mesmo ISA do computador C2, de
clock igual a 750MHz. Um compilador gera 100.000 instrues ao compilar a aplicao A para o
computador C1. O CPI desta aplicao no computador C1 igual a 1,3. Quantas instrues o
compilador teria de produzir ao compilar o cdigo da aplicao A para o computador C2, de modo que
o tempo de execuo fosse o mesmo nos dois computadores? Considere que no computador C2 a
aplicao teria CPI igual a 2,5.
TempoA = InstruesA * CPIA * Tempo de CicloA = 100000*1.3/(600*106) ns
TempoB = InstruesB * CPIB * Tempo de CicloB = IB*2.5/(750*106) ns
Como TempoA = TempoB, 100000*1.3/(600*106) = IB*2.5/(750*106) =
IB = (750 * 106) * 105 * 1.3 / 2.5 * ( 600*106) = 65000
21. Queremos comparar dois computadores diferentes: M1 e M2. As seguintes medies foram feitas
nesses computadores:
a) Qual computador possui o melhor desempenho para essa carga (workload)? O quanto melhor?
b) Que computador mais produtivo para essa carga (leve em conta o custo)? O quanto mais?
a) M1 leva 7,0 segundos no total, e M2 leva 11,5 segundos no total. Assim, M1 11,5/7,0 = 1,64
vezes mais rpido.
b) A razo de custos de 800/500 = 1,60. Portanto, M1 mais econmico, pois consegue um
aumento de desempenho de 1,64 para uma diminuio de custo de 1,6.
1. Qual o cdigo em linguagem de mquina MIPS para a instruo sub $t1, $t2, $t3 ?
000000 01010 01011 01001 00000 100010
7. Mostre a nica instruo MIPS ou a sequncia mnima de instrues para esta instruo em C:
b = 25 | a. Suponha que a corresponda ao registrador $t0 e b corresponda ao registrador $t1.
ori $t1, $t0, 25
positive:
addi $sp, $sp, 4
sw $ra, 0($sp)
jal addit
addi $t1, $0, 1
slt $t2, $0, $v0
bne $t2, $0, exit
addi $t1, $0, $0
exit:
add $v0, $t1, $0
lw $ra, 0($sp)
addi $sp, $sp, 4
jr $ra
addit:
add $v0, $a0, $a1
jr $ra
menor:
slt $v0, $a0, $a1
jr $ra
conta:
addi $sp, $sp, -16 # espao na pilha para 4 registradores
sw $ra, 12($sp) # salva ra
sw $s3, 8($sp) # salva s3
sw $s2, 4($sp) # salva s2
sw $s0, 0($sp) # salva s0
add $s2, $a0, $zero # copia a0 para s2 (salva a0)
add $s3, $a1, $zero # copia a1 para s3 (salva a1)
add $s0, $zero, $zero #i=0
loop:
add $t0, $s2, $s0 # calcula endereco v[i]
add $t1, $s3, $s0 # calcula endereco r[i]
lw $a0, 0($t0) # le v[i]
lw $a1, 0($t1) # le r[i]
jal menor # chama menor
beq $v0, $zero, exit # menor retornou valor igual a zero? Se sim, vai para
exit:
slt $t0, $s0, $a2 # i < s?
beq $t0, $zero, exit # se i >= s, vai para exit
addi $s0, $s0, 1 #i=i+1
j loop # volta para loop
exit:
add $v0, $s0, $zero # copia i para v0
lw $ra, 12($sp) # restaura ra
lw $s3, 8($sp) #restaura s3
lw $s2, 4($sp) # restaura s2
lw $s0, 0($sp) # restaura s0
addi $sp, $sp, 16 # restaura pilha
jr $ra # retorna
soma:
add $v0, $a0, $a1
jr ra
reduz:
addi $sp, $sp, -20 # espao na pilha para 4 registradores
sw $ra, 16($sp) # salva ra
sw $s3, 12($sp) # salva s3
sw $s2, 8($sp) # salva s2
sw $s1, 4($sp) # salva s1
sw $s0, 0($sp) # salva s0
add $s2, $a0, $zero # copia a0 para s2 (salva v)
add $s3, $a1, $zero # copia a1 para s3 (salva size)
add $s1, $zero, $zero # resultado = 0
add $s0, $zero, $zero #i=0
loop:
slt $t0, $s0, $s3 # i < size?
beq $t0, $zero, exit # se i >= size, vai para exit
add $t1, $s2, $s0 # calcula v[i]
lw $a1, 0 ($t1) # parametro para a1
add $a0, $s1, $zero # parametro para a0
jal soma # chama soma
add $s1, $v0, $zero # resultado = soma()
j loop
exit:
lw $ra, 16($sp) # restaura ra
lw $s3, 12($sp) # restaura s3
lw $s2, 8($sp) # restaura s2
lw $s1, 4($sp) # restaura s1
lw $s0, 0($sp) # restaura s0
addi $sp, $sp, 20 # restaura pilha
jr $ra
sum:
slti $t0, $a0, 1
bne $t0, $zero, sum_exit
add $a1, $a1, $a0
addi $a0, $a0, -1
j sum
sum_exit:
add $v0, $a1, $zero
jr $ra
fib:
addi $sp, $sp, -12
sw $ra, 0($sp)
sw $s0, 4($sp)
sw $s1, 8($sp)
add $s0, $a0, $zero
addi $t1, $zero, 1
addi $t2, $zero, 2
addi $v0, $zero, 1
beq $s0,$t1, exitfib
beq $s0,$t2, exitfib
addi $a0, $s0, -1
jal fib
add $s1, $zero, $v0
addi $a0, $s0, -2
jal fib
add $v0, $v0, $s1
exitfib:
lw $ra, 0($sp)
lw $s0, 4($sp)
lw $s1,8($sp)
addi $sp, $sp, 12
jr $ra
somap:
addi $t0, $zero, 1 # inicia i
loop:
beq $t0, $a2, fim # compara com fim do loop
lw $t1, 0($a0) # le A[i-1]
lw $t2, 4($a1) #le B[i]
add $t3, $t1, $t2 # A[i-1] + B[i]
sw $t3, 4($a0) # A[i] = A[i-1] + B[i]
addi $a0, $a0, 4 # incrementa ponteiro de A
addi $a1, $a1, 4 # incrementa ponteiro de B
addi $t0, $t0, 1 # incrementa i
j loop
fim:
jr $ra
power:
addi $sp, $sp, -4
sw $ra, 0($sp)
bne $a1,$zero, else
addi $v0, $zero, 1
addi $sp, $sp, 4
jr $ra
else:
addi $a1, $a1, -1
jal power
mul $v0, $v0, $a0
lw $ra, 0($sp)
addi $sp, $sp, 4
jr $ra
16. Escreva uma sequncia de instrues em assembly MIPS que armazene no registrador $t1 o
seguinte valor constante de 32 bits: 0000 0000 0000 0001 0000 0000 0000 0001.
lui $t1, 1
ori $t1, $t1, 1
18. Suponha que uma nova pseudo-instruo em assembly MIPS, chamada bcp, tenha sido
projetada para copiar blocos de palavras de um endereo de origem para um endereo de destino.
Assuma que essa pseudo-instruo requeira que o endereo de origem esteja presente no
registrador $t1 e o endereo de destino no registrador $t2. A pseudo-instruo tambm requer que o
nmero de palavras a ser copiada esteja em $t3, e que esse valor seja maior do que zero. Alm do
mais, assuma que os valores desses registradores, bem como o do registrador $t4 possam ser
destrudos na execuo da pseudo-instruo (ou seja, esses registradores podem ser usados como
temporrios na implementao da pseudo-instruo). a) Escreva o cdigo assembly MIPS que
implementa o cdigo da pseudo-instruo; b) Mostre um pequeno fragmento de cdigo em assembly
(cerca de 4 instrues) que exemplifique o uso desta pseudo-instruo.
a)
loop:
lw $t4, 0 ($t1)
sw $t4, 0 ($t2)
addi $t1, $t1, 4
addi $t2, $t2, 4
addi $t3, $t3, -1
bne $t3, $zero, loop
b)
addi $t1, $a0, 100
addi $t2, $a1, 256
addi $t3, $zero, 5
bcp
19. Instrues de desvio condicional so do Tipo-I. Neste tipo de instruo, a quantidade de bits
utilizada para representar o endereo de desvio limitada a 16 bits. Tendo este cenrio em mente,
considere a instruo bne $s0, $s1, L1. Substitua a instruo por um par de instrues que oferea a
mesma funcionalidade, mas que permita desvios para endereos de cdigo que a instruo original
no permitiria.
beq $s1, $s0, L2
j L1
L2:
20. Transforme o seguinte fragmento de cdigo assembly MIPS em cdigo C, considerando que as
variveis f, g, h, i e j esto armazenadas respectivamente nos registradores $s4, $s3, $s2, $s1 e $s0:
h = f * 2;
j = h + g;
j += i;
21. Imagine que a instruo de deslocamento lgico esquerda (sll) no fosse implementada
diretamente pelo hardware, mas sim pelo montador, ou seja, que a mesma fosse na verdade uma
pseudo-instruo. Qual sequencia de cdigo assembly MIPS implementaria essa pseudo-instruo?
As operaes de deslocamento lgico esquerda correspondem sucessivas multiplicaes
por 2.
addi $t0, $zero, 0 #inicia contador do nmero de iteraes ($t0) com zero
addi $t1,$zero, n # l constante n para varivel $t1
addi $s1, $s2, 0 # copia $s2 para $s1
loop:
muli $s1, $s1, 2
subi $t0, $t0, 1
bne $t0, $t1, loop
22. Vimos em sala que quatro registradores especiais, $a0 a $a3, so utilizados para passar
argumentos em chamadas de procedimentos / funes. Descreva com suas palavras o que ocorre
caso tenhamos uma funo/procedimento que necessite mais que quatro argumentos.
Os argumentos adicionais devem ser passados na pilha.
slt $t2, $zero, $t0 # $t0 negativo; comparao slt feita com sinal; logo 0 > $t0; t2= 0
bne $t2, $zero, ELSE # $t2 = $zero, logo desvio no tomado
j DONE
$t2 = 0
2. Padres de bits no possuem significado inerente. Eles podem representar inteiros com sinal,
inteiros sem sinal, nmeros em ponto flutuante, instrues e assim por diante. O que representado
depende da instruo que opera sobre os bits. Dado o padro de bits 0010 0100 1001 0010 0100
1001 0010 01002, o que ele representa, supondo que o mesmo seja interpretado como:
3. Usando uma verso de 4 bits do algoritmo de diviso visto em sala, calcule o resultado da diviso
de 1111 por 0010.
Quociente: 0000
Divisor: 0010 0000
Resto: 0000 1111
I1:
R: 0000 1111
Q: 0000
D: 0001 0000
I2:
R: 0000 1111
Q: 0000
D: 0000 1000
I3:
R: 0000 0111
Q: 0001
D: 0000 0100
I4:
R: 0000 0011
Q: 0011
D: 0000 0010
I5:
R: 0000 0001
Q: 0111
D: 0000 0001
6. Usando uma verso de 4 bits do algoritmo de diviso visto em sala, calcule o resultado da diviso
de 01112 por 00102. Considere que os nmeros so representados sem sinal.
Quociente: 0000
Divisor: 0010 0000
Resto: 0000 0111
Iterao 1:
Resto: 0000 0111
Quociente: 0000
Divisor: 0001 0000
Iterao 2:
Resto: 0000 0111
Quociente: 0000
Divisor: 0000 1000
Iterao 3:
Resto: 0000 0111
Quociente: 0000
Divisor: 0000 0100
Iterao 4:
Resto: 0000 0011
Quociente: 0001
Divisor: 0000 0010
Iterao 5:
Resto: 0000 0001
Quociente: 0011
Divisor: 0000 0001
7. Usando uma verso de 4 bits do algoritmo de diviso visto em sala, calcule o resultado da diviso
de 10102 por 01102 apresentando todas as iteraes relativas a este processo.
Q: 0000
Div: 0110 0000
R: 0000 1010
1a. Iterao:
Q: 0000
Div: 0011 0000
R: 0000 1010
2a. Iterao:
Q: 0000
Div: 0001 1000
R: 0000 1010
3a. Iterao:
Q: 0000
Div: 0000 1100
R: 0000 1010
4a. Iterao:
Q: 0000
Div: 0000 0110
R: 0000 1010
5a. Iterao:
Q: 0001
Div: 0000 0011
R: 0000 0100
8. Mostre a representao binria no padro IEEE 754 em preciso simples para o seguinte nmero
na base decimal: -11,25.
11000001001101000000000000000000
9. Mostre a representao binria no padro IEEE 754 em preciso simples para o nmero -9,25.
01000001000111000000000000000000
10. Mostre a representao binria no padro IEEE 754 em preciso simples para o nmero 20,5.
01000001101001000000000000000000
11. Encontre a menor seqncia de instrues MIPS para determinar se existe um carry vindo da
soma dos registradores $t3 e $t4. Coloque 0 ou 1 no registrador $t2 se o carry for 0 ou 1,
respectivamente.
addu $t2, $t3, $t4
sltu $t2, $t2, $t3
ou
13. Que valor em decimal est sendo codificado por 11000000110000000000000000000000? Foi
utilizada na codificao o padro IEEE 754 em preciso simples.
1 no bit de sinal indica valor negativo
expoente = 129 127 = 2
frao = 0,1
Logo (-1)1*(1 + 0,1)*22= -1,12*4 = -1,5*4 = -6.0
14. Apresente a codificao binria do menor valor positivo (excluindo 0) que pode ser representado
pelo padro IEEE 754 em preciso simples.
Valor normalizado: 00000000100000000000000000000001
Valor denormalizado: 00000000000000000000000000000001
1. Um dos alunos props que o sinal de controle MemtoReg seja eliminado. O multiplexador que tem
MemtoReg como entrada de controle usar o sinal de controle MemRead em seu lugar. A modificao
proposta pelo aluno ir funcionar em uma mquina de ciclo nico? Justifique sua resposta.
Sim, visto que para todas as instrues, ambos os sinais assumem os mesmos valores.
Mesmo no caso das instrues com dont care (sw e beq), a troca funcionaria, visto que
nenhuma delas escreve qualquer valor no banco de registradores.
2. Descreva o efeito que teria uma nica falha do tipo preso em 1 (isto , independente de qual deva
ser, o sinal sempre 1) sobre o multiplexador RegDst no caminho de dados de ciclo nico visto em
aula, para as seguintes instrues: a) tipo R, b) lw; c) sw, d) beq.
Se RegDst = 1, os loads no funcionaro (destino incorreto). J as demais instrues
funcionam, visto que a) esse o valor esperado para RegDst nas instrues Tipo-R, e b) sw e
beq no escrevem no banco de registradores, por isso o valor de RegDst X (dont care). No
importa, portanto, se o valor 0 ou 1, j que RegWrite impede a escrita no banco de
registradores.
3. Considere que a mquina de ciclo nico do formulrio anexo possua as seguintes latncias: 400ps
(memria de instrues), 100ps (somadores), 30ps (multiplexadores), 120ps (ALU), 200ps
(registradores), 350ps (memria de dados) e 100ps (blocos de controle). Considere adicionalmente
que a gerao dos sinais de controle seja feita em paralelo com o acesso ao banco de registradores;
e que o clculo do novo PC seja feito em paralelo com a execuo da instruo. Neste cenrio, qual o
tempo do ciclo de clock para a mquina (considere apenas as instrues tipo R, lw, sw, beq e j).
O tempo de ciclo de clock determinado pelo caminho crtico, que dado neste caso pelo
caminho de dados da instruo load: I-mem, regs, mux, alu, D-mem, 2xmux e regs. O acesso
para leitura ao banco de registradores feito na subida do clock, e de escrita na descida do
ciclo. A latncia deste caminho de 400ps + 200ps + 30ps + 120ps + 350ps +2x30ps = 1160ps.
7. Compare a razo custo-benefcio desta melhoria. Vale a pena fazer a implementao? (Dica:
calcule o custo relativo da implementao, o ganho de desempenho com a melhoria, e divida os dois.
Valores maiores que 1 indicam que o aumento no custo maior que o aumento no desempenho;
valores menores indicam o contrrio).
Custo sem implementao: 1000+100+200+2000= 3300um
Custo com implementao: 3300 + 600 = 3900um
Razo do custo: 3900/3300 = 1.18
Logo no vale a pena, j que pagaremos 18% a mais pela mquina para ter um desempenho
13% melhor.
8, 9 e 10. Processadores algumas vezes implementam operaes ponto flutuante (PF) apenas por
software. Estamos interessados em duas implementaes de um computador, uma com e uma sem
hardware de PF. Considere um programa, P, com o seguinte mix de operaes:
O computador MFP (computador com ponto flutuante) possui hardware de PF e, portanto, pode
implementar as operaes de PF diretamente, exigindo o seguinte nmero de ciclos de clock:
9. Se o computador MFP precisa de 300 milhes de instrues para esse programa, de quantas
instrues de inteiros o computador MNFP precisa para o mesmo programa?
10. Qual o tempo de execuo (em segundos) para o programa ser executado no MFP e no MNFP?
Tempo Execuo_MFP = 300/278 = 1,08s
Tempo Execuo_MNFP = 2760/500 = 5,52s
11. Considere a seguinte instruo: seq $rd, $rs, $rt, onde Registrador[rd] = valor booleano (0 ou 1)
dependendo se (Registrador [rs] == Registrador[rt]). Considere que a instruo use o formato R. a) Se
a instruo for implementada em uma mquina de ciclo nico, sero necessrias modificaes em
seu hardware? Justifique. b) Quais valores os sinais de controle devem assumir para implementar
essa instruo (j considerando eventuais modificaes propostas no item a)?
a) Sim, j que a instruo necessita que a sada Zero da ALU passe por um extensor de sinal
para ter o seu valor atribudo a rd. Tal valor deve ir para outro multiplexador que ter sua sada
direcionada para a porta Write Data do banco de registradores, em adio ao multiplexador
j existente, que ser a segunda entrada deste multiplexador adicional (dado oriundo da sada
do multiplexador acionado pelo sinal de controle MemtoReg). Um sinal de controle dever
ser criado para selecionar a entrada do multiplexador (seq, por exemplo).
12. Considere a execuo da seguinte sequencia de cdigo em uma mquina de ciclo nico:
a. and $t1, $s0, $s1
b. sw $t1, 100($s3)
Para cada instruo, quais sero os valores gerados pela unidade de controle para cada um dos
sinais de controle?
onde Registrador[rt] = Memria [Registrador [Rd] + Registrador[Rs]]. Considere que a instruo use o
formato imediato, mas que os bits 11 a 15 sejam usados para definir o valor do registrador Rd. a) Se
a instruo for implementada em uma mquina de ciclo nico, sero necessrias modificaes em
seu hardware? Justifique. b) Quais valores os sinais de controle devem assumir para implementar
essa instruo?
a) Nenhuma mudana necessria no caminho de dados. A nova variante exatamente como
lw, exceto que a ALU usar a entrada Read Register 2 em vez do imediato com sinal
estendido. Naturalmente, o formato da instruo ter que mudar: o registrador de escrita ter
que ser especificado pelo campo rd, em vez do campo rt. Porm, todos os caminhos
necessrios j esto prontos devido s instrues com Tipo-R. Para modificar o controle,
simplesmente temos que acrescentar uma nova linha tabela verdade existente. b) Para a
nova instruo, RegDst = 1, ALUSrc = 0, RegWrite = 1, MemToReg = 1, MemWrite = 0, ALUOp =
00.
14. Desejamos acrescentar a instruo jr (jump register) ao caminho de dados de ciclo nico. Inclua
quaisquer sinais de controle e caminhos de dados, se necessrios, no caminho de dados de ciclo
nico e mostre os valores que os sinais de controle devam assumir para que a instruo seja
implementada.
Uma modificao necessria no caminho de dados para permitir que o novo PC venha de um
registrador (vindo da porta 1 do banco de registradores) e um novo sinal (p. ex., JumpReg)
para controla-lo atravs de um multiplexador.
RegWrite MemRead ALU Reg Branch ALUOp MemWrite MemTo Jump JumpReg
Src Dst Reg
jr 0 0 X X 0 XX 0 X X 1
1 e 2. Dado que os tempos dos estgios individuais em um caminho de dados sejam IF=150ps,
ID=200ps, EX=200ps, MEM=200ps e WB=100ps, responda as questes 1 e 2 abaixo:
1. a) Se o tempo para a operao da ALU puder ser encurtado em 20%, isso afetar o ganho de
velocidade obtido pela tcnica de pipelining? Se sim, em quanto? Se no, por qu? b) E se a
operao de ALU agora exigir 20% mais tempo?
a) No, porque o tempo do maior estgio continua em 200ps (ID e MEM). b) Reduziria o
desempenho, pois o maior tempo passaria para o estgio EX, com 240ps.
2. Pipelines possuem registradores entre cada um dos seus estgios, e estes, por sua vez, adicional
uma latncia no tempo total de execuo do pipeline. Considere que esta latncia adicional para a
leitura de um registrador do pipeline e a escrita no registrador seguinte seja de 15ps. Neste cenrio, e
assumindo que no existam stalls no pipeline, qual seria a acelerao alcanada pelo pipeline,
quando comparada a uma mquina de ciclo nico?
Ciclo nico = 850ps
Pipeline = 215 ps
850/215 = 3.95
3. Stalls no pipeline decorrentes de falhas na previso dos desvios levam a um aumento no CPI da
aplicao. Calcule o CPI extra de uma aplicao em que 8% de suas instrues so desvios
condicionais, e em que o previsor dinmico de desvios falhe em 2% das previses. Considere nesta
questo que: a) o endereo da instruo que segue o desvio s pode ser buscado da memria de
instrues no ciclo de clock seguinte ao fim da execuo da comparao dos registradores pelo
estgio EX, b) que no existem harzards de dados, e c) que a tcnica de desvio adiado no
utilizada pelo hardware.
Cada falha na previso de desvio leva a trs ciclos de stall, j que s ao fim do estgio de
execuo (se saber o endereo correto do desvio). Assim CPIextra = 3 x 0,02 x 0.08 = 0,005.
16. Dado que os tempos dos estgios individuais em um caminho de dados sejam IF=250ps,
ID=350ps, EX=150ps, MEM=300ps e WB=200ps, responda: a) Qual o tempo de ciclo de clock em um
processador com e sem pipeline? b) Suponha que possamos escolher apenas um estgio do pipeline
para ser dividido em dois, cada um destes com metade do tempo do estgio original. Qual seria o
melhor estgio a ser dividido? Qual o novo tempo de ciclo de clock do processador?
a) 350Ps / 1250 ps
b) Seria o estgio mais caro, ID, e o novo tempo de ciclo seria 300ps.
a) Identifique os tipos de hazards que ocorreriam neste cdigo. b) Assuma agora que o processador
no implemente o mecanismo de forward. Adicione instrues NOP (bolhas no pipeline) de modo a
eliminar os hazards do pipeline.
b)
18. Considere que um dos desvios condicionais de um determinado programa teve o seguinte
comportamento durante sua execuo: T-T-T-T-T-T-T-T-T-NT, onde T significa desvio tomado e NT
significa desvio no tomado. Qual seria a taxa de erros caso um esquema de previso de 1 bit,
iniciado para prever tomado, fosse usado?
A taxa de erros seria de 10%: as 9 primeiras previses seriam corretas, e apenas na ltima
ocorreria um erro, com a previso mudando de T para NT.
19 e 20. Considere um programa composto por cinco desvios condicionais. A seguir esto listados os
resultados de cada um dos desvios para cada uma de suas execues.
19. Qual seria a taxa de erros caso um esquema de previso sempre tomado fosse usado?
Desvio condicional 1: 0 erros
Desvio condicional 2: 4 erros
Desvio condicional 3: 2 erros
Desvio condicional 4: 2 erros
Desvio condicional 5: 2 erros
taxa de erros: 10/20 = 50%
20. Qual seria a taxa de erros caso um esquema de previso de 1 bit, iniciado para prever tomado,
fosse usado?
Desvio condicional 1: 0 erros
Desvio condicional 2: 1 erro
Desvio condicional 3: 3 erros (previses: T-T-NT-T)
Desvio condicional 4: 4 erros (previses: T-NT-T-NT)
Desvio condicional 5: 1 erro (previses: T-T-T-NT)
taxa de erros: 9/20 = 45%
2. Assuma as seguintes taxas de falhas na execuo de uma aplicao por um computador: cache de
instrues, de 1% e cache de dados, 3%. O custo de uma falha, tanto de dados quanto de instrues,
equivale a 200 ciclos de CPU. O processador tem CPI igual a 1,5 quando seus dados/instrues so
encontrados na cache. Quo mais rpido executaria uma aplicao em um computador com cache
perfeita, em que 20% das instrues so de acesso a dados na memria?
Ciclos de falha de instruo = I x 1% x 200 = 2I
Ciclos de falha de dados = I x 20% x 3% x 200 = 1,2I
Total de ciclos de stall de memria = 2I + 1,2I = 3,2I
CPI = 1,5 + 3,2 = 4,7
Como no h mudana na contagem de instrues e na velocidade do clock, temos:
Tempo de CPUcom stall / Tempo de CPUcom cache perfeita = (I x CPIstall x Ciclo de clock)/ (I x CPI perfeito x
Ciclo de clock) CPIstall/CPIperfeito = 4,7 / 1,5 = 3,1 vezes mais rpido
3. Considere um computador que possua endereos virtuais de 47 bits, pginas de 16KB e 4 bytes
por entrada da tabela de pginas. Se uma nica tabela de pginas for utilizada para guardar todas as
tradues entre endereos virtuais em endereos fsicos, qual ser o tamanho da tabela de pginas
deste computador?
Nmero de entradas = 247 / 214 = 233
Tamanho da tabela = 233 * 4 = 235 bytes
4. Qual o tempo mdio de acesso memria em um processador com clock de 1 ns, penalidade de
falha de 20 ciclos de clock, taxa de falhas (instrues + dados) de 5% por instruo, e tempo de
acesso cache (incluindo a deteco de um acerto) de 1 ciclo de clock? Assuma que as penalidades
de leitura e escrita so iguais e ignore qualquer outra parada decorrente da escrita de dados.
Tempo = (1 ciclo + 0,05 *20) * 1ns = 2 * 1ns = 2ns
5. Para uma cache diretamente mapeada projetada com endereos de 32 bits, os seguintes bits do
endereo so utilizados para acessar a cache: tag (bits 10 a 31); index (bits 9 a 5) e offset (bits 4 a 0).
Baseado nessas informaes, e lembrando que um bloco de cache composto por vrias palavras, e
que cada byte pode ser acessado de modo individual dentro de uma palavra, responda: a) Qual a
quantidade de bytes que podem ser armazenadas na cache? b) Qual o tamanho total da cache?
a) A cache possui 32 entradas (25), cada entrada com blocos de 8 (23) palavras. Logo o
tamanho total da cache de 32 x 8 x 4 bytes = 1.024 bytes = 8196 bits = 1 KB.
b) Contudo, devemos armazenar adicionalmente o tag e o bit de validade para cada entrada
(23 bits adicionais), num total de 23x32 + 1024x8 = 8928 bits. Overhead = 8.9%
6. Usando a srie de referncias memria 13, 40, 20, 13 e 40 mostre (10 pts) a) o contedo final da
cache e (10 pts) b) a taxa de falhas, considerando que o sistema possui uma cache diretamente
mapeada com blocos de duas palavra e um tamanho total de 16 palavras. Os endereos so dados
em palavras.
a)
0
1
2 [20,21]
3
4 [40,41]
5
6 [12,13]
7
7. Baseado no cdigo abaixo, escrito em C e que realiza algumas operaes com duas matrizes a e
b, responda as duas questes abaixo:
8. Para uma cache diretamente mapeada projetada com endereos de 32 bits, os seguintes bits do
endereo so utilizados para acessar a cache: tag (bits 10 a 31); index (bits 5 a 9) e offset (bits 0 a 4).
Baseado nessas informaes, e lembrando que um bloco de cache composto por vrias palavras, e
que cada byte pode ser acessado de modo individual dentro de uma palavra, responda: a) Qual o
tamanho do bloco da cache, em palavras? b) Quantas entradas a cache possui?
a) 8
b)32
9. Para uma cache diretamente mapeada projetada com endereos de 32 bits, os seguintes bits do
endereo so utilizados para acessar a cache: tag (bits 12 a 31); index (bits 6 a 11) e offset (bits 0 a
5). Baseado nessas informaes, e lembrando que um bloco de cache composto por vrias
palavras, e que cada byte pode ser acessado de modo individual dentro de uma palavra, responda: a)
Qual o tamanho do bloco da cache, em palavras? b) Quantas entradas a cache possui?
a) 16
b)64
10. Usando a srie de referncias aos blocos de memria 3, 4, 2, 3, 4, 14, 10, 2, 2, 13 mostre a) os
acertos e falhas e b) o contedo final da cache para uma diretamente mapeada com blocos de uma
palavra e um tamanho total de 8 palavras.
a) 3 (miss), 4 (miss), 2 (miss), 3 (hit), 4 (hit), 14 (miss), 10 (miss), 2 (miss), 2 (hit), 13 (miss)
b)
0
1
2 2 M[2]
3 3 M[3]
4 4 M[4]
5 13 M[13]
6 14 M[14]
7
11. Considere a seguinte lista de referncias a endereos de memria, dadas como endereos de
palavras, de uma mquina de 32 bits: 3, 180, 43, 2, 191, 88, 190, 14, 181, 44, 186, 253. a) Apresente
o contedo final de uma cache totalmente associativa com blocos de duas palavras e tamanho total
de 8 palavras, e que usa LRU para substituio das entradas? b) Qual a taxa de falhas da cache para
estes acessos?
a)
252 253 180 181 42 43 190 191 88 89 14 15 44 45 186 187
b) 3 miss; 180 miss ; 43 miss ; 2 hit ; 191 miss; 88 miss ; 190 hit ; 14 miss ; 181 miss ; 44 miss ;
186 miss ; 253 miss
Tempo de CPU com stall / Tempo de CPU com cache perfeita = (I x CPIstall x Ciclo de clock)/ (I
x CPIperfeito x Ciclo de clock) CPIstall/CPIperfeito = 4,7 / 1.5 = 3,1 vezes mais rpido
13. Qual o tempo mdio de acesso memria em um processador com clock de 1 ns, penalidade de
falha de 20 ciclos de clock, taxa de falhas (instrues + dados) de 5% por instruo, e tempo de
acesso cache (incluindo a deteco de um acerto) de 1 ciclo de clock? Assuma que as penalidades
de leitura e escrita so iguais e ignore qualquer outra parada decorrente da escrita de dados.
Tempo = (1 ciclo + 0,05 *20) * 1ns = 2 * 1na = 2ns
14. Considere a seguinte lista de referncias a endereos de memria, dadas como endereos de
palavras, de uma mquina de 32 bits: 2, 3, 11, 2, 2, 10, 11, 2, 3, 10, 12, 11. a) Apresente o contedo
final de uma cache associativa por conjunto de duas vias com blocos de duas palavras e tamanho
total de 16 palavras, e que usa LRU para substituio das entradas? b) Qual a taxa de falhas da
cache para estes acessos?
a)
0
1 2 3 10 11
2 12 13
3
b) 3/12 = 0,25 ou 25%
15. Usando a srie de referncias aos blocos de memria 3, 4, 2, 3, 4, 14, 10, 2, 2, 13 mostre (1.0 pt)
a) os acertos e falhas e (1.0 pt) b) o contedo final da cache para uma diretamente mapeada com
blocos de uma palavra e um tamanho total de 8 palavras. Considere que os endereos apresentados
acima so em words.
a) 3 (miss), 4 (miss), 2 (miss), 3 (hit), 4 (hit), 14 (miss), 10 (miss), 2 (miss), 2 (hit), 13 (miss)
b)
0
1
2 2 M[2]
3 3 M[3]
4 4 M[4]
5 13 M[13]
6 14 M[14]
7
Bloco 0 Bloco 1
Conjunto 0
Conjunto 1 M[3] M[5]
b)
1 (falha), 3 (falha), 5 (falha), 1 (falha), 3 (falha), 1 (acerto), 3 (acerto), 5 (falha), 3 (acerto), 5
(acerto)
17. Suponha que taxa de falhas de cache de instrues para um programa seja de 3% e que uma
taxa de falhas de cache de dados seja de 5%. Se um processador possui CPI de 2 sem qualquer stall
de memria e a penalidade de falha de 70 ciclos para todas as falhas, determine o quanto mais
rpido um processador executaria com uma cache perfeita que nunca falhasse. Considere que a
frequncia de todos os loads e stores seja de 20%.
Ciclos de falha de instruo = I 3% 70 = 2.1I
Ciclos de falha de dados = I 20% 5% 70 = 0,7I
Total de ciclos de stall de memria = 2,1I + 0,7I = 2,8I
CPI = 2 + 2,8 = 4,8
Como no h mudana na contagem de instrues e na velocidade do clock
Tempo de CPUcom stall = I CPIstall ciclos de clockCPIstall =
Tempo de CPUcom cache perfeita I CPIperfeito ciclos de clockCPIperfeito
4,8 / 2 = 2,4
1. Suponha que o disco esteja ocioso, de modo que no existe um tempo de espera. Neste cenrio,
qual o tempo mdio para ler ou escrever um setor do disco?
Tempo de acesso = 12 + (0.5*60*103/3600) + (512/(3.5*106))*1000 + 5.5 = 25.97 ms
2. Suponha agora que tenhamos um RAID 0 construdo com quatro destes discos. A controladora
deste RAID sincroniza os braos de todos os discos de modo que todos estejam sempre nos mesmos
setores das mesmas trilhas. Os dados a serem escritos so divididos entre os quatro discos, de modo
que quatro setores consecutivos possam ser lidos em paralelo. Qual o tempo mdio para lermos
32KB consecutivos deste RAID?
Uma vez que quatro setores consecutivos podem ser lidos em paralelo, podemos ler 4 * 512 =
2KB por vez. Para ler 32 KB, temos de ler 16 setores em cada disco. 16 setores equivalem a 16
x 512 = 8KB. Tempo de acesso = 12 + (0.5*60*103/3600) + (8*1024/(3.5*106))*1000 + 5.5 = 28.17
ms
3. Considere um disco com um setor de tamanho igual a 1024 bytes, e que gire a 10.000 rpm. Neste
disco, o tempo de seek mdio de 7ms, a taxa de transferncia de 40 MB/seg e o overhead da
controladora de 0,1 ms. Suponha que o disco esteja ocioso, de modo que no existe um tempo de
espera. Neste cenrio, qual o tempo mdio para ler ou escrever um setor do disco?
Tempo de acesso: Tempo mdio de seek + atraso rotacional mdio + tempo de transferncia +
overhead da controladora + tempo de espera
Tempo de acesso = 7ms + (0,5 rotao /10000 RPM) +(1 KB / 40 MB/sec) + 0,1 + 0 = 7 + 3 + 0,025
+ 0,1 =10,125 ms
4. Conforme visto em sala, as operaes de E/S podem ser executadas em barramentos sncronos
ou assncronos. Que tipo de barramento seria mais apropriado para lidar com comunicao entre a
CPU e uma impressora? Justifique.
Assncrono. A impressora eletricamente distante da CPU.
2* (0.004 seg + 0.5 / (10000/60) seg + 0.001) + (20 milhes de ciclos)(2 GHz) seg =
2* (0.004 + 0.003 + 0.001) + 0.01 = 26 ms
7. Suponha que um benchmark execute em 100 segundos, dos quais 90 destes sejam tempo de CPU
e os demais tempos relativos a operaes de E/S. Suponha que a cada dois anos o nmero de
ncleos dobre, reduzindo assim a metade o tempo de execuo do programa na CPU, contanto sem
alterar o tempo de E/S. Quo mais rpido executar este mesmo benchmark ao fim de 4 anos?
Tempo de E/S fixo, 10s
Tempo de execuo aps 2 anos: 45 seg. Aps 4 anos: 22,5 seg
Tempo total de execuo: 32,5 seg
Ao fim de 4 anos, 100/32,5 = 3,07 vezes mais rpido
8. Se o processador detecta que um byte de dados est pronto por meio de polling, e se cada polling
demanda 60 ciclos, quantos ciclos a operao inteira utiliza?
Se assumirmos que o processador processa dados antes de realizar o polling para o prximo
byte, os ciclos gastos com polling so 0,02 ms * 1 GHz 1000 ciclos = 19.000 ciclos. Uma
iterao realizando polling leva 60 ciclos, logo 19,000 ciclos = 316,7 polls. Uma vez que se leva
uma iterao completa de polling para detectar um novo byte, os ciclos gastos com polling
so na realidade 317 * 60 = 19.020 ciclos. Cada byte leva ento 19.020 + 1.000 = 20.020 ciclos. A
operao completa leva 20.020 * 1.000 = 20.020.000 ciclos. (Na realidade, o terceiro byte da
sequncia obtido com 316 polls, ao invs de 317; a resposta levando esse fato em
considerao seria 20.000.020 ciclos.)
9. Se, em vez disso, o processador for interrompido quando um byte estiver pronto, e o processador
gastar o tempo entre as interrupes em outra tarefa, quantos ciclos dessa outra tarefa o processador
pode completar enquanto a comunicao de E/S est ocorrendo, considerando que o overhead para
tratar uma interrupo de 200 ciclos?
Cada vez que um byte chega, o processador leva 200 + 1.000 = 1.200 ciclos para process-lo.
0,02 ms * 1 GHz 1200 ciclos = 18.800 ciclos gastos em outras tarefas para cada byte lido. O
tempo total gasto em outras tarefas 18.800 * 1.000 = 18.800.000 ciclos.