Upload
march
View
48
Download
6
Embed Size (px)
DESCRIPTION
Unidade Central de Processamento. Sistemas Digitais CIn-UFPE. Unid. controle. Memória Programas + Dados. Vídeo. IR. PC. MAR. Teclado. Gerais. MBR. ALU. E/S. Unid. processamento. Buffers. Como funciona um computador simples. IR – Instruction Register PC – Program Counter - PowerPoint PPT Presentation
Citation preview
Unidade Central de Processamento
Sistemas Digitais
CIn-UFPE
Como funciona um computador simples
Vídeo
Teclado
Memória
Programas+
Dados
E/S
Buffers
ALU
PCIR
Gerais
MARMAR
MBRMBR
Unid. processamento
Unid. controle
IR – Instruction RegisterPC – Program CounterMAR – Memory Address RegisterMBR – Memory Bus Register
Como funciona um computador?
Busca a próximainstrução
Busca a próximainstrução
Executa a instrução
Executa a instrução
Início
Término
Executando um programa
Busca instruçãoBusca instrução
Executa instruçãoExecuta instrução
Busca operandoBusca operando
Decodifica instruçãoDecodifica instrução
Armazena resultadoArmazena resultado
Incrementa PCIncrementa PC
Exemplo – Declarações simples Muitas vezes o processamento de uma informação exige uma seqüência de
transferência até que a tarefa seja terminada.
Exemplo 01:/* Programa que a função (a+b-c) e mostra o resultado (z = a+b-c)Sigad: CLRLD /* Clear acumulador Y, Z e carrega valor de A em X
ADD /*ADD 1o. valor, guarda resultado e lê novo valor ADD /*ADD 2o .valor, guarda resultado e lê novo valor SUB /*SUB 3o .valor, guarda resultadoDISP Sigad /*mostra resultado e repete cálculo em Z
Como construir uma unidade de controle que implemente este programa?Estado Estado/saída
QA Sigad: QB/CLRLDQB QC/ADDQC QD/ADDQD QE/SUBQE QA/DISP
Y
+/- X
controleTx
TyZ
Tz
entrada
saída
A
clk
acumulador
Tula
A = a
Z = a+b-c
Clk
Y
+/-X
controleTx
Ty
Tz
QA Sigad: QB/CLRLD
QB QC/ADD
QC QD/ADD
QD QE/SUB
QE QA/DISP
entrada
saída
A = a
-
- -
Q B ADD
A=bY=0X=aZ=0 Ty=1 Tx=1 Tz=2 Tula=0
A = b
a
0 0
Q C ADD
A=cY=aX=bZ=0 Ty=1 Tx=1 Tz=2 Tula=0
A = c
b
a 0
Q D SUB
A=-Y=a+bX=cZ=0 Ty=1 Tx=1 Tz=2 Tula =1
A = -
c
a+b 0
Q E
A=-Y=a+b-cX=-Z=0 Ty=0 Tx=0 Tz=1
DISP
A = -
-
a+b-c 0
A=-Y=-X=-Z= a+b-c
Q A
A = -
-
- a+b-cZ
Clk
Clk
T[0] = clear[1] = load[2] = hold
Q A CLRLD
A=aY=-X=-Z=- Ty=0 Tx=1 Tz=0 Tula=0
Instruções Ty, Tx, Tz Tula
CLRLD = [ 0, 1, 0, x ] ADD = [ 1, 1, 2, 0 ]SUB = [ 1, 1, 2, 1 ]DISP = [ 0, 0, 1, x ]
TulaTz
Tula[0] = +[1] = -
-aa+ba+b-c-
saídaY
+/-X
controleTx
TyZ
Tz
entrada
A
clk
Z = a + b - c
X = -; Y=-; Z= -; 00 [0,1,0,x] CLRLD end+0(a)
X = a; Y=0; Z= 0;
05 - -------
memória
cpu
memória
cpu
memória
01 [1,1,2,0] ADD end+1(b)
X = b; Y=a; Z= 0;02 [1,1,2,0] ADD end+2(c) X = c ; Y= a+b; Z =0;03 [1,1,2,1] SUB -
X = -; Y= a+b-c; Z =0; X = -; Y= a+b-c; Z =a+b-c;
04 [0,0,1,x] DISP -
memória
Inst |dados
Z = a+b-c
Busca instruçãoBusca instrução
Executa instruçãoExecuta instrução
Busca operandoBusca operando
Decodifica instruçãoDecodifica instrução
Armazena resultadoArmazena resultado
Incrementa PCIncrementa PC
Busca instruçãoBusca instrução
Executa instruçãoExecuta instrução
Busca operandoBusca operando
Decodifica instruçãoDecodifica instrução
Armazena resultadoArmazena resultado
Incrementa PCIncrementa PC
Execução de um progamaContador de
programa
Memória:
Instruções end(dados)
Contador do
Programa (PC)
cpu
Instruções Ty, Tx, Tz Tula
CLRLD = [ 0, 1, 0, x]ADD = [ 1, 1, 2, 0]SUB = [ 1, 1, 2, 1]DISP = [ 0, 0, 1, x]
Tula
Memória
0 15
sinal
Dado
Instrução
magnitude
0 153
Opcode Endereço
4
Opcode
0001 AC <- Mem.0010 Mem. <- AC0101 AC <- AC + Mem.
Executando um programa
1 9 4 0
5 9 4 12 9 4 1
0 0 0 3
0 0 0 2
3 0 0
1 9 4 0
3 0 0
9 4 1
9 4 0
3 0 2
3 0 1PC (endereço)
AC (operando)
IR (Instrução)
Registradores da CPU
...
MemóriaOpcode | endereço
dados
0001 AC <- Mem.0010 Mem. <- AC0101 AC <- AC + Mem.
Executando um programa
1 9 4 0
5 9 4 12 9 4 1
0 0 0 3
0 0 0 2
3 0 0
1 9 4 0
3 0 0
9 4 1
9 4 0
3 0 2
3 0 1
PC
AC
IR
Registradores da CPU
...
0 0 0 3
MemóriaOpcode | endereço
dados
0001 AC <- Mem.0010 Mem. <- AC0101 AC <- AC + Mem.
Executando um programa
1 9 4 0
5 9 4 12 9 4 1
0 0 0 3
0 0 0 2
3 0 1
5 9 4 1
3 0 0
9 4 1
9 4 0
3 0 2
3 0 1
PC
AC
IR
Registradores da CPU
...
0 0 0 3
MemóriaOpcode | endereço
dados
0001 AC <- Mem.0010 Mem. <- AC0101 AC <- AC + Mem.
Executando um programa
1 9 4 0
5 9 4 12 9 4 1
0 0 0 3
0 0 0 2
3 0 1
5 9 4 1
3 0 0
9 4 1
9 4 0
3 0 2
3 0 1
PC
AC
IR
Registradores da CPU
...
0 0 0 5
161616 523
MemóriaOpcode | endereço
dados
0001 AC <- Mem.0010 Mem. <- AC0101 AC <- AC + Mem.
Executando um programa
1 9 4 0
5 9 4 12 9 4 1
0 0 0 3
0 0 0 2
3 0 2
2 9 4 1
3 0 0
9 4 1
9 4 0
3 0 2
3 0 1
PC
AC
IR
Registradores da CPU
...
0 0 0 5
MemóriaOpcode | endereço
dados
0001 AC <- Mem.0010 Mem. <- AC0101 AC <- AC + Mem.
Executando um programa
1 9 4 0
5 9 4 12 9 4 1
0 0 0 3
0 0 0 5
3 0 2
2 9 4 1
3 0 0
9 4 1
9 4 0
3 0 2
3 0 1
PC
AC
IR
Registradores da CPU
...
0 0 0 5
MemóriaOpcode | endereço
dados
0001 AC <- Mem.0010 Mem. <- AC0101 AC <- AC + Mem.
Processor
Memory Input/Ouput
Data Bus
Address Bus
PC IR
AC
MDR
MAR
ALU
Control Unit
Arquitetura do computador
PC = Program counterIR = Instruction registerAC = AcumuladorMAR = Memory Address RegisterMDR = Memory Data Register ALU = Arithmetic & Logic Unit
MemóriaDispositivo de entrada e saída(E/S)
Arquitetura do computador
PC - program counter – indica a próxima instrução a ser executada.
IR - Instruction register – recebe a instrução a ser decodificada pela CPU.
AC – Acumulador (registrador auxiliar). Guarda temporariamente valores sendo calculados.
MAR – Registrador que indica a próxima posição de memória a ser referenciada. Conectado ao barramento de endereços.
MDR – Registrador usado para receber ou transmitir dados. Conectado ao barramento de dados.
ALU (ULA) – Unidade Lógica
Instruções básicas
Opcode Address
15 8 7 0
Formato da instrução do computador
Assembly Language MachineLanguageLOAD B 0211ADD C 0012
CPU - P1
Conjunto de instruções básicas– Exemplo de um programa no P1:
A = B+C
A (acumulador), B e C são endereços de memória
LOAD address AC <= contents of memory address (02) B(11)
ADD address AC <= AC + contents of memory address (00) C(12)
Fetch Next Instruction
Decode Instruction
Execute Instruction
CPU - P1
Fluxo de execução de instruções
EXECUTE
MAR=PC IR=MDR
PC=PC+1 Read Memory
MDR=AC Write Memory
AC=MDR AC=AC+MDR
MAR=IR Read
Memory
FETCH
DECODE
Opcode=ADD Opcode=LOAD Opcode=STORE
...
CPU - P1
Fluxo de execução de instruções detalhada
CPU - P1
LOAD B
Opcode address
02 11
Load address AC<- conteúdo do endereço de memória
1.
2.
PC
ADD C
Load B 1.
02 11
00 04
2. ADD C
00
00 12
00 12 01 01
02
1100
04
00
1200
03
00 03 00 04
00 0
4
00 07
02 1100 0400 1200 03
0112110112110112
A = B+CA (acumulador), B e C são endereços de memória
Assembly Language MachineLanguageLOAD B 0211ADD C 0012
00 07
Projetos – 2a unidade
Projeto 1:Máquina de vender bombons
Implementar uma máquina que vende bombons, com as seguintes funcionalidades:– A máquina aceita moedas de 5 e 10 centavos– O valor de cada bombom é de 15 centavos– A máquina não dá troco, mas guarda os 5 centavos caso o cliente deposite duas
moedas de 10 Centavos– O bombom é liberado automaticamente assim que o valor atinge um valor igual ou
maior que 15C.– Os valores acumulados são apresentados no display.
Desenvolver todo o projeto por escrito, no papel– Diagrama de estados– Tabelas verdade– Esquemático– Mostra simulação na ferramenta Quartus+II – Implementar na placa FPGA
Projeto
b
a
c
d
e
f gclk
4
Controle
Decoder
BCD7-Segm.
4
Dispositivo de I/OSaídaEntrada
reset
b
a
c
d
e
f g
Liberar bombom
Moedas5C
10C
Y
ULAX
Controle
Decodificadorde instruções
Tx
TyZ
Tz
Dispositivo de saída
clk
acumulador
Tula
PC
Memória
Inst
ruçõ
es
| D
ados
Instrução Dados
4 bits 4 bits
0 1 ……..n
Barramento de dados
Barramento de dados (Instruções)
CPU
Status
Barramento de Endereços
Projeto 2: CPU
b
a
c
d
e
f g
decodificador
Projeto Implementar as seguintes funções na arquitetura computacional
projetada
1. A = B+C-D
2. A = (B+C)/2
Onde:
A é o acumulador
B, C e D são endereços de memória que armazenam os dados (positivo ou negativos) a serem processados
A, B, C e D possuem 4 bits