Vous êtes sur la page 1sur 102

Arquitetura e Organizao de Computadores

Exerccios
Antnio Jos Arajo
Joo Canas Ferreira
Raul Moreira Vidal

Mestrado Integrado em Engenharia Informtica e Computao


Setembro de 2015

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

7 Organizao do processador MIPS 67


7.1 Exerccios resolvidos . . . . . . . 67
7.2 Exerccios propostos . . . . . . . 72
8 Memria Cache
75
8.1 Exerccios resolvidos . . . . . . . 75
8.2 Exerccios propostos . . . . . . . 77

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

b) 25910 =?2 =?16

d) 100000,112 =?10 =?16

e) 1BEEF16 =?2

c) 11102 =?10 =?16

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

Aritmtica binria Exerccios resolvidos

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

As regras de clculo so idnticas s regras usadas em base 10.


a)
101110
+100101
1010011
b)
01 0
1110010
1101101
101
c)
1001011
11001
1001011
1001011
+1001011
11101010011

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

Aritmtica binria Exerccios resolvidos

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)

Sinal e grandeza: 1 = 1000012 .


Complemento para 2: tendo em considerao o que foi descrito na alnea anterior,
1 = 0000012 , pelo que 1 = 1111112 .

d) O nmero em causa 32 = 25 = 1000002 .


Sinal e grandeza: a grandeza de 32 no se consegue codificar com apenas 5 bits, pelo
que o valor 32 no representvel no formato pretendido.
Complemento para 2: o valor 32 tambm no representvel com 6 bits; um nmero
positivo e no entanto 1000002 representa um nmero negativo (MSB=1).
Com 6 bits, o maior nmero representvel 261 1 = 31.

Arquitetura e Organizao de Computadores

Pg. 3 de 100

Aritmtica binria Exerccios resolvidos

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;

ii) em sinal e grandeza;

iii) em complemento para dois.


b) Indique a gama de valores representveis considerando a forma complemento para 2.
c) Admitindo que a referida representao se encontra em complemento para dois, efetue
a sua adio em binrio e comente o resultado.

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)

Os valores so ambos negativos.


110000012

compl. 2

001111112 = 63

Este o valor simtrico do nmero a identificar. Logo, 110000012 interpretado em


complemento para 2, resulta no decimal 63.
101001112

compl. 2

010110012 = 89

Da mesma forma, 101001112 interpretado em complemento para 2, resulta no decimal


89.
b) Com 8 bits conseguem escrever-se 28 = 256 nmeros. Considerando que metade so nmeros
negativos e a outra metade corresponde a nmeros positivos, incluindo o 0, resulta o seguinte
intervalo de representao: [128; +127]. Ao contrrio do que sucede em sinal e grandeza, o
0 s tem uma representao.
De forma mais genrica, em complemento para 2, a gama de representao correspondente
a n bits :
[2n1 ; +2n1 1]
Arquitetura e Organizao de Computadores

Pg. 4 de 100

Aritmtica binria Exerccios resolvidos

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.

a) A converso para hexadecimal direta:


M

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

Concluso: N o nmero que possui maior grandeza.


Arquitetura e Organizao de Computadores

Pg. 5 de 100

Aritmtica binria Exerccios resolvidos

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

N j se encontra em complemento para 2, pelo que se pode ento calcular M + N :


110100
+110010
1100110
No h overflow, pois os operandos so negativos e o resultado encontrado tambm negativo.
Exerccio 7
Os valores X = 101111002 e Y = 101001102 esto representados com 8 bits. Determine
o menor nmero de bits necessrio para representar corretamente X + Y , supondo que os
operandos esto representados em:
a) sinal e grandeza;

b) complemento para 2.

a) Representao em sinal e grandeza:


X = 1 0111100
S
G

= 1 0100110
S
G

Para calcular X + Y necessrio somar as grandezas de X e Y , operao esta realizada em


7 bits.
0111100
+0100110
1100010
A grandeza resultante representvel em 7 bits. Como tal, e tendo em considerao o bit de
sinal, o menor nmero de bits necessrio para a representao de X + Y em sinal e grandeza
8.
b) Representao em complemento para 2:
X+Y:

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.

Arquitetura e Organizao de Computadores

Pg. 6 de 100

Aritmtica binria Exerccios propostos

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.

1.2 Exerccios propostos


Exerccio 9
Em cada alnea, considere o nmero dado e represente-o nos sistemas de numerao indicados.
a) 25610 =?2 =?16

b) 204710 =?2 =?16

c) 24,2510 =?2 =?16

d) 4,210 =?2 =?16

e) 100002 =?10 =?16

f) 100,0012 =?10 =?16

g) 1E16 =?2 =?10

h) ABCD16 =?10 =?2

i) AB,C16 =?10 =?2

j) 111010 =?16

Arquitetura e Organizao de Computadores

Pg. 7 de 100

Aritmtica binria Exerccios propostos

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

Arquitetura e Organizao de Computadores

c) P = 8CH e Q = 74H

Pg. 8 de 100

Aritmtica binria Exerccios propostos

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;

ii) em complemento para 2.

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.

Arquitetura e Organizao de Computadores

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) Calcule o expoente real do nmero codificado em X.


b) Determine o sinal de X + Y .
c) Justifique a afirmao: Sendo X um nmero qualquer, X Y = X.

a)
X = C3800000H = 1

10000111 000000000000000000000002
EX = 135

O expoente real de X :
real
EX
= 135 127 = 8

b) Como EY = 127, EX > EY . Ento |X| > |Y | e portanto,


SX+Y = SX = 1
ou seja, X + Y um nmero negativo.
c) Como EY = 127, EYreal = 0.
Porque os 23 bits da mantissa de Y so nulos, MY = 1,0.
Ento, conclui-se que Y = 1 e por isso, para qualquer X, tem-se X Y = X.
Exerccio 2
Considere Y = 25,2510 e o nmero real X cuja representao em formato IEEE 754
(preciso simples) BF40000016 .
a) Mostre a representao de Y no formato IEEE 754 (em binrio).
b) Calcule X Y , indicando claramente todos os passos efetuados.

Arquitetura e Organizao de Computadores

Pg. 10 de 100

Vrgula flutuante Exerccios resolvidos

a) Pretende-se mostrar Y em binrio no contexto da representao em vrgula flutuante com


preciso simples (32 bits).
Y = 25,2510 = 24 + 23 + 20 + 22 = 11001,012 = 1,1001012 24
SY = 0
EY = EYreal + 127 = 4 + 127 = 131 = 100000112
MY = 1,1001012
Resulta ento:
Y = 010000011100101 00
0}
| {z
17 0s
b)
X = BF40000016 =

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.

Arquitetura e Organizao de Computadores

Pg. 11 de 100

Vrgula flutuante Exerccios resolvidos

a) A representao binria do nmero :


C1200000H = 1100 0001 0010 0000 0000 0000 0000 00002
Interpretando este nmero como um inteiro sem sinal, o valor decimal correspondente
determinado com base na posio que cada bit ocupa. Assim:
110000010010000000000000000000002 =
=
=
=
=

231 + 230 + 224 + 221


221 (210 + 29 + 23 + 20 )
2 210 210 (1024 + 512 + 9)
2097152 1545
324009984010

Nota: admissvel apresentar a soluo na forma de uma soma de potncias de 2.


b) C1200000H = 1100 0001 0010 0000 0000 0000 0000 00002
Interpretando este nmero dado em complemento para 2 e atendendo a que um nmero
negativo (MSB=1), o decimal correspondente pode ser determinado depois de obter o simtrico correspondente. Este pode ser obtido por aplicao da regra prtica que consiste
em copiar todos os bits da direita para a esquerda at ser encontrado o primeiro 1 e depois
complementar os restantes. Assim:
110000010010000000000000000000002

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

Arquitetura e Organizao de Computadores

Pg. 12 de 100

Vrgula flutuante Exerccios resolvidos

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

Em termos de representao em vrgula flutuante


SZ
EZ
MZ

= SX
= EX
= MX

Logo,
Z = 0100001100000011 00 02
| {z }
16 0s
c)
real
real
EX+Y
= EYreal EX
=7

Contudo, ao somar as mantissas, o resultado pode no estar normalizado:


MX :
MY :
MX+Y

1,0000011
+1,1111100
10,1111111 = 1,011111112 21

Logo, o expoente indicado inicialmente tem de ser incrementado, resultando


real
EX+Y
=8

Arquitetura e Organizao de Computadores

Pg. 13 de 100

Vrgula flutuante Exerccios resolvidos

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

c) Qual o nmero Z tal que o valor de Y Z representado por 110000011001010 02 ?

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 =

Arquitetura e Organizao de Computadores

1
SZ

10000000 00...0
EZ
fZ

Pg. 14 de 100

Vrgula flutuante Exerccios resolvidos

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)

o expoente de Y , sabendo que o expoente resultante de X Y , representado nos


seus 8 bits, 100000002 .

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)

Como os 23 bits da parte representvel (parte fracionria) da mantissa so nulos,


conclui-se que MY = 1,fY = 1,0. Assim,
MXY = MX MY = MX = 1,00111012

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

128 = 132 + EY 127


EY

Arquitetura e Organizao de Computadores

= 123 (EYreal = 4)

Pg. 15 de 100

Vrgula flutuante Exerccios propostos

2.2 Exerccios propostos


Exerccio 7
Considere que 110000011011000000000000000000002 a representao de um nmero em vrgula
flutuante segundo a norma IEEE 754. Determine:
a) a mantissa do nmero;

b) o expoente do nmero;

c) o valor decimal representado.


Exerccio 8
Represente em vrgula flutuante, no formato de preciso simples (32 bits) da norma IEEE 754,
os seguintes nmeros:
a) 31,25

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

c) Represente o resultado das operaes anteriores em decimal e verifique se corresponde ao


valor esperado.
Exerccio 10
Dois nmeros V1 e V2 esto representados em vrgula flutuante no formato de 32 bits. Os seus
valores, expressos em hexadecimal, so:
V1 : 421D0000H
V2 : C0000000H
Calcule:
a) V2

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.

Arquitetura e Organizao de Computadores

Pg. 16 de 100

Vrgula flutuante Exerccios propostos

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

a) Indique a representao de S em hexadecimal.


b) Mostre como se realiza a adio de S e T , indicando claramente todos os passos efetuados.
Exerccio 14
No formato de preciso simples da norma IEEE 754, os nmeros X e Y so representados por
X: C3800000H

Y : 001111111000000000000000000000002 .

Das afirmaes seguintes indique a correta, fundamentando a sua escolha.


A.
B.
C.
D.

O expoente real de X 8.
X Y um nmero positivo.
O expoente real de X 8 e Y um nmero negativo.
X >Y.

Arquitetura e Organizao de Computadores

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)

=
=
=
=
=

(A + B + C)(A +B + C)(A + B + C)(A


+ B + C)

(A + B) + (C C) (A + B) + (C C)
(A + B)(A + B)
(A + A)B
B

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

Arquitetura e Organizao de Computadores

Pg. 18 de 100

Circuitos combinatrios Exerccios resolvidos

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

a) Se um termo soma 0 ento a funo tambm 0. Assim:


se A=0 e B=1, ento F =0;
se A=0 e B=0 e C=1, ento F =0.
Desta forma identificam-se as combinaes das variveis, isto , as linhas da tabela de verdade
onde F =0, tal como apresentado. Nas restantes situaes F =1.
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
0
0
1
1
1
1

A+B+C
A+B
A+B

b) Se um termo produto 1 ento a funo tambm 1. Assim:


se X=1 e Y =0, ento F =1;
se X=0 e Y =1 e Z=0, ento F =1.
Desta forma identificam-se as combinaes das variveis, isto , as linhas da tabela de verdade
onde F =1, tal como apresentado. Nas restantes situaes F =0.
X
0
0
0
0
1
1
1
1
Arquitetura e Organizao de Computadores

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

Circuitos combinatrios Exerccios resolvidos

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

Logo, f (x, y) = xy + xy.


b) Optando pela forma produto de somas e procedendo da forma descrita, os termos soma que
definem a funo so os indicados.

Arquitetura e Organizao de Computadores

Pg. 20 de 100

Circuitos combinatrios Exerccios resolvidos

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

Logo, g(x, y, z) = (x + y + z)(x + y + z)(x + y + z).


Exerccio 4
Considere a funo booleana F (X, Y, Z) com
F (X, Y, Z) = X Y Z + X Y Z + X Y Z + X Y Z + X Y Z + X Y Z
a) Simplifique a expresso de F (X, Y, Z).
b) Construa a tabela de verdade da funo.
c) Indique a expresso de F (X, Y, Z) na forma de um produto de somas.
d) Obtenha um circuito lgico que realiza a funo F (X, Y, Z), usando apenas portas
lgicas do tipo NOR.

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

c) Na tabela de verdade identificam-se os termos soma para os quais F =0. So eles


X +Y +Z
Arquitetura e Organizao de Computadores

X +Y +Z
Pg. 21 de 100

Circuitos combinatrios Exerccios resolvidos

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

Arquitetura e Organizao de Computadores

Pg. 22 de 100

Circuitos combinatrios Exerccios resolvidos

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.

Para os nmeros compreendidos entre 2 e 5, formados em binrio por n2 n1 n0 , G = 1. Para


os restantes G 0. Assim resulta a tabela de verdade seguinte:
n2
0
0
0
0
1
1
1
1

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

a) Defina F (W, X, Y, Z) atravs de uma tabela de verdade.


b) Represente F (W, X, Y, Z) atravs de uma expresso algbrica.

a) As variveis W , X e Y determinam a entrada do multiplexador que selecionada. O valor


nela aplicado surge na sada do circuito. A tabela de verdade pretendida obtm-se considerando todas as combinaes das variveis e consequentes valores da funo.

Arquitetura e Organizao de Computadores

Pg. 23 de 100

Circuitos combinatrios Exerccios resolvidos

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

b) Considere-se a forma soma de produtos nesta resoluo. Embora no seja requerido no


enunciado vai proceder-se simplificao da expresso.
F

=
=
=
=
=
=

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

Arquitetura e Organizao de Computadores

Pg. 24 de 100

Circuitos combinatrios Exerccios resolvidos

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

b) Efetuar as seguintes ligaes:


D0 = 0, D1 = D2 = 1, D3 = 0,
D4 = D5 = D6 = D7 = 1,
S2 = A, S1 = B, S0 = C e Y = F .

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

Arquitetura e Organizao de Computadores

Pg. 25 de 100

Circuitos combinatrios Exerccios propostos

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

Desenhar o circuito a partir da expresso encontrada.


c) A funo pretendida define-se como
Z = X Y
d) Usar 3 circuitos comparadores de 2 bits idnticos aos da alnea a), combinando as sadas da
seguinte forma:
X = X1 X2 X3
e
Y = Y3 + X3 Y2 + X3 X2 Y1
em que:
X1 a sada X do comparador de a1 a0 com b1 b0 ;
X2 a sada X do comparador de a3 a2 com b3 b2 ;
X3 a sada X do comparador de a5 a4 com b5 b4 ;
Y1 , Y2 e Y3 so as sadas Y dos comparadores correspondentes.

3.2 Exerccios propostos


Exerccio 10
Simplifique algebricamente as seguintes funes booleanas utilizando teoremas da lgebra de
Boole.
a) F (A, B, C, D, E) = AB C + C DE + AB + AB C DE + AB DE + C DE.
b) F (A, B, C) = A + AB + AC.
c) G(A, B, C) = AB C + AB C + AB C.
d) F (A, B, C, D) = B C D + A(C + B) + AC D + AB C D.
e) F (W, X, Y, Z) = W (X + Y (Z + W )).
f) F (A, B, C, D) = AB C + B C D + AB C D + AB C D.

Arquitetura e Organizao de Computadores

Pg. 26 de 100

Circuitos combinatrios Exerccios propostos

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) Deduza a expresso booleana simplificada correspondente sada Y do circuito.


b) Mostre que a sada Z pode ser definida por Z(A, B, C) = B + C.
Exerccio 14
Considere a funo booleana F (A, B, C) = A + B + C + AB C.
a) Indique a expresso de F (A, B, C) como uma soma de produtos simplificada.
b) Construa a tabela de verdade da funo F (A, B, C).
c) Obtenha um circuito lgico que realize a funo F (A, B, C).
Exerccio 15
Considere as seguintes funes booleanas:
F = X Y + X Y Z

G = (A + B + C)(A + B + D)(B + C + D)(A + B + C + D).

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

Circuitos combinatrios Exerccios propostos

b) Represente G(A, B, C, D) atravs de uma tabela de verdade e obtenha uma expresso na


forma de uma soma de produtos (no simplificada).
Exerccio 16
Seja a funo booleana G(A, B, C) = AC + BAC + BCA. Exprima G(A, B, C) na forma de
um produto de somas simplificado.
Exerccio 17
A figura seguinte mostra um circuito que realiza uma funo G(X, Y, S). Alm de portas lgicas,
o circuito inclui um bloco, M, que realiza a funo F (A, B, S) definida por: F = A se S = 0 e
F = B se S = 1.
X
Y

A
F(A, B, S)
B

G(X, Y, S)

a) Exprima a funo F numa tabela de verdade.


b) Indique uma expresso simplificada para F (A, B, S).
c) O circuito que realiza a funo F um multiplexador (multiplexer ) de 2 para 1. Mostre
como constitudo.
d) Encontre uma expresso simplificada do tipo soma de produtos para a funo G(X, Y, S)
realizada pelo circuito.
e) Mostre que o circuito seguinte, usando apenas portas NAND, realiza a funo G.
X

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.

Arquitetura e Organizao de Computadores

Pg. 28 de 100

Circuitos combinatrios Exerccios propostos

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

a) Construa a tabela de verdade correspondente s funes S(A, B, Ci) e Co(A, B, Ci).


b) Escreva a expresso das funes S(A, B, Ci) e Co(A, B, Ci) na forma de uma soma de produtos.
c) Verifique que o circuito lgico da figura seguinte realiza as funes S(A, B, Ci) e Co(A, B, Ci).
A
B

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

Arquitetura e Organizao de Computadores

Pg. 29 de 100

Circuitos combinatrios Exerccios propostos

a) Expresse a funo do circuito numa tabela de verdade.


b) Escreva uma expresso da funo M AIOR(A1 , A0 , B1 , B0 ).
Exerccio 21
O circuito da figura contm um comparador de magnitude de 2 bits e 2 multiplexadores de 2 para
1. As entradas do circuito formam dois nmeros positivos, de 2 bits, A = A1 A0 e B = B1 B0 .
As sadas definem um nmero, tambm com 2 bits, M = M1 M0 . Analise o circuito e identifique
a sua funcionalidade.
MUX2_1
I0
Y
I1

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

a) Mostre como implementar o produto lgico de duas variveis recorrendo ao multiplexador.


b) Realize a funo F (X, Y ) = X Y + X Y com o multiplexador apresentado.

Arquitetura e Organizao de Computadores

Pg. 30 de 100

Circuitos combinatrios Exerccios propostos

c) Verifique, exemplificando, que igualmente possvel implementar funes de trs variveis.


Sugesto: represente uma funo de 3 variveis atravs de uma tabela de verdade e, para
cada combinao das variveis, relacione o valor da funo com uma dessas variveis.
Exerccio 23
A figura mostra um circuito constitudo por um descodificador binrio de 2 para 4 e um conjunto
de 3 lmpadas. O estado das lmpadas controlado pelas entradas A e B do circuito, ou seja,
Lvm , Llj e Lvr so funes de A e B. Admita que para ligar uma lmpada necessrio que a
sada do descodificador que a controla tenha o valor lgico 1.
DEC2_4
B

I0

I1

Y0
Y1
Y2
Y3

Lvm
Llj
Lvr

a) Indique o estado de cada lmpada se AB = 01 e AB = 11.


b) Determine o valor das entradas de modo a ligar, simultaneamente, as lmpadas verde (Lvr =
1) e laranja (Llj = 1).

Arquitetura e Organizao de Computadores

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.

a) Como inicialmente Q0 = 0 e Q1 = 0, nas entradas dos flip-flops vo estar os valores D0 = 0 e


D1 = 1, uma vez que X = 0. Ao ocorrer a primeira transio do sinal de relgio so estes os
valores capturados pelos flip-flops, aparecendo nas sadas respetivas. Na prxima transio,
o estado das sadas e X determinam os novos valores que os flip-flops vo apresentar. Assim
se completam as formas de onda apresentadas.

Arquitetura e Organizao de Computadores

Pg. 32 de 100

Circuitos sequenciais Exerccios resolvidos

CK

Q1

Q0

b) Considerando T = 20 ns, verifica-se pelo resultado da alnea anterior que Y transita de 0


para 1 ao fim de 2,5 T =50 ns.
Exerccio 2
Considere o seguinte circuito sequencial, constitudo por dois flip-flops e um multiplexador.
Os flip-flops so sensveis transio ascendente do sinal de relgio (CLK) e o seu estado
inicial 0.
MUX2_1

1
IN

CLK

I0
I1

Y
S

OUT

CLK

CLK

Assumindo a sequncia de valores da entrada do circuito (IN) indicada na figura seguinte,


apresente a forma de onda dos sinais X e OUT.
CLK

IN

OUT

Inicialmente, X e OU T apresentam o valor 0. Sendo a entrada de seleo do multiplexador 0, o


valor que surge na sua sada 1, referente entrada I0 . Como IN = 0 e Y = 1 quando ocorre
a primeira transio do sinal de relgio, ento X e OU T passam a assumir os valores 0 e 1,
respetivamente. A anlise do sucedido para as restantes transies segue o mesmo raciocnio,
levando ao resultado apresentado na figura seguinte.

Arquitetura e Organizao de Computadores

Pg. 33 de 100

Circuitos sequenciais Exerccios resolvidos

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

Circuitos sequenciais Exerccios resolvidos

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

Arquitetura e Organizao de Computadores

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

Circuitos sequenciais Exerccios resolvidos

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

a) Desenhe as formas de onda das sadas do contador (Q3 , Q2 , Q1 e Q0 ) e do circuito


completo (OUT).
b) Indique a sequncia de estados ocorridos, numerando-os em decimal.
c) Considere agora que o contador possui uma entrada de reset (ativa a 1), acionada como
mostra a figura seguinte. Determine a sequncia de estados da sada do contador.
CONT4
EN

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

b) Sequncia de estados (valores resultantes de Q3 Q2 Q1 Q0 ):


0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0,
Arquitetura e Organizao de Computadores

Pg. 36 de 100

Circuitos sequenciais Exerccios resolvidos

c) No estado QD QC QB QA = 0100 a entrada de reset fica ativa. Admitindo-o sncrono, na


prxima transio do sinal de relgio o estado do contador passa para 0000. A sequncia de
estados resultante : 0, 1, 2, 3, 4, 0, .
Exerccio 5
Considere os sistemas de memria externa apresentados na figura seguinte.
RAM2

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)

a) Determine a capacidade de cada circuito de memria.


b) Elabore o mapa de memria de cada sistema. Indique, justificando, se a descodificao
de memria total ou parcial.
c) Para cada um dos seguintes endereos, indique o componente, ou seja, o circuito de
memria, afetado: B7FFH , 1000H , E7AAH e 8000H .

a) Obtm-se a capacidade de um circuito de memria multiplicando o nmero de posies pelo


nmero de bits por posio. O nmero de bits por posio igual ao nmero de bits do porto
de dados D[]. Todos os circuitos deste problema tm um porto de dados de 8 bits (1 byte).
O nmero de posies determinado pela dimenso do porto de endereos A[]. Para portos
de N bits, existem 2N posies.
Assim, para a figura (a) temos:
RAM1: 212 8 bits = 22 210 8 bits = 4 210 byte = 4 KiB
RAM2: 213 8 bits = 8 KiB
Para a figura (b) temos:
RAM1: 213 8 bits = 8 KiB
RAM2: 214 8 bits = 16 KiB
b) O mapa de memria indica, para cada endereo possvel, qual o circuito que armazena os
dados correspondentes. Em ambas as figuras, o barramento de endereos do CPU tem 16
bits (A[15:0]). Portanto, o espao de endereamento tem 216 posies (de 1 byte, neste
caso), i.e., 64 KB. A gama de endereos vai de 0000H a FFFFH .
Arquitetura e Organizao de Computadores

Pg. 37 de 100

Circuitos sequenciais Exerccios resolvidos

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
-

A anlise do sistema da figura (b) faz-se de forma anloga.


RAM1: CS = A15 A13 = 1. Esta condio s satisfeita se A15 = 1, A13 = 0.
Logo, os endereos mapeadas na RAM1 tm o formato
1?0X XXXX XXXX XXXX.
O smbolo ? indica que o bit correspondente no usado na descodificao. Portanto,
trata-se de descodificao parcial.
Neste caso particular, dois endereos que difiram apenas no bit A14 tm o mesmo efeito
em termos de acesso a memria: os dois endereos diferentes so mapeados no mesma
posio fsica de memria. Temos, portanto, duas gamas de endereos equivalentes, que
apenas diferem no valor de A14 . Para A14 = 0 a gama :
1000 0000 0000 0000
a
1001 1111 1111 1111.
Em hexadecimal, a gama 8000H 9FFFH .
Para A14 = 1 a gama :
Arquitetura e Organizao de Computadores

Pg. 38 de 100

Circuitos sequenciais Exerccios propostos

1100 0000 0000 0000


a
1101 1111 1111 1111.
Em hexadecimal, a gama C000H DFFFH .
As duas gamas so mapeadas de forma sobreposta na RAM1. Por exemplo, os endereos
8000H e C000H referem-se ambos primeira posio fsica do circuito RAM1. A memria
disponvel no aumenta por ser usada descodificao parcial.
O circuito RAM2 tambm usado com descodificao parcial. Os endereos correspondentes tm o formato
0?XX XXXX XXXX XXXX,
a que correspondem as gamas 0000H 3FFFH e 4000H 7FFFH .
O mapa de memria para o sistema da figura (b) o seguinte:
Gama (hex)

Dispositivo

00003FFF
40007FFF
80009FFF
A000BFFF
C000DFFF
E000FFFF

RAM2 (*)
RAM2 (*)
RAM1 (**)
RAM1 (**)
-

Os asteriscos assinalam gamas fisicamente sobrepostas.


c) Para determinar os componentes usados basta consultar os mapas de memria obtidos na
alnea anterior. Os resultados so os seguintes:
Endereo
B7FF
1000
E7AA
8000

Figura (a)
RAM1
RAM2

Figura (b)
RAM2
RAM1

4.2 Exerccios propostos


Exerccio 6
Assuma que no circuito seguinte os flip-flops do tipo D so sensveis ao flanco ascendente do
sinal de relgio e que inicialmente as sadas so nulas.
D

CLK

CLK
Q

CLK

Represente a forma de onda da sada Q em resposta entrada D representada na figura.


Sugesto: comece por verificar qual o valor de X aps cada transio do sinal de relgio.

Arquitetura e Organizao de Computadores

Pg. 39 de 100

Circuitos sequenciais Exerccios propostos

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

a) Indique a expresso da funo lgica D(J, K, Q) entrada do flip-flop.


b) Considerando os valores das entradas J e K apresentados na figura seguinte, obtenha o valor
da sada Q do circuito.

CLK

Exerccio 8
Considere o circuito sequencial da figura seguinte.

Arquitetura e Organizao de Computadores

Pg. 40 de 100

Circuitos sequenciais Exerccios propostos

D0
D

EN

Q0

Q1

CLK

D1
D
CLK

CLK

a) Escreva a expresso das entradas D0 e D1 dos flip-flops.


b) Represente as formas de onda correspondentes aos sinais Q0 e Q1 , assumindo que o estado
inicial dos flip-flops 00 e que EN =1.
c) Mostre qual o estado do circuito aps 4 transies consecutivas do sinal de relgio (CLK).
Exerccio 9
Considere o seguinte circuito, composto por um flip-flop e uma porta XOR (ou-exclusivo).
X

CLK

CLK

a) Assumindo que o estado inicial do flip-flop 0, determine a sequncia de valores na sada T


se na entrada X ocorrer a sequncia 0110001001111100 (um bit a cada ciclo do relgio).
b) Ao circuito anterior foi acrescentado um contador sncrono de 4 bits, tal como representado
na figura seguinte. Identifique a relao entre as sadas Q3 Q2 Q1 Q0 do contador e a entrada
X do circuito.
CONT4
X

D
CLK

EN

QA
QB
QC
(MSB) QD

Q0
Q1
Q2
Q3

CLK

CLK

Arquitetura e Organizao de Computadores

Pg. 41 de 100

Circuitos sequenciais Exerccios propostos

Exerccio 10
A figura mostra a constituio de um banco de registos.

Alm dos 8 registos de 4 bits, fazem parte do circuito um descodificador de 3 para 8 e um


multiplexador de 8 (contedos de 4 bits) para 1. A entrada DIN representa o valor de 4 bits a
escrever num dos 8 registos, endereado (identificado) por ADDR. A escrita ocorre se WRITE=1.
A leitura de um registo feita endereando o registo pretendido, surgindo o valor na sada DOUT.
As operaes de escrita so sncronas com o sinal de relgio.
a) Expresse a capacidade de armazenamento do banco de registos em bytes.
b) Explique o que garante escrever um contedo num (e um s) determinado registo.
c) Admita que o contedo inicial dos registos 0000 e que os valores das entradas so:
DIN=1111, ADDR=001 e WRITE=1. Descreva que alteraes ocorrem no circuito aps
uma transio do sinal de relgio.
d) Explique a utilidade das entradas enable e reset dos registos.
e) Descreva a funo desempenhada pelo descodificador de 3 para 8 e pelo multiplexador de 8
para 1, no contexto da sua utilizao no banco de registos.
f) Mostre que alterao seria necessria efetuar para que fosse possvel ler, simultaneamente, o
contedo de dois registos diferentes, apresentando-o nas sadas DOUT1 e DOUT2.
Exerccio 11
Um sistema de memria constitudo por uma memria RAM e uma memria ROM. O barramento de endereos possui 16 bits e o barramento de dados de 8 bits. A figura seguinte mostra
o correspondente diagrama de blocos, onde CS representa o sinal de chip select das memrias.

Arquitetura e Organizao de Computadores

Pg. 42 de 100

Circuitos sequenciais Exerccios propostos

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

a) Determine o intervalo de endereos a que a RAM responde e justifique se a descodificao


de endereos total ou parcial.
b) Considere que a primeira posio da memria ROM tem o endereo 0xC800 e que o endereo
de cada posio nico. Calcule o endereo da ltima posio da ROM.
c) Apresente o circuito de descodificao de endereos da ROM considerando as condies da
alnea anterior.
Exerccio 12
Um processador dispe de um espao de endereamento de 64 KiB e de um barramento de dados
com 8 linhas. O seu mapa de memria o seguinte:
Gama

Dispositivo

0x0000-0x3FFF
0x4000-0x7FFF
0x8000-0xCFFF
0xD000-0xDFFF
0xE000-0xFFFF

ROM1
RAM1
RAM2
-

a) Determine as dimenses de cada um dos dispositivos de memria.


b) Determine as equaes lgicas dos circuitos de descodificao de endereos (descodificao
total).
c) Apresente o diagrama de blocos do sistema de memria com descodificao de endereos.

Arquitetura e Organizao de Computadores

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.

5.1 Exerccios resolvidos


Exerccio 1
Um computador possui trs classes de instrues, A, B e C. O CPI de cada uma delas ,
respetivamente, 1, 2 e 3. Um projetista est a implementar um compilador e precisa de
escolher uma de duas sequncias de instrues a usar nesse computador. Dessas sequncias
conhecido o nmero de instrues de cada classe, conforme mostra a tabela seguinte.
Sequncia de instrues
1
2

No de instrues por classe


A
B
C
2
1
2
4
1
1

a) Determine em qual das duas sequncias de instrues executado o maior nmero de


instrues.
b) Mostre qual das sequncias executada de forma mais rpida.
c) Calcule o valor do CPI para cada sequncia.

a) Na sequncia 1 so executadas 2 + 1 + 2 = 5 instrues e na sequncia 2 so executadas


4 + 1 + 1 = 6 instrues. pois na sequncia 2 que so executadas mais instrues.
b) O nmero de ciclos dado por
Nciclos =

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

Desempenho Exerccios resolvidos

c)
CPI =

Nciclos
Ninst

Sequncia 1: CPI = 10/5 = 2


Sequncia 2: CPI = 9/6 = 1,5
Exerccio 2
Considere um computador com trs classes de instrues, A, B e C, para as quais o valor
de CPI 1, 2 e 3, respetivamente. Para ser executado nesse computador, um programa
obtido atravs de dois compiladores distintos, originando o nmero de instrues de cada
classe indicado na tabela.
Sequncia de instrues
Compilador 1
Compilador 2

No de instrues por classe


A
B
C
9
9
5 10
1 10
1 109
9
9
10 10
1 10
1 109

Assuma que o computador funciona a 500 MHz.


a) Indique a sequncia que executada em menos tempo.
b) Determine a qual das sequncias de instrues corresponde o maior valor de MIPS
(milhes de instrues por segundo).

a) O tempo de execuo dado por


texec =

Nciclos
fCLK

sendo o nmero de ciclos de relgio determinado por


Nciclos =

Ni CPIi

Ento, o tempo de execuo da sequncia de instrues obtida por cada compilador


texec_C1 =

(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

Desempenho Exerccios resolvidos

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

O tempo de execuo de um programa com Ninstr instrues dado por


texec = Ninstr CPI TCLK
A razo dos tempos de execuo no computador A e no computador B
Ninstr CPIA fCLK_B
texec_A
10
=
=
texec_B
Ninstr CPIB fCLK_A
6
Como CPIB = 1,2 CPIA , ento resulta fCLK_B = fCLK_A 1,2 10
6 = 2 fCLK_A , conclui-se
que fCLK_B = 4 GHz.
Exerccio 4
Considere dois computadores A e B que possuem o mesmo conjunto de instrues. O
perodo do sinal de relgio dos computadores A e B 250 ps e 500 ps, respetivamente, e o
nmero de ciclos de relgio consumidos por instruo (CPI) 2 no computador A e 1,2 no
computador B, respetivamente. Mostre qual dos computadores o mais rpido a executar
um programa.

texecA = Ninstr 2 250 = 500 Ninstr ps


e
texecB = Ninstr 1,2 500 = 600 Ninstr ps
Ento,
texecB
6
= = 1,2
texecA
5
O computador A o mais rpido.

Arquitetura e Organizao de Computadores

Pg. 46 de 100

Desempenho Exerccios resolvidos

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) Indique qual o computador com maior valor de MIPS.


b) Indique qual o computador mais rpido.

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:

Ocorrncia de operaes de vrgula flutuante (VFL) (exceto raiz quadrada): 25 %


Ocorrncia da operao de raiz quadrada: 2 %
CPI mdio de operaes em VFL: 4,0
CPI de raiz quadrada: 20
CPI mdio para outras instrues: 1,33

Considere duas alternativas para melhorar o desempenho: reduzir o CPI da operao de


raiz quadrada para 2 ou baixar o CPI de todas as instrues de VFL para 2,5. Compare
as duas alternativas usando a equao de desempenho do CPU.

Arquitetura e Organizao de Computadores

Pg. 47 de 100

Desempenho Exerccios resolvidos

O nmero de instrues e a frequncia do relgio do computador continuam a ser os mesmos


nas duas alternativas. Basta por isso comparar os valores de CPI.
CPI1 = 0,25 4 + 0,02 2 + (1 0,25 0,02) 1,33 2,01
CPI2 = 0,25 2,5 + 0,02 20 + (1 0,25 0,02) 1,33 2,00
Embora os valores sejam muito prximos, na segunda alternativa (... baixar o CPI de todas as
instrues de VFL para 2,5) o tempo de execuo menor, ou seja, o desempenho superior.
Exerccio 7
Um processador executa um programa em que 30 % do tempo de execuo gasto em
adies de vrgula flutuante, 25 % em multiplicaes de vrgula flutuante e 10 % em divises
de vrgula flutuante. Para a nova gerao desse processador, a equipa de projeto prope
trs aperfeioamentos possveis na unidade de vrgula flutuante, consistindo em tornar o:
1. somador duas vezes mais rpido;
2. multiplicador trs vezes mais rpido;
3. divisor dez vezes mais rpido.
Indique qual destas alternativas poder proporcionar o maior aumento de desempenho.

A lei de Amdahl pode ser expressa por


stotal (f ) =

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

O maior ganho de desempenho obtido com a melhoria do multiplicador de vrgula flutuante


(alternativa 2). Pode ainda concluir-se que tornar o divisor muito mais rpido leva ao menor
aumento de desempenho devido baixa ocorrncia de divises em vrgula flutuante (10 %). Na
verdade, mesmo tornando o divisor infinitamente mais rpido, o speed-up obtido seria 1,11.

Arquitetura e Organizao de Computadores

Pg. 48 de 100

Desempenho Exerccios propostos

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;

b) quatro vezes mais rpido.

a) Aplicando a lei de Amdahl, o aumento de rapidez do programa dado por


1

stotal (f ) =

(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. Assim,
1

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.

5.2 Exerccios propostos


Exerccio 9
A tabela apresentada mostra a frequncia de funcionamento de 3 processadores, o nmero de
instrues executadas em cada um deles e o respetivo tempo de execuo.
Processador

FCLK (GHz)

No de instrues

Tempo (s)

P1
P2
P3

2
1,5
3

20 109
30 109
90 109

7
10
9

Arquitetura e Organizao de Computadores

Pg. 49 de 100

Desempenho Exerccios propostos

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.

Arquitetura e Organizao de Computadores

Pg. 50 de 100

Desempenho Exerccios propostos

Programa

No operaes VFL

1
2
3

5 109
20 109
40 109

Tempo de execuo (s)


Comp. A Comp. B Comp. C
2
20
200

5
20
50

10
20
15

a) Mostre qual o computador mais rpido em termos do tempo total de execuo.


b) Determine quantas vezes esse computador mais rpido do que os outros dois.
Exerccio 13
A tabela mostra o nmero total de instrues executadas por um programa, bem como a sua
distribuio por tipo.
Total

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.

Arquitetura e Organizao de Computadores

Pg. 51 de 100

Desempenho Exerccios propostos

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?

Arquitetura e Organizao de Computadores

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

Instrues do tipo I. Valor do campo opcode em hexadecimal:


addi:8
lw:23

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

Instrues do tipo J. Valor do campo opcode em hexadecimal: j:2 jal:3.


31

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

Linguagem assembly Exerccios resolvidos

6.2 Exerccios resolvidos


Exerccio 1
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 - (f + 5)

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

# Carrega valor da posio $s6+48


# Soma-lhe o valor 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

Arquitetura e Organizao de Computadores

b) 0x01204020

Pg. 54 de 100

Linguagem assembly Exerccios resolvidos

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

Os registo so: rs = 8 $t0, rt = 8 $t0.


Constante: FFC016 interpretada em complemento para 2 26 = 64.
Concluindo, a instruo : lw $t0, -64($t0).
b) Para esta instruo opcode=0, pelo que se trata de uma instruo do tipo R.
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9

000000

01001

00000

01000

00000

100000

opcode

rs

rt

rd

shamt

funct

Como funct = 2016 , trata-se de uma instruo add.


Os registos envolvidos so: rs = 9 $t1, rt = 0 $zero e rd = 8 $t0.
Juntando todas as informaes: add $t0,$t1,$zero

Exerccio 3
Assuma as seguintes condies iniciais:
$t0 = 0xBEADFEED

$t1 = 0xDEADFADE

a) Determine o valor de $t2 aps a execuo da seguinte sequncia de instrues:


sll
or

$t2, $t0, 4
$t2, $t2, $t1

b) Determine o valor de $t2 aps a execuo da seguinte sequncia de instrues:


srl
andi

Arquitetura e Organizao de Computadores

$t2, $t0, 3
$t2, $t2, 0xFFEF

Pg. 55 de 100

Linguagem assembly Exerccios resolvidos

Em binrio, os valores iniciais dos registos so:


$t0 = 1011 1110 1010 1101 1111 1110 1110 11012
$t1 = 1101 1110 1010 1101 1111 1010 1101 11102
a) A primeira instruo desloca o valor de $t0 quatro bits para a esquerda. Os 4 bits mais
significativos perdem-se; nos 4 menos significativos so introduzidos zeros. O resultado da
operao guardado em $t2; o registo $t0 fica inalterado. O valor de $t2 depois da execuo
da primeira instruo :
$t2 = 1110 1010 1101 1111 1110 1110 1101 0000 2
A instruo or calcula a funo ou-inclusivo de cada bit de $t2 com o bit de $t0 situado
na mesma posio. O resultado guardado em $t2. O resultado da operao or 1 sempre
que pelo menos um dos operandos seja 1. Logo:
$t2 = 1111 1110 1111 1111 1111 1110 1101 11102 = 0xFEFFFEDE
b) A instruo srl desloca o valor de $t0 trs posies para a direita, introduzindo zeros pela
esquerda. O valor de $t2 depois da execuo da primeira instruo :
$t2 = 000 1 0111 1101 0101 1011 1111 1101 11012
A instruo andi calcula a funo e-lgico de cada bit de $t2 com o bit correspondente
da constante 0xFFEF. Esta constante tem apenas 16 bits. Os bits mais significativos so
considerados como sendo iguais a zero.
FFEF16 = 0000 0000 0000 0000 1111 1111 1110 11112
O resultado guardado em $t2. O e-lgico de dois bits tem resultado 1 apenas se ambos os
operandos forem 1. Neste caso, os operandos so dados pelo contedo de $t2 e pela constante
indicada. O valor final de $t2 :
$t2 = 0000 0000 0000 0000 1011 1111 1100 11012 = 0x0000BFCD

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

$t2, $t0, $t1


$t2, $zero, ELSE
DONE
$t2, $zero, 2

b) Apresente o cdigo-mquina correspondente ao fragmento, supondo que este est alojado a partir da posio de memria 0x00400000.

Arquitetura e Organizao de Computadores

Pg. 56 de 100

Linguagem assembly Exerccios resolvidos

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

Em hexadecimal, o cdigo-mquina correspondente 0x0109502A.


beq $t2,$zero,ELSE
uma instruo do formato I. Logo,
opcode=4; rs = 10 ($t2); rt = 0 ($zero); constante = 1.
O salto relativo para duas instrues a seguir ao beq. Como a contagem das instrues
feita a partir da instruo seguinte, trata-se de um salto relativo de uma instruo
para a frente (+1).
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9

000100

01010

00000

0000000000000001

opcode

rs

rt

constante

Em hexadecimal, o cdigo-mquina correspondente 0x11400001.


j DONE
Instruo do formato J: opcode = 2.
Arquitetura e Organizao de Computadores

Pg. 57 de 100

Linguagem assembly Exerccios resolvidos

A etiqueta DONE refere-se ao endereo da instruo seguinte a addi, ou seja, refere-se ao


endereo da 5a instruo do segmento de cdigo. Como cada instruo tem 4 bytes, o
endereo do primeiro byte da 5a instruo dado por:
0x00400000 + 44 = 0x00400010
Em binrio o endereo de destino :
0000 0000 0100 0000 0000 0000 0001 00 00
Os 26 bits indicados a cinzento so usados no campo de endereo includo no cdigo da
instruo.
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9

000010

00000100000000000000000100

opcode

endereo

Em hexadecimal, o cdigo-mquina correspondente 0x08100004.


addi $t2,$zero,2
Trata-se de uma instruo do tipo I. Logo,
opcode=8; rs = 0 ($zero); rt = 10 ($t2); constante = 2.
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9

001000

00000

01010

0000000000000010

opcode

rs

rt

constante

Em hexadecimal, o cdigo-mquina correspondente 0x200A0002.


Resumindo, o cdigo-mquina do fragmento :
endereo

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.

Arquitetura e Organizao de Computadores

Pg. 58 de 100

Linguagem assembly Exerccios resolvidos

A estratgia geral das solues indicadas a seguir a seguinte:


1. Carregar o primeiro valor da sequncia para o registo que vai conter o resultado final ($s7)
2. Repetir nove vezes (contador de iteraes $t0)
2.1. Determinar a posio do prximo elemento da sequncia
2.2. Ler o prximo valor da sequncia para um registo ($t1)
2.3. Somar o valor lido ao resultado corrente ($s7)
a) Neste caso, cada elemento da sequncia tem 4 bytes. Por isso, o endereo do prximo elemento
obtido somando-se 4 ao endereo do elemento corrente.

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

Arquitetura e Organizao de Computadores

#
#
#
#
#
#
#
#

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

Linguagem assembly Exerccios resolvidos

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

<- primeira instruo


$a0, $a0, $a0
stop
$a0, $a0, 1
$a0, $a0, 1
$a0, $a0, 1
$ra

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.

Arquitetura e Organizao de Computadores

Pg. 60 de 100

Linguagem assembly Exerccios resolvidos

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) Considerando que antes da execuo do programa o registo $a0 possui o valor 8,


indique o contedo dos registos $v0 e $s0 aps a execuo do programa.
b) Tendo em considerao a descrio que foi realizada, implemente a rotina par.

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:

Arquitetura e Organizao de Computadores

addi
andi
jr

$v0, $a0, 1
$v0, $v0, 1
$ra

Pg. 61 de 100

Linguagem assembly Exerccios resolvidos

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

b) Converta o fragmento anterior numa sub-rotina chamada pesq (de pesquisa). Os


argumentos da funo seguem a ordem indicada na alnea anterior.
c) Use a sub-rotina anterior num fragmento que determina quantos elementos de uma
sequncia SEQ1 esto presentes noutra sequncia SEQ2. Usar a seguinte atribuio de
registos:
-

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

b) Para transformar o fragmento numa sub-rotina necessrio alter-lo para corresponder s


convenes de invocao: os argumentos nos registos $a0$a3 e o resultado em $v0 (e $v1,
se necessrio).
Arquitetura e Organizao de Computadores

Pg. 62 de 100

Linguagem assembly Exerccios propostos

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

6.3 Exerccios propostos

Arquitetura e Organizao de Computadores

Pg. 63 de 100

Linguagem assembly Exerccios propostos

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)

c) Assumir que $s6 contm o endereo-base da sequncia A[].


addi
sll
add
lw

$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

Determine o valor de $t2 aps a execuo das sequncias de instrues seguintes.


a)

sll
or

$t2, $t0, 4
$t2, $t2, $t1

b)

sll
andi

$t2, $t0, 4
$t2, $t2, -1

Arquitetura e Organizao de Computadores

Pg. 64 de 100

Linguagem assembly Exerccios propostos

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

Assuma os seguintes valores iniciais:


$t4 = 0x12345678

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

Arquitetura e Organizao de Computadores

Pg. 65 de 100

Linguagem assembly Exerccios propostos

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.

Arquitetura e Organizao de Computadores

Pg. 66 de 100

7 Organizao do processador MIPS


Os exerccios seguintes e respetivas figuras foram extrados ou adaptados do livro Computer
Organization and Design The Hardware/Software Interface, Hennessy & Patterson, 4a edio.

7.1 Exerccios resolvidos


Exerccio 1
Considere o CPU da figura 7.1. Determine o valor de todos os sinais de controlo durante
a execuo da seguinte instruo:
add

$t0, $s0, $s1

Indique tambm quais os componentes com funes teis.

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

Figura 7.1: CPU com multiplexadores e sinais de controlo

Arquitetura e Organizao de Computadores

Pg. 67 de 100

Organizao do processador MIPS Exerccios resolvidos

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.

Arquitetura e Organizao de Computadores

Pg. 68 de 100

Organizao do processador MIPS Exerccios resolvidos

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

A latncia dos restantes mdulos nula.


Determine o caminho crtico (caminho de propagao de sinais com maior latncia) para
a instruo and.

Arquitetura e Organizao de Computadores

Pg. 69 de 100

Organizao do processador MIPS Exerccios resolvidos

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

Organizao do processador MIPS Exerccios resolvidos

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

d) Indique os valores de sada de cada multiplexador.


e) Indique os valores de entrada da ALU e dos dois somadores.
f) Indique os valores de todas as entradas do banco de registos.
A resoluo usa a figura 7.1 como referncia.
a) O componente Sign-extend tem entrada os 16 bits menos significativos da instruo 0x0010
e produz uma valor de 32 bits por extenso de sinal: 0x00000010.
O componente Shift-left2 produz sada o valor da entrada (0x00000010) deslocado de
2 bits para a esquerda: 0x00000040.
b) Para responder s alneas seguintes necessrio saber de que instruo se trata (para se
conhecerem os valores dos sinais de controlo).
O valor de opcode : 1000112 = 2316 , logo trata-se de uma instruo lw (tipo I).
Para a instruo lw, a ALU usada para calcular o endereo dos dados fazendo uma adio:
ALUop=00.
c) Como a instruo lw no altera o fluxo de instrues, PC PC + 4.
d) Descodificando a instruo, tem-se:
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9

100011

00010

00011

0000000000010000

opcode

rs

rt

constante

Portanto, rs=2 e rt=3. A instruo completa : lw $3,16($2).


Como a instruo usa a ALU para calcular a soma $2+16, o multiplexador entrada da ALU
seleciona a constante (aps extenso de sinal): a sada desse multiplexador tem o valor 16.
Como na instruo lw o registo de destino especificado pelos bits 16 a 20, o multiplexador
que alimenta a entrada Write register seleciona esse campo da instruo. Logo, a sua
sada 000112 .
Arquitetura e Organizao de Computadores

Pg. 71 de 100

Organizao do processador MIPS Exerccios propostos

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

7.2 Exerccios propostos


Exerccio 6
Considere o CPU da figura 1. Determine o valor de todos os sinais de controlo durante a execuo
das instrues indicadas a seguir. Indique tambm quais os componentes com funes teis.
a) lw $t3,64($s7)

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

Organizao do processador MIPS Exerccios propostos

Instruction [250]
26

Shift
left 2

Jump address [310]


28

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:

Arquitetura e Organizao de Computadores

Pg. 73 de 100

Organizao do processador MIPS Exerccios propostos

Label:

bne $t0, $t1, 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.

Arquitetura e Organizao de Computadores

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

Memria Cache Exerccios resolvidos

7. Endereo 16 posio 16 % 8 = 0; acerto (hit); cache[0] tem contedo de mem[16].


8. Endereo 8 posio 8 % 8 = 0; falha (miss); cache[0] tinha contedo de mem[16]; cache[0]
mem[8].
9. Endereo 27 posio 27 % 8 = 3; falha (miss); cache[3] tinha contedo de mem[3];
cache[3] mem[27].
10. Endereo 10 posio 10 % 8 = 2; falha (miss); cache[2] tinha contedo de mem[26];
cache[2] mem[10].
Portanto, a tabela fica:
Acesso

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]

O contedo final da memria cache :


Bloco
0
1
2
3
4
5
6
7

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.

Arquitetura e Organizao de Computadores

Pg. 76 de 100

Memria Cache Exerccios propostos

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

b) Seja na o nmero de acessos a memria por instruo e tf a taxa de falhas.


O nmero mdio de ciclos gastos em protelamento devidos a falhas no acesso a cache :
CPIprot = tf pf na
Portanto:
na =

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

8.2 Exerccios propostos


Alguns exerccios foram extrados ou adaptados do livro Computer Organization and Design
The Hardware/Software Interface, Hennessy & Patterson, 4a edio.
Exerccio 3
Considere a seguinte sequncia de endereos acedidos sucessivamente durante a execuo de um
programa num sistema com endereos de 8 bits:
1, 134, 212, 1, 135, 213, 162, 161, 2, 44, 41, 221
Admita que o sistema dispe de uma memria cache de mapeamento direto com 16 blocos,
1 byte/bloco. Para cada um dos acessos apresente o endereo em binrio, a etiqueta e o ndice.
Indique tambm se o acesso provoca uma falta ou um acerto na memria cache, assumindo que
est inicialmente vazia.
Exerccio 4
Um CPU tem endereos de 18 bits e uma memria cache de mapeamento direto para palavras
(32 bits). A memria cache tem 16 posies. A poltica de escrita write-through. O contedo
inicial da memria cache est indicado na tabela (em hexadecimal).

Arquitetura e Organizao de Computadores

Pg. 77 de 100

Memria Cache Exerccios propostos

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

a) Determine o nmero de bits da etiqueta e do ndice. Qual o espao de endereamento?


Qual a quantidade mxima de memria usvel num sistema baseado neste CPU?
b) Indique as alteraes da memria cache para a seguinte sequncia de acessos (L=leitura,
E=escrita):
tipo

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

Arquitetura e Organizao de Computadores

Pg. 78 de 100

Memria Cache Exerccios propostos

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

a) Explique a finalidade do campo d.


b) Indique as alteraes da memria cache para a seguinte sequncia de acessos (L=leitura,
E=escrita):
tipo

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

Memria Cache Exerccios propostos

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)

sistema sem memria cache;

ii)

sistema com memria cache.

Arquitetura e Organizao de Computadores

Pg. 80 de 100

9 Solues dos exerccios propostos


9.1 Aritmtica binria
Exerccio 9
a) 1000000002 ; 100H
b) 111111111112 ; 7FFH
c) 11000,012 ; 18,4H
d) A parte fracionria no tem representao finita. Usando 4 bits para a parte fracionria, a
soluo : 100,00112 ; 4,3H .
e) 1610 ; 10H
f) 4,12510 ; 4,2H
g) 111102 ; 3010
h) 4398110 ; 10101011110011012
i) 171,7510 ; 10101011,112
j) 456H
Exerccio 10
a) 10011102
b) 1010,0012
c) 10012
d) 101012
e) 11110102
f) 11000100,012
g) 1011002

Arquitetura e Organizao de Computadores

Pg. 81 de 100

Solues dos exerccios propostos Aritmtica binria

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)

00111002 ; resultado errado, pois a soma necessita de 8 bits (h overflow ).


00111002 ; resultado correto, a soma representvel (no h overflow ).

Arquitetura e Organizao de Computadores

Pg. 82 de 100

Solues dos exerccios propostos Vrgula flutuante

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

9.2 Vrgula flutuante


Exerccio 7
a) 1,011000000000000000000002

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

Arquitetura e Organizao de Computadores

3 B = 8,625.

c) C2250000H

d) C29D0000H

Pg. 83 de 100

Solues dos exerccios propostos Circuitos combinatrios

Exerccio 11
a) 010000010011101000000000000000002

b) 41460000H (falta indicar os passos)

Exerccio 12
a) 110000010010010000000000000000002

b) 13,2510 (falta indicar os passos)

Exerccio 13
a) C1400000H

b) C2080000H (falta mostrar os passos).

Exerccio 14
Opo A.

9.3 Circuitos combinatrios


Exerccio 10
a) F (A, B, C, D, E) = AB + C E
b) F (A, B, C) = AC
c) G(A, B, C) = AB + AC
d) F (A, B, C, D) = B C + AC D
e) F (W, X, Y, Z) = W + X Z + X Y
f) F (A, B, C, D) = AC + C D
Exerccio
a) A
0
0
0
0
1
1
1
1

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

Arquitetura e Organizao de Computadores

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

Solues dos exerccios propostos Circuitos combinatrios

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

c) Nota: usar a expresso simplificada.

F = (X + Y + Z)X

Arquitetura e Organizao de Computadores

Pg. 85 de 100

Solues dos exerccios propostos Circuitos combinatrios

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.

Arquitetura e Organizao de Computadores

Pg. 86 de 100

Solues dos exerccios propostos Circuitos combinatrios

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

b) S(A, B, Ci) = AB Ci + AB Ci + AB Ci + AB Ci.


Co(A, B, Ci) = AB Ci + AB Ci + AB Ci + AB Ci.
c) Nota: para ambas as funes, S e Co, deduzir expresso da funo realizada pelo circuito
e simplificar. Alternativamente, pode ser construda a tabela de verdade a partir das expresses deduzidas do circuito e das expresses obtidas na alnea anterior, verificando-se que
coincidem. Esta segunda opo poder ser a mais simples.
d) Co = 1, w3 = 1, w2 = 1, w1 = 0, Ci = 0, S3 = 1, S2 = 0, S1 = 0 e S0 = 0.

Arquitetura e Organizao de Computadores

Pg. 87 de 100

Solues dos exerccios propostos Circuitos combinatrios

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

b) M AIOR = A1B1 + A0B1B0 + A1A0B0 .

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

c) Por exemplo, sendo F uma funo definida por:


Arquitetura e Organizao de Computadores

Pg. 88 de 100

Solues dos exerccios propostos Circuitos sequenciais

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

ento o circuito resultante ser:


MUX4:1

D0
1

D1

D2

F(X ,Y,Z)

D3
S1 S0
X

Exerccio 23
a) AB = 01
AB = 11
no usada.

Lvm = 0, Llj = 1 e Lvr = 0.


todas as lmpadas se mantm desligadas, pois a sada que fica ativa Y3 e

b) impossvel ter simultaneamente duas sadas de um descodificador binrio ativas.

9.4 Circuitos sequenciais


Exerccio 6
CLK

Arquitetura e Organizao de Computadores

Pg. 89 de 100

Solues dos exerccios propostos Circuitos sequenciais

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

c) Estado 00 (estado inicial).


Exerccio 9
a) 0101001101000010.
b) A sada do contador fornece o nmero de transies de valor lgico da entrada X, at ao
mximo de 15.
Exerccio 10
a) 4 bytes.
b) Descodificador binrio.
c) O contedo do registo 1 passa a ser 1111.
d) A entrada de enable permite habilitar a escrita de um valor num registo. A entrada reset
permite limpar, isto , escrever o valor 0 num dos registos.
e) O descodificador permite identificar o registo a aceder para uma operao de escrita ou de
leitura. Quanto ao multiplexador, permite selecionar a sada de um registo, ou seja, fazer a
leitura desse registo.
Arquitetura e Organizao de Computadores

Pg. 90 de 100

Solues dos exerccios propostos Desempenho

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 o processador mais rpido.


b) CPIP1 = 2,8 (ciclos/instruo)
CPIP2 = 2,0 (ciclos/instruo)
c) P1 : 2,8 106

P2 : 2 106

Arquitetura e Organizao de Computadores

Pg. 91 de 100

Solues dos exerccios propostos Desempenho

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

c) Percentagem de tempo gasto em modo vetorial aps introduo da alterao:


d) Speedup mximo: 10; para obter speedup de 5 preciso que f =

8
9

1
9

11 %

88,9 %

e) Duplicao de desempenho da unidade vetorial: S 2,99. Sem duplicao de desempenho,


o mesmo speedup obtido para f 0,74 =74 %. Provavelmente mais fcil passar de 70 %
para 74 % do que duplicar o desempenho da unidade vetorial.

Arquitetura e Organizao de Computadores

Pg. 92 de 100

Solues dos exerccios propostos Linguagem assembly

9.6 Linguagem assembly


Exerccio 9
necessrio definir uma atribuio arbitrria de variveis a registos.
a) Atribuio: f $s0, g $s1, j $s2.
addi
add

$s0, $s2, 2
$s0, $s1, $s0

b) Atribuio: a $s0, b $s1, d $s2, f $s3, k $s4.


add
sub
addi
add

$s4,
$t0,
$s4,
$s4,

$s0,
$s2,
$s4,
$s4,

$s1
$s3
-30
$t0

c) Atribuio: f $s0, g $s1, h $s2, A $s7.


lw
add
add

$s0, 16($s7)
$s0, $s0, $s1
$s0, $s0, $s2

d) Atribuio: f $s0, g $s2, A $s6, B $s7.


lw
sll
add
lw
sub

$t0,
$t0,
$t0,
$s0,
$s0,

40($s7)
$t0, 2
$t0, $s6
0($t0)
$s2, $s0

e) Atribuio: f $s0, g $s1, h $s2, k $s3, A $s6.


addi
sll
add
lw
add
sub

$t0,
$t0,
$t0,
$s0,
$s0,
$s0,

$s2, 9
$t0, 2
$s6, $t0
0($t0)
$s0, $s3
$s0, $s1

f) Atribuio: f $s0, g $s1, A $s6, B $s7.


lw
addi
sll
add
lw
sub

Arquitetura e Organizao de Computadores

$t0,
$t0,
$t0,
$t0,
$t0,
$s0,

8($s7)
$t0, 4
$t0, 2
$s6, $t0
0($t0)
$s1, $t0

Pg. 93 de 100

Solues dos exerccios propostos Linguagem assembly

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

$s0, $zero, $zero


$t0, 0($s4)
$t0, $zero, fim
$s0, $s0, 1
$s4, $s4, 1
ciclo

Arquitetura e Organizao de Computadores

# inicializa contador
# extrai byte de memria
# termina se for 0
# endereo do prximo byte

Pg. 94 de 100

Solues dos exerccios propostos Linguagem assembly

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

# dimenso das seq.


# extrai elemento de A
# extrai elemento de B
# par diferente

# 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

Arquitetura e Organizao de Computadores

#Carrega 1o nmero (mnimo inicial)


#Inicializa contador de iteraes
#Decrementa contador
#Verifica se chegou ao fim
#Atualiza endereo de memria
#Carrega prximo nmero
# menor que mnimo atual?
#Continua se no menor
#Atualiza mnimo
#Continua o ciclo
# Termina
Pg. 95 de 100

Solues dos exerccios propostos Linguagem assembly

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

Solues dos exerccios propostos Organizao do processador MIPS

$a0: endereo-base da sequncia 1


$a1: endereo-base da sequncia 2
$a2: nmero de elementos de cada sequncia
1
2
3
4
5
6
7
8
9
10
11

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

9.7 Organizao do processador MIPS


Exerccio 6
Ter em ateno que PcSrc = AND(Zero, Branch).
a) RegWrite=1, MemRead=1, ALUSrc=1, MemWrite=0, MemtoReg=1, PCSrc=0,
ALUOp=00, RegDst=0.
Todos os componentes, exceto Shift left 2 e o somador para endereo de saltos (Add),
realizam trabalho til. O valor Read data 2 tambm no utilizado.
b) RegWrite=0, MemRead=0, ALUSrc=1, MemWrite=1, MemtoReg=X, PCSrc=0, ALUOp=00,
RegDst=X.
Todos os componentes realizam trabalho til, exceto Shift left 2, somador para endereos
de saltos (Add) e multiplexador MemtoReg. O valor Read data 2 tambm no utilizado.
c) RegWrite=0, MemRead=0, ALUSrc=0, MemWrite=0, MemtoReg=X, ALUOp=01, RegDst=X.
(
0 se $s0 6= $t2
PCSrc =
1 se $s0 = $t2
Todos os componentes realizam trabalho til, exceto multiplexador RegDst, memria de
dados (D-Mem) e multiplexador MemtoReg.
Exerccio 7
a) A instruo beq.

Arquitetura e Organizao de Computadores

b) A instruo sw.

Pg. 97 de 100

Solues dos exerccios propostos Memria Cache

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.

9.8 Memria Cache


Exerccio 3
4 bits para ndice de bloco (16 = 24 ) e 4 bits para etiqueta.

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

Arquitetura e Organizao de Computadores

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

Solues dos exerccios propostos Memria Cache

Exerccio 4
a) Etiqueta: 12 bit; ndice: 4 bit; espao de endereamento: 0x00000 - 0x3ffff; capacidade
mxima: 256 KiB.
b)

1. L valor 0x6198fa34 de memria cache.


2. L valor de memria principal e coloca-o na posio 5, com v=1 e etiqueta 0x8d1.
3. L valor de memria principal e coloca-o na posio 12, com v=1 e etiqueta 0xfde.
4. Escreve valor 0x1212abab na posio 1, v=1, e atualiza a memria principal no endereo
0x048c4.
5. No altera memria cache (no existe informao em cache para este endereo, porque
a etiqueta diferente); coloca valor 0x00001111 em memria principal no endereo
0x3f7d0.
6. No altera memria cache (no existe informao vlida em cache para este endereo);
coloca valor 0xaaaabbbb em memria principal no endereo 0x1dde8.

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

Arquitetura e Organizao de Computadores

Pg. 99 de 100

Solues dos exerccios propostos Memria Cache

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)

CPIefetivo = 1,2 + 1,4 80 = 113,2 ciclos/instruo.

ii)

CPIefetivo = 1,2 + 0,0642 1,4 80 = 8,4 ciclos/instruo.

Arquitetura e Organizao de Computadores

Pg. 100 de 100

Vous aimerez peut-être aussi