Você está na página 1de 31

UFJF / ICE / DCC

Organizao de Computadores Prof. Marcelo Lobosco

Questes anteriores de provas


Aviso importante: atendendo recorrente solicitao dos alunos, preparei o material abaixo,
composto no s pelas questes de provas anteriores, como tambm um esboo de sua resoluo.
Contudo, como resolvi um enorme volume de questes em um curto intervalo de tempo, posso ter
cometido equvocos na sua resoluo e digitao. Assim, em caso de dvida quanto a corretude das
respostas, procure o professor. As respostas aparecem destacadas em negrito.

Primeira parte da disciplina

A) questes relativas ao item 4 do programa (Avaliando e Compreendendo o


Desempenho)
1. Uma das armadilhas vistas em sala de aula estava relacionada expectativa de que a melhoria de
um aspecto de um computador levasse a um aumento de desempenho em quantidade proporcional
ao tamanho desta melhoria. Isto pode ser verdade, mas nem sempre. Considere um computador com
os seguintes tempos de execuo para uma aplicao: 700s para executar instrues de ponto
flutuante, 850s para executar instrues de inteiros, 550s para executar instrues de entrada/sada,
400s para executar instrues de desvio, com tempo total de execuo de 2.500s. possvel reduzir
o tempo total de execuo em 10% reduzindo apenas o tempo para executar a instruo de desvio?
Justifique sua resposta.
Sim, visto que a reduo seria de 250s, e o tempo para executar a instruo de desvio de
400s. Deste modo, se a instruo de desvio for reduzida para 150s, a reduo seria factvel.

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)

MIPS_P1: 3 x 109 / 1.1 x 106 = 2.73 x 103


MIPS_P2: 2.5 x 109 / 1.0 x 106 = 2.5 x 103

Por MIPS, melhor processador P1. Mas o que ocorre quando consideramos o tempo de
execuo?

Tempo de execuo = ( Instrues x CPI ) / velocidade_clock

P1: ( 3x106 x 1.1) / 3 x 109 = 1.1 x 10-3s


P2: (0.5x106 x 1) / 2.5 x 109 = 2 x 10-4s

Pelo tempo, processador P2 mais rpido.

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.

4. Qual o tempo de execuo da aplicao, considerando um processador de 2GHz?


Total de ciclos = (600 x 1) + (200 x 4) + (600 x 4) + (100 x 2) = 600 + 800 + 2400 + 200 = 4.000
Tempo de ciclo = 0.5 x 10-9 s
Tempo de execuo = tempo de ciclo x total de ciclos = 4000 x 0.5 x 10-9 s = 2.000 ns = 2,0us

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%

6 a 8. Voc o diretor de projeto de um novo processador. O projeto do processador e o compilador


esto completos e, agora, voc precisa decidir entre produzir o projeto atual como est ou gastar
mais tempo para melhor-lo. Voc discute esse problema com sua equipe de engenharia de
hardware e chega s seguintes opes: a) Deixar o projeto como est. Chame esse computador
bsico de Mbase. Ele possui uma velocidade de clock de 500MHz; e b) Otimizar o hardware. A equipe
de hardware afirma que pode melhorar o projeto do processador para conferir-lhe uma velocidade de
clock de 600MHz. Chame esse computador de Mopt. Qual o CPI para cada computador? Considere
nesta questo as seguintes medies feitas usando um simulador para Mbase e Mopt:

Classe de Instruo Frequncia CPI de Mbase CPI de Mopt


A 40% 2 2
B 25% 3 2
C 25% 3 3
D 10% 5 4

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

7. Quais so os ndices MIPS nativos para Mbase e Mopt?


Vimos em questes anteriores que a frmula do MIPS pode ser reescrita como: MIPS =
velocidade_clock / (cpi x 106). Assim, temos:

MIPS do Mbase = (500 106) / (2,8 x 106) = 178,6


MIPS do Mopt = (600 106) / (2,45 x 106) = 244,9

8. O quanto Mopt mais rpido do que Mbase?


Como Mbase e Mopt utilizam o mesmo conjunto de instrues, o desempenho relativo pode
ser determinado como a razo de suas classificaes MIPS (ao contrrio do tempo de
execuo). Assim: Mopt mais rpido do que Mbase por um fator de (244,9 MIPS/178,9 MIPS) =
1,37

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:

Classe de Instruo Percentual de instrues executadas em relao


ao computador Mbase
A 90%
B 90%
C 85%
D 95%

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

Assim, podemos calcular o CPI como

CPI =(2x0,4x0,9+3x0,25x0,9+3x0,25x0,85+5x0,1x0,95)/0,8925 = 2,81

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:

(Desempenho Mcomp/Desempenho Mbase) = (Tempo Mbase/Tempo Mcomp) =


[(InstruesMBasex2,8)/Velocidade de clock]/[(InstruesMBasex0,8925x2,81)/Velocidade de
clock]=1,12

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:

CPI de MBoth = (2x0,4x0,9 + 2 x 0,25x0,9 + 3x0,25x0,85+4x0,1x0,95)/0,8925=2,45

(Desempenho Mboth/Desempenho Mbase) = (Tempo Mbase/Tempo Mboth) =


[(ICx2,8)/Velocidade de clock]/[(ICx0,8925x2,45)/Velocidade de clock]=(2,8/500)/(2,19/600)=1,53

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:

Otimizao Tempo para implementar (em meses) Nome do Computador


Hardware 6 Mopt
Compilador 6 Mcomp
Ambos 8 Mboth

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.

Meses Mbase Mcomp Mopt Mboth


0 1
6 1,22 1,12 1,37
8 1,31 1,2 1,46 1,53

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.

P1 = 3 109/1.5 = 2 109 instrues por segundo


P2 = 2.5 109/1.0 = 2.5 109 instrues por segundo
P3 = 4 109/2.2 = 1.8 109 instrues por segundo

b.1) Tempo = Ciclos/Frequncia, logo Ciclos = Tempo * Frequencia. Assim:


b.1) ciclos de P1 = 10 3 109 = 30 109 ciclos
ciclos de P2 = 10 2.5 109 = 25 109 ciclos
ciclos de P3 = 10 4 109 = 40 109 ciclos

b.2) Ciclos = Nmero de instrues * CPI. Logo Instrues = Ciclos/CPI


No. instrues de P1 = 30 109/1.5 = 20 109 instues
No. instrues de P2 = 25 109/1 = 25 109 instues
No. instrues de P3 = 40 109/2.2 = 18.18 109 instues

14. Compiladores tm um impacto profundo no desempenho de uma aplicao em um processador.


Para um mesmo programa, dois compiladores distintos foram utilizados, A e B. O compilador A gerou
1 bilho de instrues, e o compilador B gerou 1.2 bilhes de instrues. Ambos os programas
executaram em 1.8 segundos. Encontre o CPI mdio para cada programa, considerando que o
computador onde o mesmo foi executado tenha clock de 1ns.
CPI = Tempo / Instrues* Tempo_do_ciclo
CPI do programa gerado pelo compilador A: 1.8 / 1x109 * 1x10-9= 1.8
CPI do programa gerado pelo compilador B: 1.8 / 1.2x109 * 1x10-9= 1.5

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

tempo_p1: ( 106 x 1.7 ) / 2.5 x 109 = 6.8 x 10-4


tempo_p2: ( 106 x 1.2 ) / 3 x 109= 4 x 10-4

A implementao P2 a mais rpida por executar o cdigo em menos tempo.

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

b) M1: MIPS = Clock Rate/(CPI * 106 ) = (80 * 106 ) / (1.6*106) = 50.0


M2: MIPS = Clock Rate/(CPI * 106) = (100 * 106) / (2.5*106) = 40.0

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:

Ta/4 = Ta*P / 15 + Ta - Ta*P


Ta /4 Ta = Ta*P/15 Ta*P
15*Ta 60Ta = 4*Ta*P 60*Ta*P
45*Ta = 56*Ta*P
P=45/56
P = 80,37

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:

Programa Tempo em M1 (em Tempo em M2 (em


seg.) seg.)
1 2,0 1,5
2 5,0 10,0

Considerando que o custo de M1 de US$500,00 e de M2 US$800,00, responda:

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.

B) questes relativas ao item 2 do programa (Instrues: a Linguagem de Mquina)

1. Qual o cdigo em linguagem de mquina MIPS para a instruo sub $t1, $t2, $t3 ?
000000 01010 01011 01001 00000 100010

2. Qual o cdigo em linguagem de mquina MIPS para a instruo: lw $t1, 64($s0) ?


100011.10000.01001.0000000001000000

3. Qual a instruo MIPS codificada pela seguinte sequncia de bits:


00100001001010000000000000000001?
001000 = addi
01001 = 9 = $t1
01000 = 8 = $t0
0000000000000001 = 1
Logo, temos addi $t0, $t1, 1

4. Que instruo MIPS representada pela seguinte sequncia de bits


00000001010010000100100000101010 ?
000000 = Instruo tipo I
01010 = $t2 (registrador 10)
01000 = $t0 (registrador 8)
01001 = $t1 (registrador 9)
00000 = sem deslocamento
101010 = 2A (slt)
Logo, temos slt $t1, $t2,$t0

5. Qual a instruo MIPS codificada pela seguinte sequncia de bits:


00100001001010000000000000000001?
addi $t0, $t1, 1
6. Suponha que no fragmento de cdigo abaixo $a0 e $a1 sejam usados para a passagem de
parmetros e que estes contenham inicialmente os inteiros a e b, respectivamente. Suponha que $v0
seja usado para a sada. Descreva em uma sentena o que ser retornado em $v0.

add $t0, $zero, $zero


loop: beq $a1, $zero, finish
add $t0, $t0, $a0
sub $a1, $a1, 1
j loop
finish: addi $t0, $t0, 100
add $v0, $t0, $zero

Ser retornado a*b + 100.

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

8. Em vez de usar um multiplicador de hardware especial, possvel multiplicar usando instrues


shift e add. Isso particularmente interessante quando estamos multiplicando por pequenas
constantes. Suponha que queiramos colocar nove vezes o valor de $s0 em $s1, ignorando qualquer
overflow que possa ocorrer. Mostre uma sequncia mnima de instrues MIPS para fazer isso sem
usar uma instruo multiply.
#Esta soluo destri o valor de $s0
addu $s1, $s0, $zero
sll $s0, $s0, 3
addu $s1, $s1, $s0

#Esta soluo preserva $s0


addu $s1, $s0, $zero
sll $t0, $s0, 3
addu $s1, $s1, $t0

9. Transforme o seguinte cdigo C em assembly MIPS:

int positive (int a, int b) {


if(addit(a,b)>0) return 1; else return 0;
}
int addit (int a, int b) {
return a+b;
}

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

10. Transforme o seguinte cdigo C em assembly MIPS:

int menor (int a, int b) {


if (a<b) return 1;
else return 0;
}

int conta (int v[], int r[], int s) {


int i = 0;
while (menor (v[i],r[i]) && i < s) i++;
return i;
}

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

11. Transforme o seguinte cdigo C em assembly MIPS:

int soma (int a, int b) { return a+b; }

int reduz (int v[], int size) {


int resultado = 0, i;
for (i=0;i<size;i++) resultado = soma (resultado, v[i]);
return resultado;
}

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

12. Transforme o seguinte cdigo C em assembly MIPS:

int sum (int n, int acc) {


if (n>0) return sum (n-1, acc+n);
else return acc;
}

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

13. Transforme o seguinte cdigo C em assembly MIPS:

int fibonacci(int num) {


if(num==1 || num==2) return 1;
else return fibonacci(num-1) + fibonacci(num-2);
}

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

14. Transforme o cdigo C da figura 1 em assembly MIPS.

void somap (int* A,int* B, int size) {


int i;
for (i=1; i < size; i++)
A[i] = A[i-1] + B[i];
}

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

15. Transforme o cdigo C abaixo em assembly MIPS.

int power(int b,int p) {


if(p==0) return 1;
else return b*(power(b,p-1));
}

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

17. Considere o seguinte fragmento de cdigo assembly:

addi $t0, $zero, 1


addi $t5, $zero, 100
loop:
lw $t1, 0($a1)
lw $t2, 4($a2)
add $t3, $t1, $t2
sw $t3, 4($a1)
addi $a1, $a1, 4
addi $a2, $a2, 4
addi $t0, $t0, 1
bne $t0, $t5, loop

Escreva o cdigo C equivalente a esta operao.

for (i=1; i<100; i++)


A[i] = A[i-1] + B[i]

onde A[i] e B[i] so o primeiro e segundo parmetros da funo

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:

sll $s2, $s4, 1


add $s0, $s2, $s3
add $s0, $s0, $s1

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.

sll $s1, $s2, n

Elas podem ser implementadas por um loop:

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.

23. Por que o MIPS no tem uma instruo de subtrao imediata?


Porque o campo imediato pode assumir valor negativo.

24. Se o valor do PC 0x0 (endereo 0 da memria), quantas operaes de desvio seriam


necessrias para que o valor de PC passasse a apontar para o endereo 0000 0000 0000 0010 0000
0000 0000 0000?
Um desvio. Visto que o desvio uma instruo do tipo I, teramos 16 bits para expressar o
nmero de words que desejamos desviar. Podemos assim desviar at PC+4+Endereo do
desvio em words, o que nos permitiria desviar at o endereo 0000 0000 0000 0010 0000 0000
0000 0100, portanto superior ao endereo dado no enunciado da questo.

Segunda parte da disciplina


A) questes relativas ao item 3 do programa (Aritmtica Computacional)
1. Suponha que o registrador $t0 contenha o valor 1000 0000 0000 0000 0001 0000 0000 0000. Qual
o valor do registrador $t2 depois que a seguinte sequencia de instrues for executada?

slt $t2, $zero, $t0


bne $t2, $zero, ELSE
j DONE
ELSE: addi $t2, $t2, 2
DONE:

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:

a) um inteiro em complemento a dois? 613566756


b) um inteiro sem sinal? 613566756
c) um nmero em ponto flutuante com preciso simples? 6,344131x10-17
d) uma instruo MIPS? addiu $s2, $a0, 18724

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

4. Que situao leva a ocorrncia de overflow em um computador?


Em nmeros inteiros, ocorre quando um valor torna-se to grande que no pode ser
representado pelos bits que o representam no computador. No caso de ponto-flutuante,
quando o expoente positivo muito grande para ser representado pelos bits do expoente.

5. Que situaes levam a ocorrncia de um underflow durante a execuo de um cdigo?


Quando o resultado de um clculo menor do que o menor nmero que pode ser
representado pelo computador.

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

addu $t2, $t3, $t4


sltu $t2, $t2, $t4
12. Sabendo-se que o padro IEEE 754 em preciso simples foi utilizado na representao do
nmero binrio 11000001001001000000000000000000, pergunta-se que valor na base decimal o
mesmo representa.
Sinal: 1
expoente: 130
mantissa: 0,01001
(-1)s x (1+frao) x (2expoente bias) = -1 x (1+0,01001) x 23=-1 x1,01001 x8=-8*(1+1/4+1/32)=-
8*1.28125= -10.25

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

B) questes relativas ao item 5 do programa (Organizao de Processadores)

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.

4. Considere a implementao da instruo jal. 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. A instruo jal faz R[31] = PC + 8 e PC = JumpAddr. O hardware j prev todo o
mecanismo para fazer PC = JumpAddr, visto que esta a mesma implementao da instruo
j. Contudo, so necessrias modificaes para fazer R[31] = PC + 8. Inicialmente, mais um
somador deve pegar o resultado de PC + 4 e som-lo a constante 8 (ou de modo alternativo
pegar diretamente o valor de PC e som-lo a constante 8). Esse valor ento servir de antrada
no banco de registradores, em Write data. Como j existe um valor alimentando Write
data, vindo do multiplexador, temos duas alternativas para implementao: a) alterar o
multiplexador existente, que passaria a ter 3 entradas, ao invs de 1 (a terceira entrada seria o
resultado do somador adicionado); adicionalmente o sinal de controle MemtoReg passaria a
ter 2 bits, ou b) Adicionar um multiplexador de 2 bits, que teria como primeira entrada o valor
oriundo do multiplexador original, e como segunda entrada o valor de PC+8, gerado pelo
somador. Um sinal de controle de 1 bit seria adicionado para definir a sada desejada. Do
mesmo modo, o valor write register deve admitir que a constante 31 possa ser atribuda a
porta, alm dos valores j existentes. Pode-se usar a mesma alternativa de projeto citada
anteriormente para a soluo de write data.

b) Imaginando que dois multiplexadores tenham sido adicionados arquitetura, teriamos:


RegDst = X ; Jump = 1 ; Branch = 0 ; MemRead = 0 ; MemtoReg = X ; ALUOp= XX ; MemWrite =
0; ALUSrc = X; RegWrite = 1 ; RegDstJal = 1 ; JalReg = 1.

6 e 7. Quando projetistas consideram melhorias em um processador, em geral a deciso depender


da razo custo/benefcio. Assuma para as prximas questes uma mquina de ciclo nico que
implemente em hardware as instrues lw, sw, add, sub, and, or, slt, beq e j. Nesta mquina os tempo
de acesso as unidades funcionais so os seguintes: memria de instrues, 400ps; banco de
registradores, 100ps; ALU, 150ps; Memria de dados, 400ps. Os custos dessas unidades so
respectivamente 1000 unidades monetrias (um), 200 um, 100 um e 2000 um. Considere que
estamos estudando a viabilidade de implementar na ALU mais uma instruo Tipo-R, mul. O custo da
implementao de acrescentar 300ps no tempo da execuo de todas as operaes da ULA e
adicionar 600um em seu custo. O benefcio dessa implementao reduzir o total de instrues em
30%, j que a instruo mul deixar de ser emulada.

6. Encontre o tempo de ciclo com e sem a implementao da instruo mul na ALU.

a) sem implementao de mul

Instruo Mem I Reg ALU Mem Dados Reg Total


lw 400 100 150 400 100 1150
sw 400 100 150 400 1050
Tipo-R 400 100 150 100 750
beq 400 100 150 650
j 400 100 500

Tempo de ciclo sem implementao de mul: 1150

a) com implementao de mul

Instruo Mem I Reg ALU Mem Dados Reg Total


lw 400 100 450 400 100 1450
sw 400 100 450 400 1350
Tipo-R 400 100 450 100 1050
beq 400 100 450 950
j 400 100 500

Tempo de ciclo sem implementao de mul: 1450

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

Desempenhocom / Desempenhosem = Temposem/Tempocom


Isem X CPIsem x tempo do ciclosem / Icom X CPIcom x tempo do ciclocom
1 x 1 x 1150 / 0.7 x 1 x 1450 = 1.13

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:

Multiplicaes em ponto flutuante 10%


Adies/subtraes em ponto flutuante 15%
Diviso em ponto flutuante 5%
Instrues de inteiros 70%

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:

Multiplicaes em ponto flutuante: 06


Adies/subtraes em ponto flutuante: 04
Diviso em ponto flutuante: 20
Instrues de inteiros: 02

O computador MNFP (computador sem ponto flutuante) no possui qualquer hardware de PF e


precisa emular as operaes de PF usando instrues de inteiros. Todas as instrues de inteiros
levam 2 ciclos de clock. O nmero de instrues de inteiros necessrio para implementar cada uma
das operaes de PF o seguinte:

Multiplicao em ponto flutuante: 30


Adio/subtrao em ponto flutuante: 20
Diviso em ponto flutuante: 50

Os dois computadores possuem uma velocidade de clock de 1.000MHz.

8. Encontre os ndices de MIPS nativos para ambos os computadores.


CPI_MFP = 0,1x5+0,15x4+0,05x20+0,7x2=3,6
CPI_MNFP = 2

MIPS_MFP = 1000/3.6 = 278


MIPS_MNFP = 1000/2 = 500

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?

Multiplicao PF 10% 30 900


Soma /Subtrao PF 15% 45 900
Diviso PF 5% 15 750
Inteiros 70% 210 210
Total 300 2760

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).

b) seq = 1; RegDst = 1; Branch = 0; jump = 0; MemRead=0; MemWrite=0; MemtoReg=X;


ALUOp=01; AluSrc=1; RegWrite=1.

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?

RegWrite MemRead ALUSrc RegDst Branch ALUOp MemWrite MemToReg Jump


a 1 0 1 1 0 10 0 0 0
b 0 0 0 X 0 00 0 X 0

13. Considere a seguinte instruo:

lwi $Rt, $Rd, $Rs

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

Terceira parte da disciplina

A) questes relativas ao item 6 do programa (Pipelining)

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.

4. Considere a seguinte sequncia de instrues:

ADD R1, R2, R1


LW R2, 0(R1)
LW R1, 4(R1)
OR R3, R1, R2

a) Assumindo que o processador implemente o mecanismo de forward, encontre todos os hazards


nesta sequencia de instrues. b) Assumindo agora que o processador no implemente o mecanismo
de forward, encontre todos os hazards nesta sequencia de instrues.
a) I3 para I4 (R1)
b)I1 para I2 e I3 (R1) ; I2 para I4 (R2) ; I3 para I4 (R1)

5. Um arquiteto de computadores precisa projetar o pipeline de um novo microprocessador. Ele tem


um ncleo de um programa exemplo com 10 12 instrues. Cada instruo exige 50ps para terminar.
a)(1.0 pt) Suponha que o arquiteto projete um pipeline perfeito com 15 estgios. a) Qual o ganho de
velocidade conseguido em comparao com o processador sem pipeline? b) Quanto tempo ser
necessrio para executar esse ncleo de programa no processador com pipeline projetado?
a) 15 vezes
b) (50 x 10-12 x 1012)/15 = 3.3s

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.

17. Considere a seguinte sequncia de instrues:

SW R16, -100 (R6)


LW R4, 8 (R16)
ADD R5, R4, R4

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.

a) Apenas um hazard de dados entre LW e ADD no acesso R4.

b)

SW R16, -100 (R6)


LW R4, 8 (R16)
NOP
NOP
ADD R5, R4, R4

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.

Desvio condicional 1: T-T-T-T


Desvio condicional 2: NT-NT-NT-NT
Desvio condicional 3: T-NT-T-NT
Desvio condicional 4: NT-T-NT-T
Desvio condicional 5: T-T-NT-NT

onde T significa desvio tomado e NT significa desvio no tomado.

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%

B) questes relativas ao item 7 do programa (Hierarquia de memria)


1. Considere uma cache associativa por conjunto de 4 vias, formada por 4K blocos, com blocos de 8
palavras e endereos de 32 bits. Determine a quantidade de bits usada para o tag, ndice e offset do
bloco. Lembre-se que cada byte pode ser acessado de modo individual dentro de uma palavra.
Em uma cache associativa por conjunto de 4 vias, formada por 4K blocos, temos um total de
4K/4 = 1K conjuntos. Precisamos ento de 10 bits para o ndice, ou seja, para acessar uma
entrada no conjunto. Para o offset do bloco, composto por 8 palavras por bloco, so
necessrios log28=3 bits. Somam-se a estes os 2 bits para o offset do byte. Temos assim que
tag = 32 10 3 2 = 17 bits.

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

b) 13 (falha), 40 (falha), 20 (falha), 13 (acerto), 40 (acerto) = 2/5 = 40%

7. Baseado no cdigo abaixo, escrito em C e que realiza algumas operaes com duas matrizes a e
b, responda as duas questes abaixo:

for (i = 0 ; i < 8 ;i++)


for (j = 0; j < 8000; j++)
a[i][j] = b[i][0] + a[j][i];

a) Referncias a que variveis no cdigo exibiriam localidade temporal?


b) Referncias a que variveis no cdigo exibiriam localidade espacial?

Lembre-se que em C os elementos de uma mesma linha so armazenados de modo contguo na


memria.
a) i, j e b[i][0]
b) a[i][j]

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

180 181 44 45 252 253 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

miss rate: 10/12 = 83,3%


12. 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 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 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

16. Usando a srie de referncias memria 1, 3, 5, 1, 3, 1, 3, 5, 3, e 5 mostre (10 pts) a) o contedo


final da cache e (10 pts) b) a taxa de acertos, considerando que o sistema possui uma cache
associativa por conjunto de duas vias, com blocos de uma palavra e um tamanho total de 4 palavras.
Os endereos so dados em palavras e o esquema LRU usado na substituio dos blocos de
cache.
a)

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)

taxa de acertos = 40%

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

C) questes relativas ao item 8 do programa (Armazenamento, redes e outros


perifricos)

1 e 2. Considere um disco magntico com as seguintes caractersticas: a) Tempo de seek mdio:


12ms; velocidade de rotao: 3600 RPM; Taxa de transferncia: 3,5MB/s; Setores por trilha: 64;
Tamanho do setor: 512 bytes; Overhead da controladora: 5.5 ms.

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.

5. Um programa realiza repetidamente um processo em trs etapas: ele l um bloco de 4 KB de


dados do disco, faz algum processamento nesses dados e depois escreve o resultado como outro
bloco de 4 KB em outro lugar no disco. Cada bloco contguo e localizado aleatoriamente em uma
nica trilha do disco. A unidade de disco gira a 10.000 rpm, possui um tempo de seek mdio de 4ms e
uma velocidade de transferncia de 50 MB/s. O overhead do controlador de 1ms. Nenhum outro
programa est usando o disco ou o processador, e no existe sobreposio de operaes de disco
com processamento. A etapa de processamento utiliza 20 milhes de ciclos de clock, e a velocidade
do clock de 2GHz. Qual a velocidade geral do sistema em blocos processados por segundo?
2*(Tempo de Seek + Atraso rotacional + Overhead) + tempo de processamento

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

Blocos processados/seg = 1/26 ms 38.5 blocos/seg

O tempo de transferncia de 80 sec e logo pode ser negligenciado.

6. Ordene as trs formas de fazer operaes de entrada/sada (polling, interrupo e DMA),


considerando uma operao de entrada/sada em um nico dispositivo, com respeito ao menor
impacto na utilizao do processador.
DMA, interrupo, polling

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 e 9. Uma vantagem importante das interrupes em relao ao polling a capacidade do


processador realizar outras tarefas enquanto espera a comunicao de um dispositivo de E/S.
Suponha que um processador de 1GHz precise ler 1000 bytes de dados de determinado dispositivo
de E/S. O dispositivo de E/S fornece 1 byte de dados a cada 0,02ms. O cdigo para processar os
dados e armazen-los em um buffer utiliza 1000 ciclos.

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.

10. Defina TLB e explique o seu papel em um computador.


A TLB (Translation Lookaside Buffer) uma cache integrada ao processador que tem por
finalidade armazenar a traduo de endereos virtuais em endereos fsicos, evitando assim a
consulta tabela de pginas localizada na memria.