Logo Passei Direto
Buscar

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Exerc�cios Resolvidos/exerc1.doc
Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv
1	-	A figura representa o diagrama de blocos de um processador simples, de 8 bits (PEPE-8). 
a)	-	Indique se o registrador A tem de ser (i) um latch ou (ii) sensível à borda do relógio ou (iii) se pode ser de qualquer dos tipos. Justifique.
Tem de ser sensível à borda, pois uma operação através da ALU usa o registrador como operando e como destino. Se fosse um latch, quando o relógio estivesse com 1 o registrador ficaria transparente, e o resultado da ALU iria aparecer também na saída do registrador, destruindo o valor do operando original, que por sua vez iria alterar o resultado da ALU, e assim sucessivamente.
b)	-	Explique a função de cada um dos blocos internos do processador.
		Bloco
		Para que serve
		PC
		Indica o endereço (na memória de instruções) da instrução a ser executada
		ROM de decodificação
		Gera os sinais de controle do processador a partir do código de operação da instrução
		NOR
		Indica se o valor do registrador A é zero ou não
		MPX_A
		Seleciona o valor a escrever no registrador A (resultado da ALU ou um valor que sai do multiplexador B)
		MPX_B
		Seleciona o valor que entra no multiplexador B (lado direito) e que pode ser resultado de uma leitura da memória ou uma constante que vem da instrução. Em conjunto com o multiplexador A, permite selecionar as várias hipóteses de valor a armazenar no registrador A.
		Registrador A
		Memoriza os valores produzidos pelas instruções
		ALU
		Efetua operações sobre os dados contidos no registrador A e na memória
c)	-	Suponha que o processador vai executar a instrução descrita pela expressão A ( A + M[2AH] e que, imediatamente antes de o relógio mudar (para executar a instrução), o registrador A contém 14H e todas as células de memória foram previamente inicializadas com o valor 3CH. Anote na tabela seguinte o valor presente em cada um dos sinais do processador nesse instante.
		Sinal
		Nº bits
		Valores possíveis
		Valor do sinal
		Constante
		8
		00H a FFH
		2AH
		nWR
		1
		Escrever, Ler
		Ler
		Saída da memória de dados
		8
		00H a FFH
		3CH
		SEL_A
		1
		Esquerda, Direita
		Esquerda
		SEL_B
		1
		Esquerda, Direita
		Direita
		1º operando
		8
		00H a FFH
		14H
		2º operando
		8
		00H a FFH
		3CH
		SEL_ALU
		2
		Somar, Subtrair, AND, OR
		Somar
		Entrada do registrador A
		8
		00H a FFH
		50H
d)	-	Justifique o valor que indicou para este último sinal.
Resulta da soma de 14H (vem do registrador A) com 3CH (vem da memória). ( 50H
 4+CH=10H (0 e vai 1)
3 + 1+ transporte = 5
A ALU produz este valor, que chega ao registrador A através do multiplexador A
2	-	A figura seguinte representa o diagrama de blocos básico de um processador de 16 bits de dados e de endereços, com endereçamento de byte, que se supõe ligado a uma memória RAM, onde estão armazenados tanto os dados como as instruções do seguinte programa (em que, quando há dois operandos, o primeiro serve também de resultado). Assuma que o programa está localizado a partir do endereço 0000H, e que o PC já foi previamente inicializado com esse valor.
A:	MOV	R2, 48H
B:	MOV	R1, [R2]
C:	ADD	R3, R1		; R3 <- R3 + R1
D:	MOV	[R2], R3
a)	-	Preencha a seguinte tabela (use apenas as linhas necessárias), indicando todos os acessos à memória (em leitura ou escrita) efetuados pelo processador durante a execução do programa. Use o rótulo para identificar a instrução.
		Endereço da memória (hexadecimal)
		Registrador usado para especificar o endereço
		Instrução em que ocorre
		Leitura ou escrita
		Motivo do acesso
		0000H
		PC
		A
		Leitura
		Busca da instrução
		0002H
		PC
		B
		Leitura
		Busca da instrução
		0048H
		R2
		B
		Leitura
		Leitura de dados
		0004H
		PC
		C
		Leitura
		Busca da instrução
		0006H
		PC
		D
		Leitura
		Busca da instrução
		0048H
		R2
		D
		Escrita
		Escrita de dados
		
		
		
		
		
		
		
		
		
		
b)	-	Ao contrário do PEPE-8, este processador não consegue executar instruções em apenas um ciclo de relógio. Por que?
Porque só tem uma interface para a memória, que tem de ser compartilhada pelos dados e pelas instruções, em função do que ele não pode estar lendo a instrução e fazer acessos em dados ao mesmo tempo. Por isso, primeiro tem de ler (buscar) a instrução para o registrador de instrução e só depois é que pode fazer o processamento restante. 
3	-	Considere os números (em decimal) A=+27 e B= −51.
a)	-	Preencha a tabela seguinte com a representação em complemento de 2 dos números indicados, com 8 bits. Justifique no espaço a seguir.
		Número
		Em binário
		Em hexadecimal
		A
		0001 1011
		1BH
		B
		1100 1101
		CDH
		A+B
		1110 1000
		E8H
		A-B
		0100 1110
		4EH
27 = 16 + 11 = 1BH
51 = 48 + 3 = 33H	-51 ( 	33H = 0011 0011 ( 1100 1100 + 1 = 1100 1101 = CDH
27 + (-51) = -24		-24 ( 	24 = 16 + 8 = 18H = 0001 1000 ( 1110 0111 + 1 = 1110 1000 = E8H
27 – (-51) = +78		78 = 64 + 14 = 4EH
b)	-	Dentro da representação em complemento de 2 com 8 bits, qual o maior valor de B (da faixa de valores representáveis) para que A+B não dê estouro (overflow)? Justifique.
Maior valor ( A + X = +127
X = 127 – 27 = 100 = 96 + 4 = 64H
c)	-	Calcule o simétrico, em complemento de 2, de A+B, com 16 bits. Apresente o resultado em hexadecimal e justifique-o.
Com 8 bits:
A+B = E8H	simétrico ( 	E8H = 1110 1000 ( 0001 0111 + 1 = 0001 1000 = 18H
Com 16 bits ( 0018H (sendo positivo, se acrescenta zeros à esquerda)
SEL_PC
Memória de
MPX_B
constante
instruções
SEL_B
>= 1
instruções
endereço de
PC
SEL_ALU
ESCR_A
SEL_A
2º operando
1º operando
resultado da operação
constante
nWR
de dados
opcode
decodificação
ROM de
zero
Memória
ALU
MPX_A
Registrador A
Unidade de Dados
Unidade de Controle
Processador (PEPE-8)
	� PAGE �1�
Exerc�cios Resolvidos/exerc10.doc
Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv
�
		Considere que o PEPE é um processador com um pipeline de 4 estágios (cujos registradores suportam read-after-write, isto é, os registradores são escritos na primeira metade do sinal de relógio e os novos valores podem ser lidos já na segunda metade do mesmo ciclo de relógio). Os estágios são os seguintes:
B (Busca de Instrução)
D (Decodificação e Busca de Operandos)
E (Execução da Instrução)
W (Escrita do Resultado). 
T0
T1
T2
T3
T4
T5
T6
T7
T8
JNZ Y
B
D
E
X:
MOV R1, 12H
B
D
OR R2, R1
B
Y:
ADD R1, R2
B
D
E
W
SHR R2, 2
B
D
E
W
CMP R1, R2
B
D
E
W
		Suponha que o processador executa estas instruções, assumindo-se que o resultado da última operação da ALU deu 23H. Assuma ainda que as instruções de desvio só alteram o PC (em caso de desvio) no estágio E. Cada um dos tempos T0 a T8 tem a duração de um ciclo de relógio. Indique (com a respectiva letra) em que tempo é executado cada estágio de cada instrução.
		
		
Indique que conflitos de dados são visíveis neste programa, traçando um círculo à volta do registrador que tem uma dependência (em conflito) de uma instrução anterior. NOTA – Isto tem de ser válido em qualquer caso e não apenas no caso a).
Suponha que só se pode resolver os conflitos em software. Escreva uma nova versão do programa, sem conflitos (mas mantendo a funcionalidade).
		JNZ Y
X: MOV R1, 12H
NOP
OR R2, R1
NOP
Y: ADD R1, R2
SHR R2, 2
NOP
CMP R1, R2
		Suponha que a cache do PEPE (processador com 16 bits de endereço, endereçamento de byte) é de mapeamento direto, com uma capacidade de 64 palavras (blocos de 1 palavra).
Indique os campos e o respectivo número de bits em que o endereço se divide, do ponto de vista da cache.
Byte (par ou ímpar)
1
Índice
6
Rótulo
9
Na execução de instruções do tipo MOV R1, [R2], o núcleo do PEPE verificou que em uns casos o valor de R1 demorava 2 ns para ser obtido, noutros 10 ns, e que em média demorava 3,6 ns. Qual a taxa de sucesso (hit rate) da cache com este programa?
80
%
		Suponha agora que o PEPE-8 (processador de 8 bits de dados, com 8 bits de endereço) tem uma cache de mapeamento direto com apenas 4 entradas e está inicialmente vazia, sendo realizados depois 5 acessos em leitura, na ordem com que aparecem, cujos dados ficaram nas posições da cache e com os rótulos indicados na tabela. Para cada acesso, indique o respectivo endereço na memória e se foi hit (Sim ou Não).
Endereço acessado
Posição da cache
Hit
(S ou N)
Rótulo
(em binário)
27H
3
N
0010 01
76H
2
N
0111 01
52H
2
N
0101 00
27H
3
S
0010 01
76H
2
N
0111 01
		Imagine um processador com endereçamento de byte, capaz de endereçar um espaço virtual de 00000H até FFFFFH, enquanto o espaço de endereçamento físico vai de 0000H até FFFFH, mas só há RAM de 00000H até 8000H. As páginas virtuais têm uma dimensão de 100H bytes. A TLB é totalmente associativa de 8 entradas e tem atualmente o conteúdo da seguinte tabela (algumas posições estão vazias, isto é, não inicializadas).
Posição da TLB
Bit de validade
Nº página virtual
(hexadecimal)
Nº página física
(hexadecimal)
0
1
A0E
18
1
1
3B
2B
2
0
3
1
213
0E
4
0
5
0
6
1
718
3B
7
0
		Preencha a tabela seguinte para este computador.
Nº bits do espaço virtual
20
Dimensão do espaço físico (em KBytes)
64
Nº páginas do espaço físico
256
Nº de páginas virtuais que podem estar carregadas simultaneamente na RAM
(considerando que toda a RAM está disponível para conter páginas)
128
Nº máximo de páginas virtuais (num determinado instante) cuja tradução virtual/físico pode ser feita sem acessar a tabela de páginas
8
Considere a TLB inicialmente vazia e que o processador efetua acessos aos seguintes endereços virtuais (com os respectivos endereços físicos entre parênteses): A0E2BH (182BH); 3B18H (2B18H); 2133BH (E3BH); 7180EH (3B0EH). Após estes acessos, os bits de validade ficaram como indicados. Acabe de preencher a TLB (apenas com valores relevantes e arbitrando o que achar necessário).
Exerc�cios Resolvidos/exerc11.doc
Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv
�
		Considere o seguinte programa e a respectiva rotina X, que efetua uma operação sobre o parâmetro de entrada (R1) e dá o resultado em R3. Assuma que no início de tudo R0=12H. O que devia acontecer quando a rotina retorna a primeira vez é R0 e R1 terem os valores que tinham quando a rotina foi chamada e R3=70H, mas o programa tem erros e omissões que impedem que isso aconteça. 
Corrija o que achar necessário na tabela da direita, sem usar mais registradores do que os que este programa já usa. Não tem de usar as linhas todas. Indique também o endereço de cada instrução.
Para cada acesso à pilha do programa corrigido, indique o endereço, o tipo (L-leitura, E-escrita) e o valor (no caso de não ter respondido à alínea anterior, use o programa original). Use apenas as linhas correspondentes a uma chamada/retorno.
		PLACE
0
MOV
SP, 2000H
chamaX:
CALL
X
JMP
chamaX
X:
MOV
R0, 10H
ADD
R1, R0
MOV
R3, R1
RFE
Acessos à pilha
Endereço
Tipo
Valor
1FFEH
E
0006H
1FFCH
E
0012H
1FFAH
E
0060H
1FFAH
L
0060H
1FFCH
L
0012H
1FFEH
L
0006H
		Programa corrigido
Endereço
Instrução
PLACE 0
0000H
MOV SP, 2000H
0002H
MOV R1, 60H
0004H
chamaX: CALL X
0006H
JMP chamaX
0008H
X: PUSH R0
000AH
PUSH R1
000CH
MOV R0, 10H
000EH
ADD R1, R0
0010H
MOV R3, R1
0012H
POP R1
0014H
POP R0
0016H
RET
		Considere as duas rotinas de interrupção 0 e 2, e o respectivo programa principal, que faz apenas as inicializações necessárias.
Complete o que achar necessário no programa principal para estas duas interrupções funcionarem corretamente. A área de dados é de 3000H a 3500H.
Sabendo que a interrupção 0 é a mais prioritária, indique (por ordem de execução) quais as 6 primeiras instruções que o processador executa após os dois pinos de interrupção serem ativados simultaneamente.
		
int0:
PUSH
R1
PUSH
R2
EI
MOV
R1, cont
MOV
R2, [R1]
ADD
R2, 1
MOV
[R1], R2
POP
R2
POP
R1
RFE
int2:
ADD
R5, 1
RFE
		Programa principal
PLACE
3000H
tab:
WORD
int0
0
int2
pilha:
TABLE
400H ; por ex.
fim_pilha:
cont:
WORD
0
PLACE
0
MOV
BTE, tab
MOV
SP, fim_pilha
EI0
EI2
EI
fim:
JMP
fim
		1.ª
PUSH R1
4.ª
ADD R5, 1
2.ª
PUSH R2
5.ª
RFE
3.ª
EI
6.ª
MOV R1, cont
		
		Considere uma operação de transferência de dados por um controlador de DMA num computador que tem de atender uma interrupção a cada milissegundo (10-3 s) e em que cada palavra transferida
demora cerca de 1 microssegundo (10-6 s) se for feita pelo controlador de DMA e 8 microssegundos se for feita em software.
		Ordene as seguintes tarefas temporalmente, de 1 (a primeira) a 6 (a última).
Leitura de um dado
4
Interrupção
6
Concessão do bus
3
Programação do controlador
1
Escrita de um dado
5
Pedido do bus
2
		Qual o número máximo (aproximadamente) de palavras que se deve transferir numa só operação de DMA neste computador?
1000
Exerc�cios Resolvidos/exerc12.doc
Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv
1) Considere o seguinte sistema de memória utilizado por um processador com bus de dados de 8 bits e bus de endereços de 16 bits. Preencha a tabela com o dispositivo e os endereços de início e de fim (em hexadecimal) em que esse dispositivo está ativo.
		Dispositivo
		Início
		Fim
		RAM
		0200H
		02FFH
		Per1
		0600H
		061FH
		ROM1
		0C00H
		0DFFH
		ROM2
		0E00H
		0FFFH
�
2) A figura seguinte representa uma unidade de controle microprogamada simples:
a) Faça a legenda da figura, colocando as respectivas letras dos vários módulos no local certo da figura (existem letras em excesso).
		A
		Unidade de Exceções
		
B
		Multiplexador. Permite escolher qual a condição que influencia o próximo valor do MPC.
		C
		Somador com 1
		D
		Multiplexador. 
		E
		Micro Program Counter (MPC)
		F
		ROM de Microprograma
 SHAPE \* MERGEFORMAT ���
		Endereço na ROM
		Operações
		LOAD_ALU_R1
		LOAD_MEM_R1
		LOAD_ALU_R2
		LOAD_MEM_R2
		LOAD_MEM_R3
		LOAD_ALU_R4
		LOAD_MEM_R4
		OP_ALU
		SEL_MICRO_SALTO
		MICRO_SALTO
		0
		Inicializa R2=N e R4=0 (que vem da memória)
		
		
		
		
X
		
		
		
 X
		
		
		
		1
		Se R2 = 0, desvia para o passo 7
		
		
		
		
		
		
		
		
		
 2
		
 7
		2
		Load R1 e R3
		
		X
		
		
		 X
		
		
		
		
		
		3
		Multiplica R1 e R3 e coloca resultado em R1
		
 X
		
		
		
		
		
		
		
 A
		
		
		4
		Adiciona R1 a R4 e coloca resultado em R4
		
		
		
		
		
		
X
		
		
 B
		
		
		5
		Decrementa R2
		
		
		X
		
		
		
		
		 C
		
		
		6
		Se R2 diferente 0, desvia para o passo 2
		
		
		
		
		
		
		
		
		
 3
		
 2
		7
		Desvia para 7
		
		
		
		
		
		
		
		
		
 1
		
 7
3) Considere o seguinte circuito que implementa um filtro digital, da forma F = A*Z-n+B*Zn-1 ...H*Z-1+J*Z0
O circuito é controlado por uma unidade microprogramada.
Os sinais do tipo LOAD_MEM_Rn memorizam no Registrador Rn (em que n=1,2,3,4) os dados provenientes da memória. Os sinais LOAD_ALU_Rn memorizam os dados vindos da ALU (a figura exemplifica apenas os sinais para R1).
Os sinais disponíveis para SEL_MICRO_SALTO são (0, 1, 2=R2_ZERO, 3=R2_NAO_ZERO). 
As opções disponíveis para OP_ALU são (A=MUL_R1_R3, B=ADD_R4_R1, C=DEC_R2, etc.)
�
MICRO_SALTO
SEL_MICRO_SALTO
	B
C
D
E
F
S3
A9
S7
S1
Per1
ROM2
ROM1
RAM
Decodi-ficador
1-8
A10
A11
CS
A0-A7
CS
S6
CS
CS
A0-A4
A0-A8
A0-A8
b) Se uma determinada RAM tiver 32 KB, quantos bits de endereço necessita: __15 bits_____
c) Se tiver uma ROM de 8 bits de dados e 21 bits de endereço, qual a sua capacidade: __2MBytes___
a)
b) Sabendo que a ROM de microprograma tem 14 microinstruções, que gera 14 sinais de controle de 1 bit cada e que SEL_MICRO_SALTO tem 2 bits, qual a largura mínima de cada palavra da ROM: _20 bits_
LOAD_ALU_R1
LOAD_MEM_R1
R3
memória
R2
R1
OP_ALU
R4
ALU
Exerc�cios Resolvidos/exerc13.doc
Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv
�
		Considere que o PEPE é um processador com um pipeline de 4 estágios (cujos registradores suportam read-after-write, isto é, os registradores são escritos na primeira metade do sinal de relógio e os novos valores podem ser lidos já na segunda metade do mesmo ciclo de relógio). Os estágios são os seguintes:
B (Busca de Instrução)
D (Decodificação e Busca de Operandos)
E (Execução da Instrução)
W (Escrita do Resultado). 
T0
T1
T2
T3
T4
T5
T6
T7
MOV R2, 21AH
B
D
E
W
MOV R1, [R2]
B
D
E
W
MUL R1, R2
B
D
E
W
OR R2, R0
B
D
E
W
		Suponha que o processador execute estas instruções, começando com o pipeline vazio. Cada um dos tempos T0 a T7 tem a duração de um ciclo de relógio. Indique (com a respectiva letra) em que tempo é executado cada estágio de cada instrução.
Indique que conflitos de dados são visíveis neste programa, traçando setas entre os estágios em que os valores são produzidos e aquele em que são lidos (em conflito).
Suponha que só se pode resolver os conflitos em software. Escreva uma nova versão do programa, sem conflitos (mas mantendo a funcionalidade)
MOV R2, 21AH
NOP
MOV R1, [R2]
NOP
MUL R1, R2
OR R2, R0
		Suponha que a cache do PEPE (processador com 16 bits de endereço, endereçamento de byte) é de mapeamento direto, com uma capacidade de 16 palavras (blocos de 1 palavra).
Preencha esta tabela para esta cache.
Nº bits do rótulo 
11
Nº bits do índice
4
Se o tempo de acesso com sucesso (hit) for de 1 ns e com insucesso (miss) de 10 ns e a taxa de sucesso (hit rate) for de 90%, qual o tempo médio (em ns) de
um acesso à memória visto pelo núcleo do PEPE?
1,9 ns
		Suponha agora que o PEPE-8 (processador de 8 bits de dados, com 8 bits de endereço) tem uma cache de mapeamento direto com apenas 4 entradas e está inicialmente vazia, sendo realizados os acessos em leitura aos endereços indicados na tabela e na ordem com que aparecem. Para cada acesso, indique a posição (0 a 3) da cache que é usada, se foi hit (sim ou não) e qual o valor do rótulo com que essa posição fica após esse acesso.
Endereço acessado
Posição da cache
Hit
(S ou N)
Rótulo
(em binário)
71H
1
N
011100
52H
2
N
010100
71H
1
S
011100
26H
2
N
001001
52H
2
N
010100
		Imagine um processador com endereçamento de byte, capaz de endereçar um espaço virtual de 00000H até FFFFFH, enquanto o espaço de endereçamento físico vai de 0000H até FFFFH, mas só há RAM de 0000H até 4000H. As páginas físicas têm uma dimensão de 100H bytes. A TLB é totalmente associativa de 8 entradas e tem atualmente o conteúdo da seguinte tabela (algumas posições estão vazias, isto é, não inicializadas).
Posição da TLB
Nº página virtual
(hexadecimal)
Nº página física
(hexadecimal)
0
- - -
- - -
1
- - -
- - -
2
280
3D
3
- - -
- - -
4
4E7
28
5
- - -
- - -
6
B34
1B
7
A08
0B
		Preencha a tabela seguinte para este computador e para este conteúdo da TLB.
Nº bits do espaço virtual
20
Nº bits do espaço físico
16
Nº páginas virtuais
4 K
Nº máximo de páginas virtuais que podem estar carregadas simultaneamente na RAM
(considerando que toda a RAM está disponível para conter páginas)
40
Nº de páginas virtuais cuja tradução virtual/físico não precisa acessar a tabela de páginas
4
O processador acessou o endereço físico B34H. Qual o endereço virtual que lhe corresponde?
A0834H
Exerc�cios Resolvidos/exerc14.doc
Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv
�
		Considere a seguinte figura, que representa duas portas tri-state cuja saída fica ativa quando o sinal de controle está com 1. Assinale com um X, para cada combinação dos valores de A, B, C e D, a respectiva situação da saída.
		
Saída
A
B
C
D
0
1
Conflito
Alta impedância
1
1
1
1
X
1
0
1
0
X
0
1
1
0
X
1
0
1
1
X
		Imagine uma RAM simples, com 2048 palavras, uma largura de 16 bits e um sinal WR (escreve) que fica ativo em 0. Indique:
o nº de bits que cada sinal na RAM deve ter
os respectivos valores (em hexadecimal) se quiser memorizar o valor 31DH na última posição da RAM.
a capacidade da RAM em bits:
2048 x 16
		
Entrada
Endereço
WR
Nº de bits
16
11
1
Valor
31DH
7FFH
0
		Nesta figura (PEPE de 8 bits), cada registrador é formado por 8 flip-flops D ativos na borda de subida do relógio. A instrução OR 34H
(A ( A OR 34H) está no endereço 2EH da memória de instruções e os sinais de controle que produz preparam todos os valores para serem memorizados nos registradores quando o sinal de relógio passar de 0 para 1 (o que executa a instrução OR). A instrução anterior foi LD 5AH (A ( 5AH) e a que se segue ao OR 34H é LD 31H. Preencha a tabela seguinte, com os valores (em hexadecimal) dos sinais referenciados com os números, antes e depois de o relógio mudar de 0 para 1. Coloque X se um dado valor não puder ser determinado.
Relógio
1
2
3
4
5
6
7
0
7EH
5AH
34H
7EH
X
34H
2EH
1
X
7EH
31H
31H
X
31H
2FH
		
		Complete o programa do lado direito, preenchendo os retângulos com os valores corretos. 
Registrador – registrador onde a instrução dessa linha armazena o resultado
Valor – valor desse registrador após a execução da instrução
		Instrução
Registrador e valor
MOV
R1,
1246H
R1
1246H
MOV
R0
2C4H
R0
2C4H
ADD
R1,
6
R1
124CH
SHR
R0
3
R0
58H
		Considere o seguinte programa. Inicialmente, temos R0=1234H e R1=4321H. Preencha a tabela com os valores de cada registrador e flags (bits de estado – ativo = 1, inativo = 0) após a execução da instrução
		Instruções
R0
R1
Z
N
	CMP	R0, R1
1234H
4321H
0
1
	JNN	fim
1234H
4321H
0
1
	SWAP	R0, R1
4321H
1234H
0
1
fim:	JMP	fim
4321H
1234H
0
1
;CMP: Faz R0–R1 e afeta as flags (mas R0 não)
;SWAP: troca registradores, JNN: desvia se não negativo
		
_1235312273.vsd
�
1�
A
C
Saída
B
D
_1235210622.vsd
RAM
Entrada
Endereço
WR
Saída
Exerc�cios Resolvidos/exerc2.doc
1-		Uma interface serial assíncrona usa caracteres de 8 bits com bit de paridade e dois stop bits. Foi transmitido um caractere tendo a linha serial de transmissão evoluído de acordo com a seguinte figura (lembre-se que se transmite primeiro o bit menos significativo):
a)	-	Qual é, em hexadecimal, o caractere transmitido? Justifique.
O caractere transmitido é o 47H.
A seguir ao start bit (o primeiro LOW), a seqüência de bits é 11100010 que, tendo em conta que o bit menos significativo é transmitido em primeiro lugar, deve ser interpretada como 0100 0111b
b)	-	Está sendo utilizada paridade par ou ímpar? Justifique.
Está sendo usada paridade ímpar.
O bit de paridade está em HIGH. O número total de bits de dados e do de paridade tem 5 bits em HIGH. Assim, a paridade é ímpar.
c)	-	Supondo que se utiliza uma velocidade de transmissão de 19 200 bit/s, qual a taxa máxima de transmissão de caracteres (em caractere/s)?
Cada caractere, para ser transmitido, necessita dos seus 8 bits, do start bit, do bit de paridade e de dois stop bits, num total de 12 bits.
Se se consegue transmitir 19 200 bit/s, consegue-se, portanto, transmitir
19 200/12 = 1600 caractere/s.
�
2-		Considere um sistema com a estrutura indicada a seguir:
�
O processador PEPE está ligado, além da memória, a um conversor analógico-digital que monitora uma grandeza física e a uma interface de comunicação serial assíncrona (UART).
O conversor está ligado à interrupção
INT0 do PEPE e provoca interrupções periodicamente. O processador deve então ler o valor fornecido pelo conversor (um número de 16 bits) e armazená-lo numa tabela. A rotina de tratamento da interrupção tem um tempo de execução de 200 µs.
Quando a tabela referida no parágrafo anterior atinge 50 valores, o processador envia a tabela armazenada, através da interface de comunicação serial. Esta está ligada à interrupção INT1 do processador, indicando cada interrupção, que foi enviado um byte e que o byte seguinte pode ser enviado. Entretanto continua a receber-se dados do conversor. A rotina de tratamento da interrupção tem, para cada byte, o tempo de execução de 50 µs.
a)	-	Qual o tempo máximo de espera que a interrupção da interface de comunicação serial tem de esperar para ser atendida? Justifique.
A interrupção do conversor tem mais prioridade (é a INT0 que tem mais prioridade que a INT1) que a da UART e não pode ser interrompida.
A pior situação ocorre quando uma instrução do programa começa o seu ciclo e, imediatamente a seguir, surgem as duas interrupções. Terá de se esperar o fim da instrução em execução para, após isso, iniciar a rotina de atendimento referente ao conversor. Só quando essa rotina terminar é que se poderá iniciar a da UART.
O tempo é, portanto, 200µs acrescido do tempo de execução da instrução que estava sendo executada.
O tempo máximo de espera é, portanto, T = 200 µs + tempo de execução da instrução mais lenta do PEPE.
NOTA: Aceita-se como resposta certa T = 200 µs.
�
O programa que executa no sistema anterior tem a estrutura indicada:
		Nos de linha
		Instruções
		1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
			PLACE	0
início:	MOV SP, TOPO
	MOV BTE, INTERR
	EI0
	EI1
	EI
... 	;corpo do programa
	PLACE 1000h
INTADC: 	;rotina de atendimento da 	;interrupção do conversor
	RFE
INTCOMSER:;rotina de atendimento da 	;interrupção da interface serial
	RFE
	PLACE 4000h
INTERR: 	WORD INTADC
INTERR1: 	WORD INTCOMSER
	PLACE 5000h
PILHA:	TABLE 100h
TOPO:	WORD	0
b)	-	Qual a função das instruções das linhas 3 a 6?
A instrução da linha 6 define o local onde fica localizada a base da tabela de exceções.
As instruções das linhas 4 e 5 habilitam as interrupções INT0 e INT1, respectivamente.
A instrução da linha 6 coloca 1 no bit IE, permitindo que o processador atenda interrupções.
c)	-	Complete as linhas que faltam a partir da linha 15 de forma a que o sistema de interrupções possa funcionar. Responda diretamente na listagem.
Faltava definir a tabela de exceções.
A instrução da linha 15 é opcional e o valor de localização na memória pode ser outro qualquer possível.
3-	Considere o seguinte programa em linguagem assembly do PEPE. 
		Nos de linha
		Endereços
		Instruções
		1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
		
0000H
0004H
0006H
0008H
000AH
000CH
000EH
0010H
0012H
0014H
0016H
0018H
001AH
001CH
001EH
0020H
0022H
0024H
0026H
0028H
002AH
			PLACE	0
início:	MOV SP, 100H
	MOV R1, A1
	MOV R2, B1
	PUSH R1
	CALL xpto
	POP R1
Parte2:	CALL sub32 ;rotina a 	;desenvolver na alínea d)
Stop:	JMP Stop
xpto:	MOV R0,[R1+2]
	MOV R3,[R2+2]
	ADD R0, R3
	MOV R1, [R1]
	MOV R3, [R2]
	ADDC R1, R3
	MOV [R2+2], R0
	MOV [R2], R1
	RET
A1:	WORD	10h
A0:	WORD	2000h
B1:	WORD	2h
B0:	WORD	0f000h
Preencha as tabelas seguintes com os valores hexadecimais que ficam, após a execução do programa até o rótulo Parte2, na pilha e no SP, R0, R1, R2 e R3, tendo atenção aos valores antes de o programa começar. Nota: “XXXX” significa “valor indeterminado”. 
		
		Valor antes do programa
		Valor após o programa
		SP
		0000H
		0100h
		R0
		0100H
		1000h
		R1
		0200H
		0024h
		R2
		0300H
		0028h
		R3
		0400H
		0002h
Pilha:
		Endereço
		Valor antes do programa
		Valor após o programa
		0F8H
		XXXX
		XXXX
		0FAH
		XXXX
		XXXX
		0FCH
		XXXX
		0CH
		0FEH
		XXXX
		24H
		100H
		XXXX
		XXXX
Quais os valores que terão as posições de memória B1 e B0 antes da execução da linha 8? Justifique.
[B1] = 13h
[B0] = 1000h
O par B1:B0 vai conter o resultado da soma do par A1:A0 com o valor anterior do par B1:B0, isto é, 00102000h e 0002f000h. O resultado dessa soma é 00131000h.
Analise o funcionamento da rotina xpto. Complete o respectivo cabeçalho.
;* --------------------------------------------------------------------------------------
;* Nome: SOMA32
;* Descrição: Soma dois números de 32 bits cujas referências são passadas nos registradores R1 e R2.
;* Parâmetros de entrada: R1 : endereço da Word mais significativa do 1º operando; R2: endereço da Word mais significativa do 2º operando.
;* Resultado: Resultado colocado nas posições de memória que continham o 2º operando.
;* Registradores destruídos: R0, R1 e R3
;* --------------------------------------------------------------------------------------
Pretende-se que seja construída agora a rotina SUB32, de forma a respeitar o especificado no seguinte cabeçalho.
 
Escreva o seu código (em Assembly do PEPE) na tabela seguinte. Provavelmente não será necessário usar todo o espaço dado.
		Rótulo
		Instrução
		Comentário
		Sub32:
		PUSH R0
		;Guardam os
		
		PUSH R2
		;registradores que vão
		
		PUSH R3
		;ser alterados
		
		MOV R0, [R1+2]
		;Obtém a parte menos sign. do 1º operando
		
		MOV R3, [R2+2]
		;Obtém a parte menos sign. do 2º operando
		
		SUB R0, R3
		;A parte menos sign. do resultado fica em R0
		
		MOV R3, [R1}
		;Obtém a parte mais sign. do 1º operando
		
		MOV R2, [R2]
		;Obtém a parte mais sign. do 2º operando
		
		SUBB R3, R2
		;Subtrai com o Borrow para considerar o 
		
		
		;transporte da primeira parte; Parte mais
		
		
		;sign. fica em R3
		
		MOV [R1+2], R0
		;Guarda a parte menos sign. do resultado
		
		MOV [R1], R3
		;E a mais significativa, também
		
		POP R3
		;Repõem os
		
		POP R2
		;registradores que foram
		
		POP R0
		;afetados
		
		RET
		;e retorna
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
�
 Mini-manual do PEPE:
		Instrução de assembly
		Descrição
		ADD
		R1, R2
		R1 ( R1 + R2
		ADD
		R1, constante
		R1 ( R1 + constante (entre -8 e +7)
		ADDC
		R1, R2
		R1 ( R1 + R2 + C (se C=1, soma mais 1)
		SUB
		R1, R2
		R1 ( R1 - R2
		SUBB
		R1, R2
		R1 ( R1 - R2 - C (se C=1, subtrai mais 1)
		AND
		R1, R2
		R1 ( R1 and R2 (bit a bit) 
		OR
		R1, R2
		R1 ( R1 or R2 (bit a bit)
		SHL
		R1, n
		Desloca R1 de n bits para a esquerda
		SHR
		R1, n
		Desloca R1 de n bits para a direita
		CMP
		R1, R2
		Ativa flag Z se R1 = R2
		CMP
		R1, constante
		Ativa flag Z se R1 = constante (entre -8 e +7)
		BIT
		R1, n
		Ativa flag Z se o bit n de R1 = 0 (n entre 0 e 15)
MOV
		R1, R2
		R1 ( R2
		MOV
		R1, constante
		R1 ( constante (qualquer valor de 16 bits)
		MOV
		R1, [R2]
		R1 ( M[R2]
		MOV
		[R1], R2
		M[R1]( R2
		MOV
		R1, [R2+k]
		R1 ( M[R2+k] (k par entre -16 e + 14)
		MOV
		[R1+k], R2
		M[R1+k]( R2 (k par entre -16 e + 14)
		JZ
		rótulo
		Desvia para o rótulo se a flag Z estiver ativa
		JNZ
		rótulo
		Desvia para o rótulo se a flag Z não estiver ativa
		JMP
		rótulo
		Desvia para o rótulo
		CALL
		rótulo
		Chama a rotina no endereço indicado pelo rótulo
		RET
		
		Retorna da rotina
		RFE
		
		Retorna da rotina de interrupção
		PUSH
		R1
		Decrementa o SP e guarda o registrador R1 no topo da pilha
		POP
		R1
		Lê o valor do topo da pilha, coloca-o em R1 e incrementa SP
INT1
INT0
Comunicação
Conversor
nWR
nRD
Dados
PEPE
Memória
Digital
Analógico-
;* --------------------------------------------------------------------------------------
;* Nome: SUB32
;* Descrição: Subtrai 2 números de 32 bit (1º operando – 2º operando)
;*		cujas referência são passadas nos registradores R1 e R2.
;* Entradas: 	R1 - Endereço do 1º operando; R2 – Endereço do 2º 
;*		operando.: 
;* Saídas: 	(*R1) – resultado guardado na posição de memória que 
;*			continha o 1º operando (apontado por R1)
;* Destrói: nada
;* Notas: --
;* ---------------------------------------------------------------------------------------
Interface de
Endereços
Serial
	� PAGE �1� de 8
	� PAGE �7� de 8
Exerc�cios Resolvidos/exerc3.doc
Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv
1	-	Considere o seguinte circuito, que representa apenas uma parte do circuito de decodificação de endereços de um computador com base no PEPE (processador de 16 bits com endereçamento de byte). Cada uma das RAMs (par e ímpar) tem 1K células de 8 bits. Os bits do barramento de endereços que se ligam ao decodificador devem ser os menos significativos possível e permitem que o sinal S0 esteja ativo durante a faixa de endereços necessária para acessar todas as células das RAMs. Os detalhes da seleção de RAM par ou ímpar estão omitidos por não serem relevantes para este problema.
a)	-	Indique quais os bits do barramento de endereços que devem se ligar ao decodificador nestas condições. Justifique.
A12 e A11. 
Cada RAM precisa de 10 bits para selecionar uma das suas 1K células. O A0 é usado para distinguir entre RAM par e ímpar (no acesso de byte, com MOVB). Logo, o conjunto das duas RAMs, que tem 2K bytes no total (par + ímpar), precisa dos A10 a A0 para selecionar todas as células.
Ligando o A12 e A11 no decodificador, que são os seguintes ao A10, garante-se que cada saída fique ativa em 2 K endereços.
b)	-	Se o processador acessar o endereço 1234H, qual o sinal de saída do decodificador que fica ativo? Justifique.
400H são 1K e 1000H são 4 K. 
1234H é algo entre 4 K e 5 K. A saída S0 fica ativa entre 0 e 2K-1, S1 entre 2K e 4K-1, e S2 entre 4K e 6K-1.
Logo, a saída ativa é S2.
2	-	Considere o seguinte circuito, que implementa um voltímetro digital (medidor de tensão de 0 a 15 volts, em que o resultado é apresentado como um número binário de 4 bits). O voltímetro funciona por aproximações sucessivas, comparando a tensão de entrada com um resultado parcial cada vez mais perto do valor final. Começa comparando com metade da escala (1000), depois com 1100 ou 0100 (conforme o resultado da comparação) e assim sucessivamente para refinar o resultado. 
	
O circuito é controlado por uma unidade microprogramada, em que:
LOAD_R1 e LOAD_R2 memorizam valores em R1 e R2 (registradores de 4 bits);
INIT_R1 inicializa R1 com 0 e SHR_R2 desloca R2 de um bit para a direita;
NÃO_ZERO e MAIOR são entradas para a unidade de controle e estão descritas no desenho;
O sinal PRONTO indica quando a medição estiver pronta (quando R2=0);
O multiplexador MUX1 seleciona a entrada de baixo se o valor na saída do multiplexador MUX2 for 1.
a)	-	Identifique cada um dos blocos A e B nesta figura.
		Bloco
		O que é, para que serve
		A
		MPC, registrador que mantém o endereço da microinstrução corrente na ROM de microcódigo
		B
		Somador de 1 unidade, destinado a incrementar o MPC para endereçar a microinstrução seguinte
b)	-	Preencha a tabela seguinte com as microinstruções necessárias para implementar a funcionalidade da divisão inteira. Use “SIM” para indicar os sinais que devem estar ativos em cada ciclo de relógio, e deixe em branco as células dos sinais não ativos ou não relevantes. Em SEL_MICRO_SALTO, identifique a entrada do multiplexador a selecionar (quando relevante).
		Endereço na ROM
		Operações
		LOAD_R1
		INIT_R1
		LOAD_R2
		SHR_R2
		PRONTO
		SEL_MICRO_
SALTO
		MICRO_SALTO
		0
		Inicializa R1 (com 0) e R2 (com 1000, em binário)
		
		Sim
		Sim
		
		
		
		
		1
		Se MAIOR = 1, desvia para o passo 3
		
		
		
		
		
		MAIOR
		3
		2
		Memoriza em R1 a sua entrada (R1 + R2)
		Sim
		
		
		
		
		
		
		3
		Desloca R2 para a direita
		
		
		
		Sim
		
		
		
		4
		Se R2 for diferente de 0, desvia para o passo 1
		
		
		
		
		
		NÃO_ZERO
		1
		5
		Ativa PRONTO (acabou)
		
		
		
		
		Sim
		
		
c)	-	Quantos bits deve ter cada palavra da ROM? Justifique.
10 bits. Todos os sinais gerados têm 1 bit, exceto SEL_MICRO_SALTO que tem 2 e MICRO_SALTO, que tem 3 (há 6 microinstruções).
3	-	Suponha que o PEPE (processador de 16 bits com endereçamento de byte) inclui uma cache de dados de mapeamento direto com blocos de 4 palavras e uma capacidade de 1K bytes (só a parte dos dados propriamente ditos), onde V=1 se a linha tiver um valor válido e M=1 se alguma das palavras dessa linha tiver sido modificada.
		V
		M
		Rótulo
		Palavras
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		. . .
		
		
		
		
		
		
		
		
		
		
		
		
		
		
a)	-	Quantas linhas tem a cache? Justifique.
Cada bloco tem 4 palavras ou 8 bytes. Com uma capacidade de 1K bytes, a cache tem 128 blocos (1K / 8), ou 128 linhas.
b)	-	Suponha que a cache esteja vazia quando o processador fizer um acesso de 16 bits em leitura ao endereço 18C4H. Indique o nº da linha da cache que é alterada e, na linha abaixo, o conteúdo que fica nessa linha (no caso das palavras, escreva o endereço de cada palavra em vez do seu valor, só para se perceber que palavra fica escrita lá). Indique todos os valores em binário ou hexadecimal.
		18H
	Nº da linha alterada, em hexadecimal
		V
		M
		Rótulo
		Palavras (endereço maior do lado direito)
		1
		0
		000110
		18C0H
		18C2H
		18C4H
		18C6H
4	-	Suponha que o PEPE, com os seus 16 bits de endereço e endereçamento de byte, suporte memória virtual com páginas de 256 bytes. Assuma que a memória física é de 4 Kbytes e que a TLB é uma cache totalmente associativa de 4 entradas, cujo conteúdo é em determinado momento o seguinte:
Válida
		Página alterada
		Nº de página virtual
		Nº de página física
		1
		1
		24H
		03H
		0
		0
		7CH
		03H
		1
		0
		63H
		0FH
		0
		0
		E8H
		08H
a)	-	Preencha a tabela seguinte (valores em decimal ou hexadecimal):
		
		Valor
		Breve justificativa
		Dimensão do espaço virtual
		64 K bytes
		16 bits de endereço
		nº de páginas virtuais
		256
		64K / 256 (dimensão de cada página)
		nº de páginas físicas
		16
		4K / 256
b)	-	Acabe de preencher as correspondências da seguinte tabela:
		Endereço virtual
		Endereço físico
		63CEH
		0FCEH
		24A6H
		03A6H
		241EH
		031EH
		630EH
		0F0E H
c)	-	Suponha agora que o processador faça uma leitura ao endereço virtual 23E8H. Indique na tabela da questão 4 as alterações que terão de ocorrer na TLB (risque e escreva os novos valores, arbitrando o que for necessário) para que o acesso seja efetuado e justifique sucintamente essas alterações na caixa abaixo.
		Válida
		Página alterada
		Nº de página virtual
		Nº de página física
		1
		1
		24H
		03H
		1
		0
		23H
		05H
		1
		0
		63H
		0FH
		0
		0
		E8H
		08H
A página virtual 23H não está carregada na TLB, em função do que no acesso dá TLB miss. Usando uma das entradas livres, tem de se carregar na TLB a correspondência entre a página virtual 23H e a página física onde está carregada em memória principal (05H, no exemplo), assumindo que esta já está carregada em memória principal (senão dá page-fault e isto tem de ser resolvido primeiro).
Decodifi-cador
	� PAGE �1�
_1210826676.vsd
Descodificador
RAM par
1k x 8
CS
S0
S1
S2
S3
A?
A?
_1211281141.vsd
32
SEL_MICRO_SALTO
MUX1
MUX 2
A
ROM
B
MICRO_SALTO
2
1
NÃO_ZERO
MAIOR
R1
MAIOR
(1 se X >= Y)
NÃO_ZERO
(1 se R2 > 0)
0
+
INIT_R1
SHR_R2
PRONTO
R2
LOAD_R1
INIT_R1
LOAD_R1
LOAD_R2
LOAD_R2
SHR_R2
Comparador
Valor digital medido
Tensão a medir 
(0 a 15 volts)
X
Y
1000
Exerc�cios Resolvidos/exerc4.doc
Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv
�
Imagine um latch que memoriza o valor quando o sinal de controle C=0. Se no meio tempo em que C=1 a entrada D mudar de 0 para 1, a saída Q:
Muda de 0 para 1
Mantém o valor anterior
Muda de 1 para 0
Fica com um valor indeterminado
Uma das vantagens da representação em complemento de 2 é:
Para calcular o valor simétrico basta negar todos os bits 
Os números simétricos diferem apenas no bit mais significativo
A diferença A-B pode ser calculada pela soma de A com o simétrico de B
Para calcular o valor simétrico basta negar o bit mais significativo
�Derivar 1101 a partir do número -3 significa (usando 4 bits):
Calcular o valor do complemento de 2 desse número
Representar o simétrico desse número em complemento de 2
Representar esse número em complemento de 2
Representar esse número em binário sem sinal
O endereço de uma ROM é:
O número de palavras da ROM
O índice de uma palavra dentro da ROM
O número de bits de uma palavra da ROM
O valor de uma palavra da ROM
�
		5
		Quantos sinais de seleção (de um bit cada um) deve ter um multiplexador de 8 entradas?
		 3
		6
		Quantos flip-flops D são necessários para construir um registrador capaz de memorizar 32 valores diferentes (um de cada vez)?
		 5
		7
		Quantos bits são necessários no mínimo para representar o número decimal 30 em complemento de 2?
		 6
		8
		Represente o número F1A5H em binário
		 1111 0001 1010 0101 b
		9
		Represente o número -51 em complemento de 2, com 8 bits
		 1100 1101
		10
		Calcule em binário (com 8 bits) a soma dos dois números (representados em complemento de 2 com 8 bits) 1010 1101 e 0111 0101
		 0010 0010 
Exerc�cios Resolvidos/exerc5.doc
Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv
Considere o seguinte circuito, em que tanto o latch D (transparente quando C=1) como o flip-flop D (ativo na borda de subida de C) têm a saída negada. Assumindo que as entradas do circuito D, C e X variam de acordo com o indicado na figura, indique a evolução temporal correspondente dos sinais K, L e M.
		2
		Quais os números mínimo e máximo (em decimal) representáveis em binário, complemento de 2, com 10 bits?
		-512 a +511
		3
		Represente o número AF18H em binário
		1010 1111 0001 1000
		4
		Determine o valor em decimal do número 93H (considerado em complemento de 2 com 8 bits)
		-109
		5
		Calcule em binário (com 8 bits) a soma dos dois números (representados em complemento de 2 com 8 bits) 0110 1011 e 1011 0111
		0010 0010
Latch
Flip-flop
Multiplexa-
dor
_1241869395.vsd
X
X
D
C
K
Q
Q
Báscula
K
L
Multiplexer
00
01
10
11
Trinco
X
Y
0
Q
Q
D
D
C
C
D
C
M
L
M
Exerc�cios Resolvidos/exerc6.doc
Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv
		Imagine uma RAM simples (um só circuito integrado), com uma capacidade de 32 Kbits e uma largura de 16 bits. Indique:
		Nº de células da RAM
2 K
Nº de bits do endereço da RAM
11
Capacidade em bytes da RAM
4 K
Endereço da RAM (em hexadecimal) da célula que inicia a segunda metade da RAM
400H
�
		A figura representa, de forma muito simplificada, o circuito de dados do PEPE (com 16 registradores, R0 a R15, de 16 bits). Os sinais A, B e C indicam, respectivamente, qual o registrador que numa determinada instrução serve como 1º operando, como 2º operando e como resultado. Há instruções em que o 2º operando é uma constante. Z e N são os bits de estado, ativos em 1.
		Indique o número de bits que cada um dos seguintes sinais deve ter.
Nº de bits
A
4
B
4
C
4
1º operando
16
Resultado
16
Z
1
N
1
		Dado o seguinte programa e a respectiva situação inicial, indique para cada instrução os valores dos respectivos sinais e registradores no final da execução da instrução. Use X para indicar um valor que não é relevante para uma determinada instrução e aspas (“) quando um valor se mantiver desde a instrução anterior.
R1
R2
R3
A
B
C
1º oper.
Const.
Result.
Z
N
instrução anterior
1000H
FFEDH
7AH
1
0
MOV R1, 13H
0013H
“
“
1
X
1
X
0013H
0013H
“
“
ADD R1, R2
0000H
“
“
1
2
1
0013H
X
0000H
1
0
SHR R2, 3
“
1FFDH
“
2
X
2
FFEDH
3
1FFDH
0
0
CMP R3, R2
“
“
“
3
2
X
007AH
X
E08DH
0
1
		Considere o seguinte programa do PEPE, que conta o número de vezes que um número pode ser somado a si próprio antes de dar estouro (overflow). Indique o valor final dos registradores R0 e R1.
R0
4
R1
E340H
		
MOV
R1, 71AH
MOV
R0, -1
X:
ADD
R0, 1
ADD
R1, R1
JNV
X
fim:
JMP
fim
Banco de
registradores
Multiple-
xador
_1235210622.vsd
RAM
Entrada
Endereço
WR
Saída
_1241094663.vsd
Banco de registos
ALU
A
B
C
resultado
1º operando
Z
N
Multi-plexer
constante
Exerc�cios Resolvidos/exerc7.doc
		Considere o seguinte programa, destinado a ser executado no simulador do PEPE. Ao executar, este programa faz alguns acessos à memória (além das buscas de instruções, que são ignoradas). A tabela indica em que endereço o primeiro acesso é feito (uma escrita).
PLACE
0000H
0000H
MOV
SP, 
1800H
0002H
MOV
R1, 231FH
0004H
CALL
X
0006H
fim:
JMP
fim
0008H
X:
MOV
R2, 1234H
000AH
CALL
Y
000CH
RET
000EH
Y:
MOV
[R2], R1
0010H
RET
		Preencha os espaços no programa (os do lado esquerdo são os endereços em que as instruções ficam).
Acabe de preencher a tabela com os acessos à memória realizados pelo programa, indicando em que endereço o acesso é feito, se é leitura (L) ou escrita (E) e o respectivo valor (lido ou escrito).
Endereço
L ou E
Valor
17FEH
E
0006H
17FCH
E
000CH
1234H
E
231FH
17FCH
L
000CH
17FEH
L
0006H
		Ao analisar um programa de assembly, o assemblador do PEPE produz uma tabela interna com os símbolos (constantes simbólicas) e respectivos valores. Considere o seguinte programa e simule um assemblador, preenchendo os valores (em hexadecimal) dos símbolos usados.
		
PLACE
1000H
X:
WORD
2000H
Y
EQU
1000H
W:
STRING
“abcdef”
Z:
WORD
1006H
PLACE
0
A:
MOV
SP, 1000H
MOV
R1, 1000H
B:
SUB
R1, 2
C:
JNZ
B
fim:
JMP
fim
		
Símbolo
Valor (hexadecimal)
X
1000H
Y
1000H
W
1002H
Z
1008H
A
0000H
B
0004H
C
0006H
fim
0008H
		Considere o seguinte programa. Indique qual o valor dos registradores quando o programa termina.
		
PLACE
1000H
X:
WORD
2BBFH
Y:
WORD
2B4FH
WORD
54AFH
WORD
27AFH
PLACE
0
A:
MOV
SP, 2000H
MOV
R1, X
B:
MOV
R2, 2
CALL
AAA
fim:
JMP
fim
AAA:
SHL
R2, 1
MOV
R3, [R1+R2]
RET
		
R1
1000H
R2
0004H
R3
54AFH
SP
2000H
Exerc�cios Resolvidos/exerc8.doc
Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv
�
		Considere o seguinte programa e a respectiva rotina X, que soma o valor do parâmetro (R1) ao valor da célula de memória K e coloca o resultado de novo em K. Esta rotina mantém o valor de todos os registradores (com exceção de RE) entre a sua chamada e o seu retorno. 
Programe a rotina X no espaço do lado direito (ensaie primeiro no verso da folha).
Por cada acesso à memória efetuado pelo programa (incluindo a rotina X, mas ignorando a busca das instruções), indique o endereço, o tipo (L-leitura, E-escrita) e o valor, na ordem em que eles são feitos. Para referenciar um valor não conhecido de um registrador, use a sua sigla (R1, por exemplo).
		PLACE
0
MOV
SP, 2000H
MOV
R1, 13H
CALL
X
fim:
JMP
fim
K:
WORD
12H
X:
. . .
Acessos à memória
Endereço
Tipo
Valor
1FFEH
E
0006H
1FFCH
E
R2
1FFAH
E
R3
0008H
L
0012H
0008H
E
0025H
1FFAH
L
R3
1FFCH
L
R2
1FFEH
L
0006H
		Rotina X
X:
PUSH R2
PUSH R3
MOV R2, K
MOV R3, [R2]
ADD R3, R1
MOV [R2], R3
POP R3
POP R2
RET
		Considere a rotina de interrupção 2 e o respectivo programa principal, que faz apenas as inicializações necessárias.
A rotina de interrupção 2 incrementa (de uma unidade) o valor da posição de memória “conta” (deixando lá o novo valor). Programe essa rotina de interrupção, usando os registradores que quiser.
Complete o que considerar necessário no programa principal para que a interrupção 2 possa funcionar corretamente.
		Rotina de interrupção int2
int2:
PUSH
R1
PUSH
R2
MOV
R1, conta
MOV
R2, [R1]
ADD
R2, 1
MOV
[R1], R2
POP
R2
POP
R1
RFE
		Programa principal
PLACE
0
início:
MOV
SP, fim_pilha
MOV
BTE, tab
EI2
EI
fim:
JMP
fim
pilha:
TABLE
100H
fim_pilha:
conta:
WORD
0
tab:
WORD
0
WORD
0
WORD
int2
		Considere um computador com um controlador de DMA que funciona em modo de bloco (dados transferidos numa só operação de DMA), em que cada palavra (2 bytes) demora cerca de 100 nanossegundos para ser transferida. NOTA
– mili = 10-3; micro=10-6; nano=10-9. Este computador está fazendo digitalização de voz, com uma interrupção (para ler o valor do sinal de áudio) a cada 100 microssegundos. Os valores lidos (um valor é uma palavra) são guardados numa tabela em memória e escritos no disco numa operação de DMA quando a tabela enche. Qual o tamanho máximo (aproximadamente) em palavras que esta tabela deve ter?
1000
Exerc�cios Resolvidos/exerc9.doc
Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv
Considere um sistema com um processador com bus de dados de 8 bits e bus de endereços de 16 bits cujo mapa de endereços é apresentado na seguinte tabela. 
Preencha o campo “Capacidade” em bytes de cada dispositivo. Indique quais os “Bits de endereços” que é necessário ligar a cada dispositivo (por exemplo, A0-A5)
Sabendo que tem um decodificador de 1-8, indique quais os bits de endereços que deve se ligar às entradas de controle do decodificador _______A15-A13_______________
Preencha a coluna “Saídas do decodificador” com o número da saída do decodificador que se liga ao chip select de cada dispositivo.
		Dispositivo
		Início
		Fim
		Capacidade
		Bits de
endereços
		Saídas do decodificador
		RAM1
		0000H
		0FFFH
		4kBytes
		A0-A11
		S0
		RAM2
		2000H
		3FFFH
		16kBytes
		A0-A13
		S1
		Periférico
		5000H
		5008H
		9Bytes
		A0-A3
		S2
		ROM
		9000H
		92FFH
		768Bytes
		A0-A9
		S4
2) A figura seguinte representa uma parte simplificada do Núcleo do Processador.
a) Faça a legenda da figura, colocando as respectivas letras dos vários módulos ou sinais de controle no local certo da figura (existem letras em excesso).
		A
		ALU
		
B
		Sel_Const: sinal de controle para o Gerador de Constantes.
		C
		Banco de Registradores
		D
		Multiplexador
		E
		Micro Program Counter (MPC)
		F
		Gerador de Constantes
 SHAPE \* MERGEFORMAT ���
		Endereço na ROM
		Operações
		LOAD_ALU_R1
		LOAD_MEM_R1
		LOAD_ALU_R2
		LOAD_MEM_R2
		OP_ALU
		SEL_MICRO_SALTO
		MICRO_SALTO
		0
		Inicializa R1 com N, que vem da memória.
		
		 
 X
		
		
		
		
		
		1
		Move R1 para R2
		
		
		 X
		
		 B
		
		
		2
		Decrementa R2
		
		
		 X
		
		 C
		
		
		3
		Se R2 = 1, desvia para o passo 6
		
		
		
		
		
		 
 3
		
 6
		4
		Multiplica R1 e R2 e coloca resultado em R1
		 
 X
		
		
		
		 
 A
		
		
		5
		Desvia para 2
		
		
		
		
		
		 1
		 2
		6
		Desvia para 6
		
		
		
		
		
		 1
		 6
3) Considere o seguinte circuito que implementa o fatorial de um número, F(n)= (n)(n-1) ... (1)
O circuito é controlado por uma unidade microprogramada.
Os sinais do tipo LOAD_MEM_Rn memorizam no Registrador Rn (em que n=1,2,3,4) os dados provenientes da memória. Os sinais LOAD_ALU_Rn memorizam os dados vindos da ALU (a figura exemplifica apenas os sinais para R1)
Os sinais disponíveis para SEL_MICRO_SALTO são (0, 1, 2=R2_ZERO, 3=R2_UM, 4=R2_NAO_ZERO). 
As opções disponíveis para OP_ALU são (A=MUL_R1_R2, B=PASS_R1, C=DEC_R2, etc.)
�
 F
D
C
A
b) Sabendo que tem a possibilidade de gerar 8 tipos diferentes de constantes, quantos bits tem de ter Sel_Const (referido na tabela acima): _____3______
LOAD_ALU_R1
LOAD_MEM_R1
memória
R2
R1
OP_ALU
PASS_R1 = Operação da ALU que permite colocar na saída da ALU o valor de R1 sem ser modificado.
ALU
B
Exerc�cios Resolvidos/exerc�cios-1.doc
Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv
		Considere o seguinte programa e a respectiva rotina X, que soma o valor do parâmetro (R1) ao valor da célula de memória K e coloca o resultado de novo em K. Esta rotina mantém o valor de todos os registradores (com exceção de RE) entre a sua chamada e o seu retorno. 
Programe a rotina X no espaço do lado direito (rascunhe primeiro no verso da folha).
Para cada acesso à memória efetuado pelo programa (incluindo a rotina X, mas ignorando a busca das instruções), indique o endereço, o tipo (L-leitura, E-escrita) e o valor, na ordem em que eles são feitos. Para referenciar um valor não conhecido de um registrador, use a sua sigla (R1, por exemplo).
		PLACE
0
MOV
SP, 2000H
MOV
R1, 13H
CALL
X
fim:
JMP
fim
K:
WORD
12H
X:
. . .
Acessos à memória
Endereço
Tipo
Valor
1FFEH
E
0006H
1FFCH
E
R2
1FFAH
E
R3
0008H
L
0012H
0008H
E
0025H
1FFAH
L
R3
1FFCH
L
R2
1FFEH
L
0006H
		Rotina X
X:
PUSH R2
PUSH R3
MOV R2, K
MOV R3, [R2]
ADD R3, R1
MOV [R2], R3
POP R3
POP R2
RET
		Considere a rotina de interrupção 2 e o respectivo programa principal, que faz apenas as inicializações necessárias.
A rotina de interrupção 2 incrementa (de uma unidade) o valor da posição de memória “conta” (deixando lá o novo valor). Programe essa rotina de interrupção, usando os registradores que achar necessário.
Complete o que for necessário no programa principal para que a interrupção 2 possa funcionar corretamente.
		Rotina de interrupção int2
int2:
PUSH
R1
PUSH
R2
MOV
R1, conta
MOV
R2, [R1]
ADD
R2, 1
MOV
[R1], R2
POP
R2
POP
R1
RFE
Programa principal
PLACE
0
início:
MOV
SP, fim_pilha
MOV
BTE, tab
EI2
EI
fim:
JMP
fim
pilha:
TABLE
100H
fim_pilha:
conta:
WORD
0
tab:
WORD
0
WORD
0
WORD
int2
		Considere um computador com um controlador de DMA que funciona em modo de bloco (dados transferidos numa só operação de DMA), em que cada palavra (2 bytes) demora cerca de 100 nanossegundos para ser transferida. NOTA – mili = 10-3; micro=10-6; nano=10-9. Este computador está fazendo digitalização de voz, com uma interrupção (para ler o valor do sinal de áudio) a cada 100 microssegundos. Os valores lidos (um valor é uma palavra) são guardados numa tabela em memória e escritos no disco numa operação de DMA quando a tabela enche. Qual é o tamanho máximo (aproximadamente) em palavras que esta tabela deve ter?
1000
Exerc�cios Resolvidos/exerc�cios-10.doc
Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv
Considere o seguinte programa. Assume-se que há hardware ligado aos pinos do processador de modo a poder gerar interrupções (pinos de interrupção sensíveis à borda de subida).
		Coloque os endereços (em hexadecimal) em que cada dado ou instrução ficará localizada. 
Preencha o que falta no programa para este funcionar corretamente com as duas interrupções.
Assumindo que o processador (i) gasta 1 ms (milissegundo) com cada instrução executada e (ii) que todo o resto é instantâneo, indique:
Tempo máximo desde que o pino da interrupção 0 é ativado até esta interrupção começar a ser atendida (assumindo que o pino da interrupção 1 nunca é ativado)
1
ms
Idem, mas assumindo que o pino da interrupção 1 pode ser ativado
5
ms
Suponha que o pino da interrupção 0 é ativado no meio da execução da instrução no endereço X, ocasião em que R1 tem o valor 8. Indique a seqüência de seis instruções (e respectivos endereços) que são executadas a seguir.
Endereços
Instruções
0014H
SUB
R1, 1
0018H
SUB
R1, R1
001AH
RFE
0016H
RET
0010H
JNZ
deNovo
000EH
CALL
X
0014H
SUB
R1, 1
		
Endereços
PLACE 
100H
0100H
TAB_EXC:
WORD
Y
0102H
WORD
Z
PLACE
0
0000H
Inicio:
MOV
SP, 100H
0002H
MOV
BTE, TAB_EXC
0004H
EI0
0006H
EI1
0008H
EI
000AH
começa:
MOV
R2, 10
000CH
MOV
R1, 1000
000EH
deNovo:
CALL
X
0010H
JNZ
deNovo
0012H
JMP
começa
; rotina X
0014H
X:
SUB
R1, 1
0016H
RET
; rotina da interrupção 0
0018H
Y:
SUB
R1, R1
001AH
RFE
; rotina da interrupção 1
001CH
Z:
PUSH
R2
001EH
MOV
R2, 30
0020H
SUB
R1, R2
0022H
POP
R2
0024H
RFE
Imagine que se quer enviar dados por um barramento serial assíncrono, em que cada bit enviado, de dados ou de protocolo, gasta 1 ms (milissegundo). O protocolo usa bit de paridade e dois stop bits. Indique o tempo mínimo que tem de decorrer entre o emissor começar a enviar um byte até poder começar a enviar o próximo.
		12
		ms
Suponha que se está implementando um sistema de transferência de dados por DMA num computador que tem de atender uma interrupção muito freqüente e periódica, com um tempo máximo de resposta (desde a geração do pedido de interrupção até o início de atendimento) de 1 ms. Cada palavra transferida por DMA demora 0,1 microssegundos. Quantas palavras (aproximadamente) se pode transferir por DMA em regime de bloco (transferência de uma só vez) neste computador?
		10 000
		palavras
O disco do seu computador deu defeito e você comprou um novo. O antigo era de 5400 rotações por minuto e o novo é de 7200. Você achou que a máquina parece agora mais rápida e decidiu executar um benchmark que gasta cerca de 40% do seu tempo em acessos ao disco. Assumindo (para simplificar) que o tempo de acesso ao disco é inversamente proporcional à sua velocidade de rotação, o novo disco roda cerca de 1,3333 vezes mais rápido e terá um tempo de acesso de cerca de 0,75 do tempo do antigo. Nestas condições, estime qual a percentagem do tempo de execução deste benchmark agora em relação à versão com o disco antigo.
		90
		%
Exerc�cios Resolvidos/exerc�cios-11.doc
Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv
1) Considere o seguinte sistema de memória utilizado por um processador com bus de dados de 8 bits e bus de endereços de 16 bits. Preencha a tabela com o tamanho e os endereços de início e de fim (em hexadecimal) em que esse dispositivo está ativo. A coluna de endereços contém os bits de endereços que estão ligados ao respectivo dispositivo.
		Dispositivo
		Endereços
		Início
		Fim
		Tamanho
		ROM
		A0-A12
		0000H
		1FFFH
		8KBytes
		PER1
		A0-A3
		2000H
		200FH
		16Bytes
		RAM1
		A0-A7
		8000H
		80FFH
		256Bytes
		RAM2
		A0-A7
		C000H
		C0FFH
		256Bytes
�
b) Se, em vez de um decodificador, se utilizar uma PROM para realizar a decodificação de endereços, e sabendo que se tem um NOVO Periférico2, que é o seu dispositivo com menor endereçamento (ocupa apenas uma palavra da PROM), indique qual o Fim da faixa de endereços do Periférico2, sabendo que os bits de endereço ligados à PROM são A7-A15 e o primeiro endereço do Periférico é 0800H. Fim=______087FH_______
2) A figura seguinte representa uma parte simplificada do Núcleo do Processador. Faça a legenda da figura, preenchendo a seguinte tabela, e indique o que é e para que serve cada um dos blocos.
		
		O Que é e Para que Serve
		
A
		BANCO de REGISTRADORES, contém os registradores principais, que servem para armazenar os operandos e os resultados das instruções.
		
B
		ALU, responsável por realizar as operações aritméticas.
		
C
		MULTIPLEXADOR, seleciona a origem do sinal, uma constante ou um registrador.
		
D
		GERADOR DE CONSTANTES, permite gerar diversos tipos de constantes.
 SHAPE \* MERGEFORMAT ���
		Endereço na ROM
		Operações
		LOAD_MEM_R1
		LOAD_ALU_R1
		LOAD_MEM_R2
		LOAD_ALU_R2
		LOAD_MEM_R3
		LOAD_ALU_R3
		OP_ALU
		SEL_MICRO_SALTO
MICRO_SALTO
		0
		Inicializa R1 com N, e R3 com zero que vem da memória.
		
X
		
		
		
		
X
		
		
		
		
		1
		Inicializa R2 com a[R1], que vem da memória.
		
		
		
X
		
		
		
		
		
		
		2
		Adiciona R3 e R2 e coloca resultado em R3
		
		
		
		
		
		
X
		
A
		
		
		3
		Decrementa R1
		
		X
		
		
		
		
		C
		
		
		4
		Se R1 < 0, desvia para o passo 6
		
		
		
		
		
		
		
		
3
		
6
		5
		Desvia para 1
		
		
		
		
		
		
		
		1
		1
		6
		Desvia para 6
		
		
		
		
		
		
		
		1
		6
3) Considere o seguinte circuito que implementa o Somatório de um vetor de números que estão originalmente em memória. F(n)= a[0]+a[1] +…+a[n-1]+a[n]
O circuito é controlado por uma unidade microprogramada.
Os sinais do tipo LOAD_MEM_Rn memorizam no Registrador Rn (em que n=1,2,3,4) os dados provenientes da memória. Os sinais LOAD_ALU_Rn memorizam os dados vindos da ALU (a figura exemplifica apenas os sinais para R1)
Os sinais disponíveis para SEL_MICRO_SALTO são (0, 1, 2=R1_ZERO, 3=R1_NEGATIVO, 4=R1_NAO_ZERO). 
As opções disponíveis para OP_ALU são (A=ADD_R3_R2, B=MUL_R1_R2, C=DEC_R1, etc.)
�
LOAD_ALU_R1
LOAD_MEM_R1
R3
memória
S1
A13
S6
S0
Per1
RAM2
RAM1
ROM
Decodi-ficador
1-8
A14
A15
CS
R2
CS
S4
CS
CS
R1
OP_ALU
ALU
a)
D
C
A
B
Exerc�cios Resolvidos/exerc�cios-12.doc
Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv
		Considere que o PEPE é um processador com um pipeline de 4 estágios (cujos registradores suportam read-after-write, isto é, os registradores são escritos na primeira metade do sinal de relógio e os novos valores podem ser lidos na segunda metade do mesmo ciclo de relógio). Os estágios são os seguintes:
B (Busca de Instrução)
D (Decodificação e Busca de Operandos)
E (Execução da Instrução)
W (Escrita do Resultado). 
T0
T1
T2
T3
T4
T5
T6
T7
T8
X:
AND R2, R1
B
D
E
W
B
D
E
MOV R1, R2
B
D
E
W
B
D
SUB R1, 05H
B
D
E
W
B
JZ X
B
D
E
ADD R2, R1
B
D
OR R1, R2
B
		Suponha que o processador executa estas instruções, assumindo-se que inicialmente R1=15H e R2=2FH. Assuma ainda que as instruções de desvio alteram o PC (em caso de desvio) na execução do estágio E. Cada um dos tempos T0 a T8 tem a duração de um ciclo de relógio. Indique (com a respectiva letra) em que tempo é executado cada estágio de cada instrução.
X: 	AND R2, R1
	MOV R1, R2
	ADD R2, R1
			NOP
	OR R1, R2
		Suponha que a cache do PEPE (processador com 16 bits de endereço, endereçamento de byte) é de mapeamento direto, com uma capacidade de 128 palavras (blocos de 8 palavras).
Indique o número de bits de cada um dos campos em que o endereço se divide para acesso à cache.
Rótulo
8
Índice
4
Palavra dentro do bloco
3
Byte dentro da palavra
1
Na execução de instruções do tipo MOV R1, [R2], o núcleo do PEPE verificou que a taxa de sucesso (hit rate) foi de 90%. Um hit demora 5 ns, enquanto que um miss demora, no total, 30 ns para obter o valor. Qual é o tempo médio de acesso à memória?
7,5
ns
		Suponha agora que o PEPE-8 (processador de 8 bits de dados, com 8 bits de endereço) tem uma cache de mapeamento direto com 8 entradas e que está inicialmente vazia, sendo feitos os acessos em leitura aos endereços indicados na tabela e na ordem com que aparecem. Para cada acesso, indique a posição (0 a 7) da cache que é usada, se foi hit (sim ou não) e qual o valor do rótulo com que essa posição fica após esse acesso.
Endereço acessado
Posição da cache
Hit
(S ou N)
Rótulo
(em binário)
5AH
2
N
01011
34H
4
N
00110
12H
2
N
00010
34H
4
S
00110
5AH
2
N
01011
34H
4
S
00110
		Imagine um processador com endereçamento de byte, capaz de endereçar um espaço virtual de 000000H até FFFFFFH, enquanto o espaço de endereçamento físico vai de 0000H até FFFFH. As páginas físicas têm uma dimensão de 100H bytes. A TLB é totalmente associativa de 8 entradas.
Posição da TLB
Bit de validade
Nº página virtual
(hexadecimal)
Nº página física
(hexadecimal)
0
1
C5E
18
1
0
3B
2B
2
0
C5E
6F
3
1
213
0E
4
0
45
23
5
1
3B
45
6
1
23
3B
7
1
45
2B
 
		
Após alguns acessos, a TLB ficou como indicada.
Preencha a tabela seguinte para este exemplo concreto.
Dimensão do espaço físico (em Bytes)
64 K
Dimensão do espaço virtual (em Bytes)
16 M
Nº páginas do espaço físico
256
Nº atual (neste instante) de páginas virtuais cuja tradução virtual/físico pode ser feita sem acessar a tabela de páginas
5
Endereço físico que corresponde ao endereço virtual 3B45H
4545H
Endereço virtual que corresponde ao endereço físico 453BH
3B3BH
Exerc�cios Resolvidos/exerc�cios-2.doc
Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv
Considere um sistema com um processador com bus de dados de 8 bits e bus de endereços
de 16 bits cujo mapa de endereços é apresentado na seguinte tabela. 
Preencha o campo “Capacidade” em bytes de cada dispositivo. Indique quais os “Bits de endereços” que precisam ser ligados a cada dispositivo (por exemplo, A0-A5)
Sabendo que ele tem um decodificador de 1-8, indique quais os bits de endereços que devem ser ligados às entradas de controle do decodificador _______A15-A13_______________
Preencha a coluna “Saídas do decodificador” com o número da saída do decodificador que se liga ao chip select de cada dispositivo.
		Dispositivo
		Início
		Fim
		Capacidade
		Bits de
endereços
		Saídas do decodificador
		RAM1
		0000H
		0FFFH
		4kBytes
		A0-A11
		S0
		RAM2
		2000H
		3FFFH
		16kBytes
		A0-A13
		S1
		Periférico
		5000H
		5008H
		9Bytes
		A0-A3
		S2
		ROM
		9000H
		92FFH
		768Bytes
		A0-A9
		S4
2) A figura seguinte representa uma parte simplificada do Núcleo do Processador.
a) Faça a legenda da figura, colocando as respectivas letras dos vários módulos ou sinais de controle no local certo da figura (existem letras em excesso).
		A
		ALU
		
B
		Sel_Const: sinal de controle para o Gerador de Constantes
		C
		Banco de Registradores
		D
		Multiplexador
		E
		Micro Program Counter (MPC)
		F
		Gerador de Constantes
 SHAPE \* MERGEFORMAT ���
		Endereço na ROM
		Operações
		LOAD_ALU_R1
		LOAD_MEM_R1
		LOAD_ALU_R2
		LOAD_MEM_R2
		OP_ALU
		SEL_MICRO_SALTO
		MICRO_SALTO
		0
		Inicializa R1 com N, que vem da memória.
		
		 
 X
		
		
		
		
		
		1
		Move R1 para R2
		
		
		 X
		
		 B
		
		
		2
		Decrementa R2
		
		
		 X
		
		 C
		
		
		3
		Se R2 = 1, desvia para o passo 6
		
		
		
		
		
		 
 3
		
 6
		4
		Multiplica R1 e R2 e coloca resultado em R1
		 
 X
		
		
		
		 
 A
		
		
		5
		Desvia para 2
		
		
		
		
		
		 1
		 2
		6
		Desvia para 6
		
		
		
		
		
		 1
		 6
3) Considere o seguinte circuito que implementa o fatorial de um número, F(n)= (n)(n-1) ... (1)
O circuito é controlado por uma unidade microprogramada.
Os sinais do tipo LOAD_MEM_Rn memorizam no Registrador Rn (em que n=1,2,3,4) os dados provenientes da memória. Os sinais LOAD_ALU_Rn memorizam os dados vindos da ALU (a figura exemplifica apenas os sinais para R1)
Os sinais disponíveis para SEL_MICRO_SALTO são (0, 1, 2=R2_ZERO, 3=R2_UM, 4=R2_NAO_ZERO). 
As opções disponíveis para OP_ALU são (A=MUL_R1_R2, B=PASS_R1, C=DEC_R2, etc.)
�
 F
D
C
A
b) Sabendo que há a possibilidade de gerar 8 tipos diferentes de constantes, quantos bits Sel_Const (referido na tabela acima) tem de ter? _____3______
LOAD_ALU_R1
LOAD_MEM_R1
memória
R2
R1
OP_ALU
PASS_R1 = Operação da ALU que permite colocar na saída da ALU o valor de R1 sem ser modificado.
ALU
B
Exerc�cios Resolvidos/exerc�cios-3.doc
Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv
		Considere que o PEPE é um processador com um pipeline de 4 estágios (cujos registradores suportam read-after-write, isto é, os registradores são escritos na primeira metade do sinal de relógio e os novos valores podem ser lidos na segunda metade do mesmo ciclo de relógio). Os estágios são os seguintes:
B (Busca de Instrução)
D (Decodificação e Busca de Operandos)
E (Execução da Instrução)
W (Escrita do Resultado). 
T0
T1
T2
T3
T4
T5
T6
T7
T8
JNZ Y
B
D
E
X:
MOV R1, 12H
B
D
OR R2, R1
B
Y:
ADD R1, R2
B
D
E
W
SHR R2, 2
B
D
E
W
CMP R1, R2
B
D
E
W
		Suponha que o processador executa estas instruções, assumindo-se que o resultado da última operação da ALU deu 23H. Assuma ainda que as instruções de desvio só alteram o PC (em caso de desvio) no estágio E. Cada um dos tempos T0 a T8 tem a duração de um ciclo de relógio. Indique (com a respectiva letra) em que tempo é executado cada estágio de cada instrução.
		
		
Indique que conflitos de dados são visíveis neste programa, traçando um círculo à volta do registrador que tem uma dependência (em conflito) de uma instrução anterior. NOTA – Isto tem de ser válido em qualquer caso e não apenas no caso a).
Suponha que só se pode resolver os conflitos em software. Escreva uma nova versão do programa, sem conflitos (mas mantendo a funcionalidade).
		JNZ Y
X: MOV R1, 12H
NOP
OR R2, R1
NOP
Y: ADD R1, R2
SHR R2, 2
NOP
CMP R1, R2
		Suponha que a cache do PEPE (processador com 16 bits de endereço, endereçamento de byte) é de mapeamento direto, com uma capacidade de 64 palavras (blocos de 1 palavra).
Indique os campos e o respectivo número de bits em que o endereço se divide, do ponto de vista da cache.
Byte (par ou ímpar)
1
Índice
6
Rótulo
9
Na execução de instruções do tipo MOV R1, [R2], o núcleo do PEPE verificou que nuns casos o valor de R1 demorava 2 ns para ser obtido, noutros 10 ns, e que em média demorava 3,6 ns. Qual é a taxa de sucesso (hit rate) da cache com este programa?
80
%
		Suponha agora que o PEPE-8 (processador de 8 bits de dados, com 8 bits de endereço) tem uma cache de mapeamento direto com apenas 4 entradas que está inicialmente vazia, sendo feitos depois 5 acessos em leitura, na ordem com que aparecem, cujos dados ficaram nas posições da cache e com os rótulos indicados na tabela. Para cada acesso, indique o respectivo endereço na memória e se foi hit (Sim ou Não).
Endereço acessado
Posição da cache
Hit
(S ou N)
Rótulo
(em binário)
27H
3
N
0010 01
76H
2
N
0111 01
52H
2
N
0101 00
27H
3
S
0010 01
76H
2
N
0111 01
		Imagine um processador com endereçamento de byte, capaz de
endereçar um espaço virtual de 00000H até FFFFFH, enquanto o espaço de endereçamento físico vai de 0000H até FFFFH, mas só há RAM de 00000H até 8000H. As páginas virtuais têm uma dimensão de 100H bytes. A TLB é totalmente associativa de 8 entradas e tem atualmente o conteúdo da seguinte tabela (algumas posições estão vazias, isto é, não inicializadas).
Posição da TLB
Bit de validade
Nº página virtual
(hexadecimal)
Nº página física
(hexadecimal)
0
1
A0E
18
1
1
3B
2B
2
0
3
1
213
0E
4
0
5
0
6
1
718
3B
7
0
		Preencha a seguinte tabela para este computador.
Nº bits do espaço virtual
20
Dimensão do espaço físico (em KBytes)
64
Nº páginas do espaço físico
256
Nº de páginas virtuais que podem estar carregadas simultaneamente na RAM
(considerando que toda a RAM está disponível para conter páginas)
128
Nº máximo de páginas virtuais (num determinado instante) cuja tradução virtual/físico pode ser feita sem acessar a tabela de páginas
8
Considere a TLB inicialmente vazia e que o processador efetua acessos aos seguintes endereços virtuais (com os respectivos endereços físicos entre parênteses): A0E2BH (182BH); 3B18H (2B18H); 2133BH (E3BH); 7180EH (3B0EH). Após estes acessos, os bits de validade ficaram como indicados. Acabe de preencher a TLB (apenas com valores relevantes e arbitrando o que achar necessário).
Exerc�cios Resolvidos/exerc�cios-4.doc
Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv
Considere o seguinte circuito, em que tanto o latch D (transparente quando C=1) como o flip-flop D (sensível à borda de subida de C) têm a saída negada. Assumindo que as entradas do circuito D, C e X variam de acordo com o indicado na figura, indique a evolução temporal correspondente dos sinais K, L e M.
		2
		Quais são os números, mínimo e máximo (em decimal), representáveis em binário, complemento de 2, com 10 bits?
		-512 a +511
		3
		Represente o número AF18H em binário
		1010 1111 0001 1000
		4
		Determine o valor em decimal do número 93H (considerado em complemento de 2 com 8 bits)
		-109
		5
		Calcule em binário (com 8 bits) a soma dos dois números (representados em complemento de 2 com 8 bits) 0110 1011 e 1011 0111
		0010 0010
Latch
Flip-flop
Multiplexador
_1241869395.vsd
X
X
D
C
K
Q
Q
Báscula
K
L
Multiplexer
00
01
10
11
Trinco
X
Y
0
Q
Q
D
D
C
C
D
C
M
L
M
Exerc�cios Resolvidos/exerc�cios-5.doc
Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv
		Imagine uma RAM simples (um só circuito integrado), com uma capacidade de 32 Kbits e uma largura de 16 bits. Indique:
		Nº de células da RAM
2 K
Nº de bits do endereço da RAM
11
Capacidade em bytes da RAM
4 K
Endereço da RAM (em hexadecimal) da célula que inicia a segunda metade da RAM
400H
�
		A figura representa, de forma muito simplificada, o circuito de dados do PEPE (com 16 registradores, R0 a R15, de 16 bits). Os sinais A, B e C indicam, respectivamente, qual o registrador que numa determinada instrução serve como 1º operando, como 2º operando e como resultado. Há instruções em que o 2º operando é uma constante. Z e N são os bits de estado, ativos em 1.
		Indique o número de bits que cada um dos seguintes sinais deve ter.
Nº de bits
A
4
B
4
C
4
1º operando
16
Resultado
16
Z
1
N
1
		Dado o seguinte programa e a respectiva situação inicial, indique, para cada instrução, os valores dos respectivos sinais e registradores no final da execução da instrução. Use X para indicar um valor que não é relevante para uma determinada instrução e aspas (“) quando um valor se mantiver desde a instrução anterior.
R1
R2
R3
A
B
C
1º oper.
Const.
Result.
Z
N
instrução anterior
1000H
FFEDH
7AH
1
0
MOV R1, 13H
0013H
“
“
1
X
1
X
0013H
0013H
“
“
ADD R1, R2
0000H
“
“
1
2
1
0013H
X
0000H
1
0
SHR R2, 3
“
1FFDH
“
2
X
2
FFEDH
3
1FFDH
0
0
CMP R3, R2
“
“
“
3
2
X
007AH
X
E08DH
0
1
		Considere o seguinte programa do PEPE, que conta o número de vezes que um número pode ser somado a si próprio antes de dar estouro (overflow). Indique o valor final dos registradores R0 e R1.
R0
4
R1
E340H
		
MOV
R1, 71AH
MOV
R0, -1
X:
ADD
R0, 1
ADD
R1, R1
JNV
X
fim:
JMP
fim
Multi-
plexador
Banco de
registradores
_1235210622.vsd
RAM
Entrada
Endereço
WR
Saída
_1241094663.vsd
Banco de registos
ALU
A
B
C
resultado
1º operando
Z
N
Multi-plexer
constante
Exerc�cios Resolvidos/exerc�cios-6.doc
Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv
Considere o circuito da figura, em que o latch fica transparente quando o seu sinal de controle está com 1 e o flip-flop reage na borda de subida do seu relógio. D é a entrada de dados. Assumindo a evolução temporal dos sinais que já está assinalada, desenhe o resto da evolução dos sinais X, Y, W e Z. Sugestão: desenhe primeiro completamente os sinais X e Y.
Represente o número hexadecimal A5FBH em binário.
		1010 0101 1111 1011
 Considere o número decimal 3489. 
Converta-o para hexadecimal com 16 bits, usando a notação de complemento de 2:
		
		0
		D
		A
		1
		H
Idem, para o seu simétrico (-3489): 
		F
		2
		5
		F
		H
Repita a alínea b, mas agora com 32 bits:
		F
		F
		F
		F
		F
		2
		5
		F
		H
Qual é o número mínimo de bits necessário para representar corretamente estes números em notação de complemento de 2?
		13
		
 Considere os números decimais 65 e 82. Converta-os para binário e faça a sua soma em binário (tudo com 8 bits e em notação de complemento de 2). Indique ainda se houve estouro.
		0
		1
		0
		0
		0
		0
		0
		1
		
		65
		0
		1
		0
		1
		0
		0
		1
		0
		
		82
		1
		0
		0
		1
		0
		0
		1
		1
		
		65 + 82
		Estouro (Sim ou Não)
		Sim
		
Flip-flop
� EMBED Visio.Drawing.11 ���
Latch
_1277532740.vsd
X
D
C
Y
Q
Q
Báscula
X
Y
Exerc�cios Resolvidos/exerc�cios-7.doc
		Considere o seguinte programa a ser executado no simulador do PEPE. Ao executar, este programa faz alguns acessos à memória (além das buscas de instruções, que são ignoradas). A tabela indica em que endereço o primeiro acesso é feito (uma escrita).
PLACE
0000H
0000H
MOV
SP, 
1800H
0002H
MOV
R1, 231FH
0004H
CALL
X
0006H
fim:
JMP
fim
0008H
X:
MOV
R2, 1234H
000AH
CALL
Y
000CH
RET
000EH
Y:
MOV
[R2], R1
0010H
RET
		Preencha os espaços no programa (os do lado esquerdo são os endereços onde estão as instruções).
Acabe de preencher a tabela com os acessos à memória feitos pelo programa, indicando em que endereço o acesso é feito, se é leitura (L) ou escrita (E) e o respectivo valor (lido ou escrito).
Endereço
L ou E
Valor
17FEH
E
0006H
17FCH
E
000CH
1234H
E
231FH
17FCH
L
000CH
17FEH
L
0006H
		Ao analisar um programa em assembly, o assembler do PEPE produz uma tabela interna com os símbolos (constantes simbólicas) e respectivos valores. Considere o seguinte programa e simule um assembler, preenchendo os valores (em hexadecimal) dos símbolos usados.
		
PLACE
1000H
X:
WORD
2000H
Y
EQU
1000H
W:
STRING
“abcdef”
Z:
WORD
1006H
PLACE
0
A:
MOV
SP, 1000H
MOV
R1, 1000H
B:
SUB
R1, 2
C:
JNZ
B
fim:
JMP
fim
		
Símbolo
Valor (hexadecimal)
X
1000H
Y
1000H
W
1002H
Z
1008H
A
0000H
B
0004H
C
0006H
fim
0008H
		Considere o seguinte programa. Indique qual é o valor dos registradores quando o programa termina.
		
PLACE
1000H
X:
WORD
2BBFH
Y:
WORD
2B4FH
WORD
54AFH
WORD
27AFH
PLACE
0
A:
MOV
SP, 2000H
MOV
R1, X
B:
MOV
R2, 2
CALL
AAA
fim:
JMP
fim
AAA:
SHL
R2, 1
MOV
R3, [R1+R2]
RET
		
R1
1000H
R2
0004H
R3
54AFH
SP
2000H
Exerc�cios Resolvidos/exerc�cios-8.doc
Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv
		2º Teste de Arquitetura de Computadores
		IST - Taguspark
		2º Semestre 2007/2008
		Duração: 25 minutos
		4 Julho 2008
	
		Nome
		
		Número
		
		
		
		
		
		
		
		
		
 (3 + 3 pontos) A figura representa uma versão simplificada do PEPE-8 (processador de 8 bits) ligado às memórias. A ALU sabe executar 4 operações.
Suponha que a memória de dados tem uma capacidade de 128 bytes e a de código 256 instruções. Preencha a tabela.
		Nº de bits de endereço que se ligam à memória de dados
		7
		Nº de bits de cada célula da memória de dados
		8
		Nº de bits de endereço que se ligam à memória de instruções
		8
		Nº de bits de cada célula da memória de instruções
		12
Suponha que todas as células de memória de dados contêm o valor 27H e o reg. A tem 2EH. Preencha a tabela com os valores existentes em cada ponto imediatamente antes da transição de relógio que executa a instrução. Use X se um determinado valor for desconhecido.
		Assembly (PEPE-8)
		RTL
		Endereço de dados
		Entrada reg. A
		Saída reg. A
		ST [4BH]
		M[4BH] ( A
		4BH
		X
		2EH
		LD [1FH]
		A ( M[1FH]
		1FH
		27H
		2EH
(1 + 4 pontos) O circuito ao lado representa de forma simplificada o PEPE (16 bits).
Indique quantos bits tem o bus F: 	16	 bits
Supondo que o PEPE executa as instruções seguintes, em que a primeira está no endereço 0020H da RAM, indique todos os endereços em que a memória é acessada e o tipo de acesso (leitura/escrita). Use apenas as colunas que precisar.
		MOV	R1, 5CH
		
		Nº do acesso
		1
		2
		3
		4
		5
		6
		
		
		MOV	 [R1], R1
		
		Endereço
		20H
		22H
		5CH
		24H
		
		
		
		
		ADD	R1, 3
		
		Leitura/Escrita
		Leitura
		Leitura
		Escrita
		Leitura
		
		
		
		
(5 pontos) Considere o programa no PEPE (16 bits) e as seguintes questões (SHL Ri, n = desloca n bits à esquerda).
		
		MOV	R1, 1
		
		Quantas vezes o programa passa por “prox”?
		
		3
		
		
		MOV	R2, 3
		
		Qual é o valor final de R1?
		
		8
		H
		prox:
		SHL	R1, 1
		
		Qual é o valor final de R2?
		
		0
		H
		
		SUB	R2, 1
		
		Qual é a função matemática R1 final = f (valor inicial do R2)?
		
		
		
		JNZ	prox
		
		Potência de 2 (R1 = 2R2)
		fim:
		JMP	fim
		
		
		
		
		
		
		
		
		
 (4 pontos) Indique os valores (em hexadecimal) dos registradores após a execução de cada instrução (instruções executadas em seqüência).
		
		R1
		R2
		R3
		Valores iniciais
		3154H
		2468H
		2A52H
		OR	R1, R2
		357CH
		2468H
		2A52H
		ADD	R2, R3
		357CH
		4EBAH
		2A52H
Registrador A
Exerc�cios Resolvidos/exerc�cios-9.doc
Sdfvfvfvfvsdfvsdfvfvfrvfrvrfvrvervrvv
1) Dado o seguinte programa, e sabendo que inicialmente os registradores tem os seguintes valores, indique o valor dos registradores no fim do programa, e escreva na memória os valores alterados.
		R1=0216H
		R2=0200H
		R3=0216H
		R4=22FAH
		R5=348FH
		
MOV	 R5, [R2+6]
MOV R4, [R3]
MOV	 [R2+2], R3	
		
		0
		1
2
		3
		4
		5
		6
		7
		8
		9
		A
		B
		C
		D
		E
		F
		200H
		A1
		B2
		02
		16
		7A
		87
		6B
		45
		
		
		
		
		
		
		
		
		210H
		23
		43
		
		
		43
		FA
		54
		38
		
		06
		BA
		CA
		6B
		46
		
		
ADD	 R5, 1H
MOV 	 R2, 6
MOV	 [R2+R3], R5
ADD	 R3, 3H
MOVB [R3], R2
ADD	 R1, 5
MOVB R1, [R1] 		Tab1: Memória de dados
		R1=00CAH
		R2=0006H
		R3=0219H
		R4=5438H
		R5=6B46H
		SÍMBOLO
		VALOR
		REGISTRADOR
		VALOR
		PRI
		2040H
		R1
		2040H
		TOP
		3301H
		R2
		2050H
		FIR
		2042H
		R3
		2042H
		SEC
		3333H
		THI
		2046H
		FOR
		2048H
		BOT
		3001H
		LAST
		204CH
2) Dado o seguinte programa, indique o valor dos registradores quando terminar a sua execução e o valor dos símbolos apresentados na tabela seguinte:
Place	2040H
PRI:	WORD	2050H
TOP	EQU		3301H
FIR:	TABLE	2
SEC	EQU		3333H
THI:	WORD	2042H
FOR:	STRING	“mesa”
BOT	EQU		3001H
LAST:	STRING	“amarela”
Place	0h
Inicio:	MOV		R1, 2040H
	MOV		R2, [R1]
	MOV		R3, [R1+6]
Fim: 	JMP		Fim
3) Dado o seguinte programa, indique o valor dos registradores quando terminar a sua execução e preencha a memória com o conteúdo do stack.
		Endereço
		Dados
		6700H
		
		6702H
		
		6704H
		
		6706H
		0834H
		6708H
		2006H
		670AH
		
		670CH
		
		670EH
		
		R1
		0834H
		R2
		0000H
		R3
		0004H
		SP
		6708H
 PLACE 2000
INI:	MOV	SP, 6708H
	MOV R1, 0834H
	CALL FUN
FIM2:	JMP	FIM2
		
CALL Eti
		SP ( SP-2
M[SP](PC
PC ( Eti
FUN:	PUSH	R1
MEIO:	MOV	R2, 1H
	AND 	R2, R1 	
	JZ	AQUI
	ADD	R3, 1
AQUI: SHR R1, 1
JZ 	FIM
		
RET
		
PC ( M[SP]
SP ( SP+2
	JMP	MEIO
FIM:	POP R1
RET

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?