Você está na página 1de 28

05/09/2009

O Computador Neander
eander - Computador Hipottico Didtico

[Weber 2001] Fundamentos de Arquitetura de Computadores. Raul Weber - Ed. Sagra. Site - ftp://ftp.inf.ufrgs.br/pub/inf107/

O Computador Neander

Arquitetura: caractersticas gerais


Largura de dados e endereos de 8 bits Dados representados em complemento de 2 1 acumulador de 8 bits (AC) 1 apontador de programa de 8 bits (PC) 1 registrador de estado com 2 cdigos de condio: negativo (N) e zero (Z)
* Esta pseudo-mquina foi criada em homenagem ao homem de eanderthal, o antecessor do Homo Sapiens. :-) * Computadores e Simuladores didticos criados a partir da srie iniciada pelo eander: eander , Ahmes, Ramses e Cesar Simuladores eander, Ahmes, Daedalus (Multi-Assembler Ahmes, Ramses e Cesar)

05/09/2009

O Computador Neander

Organizao: alguns elementos necessrios


Um registrador de 8 bits para servir de acumulador Um registrador de 8 bits para o PC (registradorcontador) Dois flip-flops: um para o cdigo de condio N e outro para Z Uma memria de 256 posies (endereos) x 8 bits

O Computador Neander
eander - Instruction Set

Arquitetura: conjunto de instrues


cdigo 0000 0001 0010 0011 0100 0101 0110 1000 1001 1010 1111 instruo NOP STA end LDA end ADD end OR end AND end NOT JMP end JN end JZ end HLT comentrio Nenhuma operao MEM(end) AC AC MEM(end) AC MEM(end) + AC AC MEM(end) OR AC AC MEM(end) AND AC AC NOT AC PC end IF N=1 THEN PC end IF Z=1 THEN PC end pra processamento

05/09/2009

O Computador Neander

Arquitetura: formato das instrues


As instrues do Neander possuem um ou dois bytes (ocupam uma ou duas posies de memria)
Instrues com um byte: OP, OT
7 cdigo da oper. 4 3 dont care 0

Instrues com dois bytes: STA, LDA, ADD, OR, A D, JMP, J , JZ

7 cdigo da oper.

4 3 dont care

endereo direto

O Computador Neander

Arquitetura: conjunto de instrues


cdigo 0000 0001 0010 0011 0100 0101 0110 1000 1001 1010 1111 instruo NOP STA end LDA end ADD end OR end AND end NOT JMP end JN end JZ end HLT comentrio Nenhuma operao MEM(end) AC AC MEM(end) AC MEM(end) + AC AC MEM(end) OR AC AC MEM(end) AND AC AC NOT AC PC end IF N=1 THEN PC end IF Z=1 THEN PC end pra processamento Instrues com dois bytes: STA, LDA, ADD, OR, A D, JMP, J , JZ
7 cdigo da oper. 4 3 dont care 0

Instrues com um byte: OP, OT


7 cdigo da oper. 4 3 dont care 0

endereo direto

05/09/2009

O Computador Neander

Arquitetura: o ciclo de busca (fetch)

Busca instruo

Decodifica instruo

Executa/ Busca operandos

Arquitetura: o ciclo de execuo

O Computador Neander

Arquitetura/Organizao:

transferncias entre regs.

A fase de busca: igual para todas as instrues


RI MEM(PC) PC PC + 1

Novo elemento necessrio: o registrador de instruo (RI) MEM(PC) corresponde a um acesso memria, usando o contedo do PC como fonte do endereo

05/09/2009

O Computador Neander

Arquitetura/Organizao:
Simblico: NOP RT: Passos no nvel RT:
Busca: Execuo:

transferncias entre regs.

Instruo OP (nenhuma operao)


7 4 3 0

NOP

Dont care

RI MEM(PC) PC PC + 1 nenhuma operao

As transferncias indicam quais caminhos de dados devem existir, mas no indicam os caminhos fsicos reais entre os elementos (registradores e ULA)

O Computador Neander

Arquitetura/Organizao:
Simblico: STA end RT: MEM(end) AC Passos no nvel RT:
Busca: Execuo:

transferncias entre regs.

Instruo STA (armazena acumulador)


7 4 3 0

STA end

Dont care

RI MEM(PC) PC PC + 1 end MEM(PC) PC PC + 1 MEM(end) AC

05/09/2009

O Computador Neander

Arquitetura/Organizao:
Simblico: LDA end RT: AC MEM(end) Passos no nvel RT:
Busca: Execuo: RI MEM(PC) PC PC + 1 end MEM(PC) PC PC + 1

transferncias entre regs.

Instruo LDA (carrega acumulador)


7 4 3 0

LDA end

Dont care

AC MEM(end); atualiza N e Z

O Computador Neander

Arquitetura/Organizao:
Instruo ADD (soma)
Simblico: ADD end RT: AC MEM(end) + AC Passos no nvel RT:
Busca: Execuo: RI MEM(PC) PC PC + 1 end MEM(PC) PC PC + 1

transferncias entre regs.

4 3

ADD end

Dont care

AC AC + MEM(end); atualiza N e Z

05/09/2009

O Computador Neander

Arquitetura/Organizao:
Simblico: OR end RT: AC MEM(end) OR AC Passos no nvel RT:
Busca: Execuo: RI MEM(PC) PC PC + 1 end MEM(PC) PC PC + 1

transferncias entre regs.

Instruo OR (ou lgico, bit a bit)


7 4 3 0

OR end

Dont care

AC AC OR MEM(end); atualiza N e Z

O Computador Neander

Arquitetura/Organizao:
Simblico: AND end RT: AC MEM(end) AND AC Passos no nvel RT:
Busca: Execuo: RI MEM(PC) PC PC + 1 end MEM(PC) PC PC + 1

transferncias entre regs.

Instruo A D (e lgico, bit a bit)


7 4 3 0

AND end

Dont care

AC AC AND MEM(end); atualiza N e Z

05/09/2009

O Computador Neander

Arquitetura/Organizao:
Simblico: NOT RT: AC NOT AC Passos no nvel RT:
Busca: Execuo: RI MEM(PC) PC PC + 1

transferncias entre regs.

Instruo OT (complementa acumulador)


7 4 3 0

NOT

Dont care

AC NOT(AC); atualiza N e Z

O Computador Neander

Arquitetura/Organizao:
Simblico: JMP end RT: PC end Passos no nvel RT:
Busca: Execuo:

transferncias entre regs.

Instruo JMP (desvio incondicional - jump)


7 4 3 0

JMP end

Dont care

RI MEM(PC) PC PC + 1 end MEM(PC) PC end

05/09/2009

O Computador Neander

Arquitetura/Organizao:
Simblico: JN end RT: IF N = 1 THEN PC end Passos no nvel RT: Se N=1 (desvio ocorre)
Busca: Execuo: RI MEM(PC) PC PC + 1 end MEM(PC) PC end

transferncias entre regs.

Instruo J (desvio condicional - jump on negative)


7 4 3 0

JN end

Dont care

Se N=0 (desvio no ocorre)


Busca: Execuo: RI MEM(PC) PC PC + 1 end MEM(PC) PC PC + 1 a rigor, desnecessrio

O Computador Neander

Arquitetura/Organizao:
Simblico: JZ end RT: IF Z = 1 THEN PC end Passos no nvel RT: Se Z=1 (desvio ocorre)
Busca: Execuo: RI MEM(PC) PC PC + 1 end MEM(PC) PC end

transferncias entre regs.

Instruo JZ (desvio condicional - jump on zero)


7 4 3 0

JZ end

Dont care

Se Z=0 (desvio no ocorre)


Busca: Execuo: RI MEM(PC) PC PC + 1 end MEM(PC) PC PC + 1 a rigor, desnecessrio

05/09/2009

O Computador Neander

Arquitetura/Organizao:
Simblico: HLT RT: -Passos no nvel RT:
Busca: Execuo:

transferncias entre regs.

Instruo HLT (trmino de execuo - halt)


7 4 3 0

HLT

Dont care

RI MEM(PC) PC PC + 1 parar o processamento

O Computador Neander

Organizao do Sistema de Memria

R E M

read

MEM
write

RDM

10

05/09/2009

O Computador Neander

Arquitetura/Organizao
Operaes com a memria
descreve uma leitura da memria, que realizada pelos seguintes passos:
x MEM(y)
1. REM y 2. Read 3. x RDM

copia y (que um endereo) para o REM ativao de uma operao de leitura da memria copia o contedo de RDM para x

REM o registrador de endereos da memria RDM o registrador de dados da memria

O Computador Neander

Arquitetura/Organizao
Operaes com a memria
descreve uma escrita da memria, que realizada pelos seguintes passos:
MEM(y) x
1. REM y 2. RDM x 3. write

copia y (que um endereo) para o REM copia x (que um dado) para o RDM ativao de uma operao de escrita na memria

11

05/09/2009

O Computador Neander

Arquitetura/Organizao
Operaes com a memria
Observaes (1)
Aps a leitura do PC, seu contedo deve ser incrementado, para apontar para a prxima posio O incremento do PC pode ser feito a qualquer instante aps a transferncia do PC para o REM O incremento do PC pode ser feito em paralelo com outras operaes

O Computador Neander

Arquitetura/Organizao
Operaes com a memria
Observaes (2)
Um desvio condicional que no se realiza no necessita ler o valor do endereo de desvio Ou seja, basta incrementar o PC

12

05/09/2009

O Computador Neander

Arquitetura/Organizao

Ento, detalhando mais as transferncias entre registradores

O Computador Neander

Arquitetura/Organizao:
Simblico: NOP RT: Passos no nvel RT:
Busca:

transferncias entre regs.

Instruo OP (nenhuma operao)


7 4 3 0

NOP

Dont care

Execuo:

REM PC Read; PC PC + 1 RI RDM nenhuma operao

13

05/09/2009

O Computador Neander

Arquitetura/Organizao:
Simblico: STA end RT: MEM(end) AC Passos no nvel RT:
Busca:

transferncias entre regs.

Instruo STA (armazena acumulador)


7 4 3 0

STA end

Dont care

Execuo:

REM PC Read; PC PC + 1 RI RDM REM PC Read; PC PC + 1 REM RDM RDM AC Write

O Computador Neander

Arquitetura/Organizao:
Simblico: LDA end RT: AC MEM(end) Passos no nvel RT:
Busca:

transferncias entre regs.

Instruo LDA (carrega acumulador)


7 4 3 0

LDA end

Dont care

Execuo:

REM PC Read; PC PC + 1 RI RDM REM PC Read; PC PC + 1 REM RDM Read AC RDM; atualiza N e Z

14

05/09/2009

O Computador Neander

Arquitetura/Organizao:
Instruo ADD (soma)
Simblico: ADD end RT: AC MEM(end) + AC Passos no nvel RT:
Busca:

transferncias entre regs.

4 3

ADD end

Dont care

Execuo:

REM PC Read; PC PC + 1 RI RDM REM PC Read; PC PC + 1 REM RDM Read AC AC + RDM; atualiza N e Z

O Computador Neander

Arquitetura/Organizao:
Simblico: OR end RT: AC MEM(end) OR AC Passos no nvel RT:
Busca:

transferncias entre regs.

Instruo OR (ou lgico, bit a bit)


7 4 3 0

OR end

Dont care

Execuo:

REM PC Read; PC PC + 1 RI RDM REM PC Read; PC PC + 1 REM RDM Read AC AC OR RDM; atualiza N e Z

15

05/09/2009

O Computador Neander

Arquitetura/Organizao:
Simblico: AND end RT: AC MEM(end) AND AC Passos no nvel RT:
Busca:

transferncias entre regs.

Instruo A D (e lgico, bit a bit)


7 4 3 0

AND end

Dont care

Execuo:

REM PC Read; PC PC + 1 RI RDM REM PC Read; PC PC + 1 REM RDM Read AC AC AND RDM; atualiza N e Z

O Computador Neander

Arquitetura/Organizao:
Simblico: NOT RT: AC NOT AC Passos no nvel RT:
Busca:

transferncias entre regs.

Instruo OT (complementa acumulador)


7 4 3 0

NOT

Dont care

Execuo:

REM PC Read; PC PC + 1 RI RDM AC NOT(AC); atualiza N e Z

16

05/09/2009

O Computador Neander

Arquitetura/Organizao:
Simblico: JMP end RT: PC end Passos no nvel RT:
Busca:

transferncias entre regs.

Instruo JMP (desvio incondicional - jump)


7 4 3 0

JMP end

Dont care

Execuo:

REM PC Read; PC PC + 1 RI RDM REM PC Read PC RDM

O Computador Neander

Arquitetura/Organizao:
Simblico: JN end RT: IF N = 1 THEN PC end Passos no nvel RT: Se N=1 (desvio ocorre)
Busca: REM PC Read; PC PC + 1 RI RDM REM PC Read PC RDM

transferncias entre regs.

Instruo J (desvio condicional - jump on negative)


7 4 3 0

JN end

Dont care

Se N=0 (desvio no ocorre)


Busca: REM PC Read; PC PC + 1 RI RDM PC PC + 1

Execuo:

Execuo:

17

05/09/2009

O Computador Neander

Arquitetura/Organizao:
Simblico: JZ end RT: IF Z = 1 THEN PC end Passos no nvel RT: Se Z=1 (desvio ocorre)
Busca: REM PC Read; PC PC + 1 RI RDM REM PC Read PC RDM

transferncias entre regs.

Instruo JZ (desvio condicional - jump on zero)


7 4 3 0

JZ end

Dont care

Se Z=0 (desvio no ocorre)


Busca: REM PC Read; PC PC + 1 RI RDM PC PC + 1

Execuo:

Execuo:

O Computador Neander

Arquitetura/Organizao:
Simblico: HLT RT: -Passos no nvel RT:
Busca:

transferncias entre regs.

Instruo HLT (trmino de execuo - halt)


7 4 3 0

HLT

Dont care

Execuo:

REM PC Read; PC PC + 1 RI RDM parar o processamento

18

05/09/2009

O Computador Neander
eander - Parte II: Arquitetura Interna

Arquitetura: conjunto de instrues


cdigo 0000 0001 0010 0011 0100 0101 0110 1000 1001 1010 1111 instruo NOP STA end LDA end ADD end OR end AND end NOT JMP end JN end JZ end HLT comentrio Nenhuma operao MEM(end) AC AC MEM(end) AC MEM(end) + AC AC MEM(end) OR AC AC MEM(end) AND AC AC NOT AC PC end IF N=1 THEN PC end IF Z=1 THEN PC end pra processamento

O Computador Neander

Organizao: transferncias necessrias


Analisando todas as descries RT, a agrupando pelo registrador destino, tem-se:
RI RDM RDM AC Write Read AC RDM; atualiza e Z AC AC + RDM; atualiza e Z AC AC OR RDM; atualiza e Z AC AC A D RDM; atualiza e Z AC OT(AC); atualiza e Z PC RDM PC PC + 1 REM PC REM RDM

19

05/09/2009

O Computador Neander

Organizao: registradores
AC: um registrador de 8 bits PC: um registrador de 8 bits (registrador-contador) RI: um registrador de 4 bits (ou 8) RDM: um registrador de 8 bits (largura do dado) REM: um registrador de 8 bits (largura do endereo) N: um flip-flop para o cdigo de condio N Z: um flip-flop para o cdigo de condio Z Uma memria de 256 posies (endereos) x 8 bits

O Computador Neander

Organizao do Sistema de Memria


R E M
read

MEM
write

cargaRDM

Associados Memria: - RDM (dados) - REM (endereos) - sinal de escrita (write) - sinal de leitura (read)

cargaREM

RDM

Cada registrador controlado por um sinal de carga

20

05/09/2009

O Computador Neander

Organizao da Unid. Aritmtica e Lgica


Associados UAL: - 4 operaes (ADD, AND, OR, NOT) - sinal de controle (seleo) - sinais de condio (N,Z)

X
selUAL

UAL
N Z
cargaNZ

Flip-Flops devem ter sinal de carga

O Computador Neander

Organizao do Registrador de Instruo


Associados ao Reg. de Instrues (4 ou 8 bits??): - Decodificador (4 bits para 16 instrues) - sinais de condio (N,Z) (para JN e JZ) - registrador deve ter sinal de carga

opcode
DECOD.

cargaRI
dont care

N Z
cargaNZ

Unidade de Controle sinais de controle

21

05/09/2009

O Computador Neander

Operaes na UAL
R E M
read

MEM
write

cargaRDM cargaREM cargaAC

RDM

AC

X
selUAL

UAL
N Z
cargaNZ

AC AC + RDM; atualiza e Z AC AC OR RDM; atualiza e Z AC AC A D RDM; atualiza e Z AC OT(AC); atualiza e Z Dvida: AC RDM; atualiza

e Z (via UAL)

O Computador Neander

Situao at aqui
R E M
read

MEM
write

cargaRDM cargaREM cargaAC

RDM

AC

Sinais de Controle
X
selUAL

opcode
DECOD.

dont care

UAL
N Z
cargaNZ

Unidade de Controle

RI RDM RDM AC Write Read AC RDM; atualiza e Z AC AC + RDM; atualiza e Z AC AC OR RDM; at. e Z AC AC A D RDM; at. e Z AC OT(AC); atualiza e Z sinais de controle PC RDM PC PC + 1 REM PC REM RDM
cargaRI

22

05/09/2009

O Computador Neander

Acrescentado Escrita do AC
R E M
read

MEM
write

cargaRDM cargaREM cargaAC

RDM

AC

Sinais de Controle
X
selUAL

opcode
DECOD.

dont care

UAL
N Z
cargaNZ

Unidade de Controle

RI RDM RDM AC Write Read AC RDM; atualiza e Z AC AC + RDM; atualiza e Z AC AC OR RDM; at. e Z AC AC A D RDM; at. e Z AC OT(AC); atualiza e Z sinais de controle PC RDM PC PC + 1 REM PC REM RDM
cargaRI

O Computador Neander

Acrescentado Program Counter (PC)


O incremento do PC pode ser feito: Por meio de um somador dedicado Usando a ULA Por meio de um registradorcontador

23

05/09/2009

O Computador Neander

Acrescentado Program Counter (PC)


PC R E M
cargaPC incrementaPC cargaREM read

MEM
write

cargaRDM

RDM

cargaAC

AC

Sinais de Controle
X
selUAL

opcode
DECOD.

dont care

UAL
N Z
cargaNZ

Unidade de Controle

RI RDM RDM AC Write Read AC RDM; atualiza e Z AC AC + RDM; atualiza e Z AC AC OR RDM; at. e Z AC AC A D RDM; at. e Z AC OT(AC); atualiza e Z sinais de controle PC RDM PC PC + 1 REM PC REM RDM
cargaRI

O Computador Neander

Valores para o REM


Existem duas transferncias para o REM REM PC REM RDM O nico registrador que recebe dados de duas fontes o REM Para solucionar multiplexador este conflito usa-se um

24

05/09/2009

O Computador Neander

Organizao final
sel

PC M U X
cargaPC incrementaPC cargaAC cargaREM

R E M

read

MEM
write

cargaRDM

RDM

AC

X
selUAL

opcode
DECOD.

cargaRI
dont care

UAL
N Z
cargaNZ

Unidade de Controle sinais de controle

O Computador Neander

A Organizao: sinais de controle para


cada transferncia
Transferncia REM PC PC PC + 1 RI RDM REM RDM RDM AC AC RDM; atualiza N e Z AC AC + RDM; atualiza N e Z AC AC AND RDM; atualiza N e Z AC AC OR RDM; atualiza N e Z AC NOT(AC); atualiza N e Z PC RDM Sinais de controle
sel=0, cargaREM incrementaPC cargaRI sel=1, cargaREM cargaRDM selUAL(Y), cargaAC, cargaNZ selUAL(ADD), cargaAC, cargaNZ selUAL(AND), cargaAC, cargaNZ selUAL(OR), cargaAC, cargaNZ selUAL(NOT), cargaAC, cargaNZ cargaPC

25

05/09/2009

O Computador Neander Temporizao dos sinais de controle (parte 1)


tempo STA t0 sel=0, carga REM t1 Read, incrementa PC t2 carga RI t3 sel=0, carga REM t4 t5 t6 t7 Read, incrementa PC sel=1, carga REM carga RDM Write, goto t0 LDA sel=0, carga REM Read, incrementa PC carga RI sel=0, carga REM Read, incrementa PC sel=1, carga REM Read UAL(Y), carga AC, carga NZ, goto t0 ADD sel=0, carga REM Read, incrementa PC carga RI sel=0, carga REM Read, incrementa PC sel=1, carga REM Read UAL(ADD), carga AC, carga NZ, goto t0 OR sel=0, carga REM Read, incrementa PC carga RI sel=0, carga REM Read, incrementa PC sel=1, carga REM Read UAL(OR), carga AC, carga NZ, goto t0 AND sel=0, carga REM Read, incrementa PC carga RI sel=0, carga REM Read, incrementa PC sel=1, carga REM Read UAL(AND, carga AC, carga NZ, goto t0 NOT sel=0, carga REM Read, incrementa PC carga RI UAL(NOT), carga AC, carga NZ, goto t0

O Computador Neander Temporizao dos sinais de controle (parte 2)


tempo JMP t0 sel=0, carga REM t1 Read, incrementa PC t2 carga RI t3 sel=0, carga REM t4 Read t5 carga PC, goto t0 t6 t7 JN, N=1 sel=0, carga REM Read, incrementa PC carga RI sel=0, carga REM Read carga PC, goto t0 JN, N=0 sel=0, carga REM Read, incrementa PC carga RI incrementa PC, goto t0 JZ, Z=1 sel=0, carga REM Read, incrementa PC carga RI sel=0, carga REM Read carga PC, goto t0 JZ, Z=0 sel=0, carga REM Read, incrementa PC carga RI incrementa PC, goto t0 NOP sel=0, carga REM Read, incrementa PC carga RI goto t0 HLT sel=0, carga REM Read, incrementa PC carga RI Halt

26

05/09/2009

O Computador Neander Gerador dos sinais de temporizao


Clock HLT goto t0

contador

t0 t1 t2 t3 t4 t5 t6 t7

O Computador Neander Expresses booleanas dos sinais de controle


carga REM = t0 + t3.(STA+LDA+ADD+OR+AND+JMP+JN.N+JZ.Z + t5.(STA+LDA+ADD+OR+AND) incrementa PC = t1 + t4.(STA+LDA+ADD+OR+AND) + t3.(JN.N + JZ.Z) carga RI = t2 sel = t5.(STA+LDA+ADD+OR+AND) carga RDM = t6.STA Read = t1 + t4.(STA+LDA+ADD+OR+AND+JMP+JN.N+JZ.Z) + t6.(LDA+ADD+OR+AND) Write = t7.STA UAL(Y) = t7.LDA UAL(ADD) = t7.ADD UAL(OR) = t7.OR UAL(AND) = t7.AND UAL(NOT) = t3.NOT carga AC = t7.(LDA+ADD+OR+AND) + t3.NOT carga NZ = t7.(LDA+ADD+OR+AND) + t3.NOT = carga AC carga PC = t5.(JMP+JN.N+JZ.Z) goto t0 = t7.(STA+LDA+ADD+OR+AND) + t3.(NOP+NOT+JN.N+JZ.Z) + t5.(JMP+JN.N+JZ.Z)

27

05/09/2009

O Computador Neander Prximos passos...


Implementao de um Simulador Programao em Cdigos Neander Simulao

E por que no...


Implementao do Neander em Hardware!
> Hardware Reconfigurvel FPGA :-)
Material baseado nos slides originais sobre o Neander disponveis no site - ftp://ftp.inf.ufrgs.br/pub/inf107/

28