Uma Arquitetura Concreta para a Máquina de von...

Post on 21-Nov-2018

222 views 1 download

Transcript of Uma Arquitetura Concreta para a Máquina de von...

Uma Arquitetura Concreta para a Máquina de von Neumann

Jorge FernandesFevereiro de 2005

Uma Arquitetura Concreta para a Máquina de von Neumann

• Proposta em 1946• Máquina composta por órgãos:

– Memória (MEM)• Armazena dados, onde alguns destes dados são interpretados como

instruções de um programa a ser executado pela CPU– Unidade Central de Processamento

• Unidade de controle (UC)• Unidade de cálculos aritméticos e lógicos (UAL)• Registrador de instrução (IR)• Ponteiro de instrução (IP)• Registrador de uso geral (acumulador - ACC)

– Dispositivos de Entrada e Saída• INPUT_DEVICE• OUTPUT_DEVICE

Organização Geral de um Computador de von Neumann

Hardware

Processador

Memória(RAM)

Dispositivode Entrada 1Dispositivode Entrada 2

Dispositivode Saída 1Dispositivode Saída 2

Dispositivo de Entrada e Saída (Híbrido)

Um “Computador Visível” para Entender como o Sofware Funciona

Processador(CPU)

INPUT_DEVICE

OUTPUT_DEVICE

MEM-Memória com Posições Endereçaveismem[0] mem[1] mem[2] mem[3]

mem[4] mem[5] mem[6] mem[7]

mem[8] mem[9] mem[10] mem[11]

mem[12] mem[13] mem[14] mem[15]

Sinais de Controle (wr)

Sinais de Controle (rd)

Fluxo de dados

Fluxo de dados

Fluxo de dados

Sinais de controle(rd/wr)

O Processador ou

Central Processing Unit – CPU ou

Unidade Central de Processamento – UCP

Atenção!

O termo CPU é muitas vezes usado de forma errônea para se referir ao GABINETE de um

computador pessoal, que contém, além da CPU, dispositivos de armazenamentos, entrada e saída

de dados, memória RAM, etc

O Processador é Classicamente Organizado em Três Partes

• Registradores– Pequeno conjunto de células com nomes específicos,

para leitura e gravação de dados em baixíssimo tempo.• Unidade Aritmética Lógica (UAL)

– Efetua transformações sobre dados (soma, subtração,operações lógicas - and, ou, etc.)

• Unidade de Controle– Interpretar os comandos ou instruções do software,

controlando as transformações sobre dados e o fluxo destes dados entre todas as outras partes do hardware.

Organização interna do Processador (CPU)

CPUDados Memória (MDR)

Endereços Memória (MAR)

Registrador Instrução (IR)

Acumulador (ACC)

Ponteiro de Instrução (IP)

Registradores

Unidadede Controle

UALaddsub

rdwr

CPU

Registrador Instrução (IR)

Acumulador (ACC)

Ponteiro de Instrução (IP)

RegistradoresUnidade

de Controle

UAL

rdwr

addsub

Organização simplificada do Processador

Fluxos de dados para ler e gravar na memória

Memória RAM

• Conjunto de Células para Leitura (rd) e Gravação(wr) de Dados

• Diretamente Endereçáveis – Não há diferença no tempo de leitura, qualquer que seja

a posição lida– Não há diferença no tempo de gravação, qualquer que

seja a posição gravada

• Alta Velocidade no Armazenamento eRecuperação

?

Operações sobre Memória RAM (execute a animação para ver ciclos de leitura e escritura)

mem[1.000] mem[1.001] mem[1.002] ...

mem[0] mem[1] mem[2] mem[3]

mem[4] mem[5] mem[6] mem[7]

mem[8] mem[9] mem[10] mem[11]

500 -1 0

934428213

7

0

0

000

7 ...77

509

DADO:

509

500

77

9344282137500ENDEREÇO:

451002111001000rdrdrd

rd

wrwr

wr

Programando na máquina de von Neumann

Instruções Mínimas para Interação com a Máquina: Linguagem de Entrada e Saída de

Dados: LM_IO• STOP

– Pára execução do programa

• INPUT x– MEM[x] <- INPUT_DEVICE

• Carrega na posição de memória indicada pelo valor x, o que está no dispositivo de entrada de dados

• OUTPUT x– OUTPUT_DEV ICE <- MEM[x]

• Carrega no dispositivo de saída o valor que está armazenado na posição de memória indicada pelo valor x

Programa Eco:apresenta no dispositivo de saída o

que foi digitado na entradaINPUT 3 --Lê entrada e guarda na memória 3OUTPUT 3 --Imprime o valor guardado em memória 3STOP -- pára a execução do programa

Semântica = significado das instruções, definido operacionalmente, através de fluxo de dados e controle entre os elementos da arquitetura

INPUT 3 significa MEM[3] <- INPUT_DEVICEOUTPUT 3 significa OUTPUT_DEVICE <- MEM[3]STOP significa Pára execução do programa

Executando programas na máquina de von Neumann

Ciclo de Execução de Programas

• Etapa 1– carga do programa na memória• Etapa 2 – reset

– IP := 0• Etapa 3 – Ciclo de execução de instruções, até que

a instrução STOP seja encontrada– Etapa 3.1 – FECTH – Busca a instrução na memória

• IR := MEM[IP]– Etapa 3.2 – INC – Incrementa o IP

• IP := IP + 1– Etapa 3.3 – DECODE – decodifica a instrução, e caso a

instrução não seja STOP, volta à etapa 3.1

Executando o Programa ECO para observar um valor digitado

pelo usuário, por exemplo o numeral 50

O Cenário de Execução

Usuário

mem[0] mem[1] mem[2] mem[3]

mem[4] mem[5] mem[6] mem[7]INPUT_DEVICE

INPUT_DEVICE

CPU Reg.Dados Memória (MDR)

Reg. Endereços Memória (MAR)

Registrador Instrução (IR)

Reg. Acumulador (ACC)

Ponteiro de Instrução (IP)

Registradores

Unidadede Controle

(UC)

UAL

rdwr

add/sub

MEMÓRIA RAM

Programa ECOINPUT 3

OUTPUT 3 STOP

Fluxo de ControleFluxo de Dados

Executando o Programa ECOEtapa 1 – Carga do Programa na

Memória

Programa Eco carregado numa memória RAM com 8 palavras de tamanho

mem[0] mem[1] mem[2] mem[3]

INPUT 3 OUTPUT 3 STOPmem[4] mem[5] mem[6] mem[7]

Um programa do computador chamado loader cuida da carga do programa, que é feita usando os dispositivos de entrada de dados mas cujos detalhes serão omitidos.O resultado final é que o programa estará armazenado naMemória após a carga.

Executando o Programa ECOEtapa 2 – Reset do IP

RESET do Ponteiro de Instruções (IP)

CPUReg.Dados Memória

Reg. Endereços Memória

Registrador de Instrução

Reg. Acumulador

Reg. Ponteiro de Instrução0

Registradores

Unidadede Controle

(UC)

UAL

readwrite

add/sub

Executando o Programa ECOEtapa 3 –ciclo de execução de instruções, até

que a instrução STOP seja encontrada

3.1 – FECTH – Busca a instrução na memóriaIR := MEM[IP]

3.2 – INC – Incrementa o IPIP := IP + 1

3.3 – DECODE – decodifica a instrução

Executando a 1a instrução: INPUT 3

3.1 FETCH: Busca instrução na memória

FECTH – Busca a instrução na memóriaIR := MEM[IP]

mem[0] mem[1] mem[2] mem[3]

INPUT 3 OUTPUT 3 STOPmem[4] mem[5] mem[6] mem[7]

CPUReg.Dados Memória (MDR)

INPUT 3Reg. Endereços Memória (MAR)

0

Registrador Instrução (IR)INPUT 3

Reg. Acumulador (ACC)

Ponteiro de Instrução (IP)0

Registradores

Unidadede Controle

(UC)

UAL

rdwr

add/sub

3.2 INC: Incrementa ponteiro de instrução

INC – Incrementa IP: IP := IP + 1

mem[0] mem[1] mem[2] mem[3]

INPUT 3 OUTPUT 3 STOPmem[4] mem[5] mem[6] mem[7]

CPUReg.Dados Memória (MDR)

INPUT 3Reg. Endereços Memória (MAR)

0

Registrador Instrução (IR)INPUT 3

Acumulador (ACC)

Ponteiro de Instrução (IP)1

Registradores

Unidadede Controle

(UC)

UAL

rdwr

add/sub

01

3.3 DECODE: Decodifica instrução

DECODE – decodifica a instrução

mem[0] mem[1] mem[2] mem[3]

INPUT 3 OUTPUT 3 STOPmem[4] mem[5] mem[6] mem[7]

CPUReg.Dados Memória (MDR)

INPUT 3Reg. Endereços Memória (MAR)

3

Registrador Instrução (IR)INPUT 3

Acumulador (ACC)

Ponteiro de Instrução (IP)1

Registradores

Unidadede Controle

(UC)

UAL

rdwr

add/sub

Usuário

INPUT_DEVICE

Digita “50”

DADO: 50 ENDEREÇO: 3

50

Executando a 2a instrução: OUTPUT 3

3.1 FETCH: Busca instrução na memória

FECTH – Busca a instrução na memória (IR := MEM[IP])

CPUReg.Dados Memória (MDR)

OUTPUT 3Reg. Endereços Memória (MAR)

1

Registrador Instrução (IR)OUTPUT 3

Reg. Acumulador (ACC)

Ponteiro de Instrução (IP)1

Registradores

Unidadede Controle

(UC)

UAL

rdwr

add/sub

mem[0] mem[1] mem[2] mem[3]

INPUT 3 OUTPUT 3 STOPmem[4] mem[5] mem[6] mem[7]

50

DADO: OUTPUT 3 ENDEREÇO: 1

3.2 INC: Incrementa ponteiro de instrução

INC – Incrementa IP: IP := IP + 1

mem[0] mem[1] mem[2] mem[3]

INPUT 3 OUTPUT 3 STOPmem[4] mem[5] mem[6] mem[7]

CPUReg.Dados Memória (MDR)

OUTPUT 3Reg. Endereços Memória (MAR)

1

Registrador Instrução (IR)OUTPUT 3

Acumulador (ACC)

Ponteiro de Instrução (IP)2

Registradores

Unidadede Controle

(UC)

UAL

rdwr

add/sub

11

3.3 DECODE: Decodifica instrução

DECODE – decodifica a instrução

mem[0] mem[1] mem[2] mem[3]

INPUT 3 OUTPUT 3 STOPmem[4] mem[5] mem[6] mem[7]

CPUReg.Dados Memória (MDR)

OUTPUT 3Reg. Endereços Memória (MAR)

3

Registrador Instrução (IR)OUTPUT 3

Acumulador (ACC)

Ponteiro de Instrução (IP)2

Registradores

Unidadede Controle

(UC)

UAL

rdwr

add/sub

Usuário

OUTPUT_DEVICE

Observa “50”

DADO: 50 ENDEREÇO: 3

50

Executando a 3a instrução: STOP

3.1 FETCH: Busca instrução na memória

FECTH – Busca a instrução na memória (IR := MEM[IP])

CPUReg.Dados Memória (MDR)

STOPReg. Endereços Memória (MAR)

2

Registrador Instrução (IR)STOP

Reg. Acumulador (ACC)

Ponteiro de Instrução (IP)2

Registradores

Unidadede Controle

(UC)

UAL

rdwr

add/sub

mem[0] mem[1] mem[2] mem[3]

INPUT 3 OUTPUT 3 STOPmem[4] mem[5] mem[6] mem[7]

50

DADO: STOP ENDEREÇO: 2

3.2 INC: Incrementa ponteiro de instrução

INC – Incrementa IP: IP := IP + 1

mem[0] mem[1] mem[2] mem[3]

INPUT 3 OUTPUT 3 STOPmem[4] mem[5] mem[6] mem[7]

CPUReg.Dados Memória (MDR)

STOPReg. Endereços Memória (MAR)

2

Registrador Instrução (IR)STOP

Acumulador (ACC)

Ponteiro de Instrução (IP)3

Registradores

Unidadede Controle

(UC)

UAL

rdwr

add/sub

21

3.3 DECODE: Decodifica instrução

DECODE – decodifica a instrução

mem[0] mem[1] mem[2] mem[3]

INPUT 3 OUTPUT 3 STOPmem[4] mem[5] mem[6] mem[7]

CPUReg.Dados Memória (MDR)

STOPReg. Endereços Memória (MAR)

2

Registrador Instrução (IR)STOP

Acumulador (ACC)

Ponteiro de Instrução (IP)3

Registradores

Unidadede Controle

(UC)

UAL

rdwr

add/sub

Usuário

OUTPUT_DEVICE

Observa fimde execução

50

INPUT_DEVICE

pára pára

Uma Arquitetura Concreta para a Máquina de von Neumann

Jorge Fernandes