28
Unidade Central de Processamento Sistemas Digitais CIn-UFPE

Unidade Central de Processamento Sistemas Digitais CIn-UFPE

Embed Size (px)

Citation preview

Page 1: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

Unidade Central de Processamento

Sistemas Digitais

CIn-UFPE

Page 2: 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

Page 3: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

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

Page 4: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

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

Page 5: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

Exemplo - Simple statementsExemplo:/* Programa que repete uma seqüência de adições de três sinais de entrada (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 ADD /*ADD 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/CLRLD

QB QC/ADD

QC QD/ADD

QD QE/ADD

QE QA/DISP

Y

+X

controleTy

TxZ

Tz

entrada

saída

A

clk

Page 6: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

Z = a+b+c

Clk

Y

+X

controleTx

Ty

Tz

QA Sigad: QB/CLRLD

QB QC/ADD

QC QD/ADD

QD QE/ADD

QE QA/DISP

entrada

saída

A = a

-

- -

Q B

ADD

A=bY=0X=aZ=0 Ty=1 Tx=1 Tz=2

A = b

a

0 0

Q C

ADD

A=cY=aX=bZ=0 Ty=1 Tx=1 Tz=2

A = c

b

a 0

Q D

ADD

A=-Y=a+bX=cZ=0 Ty=1 Tx=1 Tz=2

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

Page 7: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

saídaY

+X

controleTx

TyZ

Tz

entrada

A

clk

Z = a + b + c

X = -; Y=-; Z=-; 00 CLRD end+0(a)

X = a; Y=0; Z=0;

05 - -------

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 progama

memória

cpu

memória

cpu

memória

Contador deprograma

Memória:

Instruções end(dados)Contador do

Programa (PC)

cpu

01 ADD end+1(b)

X = b; Y=a; Z=0;02 ADD end+2(c) X = c ; Y= a+b; Z =0;03 ADD -

X = -; Y= a+b+c; Z =0; X = -; Y= a+b+c; Z =a+b+c;

04 DISP -

Instruções end (dados)

memória

Inst |dados

Page 8: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

Memória

0 15

sinal

Dado

Instrução

magnitude

0 153

Opcode Endereço

4

0001 AC <- Mem.0010 Mem. <- AC0101 AC <- AC + Mem.

Opcode

Page 9: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

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

...

0001 AC <- Mem.0010 Mem. <- AC0101 AC <- AC + Mem.

MemóriaOpcode | endereço

dados

Page 10: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

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

0001 AC <- Mem.0010 Mem. <- AC0101 AC <- AC + Mem.

MemóriaOpcode | endereço

dados

Page 11: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

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

0001 AC <- Mem.0010 Mem. <- AC0101 AC <- AC + Mem.

MemóriaOpcode | endereço

dados

Page 12: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

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

0001 AC <- Mem.0010 Mem. <- AC0101 AC <- AC + Mem.

MemóriaOpcode | endereço

dados

Page 13: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

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

0001 AC <- Mem.0010 Mem. <- AC0101 AC <- AC + Mem.

MemóriaOpcode | endereço

dados

Page 14: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

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

0001 AC <- Mem.0010 Mem. <- AC0101 AC <- AC + Mem.

MemóriaOpcode | endereço

dados

Page 15: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

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)

Page 16: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

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

Page 17: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

Instruction Mnemonic Operation Preformed Opcode Value ADD address AC <= AC + contents of memory address 00 STORE address contents of memory address <= AC 01 LOAD address AC <= contents of memory address 02 JUMP address PC <= address 03 JNEG address If AC < 0 Then PC <= address 04

Instruções básicas

Opcode Address

15 8 7 0

Formato da instrução do computador

Page 18: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

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

Page 19: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

Fetch Next Instruction

Decode Instruction

Execute Instruction

CPU - P1

Fluxo de execução de instruções

Page 20: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

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

Page 21: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

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

Page 22: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; LIBRARY lpm; USE lpm.lpm_components.ALL; ENTITY SCOMP IS PORT( clock, reset : IN STD_LOGIC; program_counter_out : OUT STD_LOGIC_VECTOR( 7 DOWNTO 0 ); register_AC_out : OUT STD_LOGIC_VECTOR(15 DOWNTO 0 ); memory_data_register_out : OUT STD_LOGIC_VECTOR(15 DOWNTO 0 )); END SCOMP; ARCHITECTURE a OF scomp IS TYPE STATE_TYPE IS ( reset_pc, fetch, decode, execute_add, execute_load, execute_store, execute_store3, execute_store2, execute_jump ); SIGNAL state: STATE_TYPE; SIGNAL instruction_register, memory_data_register : STD_LOGIC_VECTOR(15 DOWNTO 0 ); SIGNAL register_AC : STD_LOGIC_VECTOR(15 DOWNTO 0 ); SIGNAL program_counter : STD_LOGIC_VECTOR( 7 DOWNTO 0 ); SIGNAL memory_address_register : STD_LOGIC_VECTOR( 7 DOWNTO 0 ); SIGNAL memory_write : STD_LOGIC; BEGIN -- Use LPM function for computer's memory (256 16-bit words) memory: lpm_ram_dq GENERIC MAP ( lpm_widthad => 8, lpm_outdata => "UNREGISTERED", lpm_indata => "REGISTERED", lpm_address_control => "UNREGISTERED", -- Reads in mif file for initial program and data values lpm_file => "program.mif", lpm_width => 16 ) PORT MAP ( data => Register_AC, address => memory_address_register, we => memory_write, inclock => clock, q => memory_data_register ); program_counter_out <= program_counter; register_AC_out <= register_AC; memory_data_register_out <= memory_data_register; PROCESS ( CLOCK, RESET ) BEGIN IF reset = '1' THEN state <= reset_pc; ELSIF clock'EVENT AND clock = '1' THEN

Page 23: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

CASE state IS -- reset the computer, need to clear some registers WHEN reset_pc => program_counter <= "00000000"; memory_address_register <= "00000000"; register_AC <= "0000000000000000"; memory_write <= '0'; state <= fetch; -- Fetch instruction from memory and add 1 to PC WHEN fetch => instruction_register <= memory_data_register; program_counter <= program_counter + 1; memory_write <= '0'; state <= decode; -- Decode instruction and send out address of any data operands WHEN decode => memory_address_register <= instruction_register( 7 DOWNTO 0); CASE instruction_register( 15 DOWNTO 8 ) IS WHEN "00000000" => state <= execute_add; WHEN "00000001" => state <= execute_store; WHEN "00000010" => state <= execute_load; WHEN "00000011" => state <= execute_jump; WHEN OTHERS => state <= fetch; END CASE;

Page 24: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

-- Execute the ADD instruction WHEN execute_add => register_ac <= register_ac + memory_data_register; memory_address_register <= program_counter; state <= fetch; -- Execute the STORE instruction -- (needs three clock cycles for memory write) WHEN execute_store => -- write register_A to memory memory_write <= '1'; state <= execute_store2; -- This state ensures that the memory address is -- valid until after memory_write goes inactive WHEN execute_store2 => memory_write <= '0'; state <= execute_store3; WHEN execute_store3 => memory_address_register <= program_counter; state <= fetch; -- Execute the LOAD instruction WHEN execute_load => register_ac <= memory_data_register; memory_address_register <= program_counter; state <= fetch; -- Execute the JUMP instruction WHEN execute_jump => memory_address_register <= instruction_register( 7 DOWNTO 0 ); program_counter <= instruction_register( 7 DOWNTO 0 ); state <= fetch; WHEN OTHERS => memory_address_register <= program_counter; state <= fetch; END CASE; END IF; END PROCESS; END a;

Page 25: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

Figure 8.12 MIF file containg P 1 Computer Program.

Page 26: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

Figure 8.13 Simulation of the Simple P 1 Computer Program.

Page 27: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

Projetos

b

a

c

d

e

f gclk

4

CPU - P 1

Decoder

BCD7-Segm.

4

Dispositivo de I/OSaídaEntrada

programa

Calcular a média aritmética de três números previamente colocados na memória da CPU e mostrar o resultado no display.

Comparar elementos de um array (5 elementos), colocando o maior deles numa variável "resultado“ e no display.

Os resultados das operações devem ser enviados para o display (dispositivo de saída do sistema)

reset

Page 28: Unidade Central de Processamento Sistemas Digitais CIn-UFPE

Arquitetura/plataforma de prototipação

Robô

CPU

Motor 1 Motor 2

Memória

Controle dos motores

Motor 1 Motor 2

Decodificador

Driver Driver