Sunteți pe pagina 1din 8

Uma CPU simples para fins didticos

WILIAN SOARES LACERDA


UFLA Universidade Federal de Lavras
DCC Departamento de Cincia da Computao
Cx. Postal 37 CEP 37.200-000 Lavras (MG)
lacerda@ufla.br
Resumo: Este artigo apresenta o desenvolvimento de uma CPU (Unidade Central de Processamento)
com uma arquitetura simples para utilizao em ensino na disciplina de Arquitetura de
Computadores. A CPU proposta contm todos os elementos bsicos de um processador digital,
permitindo o estudo do seu funcionamento completo.
Palavra Chave: CPU, arquitetura de processador

1 Introduo
Uma unidade central de processamento, ou CPU, o
principal componente dos computadores digitais. a
parte do computador responsvel pela manipulao e
transformao dos dados ou informaes [4].
Desde o primeiro computador digital, at hoje,
utilizado no projeto do processador a topologia
denominada arquitetura de von Newmann. O que
diferencia a arquitetura dos atuais processadores so a
tecnologia de fabricao, velocidade de processamento,
complexidade do projeto, dentre outras [3].
Este artigo prope o projeto de uma CPU simples,
que contm as caractersticas bsicas de um processador
digital [2]. Tem como objetivo servir de exemplo para
ensino em curso de graduao em Cincia da
Computao na Universidade Federal de Lavras, em
especial para a disciplina de Arquitetura de
Computadores.
2 A unidade central de processamento
A CPU proposta neste artigo possui a seguinte estrutura
externa bsica, mostrada na Figura 1.
Os sinais de entrada e sada da CPU proposta
possuem as seguintes funes e caractersticas:
D7..D0 Barramento de dados externo (8 bits)
A7..A0 Barramento de endereo (8 bits)
/MEM sinal de habilitao da memria, ativa em
nvel zero
/IO sinal de habilitao da porta de entrada/sada,
ativa em nvel zero

/WR indica ciclo de escrita em porta ou memria,


ativa em nvel zero
/RD indica ciclo de leitura em porta ou memria,
ativa em nvel zero
CLOCK sinal de sincronismo
/RESET sinal de inicializao, ativo em nvel zero
D7..D0
A7..A0
CLOCK
/MEM
/IO
/RESET
/WR
/RD
Figura 1: CPU
A CPU no o nico componente de um
computador. Existem circuitos auxiliares que em
conjunto com a CPU formam um sistema de
computador. Dentre estes circuitos, existe a memria e
as portas de entrada/sada que so conectadas CPU
como mostrado na Figura 2.

D7..D0

D7..D0

MEMRIA
A7..A0
/CS /WR /RD

PORTA E/S

S7..S0
E7..E0

/CS /WR /RD

CPU
D7..D0
CLOCK
A7..A0
/MEM
/RESET
/IO
/WR
/RD
Figura 2: Um sistema de computador com memria e porta entrada/sada
A memria responsvel pelo armazenamento
das instrues (ou comandos do processador) e dos
dados. Uma memria, em geral, tem uma grande
capacidade de armazenamento. Cada informao
armazenada em uma posio da memria que
identificada por um endereo (conjunto de bits).
Atravs deste endereo, possvel recuperar a
informao armazenada na memria.
As portas de entra/sada so circuitos que
permitem a troca de informaes entre o computador
e o ambiente externo. As portas de entrada enviam
dados gerados por circuitos externos para a CPU, que
por sua vez pode armazen-los na memria. As
portas de sada permitem que a CPU transmita dados
para circuitos externos.
Para permitir a comunicao da CPU com os
circuitos auxiliares, a prpria CPU gera os sinais
responsveis pelo controle da memria e das portas
de E/S. Os sinais de controle da memria so:

3 Componentes da CPU
Para facilitar o projeto e estudo da CPU, ela
dividida
internamente
em
duas
unidades
fundamentais:

Unidade de dados

Unidade de controle
Estas unidades componentes funcionam em conjunto
e conectadas entre si. Elas podem ser visualizadas na
Figura 3, onde se observa a ligao entre elas.
A unidade de dados possui as seguintes funes:

Clculos aritmticos

Funes lgicas

Manipulao de dados

Armazenamento temporrio de dados

Recebimento de dados

/MEM habilita a memria para leitura ou


escrita, ativo em zero.

Envio de dados
A unidade de controle possui as seguintes
funes:

/RD habilita leitura, ativo em zero.

/WR habilita escrita, ativo em zero.

Gerao dos sinais de controle da unidade de


dados

Os sinais de controle da porta de entrada/sada so:

Gerao dos sinais de controle externos

/IO habilita leitura ou escrita da porta, ativo


em zero.

Sincronizao dos sinais de controle

Inicializao do sistema

/RD habilita leitura, ativo em zero.

Gerao do endereo de memria

/WR habilita escrita, ativo em zero.

Busca e armazenamento das instrues e dados

CPU

Tabela 1: Cdigo de operao da ULA

Barramento
de dados
interno
CLK
Sinais de
controle
internos

Unidade

Unidade

de

de

dados

Controle
Status da
ULA (flags)

/RESET

Cdigo Op.
(binrio)
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011

Barramento de
dados externo

controle

Barramento
de

externos

endereo

Sinais de

Figura 3: Unidades da CPU


3.1 Unidade de dados
A unidade de dados composta de ULA (unidade
lgica aritmtica), registradores, multiplexadores,
buffers tri-state e barramentos, conforme mostrado
na Figura 5.
A ULA a responsvel pelas operaes lgicas e
aritmticas da CPU. A ULA proposta mostrada na
Figura 4 com os sinais de entrada e sada. Ela
capaz de realizar as operaes descritas na Tabela 1,
conforme o cdigo da operao gerado pela unidade
de controle.
FLAGS
1o operando

4
8

Resultado
8

2o operando
8
4

/ULA
operao

Figura 4: ULA

Resultado

Smbolo

No faz nada
Soma (1o op. + 2o op.)
Subtrai (1o op. 2o op.)
1o op. AND 2o op.
1o op. OR 2o op.
1o op. XOR 2o op.
Complementa 1o op.
1o op. + 1
1o op. - 1
Deslocamento 1o op. para
direita de 1 bit
Deslocamento 1o op. para
esquerda de 1 bit
Nega o 1o op.

NOP
ADD
SUB
AND
OR
XOR
NOT
INC
DEC
SHR
SHL
NEG

A ULA composta internamente por circuitos


lgicos somadores, subtratores, deslocadores, e
inversores para a realizao da operao selecionada.
Ela possui os seguintes sinais de entrada e sada:
a) Entradas:
8 bits do 1o operando
8 bits do 2o operando
4 bits do cdigo de operao (vide tabela)
1 bit de habilitao da ULA (ativa em zero)
b) Sadas:
4 bits de flags: carry-out, sinal (positivo,
negativo), zero, overflow

8 bits do resultado
Se a ULA estiver habilitada, ento nos 8 bits do
resultado estar o resultado da operao, entre o 1o e
2o operandos, selecionada pelos 4 bits do cdigo de
operao.
Os quatro sinais de flags identificam o status da
ULA de acordo com o resultado obtido pela
realizao de uma operao. O flag de zero ativado
(colocado em nvel lgico 1) se o resultado possue
todos os bits em zero. O flag de sinal ativado se o
resultado da ULA um nmero negativo em
complemento de dois (bit mais significativo do
resultado em 1). O flag de carry-out ativado se
ocorre um vai-um no ltimo bit do resultado. E
finalmente o flag de overflow ativado se o resultado
da operao realizada pela ULA no vlido.

CLK

Registrador
de Flags

/RF

FLAGS

CLK

ULA

A
C
U
M
U
L
A
D
O
R

A
8
MUX
B

/ULA

/LAC

MAC

operao
8

/CLR

BUFFER
TRI-STATE
8

8
Barramento de dados interno
8

CLK

BUFFER
TRI-STATE

A
8

DR

/BDI

BUFFER
TRI-STATE

MUX
B
MDR

/BAC

Barramento
de dados
externo

/BDE
/LDR
8

Figura 5: Diagrama da unidade de dados


Os registradores (acumulador, DR e flags)
armazenam o dados temporariamente antes de serem
manipulados. O acumulador tambm utilizado para
o armazenamento do resultado da operao realizada
pela ULA. Estes registradores so compostos por
flip-flops, onde cada flip-flop capaz de armazenar
um nico bit.
Os multiplexadores (MUX) so responsveis pela
seleo de um determinado dado que est em suas
duas entradas (A e B). Isto permite a opo de
escolha de um dado que ser disponibilizado na sada
do multiplexador, de acordo com o sinal de controle
gerado pela unidade de controle. Por exemplo, o
registrador acumulador poder receber um dado
proveniente da sada da ULA ou um dado
proveniente do barramento de dados interno.

O buffers tri-state so simplesmente circuitos que


conectam um dos dois dados de entrada na sua sada.
Tem como funo fazer com que a cada momento
apenas um circuito coloque o dado no barramento.
Desta forma, o barramento pode ser usado por vrios
circuitos sem perigo de provocar um curto-circuito.
Os barramentos so simplesmente fios condutores
por onde os sinais eltricos dos dados trafegam,
sendo um fio para cada bit de dado.
Os sinais de controle da unidade de dados, os
quais provm da unidade de controle, possuem as
seguintes funes:

/ULA habilita a ULA, ativo em zero

operao (4 bits) seleciona a operao que a


ULA realiza de acordo com a Tabela 1

Dados, sensvel a transio positiva do clock

/RF habilita a carga do registrador dos flags,


ativo em zero, sensvel a transio positiva do
clock
MAC seleciona o dado a ser armazenado no
acumulador (0 A, 1 B)

/LAC habilita a carga do acumulador, ativo em


zero, sensvel a transio positiva do clock

/BAC habilita o buffer do acumulador para


envio do dado ao barramento de dados interno,
ativo em zero

MDR seleciona o dado a ser armazenado no


Registrador de Dados (0 A, 1 B)

/LDR habilita a carga do Registrador de

/BDI habilita buffer do Registrador de Dados


para envio do dado ao barramento de dados
interno, ativo em zero

/BDE habilita buffer do Registrador de Dados


para envio do dado ao barramento de dados
externo, ativo em zero

3.2

Unidade de controle

A unidade de controle composta pelo contador de


programa, pelos registradores (de endereo e
instrues) e circuito de controle. Isto mostrado na
Figura 6.

A
MUX

8
B

CLK
/LCP
/ICP

CONTADOR
DE
PROGRAMA

REGISTRADOR
DE ENDEREO

MRE

CLK

/LRE

/RESET
8
Barramento de dados interno
8

REGISTRADOR
DE
INSTRUES

UNIDADE DE
DADOS

/LRI
CLK

CLK
CONTROLE
12
FLAGS
Barramento de
dados externo

CIRCUITO DE
CONTROLE

/RESET

4
Barramento
de endereo

8
/MEM /IO /RD /WR

Figura 6: Unidade de controle com a unidade de dados

Os componentes da unidade de controle possuem


as seguintes caractersticas e funes:

Registrador de endereo registrador de 8 bits,


com controle de carga (/LRE) e sensvel a
transio positiva do clock. Tem como funo
armazenar o endereo da memria que est
sendo acessado.

Registrador de instrues registrador de 8 bits,


com controle de carga (/LRI) e sensvel a
transio positiva do clock. Tem como funo
armazenar o cdigo da instruo buscada na
memria, e que ser executada.

Contador de programa contador crescente de 8


bits, com controles de clear assncrono
(/RESET), incremento sncrono (/ICP), e carga
sncrona (/LCP), sensvel a transio positiva do
clock. Tem como funo indicar a posio de
endereo de memria onde est armazenado a
prxima instruo a ser buscada.

Tabela 2: Cdigo de instrues


Cdigo
Instruo
(hexadecimal)
00
08
10
18
20
28
30
38
40
48
50
58
80
88
90
A0

No faz nada
Soma: ACC=ACC+M(X)
Subtrao: ACC=ACC-M(X)
ACC=ACC and M(X)
ACC=ACC or M(X)
ACC=ACC xor M(X)
Complementa ACC: ACC=/ACC
ACC = ACC + 1
ACC = ACC - 1
ACC = ACC/2
ACC = ACC*2
ACC = -ACC
ACC = 0
ACC = M(X)
M(X) = ACC
Pula incondicionalmente para posio
X
A8
Pula para posio X se ACC = 0
B0
Pula para posio X se ACC positivo
ou zero
B8
Pula para posio X se ACC negativo
C0
Pula para posio X se houve vai-um
C8
Pula para posio X se houve
overflow
D0
L a porta de entrada e armazena no
ACC
D8
Escreve o contedo de ACC na porta
de sada
FF
Pra o processamento
X endereo de memria de 8 bits

Circuito de controle mquina sequencial que


gera os sinais de controle para a unidade de
dados, unidade de controle, porta de
entrada/sada e para a memria, de acordo com o
dado armazenado no registrador de instrues.
Sensvel a transio negativa do clock. A
mquina sequencial permite que a CPU execute
as instrues indicadas na Tabela 2.
Os sinais de controle da unidade de controle so:
/LCP habilita a carga do contador de
programa, ativo em zero, sensvel a transio
positiva do clock.

Descrio

Smbolo

NOP
ADD X
SUB X
AND X
ORA X
XOR X
NOT
INC
DEC
SHR
SHL
NEG
CLR
LDA X
STA X
JMP X
JEZ X
JGE X
JLZ X
JMC X
JMO X
INP
OUT
HLT

M - memria
ACC Registrador acumulador

4 Funcionamento da CPU

/ICP habilita a contagem (incremento) do


contador de programa, ativo em zero, sensvel a
transio positiva do clock.

/RESET limpa (zera) o contador de programa


e inicializa o circuito de controle, ativo em zero,
assncrono.

A CPU possui o funcionamento descrito a seguir.


Inicialmente, o sinal de reset ativado, fazendo o
contador de programa comear com o valor zero. A
CPU ento est pronta para executar instrues
armazenadas na memria, obedecendo dois ciclos de
funcionamento: ciclo de busca da instruo (ciclo de
fetch), e ciclo de execuo

MRE seleciona o dado a ser armazenado no


Registrador de Endereo.

4.1

/LRE habilita a carga do Registrador de


Endereo, ativo em zero, sensvel a transio
positiva do clock.

/LRI habilita a carga do Registrador de


Instrues, ativo em zero, sensvel a transio
positiva do clock.

FLAGS - (4 bits) identifica o status da ULA

Ciclo de busca da instruo

Aps a ativao do sinal de reset, carregado o valor


do contador de programa no barramento de endereo.
A memria ativada para leitura, e seu dado
carregado no registrador de instrues. O contador de
programa

incrementado
automaticamente
preparando para ler o prximo dado na memria.
4.2 Ciclo de execuo
Aps o ciclo de fetch, a instruo carregada
decodificada pelo circuito de controle que gera os

sinais de controle em sequncia para execuo da


instruo. Se um dado buscado na memria na
execuo da instruo, o contador de programa
atualizado. Quando termina de executar a instruo,
o ciclo de fetch reiniciado com o novo valor do
contador de programa.
4.3

execuo da correspondente instruo (durante


ativao de T3 Tn).

T0

...

...

...

...

...

...

...

...

Circuito de controle

O circuito de controle a parte mais complexa da


CPU. Existem vrias formas para implementao do
circuito de controle [1]: microprogramado, mquina
de estado e contador de sequncia. O mtodo
proposto o contador de sequncia por ser mais
simples. Ele mostrado na Figura 7 e descrito a
seguir.

T1

T2

Tn
Vm do registrador de
Instrues

Figura 8: Sinais gerados pelo contador deslocador

8
Decodificador de
instrues
CLK

/RESET
N
O
P

A
D
D

S
U
B

...

H
L
T

T0
Vm do
registrador de
Flags

T1
T2
Contador

.
.

Deslocador

Circuito
Combinacional

Tn

5 Concluso
Neste artigo foi apresentado uma proposta de projeto
de um processador digital (CPU) simples. O projeto
utilizado na disciplina de Arquitetura de
Computadores por ser de fcil assimilao pelos
estudantes do curso, alm de providenciar um
aprendizado eficaz no estudo do funcionamento de
um processador. O projeto pode ser implementado
utilizando-se circuitos integrados comuns de fcil
aquisio, ou mesmo atravs de programao de
dispositivo FPGA. A proposta da CPU pode tambm
ser simulada em computador utilizando-se programas
simuladores de circuitos digitais.
6 Referncias bibliogrficas

...
Sinais de Controle
internos e externos

Figura 7: Circuito de controle


O contador deslocador gera sinais sequenciais a
cada pulso de clock (transio negativa) de acordo
com as formas de onda mostradas na Figura 8. A sua
funo marcar o tempo e ordem de ativao dos
sinais de controle.
O decodificador de instrues ativa a sua sada
correspondente a instruo armazenada no
registrador de instrues. O circuito combinacional
gera os sinais de controle na sequncia apropriada
para busca da instruo (durante ativao de T0, T1 e
T2), e posteriormente gera os sinais de controle para

[1] HAYES, John Patrick. Computer Architecture


and Organization. Singapore: McGraw-Hill
International, 2a edio, 1988, 702p.
[2] MALVINO, Albert P. Microcomputadores e
Microprocessadores. So Paulo: McGrawHill do Brasil, 1985, 578p.
[3] PATTERSON, David A. e HENNESSY, John
L. Computer Organization and Design: The
Hardware/Software
Interface.
San
Francisco: Morgan Kaufmann, 2a edio,
1998, 980p.
[4] TANEMBAUM, Andrew S. Organizao
Estruturada de Computadores. Rio de
Janeiro: Livros Tcnicos e Cientficos, 1999,
3a edio, 460p.

S-ar putea să vă placă și