Unidade Central de Processamento

Preview:

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

Recommended