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