8

Click here to load reader

48-68-1-SM

Embed Size (px)

Citation preview

Page 1: 48-68-1-SM

7/23/2019 48-68-1-SM

http://slidepdf.com/reader/full/48-68-1-sm 1/8

Uma CPU simples para fins didáticos

WILIAN SOARES LACERDA

UFLA – Universidade Federal de LavrasDCC – Departamento de Ciência da Computação

Cx. Postal 37 – CEP 37.200-000 Lavras (MG)[email protected]

Resumo: Este artigo apresenta o desenvolvimento de uma CPU (Unidade Central de Processamento)com uma arquitetura simples para utilização em ensino na disciplina de Arquitetura deComputadores. A CPU proposta contém todos os elementos básicos de um processador digital,permitindo o estudo do seu funcionamento completo.

Palavra Chave: CPU, arquitetura de processador

1 Introdução

Uma unidade central de processamento, ou CPU, é oprincipal componente dos computadores digitais. É aparte do computador responsável pela manipulação etransformação dos dados ou informações [4].

Desde o primeiro computador digital, até hoje, éutilizado no projeto do processador a topologiadenominada arquitetura de von Newmann. O quediferencia a arquitetura dos atuais processadores são atecnologia de fabricação, velocidade de processamento,complexidade do projeto, dentre outras [3].

Este artigo propõe o projeto de uma CPU simples,que contém as características básicas de um processadordigital [2]. Tem como objetivo servir de exemplo paraensino em curso de graduação em Ciência daComputação na Universidade Federal de Lavras, emespecial para a disciplina de Arquitetura de

Computadores.

2 A unidade central de processamento

A CPU proposta neste artigo possui a seguinte estruturaexterna básica, mostrada na Figura 1.

Os sinais de entrada e saída da CPU propostapossuem as seguintes funções e características:

•  D7..D0 – Barramento de dados externo (8 bits)

•  A7..A0 – Barramento de endereço (8 bits)

•   /MEM – sinal de habilitação da memória, ativa emnível zero

• 

 /IO – sinal de habilitação da porta de entrada/saída,ativa em nível zero

•   /WR – indica ciclo de escrita em porta ou memória,ativa em nível zero

•   /RD – indica ciclo de leitura em porta ou memória,ativa em nível zero

• 

CLOCK – sinal de sincronismo

• 

 /RESET – sinal de inicialização, ativo em nível zero

Figura 1: CPU

A CPU não é o único componente de umcomputador. Existem circuitos auxiliares que emconjunto com a CPU formam um sistema decomputador. Dentre estes circuitos, existe a memória eas portas de entrada/saída que são conectadas à CPUcomo é mostrado na Figura 2.

D7..D0

A7..A0

CLOCK

 /MEM

 /IO

 /RESET

 /WR

 /RD

Page 2: 48-68-1-SM

7/23/2019 48-68-1-SM

http://slidepdf.com/reader/full/48-68-1-sm 2/8

Page 3: 48-68-1-SM

7/23/2019 48-68-1-SM

http://slidepdf.com/reader/full/48-68-1-sm 3/8

Figura 2: Um sistema de computador com memória e porta entrada/saída

A memória é responsável pelo armazenamentodas instruções (ou comandos do processador) e dosdados. Uma memória, em geral, tem uma grandecapacidade de armazenamento. Cada informação é

armazenada em uma posição da memória que éidentificada por um endereço (conjunto de bits).Através deste endereço, é possível recuperar ainformação armazenada na memória.

As portas de entra/saída são circuitos quepermitem a troca de informações entre o computadore o ambiente externo. As portas de entrada enviamdados gerados por circuitos externos para a CPU, quepor sua vez pode armazená-los na memória. Asportas de saída permitem que a CPU transmita dadospara circuitos externos.

Para permitir a comunicação da CPU com oscircuitos auxiliares, a própria CPU gera os sinaisresponsáveis pelo controle da memória e das portasde E/S. Os sinais de controle da memória são:

•   /MEM – habilita a memória para leitura ouescrita, ativo em zero.

•   /RD – habilita leitura, ativo em zero.

• 

 /WR – habilita escrita, ativo em zero.

Os sinais de controle da porta de entrada/saída são:

•   /IO – habilita leitura ou escrita da porta, ativoem zero.

 

 /RD – habilita leitura, ativo em zero.•   /WR – habilita escrita, ativo em zero.

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 conjuntoe conectadas entre si. Elas podem ser visualizadas naFigura 3, onde se observa a ligação entre elas.

A unidade de dados possui as seguintes funções:

•  Cálculos aritméticos

•  Funções lógicas

•  Manipulação de dados

• 

Armazenamento temporário de dados•  Recebimento de dados

•  Envio de dados

A unidade de controle possui as seguintesfunções:

•  Geração dos sinais de controle da unidade dedados

•  Geração dos sinais de controle externos

•  Sincronização dos sinais de controle

• 

Inicialização do sistema

• 

Geração do endereço de memória•  Busca e armazenamento das instruções e dados

D7..D0

MEMÓRIA

A7..A0

 /CS /WR /RD

D7..D0

CLOCK

A7..A0

 /MEM /RESET /IO

 /WR

 /RD

CPU

S7..S0

E7..E0

D7..D0

PORTA E/S

  /CS /WR /RD

Page 4: 48-68-1-SM

7/23/2019 48-68-1-SM

http://slidepdf.com/reader/full/48-68-1-sm 4/8

Figura 3: Unidades da CPU

3.1 Unidade de dados

A unidade de dados é composta de ULA (unidadelógica aritmética), registradores, multiplexadores,buffers tri-state e barramentos, conforme mostradona Figura 5.

A ULA é a responsável pelas operações lógicas earitméticas da CPU. A ULA proposta é mostrada naFigura 4 com os sinais de entrada e saída. Ela écapaz de realizar as operações descritas na Tabela 1,conforme o código da operação gerado pela unidadede controle.

Figura 4: ULA

Tabela 1: Código de operação da ULA

Código Op.(binário)

Resultado Símbolo

0000 Não faz nada NOP0001 Soma (1o op. + 2o op.) ADD0010 Subtrai (1o op. – 2o op.) SUB0011 1o op. AND 2o op. AND0100 1o op. OR 2o op. OR0101 1o op. XOR 2o op. XOR0110 Complementa 1o op. NOT0111 1o op. + 1 INC

1000 1o

 op. - 1 DEC1001 Deslocamento 1o op. para

direita de 1 bitSHR

1010 Deslocamento 1o op. paraesquerda de 1 bit

SHL

1011 Nega o 1o op. NEG

A ULA é composta internamente por circuitoslógicos somadores, subtratores, deslocadores, einversores para a realização da operação selecionada.Ela possui os seguintes sinais de entrada e saída:

a) Entradas:

• 

8 bits do 1o operando

•  8 bits do 2o operando

• 

4 bits do código de operação (vide tabela)

•  1 bit de habilitação da ULA (ativa em zero)

b) Saídas:

• 

4 bits de “flags”: carry-out, sinal (positivo,negativo), zero, overflow

•  8 bits do resultado

Se a ULA estiver habilitada, então nos 8 bits doresultado estará o resultado da operação, entre o 1o e

2o operandos, selecionada pelos 4 bits do código deoperação.

Os quatro sinais de flags identificam o status daULA de acordo com o resultado obtido pelarealização de uma operação. O flag de zero é ativado(colocado em nível lógico 1) se o resultado possuetodos os bits em zero. O flag de sinal é ativado se oresultado da ULA é um número negativo emcomplemento de dois (bit mais significativo doresultado em 1). O flag de carry-out é ativado seocorre um vai-um no último bit do resultado. Efinalmente o flag de overflow é ativado se o resultado

da operação realizada pela ULA não é válido.

Sinais de

controle

externos

Unidade

de

dados

Unidade

de

Controle

Barramentode dadosinterno

Sinais decontroleinternos

Status daULA (flags)

CLK

 /RESET

Barramento dedados externo

Barramentode

endereço

CPU

operação

4

 /ULA4

1o operando

2o operando

8

8Resultado

8

FLAGS

Page 5: 48-68-1-SM

7/23/2019 48-68-1-SM

http://slidepdf.com/reader/full/48-68-1-sm 5/8

Figura 5: Diagrama da unidade de dados

Os registradores (acumulador, DR e flags)armazenam o dados temporariamente antes de seremmanipulados. O acumulador também é utilizado parao armazenamento do resultado da operação realizadapela ULA. Estes registradores são compostos porflip-flops, onde cada flip-flop é capaz de armazenarum único bit.

 Os multiplexadores (MUX) são responsáveis pelaseleção de um determinado dado que está em suasduas entradas (A e B). Isto permite a opção deescolha de um dado que será disponibilizado na saídado multiplexador, de acordo com o sinal de controlegerado pela unidade de controle. Por exemplo, oregistrador acumulador poderá receber um dado

proveniente da saída da ULA ou um dadoproveniente do barramento de dados interno.

O buffers tri-state são simplesmente circuitos queconectam um dos dois dados de entrada na sua saída.Tem como função fazer com que a cada momentoapenas um circuito coloque o dado no barramento.Desta forma, o barramento pode ser usado por várioscircuitos sem perigo de provocar um curto-circuito.

Os barramentos são simplesmente fios condutorespor onde os sinais elétricos dos dados trafegam,sendo um fio para cada bit de dado.

Os sinais de controle da unidade de dados, osquais provêm da unidade de controle, possuem asseguintes funções:

• 

 /ULA – habilita a ULA, ativo em zero

• 

operação – (4 bits) seleciona a operação que aULA realiza de acordo com a Tabela 1

A

MUX

B

ACUMULAD

OR BUFFERTRI-STATE

ULA

FLAGS

MAC

CLK

 /LAC

 /BAC

A

MUX

B

DR

MDR

CLK

 /LDR

BUFFERTRI-STATE

 /BDI

BUFFERTRI-STATE

 /BDE

Barramento de dados interno

8 8

8

8

8

8

8 8

8

8

8

8

8

4

operação

 /ULA4

Registradorde Flags /RF

CLK

 /CLR

Barramentode dadosexterno

4

Page 6: 48-68-1-SM

7/23/2019 48-68-1-SM

http://slidepdf.com/reader/full/48-68-1-sm 6/8

•   /RF – habilita a carga do registrador dos flags,ativo em zero, sensível a transição positiva doclock

•  MAC – seleciona o dado a ser armazenado noacumulador (0 – A, 1 – B)

•   /LAC – habilita a carga do acumulador, ativo emzero, sensível a transição positiva do clock

• 

 /BAC – habilita o buffer do acumulador paraenvio do dado ao barramento de dados interno,ativo em zero

•  MDR – seleciona o dado a ser armazenado noRegistrador de Dados (0 – A, 1 – B)

• 

 /LDR – habilita a carga do Registrador de

Dados, sensível a transição positiva do clock

•   /BDI – habilita buffer do Registrador de Dadospara envio do dado ao barramento de dadosinterno, ativo em zero

•   /BDE – habilita buffer do Registrador de Dadospara envio do dado ao barramento de dadosexterno, ativo em zero

3.2 Unidade de controle

A unidade de controle é composta pelo contador deprograma, pelos registradores (de endereço einstruções) e circuito de controle. Isto é mostrado na

Figura 6.

Figura 6: Unidade de controle com a unidade de dados

Barramento

de endereço

CONTADORDE

PROGRAMA

A

MUX

B

REGISTRADOR

DE ENDEREÇO

REGISTRADOR

DEINSTRUÇÕESUNIDADE DE

DADOS

CONTROLE

FLAGS

CIRCUITO DE

CONTROLE

CLK

8

4

12

CLK

 /LRI

8

8

8

 /LCP

 /ICP

 /RESET

CLK

8

8

 /LRECLK8

Barramento de

dados externo

8

Barramento de dados interno

8

MRE

 /RESET

 /MEM /RD /WR /IO

Page 7: 48-68-1-SM

7/23/2019 48-68-1-SM

http://slidepdf.com/reader/full/48-68-1-sm 7/8

Os componentes da unidade de controle possuemas seguintes características e funções:

• 

Registrador de endereço – registrador de 8 bits,com controle de carga (/LRE) e sensível atransição positiva do clock. Tem como funçãoarmazenar o endereço da memória que estásendo acessado.

•  Registrador de instruções – registrador de 8 bits,com controle de carga (/LRI) e sensível atransição positiva do clock. Tem como funçãoarmazenar o código da instrução buscada namemória, e que será executada.

• 

Contador de programa – contador crescente de 8bits, com controles de clear assíncrono(/RESET), incremento síncrono (/ICP), e cargasíncrona (/LCP), sensível a transição positiva doclock. Tem como função indicar a posição deendereço de memória onde está armazenado apróxima instrução a ser buscada.

•  Circuito de controle – máquina sequencial quegera os sinais de controle para a unidade dedados, unidade de controle, porta deentrada/saída e para a memória, de acordo com odado armazenado no registrador de instruções.

Sensível a transição negativa do clock. Amáquina sequencial permite que a CPU executeas instruções indicadas na Tabela 2.

Os sinais de controle da unidade de controle são:

•   /LCP – habilita a carga do contador deprograma, ativo em zero, sensível a transiçãopositiva do clock.

• 

 /ICP – habilita a contagem (incremento) docontador de programa, ativo em zero, sensível atransição positiva do clock.

• 

 /RESET – limpa (zera) o contador de programa

e inicializa o circuito de controle, ativo em zero,assíncrono.

•  MRE – seleciona o dado a ser armazenado noRegistrador de Endereço.

•   /LRE – habilita a carga do Registrador deEndereço, ativo em zero, sensível a transiçãopositiva do clock.

•   /LRI – habilita a carga do Registrador deInstruções, ativo em zero, sensível a transiçãopositiva do clock.

•  FLAGS - (4 bits) identifica o status da ULA

Tabela 2: Código de instruçõesCódigo

Instrução(hexadecimal)

Descrição Símbolo

00 Não faz nada NOP08 Soma: ACC=ACC+M(X) ADD X10 Subtração: ACC=ACC-M(X) SUB X18 ACC=ACC and M(X) AND X20 ACC=ACC or M(X) ORA X28 ACC=ACC xor M(X) XOR X30 Complementa ACC: ACC=/ACC NOT38 ACC = ACC + 1 INC40 ACC = ACC - 1 DEC48 ACC = ACC/2 SHR50 ACC = ACC*2 SHL58 ACC = -ACC NEG80 ACC = 0 CLR88 ACC = M(X) LDA X90 M(X) = ACC STA XA0 Pula incondicionalmente para posição

XJMP X

A8 Pula para posição X se ACC = 0 JEZ XB0 Pula para posição X se ACC positivo

ou zeroJGE X

B8 Pula para posição X se ACC negativo JLZ XC0 Pula para posição X se houve vai-um JMC XC8 Pula para posição X se houve

overflowJMO X

D0 Lê a porta de entrada e armazena noACC

INP

D8 Escreve o conteúdo de ACC na portade saída OUT

FF Pára o processamento HLTX – endereço de memória de 8 bits

M - memória

ACC – Registrador acumulador

4 Funcionamento da CPU

A CPU possui o funcionamento descrito a seguir.Inicialmente, o sinal de reset é ativado, fazendo ocontador de programa começar com o valor zero. ACPU então está pronta para executar instruçõesarmazenadas na memória, obedecendo dois ciclos de

funcionamento: ciclo de busca da instrução (ciclo defetch), e ciclo de execução

4.1 Ciclo de busca da instrução

Após a ativação do sinal de reset, é carregado o valordo contador de programa no barramento de endereço.A memória é ativada para leitura, e seu dado écarregado no registrador de instruções. O contador deprograma é incrementado automaticamentepreparando para ler o próximo dado na memória.

4.2 Ciclo de execução

Após o ciclo de fetch, a instrução carregada édecodificada pelo circuito de controle que gera os

Page 8: 48-68-1-SM

7/23/2019 48-68-1-SM

http://slidepdf.com/reader/full/48-68-1-sm 8/8

sinais de controle em sequência para execução dainstrução. Se um dado é buscado na memória naexecução da instrução, o contador de programa éatualizado. Quando termina de executar a instrução,o ciclo de fetch é reiniciado com o novo valor docontador de programa.

4.3 Circuito de controle

O circuito de controle é a parte mais complexa daCPU. Existem várias formas para implementação docircuito de controle [1]: microprogramado, máquinade estado e contador de sequência. O métodoproposto é o contador de sequência por ser mais

simples. Ele é mostrado na Figura 7 e descrito aseguir.

Figura 7: Circuito de controle

O contador deslocador gera sinais sequenciais acada pulso de clock (transição negativa) de acordocom as formas de onda mostradas na Figura 8. A suafunção é marcar o tempo e ordem de ativação dossinais de controle.

O decodificador de instruções ativa a sua saídacorrespondente a instrução armazenada noregistrador de instruções. O circuito combinacionalgera os sinais de controle na sequência apropriada

para busca da instrução (durante ativação de T0, T1 eT2), e posteriormente gera os sinais de controle para

execução da correspondente instrução (duranteativação de T3 à Tn).

Figura 8: Sinais gerados pelo contador deslocador

5 Conclusão

Neste artigo foi apresentado uma proposta de projetode um processador digital (CPU) simples. O projeto éutilizado na disciplina de Arquitetura deComputadores por ser de fácil assimilação pelosestudantes do curso, além de providenciar um

aprendizado eficaz no estudo do funcionamento deum processador. O projeto pode ser implementadoutilizando-se circuitos integrados comuns de fácilaquisição, ou mesmo através de programação dedispositivo FPGA. A proposta da CPU pode tambémser simulada em computador utilizando-se programassimuladores de circuitos digitais.

6 Referências bibliográficas

[1] HAYES, John Patrick. Computer Architectureand Organization. Singapore: McGraw-HillInternational, 2a edição, 1988, 702p.

[2] MALVINO, Albert P. Microcomputadores eMicroprocessadores. São Paulo: McGraw-Hill do Brasil, 1985, 578p.

[3] PATTERSON, David A. e HENNESSY, JohnL. Computer Organization and Design: TheHardware/Software Interface. SanFrancisco: Morgan Kaufmann, 2a  edição,1998, 980p.

[4] TANEMBAUM, Andrew S. OrganizaçãoEstruturada de Computadores. Rio deJaneiro: Livros Técnicos e Científicos, 1999,3a edição, 460p.

T0

T1

T2

Tn...

...

...

...

...

...

...

...

Decodificador de

instruções

NOP

ADD

SUB

HLT

...

8

Vêm do registrador deInstruções

T0

T1

T2

Contador

Deslocador

Tn

.

.

.

Circuito

Combinacional

...

Sinais de Controle

internos e externos

CLK /RESET

4

Vêm doregistrador de

Flags