Académique Documents
Professionnel Documents
Culture Documents
Exerccios
Antnio Jos Arajo
Joo Canas Ferreira
Raul Moreira Vidal
Contedo
1 Aritmtica binria
1.1 Exerccios resolvidos . . . . . . .
1.2 Exerccios propostos . . . . . . .
1
1
7
2 Vrgula flutuante
10
2.1 Exerccios resolvidos . . . . . . . 10
2.2 Exerccios propostos . . . . . . . 16
3 Circuitos combinatrios
18
3.1 Exerccios resolvidos . . . . . . . 18
3.2 Exerccios propostos . . . . . . . 26
6.2
6.3
Exerccios resolvidos . . . . . . . 54
Exerccios propostos . . . . . . . 63
4 Circuitos sequenciais
32 9 Solues dos exerccios propostos
9.1 Aritmtica binria . . . . . . . .
4.1 Exerccios resolvidos . . . . . . . 32
4.2 Exerccios propostos . . . . . . . 39
9.2 Vrgula flutuante . . . . . . . . .
9.3 Circuitos combinatrios . . . . .
5 Desempenho
44
9.4 Circuitos sequenciais . . . . . . .
5.1 Exerccios resolvidos . . . . . . . 44
9.5 Desempenho . . . . . . . . . . . .
5.2 Exerccios propostos . . . . . . . 49
9.6 Linguagem assembly . . . . . . .
9.7 Organizao do processador MIPS
6 Linguagem assembly
53
6.1 Sumrio das instrues MIPS-32 53
9.8 Memria Cache . . . . . . . . . .
81
81
83
84
89
91
93
97
98
Esta coletnea rene exerccios resolvidos e propostos sobre a matria lecionada em 2014/15 na
unidade curricular de Arquitetura e Organizao de Computadores do 1o ano do Mestrado Integrado em Engenharia Informtica e Computao da Faculdade de Engenharia da Universidade
do Porto.
1 Aritmtica binria
1.1 Exerccios resolvidos
Exerccio 1
Realizar as converses de base indicadas.
a) 7210 =?2 =?16
e) 1BEEF16 =?2
a) A converso de decimal para qualquer base de representao pode ser feita por divises
sucessivas pela base pretendida ou realizando a decomposio do nmero em potncias dessa
base. Optando por este segundo processo, resulta
7210 = 64 + 8 = 26 + 23 = 1 26 + 0 25 + 0 24 + 1 23 + 0 22 + 0 21 + 0 20
= 10010002
Relativamente converso para hexadecimal, a forma mais simples de a realizar consiste em
considerar a representao binria e formar grupos de 4 bits, da direita para a esquerda, e
depois fazer a correspondncia entre cada um desses grupos e o respetivo smbolo hexadecimal.
100 1000 = 48H
4
8
Nota: O ndice H, tal como 16, indica uma representao em hexadecimal.
b)
25910 = 256 + 2 + 1 = 28 + 21 + 20 = 1000000112
1000000112 = 1 0000 0011 = 103H
1
0
3
c)
11102 = 23 + 22 + 21 = 1410
1110 = EH
E
Arquitetura e Organizao de Computadores
Pg. 1 de 100
d)
100000,112 = 25 + 21 + 22 = 32,7510
Como se trata de um nmero fracionrio, na converso de binrio para hexadecimal, os
grupos de 4 bits formam-se a partir da vrgula.
100000,112 = 10 0000, 1100 = 20,CH
2
0
C
e)
1BEEFH =
1
0001
B
1011
E
1110
E
1110
F
1111
= 110111110111011112
Exerccio 2
Efetue as seguintes operaes aritmticas binrias, considerando os operandos representados como nmeros sem sinal, isto , nmeros positivos.
a) 101110 + 100101
b) 1110010 1101101
c) 1001011 11001
d) 1101000 100
d) Nesta diviso ocorre uma situao particular: o divisor uma potncia de 2 (1002 = 22 = 4).
Nestas circunstncias, o quociente pode ser obtido deslocando os bits do dividendo n posies
para a direita, o que corresponde a subtrair n ao expoente de cada potncia de base 2 da
decomposio do dividendo. Neste exerccio n = 2, pelo que, 1101000 100 = 110102 .
Arquitetura e Organizao de Computadores
Pg. 2 de 100
Exerccio 3
Represente os seguintes nmeros decimais em sinal e grandeza e em complemento para 2
com 6 bits.
a) +12
b) 12
c) 1
d) +32
a) 12 = 8 + 4 = 11002
Sinal e grandeza: sendo o nmero positivo, o bit de sinal 0; a grandeza, escrita em 5
bits, 01100. Assim, 12 = 0011002 .
Complemento para 2: a representao de um nmero positivo em complemento para
2 a mesma do nmero sem sinal (binrio puro), respeitando porm a largura de
representao. Portanto, 12 = 0011002 .
b) A grandeza de 12 12 = 11002 .
Sinal e grandeza: sendo o nmero negativo, o bit de sinal 1; a grandeza codificada
com 5 bits, 01100. Assim, 12 = 1011002 .
Complemento para 2:
A representao de um nmero negativo em complemento para 2 pode ser obtida a
partir da representao binria do simtrico do nmero. Para tal, copiam-se todos os
bits da direita para a esquerda at encontrar o primeiro 1, que ainda copiado, e a
partir da complementam-se os restantes bits. Embora existam outros processos, este
um processo expedito.
Assim, partindo de 12 = 0011002 obtm-se 12 = 1101002 .
c)
Pg. 3 de 100
Exerccio 4
Considere a representao binria dos valores C116 e A716 com 8 bits.
a) Indique o valor decimal correspondente, admitindo que so interpretadas como nmeros:
i) positivos;
a) C116 = 110000012
A716 = 101001112
i)
110000012 = 27 + 26 + 20 = 128 + 64 + 1 = 193
101001112 = 27 + 25 + 22 + 21 + 20 = 128 + 32 + 4 + 2 + 1 = 167
ii)
1 1000001 = 65
26 + 20
1 0100111 = 39
25 + 7
iii)
compl. 2
001111112 = 63
compl. 2
010110012 = 89
Pg. 4 de 100
c) A soma faz como para nmeros sem sinal, ignorando o transporte a partir do bit mais
significativo.
11000001
+10100111
101101000
O resultado encontrado (011010002 ) est incorreto, porque a adio de dois nmeros negativos no pode resultar num nmero positivo. Ocorre portanto, overflow.
Pode confirmar-se esta concluso em decimal: (63) + (89) < 128, isto , a soma no
representvel com 8 bits.
Exerccio 5
Admitindo que A = 110012 e B = 111012 se encontram representados em complemento
para 2 com 5 bits, calcule A + B e indique, justificando, se ocorre overflow.
Efetuando os clculos:
11001
+11101
110110
Como se trata de uma adio em complemento para 2, o carry que ocorreu ao somar os bits
mais significativos deve ignorar-se. A ocorrncia deste carry no deve ser interpretada como
ocorrncia de overflow. Logo, A + B = 10110.
O resultado encontrado vlido no formato especificado, pois no ocorre overflow, porque da
adio de dois nmeros negativosresultou um nmero negativo.
Exerccio 6
Considere dois nmeros binrios com 6 bits, M = 1011002 e N = 1100102 . M est
representado em sinal e grandeza e N est representado em complemento para 2.
a) Escreva M em formato hexadecimal e N em formato decimal.
b) Indique, justificando, qual dos nmeros tem maior grandeza.
c) Mostre que em complemento para 2 a operao M + N no produz overflow.
= 10 1100 = 2CH
2
C
Como N est em complemento para 2 e negativo, N = 001110 = 14, pelo que N = 14.
b) Como M est definido em sinal e grandeza e so usados 6 bits, a grandeza dada pelos 5
bits menos significativos.
|M | = 01100
(= 1210 )
Quanto a N , conclui-se da alnea anterior que
|N | = N = 01110
(= 1410 )
Pg. 5 de 100
c) O nmero M est definido em sinal e grandeza e negativo, pelo que deve ser representado
em complemento para 2 antes de ser operado.
compl. 2
M = 001100
M = 110100
b) complemento para 2.
= 1 0100110
S
G
10111100
+10100110
101100010
Esto a somar-se dois nmeros com o mesmo sinal (negativos), mas o resultado alcanado
com 8 bits apresenta sinal diferente (positivo). Quer isto dizer que ocorre overflow ao realizar a operao com 8 bits. Portanto, para que X + Y seja corretamente representado em
complemento para 2, o nmero mnimo de bits a considerar dever ser 9.
Pg. 6 de 100
Exerccio 8
Considere a representao em complemento para 2 dos valores X e Y indicada:
X = 1100102
e
Y = 1010112
a) Determine o valor decimal de X e Y .
b) Calcule X Y e X + Y . Comente os resultados.
a) X e Y so negativos, pelo que podem obter-se os nmeros simtricos calculando o complemento para 2:
X = 0011102 = 23 + 22 + 21 = 14
Y = 0101012 = 24 + 22 + 20 = 21
Logo, X = 14 e Y = 21.
b) A diferena pode ser calculada pela adio do simtrico:
X Y = X + (Y ) :
110010
+010101
1000111
No ocorre overflow, porque os operandos tm sinais opostos. O resultado por isso correto.
X +Y :
110010
+101011
1011101
Ocorre overflow, porque os operandos tm o mesmo sinal e o resultado tem sinal oposto. Por
este motivo, o resultado errado, pois no representvel com os 6 bits considerados.
j) 111010 =?16
Pg. 7 de 100
Exerccio 10
Efetue as seguintes operaes aritmticas binrias, considerando os operandos representados
como nmeros sem sinal, isto , nmeros positivos.
a) 110101 + 11001
b) 101,01 + 100,111
c) 101110 100101
d) 1000010 101101
e) 11011101 1100011
f) 11011101 11000,11
g) 1011 100
Exerccio 11
Considere os nmeros decimais +3, +2 e 3. Nas alneas seguintes admita a representao em
sinal e grandeza com 4 bits.
a) Escreva os nmeros em binrio.
b) Calcule 3 + 2 e 2 + (3).
c) Calcule 3 + 14 e comente o resultado.
Exerccio 12
Enumere os valores decimais que se podem representar com 4 bits usando as representaes em
sinal e grandeza e em complemento para 2. Em ambos os casos, indique a gama de representao
na forma de um intervalo, relacionando os valores extremos (maior positivo e menor negativo)
com o nmero de bits.
Exerccio 13
Recorrendo a 8 bits, represente em sinal e grandeza e em complemento para 2, os seguintes
nmeros decimais:
a) 18
b) 49
c) 49
d) 3
e) 100
f) 115
g) 127
h) 128
Exerccio 14
Considere os nmeros M = 3316 e N = 3310 representados por 8 bits.
a) Calcule M + N em binrio, supondo que M e N so nmeros sem sinal.
b) Admitindo que os valores esto representados em complemento para 2, diga se ocorre overflow
ao calcular N M .
Exerccio 15
Admitindo que P e Q representam dois nmeros binrios em complemento para dois, com 8 bits,
efetue a sua adio binria e interprete o resultado.
a) P = DEH e Q = A3H
b) P = 8CH e Q = D3H
c) P = 8CH e Q = 74H
Pg. 8 de 100
Exerccio 16
Considere os seguintes nmeros binrios: X = 11100011 e Y = 01001000.
a) Indique o valor decimal de X e Y , para os casos de representao sem sinal e representao
em complemento para 2.
b) Calcule X + Y para ambas as representaes de 8 bits e comente os resultados obtidos.
Exerccio 17
Considere os nmeros P = 11110102 e Q = 01000102 com 7 bits.
a) Escreva P em hexadecimal e Q em decimal.
b) Calcule P + Q e comente o resultado considerando que P e Q representam nmeros:
i) sem sinal;
Exerccio 18
Considere os nmeros M = 4AH e N = A4H representados em complemento para 2 com 8 bits.
a) Escreva M em binrio.
b) Determine o valor decimal de N .
c) Calcule M N e N M , justificando se ocorre overflow.
Exerccio 19
Considere os nmeros S = 110010002 e T = 000100012 representados em complemento para 2
com 8 bits.
a) Determine o valor decimal de S e T .
b) Represente S e T em sinal e grandeza.
c) Calcule S + T em sinal e grandeza e comente o resultado encontrado.
Exerccio 20
Considere os nmeros de 8 bits expressos, nas bases indicadas, por: X2 = 10111100, Y10 = 73 e
Z16 = 9E.
a) Escreva Y em hexadecimal e Z em binrio.
b) Calcule X + Z, considerando que os operandos X e Z esto em complemento para 2, e
justifique se ocorre overflow.
c) Calcule o maior nmero N , em complemento para 2 com 8 bits, que adicionado a X conduz
a uma soma negativa.
Pg. 9 de 100
2 Vrgula flutuante
2.1 Exerccios resolvidos
Exerccio 1
A representao dos nmeros reais X e Y no formato de preciso simples da norma IEEE
754 a seguinte:
X: C3800000H
Y : 001111111000000000000000000000002
a)
X = C3800000H = 1
10000111 000000000000000000000002
EX = 135
O expoente real de X :
real
EX
= 135 127 = 8
Pg. 10 de 100
1
SX
01111110 100 02
EX
fX
Ento:
SXY = 1
EXY = EX + EY 127 = (131 + 126) 127 = 130 = 100000102
MXY : (em binrio)
1,1001010 0
1,1000000 0
0 0000000 0
11001010 0
11001010 0
10,01011110
0
A necessidade de normalizar a mantissa resultante leva ao incremento do expoente calculado:
MXY = 10,01011110 02 = 1,001011112 21
Assim, EXY = 13110 = 100000112 , pelo que
X Y = 11000001100101111 00
0}
| {z
15 0s
Exerccio 3
Considere o nmero cuja representao em hexadecimal C1200000H . Indique o valor
decimal correspondente, se assumir que o nmero est representado:
a) como inteiro sem sinal;
b) em complemento para 2;
c) em vrgula flutuante com preciso simples.
Pg. 11 de 100
01111101110000000000000000000002
= 229 + 228 + 227 + 226 + 225 + 223 + 222 + 221
= 105486745610
Portanto, C1200000H representa -105486745610 em complemento para 2.
c) Assumindo o formato de vrgula flutuante, a interpretao do padro de bits :
31 30
23 22
10000010
S=
01000000000000000000000
E = 130
M = 1,01
Como o expoente est representado em excesso 127, o expoente real 3. Ento, o nmero
decimal correspondente ser:
1,012 23 = 10102 = 1010
Pg. 12 de 100
Exerccio 4
Sejam X e Y dois nmeros reais, representados em vrgula flutuante com o formato de
preciso simples da norma IEEE 754 da seguinte forma:
X: 110000110000001100000000000000002
Y : 110000110111110000000000000000002
a) Mostre que X um nmero inteiro.
b) Calcule o nmero Z que verifica a condio X + Z = 0.
c) Mostre que o expoente real de X + Y 8.
a)
X =
10000110
000001100000000000000002
EX = 134
MX = 1,0000011
O expoente real de X :
real
EX
= 134 127 = 7
Logo,
X10 = 1,00000112 27 = 100000112 = 13110
b)
X+Z=0
Z = X
= SX
= EX
= MX
Logo,
Z = 0100001100000011 00 02
| {z }
16 0s
c)
real
real
EX+Y
= EYreal EX
=7
1,0000011
+1,1111100
10,1111111 = 1,011111112 21
Pg. 13 de 100
Exerccio 5
Os nmeros reais X, Y e Z esto representados no formato de preciso simples da norma
IEEE 754.
a) Sendo X representado por 234567654328 , indique o seu sinal.
b) Complete, com os bits em falta, os campos da seguinte igualdade:
Y
23 =
=+
1 bit
8 bits
001010 ...
23 bits
a)
X = 234567654328 = |{z}
1 00111001
| {z } 01110111110101100011010
|
{z
}
EX
fX
X negativo.
Note-se que a converso de cada dgito octal origina 3 bits e por essa razo X2 devia possuir
33 bits. Porm, a representao de X2 em vrgula flutuante constituda por 32 bits, que no
seu conjunto correspondem a X8 , pois o dgito mais significativo (2) pode escrever-se como
0102 ou 102 .
b)
Y >0
SY = 0
real
EY = 3
EY = EYreal + 127 = 130 = 100000102
fY = 0,00101 MY = 1,001012
Daqui resulta
Y
= +1,001012 23 =
0
10000010 001010...0
1 bit
8 bits
23 bits
c)
SY Z = SZ = SY =
EY Z = EY + EZ 127 131 = 130 + EZ 127 EZ = 128
MY Z MY MZ = 1,0
Logo,
Z =
1
SZ
10000000 00...0
EZ
fZ
Pg. 14 de 100
Exerccio 6
Nesta questo, todos os nmeros reais esto representados em vrgula flutuante (formato
de preciso simples da norma IEEE 754).
a) Determine o nmero X cuja representao dada por
010000100001110100000000000000002 .
b) Considerando um segundo nmero Y em que os 23 bits da sua mantissa so nulos,
calcule:
i)
a mantissa de X Y ;
ii)
a)
X =
0 10000100 00111010000000000000000
+ EX = 132
MX = 1,0011101
O expoente real de X :
real
EX
= 132 127 = 5
Logo,
X10 = +1,00111012 25 = 100111,012 = 39,2510
b) i)
ii)
O expoente do produto de dois nmeros em vrgula flutuante dado pela soma dos
expoentes dos operandos menos o excesso 127. O expoente assim calculado nem sempre
constitui o expoente definitivo do resultado, pois se o produto das mantissas no resultar
normalizado ento o expoente deve ser ajustado de acordo com a normalizao. Porm,
neste exerccio no acontece tal situao porque dito que MY = 1,0.
Assim,
EXY
= EX + EY 127
= 123 (EYreal = 4)
Pg. 15 de 100
b) o expoente do nmero;
b) 0,625
c) 0
d) 1026,5
Exerccio 9
Considere os nmeros decimais A = 33 e B = 2,875.
a) Represente A e B em vrgula flutuante, no formato de 32 bits definido na norma IEEE 754.
b) Efetue as operaes seguintes em vrgula flutuante no formato de 32 bits:
ii) B A
i) A + B
iii) 3 B
b) V1 + V2
c) V2 V1
d) V1 V2
Exerccio 11
Seja um nmero real X, cuja representao em vrgula flutuante (norma IEEE 754, com 32 bits)
3F400000H . Considere tambm Y = 11,62510 .
a) Apresente em binrio a representao de Y no mesmo formato.
b) Calcule X + Y em vrgula flutuante, indicando claramente todos os passos efetuados.
Pg. 16 de 100
Exerccio 12
Considere a representao em vrgula flutuante, norma IEEE 754, com 32 bits. Sendo A um
nmero real, cuja representao nesse formato 40400000H , e sendo B = 10,2510 :
a) apresente a representao binria de B no mesmo formato.
b) calcule AB em vrgula flutuante, indicando claramente todos os passos efetuados. No final,
converta o resultado para decimal.
Exerccio 13
Considere que S e T representam dois nmeros em vrgula flutuante no formato de preciso
simples definido pela norma IEEE 754:
S:110000010100000000000000000000002
T : 110000011011000000000000000000002
Y : 001111111000000000000000000000002 .
O expoente real de X 8.
X Y um nmero positivo.
O expoente real de X 8 e Y um nmero negativo.
X >Y.
Pg. 17 de 100
3 Circuitos combinatrios
3.1 Exerccios resolvidos
Exerccio 1
Simplifique algebricamente as seguintes funes booleanas usando teoremas da lgebra de
Boole.
a) F (A, B, C) = AB + A + B + AC.
b) F (A, B, C) = (A + B + C)(A + B + C)(A + B + C)(A + B + C).
c) F (X, Y, Z) = X + X Z + X Y .
d) G(X, Y, Z) = X Y Z + X Y Z + X Y Z.
e) F (A, B, C) = A(B + C) + B C.
a)
F (A, B, C)
=
=
=
=
=
=
AB + A + B + AC
AB + AB + AC
A(B + B) + AC
A + AC
A(1 + C)
A
b)
F (A, B, C)
=
=
=
=
=
c)
F (X, Y, Z)
=
=
=
=
X + X Z + X Y
X (1 + Y ) + X Z
X + X Z
X +Z
d)
G(X, Y, Z)
=
=
=
=
=
X Y Z + X Y Z + X Y Z
X Y (Z + Z) + X Y Z
Y (X + X Z)
Y (X + Z)
X Y + Y Z
Pg. 18 de 100
e)
F (A, B, C)
A(B + C) + B C
=
=
=
=
=
A(B + C) + B C
A(B C) + B C (A + A)
AB C + AB C + B C A + AB C
A(B C + B C) + B C (A + A)
A + B C
Exerccio 2
Obtenha a tabela de verdade para cada uma das seguintes funes booleanas.
a) F (A, B, C) = (A + B)(A + B + C)
b) F (X, Y, Z) = X Y + X Y Z
B
0
0
1
1
0
0
1
1
C
0
1
0
1
0
1
0
1
F
1
0
0
0
1
1
1
1
A+B+C
A+B
A+B
Y
0
0
1
1
0
0
1
1
Z
0
1
0
1
0
1
0
1
F
0
0
1
0
1
1
0
0
X Y Z
X Y
X Y
Pg. 19 de 100
Exerccio 3
Escreva uma expresso booleana para as funes lgicas representadas pelas tabelas de
verdade indicadas.
a)
x
0
0
1
1
y
0
1
0
1
f
1
0
0
1
b)
x
0
0
0
0
1
1
1
1
y
0
0
1
1
0
0
1
1
z
0
1
0
1
0
1
0
1
f
1
1
1
0
1
1
0
0
A partir da tabela de verdade de uma funo booleana podem retirar-se expresses algbricas
na forma de uma soma de produtos ou na forma de um produto de somas.
Para a expresso na forma de uma soma de produtos identificam-se as linhas da tabela de
verdade onde a funo 1 e forma-se um termo produto tal que nessa combinao das variveis
da funo o valor do produto seja 1 (igual ao valor da funo). A expresso da funo obtm-se
pela soma de todos os termos produto nestas condies.
Para a expresso na forma de um produto de somas identificam-se as linhas da tabela de
verdade onde a funo 0 e forma-se um termo soma tal que nessa combinao das variveis da
funo o valor da soma seja 0 (igual ao valor da funo). A expresso da funo obtm-se pelo
produto de todos os termos soma nestas condies.
A partir destas expresses podem obter-se outras equivalentes por simplificao baseada em
teoremas da lgebra de Boole.
a) Optando pela forma soma de produtos e procedendo da forma descrita, os termos produto
que definem a funo so os indicados.
x
0
0
1
1
y
0
1
0
1
f
1
0
0
1
xy
xy
Pg. 20 de 100
x
0
0
0
0
1
1
1
1
y
0
0
1
1
0
0
1
1
z
0
1
0
1
0
1
0
1
g
1
1
1
0
1
1
0
0
x+y+z
x+y+z
x+y+z
a)
F (X, Y, Z)
=
=
=
=
=
X Y Z + X Y Z + X Y Z + X Y Z + X Y Z + X Y Z
X Y (Z + Z) + X Y Z + X Y (Z + Z) + X Y Z
X Y + X Y + X Y Z + X Y Z
Y + X Y Z + X Y Z
Y + X Z + X Z
b) Como a expresso de F est na forma de uma soma de produtos, cada termo produto
identifica combinaes das entradas X, Y, Z onde F = 1. Ao lado da tabela de verdade
indicam-se esses termos.
X
0
0
0
0
1
1
1
1
Y
0
0
1
1
0
0
1
1
Z
0
1
0
1
0
1
0
1
F
1
1
1
0
1
1
0
1
Y e X Z
Y
X Z
Y
Y e X Z
X Z
X +Y +Z
Pg. 21 de 100
resultando
F (X, Y, Z) = (X + Y + Z)(X + Y + Z)
d) Considerando a expresso da funo na forma de um produto de somas, pode obter-se uma
expresso equivalente apenas com somas lgicas negadas, cada uma das quais ser realizada
por uma porta NOR no circuito lgico pretendido. A negao das variveis pode tambm
realizar-se atravs de um NOR aplicando a varivel a negar a ambas as entradas do NOR.
F (X, Y, Z) = (X + Y + Z)(X + Y + Z) = X + Y + Z + X + Y + Z
O circuito resultante :
X
F
Y
Z
Exerccio 5
O circuito da figura implementa uma funo F (A, B, C).
1
C
B
a) Deduza uma expresso da funo lgica realizada pelo circuito, indicando-a na forma
de um produto de somas.
b) Escreva F (A, B, C) como uma soma de produtos simplificada.
a) A expresso da funo realizada pelo circuito lgico pode obter-se atravs das expresses que
resultam da sada de cada porta lgica como funes das entradas do circuito.
b)
F (A, B, C)
=
=
=
=
AB (1 C) + AB
AB C + AB
AB C AB
(A + B + C)(A + B)
F (A, B, C)
=
=
=
=
(A + B + C)(A + B)
AA + AB + AB + B + AC + B C
(A + A + 1 + C)B + AC
B + AC
Pg. 22 de 100
Exerccio 6
Pretende-se projetar um circuito capaz de detetar se um nmero com 3 bits n2 n1 n0 aplicado sua entrada est compreendido entre 2 e 5 (inclusive). A sada do circuito uma
funo de 3 variveis, G(n2 , n1 , n0 ), sendo G = 1 para os nmeros nas condies indicadas
e G = 0 no caso contrrio. Defina o comportamento do circuito que realiza G na forma
de uma tabela de verdade.
n1
0
0
1
1
0
0
1
1
n0
0
1
0
1
0
1
0
1
G
0
0
1
1
1
1
0
0
Exerccio 7
A figura mostra um circuito, baseado num multiplexador de 8 para 1, que realiza uma
funo F (W, X, Y, Z).
MUX8:1
0
1
D0
D1
D2
D3
D4
D5
D6
D7
S2 S1 S0
W X Y
Pg. 23 de 100
W
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
X
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
Y
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
Z
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
F
0
1
1
0
0
0
0
0
0
1
0
1
0
0
1
1
=
=
=
=
=
=
W X Y Z + W X Y Z + W X Y Z + W X Y Z + W X Y Z + W X Y Z
W X Y Z + W X Y Z + W X Z (Y + Y ) + W X Y (Z + Z)
W X Y Z + W X Y Z + W X Z + W X Y
X (Z (W Y + W ) + W Y Z) + W X Y
X (Y Z + W Z + W Y Z) + W X Y
X Y Z + W X Z + W X Y Z + W X Y
Exerccio 8
Seja a funo booleana S = (A + B + C) (A + B + C).
a) Represente S atravs de uma tabela de verdade.
b) Realize a funo S recorrendo ao multiplexador de 8 para 1 da figura.
MUX8:1
D0
D1
D2
D3
D4
D5
D6
D7
(M S B )
S2 S1 S0
Pg. 24 de 100
A
0
0
0
0
1
1
1
1
a)
B
0
0
1
1
0
0
1
1
C
0
1
0
1
0
1
0
1
S
0
1
1
0
1
1
1
1
Exerccio 9
Pretende-se realizar um circuito capaz de comparar duas quantidades positivas A e B,
representadas em binrio com 2 bits cada uma (a1 a0 e b1 b0 ), e produzir duas sadas, X e
Y . A sada X deve ser 1 se e s se A = B, e a sada Y deve ser 1 se e s se A > B.
a) Construa uma tabela de verdade de X e Y como funes de a1 , a0 , b1 e b0 .
b) Obtenha um circuito que realize a funo Y .
c) Mostre como, com um mnimo de esforo, poderia acrescentar a este circuito uma
sada Z que fosse 1 quando A < B.
d) Admitindo que tinha disponveis vrios circuitos como o descrito atrs, mostre como
os poderia utilizar para realizar a comparao de quantidades de 6 bits cada, isto ,
de modo a detetar as situaes de A = B e A > B quando A = a5 a4 a3 a2 a1 a0 e
B = b5 b4 b3 b2 b1 b0 .
a)
a1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
a0
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
b1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
b0
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
X
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
Y
0
0
0
0
1
0
0
0
1
1
0
0
1
1
1
0
Pg. 25 de 100
b)
a1 a0 b1 b0 + a1 a0 b1 + a1 a0 b1 + a1 a0 b1 b0
a1 a0 b1 b0 + a1 b1 + a1 a0 b1 b0
a1 a0 b1 b0 + a1 (b1 + a0 b1 b0 )
a1 a0 b1 b0 + a1 (b1 + a0 b0 )
a1 b1 + a1 a0 b0 + a1 a0 b1 b0
a1 b1 +a0 b0 (a1 + a1 b1 )
a1 b1 +a0 b0 (a1 + b1 )
a1 b1 + a0 b1 b0 + a1 a0 b0
Pg. 26 de 100
Exerccio 11
Obtenha a tabela de verdade para cada uma das seguintes funes booleanas.
a) F (A, B, C) = AB + AC.
b) G(X, Y, Z) = (X + Z)(X + Y + Z).
c) F (W, X, Y, Z) = W X (Y + Z).
Exerccio 12
Considere a funo F (X, Y, Z) = X Y + X Y Z + X Z.
a) Indique a respetiva tabela de verdade.
b) Escreva F (X, Y, Z) como um produto de somas.
c) Desenhe o circuito lgico correspondente.
Exerccio 13
Considere o circuito lgico apresentado na figura.
a) Represente F (X, Y, Z) atravs de uma tabela de verdade e obtenha uma expresso na forma
de um produto de somas.
Arquitetura e Organizao de Computadores
Pg. 27 de 100
A
F(A, B, S)
B
G(X, Y, S)
Exerccio 18
Considere um circuito que apresenta na sada S o valor lgico 1 sempre que na sua entrada o
nmero positivo de 4 bits, A3 A2 A1 A0 , maior que 5 e mltiplo de 4.
a) Construa a tabela de verdade da funo S(A3 , A2 , A1 , A0 ).
b) Obtenha uma expresso para S(A3 , A2 , A1 , A0 ) e simplifique-a.
Pg. 28 de 100
Exerccio 19
Um circuito elementar utilizado na construo de circuitos digitais para aritmtica binria o
somador completo (full-adder ) representado na figura. O somador tem 2 sadas Co e S que
representam em binrio a soma dos valores (0 ou 1) presentes nas entradas A, B e Ci.
A
Co
B
Ci
S
Ci
Co
d) Considere agora um somador de 4 bits, constitudo por 4 somadores completos, como mostra
a figura.
Co
A3
B3
A
Co
B w A
3
Ci
Co
A2
B2
A1
B1
B w A
2
Ci
Co
A0
B0
B w A
1
Ci
Co
B
Ci
S3
S2
S1
S0
Ci
Identifique na figura o valor de cada um dos sinais admitindo que os valores a somar, representando nmeros positivos, so A = A3 A2 A1 A0 = 1010 e B = B3 B2 B1 B0 = 1110.
Exerccio 20
Pretende-se construir um circuito combinatrio para comparar dois nmeros de 2 bits, sem sinal,
A = A1 A0 e B = B1 B0 . A sada M AIOR 1 quando A for maior do que B e 0 no caso contrrio.
A1
A0
B1
A>B?
MAIOR
B0
Pg. 29 de 100
MUX2_1
I0
Y
I1
M1
M0
COMP2
A1
A0
B1
A>B
B0
Exerccio 22
Um multiplexador com n entradas de seleo pode ser usado para implementar qualquer funo
lgica de n variveis. Na figura mostra-se o smbolo de um multiplexador de 4 para 1, o qual
possui 2 entradas de seleo.
MUX4:1
D0
D1
Y
D2
D3
S1 S0
Pg. 30 de 100
I0
I1
Y0
Y1
Y2
Y3
Lvm
Llj
Lvr
Pg. 31 de 100
4 Circuitos sequenciais
4.1 Exerccios resolvidos
Exerccio 1
Considere o seguinte circuito com uma entrada X e uma sada Y .
X
Y
D
CLK
D
CLK
Q
Q
CLK
a) Desenhe no diagrama seguinte a evoluo temporal das sadas dos flip-flops (Q1 e Q0 ),
assim como da sada Y , sabendo que a entrada X evolui da forma representada. Nota:
considere que no instante inicial Q1 e Q0 tm o valor lgico 0.
b) Admitindo que o perodo do sinal de relgio 20 ns, indique ao fim de quanto tempo
a sada Y passa de 0 a 1 pela primeira vez.
Pg. 32 de 100
CK
Q1
Q0
1
IN
CLK
I0
I1
Y
S
OUT
CLK
CLK
IN
OUT
Pg. 33 de 100
CLK
IN
OUT
Exerccio 3
Considere o circuito, composto por um registo de 4 bits e um multiplexador com duas
entradas de 4 bits. Admita que as entradas enable e reset do registo so ativadas pelo
valor lgico 1.
MUX_2
4
IN
I0[3:0]
Y[3:0]
I1[3:0]
S
REG_4bits
4
D[3:0]
Q[3:0]
OUT
enable
reset
CLK
en
rst
CLK
Nas alneas seguintes, considere em cada transio ativa do sinal de relgio o valor das
entradas apresentadas em cada tabela. Determine o valor da sada OU T aps cada uma
das transies assinaladas.
a) Transio
1
2
3
4
D
0110
0100
0100
1101
en
1
1
0
1
rst
0
1
0
0
b) Transio
1
2
3
4
5
6
7
8
9
IN
1001
1111
0101
1000
1000
1111
0101
0000
0001
sel
1
1
0
1
1
1
0
1
1
en
1
1
1
0
1
1
1
1
1
rst
0
0
0
0
0
1
0
0
0
a) Os sinais considerados s envolvem o registo de 4 bits. Para cada transio ativa do sinal de
relgio necessrio ter em considerao que a sada do registo assume o valor presente na entrada D se a entrada de habilitao (enable) estiver ativa (en = 1), permanecendo inalterado
at prxima transio. Caso en seja 0, a sada mantm o valor anterior. Relativamente
Arquitetura e Organizao de Computadores
Pg. 34 de 100
entrada reset do registo, quando ativo (rst = 1) coloca a sada em 0000, independentemente
do valor das restantes entradas.
Aplicando estas consideraes sequncia de entradas dada, obtm-se a sada OU T como se
mostra na tabela seguinte.
Transio (CLK)
1
2
3
4
D
0110
0100
0010
1101
en
1
1
0
1
rst
0
1
0
0
OU T
0110
0000
0000
1101
b) Alm do que foi descrito na anlise anterior, h agora que ter em considerao o multiplexador. Observando a forma como est a ser usado, conclui-se que o valor aplicado na entrada
do registo provm da entrada IN , quando sel = 1, ou da sada OU T do registo, quando
sel = 0.
Aplicando estas consideraes sequncia de entradas dada, obtm-se a sada OU T como se
mostra na tabela seguinte.
Transio (CLK)
1
2
3
4
5
6
7
8
9
IN
1001
1111
0101
1000
1000
1111
0101
0000
0001
sel
1
1
0
1
1
1
0
1
1
en
1
1
1
0
1
1
1
1
1
rst
0
0
0
0
0
1
0
0
0
OU T
1001
1111
1111
1111
1000
0000
0000
0000
0001
Pg. 35 de 100
Exerccio 4
A figura representa um circuito sequencial baseado num contador de 4 bits.
CONT4
EN
QA
QB
QC
(MSB) QD
EN
CLK
Q0
Q1
Q2
Q3
OUT
CLK
EN
RESET
CLK
QA
QB
QC
(MSB) QD
OUT
CLK
a) O circuito apresentado constitudo por um contador de 4 bits. Considerando que inicialmente as suas sadas so nulas, a cada transio do sinal de relgio o valor das sadas
incrementado, resultando a representao das formas de onda mostrada na figura seguinte.
C LK
Q0
Q1
Q2
Q3
OUT
Pg. 36 de 100
RAM1
A[15:0]
A[11:0]
RAM2
RAM1
A[12:0]
A[15:0]
A[13:0]
A[12:0]
CS
CS
D[7:0]
D[7:0]
CS
CS
8 bits
8 bits
&
A[14]
A[12]
A[13]
A[13]
A[15]
8 bits
8 bits
8 bits
A[15]
D[7:0]
D[7:0]
8 bits
&
A[15]
&
A[13]
A[14]
(a)
A[15]
(b)
Pg. 37 de 100
Os endereos mapeados em cada circuito podem ser determinados por anlise das condies
em que o circuito est habilitado, i.e., para que endereos que se tem CS=1.
Para a figura (a) temos:
RAM1: CS = A15 A14 A13 A12 = 1.
Esta condio s satisfeita se A15 = 1, A14 = 1, A13 = 1, A12 = 0.
Logo, os endereos mapeadas na RAM1 tm o formato
1110 XXXX XXXX XXXX
em que X indica que o bit correspondente tanto pode ser 0 como 1. Os endereos com
este formato esto na gama:
1110 0000 0000 0000
a
1110 1111 1111 1111.
Em hexadecimal, a gama E000H EFFFH .
Como todos os bits do endereo so usados (A15 A12 na definio de CS; os restantes
na ligao ao porto de endereos de RAM1), trata-se de descodificao total.
RAM2: CS = A15 A14 A13 = 1.
Esta condio s satisfeita se A15 = 1, A14 = 0, A13 = 0.
Logo, os endereos mapeadas na RAM2 tm o formato
100X XXXX XXXX XXXX.
Os endereos com este formato esto na gama:
1000 0000 0000 0000
a
1001 1111 1111 1111.
Em hexadecimal, a gama 8000H 9FFFH .
Trata-se igualmente de descodificao total.
O mapa de memria para o sistema da figura (a) o seguinte:
Gama (hex)
00007FFF
80009FFF
A000DFFF
E000EFFF
F000FFFF
Dispositivo
RAM2
RAM1
-
Pg. 38 de 100
Dispositivo
00003FFF
40007FFF
80009FFF
A000BFFF
C000DFFF
E000FFFF
RAM2 (*)
RAM2 (*)
RAM1 (**)
RAM1 (**)
-
Figura (a)
RAM1
RAM2
Figura (b)
RAM2
RAM1
CLK
CLK
Q
CLK
Pg. 39 de 100
CLK
Exerccio 7
Considere o seguinte circuito sequencial, constitudo por portas lgicas e um flip-flop do tipo D,
sensvel ao flanco ascendente do sinal de relgio, em que no incio Q = 0.
J
K
CLK
CLK
CLK
Exerccio 8
Considere o circuito sequencial da figura seguinte.
Pg. 40 de 100
D0
D
EN
Q0
Q1
CLK
D1
D
CLK
CLK
CLK
CLK
D
CLK
EN
QA
QB
QC
(MSB) QD
Q0
Q1
Q2
Q3
CLK
CLK
Pg. 41 de 100
Exerccio 10
A figura mostra a constituio de um banco de registos.
Pg. 42 de 100
CPU
ADDRESS
DATA
16
A[15:0]
D[7:0]
A[11:0]
A15
A14
A13
A[10:0]
RAM
ROM
A[11:0]
A[10:0]
D[7:0]
D[7:0]
CS
CS
Dispositivo
0x0000-0x3FFF
0x4000-0x7FFF
0x8000-0xCFFF
0xD000-0xDFFF
0xE000-0xFFFF
ROM1
RAM1
RAM2
-
Pg. 43 de 100
5 Desempenho
Alguns destes exerccios so extrados ou adaptados do livro Computer Organization and Design
The Hardware/Software Interface, D. Hennessy e J. Patterson, 4a edio.
Ni CPIi
onde Ni se refere ao nmero de instrues da classe i e CPIi o nmero de ciclos por instruo
dessa classe.
Sequncia 1: Nciclos = 2 1 + 1 2 + 2 3 = 10
Sequncia 2: Nciclos = 4 1 + 1 2 + 1 3 = 9
A sequncia 2 a mais rpida, porque executada em menos ciclos de relgio.
Arquitetura e Organizao de Computadores
Pg. 44 de 100
c)
CPI =
Nciclos
Ninst
Nciclos
fCLK
Ni CPIi
(5 1 + 1 2 + 1 3) 109
10 109
=
= 20 s
500 106
500 106
(10 1 + 1 2 + 1 3) 109
15 109
=
= 30 s
500 106
500 106
Atendendo aos tempos de execuo calculados, conclui-se que o compilador 1 gera o programa
mais rpido.
texec_C2 =
b)
MIPS =
Ninstr
texec 106
Portanto,
MIPS1 =
Arquitetura e Organizao de Computadores
(5 + 1 + 1) 109
= 350
20 106
Pg. 45 de 100
(10 + 1 + 1) 109
= 400
30 106
Daqui se conclui que o compilador 2 proporciona uma taxa de execuo de instrues superior.
MIPS2 =
Exerccio 3
A execuo de um programa num computador A, o qual funciona com um sinal de relgio
de 2 GHz, demora 10 s. Um computador B que est a ser desenvolvido capaz de executar
o mesmo programa em 6 s. Este computador B pode atingir uma frequncia de relgio
superior do computador A, embora consuma 1,2 vezes mais ciclos de relgio do que o
computador A a executar o referido programa. Determine a frequncia do sinal de relgio
a que B pode funcionar.
Pg. 46 de 100
Exerccio 5
Um dado programa executado em dois computadores diferentes, A e B, tendo-se obtido
os seguintes indicadores:
Indicador
de instrues
Frequncia
CPI
107
8 106
4 GHz
1,1
No
4 GHz
1
a)
MIPS =
Ninstr
Ninstr
fCLK
=
=
texec 106
Ninstr CPI TCLK 106
CPI 106
Logo,
MIPSA =
e
4 109
= 4 103
1 106
4 109
3636
1,1 106
A o computador com maior valor de MIPS.
MIPSB =
b)
texec = Ninstr CPI TCLK =
Ninstr
MIPS 106
107
= 2,5 ms
4 103 106
8 106
=
2,2 ms
3636 106
texecA =
texecB
B o computador mais rpido.
Exerccio 6
Para um dado programa foram obtidas as seguintes medidas:
Pg. 47 de 100
1
(1 f ) +
f
s
onde f representa a frao de tempo gasto na execuo da parte melhorada e s traduz o aumento
de rapidez dessa parte.
A aplicao da lei de Amdahl s trs situaes descritas permite pois quantificar o aumento
de desempenho:
1. f = 0,3 e s = 2
stotal (f ) =
1
0,7+0,3/2
= 1,18
2. f = 0,25 e s = 3
stotal (f ) =
1
0,75+0,25/3
3. f = 0,1 e s = 10
stotal (f ) =
1
0,9+0,1/10
= 1,20
= 1,10
Pg. 48 de 100
Exerccio 8
A execuo de um programa num computador demora 1000 s, sendo 75 % do tempo gasto
em multiplicaes e divises. Pretende-se remodelar o computador com hardware mais
rpido para a realizao das operaes de multiplicao e diviso. Calcule quanto mais
rpidas devem ser as operaes de multiplicao e diviso para que o programa seja:
a) trs vezes mais rpido;
stotal (f ) =
(1 f ) +
f
s
3=
(1 0,75) +
0,75
s
1
1
3
+
4 4s
4s
s+3
4s
s+3
resultando
3s+9=4ss=9
isto , as operaes devem ser 9 vezes mais rpidas.
b) Da mesma forma, resulta
1
4=
(1 0,75) +
0,75
s
1
1
3
+
4 4s
e
4 s + 12 = 4 s
que no tem soluo, concluindo-se ser impossvel o programa ficar 4 vezes mais rpido.
FCLK (GHz)
No de instrues
Tempo (s)
P1
P2
P3
2
1,5
3
20 109
30 109
90 109
7
10
9
Pg. 49 de 100
a) Calcule o nmero de instrues executadas por ciclo de relgio, por cada processador.
b) Calcule a frequncia a que o processador P2 deve funcionar para que o tempo de execuo
das instrues seja igual ao apresentado para P1 .
c) Calcule o nmero de instrues a executar em P2 de modo a que o seu tempo de execuo
seja igual ao de P3 .
Exerccio 10
Considere que dois processadores distintos, P1 e P2 , implementam o mesmo conjunto de instrues e que estas se podem enquadrar em quatro classes diferentes (A, B, C e D). A frequncia
e o CPI por classe de instrues de cada implementao encontram-se na tabela.
Processador
FCLK (GHz)
CPI A
CPI B
CPI C
CPI D
P1
P2
1,5
2
1
2
2
2
3
2
4
2
a) Seja um programa com 1 milho de instrues divididas pelas quatro classes da seguinte
forma: 10 % so da classe A, 20 % so da classe B, 50 % so da classe C e 20 % so da classe
D. Verifique qual dos processadores mais rpido a executar o programa.
b) Calcule o CPI mdio de cada processador.
c) Calcule o nmero de ciclos de relgio necessrios execuo do programa em cada processador.
Exerccio 11
Considere dois processadores, P1 e P2 , que implementam de forma diferente o mesmo conjunto
de instrues, composto por cinco classes de instrues. P1 funciona com um relgio de 4 GHz e
P2 funciona a 6 GHz. O nmero mdio de ciclos de relgio para cada classe de instrues dado
pela tabela que se segue.
Classe
CPI de P1
CPI de P2
A
B
C
D
E
1
2
3
4
3
2
2
2
4
4
Pico de desempenho definido como a cadncia mxima a que um computador pode executar a
sequncia de instrues mais favorvel (para uma dada tarefa). Determinar o pico de desempenho
de P1 e P2 , expresso em instrues por segundo.
Exerccio 12
A tabela seguinte apresenta o nmero de operaes em vrgula flutuante (VFL) executadas em
trs programas diferentes e o respetivo tempo de execuo em trs computadores A, B e C,
distintos.
Pg. 50 de 100
Programa
No operaes VFL
1
2
3
5 109
20 109
40 109
5
20
50
10
20
15
Aritmticas
Store
Load
Salto
700
500
50
100
50
a) Assuma que o tempo de execuo das instrues aritmticas corresponde a 1 ciclo de relgio,
loads e stores correspondem a 5 ciclos de relgio e as instrues de salto correspondem a 2
ciclos de relgio. Calcule o tempo de execuo do programa num processador a 2 GHz.
b) Calcule o valor do CPI para o programa.
c) Se o nmero de instrues de load for reduzido para metade, quanto mais rpida a execuo
do programa e qual o valor do CPI?
Exerccio 14
Um computador A tem um CPI mdio de 1,3 e funciona a 600 MHz. Um outro computador,
B, tem um CPI mdio de 2,5 e funciona a 750 MHz. Pretende-se executar um certo programa
em ambos os computadores. Compilando esse programa para o computador A resultaram 105
instrues. Determine quantas instrues devem resultar compilando-o para o computador B,
de modo que a execuo do programa demore o mesmo tempo em ambos os computadores.
Exerccio 15
Um processador executa um programa constitudo por vrios tipos de instrues, entre as quais
existem instrues de transferncia de dados. Supondo que possvel melhorar o tempo de
execuo das instrues de transferncia de dados em 11 vezes, calcule a percentagem dessas
instrues de forma a conseguir-se melhorar o desempenho do processador em 5 vezes.
Exerccio 16
Medindo o tempo de acesso a disco verificou-se que 80 % do tempo de execuo de um determinado programa num computador era gasto em acessos ao disco. Substituindo o disco de tal
computador constatou-se que este era duas vezes mais rpido.
a) Calcule quanto melhorou o desempenho do computador.
b) Verifique qual a melhoria de desempenho que seria alcanada se o disco tivesse um tempo de
acesso desprezvel.
Pg. 51 de 100
Exerccio 17
Suponha que se pretende melhorar um computador acrescentando-lhe uma unidade vetorial. Um
clculo executado em modo vetorial 10 vezes mais rpido que o normal.
a) Desenhe um grfico que mostre o ganho de rapidez (speedup) em funo da percentagem de
tempo de execuo em modo vetorial (percentagem de vetorizao).
b) Que percentagem de vetorizao necessria para se obter um ganho de rapidez de 2?
c) Considerar o caso da alnea anterior. Com a utilizao da unidade vetorial, o computador
demora metade de tempo a realizar os clculos. Em que percentagem desse novo tempo
(mais curto) que a unidade vetorial est a ser usada?
d) Que percentagem de vetorizao necessria para obter metade do mximo ganho de rapidez
possvel?
e) Suponha que se determinou empiricamente que a percentagem de vetorizao de 70 %. Os
projetistas de hardware acham que possvel duplicar o desempenho da unidade vetorial. Em
alternativa, o grupo de compilao poderia tentar aumentar a utilizao do modo vetorial,
como forma de aumentar o desempenho. Que aumento da percentagem de vetorizao (em
relao situao atual) seria necessrio para obter o mesmo resultado que a duplicao do
desempenho de hardware? Que alternativa mais aconselhvel?
Pg. 52 de 100
6 Linguagem assembly
6.1 Sumrio das instrues MIPS-32
Instrues do tipo R com opcode=0. Valor do campo funct em hexadecimal:
add:20
slt:2A
addu:21
sltu:2B
and:24
sll:0
jr:8
srl:2
nor:27
sub:22
or:25
subu:23
mult:18
div:1A
multu:19 mfhi:10
divu:1B mflo:12
addiu:9
ori:D
andi:C
slti:A
beq:4
sltiu:B
bne:5
sb:28
lbu:24
sh:29
lhu:25
sw:2B
lui:F
Formato R:
26 25
11 10
6 5
rs
rt
rd
shamt
funct
6 bits
5 bits
5 bits
5 bits
5 bits
6 bits
26 25
21 20
16 15
op
rs
rt
constante
6 bits
5 bits
5 bits
16 bits
31
Formato J:
16 15
op
31
Formato I:
21 20
26 25
op
endereo parcial
6 bits
26 bits
Nmero
Nome
$0
$1
$2$3
$4$7
$8$15,$24,$25
$16$23
$26$27
$28,$29,$30
$31
$zero
$at
$v0$v1
$a0$a3
$t0$t9
$s0$s7
$k0$k1
$gp,$sp,$fp
$ra
Propsito
Sempre a zero
Registo para uso do assembler
Valor retornado por sub-rotina
Valores dos argumentos de uma sub-rotina
Registos para valores temporrios
Registos preservados por sub-rotinas
Reservados para sistema operativo (*)
Reservados para funes especiais (*)
Endereo de retorno da sub-rotina corrente
Linhas a sombreado indicam registos cujos valores devem ser preservados pelas sub-rotinas.
(*) Registos no usados em AOCO.
Arquitetura e Organizao de Computadores
Pg. 53 de 100
b) f = A[12] + 17
O primeiro passo neste tipo de problemas escolher uma atribuio de variveis a registos. Cada
varivel atribuda a um registo. Como a arquitetura MIPS-32 dispe de um nmero elevado
de registos, trata-se geralmente de uma tarefa simples, porque se pode usar um registo diferente
para cada varivel.
a) Uma possvel atribuio de registos a variveis a seguinte:
f $s0, g $s1
O fragmento de cdigo que realiza os clculos desejados :
addi
sub
$s0, $s0, 5
$s0, $s1, $s0
# Calcula f = f + 5
# Calcula f = g - f
Aps esta sequncia de duas instrues, $s0 contm o novo valor associado a f. O clculo
da primeira parte da expresso (instruo addi) pode guardar o resultado intermdio no o
registo $s0, porque a segunda instruo estabelece o valor final correto.
b) Possvel atribuio de variveis a registos:
f $s0, endereo base de A $s6
Como cada elemento de uma sequncia de inteiros tem 4 bytes, o elemento de ndice 12 da
sequncia A est guardado a partir da posio de memria cujo endereo dado por:
endereo base de A + 12 4
A primeira instruo deve ir buscar o valor guardado nessa posio.
lw
addi
$s0, 48($s6)
$s0, $s0, 17
Exerccio 2
Para as seguintes instrues em cdigo-mquina MIPS-32, determine a instruo assembly
correspondente. Indique o tipo de codificao, bem como os valores de todos os campos.
a) 0x8D08FFC0
b) 0x01204020
Pg. 54 de 100
Para resolver este tipo de problemas, deve comear-se por determinar a instruo. Para isso,
determina-se o valor do campo opcode, que em todas as instrues constitudo pelos 6 bits
mais significativos do cdigo. Depois interpretam-se os demais campos de acordo com o tipo da
instruo (R, I ou J).
a) Os oito bits mais significativos da instruo so 8D16 =100011012 . O cdigo da instruo
(campo opcode) sempre definido pelos 6 bits mais significativos: opcode=1000112 =2316 .
Da tabela existente no incio do enunciado conclui-se que se trata de uma instruo lw. Esta
instruo do tipo I, pelo que a sua decomposio em campos :
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9
100011
01000
01000
1111111111000000
opcode
rs
rt
constante
000000
01001
00000
01000
00000
100000
opcode
rs
rt
rd
shamt
funct
Exerccio 3
Assuma as seguintes condies iniciais:
$t0 = 0xBEADFEED
$t1 = 0xDEADFADE
$t2, $t0, 4
$t2, $t2, $t1
$t2, $t0, 3
$t2, $t2, 0xFFEF
Pg. 55 de 100
Exerccio 4
Assuma as seguintes condies iniciais:
$t0 = 1111 1111 1111 1111 1111 1111 1111 11112
$t1 = 0011 1111 1111 1000 0000 0000 0000 00002
a) Determine o valor de $t2 aps a execuo do fragmento seguinte:
ELSE:
DONE:
slt
beq
j
addi
...
b) Apresente o cdigo-mquina correspondente ao fragmento, supondo que este est alojado a partir da posio de memria 0x00400000.
Pg. 56 de 100
Para resolver a primeira parte do problema, deve-se determinar a ordem de execuo das instrues. A segunda parte resolve-se por aplicao sistemtica dos dados da tabela apresentada no
incio do captulo (pg. 53). Tambm necessrio determinar o endereo do destino dos saltos
(instrues beq e j).
a) A primeira instruo compara os contedos de $t0 e $t1. A condio avaliada :
$t0 < $t1 ?
Os valores dos registos so interpretados em complemento para dois. (Se a instruo fosse
sltu, ento os valores seriam interpretados como sendo unsigned sem sinal.) Como o
valor de $t0 negativo (tem o bit mais significativo a 1) e o de $t1 positivo, a condio
verdadeira. Logo, o valor de $t2 posto em 1.
O salto condicional (segunda instruo) tomado, se o contedo de $t2 for igual ao de $zero
(que sempre 0). Como 1 diferente de 0, o salto no tomado.
Em consequncia, a terceira instruo a ser executada a de salto incondicional (a instruo
j). Esta instruo leva o fluxo de execuo a passar para o fim do fragmento apresentado
(etiqueta DONE). A instruo addi no executada.
Como o contedo de $t2 no foi alterado depois da execuo da primeira instruo, o valor
de $t2 permanece igual a 1 at ao fim.
b) A codificao das instrues feita por aplicao da tabela que se encontra no incio do
enunciado.
slt $t2,$t0,$t1
uma instruo de formato R. Logo:
opcode = 0, funct = 2AH , rs = 8 ($t0), rd = 10 ($t2), rt = 9 ($t1),
shamt = 0 (no uma instruo de deslocamento).
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9
000000
01000
01001
01010
00000
101010
opcode
rs
rt
rd
shamt
funct
000100
01010
00000
0000000000000001
opcode
rs
rt
constante
Pg. 57 de 100
000010
00000100000000000000000100
opcode
endereo
001000
00000
01010
0000000000000010
opcode
rs
rt
constante
instruo
0x0400000
0x0400004
0x0400008
0x040000C
0x0109502A
0x11400001
0x08100004
0x200A0002
Exerccio 5
Pretende-se escrever um fragmento de cdigo assembly MIPS-32 para somar todos os
valores de uma sequncia de 10 nmeros inteiros. O endereo-base da sequncia est
contido no registo $s0 e o resultado deve ficar no registo $s7.
a) Escrever o fragmento assumindo que todos os nmeros inteiros tm 32 bits.
b) Escrever uma nova verso assumindo que todos os elementos da sequncia tm 16 bits.
Pg. 58 de 100
ciclo:
lw
addi
addi
lw
add
addi
bne
...
$s7,0($s0)
$t0,$zero,9
$s0,$s0,4
$t1,0($s0)
$s7,$s7, $t1
$t0,$t0,-1
$t0,$zero,ciclo
#
#
#
#
#
#
#
#
Carregar 1o elemento
Inicializar contador de iteraes
Endereo do prximo elemento (+4)
Carregar prximo elemento
Adicionar prximo elemento
Decrementar contador de iteraes
Continuar se contador 6= 0
$s7 contm a soma do todos os elementos
b) Neste caso, cada elemento da sequncia tem 2 bytes. Por isso, o endereo do prximo elemento
obtido somando-se 2 ao endereo do elemento corrente.
Alm disso, necessrio usar a instruo lh (load half-word) para carregar o valor de memria.
O resultado final continua a ser um valor de 32 bits.
ciclo:
lh
addi
addi
lh
add
addi
bne
...
$s7,0($s0)
$t0,$zero,9
$s0,$s0,2
$t1,0($s0)
$s7,$s7, $t1
$t0,$t0,-1
$t0,$zero,ciclo
#
#
#
#
#
#
#
#
Carregar 1o elemento
Inicializar contador de iteraes
Endereo do prximo elemento (+2)
Carregar prximo elemento
Adicionar prximo elemento
Decrementar contador de iteraes
Continuar se contador 6= 0
$s7 contm a soma do todos os elementos
Pg. 59 de 100
Exerccio 6
O programa que se segue est escrito em assembly MIPS-32. Suponha que se encontra
em memria a partir do endereo 0x400000, ocupado pelo cdigo da primeira instruo
(linha 1), e que $ra=0x400008 (return address).
123- stop:
4- subr:
567-
...
add
j
andi
ori
sll
jr
Aps a execuo do programa, o contedo dos registos $a0, $pc e $ra, em hexadecimal,
pode corresponder a uma das opes seguintes:
1.
2.
3.
4.
$a0=2
$a0=2
$a0=2
$a0=4
$pc=0x400008
$pc=0x400008
$pc=0x400004
$pc=0x400008
$ra=0x400004
$ra=0x400008
$ra=0x400008
$ra=0x400004
Aqui, $pc representa o program counter, um registo interno que no diretamente acessvel.
Escolha, justificando, a opo que indica os valores corretos dos referidos registos, supondo
que a instruo em falta na linha 1 :
a) j subr
b) jal subr
a) Neste caso, o cdigo a partir de subr no altera o registo $ra. Logo, aps a execuo da
instruo jr $ra temos $pc=$ra=0x400008. Portanto, a execuo prossegue a partir da linha
3, onde fica em ciclo infinito.
O efeito das linhas 46 independente do valor inicial de $a0. A linha 4 fora a zero os bits
311 de $a0. A linha 5 fora o bit menos significativo (o bit da posio 0) a 1. A instruo
sll desloca o valor de $a0 de uma posio para a esquerda. Logo $a0=2.
A opo correta a 2.
b) A instruo jal subr coloca em $ra a posio da instruo seguinte: $ra=0x400004. A
execuo da sub-rotina coloca $a0=2 (ver alnea anterior).
Depois de executar a invocao de subr, a execuo prossegue a partir da instruo da linha
2, j que a instruo jr $ra coloca $pc=0x400004.
A instruo da linha 2 duplica o valor de $a0, que passa a 4. De seguida, o programa fica a
executar o ciclo infinito da linha 3 (e, portanto, $pc=0x400008).
A opo correta a 4.
Pg. 60 de 100
Exerccio 7
Apresenta-se a seguir um programa em assembly para o microprocessador MIPS. Na terceira linha do programa invocada uma rotina, atravs da instruo jal (jump and link ),
designada por par. Esta rotina, cujo cdigo no fornecido, tem como objetivo determinar se um nmero par. Admita que a rotina recebe esse nmero no registo $a0 e que
devolve no registo $v0 o valor 1 caso seja par, ou 0 no caso contrrio.
addi
addi
jal
beq
addi
addi
addi
bne
loop:
step:
end:
$a1,
$s0,
par
$v0,
$s0,
$a0,
$a1,
$a1,
$zero, 3
$zero, 0
# Chama rotina par
$zero, step
$s0, 1
$a0, 1
$a1, -1
$zero, loop
...
a) O programa realiza 3 iteraes, incrementando em cada uma delas o valor de $a0, que
inicialmente 8. Em cada iterao determinada a paridade do valor em $a0 invocando a
rotina par. Caso o valor em $a0 seja par o registo $s0 incrementado. No final da execuo
do programa $(s0)=2, correspondendo aos 2 nmeros pares encontrados (8 e 10), e $(v0)=1,
correspondendo ao resultado da paridade do ltimo valor fornecido rotina par.
b) O bit menos significativo de um nmero par 0. A rotina seguinte baseia-se nesta propriedade.
par:
addi
andi
jr
$v0, $a0, 1
$v0, $v0, 1
$ra
Pg. 61 de 100
Exerccio 8
a) Escreva um fragmento de cdigo assembly que determina se um dado nmero inteiro
N est presente numa sequncia SEQ. Assuma a seguinte atribuio de registos:
-
N$t0
endereo-base de SEQ$t1
nmero de elementos de SEQ$t2
resultado$t7
endereo-base de SEQ1$s0
nmero de elementos de SEQ1$s1
endereo-base de SEQ2$s2
nmero de elementos de SEQ2$s3
resultado$s7
a) O fragmento consiste num ciclo em que se varia o registo $t1 de forma a conter o endereo de
elementos sucessivos de SEQ (linha 5). O nmero de iteraes , no mximo, igual ao nmero
de elementos de SEQ, que decrementado de uma unidade em cada iterao (linha 6).
O ciclo pode terminar, quando se encontra um elemento igual ao procurado (linha 4). Neste
caso, a instruo da linha 8 assegura que o resultado (i.e., o valor de $t7) 1.
Se o valor procurado no existir em SEQ, o ciclo terminado porque o contador de elementos
vem a 0 (linha 2). Neste caso, o valor de $t7 no alterado, mantendo o valor inicial
estabelecido na linha 1.
Esta soluo altera os valores iniciais de $t1 e $t2. Esta informao teria que ser preservada,
caso fosse necessria noutros lugares do programa. Por exemplo, poderia ser copiada para
registos livres ou guardada em memria (em variveis declaradas com a diretiva .word).
1
2
3
4
5
6
7
8
9
add
beq
lw
beq
addi
addi
j
L2 : addi
fim : ...
L1 :
$s7 ,
$t2 ,
$t0 ,
$t0 ,
$t1 ,
$t2 ,
L1
$s7 ,
$zero , $zero
$zero , fim
0( $t1 )
$a0 , L2
$t1 , 4
$t2 , -1
$zero , 1
# resultado a 0
# terminar
# obter um elemento
# sair do ciclo se encontrou
# endereo do prximo elemento
# ajustar n o de elementos
# repetir ( prximo elemento )
# encontrado : resultado = 1
Pg. 62 de 100
Tambm preciso garantir as regras de preservao de valores dos registos. A maneira mais
fcil usar a gama de registos $t0$t7. O cdigo original j faz isso (com exceo da
utilizao de $s7 para guardar o resultado).
A atribuio de registos passa a ser a seguinte:
1
2
N$a0
endereo-base de SEQ$a1
nmero de elementos de SEQ$a2
resultado$v0
pesq :
L1 :
3
4
5
6
7
8
9
L2 :
L3 :
add
beq
lw
beq
addi
addi
j
addi
jr
$v0 ,
$a2 ,
$t0 ,
$t0 ,
$a1 ,
$a2 ,
L1
$v0 ,
$ra
$zero , $zero
$zero , L3 # no h mais elementos
0( $a1 )
$a0 , L2
# elemento igual ao procurado
$a1 , 4
# posio elemento seguinte
$a2 , -1
# decrementar n o de elementos
# tratar do elemento seguinte
$zero , 1
# elemento encontrado
c) O fragmento consiste num ciclo em que se percorre a sequncia SEQ1. As linhas 23 verificam
se existem elementos a processar. Em caso afirmativo, obtm-se o prximo elemento de
memria; as linhas 910 procedem atualizao do contador de elementos e do endereo do
prximo elemento.
A sub-rotina pesq usada para procurar um dado elemento de SEQ1 em SEQ2. As linhas
35 preparam a invocao da sub-rotina, colocando os argumentos nos registos apropriados
(valor a procurar em $a0, endereo-base de SEQ2 em $a1 e nmero de elementos de SEQ2 em
$a2).
As linhas 78 processam o resultado da invocao (registo $v0). Se o valor foi encontrado
em SEQ2, o contador $s7 incrementado de uma unidade.
1
2
ciclo :
3
4
5
6
7
8
9
cont :
10
add
beq
lw
add
add
jal
beq
addi
addi
addi
$s7 ,
$s1 ,
$a0 ,
$a1 ,
$a2 ,
pesq
$v0 ,
$s7 ,
$s1 ,
$s0 ,
j
...
ciclo
$zero , $zero
$zero , stop
0( $s0 )
$s2 , $zero
$s3 , $zero
$zero , cont
$s7 , 1
$s1 , -1
$s0 , 4
11
12
13
stop :
# inicializar contador
# mais elementos de SEQ1 ?
# obter um elemento de SEQ1
# onde pesquisar
# n o de elementos a pesquisar
# invocar sub - rotina
# saltar , se no encontrou
# encontrou : contabilizar
# decrementar contador de SEQ1
# endereo de prximo
# elemento de SEQ1
# repetir
Pg. 63 de 100
Exerccio 9
Para as seguintes expresses aritmticas (nmeros inteiros de 32 bits), especifique um mapeamento de variveis para registos e o fragmento de cdigo assembly MIPS-32 que as implementa.
a) f = g + ( j + 2)
b) k = a + b - f + d - 30
c) f = g + h + A[4]
d) f = g - A[B[10]]
e) f = k - g + A[h + 9]
f) f = g - A[B[2] + 4]
Exerccio 10
Para os seguintes fragmentos de cdigo assembly MIPS-32, indique as expresses simblicas
correspondentes, bem como o correspondente mapeamento entre registos e variveis.
a)
add
add
add
add
$s0,$s0,$s1
$s0,$s0,$s2
$s0,$s0,$s3
$s0,$s0,$s4
b)
lw
$s0,4($s6)
$s6,
$t0,
$s6,
$s0,
$s6, -20
$s1, 2
$s6, $t0
8($s6)
Exerccio 11
Para as seguintes instrues em cdigo-mquina MIPS-32, determine as instrues assembly
correspondentes. Indique o tipo de codificao, bem como os valores de todos os campos.
a) 0xAE0BFFFC
b) 0x8D090012
Exerccio 12
Assuma as seguintes condies iniciais:
$t0 = 0x55555555
$t1 = 0x12345678
sll
or
$t2, $t0, 4
$t2, $t2, $t1
b)
sll
andi
$t2, $t0, 4
$t2, $t2, -1
Pg. 64 de 100
c)
srl
andi
$t2, $t0, 3
$t2, $t2, 0xFFEF
Exerccio 13
Considere o seguinte fragmento de cdigo assembly MIPS-32:
L1:
sw
sll
addi
bne
$t4,0($t5)
$t4,$t4,4
$t5, $t5, 4
$t4,$zero, L1
$t5 = 2000
a) Explique como alterada a memria durante a execuo do programa. Apresente um diagrama do contedo da memria alterada pela execuo do programa.
b) Supondo que o cdigo do fragmento est alojado a partir da posio de memria 0x00400000,
apresente o cdigo-mquina correspondente.
Exerccio 14
Os processadores RISC como o MIPS implementam apenas instrues muito simples. Este
problema aborda exemplos de hipotticas instrues mais complexas.
a) Considere uma instruo hipottica abs que coloca num registo o valor absoluto de outro
registo.
abs $t2, $t1
equivalente a
$t2 |$t1|
Apresente a mais curta sequncia de instrues MIPS-32 que realiza esta operao.
b) Repita a alnea anterior para a instruo sgt, em que sgt $t1, $t2, $t3
equivalente a se $t2 > $t3 ento $t1 1 seno $t1 0.
Exerccio 15
Numa zona de memria (endereo-base em $s4) est uma sequncia de bytes diferentes de 0. A
sequncia de bytes terminada por um byte a zero.
Escreva um fragmento de cdigo assembly que determina o nmero de bytes da sequncia.
O byte 0 final no entra para a contagem. O resultado deve ser guardado em $s0.
Exerccio 16
Considerar os seguintes fragmentos
Fragmento 1: LOOP:
slt
bne
j
ELSE:
addi
addi
j
DONE:
de cdigo assembly.
$t2,$zero,$t1
$t2,$zero,ELSE
DONE
$s2, $s2, 2
$t1, $t1, -1
LOOP
...
Pg. 65 de 100
Fragmento 2: LOOP:
LOOP2:
DONE:
addi
addi
addi
bne
addi
bne
...
$t2,
$s2,
$t2,
$t2,
$t1,
$t1,
$zero, 0xA
$s2, 2
$t2, -1
$zero, LOOP2
$t1, -1
$zero, LOOP
a) Assumir a seguinte situao inicial: $t1=10 e $s2=0. Determinar, para cada fragmento, o
valor final de $s2.
b) Assuma agora que $t1=N (com N>0). Determinar, para cada fragmento, o nmero de instrues executadas em funo de N.
Exerccio 17
Escrever um fragmento para determinar se duas sequncias de nmeros inteiros (32 bits) tm o
mesmo contedo. As sequncias tm 100 elementos. Usar a seguinte atribuio de registos:
endereo-base da sequncia A $s4
endereo-base da sequncia B $s5
O resultado, a guardar em $s0, deve ser 1, se as duas sequncias tiverem o mesmo contedo
ou 0 no caso contrrio.
Exerccio 18
Escreva um fragmento de cdigo assembly MIPS-32 para determinar quantos nmeros mpares
esto contidos numa sequncia de 50 nmeros inteiros (de 32 bits). Assuma que o endereo-base
da sequncia est contido no registo $s0. O resultado deve ficar no registo $s7.
Exerccio 19
Considere uma sequncia de 50 nmeros inteiros armazenada em memria a partir do endereo
contido no registo $t0. Escreva um fragmento de cdigo assembly que determine o valor mnimo
contido na sequncia, guardando-o em $t7.
Exerccio 20
Pretende-se escrever um programa que permita realizar diversas tarefas envolvendo sequncias de
nmeros inteiros em memria. Para que o programa resulte estruturado e o cdigo seja facilmente
reutilizado, o seu desenvolvimento deve basear-se na chamada de sub-rotinas, realizando cada
uma destas sub-rotinas uma tarefa especfica.
Construa o programa que realiza as tarefas a seguir descritas, escrevendo uma sub-rotina
para cada tarefa.
Nota: deve gerir a utilizao de registos por forma a que uma sub-rotina no estrague o
contedo de registos usados por outras sub-rotinas.
a) Somar todos os elementos de uma sequncia.
b) Determinar o nmero de elementos mpares da sequncia.
c) Determinar o nmero de elementos que so iguais ou superiores a um valor dado.
d) Determinar se duas sequncias com o mesmo comprimento so iguais.
Pg. 66 de 100
PCSrc
M
u
x
Add
Add
Instruction [25:21]
Read
register 1
Read
address
Instruction [20:16]
Instruction
[31:0]
Instruction
memory
Instruction [15:11]
MemWrite
Read
data 1
Read
register 2
0
M
u
x
1
RegDst
Instruction [15:0]
ALUSrc
MemtoReg
Zero
ALU
Read
data 2
Write
register
Write
data
Shift
left 2
RegWrite
PC
ALU
result
0
M
u
x
1
ALU
result
Address
Registers
Write
data
16
Sign
extend
Read
data
1
M
u
x
0
Data
memory
32
ALU
control
MemRead
Instruction [5:0]
ALUOp
Pg. 67 de 100
Os valores dos sinais de controlo so determinados pela operao efetuada, que estabelece a
forma como os recursos do CPU so usados.
A instruo add usa dois registos como fonte de operandos e um como destino do resultado.
Como a instruo altera o banco de registos (para guardar o resultado da soma), deve ter-se
RegWrite=1. Como o valor que guardado no registo provm da ALU e no da memria, tem-se
MemtoReg=0. Nas instrues tipo R, a especificao do registo de destino feita pelos bits 11 a
15 da instruo, pelo que RegDst=1.
Esta instruo no acede a memria, seja para leitura, seja para escrita. Por isso, MemRead=0
e MemWrite=0. Como tambm no um salto condicional, Branch=0, o que implica PCSrc=0
(porque PcSrc = AND(Zero, Branch)).
A instruo add usa a ALU para realizar a operao (adio) sobre dois operandos provenientes de registos. Um operando da ALU provm sempre do banco de registos; a origem do
segundo determinada pelo sinal ALUSrc. Como neste caso o segundo operando tambm provm
do banco de registos, tem-se ALUSrc=0.
A operao da ALU controlada pelo sinal de 2 bits ALUOp. Como se trata de uma instruo
do tipo R, tem-se ALUOp=102 .
Esta instruo no afeta o fluxo de instrues, pelo que PCSrc=0.
Todos os mdulos tm funes teis, exceto a memria da dados (Data memory), o mdulo
de extenso de sinal (Sign extend), o mdulo de deslocamento (Shift left 2) e o somador
usado para calcular o destino dos saltos relativos (Add ligado a Shift left 2).
Exerccio 2
Suponha que a unidade de controlo usada com o CPU da figura 7.1 possui um defeito de
fabrico que faz com que um determinado sinal de controlo tenha o valor fixo 0. Indique,
justificando, quais as instrues que deixam de funcionar corretamente, considerando que
o defeito ocorre em:
a) RegWrite
b) ALUop1
Para que uma instruo no funcione como esperado necessrio que o sinal, em operao
correta, assuma um valor diferente daquele que imposto pelo defeito de fabrico.
a) Como o defeito de fabrico impe sempre RegWrite=0, todas as instrues que requerem
RegWrite=1 funcionaro incorretamente. As instrues com RegWrite=1 so as que alteram
o contedo de um registo: as instrues do tipo R e as instrues lw e addi.
b) O sinal ALUOp1=1 somente para as instrues lgico-aritmticas. Como o defeito impe
ALUOp1=0, a ALU comporta-se nestas instrues como se estivesse a efetuar um clculo de
endereos, i.e., a efetuar uma adio. Logo, o defeito de fabrico impede todas as instrues
lgico-aritmticas, exceto a adio, de funcionarem corretamente: sub, and, or, slt.
Pg. 68 de 100
Exerccio 3
Processadores podem apresentar defeitos de fabrico. Suponha que se pretende detetar se
um CPU tem um certo defeito procedendo da seguinte forma:
1. preencher PC, registos e memria de instrues com valores selecionados apropriadamente;
2. executar uma nica instruo;
3. ler os valores de PC, registos e memria de dados.
Os valores lidos so examinados para determinar se uma dada falta est presente ou no.
a) Apresente um teste que permita determinar se o bit 7 da sada da memria de instrues est sempre a 0 (stuck-at0).
b) Repita a alnea anterior para uma falta stuck-at1 (sada sempre a 1). possvel usar
um nico teste para os dois casos? Se sim, como; se no, porqu?
Para detetar um defeito preciso provocar uma situao em que o sinal afetado assuma normalmente o valor complementar daquele que imposto pelo defeito.
a) Este defeito afeta o bit 7 das instrues obtidas de memria. Nas instrues de tipo R, este
bit pertence ao campo shamt, que no usado por nenhuma das instrues implementadas.
Por isso, necessrio usar uma instruo do tipo I. Uma soluo possvel:
addi $t0, $zero, 128
Na ausncia de defeito, o registo $t0 tomar o valor 128. Na presena do defeito, tomar o
valor 0: 12810 = 100000002 transforma-se em 000000002 , se o bit 7 (o oitavo bit da instruo)
for forado a 0.
b) Por um raciocnio anlogo ao da alnea anterior, necessrio usar uma constante com o bit
7 a zero. Por exemplo: addi $t0, $zero, 0.
Na ausncia de defeito, o registo $t0 toma o valor 0; no caso contrrio, toma o valor 128.
No possvel testar simultaneamente a presena de um ou outro defeito, porque isso exigiria
usar uma nica instruo para impor condies opostas no local do defeito.
Exerccio 4
A tabela seguinte indica a latncia mxima dos blocos usados na implementao do CPU
conforme indicado na figura 7.1.
I-Mem
Add
Mux
ALU
Regs
D-Mem
Controlo
400 ps
100 ps
30 ps
120 ps
200 ps
350 ps
100 ps
Pg. 69 de 100
preciso encontrar o caminho ao longo do qual a propagao de sinais demora mais. O tempo
de propagao deve ser contado a partir da sada do registo PC (que muda no incio de cada
ciclo). Para cada instruo, existem duas tarefas a realizar:
1. Calcular o endereo da prxima instruo.
2. Realizar a operao da instruo corrente.
Estas duas tarefas so independentes, exceto no caso das instrues que alteram o fluxo de
instrues (saltos condicionais e incondicionais). Para a instruo and as tarefas so independentes.
Para calcular o tempo de propagao associado a cada mdulo, preciso determinar o respetivo sinal de entrada que atualizado em ltimo lugar. Para um mdulo de latncia L com
N entradas relavantes cujos valores estejam atualizados nos instantes t1 , t2 , . . . , tn , e latncia
mxima L, a sada estar atualizada no instante t = max(t1 , t2 , . . . , tn ) + L.
Por exemplo, a sada da memria de instrues (I-MEM) est atualizada 400 ps aps o incio
da instruo. A unidade de controlo (Control) atualiza todos os sinais de controlo no instante
400 ps + 100 ps = 500 ps
Para determinar o caminho crtico, preciso determinar qual das duas tarefas demora mais.
(1a tarefa) A propagao de dados relativos ao clculo do prximo endereo passa pelos
seguintes mdulos:
Add Mux
A sada de Add est atualizada aps 100 ps.
As entradas relevantes de Mux so a sada do 1o somador e o sinal de controlo. Este ltimo
est atualizado no instante t = 500 ps, conforme calculado anteriormente. Portanto, a sada de
Mux est atualizada em
t = max(100 ps, 500 ps) + 30 ps = 530 ps
Portanto, o endereo da prxima instruo est calculado aps 530 ps.
(2a tarefa) A realizao da operao utiliza os seguintes mdulos:
I-Mem Regs Mux ALU Mux
O 1o Mux o da entrada da ALU, o 2o o que est sada da memria D-Mem.
As sadas de Regs esto prontas no instante
t = 400 ps + 200 ps = 600 ps
No instante t = 600 ps j todos os sinais de controlo esto atualizados, o que implica que,
daqui para a frente, estes j no influenciam o clculo do tempo de propagao.
Portanto, o resultado da operao est pronto (i.e., disponvel na entrada Write data do
banco de registos) no instante
t = 600 ps + 30 ps + 120 ps + 30 ps = 780 ps
Falta verificar se as demais entradas relevantes do mdulo Regs est atualizadas neste instante. A entrada RegWrite est atualizada desde o instante 500 ps, porque um sinal de controlo.
A entrada Write register est pronta desde o instante 400 ps + 30 ps = 430 ps. Portanto, a
entrada Write data a ltima a ficar atualizada.
Concluindo, o caminho crtico I-Mem Regs Mux ALU Mux, com um tempo de
propagao de 780 ps.
Arquitetura e Organizao de Computadores
Pg. 70 de 100
Exerccio 5
Assuma que o processador da figura 7.1 recebe a seguinte instruo:
1000 1100 0100 0011 0000 0000 0001 0000
a) Indique os valores das sadas dos componentes Sign-extend e Shift-left2.
b) Indique os valores de entrada da unidade de controlo da ALU.
c) Qual o valor de PC depois da execuo da instruo?
Assuma agora que o contedo dos registos o seguinte:
$0
$1
$2
$3
$4
$5
$6
$8
$12
$31
-4
-32
100011
00010
00011
0000000000010000
opcode
rs
rt
constante
Pg. 71 de 100
A instruo lw transfere um valor de memria para um registo. Portanto, a sada do multiplexador controlado por MemtoReg tem o valor proveniente da posio de memria lida
(endereo $2+16 = 4+16 = 20).
Esta instruo no altera o fluxo de instrues. Portanto, a sada do multiplexador controlado
por PCSrc igual a PC+4.
e) A entrada superior da ALU tem o valor do endereo-base (registo $2): 4.
A entrada inferior da ALU tem a constante 16.
As entradas do somador da esquerda so: PC e 4.
As entradas do somador de destino de saltos so: PC+4 e o valor da constante multiplicado
por 4 (efeito do deslocamento de 2 bits para a esquerda) 16 4 = 64.
f) Os valores das entradas do banco de registos so:
Read register 1: valor de rs: 2.
Read register 2: valor de rt: 3.
Write register: valor de rt: 3.
Write data: valor lido de memria (do endereo 20).
RegWrite: 1 (sinal de controlo para habilitar o armazenamento do novo valor).
b) sw $s0,256($t2)
c) beq $s0,$t2, -5
Exerccio 7
Suponha que a unidade de controlo usada com o CPU da figura 7.1 possui um defeito de fabrico
que faz com que um determinado sinal de controlo tenha o valor fixo 0. Indique, justificando,
quais as instrues que deixam de funcionar corretamente, considerando que a falha ocorre em:
a) PCSrc
b) MemWrite
Exerccio 8
A tabela seguinte indica a latncia mxima dos blocos usados na implementao do CPU indicado
na figura 7.1.
I-Mem Add
Mux ALU
Regs D-Mem Controlo
400 ps 100 ps 30 ps 120 ps 200 ps 350 ps
100 ps
Determine o caminho crtico (caminho de propagao de sinais com maior latncia) para as
instrues seguintes, bem como o tempo de propagao correspondente.
a) lw
Arquitetura e Organizao de Computadores
b) beq
Pg. 72 de 100
Instruction [250]
26
Shift
left 2
PC + 4 [3128]
Add
ALU
Add result
Read
address
Instruction
[310]
Instruction
memory
Instruction [2521]
Instruction [2016]
0
M
u
Instruction [1511] x
1
Instruction [150]
Read
register 1 Read
data 1
Read
register 2
Write
register
Read
data 2
Write
data Registers
16
Signextend
M
u
x
1
M
u
x
0
Shift
left 2
RegDst
Jump
Branch
MemRead
Instruction [3126]
MemtoReg
Control ALUOp
MemWrite
ALUSrc
RegWrite
PC
32
0
M
u
x
1
Zero
ALU ALU
result
Address Read
data
Write Data
data memory
1
M
u
x
0
ALU
control
Instruction [50]
FIGURE 4.24 The simple control and datapath are extended to handle the jump instruction. An additional multiplexor
7.2: the
CPU
suporte
(at the upper right) is used toFigura
choose between
jumpcom
target and
either thepara
branchsaltos
target orincondicionais.
the sequential instruction following this one. This
multiplexor is controlled by the jump control signal. The jump target address is obtained by shifting the lower 26 bits of the jump instruction
left 2 bits, effectively adding 00 as the low-order bits, and then concatenating the upper 4 bits of PC + 4 as the high-order bits, thus yielding a
32-bit address. Copyright 2009 Elsevier, Inc. All rights reserved.
Exerccio 9
Pretende-se implementar a instruo jr (jump register). Indique quais os elementos e sinais
de controlo que devem ser acrescentados. Defina os valores dos sinais de controlo para a nova
situao. Use o circuito da figura 7.1 como referncia, tomando em considerao a abordagem
seguida no tratamento de saltos incondicionais (figura 7.2).
Exerccio 10
Considere a instruo lw $t0, 40($s0). (Para responder s questes seguintes refira-se figura 1.)
a) Apresente o cdigo-mquina correspondente.
b) Qual o nmero de registo fornecido entrada Read register 1? O valor deste registo
usado?
c) Responda mesma questo para a entrada Read register 2.
d) Qual o nmero de registo fornecido entrada Write register? O valor deste registo
realmente alterado?
e) Quais so os valores dos sinais de controlo RegDst e MemRead?
f) Responda s alneas anteriores para a instruo:
Pg. 73 de 100
Label:
Exerccio 11
Pretende-se projetar a unidade de controlo para uma implementao do CPU em que os componentes tm a seguinte latncia mxima:
I-Mem
Add
Mux
ALU
Regs
D-Mem
Sign-extend
Shift-left2
ALU Ctrl
400 ps
100 ps
30 ps
120 ps
200 ps
350 ps
20 ps
0 ps
50 ps
a) Determine o tempo disponvel para a unidade de controlo gerar o sinal MemWrite sem aumentar o caminho crtico da implementao.
b) Determine qual o sinal de controlo que pode demorar mais a ser gerado e qual o tempo de
que a unidade de controlo dispe para esse efeito sem aumentar a latncia da implementao.
c) Determine qual o sinal de controlo que pode demorar menos a ser gerado (sinal crtico) e
qual o tempo de que a unidade de controlo dispe para esse efeito sem aumentar a latncia
da implementao.
Pg. 74 de 100
8 Memria Cache
8.1 Exerccios resolvidos
Exerccio 1
Considere uma memria cache do tipo direct-mapped, com 8 blocos e 1 palavra por bloco.
Complete a seguinte tabela, que representa a evoluo do estado da memria cache para
os dez acessos consecutivos indicados. Inicialmente, a memria cache est vazia. Os
endereos so endereos de palavras.
Apresente tambm o contedo da memria cache aps o ltimo acesso.
Acesso
Endereo
1
2
3
4
5
6
7
8
9
10
22
26
22
26
16
3
16
8
27
10
Hit/Miss
Contedo do bloco
inicial
final
Como a memria tem 8 blocos, o ndice do bloco definido pelo resto da diviso do endereo
por 8.
O efeito da sequncia de acessos descrito a seguir. A operao de obteno do resto
representada por %:
a % b = resto da diviso de a por b.
1. Endereo 22 posio 22 % 8 = 6; falha (miss); cache[6] mem[22].
2. Endereo 26 posio 26 % 8 = 2; falha (miss); cache[2] mem[26].
3. Endereo 22 posio 22 % 8 = 6; acerto (hit); cache[6] tem contedo de mem[22].
4. Endereo 26 posio 26 % 8 = 2; acerto (hit); cache[2] tem contedo de mem[26].
5. Endereo 16 posio 16 % 8 = 0; falha (miss); cache[0] mem[16].
6. Endereo 3 posio 3 % 8 = 3; falha (miss); cache[3] mem[3].
Arquitetura e Organizao de Computadores
Pg. 75 de 100
Endereo
Hit/Miss
1
2
3
4
5
6
7
8
9
10
22
26
22
26
16
3
16
8
27
10
M
M
H
H
M
M
H
M
M
M
Contedo
inicial
mem[22]
mem[26]
mem[16]
mem[16]
mem[3]
mem[26]
do bloco
final
mem[22]
mem[26]
mem[22]
mem[26]
mem[16]
mem[3]
mem[16]
mem[8]
mem[27]
mem[10]
Contedo
mem[8]
mem[10]
mem[27]
mem[22]
-
Exerccio 2
Um processador funciona a 2 GHz e possui uma memria cache unificada. A taxa de
falhas no acesso cache 9% e o tempo de acesso memria principal 50 ns.
a) Calcule a penalidade de falha em ciclos.
b) Medies efetuadas para um conjunto de benchmarks revelaram que o nmero de ciclos
de protelamento em acessos a memria (por instruo) CPIprot = 12.
Determine a percentagem de instrues que acede a dados.
Pg. 76 de 100
a) Para obter a penalidade de falha em ciclos, determina-se o nmero de ciclos que o processador
executa durante o tempo de acesso a memria principal.
T =
1
= 0,5 ns
F
logo
pf =
50
= 100
0,5
CPIprot
,
tf pf
o que implica
na =
4
12
=
0,09 100
3
Cada instruo requer obrigatoriamente um acesso para a sua obteno. Acessos adicionais
so necessariamente acessos a dados. Ento, o nmero mdio de acessos a dados : na 1 =
1
3 = 33,3 %.
Pg. 77 de 100
contedo
12345678
6548feab
3c1f56fd
afd12498
6198fa34
1929aaaa
bbabeedd
1123aa56
7611432a
ffffeffe
ddedd556
4444cccc
7627abed
8768888a
71672912
22256733
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
etiqueta
abc
123
678
567
b7c
8d1
cd3
456
001
877
777
198
fdf
479
655
111
v
1
1
1
0
1
0
1
1
1
1
0
1
1
1
0
1
endereo
valor
L
L
L
E
E
E
2df10
23454
3f7b0
048c4
3f7d0
1dde8
1212abab
00001111
aaaabbbb
Exerccio 5
Assuma que o CPU do problema anterior usado com uma memria cache tambm semelhante
anterior, mas que usa a poltica de escrita write-back. O contedo inicial da memria cache
est indicado na tabela (em hexadecimal).
Pg. 78 de 100
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
contedo
12345678
6548feab
3c1f56fd
afd12498
6198fa34
1929aaaa
bbabeedd
1123aa56
7611432a
ffffeffe
ddedd556
4444cccc
7627abed
8768888a
71672912
22256733
etiqueta
abc
123
678
567
b7c
8d1
cd3
456
001
877
777
198
fdf
479
655
111
v
1
0
1
0
1
0
1
1
1
1
0
1
0
1
0
1
d
1
0
0
0
0
1
1
0
1
1
0
1
1
0
0
0
endereo
valor
L
E
E
L
L
E
E
E
2df10
2df10
10c64
23454
3f7b0
21de4
2afdc
3f7b0
33334444
9999aaaa
bbbb7777
1212abab
00001111
Exerccio 6
Para cada um dos sistemas indicados a seguir considere que o tempo de acesso a memria principal
de 70 ns e que 36% das instrues acedem a dados em memria. O acesso a memria principal
tem incio aps falta de acesso memria cache.
Processador
Tamanho
Taxa de faltas
Tempo de acerto
P1
P2
1 KiB
2 KiB
11,4%
8,0%
0,62 ns
0,66 ns
a) Assumindo que o tempo de acerto que determina o perodo de relgio, determine as frequncias de operao dos dois sistemas.
b) Determine o tempo mdio de acesso memria para os dois casos.
c) Assumindo um CPI bsico de 1, qual o CPI de cada um dos processadores? Qual o
processador mais rpido?
Arquitetura e Organizao de Computadores
Pg. 79 de 100
Exerccio 7
Um CPU (com F=1 GHz) est equipado com memrias cache para instrues e para dados, cujas
taxas de faltas so, respetivamente, 5 % e 10 %. O tempo de acesso a memria principal 80 ns
(a acrescentar ao tempo de acesso a memria cache).
Em mdia, 40 % das instrues de um programa acedem a dados (i.e., so load ou store).
a) Determine a taxa de faltas global da memria cache em nmero de faltas por 1000 instrues.
b) Suponha que se pretendia equipar o CPU com uma memria cache unificada. Determine a
mxima taxa de faltas desta alternativa para que ela apresente o mesmo desempenho que a
verso split cache.
c) Assuma que, na ausncia de faltas de cache, o CPU tem CPIideal =1,2. Determine o CPI
efetivo para os seguintes casos:
i)
ii)
Pg. 80 de 100
Pg. 81 de 100
Exerccio 11
a) 3 = 00112 ; 2 = 00102 ; 3 = 10112
b) 3 + 2 = 01012 ; 2 + (3) = 10012
c) Impossvel: 14 no representvel.
Exerccio 12
Sinal e grandeza: [7; 7]; complemento para 2: [8; 7]
Exerccio 13
a) SG: 000100102 ;
C2: 000100102
b) SG: 001100012 ;
C2: 001100012
c) SG: 101100012 ;
C2: 110011112
d) SG: 100000112 ;
C2: 111111012
e) SG: 111001002 ;
C2: 100111002
f) SG: 011100112 ;
C2: 011100112
g) SG: 111111112 ;
C2: 100000012
h) SG: impossvel;
C2: 100000002
Exerccio 14
a) 10101002
b) No ocorre overflow ; a diferena de nmeros com o mesmo sinal sempre representvel.
Exerccio 15
a) 100000012 ; resultado correto (no ocorre overflow ).
b) 010111112 ; resultado errado (ocorre overflow ).
c) 000000002 ; resultado correto (no ocorre overflow ).
Exerccio 16
a) X SS: 227; C2: 29
Y
SS: 72; C2: 72
b) SS: 100101011; resultado errado (ocorre overflow ).
C2: 00101011; resultado correto (no ocorre overflow ).
Exerccio 17
a) PH =7A; Q10 =34
b) i)
ii)
Pg. 82 de 100
Exerccio 18
a) 010010102
b) 92
c) M N = 101001102 ; resultado errado (ocorre overflow ).
N M = 010110102 ; resultado errado (ocorre overflow ).
Exerccio 19
a) S = 56; T = 17
b) S = 101110002 ; T = 000100012
c) S + T = 101001112 ; resultado correto (no h overflow ao somar as grandezas).
Exerccio 20
a) Y = 49H ; Z = 100111102
b) 010110102 ; ocorre overflow, i.e., o resultado est errado (a soma de nmeros negativos no
pode ser positiva).
c) 010000112
b) 000001002
c) 22,0
Exerccio 8
a) 41FA0000H
b) BF200000H
c) 00000000H
d) 44805000H
Exerccio 9
a) A: 42040000H ; B: C0380000H
b) i)
A + B: 41F10000H
ii)
B A: C20F8000H
iii)
3 B: C10A0000H
c) A + B = 30,125
Exerccio 10
a) 40000000H
B A = 35,875
b) 42150000H
3 B = 8,625.
c) C2250000H
d) C29D0000H
Pg. 83 de 100
Exerccio 11
a) 010000010011101000000000000000002
Exerccio 12
a) 110000010010010000000000000000002
Exerccio 13
a) C1400000H
Exerccio 14
Opo A.
11
B
0
0
1
1
0
0
1
1
C
0
1
0
1
0
1
0
1
F
1
0
1
0
1
1
0
0
b) X
0
0
0
0
1
1
1
1
Y
0
0
1
1
0
0
1
1
Z
0
1
0
1
0
1
0
1
G
1
0
1
0
1
1
0
1
c)
W
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
X
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
Y
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
Z
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
F
0
0
0
1
0
0
0
1
0
0
0
1
0
0
0
0
Pg. 84 de 100
Exerccio
a) X
0
0
0
0
1
1
1
1
12
Y
0
0
1
1
0
0
1
1
Z
0
1
0
1
0
1
0
1
F
0
1
0
1
1
1
1
0
b) F = (X + Z)(X + Y + Z).
Exerccio 13
a) Y = A + B.
b)
Exerccio 14
a) F = AB + C
Exerccio 15
a) X Y Z
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
c)
F
0
1
1
1
0
0
0
0
b) A
0
0
0
0
1
1
1
1
B
0
0
1
1
0
0
1
1
C
0
1
0
1
0
1
0
1
F
1
0
1
1
1
0
1
0
F = (X + Y + Z)X
Pg. 85 de 100
b)
A
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
B
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
C
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
D
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
G
0
1
1
0
1
0
1
0
0
0
1
0
1
1
1
1
G = AB + AB C D + AB C D + AB C D + AB C D + AB C D
Exerccio 16
Nota: construir tabela de verdade, exprimir G na forma de produto de somas e simplificar.
G = (A + B)(A + C)(A + B + C)
Exerccio 17
a) A B S
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
F
0
0
0
1
1
0
1
1
b) F (A, B, S) = AS + B S.
c) Nota: desenhar circuito lgico que realiza F (A, B, S).
d) G(X, Y, S) = X Y + X S + Y S.
e) Nota: deduzir expresso da funo realizada pelo circuito e simplificar. Alternativamente,
pode ser construda a tabela de verdade a partir da expresso deduzida do circuito e da
expresso obtida na alnea anterior, com fins comparativos.
Pg. 86 de 100
Exerccio 18
a) A3 A2
0
0
0
0
0
0
0
0
0
1
0
1
0
1
0
1
1
0
1
0
1
0
1
0
1
1
1
1
1
1
1
1
Exerccio 19
a) A B Ci
0 0
0
0 0
1
0 1
0
0 1
1
1 0
0
1 0
1
1 1
0
1 1
1
A1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
Co
0
0
0
1
0
1
1
1
A0
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
S
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
b) S = A3 A1 A0
S
0
1
1
0
1
0
0
1
Pg. 87 de 100
Exerccio 20
a) A1 A0
0
0
0
0
0
0
0
0
0
1
0
1
0
1
0
1
1
0
1
0
1
0
1
0
1
1
1
1
1
1
1
1
B1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
B0
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
M AIOR
0
0
0
0
1
0
0
0
1
1
0
0
1
1
1
0
Exerccio 21
O circuito determina o mximo de A e B.
Exerccio 22
a)
MUX4:1
D0
D1
D2
D3
A.B
S1 S0
A
b)
MUX4:1
D0
D1
D2
D3
F(X ,Y)
S1 S0
X
Pg. 88 de 100
X
0
0
0
0
1
1
1
1
Y
0
0
1
1
0
0
1
1
Z
0
1
0
1
0
1
0
1
F
0
1
1
1
0
0
1
0
D0
1
D1
D2
F(X ,Y,Z)
D3
S1 S0
X
Exerccio 23
a) AB = 01
AB = 11
no usada.
Pg. 89 de 100
Exerccio 7
a) D(J, K, Q) = J Q + K Q
b)
CLK
Exerccio 8
a) D0 = EN Q0
D1 = EN Q0 Q1
b)
CLK
EN
Q0
Q1
Pg. 90 de 100
f) Um segundo multiplexador de 8 (entradas de 4 bits) para 1, assim como uma segunda entrada
de 3 bits com o endereo do registo a ler.
Exerccio 11
a) [0x4000; 0x5FFF]
Descodificao parcial, pois h um bit (A12 ) que no usado pela RAM, originando dois
endereos para cada entrada da RAM.
b) 0xCFFF
c) O circuito resulta da expresso CSROM = A15 A14 A13 A12 A11 (AND com duas entradas
negadas).
Exerccio 12
a) ROM1: 16 KiB
RAM1: 16 KiB
RAM2: 4 KiB
b) CSROM1 = A15 A14
CSRAM1 = A15 A14
CSRAM2 = A15 A14 A13 A12
c)
9.5 Desempenho
Exerccio 9
a) IPCP1 = 1,43 (instrues/ciclo)
IPCP2 = 2,00 (instrues/ciclo)
IPCP3 = 3,33 (instrues/ciclo)
b) 2,1 GHz
c) 27 109
Exerccio 10
a) P1 : texec = 1,87 ms
P2 : texec = 1,00 ms
P2 : 2 106
Pg. 91 de 100
Exerccio 11
P1 : 4 109 (instrues/segundo)
P2 : 3 109 (instrues/segundo)
Exerccio 12
a) C o computador mais rpido (45 s).
b) C 1,67 vezes mais rpido que B e 4,93 vezes mais rpido que A.
Exerccio 13
a) texec = 675 ns
b) CPI = 1,93 (instrues/segundo)
c) A execuo 1,23 mais rpida e CPI = 1,69
Exerccio 14
6,5 104
Exerccio 15
88 %
Exerccio 16
a) 1,67
b) 5
Exerccio 17
a) Desenhar o grfico da funo
S(f ) =
b) f =
1
f
+ (1 f )
10
10
10 9 f
0f 1
5
0,56 =56 %
9
8
9
1
9
11 %
88,9 %
Pg. 92 de 100
$s0, $s2, 2
$s0, $s1, $s0
$s4,
$t0,
$s4,
$s4,
$s0,
$s2,
$s4,
$s4,
$s1
$s3
-30
$t0
$s0, 16($s7)
$s0, $s0, $s1
$s0, $s0, $s2
$t0,
$t0,
$t0,
$s0,
$s0,
40($s7)
$t0, 2
$t0, $s6
0($t0)
$s2, $s0
$t0,
$t0,
$t0,
$s0,
$s0,
$s0,
$s2, 9
$t0, 2
$s6, $t0
0($t0)
$s0, $s3
$s0, $s1
$t0,
$t0,
$t0,
$t0,
$t0,
$s0,
8($s7)
$t0, 4
$t0, 2
$s6, $t0
0($t0)
$s1, $t0
Pg. 93 de 100
Exerccio 10
a) Atribuio: f $s0, g $s1, h $s2, i $s3, j $s4
A expresso correspondente : f = f + g + h + i + j
b) Atribuio: f $s0, A $s6
A expresso correspondente : f = A[1]
c) Atribuio: f $s0, g $s1, A $s6
A expresso correspondente : f = A[g-3]
Exerccio 11
a) sw $t3,-4($s0)
b) lw $t1,18($t0)
Exerccio 12
a) 0x57755778
b) 0x55555550
c) 0x0000AAAA
Exerccio 13
a)
b)
endereo
instruo
0x0400000
0x0400004
0x0400008
0x040000C
0xADAC0000
0x000C6100
0x21AD0004
0x1580FFFC
Exerccio 14
a)
sub
srl
bne
add
fim:
...
$t2,$zero,$t1
$t0,$t1,31
$t0,$zero,fim
$t2,$t1,$zero
b) slt $t1,$t3,$t2
Exerccio 15
Uma possvel soluo:
ciclo:
fim:
add
lb
beq
addi
addi
j
...
# inicializa contador
# extrai byte de memria
# termina se for 0
# endereo do prximo byte
Pg. 94 de 100
Exerccio 16
a) Fragmento 1: 20; fragmento 2: 200.
b) Fragmento 1: 5 N + 3; fragmento 2: (1 + 3 10 + 2) N = 33 N .
Exerccio 17
Uma soluo entre outras possveis:
addi
addi
proximo: lw
lw
beq
add
j
continua: addi
beq
addi
addi
j
fim:
...
$t0,$zero,100
$s0,$zero,1
$t1,0($s4)
$t2,0($s5)
$t1,$t2,continua
$s0,$zero,$zero
fim
$t0,$t0,-1
$t0,$zero,fim
$s4,$s4,4
$s5,$s5,4
proximo
# se no chegou ao fim
# passa ao prximo elemento
Exerccio 18
Uma soluo entre outras possveis:
ciclo:
prox:
addi
addi
lw
andi
beq
addi
addi
addi
bne
...
$t0,
$s7,
$t1,
$t2,
$t2,
$s7,
$s0,
$t0,
$t0,
$zero, 50
$zero, 0
0($s0)
$t1, 1
$zero, prox
$s7, 1
$s0, 4
$t0, -1
$zero, ciclo
# contador: $t0
# resultado a zero
#
#
#
#
par
mpar
prximo endereo
decrementar contador
Exerccio 19
ciclo:
fim:
lw
addi
addi
beq
addi
lw
slt
beq
add
j
...
$t7, 0($t0)
$t1, $zero, 50
$t1, $t1, -1
$t1, $zero, fim
$t0, $t0, 4
$t2, 0($t0)
$t3, $t2, $t7
$t3, $zero, ciclo
$t7, $t2, $zero
ciclo
Exerccio 20
a) Parmetros da sub-rotina:
$a0: endereo-base da sequncia
$a1: nmero de elementos da sequncia
1
2
soma :
L1 :
3
4
5
6
7
8
L2 :
add
beq
lw
add
addi
addi
j
jr
$v0 ,
$a1 ,
$t0 ,
$v0 ,
$a0 ,
$a1 ,
L1
$ra
$zero , $zero
$zero , L2
0( $a0 )
$v0 , $t0
$a0 , 4
$a1 , -1
# resultado a 0
# terminar
# obter um elemento
# acumular
# endereo do prximo elemento
# ajustar n o de elementos
# repetir ( prximo elemento )
b) Parmetros da sub-rotina:
$a0: endereo-base da sequncia
$a1: nmero de elementos da sequncia
1
2
impar :
Lx :
3
4
5
6
7
par :
8
9
10
Ly :
add
beq
lw
andi
beq
addi
addi
addi
j
jr
$v0 ,
$a1 ,
$t0 ,
$t0 ,
$t0 ,
$v0 ,
$a0 ,
$a1 ,
Lx
$ra
$zero , $zero
$zero , Ly
0( $a0 )
$t0 , 1
$zero , par
$v0 , 1
$a0 , 4
$a1 , -1
# resultado a 0
# terminar
# obter um elemento
# isolar bit menos sign .
# saltar se n o par
# contabilizar
# endereo do prximo elemento
# ajustar n o de elementos
# repetir ( prximo elemento )
c) Parmetros da sub-rotina:
$a0: endereo-base da sequncia
$a1: nmero de elementos da sequncia
$a2: valor de limiar
1
2
3
4
5
6
7
8
9
10
limiar : add
L11 :
beq
lw
slt
bne
addi
L21 :
addi
addi
j
L31 :
jr
$v0 ,
$a1 ,
$t0 ,
$t1 ,
$t1 ,
$v0 ,
$a0 ,
$a1 ,
L11
$ra
$zero , $zero
$zero , L31
0( $a0 )
$t0 , $a2
$zero , L21
$v0 , 1
$a0 , 4
$a1 , -1
# resultado a 0
# terminar
# obter um elemento
# teste : elem < limiar
# saltar se elem >= limiar
# contabilizar
# endereo do prximo elemento
# ajustar n o de elementos
# repetir ( prximo elemento )
d) Parmetros da sub-rotina:
Arquitetura e Organizao de Computadores
Pg. 96 de 100
iguais : addi
L12 :
beq
lw
lw
bne
L22 :
addi
addi
addi
j
L32 :
add
L42 :
jr
$v0 ,
$a2 ,
$t0 ,
$t1 ,
$t0 ,
$a0 ,
$a1 ,
$a2 ,
L12
$v0 ,
$ra
$zero , 1
$zero , L42
0( $a0 )
0( $a1 )
$t1 , L32
$a0 , 4
$a1 , 4
$a2 , -1
# resultado a 1
# terminar
# obter um elemento da 1 a
# obter um elemento da 2 a
# saltar se diferentes
# endereo do prximo elemento
# endereo do prximo elemento
# ajustar n o de elemntos
# repetir ( prximos elementos )
# sequncias diferentes
$zero , $zero
b) A instruo sw.
Pg. 97 de 100
Exerccio 8
a) I-Mem Regs ALU D-Mem Mux . Tempo: 1100 ps.
b) I-Mem Regs Mux ALU Mux (PCSrc). Tempo: 780 ps.
Exerccio 9
Exerccio 10
a) 0x8E080028.
b) 16. Sim.
c) 8. No.
d) 8. Sim.
e) RegDst=0, MemRead=1.
f) 0x1509FFFF; 8, sim; 9, sim; 9 ou 31 (RegDst=X), no; RegDst=X, MemRead=0.
Exerccio 11
a) 320 ps.
b) RegWrite.700 ps para a instruo mais lenta (lw).
c) ALUOp. 150 ps.
1
134
212
1
135
213
162
161
2
44
41
221
endereo
0000 0001
1000 0110
1101 0100
0000 0001
1000 0111
1101 0101
1010 0010
1010 0001
0000 0010
0010 1100
0010 1001
1101 1101
etiqueta
0
8
13
0
8
13
10
10
0
2
2
13
ndice
1
6
4
1
7
5
2
1
2
12
9
13
Hit/Miss
M
M
M
H
M
M
M
M
M
M
M
M
Pg. 98 de 100
Exerccio 4
a) Etiqueta: 12 bit; ndice: 4 bit; espao de endereamento: 0x00000 - 0x3ffff; capacidade
mxima: 256 KiB.
b)
Exerccio 5
a) O campo d indica se o valor de contedo em memria cache diferente do valor em memria
principal.
b) A determinao do ndice e da etiqueta faz-se como no problema anterior.
1. ndice 4, etiqueta 0xb7c e v=1: read hit. Ler valor 0x6198fa34 de memria cache (bloco
4).
2. Endereo igual ao da alnea anterior: write hit. Como d=0, no necessrio fazer write
back. O valor 0x33334444 escrito na memria cache (bloco 4), v=1, d=1, etiqueta
0xb7c.
3. ndice 9, etiqueta 0x431, v=1: write miss. Como v=1 e d=1, necessrio fazer write
back : escrever o valor 0xffffeffe (posio 9) em memria (endereo 0x21de4). O valor
0x9999aaaa colocado na posio 9 da memria cache, com v=1, d=1, etiqueta 0x431.
4. ndice 5, etiqueta 0x8d1 e v=0: read miss. Como v=0, no faz write back (valor de d
no interessa neste caso). Ler valor de memria principal e coloc-lo na posio 5, com
v=1, d=0, etiqueta 0x8d1.
5. ndice 12, etiqueta 0xfde, v=0: read miss. Como v=0, no faz write back. Ler valor de
memria principal e coloc-lo na posio 12, com v=1, d=0, etiqueta 0xfde.
6. ndice 9, etiqueta 0x877. O bloco 9 foi alterado pelo terceiro acesso, pelo que a etiqueta
diferente (etiqueta atual do bloco 0x431). Como v=1, ocorre um write miss. Como
d=1, necessrio efetuar write back : escrever o valor valor 0x9999aaaa na posio de
endereo 0x00010c64. Escrever valor 0xbbbb7777 no bloco 9 da memria cache, v=1,
d=1, etiqueta 0x877.
7. ndice 7, etiqueta 0xabf, v=1: como as etiquetas no coincidem, ocorre write miss.
Como d=0, no existe necessidade de fazer write-back. Colocar o valor 0x1212abab em
memria cache (bloco 7) com v=1, d=1.
8. ndice 12, etiqueta 0xfde, v=1 (mesmo endereo que no quinto acesso, que alterou este
bloco): read hit. Basta atualizar valor em memria cache: escreve valor 0x00001111 no
bloco 12 com v=1, d=1, etiqueta 0xfde (mantm etiqueta).
Pg. 99 de 100
Exerccio 6
a) P1: 1,61 GHz; P2: 1,52 GHz.
b) P1: 8,6 ns; P2: 6,26 ns.
c) Ter em ateno que existem 1 + 0,36 acessos a memria por instruo.
P1: CPI=1 + 0,114 1,36 70/0,62=18,5; P2: CPI=12,54.
Exerccio 7
a) 90 faltas/103 instrues.
b) 6,43 %.
c) Um acesso a memria custa 80 ciclos (perodo de relgio: 1 ns).
i)
ii)