Uma Arquitetura Concreta para a Máquina de von...
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