Vous êtes sur la page 1sur 42

Manual de soluções

Princípios de arquitetura
de computadores

Murdocca & Heuring

Editora Campus / Prentice Hall


Todos os direitos reservados. Nenhuma parte deste livro pode ser reproduzida, sob qualquer forma
ou por quaisquer meios, sem permissão por escrito da editora.

1
Sumário

Soluções dos problemas do Capítulo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

Soluções dos problemas do Capítulo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

Soluções dos problemas do Capítulo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

Soluções dos problemas do Capítulo 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

Soluções dos problemas do Capítulo 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

Soluções dos problemas do Capítulo 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

Soluções dos problemas do Capítulo 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

Soluções dos problemas do Capítulo 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

Soluções dos problemas do Capítulo 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

Soluções dos problemas do Capítulo 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Soluções dos problemas do Apêndice A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

Soluções dos problemas do Apêndice B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

2 Sumário
Soluções dos problemas do Capítulo 1
1.1 A potência (ou a capacidade) computacional aumenta duas vezes a cada 18 meses, o que po-
demos generalizar para um fator de 2x a cada 18x meses. Se quisermos descobrir o período
de tempo em que a capacidade computacional aumenta 100 vezes, precisaremos resolver a
equação 2x = 100, que se reduz a x = 6,644. Portanto, temos 18x = 18 ´ (6,644 meses) =
120 meses, que corresponde a 10 anos.

Soluções dos problemas do Capítulo 2


2.1 (a) (+999,999, –999,999]

(b) 0,001 (Observe que o erro é metade da precisão, o que corresponderia a 0,001/2 =
0,0005 para esse problema.)
2.2 (a) 101111

(b) 111011
(c) 531
(d) 22,625
(e) 202,22
2.3 (a) 27

(b) 000101
(c) 1B
(d) 110111,111
(e) 1E,8
2.4 2´3–1 + 0´3–2 + 1´3–3 = 2/3 + 0 + 1/27 = 19/27

2.5 37,3

2.6 (17,5)10 @ (122,11)3 = (17,4)10

2.7 –8

2.8 0

2.9 0011 0000 0101

2.10 0110 1001 0101

2.11 O complemento de um tem duas representações para zero, enquanto o complemento de


dois tem uma representação para zero; desse modo, o complemento de dois pode represen-
tar um inteiro a mais.
2.12

Magnitude de 5 bits com sinal Excesso de 16 de 5 bits


Maior número +15 +15

Menor número –15 –16


Quant. de números distintos 31 32

Soluções dos problemas do Capítulo 1 3


2.13

Notação científica de base 2 Representação de ponto flutuante

Sinal Expoente Fração


–1,0101 ´ 2–2 1 001 0101

+1,1 ´ 22 0 101 1000

+1,0 ´ 2–2 0 001 0000

–1,1111 ´ 23 1 110 1111

2.14 (a)–0,02734375

(b) (14,3)6 = (10,5)10 = (A,8)16 = 0,A8 ´ 161 =


0 1000001 10101000 00000000 00000000
2.15 (a) diminuir; (b) não alterar; (c) aumentar; (d) não alterar

2.16 (a)–0,5; (b) diminuir; (c) 2–5; (d)2–2; (e) 33

2.17 (107,15)10 = 1101011,00100110011001100

0 1000111 11010110 01001100 11001100


2.18 (a)+1,011 ´ 24

(b) –1,0 ´ 21
(c)–0
(d) –¥
(e) +NaN
(f) +1,1001 ´ 2–126
(g)+1,01101 ´ 2–124
2.19 (a) 0 10000100 1011 0000 0000 0000 0000 000

(b) 0 00000000 0000 0000 0000 0000 0000 000


(c) 1 01111111110 0011 1000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
(d) 1 11111111 1011 1000 0000 0000 0000 000
2.20 (a) (2 – 2–23) ´ 2127

(b) 1,0 ´ 2–126


(c) 2–23 ´ 2–126 = 2–149
(d) 2–23 ´ 2–126 = 2–149
(e) 2–23 ´ 2127 = 2104
(f) 2 ´ (127 – 126 + 1) ´ 1 ´ 223 + 1 = 254 ´ 224 + 1

4 Soluções dos problemas do Capítulo 2


2.21 A distância de zero até o primeiro número representável é maior que o tamanho do interva-
lo para os mesmos valores de expoentes.
2.22 Se removermos o dígito mais à esquerda, não haverá um modo de saber que valor de 1 até 15
deve ser restaurado.
2.23 Não, porque não existe nenhum padrão de bit não utilizado.

2.24 Não. O expoente determina a posição do símbolo de separação decimal na representação de


ponto fixo equivalente de um número. Essa posição quase sempre será diferente entre os
números original e convertido e, assim, o valor do expoente em geral será diferente.

Soluções dos problemas do Capítulo 3


3.1 10110 11110 11111
+10111 +11101 + 01111
––––––––– –––––––––– –––––––––––
01101 11011 01110
Estouro Sem estouro Sem estouro

3.2 1 1 0 0 <– empréstimos


0101
–0 1 1 0
––––––––––
1 1 1 1 1 (Sem estouro)

o empréstimo é descartado em uma representação de complemento de dois

3.3 Complemento de dois Complemento de um


1 0 1 1,1 0 1 1 0 1 1,1 0 1
+ 0 1 1 1,0 1 1 + 0 1 1 1,0 1 1
–––––––––––––––– ––––––––––––––––––
0 0 1 1,0 0 0 (sem estouro) 0 1 0 0,0 0 0 (sem estouro)
Observe que, no caso da solução de complemento de um, o transporte de arredondamento é
acrescentado na posição do 1.
3.4
Multiplicando (M):

Valores iniciais

Somar M a A
Deslocar
Deslocar
Somar M para A
Deslocar
Deslocar

Produto

Soluções dos problemas do Capítulo 3 5


3.5
Multiplicando (M):

Valores iniciais

Somar M a A
Deslocar para a direita
Somar M a A
Deslocar para a direita
Deslocar para a direita
Corrigir decimal

Produto

3.6
Divisor (M):

Valores iniciais

Deslocar para a esquerda


Subtrair M de A
Restaurar A
Limpar q0
Deslocar para a esquerda
Subtrair M de A
Restaurar A
Limpar q0
Deslocar para a esquerda
Subtrair M de A
Definir q0
Deslocar para a esquerda
Subtrair M de A
Restaurar A
Limpar q0

Resto Quociente

3.7
Divisor (M):

Valores iniciais

Deslocar para a esquerda


Subtrair M de A
Restaurar A
Limpar q0
Deslocar para a esquerda
Subtrair M de A
Restaurar A
Limpar q0
Deslocar para a esquerda
Subtrair M de A
Definir q0
Deslocar para a esquerda
Subtrair M de A
Restaurar A
Limpar q0
Deslocar para a esquerda
Subtrair M de A
Definir q0, corrigir decimal

Quociente

6 Soluções dos problemas do Capítulo 3


3.8 c4 = G3 + P3G2 + P3P2G1 + P3P2P1G0 + P3P2P1P0

3.9 (a) O transporte de cada CLA é gerado em apenas três retardos de portas depois de fixadas
as entradas. O caminho mais longo através de um CLA corresponde a cinco retardos de por-
tas. O caminho mais longo através do CLA/somador ripple de 16 bits é 14 (nove para gerar
c12, mais cinco para gerar s15).
(b) s0 é gerado em apenas dois retardos de portas.

(c) s12 é gerado em 11 retardos de portas. Ele leva 3 retardos de portas para gerar c4, que é
necessário para gerar c 3 retardos de portas mais tarde, que é preciso para gerar c12 3 retar-
dos de portas depois disso, dando um total de 9 retardos de portas antes de c12 poder ser usa-
do no CLA mais à esquerda. A saída s12 é gerada 2 retardos de portas depois, dando um total
de 11 retardos de portas.

3.10

Algoritmo de Booth: 0 1 0 0 1 1 Multiplicando


Varrer multiplicador da direita para a esquerda. 0 1 1 0 1 1 Multiplicador
usar –1 para uma transição de 0 para 1; +1 0 –1 +1 0 –1 Multiplicador codificado de Booth
usar –1 para o 1 mais à direita;
usar +1 para uma transição de 1 para 0;
usar 0 para indicar nenhuma mudança.

0 1 0 0 1 1 Multiplicando
´ +1 0 –1 +1 0 –1 Multiplicador codificado de Booth
1 1 1 1 1 1 0 1 1 0 1 Multiplicando negativo
0 0 0 0 1 0 0 1 1 0 0 Multiplicando deslocado à esquerda duas unidades
1 1 1 0 1 1 0 1 0 0 0 Multiplicando negativo deslocado à esquerda 3 unidades
+ 0 1 0 0 1 1 0 0 0 0 0 Multiplicando deslocado à esquerda 5 unidades
0 1 0 0 0 0 0 0 0 0 1 Produto

3.11

0 1 0 0 1 1 Multiplicando
0 1 1 0 1 1 Multiplicador
+1 0 –1 +1 0 –1 Multiplicador codificado de Booth
+2 –1 –1 Multiplicador de par de bits recodificado

0 1 0 0 1 1 Multiplicando
´ +2 –1 –1 Multiplicador de par de bits recodificado
1 1 1 1 1 1 1 0 1 1 0 1 (–1 ´ 19 ´ 1)
1 1 1 1 1 0 1 1 0 1 0 0 (–1 ´ 19 ´ 4)
+ 0 0 1 0 0 1 1 0 0 0 0 0 (+2 ´ 19 ´ 16)
0 0 1 0 0 0 0 0 0 0 0 1 Produto

Soluções dos problemas do Capítulo 3 7


3.12 O bit de transporte gerado pelo i-ésimo somador completo é: ci = Gi + PiGi–1 + ... +
PiP1G0. Os bits Gi e Pi são calculados em um retardo de porta. O bit ci é calculado em dois re-
tardos de portas adicionais. Uma vez que temos ci, as saídas das somas são calculadas em
mais dois retardos de portas. Existem 1 + 2 + 2 = 5 retardos de portas em qualquer soma-
dor de carry lookahead, não importando a largura da palavra, supondo-se número arbitrá-
rio de entradas e de saídas conectadas a um circuito lógico.
3.13 Consulte a Figura 3-21. A porta OR para cada ci tem i entradas. A porta OR para c32 tem 32
entradas. Nenhuma outra porta lógica tem mais entradas.
3.14 (a)

Somador de Somador de
quatro bits (FBA) quatro bits (FBA)

(b) Suponha que um MUX introduza dois retardos de portas, como vimos no Capítulo 3. O
número de retardos de portas para a abordagem de carry lookahead é 8 (c4 é gerado em três
retardos de portas, e s7 é gerado em mais cinco retardos de portas). Para a configuração de
carry-select, existem cinco retardos de portas para os FBAs, e dois retardos de portas para o
MUX, resultando em um total de 5 + 2 = 7 retardos de portas.
3.15 3p

3.16 Há mais de uma solução. Aqui está uma: a idéia básica é tratar cada operando de 16 bits
como se ele fosse composto por dois dígitos de 8 bits, e depois executar a multiplicação
como faríamos normalmente à mão. Então, A0:15 = A8:15A0:7 = AHIALO e B0:15 = B8:15B0:7
= BHIBLO, e assim o problema pode ser representado como:

Produtos parciais
de 16 bits

Somatório de produtos parciais de 16 bits

Multiplicadores

Somador

Somador

Somador

Produto de 32 bits

8 Soluções dos problemas do Capítulo 3


3.17 Duas iterações.

3.18 0110 0100 0001


+ 0010 0101 1001
–––––––––––––––––––
1001 0000 0000
3.19 0000 0001 0010 0011
+ 1001 1000 0010 0010
–––––––––––––––––––––––
1001 1001 0100 0101

Soluções dos problemas do Capítulo 4


4.1 24

4.2 Mais baixo: 0; Mais alto: 218 – 1


Essa não é uma arquitetura endereçável por byte e, portanto, todos os endereços estão em
unidades de palavras, embora fosse possível considerar palavras em termos de unidades de 4
bytes.
4.3 (a) Cartucho #1: 216 bytes; cartucho #2: 219 – 217 bytes.

(b) [O código a seguir é inserido no local indicado no Problema 4.3.]

orncc %r4, %r0, %r4 ! Forma o complemento de 1 de old_y


addcc %r4, 1, %r4 ! Forma o complemento de 2 de old_y
addcc %r2, %r4, %r4 ! %r4 <– y – old_y
be loop

4.4

.begin
.org 2048
swap: ld [x], %r1
ld [N], %r2
st %r1, [Y]
st %r2, [x]
jmpl %r15 + 4, %r0
x: 25
y: 50
.end

4.5 (a) O código soma 10 elementos de array armazenados em a e 10 elementos de array arma-
zenados em b, e coloca o resultado no array que começa em c.
Para esse tipo de problema, estude o fluxo lógico a partir da primeira instrução. A primeira
linha carrega k=40 em %r1. A próxima linha subtrai 4 desse valor, deixando 36 em %r1, e a li-
nha seguinte armazena esse valor de volta em k. Se o resultado (+36 nesse momento) for ne-
gativo, então bneg se desvia para X, que retorna ao procedimento de chamada via jmpl. Caso
contrário, o código que segue bneg é executado, o que adiciona elementos correspondentes
dos arrays a e b, colocando os resultados no array c.

Soluções dos problemas do Capítulo 4 9


4.6
Modo Modo
de de
Opcode orig. Origem dest. Dest. Operando/Endereço

(b) Nota: existe mais de uma solução correta.

Modo Modo
de de
Opcode orig. Origem dest. Dest. Operando/Endereço

4.7 O código soma 10 elementos de array armazenados em a e 10 elementos de array armazena-


dos em b, e coloca o resultado no array que começa em c.

0 0 0

Área livre
Área livre %sp n
m Área livre
%r15
%sp c c
d d
a a
%sp
Pilha Pilha Pilha

232–1 232–1 232–1


(1) (2) (3)

4.8 Todas as instruções têm 32 bits de largura. Dez desses bits precisam ser usados para o
opcode e o registrador de destino, o que deixa apenas 22 bits para o campo imm22.
4.9 A convenção adotada nesse exemplo utiliza uma área “hardwired” (embutida no código) do
link de dados, que começa na posição 3000. Essa é uma variação da passagem do endereço da
área de link de dados em um registrador, o que é feito no exemplo mostrado na Figura 4-16.
4.10 O SPARC é big-endian, mas o Pentium é little-endian. O arquivo precisa passar por uma
“troca de bytes” antes de ser usado na outra arquitetura (ou, o que é equivalente, o progra-
ma precisa reconhecer o formato do arquivo e trabalhar com ele da maneira apropriada
para o formato big/little-endian).
4.11
aload_0
invokespecial 3 // Igual a: invokespecial <init>
return

10 Soluções dos problemas do Capítulo 4


4.12 Note que a primeira linha do programa de bytecode da Figura 4-24 começa com a palavra
hexadecimal cafe no endereço 0 e babe no endereço 2. O texto descreve o “número mágico
0xcafebabe" usado para identificar um programa do Java. Tendo em vista que os bits mais
significativos (cafe) do número mágico de 32 bits estão armazenados no endereço mais bai-
xo, a máquina deve ser big-endian. (Observe que, em uma máquina little-endian, o número
seria exibido como bebafeca. Não é nem de longe uma palavra interessante.)

4.13

main:
mov 15,%r16
mov 9,%r17
st %r16, [%sp+68] ! 15 na pilha
st %r17, [%sp+72] ! 9 na pilha
call addtwoints
nop
ld [%sp–4],%r9 ! resultado carregado da pilha em %r9
! printf("ans is %d \n", result);
! printf espera valor em %r9 e string de formato em %r8.
sethi %hi (.L17),%r8
or %r8,%lo(.L17),%r8
call printf
nop
jmp %r31+8

...

addtwoints:
ld [%fp+68],%r16 ! primeiro parâmetro em %r16
ld [%fp+72],%r17 ! segundo parâmetro em %10
add %r16, %r17, %r16
st %r16, [%fp–4] ! resultado na pilha
nop
jmp %r31+8

4.14 a) 13 (buscas de instruções) + 5 (empurrões para a pilha) + 4 (extrações da pilha) + 3 (adi-


ção à pilha) = 25 bytes.
b) (Lugar reservado para solução não incluída.)

4.15 Não é certo que um programa de bytecode venha a ser executado tão rapidamente quanto o
programa equivalente escrito na linguagem nativa. Mesmo que o programa seja executado
com o uso de um compilador just-in-time (JIT), ele ainda utilizará operações baseadas na pi-
lha, e portanto não será capaz de tirar proveito das operações baseadas em registradores da
máquina nativa.

Soluções dos problemas do Capítulo 4 11


4.16

3 endereços 2 endereços 1 endereço


SUB B, C, A MOV B, A LOAD B
SUB D, E, Tmp SUB C, A SUB C
MPY A, Tmp, A MOV D, Tmp STO Tmp
SUB E, Tmp LOAD D
MPY Tmp, A SUB E
MPY Tmp
STO A
Tamanho: 7×3 = 21 bytes 5×5 = 2×5 bytes 3×7 = 21 bytes.

Tráfego: 3×4+3×3 = 21 pals. 5×3 + 2×2 7×2 + 7 = 21 pals.


+ 33 = 28 pals.

4.17

ld [B], %r1
ld [C], %r2
ld [D], %r3
ld [E], %r4
subcc %r1, %r2, %r2
subcc %r3, %r4, %r4
smul %r2, %r4, %r4
st %r4, [A]

Tamanho: 8 palavras de 32 bits. Tráfego: 8 + 4 +1 = 13 palavras de 32 bits. Observe que a


arquitetura de carga-armazenamento de registrador geral leva a menor tráfego de memória
que qualquer uma das arquiteturas do exercício anterior.

Soluções dos problemas do Capítulo 5


5.1 A tabela de símbolos é mostrada a seguir. A abordagem básica é criar uma entrada na tabela
para cada símbolo que aparece no programa de linguagem assembly. Os símbolos podem
aparecer em qualquer ordem, e um caminho simples para coletar todos os símbolos é sim-
plesmente ler o programa de cima para baixo, e da esquerda para a direita em cada linha.
Então, os símbolos serão encontrados na ordem: x, main, lab_4, k, foo, lab_5 e cons. Desses
labels, x, main, lab_4, foo e cons são definidos no programa. k e lab_5 não são definidos e são
marcados com U. Da tabela de símbolos, foram excluídos mnemônicos (como addcc), cons-
tantes, pseudo-ops e nomes de registradores.
x tem o valor 4000 porque .equ define isso. main está na posição 2072, e portanto tem esse
valor na tabela de símbolos. lab_4 está 8 bytes depois de main (porque cada instrução tem o
tamanho de exatamente 4 bytes) e assim lab_4 está na posição 2800 etc.

12 Soluções dos problemas do Capítulo 5


Símbolo Valor
x 4000
main 2072
lab_4 2080
k U
foo 2088
lab_5 U
cons 2104

5.2 Note que o campo rd para a instrução st na última linha é usado para o registrador de ori-
gem.

10001000 10000001 00100100 00000000


11001010 00000011 10000000 00000000
10011100 10000011 10111111 11111111
11001010 00100000 00110000 00000000

5.3 (Lugar reservado para solução não incluída.)

5.4

3072: 10001100 10000000 10000000 00000100


3076: 00001010 10000000 00000000 00000011
3080: 10001010 10000000 01000000 00000011
3084: 10000001 11000011 11100000 00000100
3088: 10001010 10000000 01000000 00000011
3092: 00001010 10000000 00000000 00000011
3096: 10001010 10000001 01100000 00000001
3100: 10000001 11000011 11100000 00000100
3104: 10001010 10000001 01100000 00000001
3108: 00001111 00111111 11111111 11111111
3112: 10000000 10000001 11000000 00000111
3116: 10000001 11000011 11100000 00000100
3120: 00000000 00000000 00000000 00000000
3124: 00000000 00000000 00000000 00011001
3128: 11111111 11111111 11111111 11111111
3132: 11111111 11111111 11111111 11111111
3136: 00000000 00000000 00000000 00000000
3140: 00000000 00000000 00000000 00000000

5.5

b: addcc %r1, 1, %r1


orcc %r5, %r6, %r0
be a
srl %r6, 10, %r6
ba b
a: jmpl %r15 + 4, %r0

Soluções dos problemas do Capítulo 5 13


5.6

ld %r14, %r1
addcc %r14, 4, %r14 ! Esta linha pode ser excluída
addcc %r14, –4, %r14 ! Esta linha pode ser excluída
st % r2, %r14

5.7

.macro return
jmpl %r15 + 4, %r0
.endmacro

5.8

.
.
.
st %r1, [x]
st %r2, [x+4]
sethi .high22(x), %r5
addcc %r5, .low10(x), %r5
call add_2
ld [x+8], %r3
.
.
.
x: .dwb 3

5.9

.begin
.org 2048
add_128: ld [x+8], %r1 ! Carrega bits 32 a 63 de x
ld [x+12], %r2 ! Carrega bits 0 a 31 de x
ld [y+8], %r3 ! Carrega bits 32 a 63 de y
ld [y + 12], %r4 ! Carrega bits 0 a 31 de y
call add_64 ! Soma 64 bits inferiores
st %r5, [z + 8] ! Armazena bits 32 a 63 de resultado
st %r6, [z + 12] ! Armazena bits 0 a 31 de resultado
bcs lo_64_carry
addcc %r0, %r0, %r8 ! Limpa transporte
ba hi_words
lo_64_carry: addcc %r0, 1, %r8 ! Define transporte
hi_words: ld [x], %r1 ! Carrega bits 96 a 127 de x
ld [x + 4], %r2 ! Carrega bits 64 a 95 de x
ld [y], %r3 ! Carrega bits 96 a 127 de y
ld [y + 4], %r4 ! Carrega bits 64 a 95 de y
call add_64 ! Soma 64 bits superiores
bcs set_carry
addcc %r6, %r8, %r6 ! Soma em transporte baixo
st %r5, [z] ! Armazena bits 96 a 127 de resultado
st %r6, [z + 4] ! Armazena bits 64 a 95 de resultado

14 Soluções dos problemas do Capítulo 5


jmpl %r15 + 4, %r0 ! Retorna
set_carry: addcc %r6, %r8, %r6 ! Soma em transporte baixo
st %r5, [z] ! Armazena bits 96 a 127 de resultado
st %r6, [z + 4] ! Armazena bits 64 a 95 de resultado
sethi #3FFFFF, %r8
addcc %r8, %r8, %r0 ! Restaura bit de transporte
jmpl %r15 + 4, %r0 ! Retorna
x: .dwb 4
y: .dwb 4
z: .dwb 4
.end

5.10 Nota: No código a seguir, arg2 deve ser um registrador (ele não pode ser um imediato).

.macro subcc arg1, arg2, arg3


orncc arg2, %r0, arg2
addcc arg2, 1, arg2
addcc arg1, arg2, arg3
.endmacro

Observe que essa codificação tem o efeito colateral de complementar arg2.


5.11 Toda a expansão de macros ocorre em tempo de montagem.

5.12 A abordagem permite o uso de um registrador arbitrário como uma pilha, em lugar de ape-
nas %r14. O perigo é que um programador involuntariamente poderia tentar invocar a ma-
cro com uma declaração como push X, Y. Isto é, instanciar uma pilha na posição de memória
Y. A armadilha é que isso resultará em uma tentativa de definir a declaração de linguagem as-
sembly addcc Y, –4, Y, que é inválida em linguagem assembly ARC.

Soluções dos problemas do Capítulo 6


6.1

Decodificador
de 2 para 4
Saída
Z
Função
Seleção

Saída de
transporte
Entradas Entrada
de dados de Função
Somador
transporte
total
Entrada de
Saída de Soma
transporte
transporte

Soluções dos problemas do Capítulo 6 15


6.2 Há mais de uma solução, especialmente com respeito à escolha de labels nas entradas de
MUX. Aqui está uma solução:

6.3
Não parada Parada

6.4 O registrador %r0 não pode ser alterado, e assim ele não precisa ter uma linha de ativação de
gravação.
6.5 (a)

Ativações de gravação Ativações de barramento A Ativações de barramento B


0 1 2 3 0 1 2 3 0 1 2 3 F0 F1 Tempo

0 1 0 0 0 1 0 0 0 0 0 0 1 1 0
1 0 0 0 1 0 0 0 0 1 0 0 0 0 1
1 0 0 0 1 0 0 0 0 0 0 1 0 0 2

16 Soluções dos problemas do Capítulo 6


(b)
r0 Å r1 = r0 r1 + r0 r1 = r0 r1 + r0 r1 = r0 r1 r0 r1

Ativações de gravação Ativações de barramento Ativações de barramento B


A

0 1 2 3 0 1 2 3 0 1 2 3 F0 F1 Tempo

0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 Salvar r0
1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 Calcular r1
1 0 0 0 1 0 0 0 0 0 1 0 0 1 2 Calcular r0 r1
1 0 0 0 1 0 0 0 0 0 0 0 1 1 3 Calcular r0 r1
0 0 1 0 0 0 1 0 0 0 0 0 1 1 4 Calcular r0
0 0 1 0 0 0 1 0 0 1 0 0 0 1 5 Calcular r0 r1
0 0 1 0 0 0 1 0 0 0 0 0 1 1 6 Calcular r0 r1
1 0 0 0 1 0 0 0 0 0 1 0 0 1 7 Calcular r0 r1 r0 r1
1 0 0 0 1 0 0 0 0 0 0 0 1 1 8 Calcular r0 r1 r0 r1

6.6

A B C

M M M

U U U RW

A X B X C X D R ALU COND JUMP ADDR

60 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0

61 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

6.7

R[temp0] ¬ SEXT13(R[ir]);
R[temp0] ¬ ADD(R[rs1],R(temp0]); GOTO 1793;
R[temp0] ¬ ADD(R[rs1],R[rs2]); IF IR(13) THEN GOTO 1810;

6.8

1280: R[15] <– AND (R(pc], R[pc]); / Salva %pc em %r15


1281: R[temp0] <– LSHIFT2(R[ir]); / Desloca disp30 para a esquerda dois bits
1282: R[pc] <– ADD (R(pc], R[temp0]); / Salta para sub-rotina
GOTO 0;

6.9 São executadas sete ou oito microinstruções, dependendo do valor de IR[13]:

IR[13] = 0: (Oito microinstruções) 0, 1, 1584, 1585, 1586, 1587, 1603, 2047.

IR[13] = 1: (Sete microinstruções) 0, 1, 1584, 1586, 1587, 1603, 2047.

6.10 (a) (11 microinstruções): 0, 1, 1088, 2, 3, 4, 5, 6, 7, 8, 12.

(b) 0, 1, 2, 19

Soluções dos problemas do Capítulo 6 17


6.11

Ativa barramento A (a partir


do bit a0 do Decodificador A)

Ativa barramento B (a partir


do bit b0 do Decodificador B)

Saídas de dados para barramento B

Saídas de dados para barramento A

6.12 000000, ou qualquer padrão de bits maior que 3710.

6.13 Há mais de uma solução. Aqui está uma:

Endereço Conteúdo de ROM


ABCD
0000 1 0 0 0
0001 0 0 1 1
0010 0 1 0 0
0011 0 0 1 1
0100 0 1 0 0
0101 0 0 1 1
0110 0 1 0 0
0111 0 0 1 1
1000 0 0 1 1
1001 0 0 1 1
1010 0 0 1 1
1011 0 0 1 1
1100 0 0 1 1
1101 0 0 1 1
1110 0 0 1 1
1111 0 0 1 1
V W X S

6.14

1612: IF IR[13] THEN GOTO 1614; / O segundo operando de origem é imediato?


1613: R[temp0] <– R[rs2]; / Obtém operando B em temp0
GOTO 1615;
1614: R[temp1] <– SIMM13(R[ir]); / Obtém operando A em temp1
GOTO 21;
1615: R[temp1] <– R[rs1]; GOTO 21;
21: R[temp2] ¬ NOR (R[temp0], R[temp0]); / Obtém complemento de B em temp2
22: R[temp3] ¬ NOR (R[temp1], R[temp1]); / Obtém complemento de A em temp3
23: R[temp1] ¬ NOR (R[temp1], R[temp2]); / temp1 obtém AND (A, B')
24: R[temp2] ¬ NOR (R[temp0], R[temp3]); / temp2 obtém AND (A', B)
25: R[rd] ¬ ORCC (R[temp1], R[temp2]); GOTO 2047; / Extrai operando rs2

18 Soluções dos problemas do Capítulo 6


6.15
Data In

Read (Peek at top of stack)

Push
Top of Stack
Pop
Data Out

Clock

6.16 Não.

6.17
Cond
ALU Barr. A Barr. B Barr. C Endereço de salto Próximo endereço

6.18 Não. Depois de se somar 1 a 2047, o endereço de 11 bits retorna a 0.

6.19 (a) 137 bits

(b) (211 palavras ´ 137 bits) / (211 palavras ´ 41 bits) = 334%

Soluções dos problemas do Capítulo 6 19


6.20

ALU LUT1 ALU LUT0

zi Carry zi Carry
Out Out
0 0 1 0

0 0 1 0
1 0 0 1

1 0 0 1

1 0 d d
1 0 d d

0 1 d d
0 1 d d

6.21 temp0 deve ser multiplicado por 4 (deslocando-se temp0 dois bits para a esquerda) antes de
somar temp0 ao PC na linha 12.

Soluções dos problemas do Capítulo 7


7.1
Entrada

7.2

Endereço Dados

20 Soluções dos problemas do Capítulo 7


7.3

7.4

Decodificador
de 2 para 4

Ativar

7.5

Endereço

Soluções dos problemas do Capítulo 7 21


Decodificador
de 2 para 4

Ativar

7.6

22 Soluções dos problemas do Capítulo 7


7.7 (a)

Tag Slot Palavra

7 7 4

(b)
# erros: 13 (na primeira iteração do loop)
# acertos: 173 (primeiro loop)
# acertos depois do primeiro loop 9 ´ 186 = 1674
# total de acertos = 173 + 1674 = 1847
# acessos = acertos + erros = 1860
razão de acertos = 1847/1860 = 99,3%
(c) Tempo de acesso médio = [(1847)(10 ns) + (13)(210 ns)]/1860
= 11,4 ns
7.8 (a) O número de blocos na memória principal é 216/8 = 213. O campo de tag tem 13 bits de
largura e o campo de palavra tem 3 bits de largura.

Tag Palavra

13 3

(b) Endereços de 20 a 45 residem em quatro blocos diferentes da memória principal. Quan-


do o programa for executado, haverá quatro erros e 94 acertos. Razão de acertos = 94/98 =
95,9%.
(c) O tempo de acesso total para o programa é 4(1040 ns) + 94(40 ns) = 7920 ns. Tempo de
acesso médio = 7920/98 = 80,82 ns.
7.9 Associativo = (8 ´ 32 + 29) ´ 214; Direto = (8 ´ 32 + 15) ´ 214

7.10 (a) O tamanho do cache é 214 slots ´ 25 palavras/bloco = 219 palavras, que é o espaçamento
mínimo necessário para ocorrer um erro em cada acesso ao cache.
(b) Todo acesso ao cache causa um erro, e assim o tempo de acesso efetivo é 1000 ns.
7.11 (a) LRU 0 2 4 5 2 4 3 11 2 10

Erros: ­ ­ ­ ­ ­ ­ ­
(b) FIFO 0 2 4 5 2 4 3 11 2 10

Erros: ­ ­ ­ ­ ­ ­ ­ ­
7.12 Se a tabela de páginas for trocada com o disco, o próximo endereço de memória causará
uma falha, porque o gerenciador de memória precisa conhecer a localização física desse en-
dereço virtual e, como a tabela de páginas está no disco, o gerenciador de memória não sabe
onde obter a página que contém a tabela de páginas. Ocorrerá uma seqüência infinita de fa-
lhas de páginas. O uso da norma de substituição de páginas da LRU impedirá que isso acon-
teça, pois a página que contém a tabela de páginas sempre estará na memória, mas isso só irá
funcionar se a tabela de páginas for pequena o bastante para caber em uma única página (o
que em geral não acontece).

Soluções dos problemas do Capítulo 7 23


7.13 (a) 1024

(b) Não está na memória principal.


(c) Quadro de página 2.
7.14 (a)(N – M)/N

(b) (M –F)/M
(c)[(N – M)T1 + (M – F)T2 + FT3]/N
7.15 Os endereços virtuais tendem a ser grandes (em geral, 32 bits). Se endereços virtuais forem
colocados no cache, os campos de tags serão correspondentemente grandes, bem como o
hardware que examina as tags. Se endereços físicos forem colocados no cache, toda referên-
cia de memória percorrerá a tabela de páginas. Isso tornará o cache mais lento, mas os cam-
pos de tags serão menores, o que simplificará o hardware.
Se agruparmos a memória virtual e a memória do cache em uma única unidade de gerencia-
mento de memória (MMU), poderemos colocar no cache endereços físicos e pesquisar si-
multaneamente o cache e a tabela de páginas, usando os bits de mais baixa ordem do endere-
ço (que são idênticos para endereços físicos e virtuais). Se a pesquisa na tabela de páginas ti-
ver sucesso, isso significa que o bloco de cache correspondente (se encontramos um bloco) é
o bloco que queremos. Desse modo, poderemos obter os benefícios do tamanho pequeno na
colocação de endereços físicos no cache, e ao mesmo tempo não sermos forçados a acessar a
memória principal para examinar a tabela de páginas, porque agora essa tabela está em
hardware. Em termos mais simples: esse é o propósito de um buffer de conversão lookaside.
7.16 Há 232 bytes/212 bytes/página = 220 páginas. Existe uma entrada de tabela de páginas cor-
respondente a cada página, e assim o tamanho da tabela de páginas é 220 ´ 8 bytes = 223
bytes.
7.17 Para o caso de 2D, cada porta AND do decodificador precisa de um fan-in igual a 6, supon-
do-se que o decodificador tenha uma forma semelhante ao da Figura 7-4. Há 26 portas AND
e 6 inversores, perfazendo uma contagem total de entradas de portas de 26 ´ 6 + 6 = 390
para o caso de 2D. Para o caso de 2–1/2D, existem dois decodificadores, cada um com 23
portas AND e 3 inversores, e um fan-in igual a 3 para as portas AND. A contagem total de
entradas de portas é então 2 ´ (23 ´ 3 + 3) = 54 para o caso de 2-1/2D.
7.18 1og4(220) = 10

7.19 (a) 220

(b) 211
7.20 Palavras F1A0028 e DFA0502D

7.21 32

Soluções dos problemas do Capítulo 8


8.1 O barramento mais lento ao longo do caminho do dispositivo Audio até os processadores
Pentium é o barramento ISA de 16,7 MB/s. O tempo de transferência mínimo é, portanto,
100 MB/(16,7 MB/s) = 6 segundos.

24 Soluções dos problemas do Capítulo 8


8.2 Caso contrário, uma interrupção pendente seria servida antes de o ISR ter uma chance de
desativar as interrupções.
8.3

Voltagem
Tempo

8.4 4.

8.5 (a)

Largura da área de armazenamento = 5 cm – 1 cm = 4 cm.


Número de trilhas no armazenamento = 4 cm ´ 10 mm/cm ´ 1/0,1 trilhas/mm = 400 tri-
lhas.
A trilha mais interna tem a menor capacidade de armazenamento; assim, todas as trilhas não
armazenarão mais dados que a trilha mais interna. O número de bits armazenados na trilha
mais interna é: 10.000 bits/cm ´ 2p ´ 1 cm = 62.832 bits.
A capacidade de armazenamento por superfície é: 62.832 bits/trilha ´ 400 trilhas/superfície
= 25,13 ´ 106 bits/superfície.
A capacidade de armazenamento no disco é: 2 superfícies/disco ´ 25,13 ´ 106 bits/superfície
= 50,26 Mbits/disco.
(b) 62.832 bits/trilha ´ 1 trilha/rev ´ 3600 rev/min ´ 1/60 min/s = 3,77 Mbits/s.
8.6 No pior caso, a cabeça terá de se mover entre as duas trilhas extremas e, nesse ponto, deverá
ser feita uma revolução completa para alinhar o início do setor com a posição da cabeça.
Todo o setor deve então se mover sob a cabeça. Portanto, o tempo de acesso do pior caso
para um setor é composto por três partes:

Tempo de acesso

15 ms/movimento da cabeça ´ 127 movimentos da cabeça +


(1/3600 min/rev ´ 60.000 ms/min)(1 + 1/32) = 1922 ms

Retardo rotacional Tempo de leitura de setor

Soluções dos problemas do Capítulo 8 25


8.7 (a) O tempo para ler uma trilha é igual ao retardo rotacional, que é:

1/3600 min/rev ´ 1 rev/trilha ´ 60.000 ms/min = 16,67 ms


(b) O tempo para ler uma trilha é 16,67ms (de 8.5a). O tempo para ler um cilindro é 19 ´
16,67 ms = 316,67 ms. O tempo para mover o braço entre cilindros é:
0,25mm ´ 1/7,5 s/m ´ 1000 ms/s ´ 1/1000 m/mm = 1/7,5 ms = 0,033 ms.
O armazenamento por cilindro é 300/815 MB/cil = 0,37 MB/cil.
O tempo para transferir o buffer para o host é:
1/300 s/KB ´ 0,37 MB/cil ´ 1024 KB/MB = 1,26 segundos/cilindro.
Estamos procurando o tempo mínimo para transferir o disco inteiro para o host, e assim po-
demos supor que, depois que o buffer for esvaziado, a cabeça está posicionada exatamente
no setor inicial do cilindro seguinte. O tempo de transferência inteiro é então (0,317 s/cil +
1,26 s/cil) ´ 815 cil = 1285 s, ou 21,4 min. Note que o tempo de movimento da cabeça não
contribui para o tempo de transferência, porque ele se sobrepõe ao tempo de transferência
do buffer de 1,26 segundos.
8.8 Um setor pode ser lido no buffer em 0,1 revoluções (rev). O disco deve então continuar por
0, 9 rev, a fim de alinhar o setor correspondente na superfície de destino com sua cabeça. O
disco continua então por mais 0,1 rev para gravar o setor e, nesse ponto, o próximo setor a
ser lido fica alinhado com sua cabeça, o que é verdade, independentemente da trilha em que
está o próximo setor. O tempo para transferir cada setor é, portanto, 1,1 rev. Há 10.000 se-
tores por superfície, e assim o tempo para copiar uma superfície em outra é:
10.000 setores ´ 1,1 rev/setor ´ 1/3000 min/rev = 3,67 min.
8.9 O tamanho de um registro é:

2048 bytes ´ 1/6250 pol/byte = 0,327 pol.


Existem x registros e x – 1 intervalos entre registros em 600 pés, e assim temos a relação:
(0,327 pol)(x) + (0,5 pol) (x – 1) = 600 pés ´ 12 pol/pé = 7200 pol.
Resolvendo para x, temos x = 8706 registros (inteiros), o que se traduz em: 8706 registros ´
2048 bytes/registro = 17,8 MB.
8.10 O número de bits escritos na tela a cada segundo é 1024 ´ 1024 ´ 60 = 62.914.560 bits/s. O
tempo máximo permitido para escrever cada pixel é então: 1/62.914.560 s/bit ´ 109 ns/s =
15,9 ns.
8.11 O tamanho de LUT = 28 palavras ´ 24 bits/palavra = 6144 bits, e o tamanho da RAM é 219
palavras ´ 8 bits/palavra = 4.194.304. Sem uma LUT, o tamanho da RAM é 219 palavras ´
24 bits/palavra = 12.582.912 bits. O aumento no tamanho da RAM é 8.388.608 bits, que é
muito maior que o tamanho da LUT.
8.12 (a) Não temos mais acesso aleatório a setores, e devemos examinar todos os setores interve-
nientes antes de alcançarmos o setor de destino.
(b) A recuperação do disco seria mais fácil se o MCB estivesse muito danificado, porque as
listas de setores estão distribuídas ao longo de todo o disco. É necessário um bloco extra no
início de cada arquivo para esse fim, mas agora o MCB pode ter um tamanho fixo.

26 Soluções dos problemas do Capítulo 8


8.13 O problema é que os dados foram gravados com as cabeças em um alinhamento específico e
o alinhamento das cabeças foi alterado depois que os dados foram gravados. Isso significa
que o início de cada trilha não corresponde mais ao posicionamento relativo de cada trilha
antes do realinhamento. O uso de uma trilha de sincronização não corrigirá o problema, a
menos que seja usada uma trilha de sincronização separada, para cada superfície (o que nor-
malmente não é o caso).

Soluções dos problemas do Capítulo 9


9.1 Distância de Hamming = 3.

9.2

9.3 (a) k + r + 1 £ 2r para k = 6. A simplificação produz: 7 + r £ 2r onde r = 4 é o menor valor


que satisfaz à relação.

1 0 1 1 1 0 0 0 1 1
(b) 10 9 8 7 6 5 4 3 2 1
C8 C4 C2 C1
(c) 11
(d) 101111011001
9.4 k + r + 1 £ 2r para k= 1024. A simplificação produz: 1025 + r £ 2r onde r = 11 é o menor
valor que satisfaz à relação.
9.5

Código Caractere

11100101 V
11100110 W
11100111 X
11101000 Y
11101001 Z

11100101 Total de verificação

9.6 (a) 4096

(b) 8
9.7 Primeiro, procuramos erros nos cálculos de bits de verificação para o código SEC. Se todos
os cálculos de bits de verificação estiverem corretos, então não haverá nenhum erro de bit
único nem erros de bits duplos. Se qualquer dos cálculos de bits de verificação SEC estiver
errado, então haverá um erro de bit único ou um erro de bit duplo.

Soluções dos problemas do Capítulo 9 27


O bit de paridade DED gera paridade par sobre a palavra inteira quando não há nenhum
erro. Se o cálculo da paridade DED estiver errado, haverá um número ímpar de erros que
poderemos supor ser um erro de bit único para esse problema. Se a computação da paridade
DED for par, e se a computação SEC indicar que há um erro, então deve existir pelo menos
um erro de bit duplo.
9.8 CRC = 101. O frame inteiro a ser transmitido é 101100110 101.

9.9 32 bits

9.10 Classe B

9.11 27 + 214 + 221

9.12 63 ns para transferência serial de bits, 32 ns para transferência paralela de palavras. A versão
de palavras em paralelo exige 32 vezes mais hardware, mas apenas metade do tempo de
transmissão, como resultado do retardo de tempo de transmissão pela conexão.
9.13 (Lugar reservado para solução.)

Soluções dos problemas do Capítulo 10


10.1 CPIAVG = 1 + 5(0,25)(0,5) = 1,625 ´ 10= 16,25 ns

Eficiência de execução = 1/1,625 = 62%


10.2 Não; para a arquitetura ARC, não podemos usar %r0 imediatamente após st, porque st pre-
cisa de dois ciclos para completar a execução. Se reutilizássemos %r0 na segunda linha, então
um nop (ou alguma outra instrução que não produza um conflito de registradores) teria de
ser inserido entre as linhas de st e sethi. Porém, para a arquitetura SPARC, o pipeline se
desdobra quando um conflito é detectado, e assim as instruções nop nunca são realmente ne-
cessárias para cargas retardadas no SPARC. Contudo, a instrução nop é necessária para des-
vios retardados no SPARC.
10.3 (Lugar reservado para solução.)

10.4 (Lugar reservado para solução.)

10.5

28 Soluções dos problemas do Capítulo 10


10.6

1
S= = 16,8
1 - 0,05
0,05 +
100
16,8
= 0,168 ou 16,8%
100

10.7 n = p = 6: complexidade = 306. n = p = 2: complexidade = 180. n = p = 4: complexidade


= 231. n = p = 3: complexidade = 200.
10.8 15

Soluções dos problemas do Apêndice A


A.1

A.2

A.3

A B C F G

0 0 0 0 1

0 0 1 1 0

0 1 0 0 1

0 1 1 1 0
1 0 0 0 0
1 0 1 1 0

1 1 0 1 1

1 1 1 1 0

Soluções dos problemas do Apêndice A 29


A.4

A B C XOR
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 0
1 0 0 1
1 0 1 0
1 1 0 0
1 1 1 1

A.5 18

A.6

A.7

A.8 Não equivalente:

A B C F G
0 0 0 0 0
0 0 1 0 0
0 1 0 1 0
0 1 1 0 1
1 0 0 0 0
1 0 1 0 0
1 1 0 0 1
1 1 1 1 0

30 Soluções dos problemas do Apêndice A


Como outra alternativa, também podemos contestar algebricamente a equivalência:

g ( A , B , C) = ( A Å C)B
= ( AC + AC)B
= ABC + ABC
¹ f ( A , B , C)

A.9

A B C F
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 0

F ( A , B , C) = A B C

A.10

A.11

Soluções dos problemas do Apêndice A 31


A.12

A.13

A.14

A.15

A.16

32 Soluções dos problemas do Apêndice A


A.17

A.18

A.19 Existem algumas soluções. Aqui está uma delas:

A.20

Soluções dos problemas do Apêndice A 33


A.21

A.22

A.23

A.24

34 Soluções dos problemas do Apêndice A


A.25 (Nota: Esta solução é para o problema errado. Trata-se de uma demonstração do teorema
de DeMorgan, e não do teorema de absorção.)

y + y =1
x + y + y =1
1x + y + y = 1
(x + x )(x + y ) + y = 1
x + x y + y =1
x y + (x + y) = 1
(x + y) + (x + y) = x y + (x + y)
(x + y) = x y

A.26 Não, um flip-flop de S-R não pode ser construído desse modo. Não existe nenhuma manei-
ra de se forçar uma saída alta ou baixa com base apenas em S ou R. Embora a combinação de
11 nas entradas forneça um estado quiescente, o resultado da aplicação de 00 é indefinido, e
10 e 01 são instáveis.
A.27 (Lugar reservado para solução não incluída.)

A.28

A.29
A entrada A entrada
anterior é 0 anterior é 1

Soluções dos problemas do Apêndice A 35


A.30
Significado dos estados
A Nenhuma entrada vista ainda
B Visto '0'
C Visto '1'
D Visto '01'
E Visto '11'

Entrada

A.31

Significado dos estados


A X=Y
B X<Y
C X>Y

A.32

A.33

Paridade Paridade
par ímpar

36 Soluções dos problemas do Apêndice A


A.34
Entrada Entrada

A.35 Existem várias soluções. Aqui está uma delas:

A.36 [log 3 N ] retardos usando-se uma árvore balanceada.

Soluções dos problemas do Apêndice A 37


Soluções dos problemas do Apêndice B
B.1

B.2

Forma SOP: Forma POS:

B.3 Não. Os don’t cares (não importam) são usados durante o processo de projeto. Uma vez que
o projeto é fixo, os don’t cares assumem valores 0 ou 1.
B.4

B.5

38 Soluções dos problemas do Apêndice B


B.6
Configuração Após a Após a
inicial primeira redução segunda redução

Implicantes Termos mínimos


primos

Todos os implicantes primos são essenciais; então, não construímos uma tabela reduzida prefe-
rida.

f ( A , B , C , D) = BCD + AC + BD

B.7
Função Implicante primo Função Implicante primo

nenhum

Reduzir por eliminação


os implicantes primos nenhum
cobertos por funções
de ordem mais alta

Termos
mínimos
Implicantes
primos

Soluções dos problemas do Apêndice B 39


B.8

B.9

B.10

Entrada atual X
Estado atual 0 1

P0 = (ABCDEFG) A¢ B¢/0 E¢/0


P1 = (AB)(CD)(EF)(G) B¢ A¢/0 B¢/1
P2 = (AB)(CD)(E)(F)(G) C¢ A¢/1 C¢/0
P3 = (AB)(CD)(E)(F)(G) Ö D¢ B¢/1 D¢/0
A¢ B¢ C¢ D¢ E¢ E¢ C¢/1 E¢/1

B.11

Entrada atual XY

P0 = (ABCDE) Estado atual 00 01 10 11


P1 = (A)(BD)(CE)
A¢ A¢/0 B¢/0 C¢/0 B¢/0
P2 = (A)(BD)(CE) Ö
B¢ A¢/0 B¢/1 B¢/0 B¢/1
A¢ B¢ C¢
C¢ C¢/1 B¢/0 B¢/0 C¢/1

40 Soluções dos problemas do Apêndice B


B.12

Entrada atual XY

P0 = (ABCDEFG) Estado atual 0 1 2


P1 = (AEFG)(BCD)
A¢ C¢/0 B¢/2 A¢/1
P2 = (AFG)(E)(BCD)
B¢ A¢/0 B¢/2 C¢/1
P3 = (AFG)(E)(BCD) Ö
C¢ C¢/2 A¢/1 C¢/0
A¢ B¢ C¢

B.13

B.14

B.15

Soluções dos problemas do Apêndice B 41


B.16

42 Soluções dos problemas do Apêndice B

Vous aimerez peut-être aussi