Você está na página 1de 10

AUTARQUIA EDUCACIONAL DO VALE DO SÃO FRANCISCO – AEVSF

FACULDADE DE CIÊNCIAS APLICADAS E SOCIAIS DE PETROLINA –


FACAPE CIÊNCIA DA COMPUTAÇÃO

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES


PROF. SÉRGIO F. RIBEIRO

LISTA DE
EXERCÍCIOS 2

OBS.: PARA AS QUESTÕES A SEGUIR, CONSIDERE, COMO REFERÊNCIA, A MICROARQUITETURA


IJVM MIC-1.

1) DESCREVA, RESUMIDAMENTE, DE QUAIS FATORES DEPENDE O PROJETO DO NÍVEL DA


MICROARQUITETURA.
R: DEPENDE DO NÍVEL ISA E DEPENDE DO DESEMPENHO QUE VOCÊ QUER COM A MÁQUINA

2) QUAL A COMPOSIÇÃO BÁSICA E QUAIS AS FUNCIONALIDADES DOS ELEMENTOS QUE FORMAM


O MIC-1 (FIGURA 2)?
R: CONJUNTOS DE REGISTRADORES QUE ALIMENTAM A ULA, CONECTADO POR MEIO DE
BARRAMENTO (A E B – DE LEITURA), DESLOCADOR, BARRAMENTO C DE ESCRITA, OU SEJA, ELE É
COMPOSTOS PELO CAMINHO DE DADOS E PELA UNIDADE DE CONTROLE.
OS REGISTRADORES FORMAM UM BANCO DE MEMÓRIA LOCAL QUE ALIMENTA A ULA, A ULA
OPERA E A UNIDADE DE CONTROLE CONTROLA O CAMINHO DE DADOS, DESLOCADOR RECEBE O
RESULTADO DA ULA E PODE EFETUAR O DESLOCAMENTO.
3) UM REGISTRADOR PODE SER LIDO E ESCRITO NO MESMO CICLO DE CLOCK SEM PRODUZIR
LIXO? POR QUE?

ΔW ΔX ΔY ΔZ
R: SIM, DEVIDO A TEMPORIZAÇÃO EXATA DO CAMINHO DE DADOS.
4) DESCREVA O QUE OCORRE DURANTE CADA SUBCICLO EM UM CICLO DO CAMINHO DE DADOS.
R: (AW = SETUP) – (AX = READ) – (AY = OPERATION) –(AZ =PROPAGATION)- (SUBINDO = WRITE)
(GAP)
OBS: CONSIDERE A COMO DELTA
5) CITE TODOS OS PARES DE REGISTRADORES DO MIC-1 PARA TRATAR DADOS, ENDEREÇOS E
MICROINSTRUÇÕES. DIFERENCIE-OS.
MAR/MDR – DADO
PC/MBR – INSTRUÇÃO
SP/TOS – DADO NA PILHA
MPC/MIR – MICROINSTRUÇÃO
6)QUAL O OBJETIVO DE UMA MICROINSTRUÇÃO? DESCREVA A FUNÇÃO DOS SINAIS QUE
COMPÕEM UMA PALAVRA DE CONTROLE (MICROINSTRUÇÃO)?
R: ELA É USADA PARA CONTROLAR O CAMINHO DE DADOS, ELA ESTÁ GUARDADE NA
MEMÓRIA DE CONTROLE 512x36, NA PRÁTICA A MICROINSTRUÇÃO É UMA PALAVRA BINARIA DE
TAMANHO 36 BITS

NEXT_ADDRESS – DETERMINAR POTENCIALMENTE O ENDEREÇO DA PRÓXIMA MICROINSTRUÇÃO


DESVIO – USADO EM CONJUNTO COM NEXT ADDRESS PARA DETERMINAR O ENDEREÇO DA PROX.
ULA - DIVIDIDO EM 6 E 2, 6 PARA DETERMINAR QUE OPERAÇÃO A ULA VAI REALIZAR E OS 2 – (SLL
DESLOCAMENTO LÓGICO PARA ESQUERDA) E SRA (DESLOCAMENTO ARITMETICO PARA DIREITA)
OU SEJA, É O GRUPO QUE DETERMINA A OPERAÇÃO DA ULA E DO DESLOCADOR
C – DETERMINA QUAL OU QUAIS REGISTRADORES SERÃO ESCRITOS
MEMORIA – DETERMINA QUAL OPERAÇÃO(LEITURA,ESCRITA E BUSCA) SERÁ REALIZADA NA
MEMORIA
B – DETERMINA QUAL REGISTRADOR SERÁ LIDO
7) O FATO DE O MAR TRABALHAR COM PALAVRAS ENQUANTO A MEMÓRIA FÍSICA TRABALHA
COM BYTES É SUPORTADO POR UM ARTIFÍCIO MUITO INTERESSANTE. EXPLIQUE.
R: MAPEAMENTO É A LIGAÇÃO FISICA ENTRE O MAR E O BARRAMENTO DE ENDEREÇO
MAR = 32 BITS
O OBJETIVO DISSO, FOI UMA SOLUÇÃO ENCONTRADA PARA TRATAR A DIFERENÇA ENTRE
PALAVRAS E BYTES

8) COMO A ARQUITETURA IJVM DIVIDE A MEMÓRIA? CARACTERIZE CADA UMA DAS PARTES
R: POOL DE CONSTANTES – CONSTANTES, ENDEREÇOS E REGISTRADOR USADO É O CPP
QUADRO DE VARIÁVEIS LOCAIS – PARA GUARDAR OS VALORES DAS VÁRIAVEIS,
REGISTRADORES LV E SP
PILHA DE OPERANDOS – POSSIBILITAR A VARIAÇÃO DE EXPRESSÕES E REGISTRADOR USADO SP
A ÁREA DO PROCEDIMENTO – GUARDO O PROGRAMA, AS INSTRUÇÕES, REGISTRADOR
ENVOLVIDO PC
F0 F1 ENA ENB INVA INC FUNÇÃO
0 1 1 0 0 0 A
0 1 0 1 0 0 B
0 1 1 0 1 0 A
1 0 1 1 0 0 B
1 1 1 1 0 0 A+B
1 1 1 1 0 1 A+B+1
1 1 1 0 0 1 A+1
1 1 0 1 0 1 B+1
1 1 1 1 1 1 B–A
1 1 0 1 1 0 B–1
1 1 1 0 1 1 –A
0 0 1 1 0 0 A AND B
0 1 1 1 0 0 A OR B
0 1 0 0 0 0 0
0 1 0 0 0 1 1
0 1 0 0 1 0 –1

Tabela 1: Funções úteis da ULA Figura 1: ULA de 1 bit

Figura 2: Diagrama de blocos do MIC-1


9) A TABELA 1 MOSTRA UMA MANEIRA DE FAZER COM QUE A APAREÇA NA SAÍDA DA ULA.
SABENDO QUE CADA UMA DAS 32 ULA DE 1 BIT É IMPLEMENTADO CONFORME A FIGURA 1,
DETERMINE OUTRA COMBINAÇÃO BINÁRIA QUE DESEMPENHE A MESMA FUNÇÃO.
R: F0 F1 ENA ENB INV INC FUNÇÃO
1 1 1 0 0
A 0 A+B
OBS: ENB É ZERO, PARA O B SEJA 0;
F0 e F1 DEFINEM OPERAÇÕES ESPECIFICAS DA ULA
ENA E ENB – ATIVA O A OU B
INVA INVERTE O A
INC INCREMENTA 1
10) COM BASE NO DIAGRAMA DA FIGURA 1, DEMONSTRE QUAL FUNÇÃO A ULA DEVE
DESEMPENHAR QUANDO:

F0 F1 EN EN INV IN
1 1 A0 1
B 1
A 1
C
11) APÓS IMPLEMENTAR O MIC-1 EM LABORATÓRIO (FIGURA 2), VOCÊ MEDE OS TEMPOS DE
PROPAGAÇÃO DO CIRCUITO E AVERÍGUA QUE O MESMO GASTA 1NS PARA CARREGAR O MIR,
1NS PARA HABILITAR UM REGISTRADOR PARA QUE ESTE COLOQUE SEU CONTEÚDO NO
BARRAMENTO B, 3NS AGUARDANDO A OPERAÇÃO DA ULA E DO DESLOCADOR, E 1NS PARA
QUE OS RESULTADOS SE PROPAGUEM DE VOLTA AOS REGISTRADORES. SE O INTERVALO
ALTO DO CLOCK NÃO PODE SER INFERIOR A 2NS PARA QUE O SEQUENCIADOR FUNCIONE
CORRETAMENTE, DETERMINE A MÁXIMA FREQUÊNCIA DE CLOCK COM QUE SEU
MICROPROCESSADOR SERÁ CAPAZ DE OPERAR (DESPREZE OS TEMPOS DE TRANSIÇÃO DE
BORDA). JUSTIFIQUE SUA RESPOSTA ATRAVÉS DE UM DIAGRAMA DE TEMPO INDICANDO
CADA INTERVALO DA TEMPORIZAÇÃO.

ΔW ΔX ΔY ΔZ
1ns 1ns 3ns 1ns >= 2ns
FREQMAX = 1/TPERIODO MIN
FREQMAX = 1/8NS
FREQMAX = 1/8X10-9
FREQMAX = 0,125 X 10+9 OBS: O 10-9 SUBIU E POR ISSO FICOU POSITIVO
FREQMAX = 125X10-3 X 10+9
FREQMAX = 125X10+6
FREQMAX = 125 MHZ
12) NA FIGURA 2 O CAMPO DA MICROINSTRUÇÃO QUE CONTROLA O ACESSO AO BARRAMENTO B
ESTÁ CODIFICADO EM 4 BITS. MAS O CAMPO DO BARRAMENTO C É CONTROLADO POR UM
MAPA DE BITS (CADA SINAL DE CONTROLE É REPRESENTADO POR UM BIT DA
MICROINSTRUÇÃO). EXPLIQUE POR QUÊ.
R: (É UM MAPA DE BITS PORQUE CADA BIT ESTÁ ASSOCIADO A UM REGISTRADOR), O MAPA
POSSIBILITA A ESCRITA EM UM OU MAIS REGISTRADORES E O CODIFICADO SÓ POSSIBILITA
A LEITURA DE UM. FOI CODIFICADO TAMBÉM PARA REDUZIR O TAMANHO DA INSTRUÇÃO,
JÁ O MAPA DE BITS NÃO FOI CODIFICADO PORQUE NÃO SERIA POSSIVEL ESCREVER EM MAIS
DE UM.
13) QUANDO O CAMPO JMPC DE UMA MICROINSTRUÇÃO É HABILITADO, O CONTEÚDO DO MBR
PASSA PELA FUNÇÃO OR (CAIXA COM UM CÍRCULO) JUNTO COM O CAMPO NEXT_ADDRESS
PARA FORMAR O ENDEREÇO DA PRÓXIMA MICROINSTRUÇÃO. EXISTE ALGUMA
CIRCUNSTÂNCIA NA QUAL FAZ SENTIDO O CAMPO NEXT_ADDRESS SER IGUAL A 0X1FF E
USAR JMPC?

FF = 1111 1111 – 8 bits


MBR = ??? – 8 bits
JMPC = 1

1111 1111
XXXX XXXX – PODE SER 0 OU 1
- OPERAÇÃO OR BIT A BIT
1111 1111
OU SEJA, NÃO FAZ SENTIDO, POIS, TANTO FAZ SE O JMPC SEJA 1 OU 0, O RESULTADO SEMPRE SERÁ
O MESMO.
14) DETERMINE O CÓDIGO EM LINGUAGEM DE MONTAGEM RESULTANTE DA COMPILAÇÃO DO
CÓDIGO JAVA ABAIXO.
ASSUMA QUE O COMPILADOR UTILIZADO OTIMIZA O CÓDIGO GERADO.
I = J + K;
IF (I==3)
I = 0;
K = 0;
ELSE
J = J – 1;
R:
ILOAD J
ILOAD K
IADD
ISTORE i
ILOAD I
BIPUSH 3
IF_ICMPEQ L1
ILOAD J
BIPUSH 1
ISUB
ISTORE J
GOTO L2

L1: BIPUSH 0
ISTORE I
BIPUSH 0
ISTORE K
L2:
15) CONSIDERE O SEGUINTE COMANDO JAVA: I = J + K + 4; ENCONTRE DUAS TRADUÇÕES
DIFERENTES DESSE COMANDO PARA A LINGUAGEM DE MONTAGEM DO IJVM.
ILOAD J
ILOAD K
IADD
BIPUSH 4 -> i = ((j + k) + 4)
IADD
STORE I

ILOAD J
ILOAD K
BIPUSH 4 -> i = (j + (k + 4))
IADD
IADD
STORE I
16) ENCONTRE O COMANDO JAVA QUE PRODUZIU O SEGUINTE CÓDIGO IJVM:
ILOAD J
ILOAD K
ISUB
BIPUSH 6
ISUB
DUP
IADD
ISTORE I

I = J-K-6 + J – K – 6
EM JAVA
I= 2 * (J-K-6)

17) AO TRADUZIR O COMANDO MAL


IF(Z) GOTO L1; ELSE GOTO L2
PARA BINÁRIO, L2 DEVE ESTAR NAS 256 PALAVRAS MAIS BAIXAS DA MEMÓRIA DE
CONTROLE. SERIA IGUALMENTE POSSÍVEL L1 ESTAR, DIGAMOS, EM 0X40 E L2 EM 0X140?
JUSTIFIQUE SUA RESPOSTA.
R: 140 – 40 = 100 EM HEXADECIMAL
CONVERTENDO EM DECIMAL
1X162 0X161 0X160
256
É POSSÍVEL

18) QUANTO TEMPO DEMORA PARA QUE UMA IMPLEMENTAÇÃO DO MIC-1 RODANDO A 200 MHZ
EXECUTE O COMANDO JAVA ABAIXO? (A RESPOSTA DEVE SER DADA EM
NANOSSEGUNDOS).
I = J + K;
R:
ILOAD J – 5 + 1 (olha livro para ver micro instruções – o 1 é o main)
ILOAD K – 5 + 1(olha livro para ver micro instruções – o 1 é o main)
IADD – 3 + 1((olha livro para ver micro instruções – o 1 é o main)
ISTORE I - 6 + 1(olha livro para ver micro instruções – o 1 é o main)

T= 1/F
T= 1/200 * 106
T= 5 * 10-3 * 10-6
T=5NS

23 * 5 = 115 ns
19) CONSIDERE QUE A PALAVRA DE MEMÓRIA SEJA DE 32 BITS E QUE SP = 0X215 E PC = 0X100
(ENDEREÇO DA 1ª INSTRUÇÃO BIPUSH). APRESENTE AS MICROINSTRUÇÕES NECESSÁRIAS
PARA A EXECUÇÃO DO PROGRAMA IJVM ABAIXO. UMA VEZ EXECUTADO O PROGRAMA,
MOSTRE O CONTEÚDO DOS REGISTRADORES ENVOLVIDOS E AS ALTERAÇÕES NA PILHA A
CADA PASSO. CONSIDERE QUE A ORDENAÇÃO DOS BYTES NA MEMÓRIA SEJA DO TIPO
LITTLE ENDIAN.
BIPUSH 0X42
BIPUSH 0X25
SWAP
IAND
IFEQ 0X0123

OBS: CONSULTE O MICROPROGRAMA PARA O MIC-1 NO LIVRO-TEXTO (TANENBAUM – FIG.


4.17)

SP = 0X215
PC = 0X100

MEM.PRINCIPAL PILHA
229 00 00
00 00
00 00
23 PC = 108 25 42 21D - SP

01 PC = 107 00 00 00 21C

99 PC=106 00 00 00 21B

7E PC = 105 00 00 00 21A

5F PC = 104 42 25 00 219 = SP voltou SP

25 PC = 103 218

10 102 217

42 PC = 101 216

10 PC
215 = SP voltou SP

BIPUSH 0X10 – 0X42


BIPUSH 0X10 – 0X25
SWAP 0X5F
IAND OX7E
IFEQ OX99 – OX0123
LABEL OPERAÇÕES

MAIN1 PC(101) = PC(100) + 1; fetch(MBR-42) goto(MBR-10)

BIPUSH1 SP(219) = MAR(215) = SP(215) + 1


BIPUSH2 PC(102)= PC(101) + 1; fetch(MBR=10)
BIPUSH3 MDR(42) = TOS(42) = MBR(42); WR; GOTO
MAIN1 (MAR-219 = 42)

MAIN 1 PC(103) = PC(102) + 1; fetch(MBR-25);goto(MBR-10)

BIPUSH1 SP(21D) = MAR(21D) = SP(219) + 1


BIPUSH2 PC(104)= PC(103) + 1; fetch(MBR=5F)(SWAP)
BIPUSH3 MDR(25) = TOS(25) = MBR(25); WR; GOTO
MAIN1 (MAR-21D = 25)

MAIN 1 PC(105) = PC(104) + 1; fetch(MBR-7E)(IAND);


goto(MBR-5F)

SWAP1 MAR(219) = SP(21D) – 1; RD(MDR = 42)


SWAP2 MAR(21D) = SP(21D)
SWAP3 H(42)=MDR(42); WR (MAR-21D-42)
SWAP4 MDR(25) = TOS(25)
SWAP5 MAR(219) = SP(21D) – 1; WR(MAR-219=MDR-25)
SWAP6 TOS(42)= H(42); goto Main1

MAIN 1 PC(106) = PC(105) + 1; fetch(MBR-99)(IFEQ);


goto(MBR-7E)(IAND)

Iand1 MAR(219) = SP(219) = SP(21D)-1; rd(MAR-219 =


MDR-25)
Iand2 H(42)=TOS(42)
Iand3 MDR(00) = TOS(00) = MDR(25) AND H(42);
WR(MAR-219=MDR-00);goto Main1
0 0 1 0 0 1 0 1 - 25
0 1 0 0 0 0 1 0 - 42
------------------
0000 0000
MAIN 1 PC(107) = PC(106) + 1; fetch(MBR-01)(IFEQ);
goto(MBR-99)(IFEQ)

Ifeq1 MAR(215) = SP(215) = SP(219) – 1; rd (MDR =XX)


Ifeq2 OPC(00) = TOS(00)
Ifeq3 TOS(00) = MDR(00)
Ifeq4 Z(1)=OPC(00); IF(Z) goto T; else gotoF
T OPC(106) = PC(107) -1; fetch(MBR=01); goto goto2

F PC = PC + 1 //pulou
F2 PC = PC + 1; fetch //pulou
F3 Goto Main1 //pulou
Goto1 OPC = PC – 1 // pulou
Goto2 PC(108) = PC(107) + 1; fetch(MBR = 23)
Goto3 H(0100) = MBR(01) << 8
0000 0001
0000 0001 0000 0000
HEXA = 0 1 0 0
Goto4 H = MBRU(23) OR H(0100)
0000 0001 0000 0000
0000 0000 0010 0011
--------------------------------------
0000 0001 0010 0011
HEXA = 0 1 2 3
Goto5 PC(229) = OPC(106) + H(0123); fetch(yy)
0106
0123
------
0229
Goto6 Goto Main1

MAIN 1 PC = PC + 1; fetch; goto(MBR)