Aula 27 - Estrutura e Função da CPU

Propaganda
Organização de Computadores
Aula 27
Estrutura e Função da CPU
Rodrigo Hausen
17 de novembro de 2011
http://cuco.pro.br/ach2034
Rodrigo Hausen - OCD
1/33
Apresentação
1. Bases Teóricas
●
2. Organização de computadores
– ...
– 2.5. Subsistema de Entrada/Saída (I/O)
– 2.6. Conjunto de Instruções
– 2.7. Estrutura e Função da CPU
●
●
Aula de hoje: Stallings (5a. Edição), Capítulo 11
Rodrigo Hausen - OCD
2/33
Estrutura da CPU
●
CPU deve:
– Obter instruções
– Interpretar instruções
– Obter dados (da memória/dispositivos)
– Processar dados
– Escrever dados (para a memória/dispositivos)
Rodrigo Hausen - OCD
3/33
CPU e o Barramento do Sistema
registradores
ULA
Unid. de
Controle
Barramento Barramento Barramento
de Controle
de Dados de Endereço
Barramento
do Sistema
Rodrigo Hausen - OCD
4/33
Estrutura Interna da CPU
Reg. de Estado
Deslocador
Complementador
Lógica
Booleana e
Aritmética
Barramento Interno da CPU
Unid. Lógico-Aritmética
Registradores
Unid. de
Controle
Sinais de
Controle
Rodrigo Hausen - OCD
5/33
Registradores
●
●
●
●
●
CPU deve possuir um espaço de trabalho
(armazenamento temporário)
Denominado registradores
Número e função variam entre projetos de processadores
Uma das decisões de projeto mais importantes
Nível superior da hierarquia de memória
Rodrigo Hausen - OCD
6/33
Registradores Visíveis ao Usuário
Aquele que pode ser acessado por meio da linguagem de
máquina que a CPU executa (por usuário, entende-se
programador)
●
de Propósito Geral: usados pelo programador para uma
variedade de funções
●
de Dados: apenas para dados que não podem ser usados
para cálculo de endereços de operandos
●
de Endereço
– de segmento, de índices, apontador de topo de pilha, etc.
●
de Códigos de Condição: bits atualizados pelo hardware
que indicam o resultado de operações (flags)
●
Rodrigo Hausen - OCD
7/33
Registradores Visíveis ao Usuário
de Propósito Geral
Podem ser verdadeiramente de propósito geral.
●
Ou nem tanto:
– registradores usados apenas para operações de ponto
flutuante ou operações envolvendo a pilha
●
Podem ser usados para dados ou endereçamento
●
Podem ser usados para dados ou cálculo de
endereçamento
– Acumulador
– regs. de segmento: contém o end. base de um segmento
– regs. de índice: usados para endereçamento indexado
– apontador de topo de pilha
●
Rodrigo Hausen - OCD
8/33
Registradores Visíveis ao Usuário
de Propósito Geral - Decisões
●
●
●
Torná-los de propósito verdadeiramente geral:
– Mais flexibilidade e opções para programador
– Aumenta tamanho e complexidade das instruções
Torná-los especializados:
– Permite referências implícitas aos registradores
– Instruções menores e menos complexas (mais rápidas)
– Menor flexibilidade
Tendência atual: mais registradores especializados
Rodrigo Hausen - OCD
9/33
Registradores Visíveis ao Usuário
de Propósito Geral - Decisões
●
Quantos registradores?
●
Número adequado: entre 8 e 32 (empírico)
●
Poucos registradores ⇒ mais referências à memória
●
●
Muito mais ⇒ não reduz significativamente referências à
memória e complica o projeto da CPU
Abordagem RISC: centenas de registradores
Rodrigo Hausen - OCD
10/33
Registradores Visíveis ao Usuário
de Propósito Geral - Decisões
●
Qual o tamanho de cada registrador?
●
Grande o suficiente para armazenar o maior endereço
●
Grande o suficiente para conter uma palavra
●
Geralmente é possível combinar dois registradores de
dados para representar palavras de tamanho maior
– em linguagem C:
float versus double
●
int versus long int ou long long int
●
Rodrigo Hausen - OCD
11/33
Registradores Visíveis ao Usuário
de Códigos de Condição
●
●
●
Conjuntos de bits individuais que indicam o resultado de
operações (flags)
– resultado da última operação lógica/aritmética foi zero,
divisão por zero, overflow, etc.
Podem ser lidos (geralmente implicitamente) por
programas
– p. ex. em desvios condicionais, como Jump if Zero (JZ)
Geralmente, não podem ser escritos diretamente por
programas
Rodrigo Hausen - OCD
12/33
Regs. de Controle e Estado
●
●
●
●
●
●
●
Utilizados pela Unid. de Controle para controlar a
operação da CPU e pelo Sistema Operacional para
controlar a execução de programas
Maioria deles não é visível ao usuário
PC (Program Counter)
IR (Instruction Register)
MAR (Memory Address Register)
MBR (Memory Buffer Register)
I/O AR, I/O BR
Rodrigo Hausen - OCD
13/33
Program Status Word (PSW)
●
PSW = Palavra de Estado de Programa: conjunto de
bits que contém os códigos de condição (flags) e outras
informações de estado:
– Signal: sinal do último resultado
– Zero: indica se último resultado foi zero
– Carry: último vai-um
– Equal: indica se os últimos operandos eram iguais
– Overflow
– Interrupções habilitadas ou desabilitadas
– Modo supervisor ou usuário: para uso do SO. Permite que
instruções privilegiadas executem (modo supervisor, ring
0 ou kernel mode), limita instruções, acesso à memória e
registradores (modo usuário, ring 3, user mode).
Rodrigo Hausen - OCD
14/33
Outros Registradores
●
●
Dependendo da CPU, pode haver uma variedade de
outros registradores de uso específico:
– blocos de controle de processo (para uso do SO)
– vetores de interrupção (para uso do SO)
– topo de pilha, base da pilha
– controle de operações de entrada/saída
Vários fatores influenciam decisões de projeto de
registradores; principalmente, suporte a sistemas
operacionais.
Rodrigo Hausen - OCD
15/33
Exemplos: Organizações de Regs.
●
●
●
●
●
●
Motorola 68000 (usado no Mega Drive)
Registradores separados, mas
de uso misto (mais flexibilidade)
Regs. de endereçamento e dados
separados.
Regs. de dados também usados
para índices
Dados (e índices): acessíveis em
8, 16, 32 bits (depend. opcode)
A7 usado para apontador de
pilha (um para usuário, um para
SO, dependendo do modo de
execução corrente)
Rodrigo Hausen - OCD
16/33
Exemplos: Organizações de Regs.
●
●
●
Intel 8086 (usado no PC XT)
Registradores de uso especial, alguns
podem também ser de propósito geral
(menos flexibilidade)
Regs. de dados: acessíveis em 8, 16 bits
(dependendo do prefixo da instrução)
●
Regs. apontadores/índices: 16 bits
●
Regs. de segmento: 16 bits
Rodrigo Hausen - OCD
17/33
Exemplos: Organizações de Regs.
●
●
●
●
●
Intel 80386 até Pentium II
Modos de execução: modo real
(8086), modo protegido do 80286,
modo protegido do 80386
Regs. de dados: acessíveis em 8, 16
ou 32 bits (depende do modo de
execução, do prefixo da instrução
e/ou do opcode)
Regs. apontadores/índices: acessíveis
em 16 ou 32 bits (depende do do
modo de execução, prefixo da instrução e/ou do opcode)
Regs. de segmento (não mostrados): 16 ou 32 bits,
dependendo do modo de execução
Rodrigo Hausen - OCD
18/33
Ciclo de Instrução
Fetch
(busca)
Decode
Execute
Rodrigo Hausen - OCD
sem interrupções,
sem endereçamento indireto
19/33
Verificação e
Process. de
Interrupção
interrupções
habilitadas
Rodrigo Hausen - OCD
interrupções desabilitadas
Ciclo de Instrução
Fetch
(busca)
Decode
Execute
com interrupções,
sem endereçamento indireto
20/33
Verificação e
Process. de
Interrupção
interrupções
habilitadas
Rodrigo Hausen - OCD
interrupções desabilitadas
Ciclo de Instrução
Fetch
(busca)
Decode
Process. de
end. indireto
Execute
com interrupções,
com endereçamento indireto
21/33
Diagrama de Estados
indireção
Busca
de
Instrução
Cálculo de
endereço de
Instrução
indireção
Busca
de
Operando
múltiplos
operandos
Decodificação de
Instrução
Cálculo de
endereço de
operando
Armazenamento de
resultado
múltiplos
resultados
Execução
da
Operação
Cálculo de
endereço de
Operando
Verificação
Interrupção
Process.
Interrupção
busca da próxima instrução
Rodrigo Hausen - OCD
22/33
Fluxo de Dados (1)
Depende do projeto da CPU. Em geral:
●
Busca de instrução:
– PC contém endereço da próxima instrução
– Endereço em PC movido para MAR, endereço no MAR colocado no
barramento de endereço
– Unidade de controle requisita leitura à memória
– Memória coloca conteúdo no barramento de dados, que é copiado
para o MBR
– Copia instrução lida no MBR para o IR
– PC é incrementado de 1 unidade (prepara para próxima)
●
Decodificação: IR é examinado pela unidade de controle
●
Busca de operando: se endereçamento indireto, ciclo de indireção
é executado.
– N bits menos significativos do MBR transferidos ao MAR
– Unidade de controle requisita leitura à memória
– Resultado (endereço do operando) movido para MBR
●
Rodrigo Hausen - OCD
23/33
Fluxo de Dados (2): Execução
As instruções podem assumir várias formas
●
Depende da instrução em execução
●
Pode incluir:
– Operação de leitura/escrita na memória
– Operação de entrada/saída
– Transferências entre registradores
– Operações com a ULA
●
Rodrigo Hausen - OCD
24/33
Fluxo de Dados(3): Interrupção
PC atual é gravado para, após processamento da
interrupção, permitir retorno ao ponto anterior
– Conteúdo do PC copiado para MBR
– Posição especial de memória (p. ex. stack pointer = SP)
copiado para MAR
– MBR escrito na memória
●
PC é carregado com endereço da rotina de tratamento de
interrupção (handler)
●
Próxima instrução (primeira do handler) pode ser obtida
●
Rodrigo Hausen - OCD
25/33
Pré-Busca (Prefetch)
●
Busca da próxima instrução acessa a memória principal
●
Comumente, execução não acessa a memória principal
●
●
Portanto, geralmente a CPU pode buscar a próxima
instrução a ser executada ao mesmo tempo em que etá
executando a instrução corrente
Esta otimização chama-se instruction prefetch.
– Requer maior complexidade da CPU
– Fazem prefetch: Intel do 8086 até dias atuais; ARM;
microcontroladores Atmel AVR e Microchip PIC
– Não faz: Z80 (versão atualizada eZ80, lançada em 2001, faz)
Rodrigo Hausen - OCD
26/33
Prefetch: Aumento de Desempenho
●
●
O prefetch de instruções aumenta o desempenho, mas
não o dobra
– Subciclo de busca, em geral, é mais curto que o de
execução
– Em casos de desvios na execução do programa
(jump/branch), a instrução pré-buscada não é a que será
executada
Pode-se adicionar mais estágios para aumentar o
desempenho: pipelining
Rodrigo Hausen - OCD
27/33
Linha de Montagem de Carros
●
Ciclo de montagem de carro é composto por:
1) Fusão e moldagem dos componentes do carro
2) Montagem dos componentes mecânicos no chassis (direção,
embreagem, motor, etc)
3) Montagem das laterais, portas, capô, teto
4) Montagem da parte elétrica: bateria, fios, ignição eletrônica
5) Montagem do painel
6) Montagem dos bancos
7) Montagem dos vidros
8) Pintura
9) Limpeza
10) Regulagem e controle de qualidade.
11) Montagem de acessórios: ar, vidros elétricos, alarme, etc.
●
Em uma fábrica, etapas são feitas paralelamente em uma
linha de montagem (refinada e popularizada por Henry Ford)
Rodrigo Hausen - OCD
28/33
Pipeline: uma linha de montagem
Se possível, faça as seguintes operações em paralelo:
– Busca de instrução
– Decodificação de instrução
– Cálculo de endereço(s) de operando(s)
– Busca de operando(s)
– Executa instrução
– Cálculo de endereço(s) de operando(s) destino
– Escrita do(s) resultado(s)
●
Instruction prefetch é um tipo simples de pipeline com
apenas 2 estágios: busca e execução em paralelo
●
Aumenta mais o desempenho, mas complica ainda mais o
projeto da CPU
●
Implementado nos processadores da Intel desde o 80386
●
Rodrigo Hausen - OCD
29/33
Pipeline: Diagrama de Tempo
FI = Fetch Instruction, DI = Decode Instruction, CO = Cálculo de Operando,
FO = Fetch Operand, EI = Execução Instrução, WO = Write Operand
Rodrigo Hausen - OCD
30/33
Pipeline: Efeito de um Desvio
FI = Fetch Instruction, DI = Decode Instruction, CO = Cálculo de Operando,
FO = Fetch Operand, EI = Execução Instrução, WO = Write Operand
Rodrigo Hausen - OCD
31/33
Para Casa
●
●
●
Exercício 3.1 é sobre fluxo de dados dentro da CPU e
para fora dela. Use Register Transfer Notation (modo
preferido de mostrar fluxo de dados), de acordo com o
que foi mostrado na lousa.
Ler 11.1, 11.2, 11.3. Ler introdução do 11.4, incluindo
“estratégia de pipeline” (não precisa ler de “desempenho
do pipeline” até o final da seção). Ler 11.5 e 11.6 apenas
como cultura geral.
Fazer exercícios: 11.1 e 11.2
Rodrigo Hausen - OCD
32/33
ATENÇÃO!!!
Será permitida consulta na P2, de acordo com as seguintes
regras:
– 1 folha (frente e verso) de papel formato A4 sem pauta
(você pode fazer a pauta a lápis se achar necessário)
– texto escrito em caneta vermelha
– não pode colocar resolução de exercícios ou questões
– coloque o seu nome e número USP na folha
●
Não vou aceitar: folha de caderno, folha rasgada ou recortada,
texto a lápis ou escrito em outra cor, folhas com soluções de
exercícios, folha sem nome.
●
Prepare a sua folha de consulta com antecedência!!! Aproveite
enquanto estuda e faça um resumo.
●
Seja esperto: não é necessário colocar especificações técnicas de
barramentos, processadores, etc. Estas serão fornecidas na
prova, se necessário.
●
Rodrigo Hausen - OCD
33/33
Download