UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO
CURSO: CIÊNCIA DA COMPUTAÇÃO
Aula 2 – Estrutura de um processador
Prof. Leonardo Augusto Casillo

Arquitetura de Von Neumann:
◦ Conceito de programa armazenado;
 Dados e instruções armazenados em uma única memória de
leitura e escrita.
◦ Endereçamento da memória por posição e não pelo tipo;
◦ Execução seqüencial de instruções;
◦ Único caminho entre memória e CPU .

Arquitetura de Harvard:
◦
◦
◦
◦
Variação da arquitetura de Von Neumann.
Memórias separadas para dados e instruções.
Barramentos separados para instruções e dados.
Termo originado dos computadores Mark I a Mark IV
2
3
CPU
ULA
Unidade de
controle
Bus de Endereços
Bus de Dados
Bus de Controle
MEMÓRIA
DE DADOS
E DE
PROGRAMA
UNIDADES
DE E/S
4
Bus de Endereços da MD
Bus de Endereços da MP
Bus de Dados da MP
CPU
Bus de Dados da MD
Bus de Controle
MEMÓRIA
DE
DADOS
MEMÓRIA DE
PROGRAMA
UNIDADES
DE E/S
5




Processadores:
 CPU, controladores e co-processadores
 Possuem conjunto de instruções operando sobre instruções e
dados organizados em palavras
Memórias
 2 subsistemas: externa e interna
 Custo relacionado à capacidade de armazenamento e velocidade de
operação
Sistema de E/S
 Conversores de representação física de dados
 Lentos
Sistema de interconexão
 Comunicação entre componentes através de barramentos e slots
sob seu controle
 Disputa pelo uso de recursos compartilhados.

Registradores mais comuns dentro de um
processador:







Acumulador (AC)
Contador de programa (PC)
Apontador de pilha (SP)
Registrador de instrução (IR)
Buffer de endereço de memória (MAR)
Buffer de dados da memória (MBR)
Registradores de uso geral



CPU
• Unidade operativa
(ULA)
• Unidade de Controle
Memória
• Principal
• Registradores
E/S

Processador tipo LOAD-STORE com 40 bits de palavra.

Memória consiste em mil posições (palavras) constituídas de 40
bits.

Dados e instruções ambos armazenados na memória.

Cada instrução possui um código binário de operação (CodOp).


Cada número é representado por um bit de sinal e um valor de
39 bits.
Uma palavra pode conter duas instruções de 20 bits, sendo 8
bits para o CodOp e endereço de 12 bits, que designa uma
palavra de memória (0 a 999).

Registradores presentes no IAS:
◦ MAR – especifica o endereço na memória da palavra a ser
lida ou escrita do MBR;
◦ MBR – contém uma palavra a ser armazenada na memória
ou uma palavra recebida da memória;
◦ IR – contém o código da operação de 8 bits utilizado;
◦ IBR – contém a instrução (completa) do lado direito de uma
palavra da memória;
◦ PC – contém o endereço do próximo par de instruções a ser
buscado na memória;
◦ AC – armazena temporariamente o operando da ULA e os
40 bits mais significativos de uma multiplicação;
◦ MQ – quociente de multiplicação: armazena os 40 bits
menos significativos de uma multiplicação.
Início

Busca da
próxima
instrução
Execução da
instrução
Busca:
◦ Busca da instrução
◦ Atualiza PC
◦ Decodificação

Execução:
◦ Busca operandos (se necessário)
◦ Executa
◦ Armazena resultado (se necessário)
Parada
PC = 12 bits
MAR = 12 bits
MBR = 40 bits
IR = 8 bits
IBR = 20 bits
AC = 40 bits
MQ = 40 bits
1ª busca:
1º teste - Não
2º teste - Sim






IAS contém 21 instruções, divididas entre os
grupos:
Transferência
de
dados:
entre
memória
e
registradores da ULA ou entre dois registradores da
ULA;
Desvio incondicional: altera a sequência de instruções
da memória;
Desvio condicional: permite dois pontos de decisão;
Aritmética: operações executadas pela ULA;
Alteração de endereço: calcula endereços utilizando a
ULA para inseri-los em instruções armazenadas na
memória.



Cada processador possui seu próprio conjunto de instruções,
embora exista um subconjunto básico utilizado por todos os
processadores de modo geral;
Instruções com mesma função podem ter nomes variados para
cada processador (ex: multiplicação pode ser MUL ou MPY);
Os campos das instruções também variam de acordo com cada
processador (ex: um campo pode representar um endereço ou
um operando);

Existem instruções que referenciam 0, 1, 2 ou 3 registradores;

Variáveis são, na verdade, ponteiros de endereços de memória.

Para converter um programa de alto nível para baixo
nível, deve-se adotar os seguintes passos:
◦ Escrever o programa de modo mais detalhado possível na
forma de algoritmo (pseudo-código / portugol / português
estruturado / descrição narrativa / etc)
◦ Opcionalmente, é válido escrever o algoritmo na forma de
fluxograma, sendo cada etapa do fluxograma representando
uma ação do processador ou uma transferência entre seus
registradores (nível RTL)
ou transferência processador memória
◦ É necessário conhecer a arquitetura (parte operativa) do
processador que executará o programa, em particular a
quantidade de bits e palavras, os registradores do processador
e as operações da ULA
“C <= A + B;”


Uma simples instrução em alto nível pode ser
convertida em várias instruções em baixo nível.
Para realizar esta conversão, algumas perguntas
devem ser respondidas:
◦
◦
◦
◦
Quem são e de onde vêm A e B?
Onde armazenar C?
Quais as entrada da ULA?
O processador é do tipo LOAD-STORE (memória –
processador) ou MÁQUINA COM REGISTRADORES
(registrador-registrador ou registrador – memória)?

Detalhamento
da
instrução,
considerando
um
computador LOAD-STORE e uma das entradas da ULA
fixa (acumulador):
Ler valor de A da memória;
Transferir o valor de A para o acumulador;
Ler valor de B da memória;
Transferir o valor de B para o segundo registrador de entrada
da ULA;
◦ Realizar operação de SOMA (ADD) na ULA;
◦ Salvar o valor de C (enviar para a memória)
◦
◦
◦
◦
◦ ***Algumas destas instruções podem ser agrupadas em
instruções únicas, dependendo do conjunto de instruções do
processador. (EX: ler o valor de A da memória e transferir
para o acumulador realizadas em uma única instrução)

Utilizando instruções do IAS e definindo
posições de memória para as variáveis:
◦ A = endereço 500 na memória
◦ B = endereço 501 na memória
◦ C = endereço 502 na memória



LOAD M(X) - Código 01H
ADD M(X) - Código 05H
STOR M(X) - Código 21H






LOAD M(500): 00000001000111110100
0000 0001 0001 1111 0100 (011F4)
ADD M(501): 00000101000111110101
0000 0101 0001 1111 0101 (051F5)
STOR M(502): 00100001000111110110
0010 0001 0001 1111 0110 (211F6)
Endereço
Conteúdo
000H
011F4051F5H
001H
211F600000H
002H
0000000000H
...


Memória
1F4H
0000000005H
1F5H
0000000003H
1F6H
0000000000H
(0000000008H)
M(1F6) =M(1F4) + M(1F5)
C=5+3
◦ Considerando um computador com 16 bits de palavra:
 4 primeiros bits = CodOp
 12 bits restantes = endereço
◦ Ex: 1940H
 1H = 0001 – CodOp
 940H = 100101000000 – endereço da memória
◦ Registradores utilizados no exemplo:
 PC
 IR
 AC
◦ Instruções utilizadas no exemplo:
 0001 = Carrega AC a partir do end. de memória
 Mnemônico LOAD; Execução AC <- M[X]
 0010 = armazena o valor de AC no end. de memória
 Mnemônico STORE; Execução M[X] <- AC
 0101 = soma AC com valor do end. de memória
 Mnemônico ADD; Execução AC <- AC + M[X]
End.

Conteúdo
Registradores
300
1940
PC = 300
301
5941
IR = 1940
302
2941
AC =
...
...
940
0003
941
0002
Passo 1: Busca da instrução na memória:



Simplificando passos: Ocultando MAR e MBR
PC = 300
IR <- 1940 (M[300])
End.

Conteúdo
Registradores
300
1940
PC = 301
301
5941
IR = 1940
302
2941
AC =
...
...
940
0003
941
0002
Passo 2: Decodificação da instrução




Simplificando: supondo cada instrução com 4 bytes
1º byte = CodOp; 2º a 4º bytes = endereço
IR =1940H: codop = 0001; endereço = 940
Instrução = LOAD (AC <- M[X])
*** PC = PC + 1
End.

Conteúdo
Registradores
300
1940
PC = 301
301
5941
IR = 1940
302
2941
AC = 0003
...
...
940
0003
941
0002
Passo 3: Execução da instrução LOAD
 AC <- M[940]
 Volta ao ciclo de Busca
End.

Conteúdo
Registradores
300
1940
PC = 301
301
5941
IR = 5941
302
2941
AC = 0003
...
...
940
0003
941
0002
Passo 4: Busca
 PC = 301
 IR <- 5941 (M[301])
End.

Conteúdo
Registradores
300
1940
PC = 302
301
5941
IR = 5941
302
2941
AC = 0003
...
...
940
0003
941
0002
Passo 5: Decodificação
 IR =5941H: CodOp = 0101; endereço = 941
 Instrução = ADD (AC <- AC + M[X])
 PC = PC + 1
End.

Conteúdo
Registradores
300
1940
PC = 302
301
5941
IR = 5941
302
2941
AC = 0005
...
...
940
0003
941
0002
Passo 6: Execução
 AC <- AC + M[X]
 AC = 0003 + 0002 (M[941])
 AC = 0005
End.

Conteúdo
Registradores
300
1940
PC = 302
301
5941
IR = 2941
302
2941
AC = 0005
...
...
940
0003
941
0002
Passo 7: Busca
 PC = 302
 IR = 2941 (M[302])
End.

Conteúdo
Registradores
300
1940
PC = 303
301
5941
IR = 2941
302
2941
AC = 0005
...
...
940
0003
941
0002
Passo 8: Decodificação
 IR =2941: CodOp = 0010; endereço = 941
 Instrução = STORE (M[X] <- AC)
 PC = PC + 1
End.

Conteúdo
Registradores
300
1940
PC = 303
301
5941
IR = 2941
302
2941
AC = 0005
...
...
940
0003
941
0005
Passo 9: Execução
 M[941] <- AC (0005)
 Segue funcionamento...

Estudar as instruções do IAS e demonstrar a
utilização de cada uma delas com exemplos
(trechos de código)
◦ exceto SUB |M(X)|, LOAD –M(X),
JUMP+M(X,20;39) e STOR M(X, 28:39)


LOAD
-|M(X)|,
Fazer a execução detalhada de um programa que
realize A x A utilizando o IAS – incluir os
procedimentos envolvendo MAR e MBR;
Elabore um programa em assembly utilizando as
instruções do IAS que realize a contagem
crescente de um valor de 0 a 10.




Considere um microprocessador hipotético de 32 bits,
cujas instruções de 32 bits são compostas de dois
campos: o primeiro byte contém o código da operação e
os demais contêm um operando imediato ou um
endereço de operando.
A. Qual a capacidade máxima de memória endereçável
diretamente (em bytes)?
B. Quantos bits são necessários para o contador de
programa (PC) e para o registrador de instrução (IR)?
C. Qual o procedimento necessário para busca de dados
e instruções caso a memória não contenha 32 bits de
palavra? Como isto poderia ser realizado?