ciclo indireto
Download
Report
Transcript ciclo indireto
Organização e Arquitetura de
Computadores
Capítulo 11
Estrutura e Funções da CPU
Parte I
Funcionalidades da CPU
Registradores
Ciclo de Instruções
Organização da CPU
Funcionalidades da CPU
Em um ciclo de instruções, envolve-se:
• Buscar instruções
CPU lê uma instrução da memória
• Interpretar instruções
Instrução é decodificada para determinar a ação requerida
• Buscar dados
Busca dados na memória ou dispositivos de E/S
• Processar dados
Execução de uma instrução sobre os dados
• Escrever dados
Escrever dados na memória ou dispositivos
Registradores
A CPU deve ter algum espaço para trabalho
• armazenamento temporário
Registradores
• Número e funções dos registradores variam entre os
projetos dos processadores
• Uma das mais importantes decisões de projeto
Duas funções:
• Registradores visíveis ao usuário
• Registradores de controle e de estado
Registradores visíveis ao usuário
Podem ser referenciados pela linguagem de
máquina que a CPU executa
Categorias:
•
•
•
•
De propósito geral
Dados
Endereços
Códigos de condição
Registradores de propósito geral
Podem ser usados para uma variedade de
funções
Qualquer registrador pode conter um operando
para uma instrução qualquer
Excessões:
• Números em ponto flutuante
• Operações com a pilha
Podem ainda ser utilizados para endereçamento
Registradores de Dados
Usados apenas para dados
Não podem ser utilizados no cálculo de
endereço de operandos
Registradores de Endereço
Utilizados para endereçamento
• Podem ser utilizados como registradores de propósito
geral
Exemplos:
• Registrador de segmento
• Registradores de Índices
• Apontador para o topo da pilha
Registradores de propósito geral:
prós e contras
Qual o limite entre definir registradores de
propósito geral ou específicos?
• Propósito geral: maximiza a flexibilidade das
instruções
• Propósito específico: a execução de operação busca o
registrador específico, sendo necessário somente
definir qual o registrador específico
• Não existe a melhor solução
Quantos registradores são suficientes?
Mais registradores
• permite mais operandos serem tratados na CPU
• causam um aumento no tamanho do campo
necessário para especificar o registrador na instrução
Menos registradores
• mais referências a memória
Ideal
• Entre 8 e 32
• RISC (centenas)
Qual o tamanho do registrador?
Devem ser capazes de armazenar o maior
endereço usado no sistema
Registradores de dados devem ser capazes de
conter valores da maioria dos tipos de dados
• Por exemplo, não é necessário ter registradores de
64 bits se a maioria dos operações com dados
utilizam operandos com 32 ou 16 bits
Registradores de Código de Condição
Flags
Conjunto de bits individuais
• e.x. resultado da última operação é zero
Pode ser implicitamente lido por programas
• e.x. Jump se zero
Não pode ser (normalmente) configurado por
programas
Registradores de Controle e Status
Registradores utilizados durante as fases de
busca, decodificação e execução das instruções
• Muitos não são visíveis ao usuário
• Alguns são visíveis mas não podem ser alterados
Modo de controle
Sistema Operacional
Registradores de Controle e Status
Contador de Programa
• Program Counter - PC
• Contém o endereço da instrução a ser buscada
Registrador de Instrução
• Instruction Register – IR
• Contém a última instrução buscada
Registradores de Controle e Status
Registrador de endereçamento à memória
• Memory address register - MAR
• Contém o endereço de uma posição de memória
Registrador de armazenamento temporário de
dados
• Memory Data/Buffer Register – MBR
• Contém uma palavra de dados a ser escrita na
memória ou a palavra lida mais recentemente
Registradores de Controle e Status
Palavra de estado de programa
• Program Status Word – PSW
• Contém informações de estado:
Sinal: contém o bit de sinal da última operação
Zero: indica se o resultado da última operação é zero
“Vai-um”
Igual: indica se uma comparação lógica resulta em igualdade
Overflow: overflow aritmético
Habilitar/Desabilitar interrupção
Supervisor: indica se a CPU está executando em modo
supervisor ou usuário
Outros registradores
Outros registradores relacionados ao estado e
controle
• Registrador para apontar para um bloco de memória
que contém informação de estado adicional (ex.,
blocos de controle de processos)
• Vetor de interrupções
• Registrador indicador de topo de pilha
• Registrador para indicar tabela de páginas (no caso
de memória virtual)
Ciclo de Instruções – Ciclo indireto
Ciclo Indireto
Pode precisar da memória o acesso para buscar operandos
Endereçamento indireto requer mais acessos de memória
Fluxo de dados (busca da instrução)
PC contém o endereço da próxima instrução
Endereço é movido para o MAR
Endereço é colocado no barramento de
endereço
A UC requisita uma leitura na memória
Resultado é colocado no barramento de dados e
copiado ao MBR e para o IR
Enquanto isso, o PC é incrementado de 1
Ciclo de busca
Fluxo de dados (busca de instruções)
IR é examinado
Se o endereçamento é indireto, o ciclo indireto é
feito
• Os N bits mais significativos de MBR são transferidos
para MAR
• A unidade de controle envia um pedido de leitura da
memória
• O resultado (endereço ou operando) é movido para o
MBR
Fluxo de dados (Diagrama do Ciclo Indireto)
Fluxo de dados (Execução)
Pode ter várias formas
Depende da instrução que está sendo executada
Deve incluir
•
•
•
•
escrita/leitura da memória
Entrada/Saída
Transferência entre registradores
Operações da ULA
Fluxo de dados (interrupção)
O PC atual é salvo para permitir que ele seja
restabelecido depois da interrupção
O conteúdo de PC é copiado para o MBR
Uma posição especial da memória (stack pointer) é
carregado para o MAR
O MBR é copiado para a memória
O PC é carregado com o endereço da rotina de
tratamento de interrupção
A próxima instrução (primeira da rotina de tratamento
de interrupção) pode ser buscada
Fluxo de dados (diagrama com interrupção)
Estudo de Caso: x86
Gerais
Segmentos
PC
Flags
PSW
PSW
Exercícios
11.1
Parte II
Pipeline
Pipeline
Evolução dos sistemas:
•
•
•
•
Novos chips
Mais registradores
Cache
Pipeline de Instruções
Pipeline
Idéia semelhante a uma linha de montagem
Várias etapas de produção
• Etapas podem ocorrer simultaneamente
• Novas entradas são aceitas antes que entradas previamente
aceitas saiam como saídas
Instruções possuem diversas etapas
Exemplo
Prefetch: busca antecipada
Execução normalmente não necessita de acessoa à
memória
Durante a execução pode-se buscar uma nova instrução
Performance é melhorada
• Mas não é duplicada
• Busca usualmente mais rápida do que a execução
• Qualquer jump ou desvio significa que instruções pré-buscadas
não são instruções necessárias
Mais estágios de pipeline para aumentar a performance
Pipelining
BI - Busca de instruções
DI - Decodificação de instruções
CO - Cálculo de operandos
BO - Busca de operandos
EI - Execução de instruções
EO –Escrita de Operando
Sobreposição dessas operações
Timing of Pipeline
Assume-se que:
• Todas as instruções usem os
6 estágios
• Memória é compartilhada
• Todos os estágios possam
ser executados em paralelo
Problemas:
• Estágios possuem durações
diferentes
• Operações de desvio
• Interrupção
Pipeline: efeito de uma instrução de desvio
Tratamento de
Desvios e
Interrupções
Desempenho
Tempo de ciclo
• Tempo requerido para avançar um conjunto de
instruções um estágio por meio de pipeline
• m : Atraso máximo de estágio
• k: número de estágios
• d: tempo de propagação de um estágio para outro
Desempenho
Tempo de execução de n instruções:
Speedup
Desempenho
Lidando com desvios
Desvios: principal problema do uso de pipeline
Algumas abordagens para amenizar o problema:
•
•
•
•
•
Múltiplos Fluxos
Antecipação de busca da instrução alvo do desvio
Memória para laços de repetição
Previsão de Desvios
Atraso de Desvio (delayed branch)
Múltiplos Fluxos
Duplicar estágios iniciais do pipeline
Pré-buscar cada desvio em pipelines separadas
Utilizar as pipelines apropriadas
Problemas:
• Leva a contenção de registradores e do barramento
• Múltiplos saltos levam a futuras necessidades dos
pipelines
Antecipação de busca
Destino dos desvios são buscados
antecipadamente
Mantém destino em um registrador até que o
desvio seja executado
Memória para laços de repetição
Uma memória rápida armazena as últimas n
instruções
Checa-se esta memória antes de buscar da
memória principal
Muito bom para pequenos loops ou jumps
Funcionamento semelhante a uma cache de
instruções
Previsão de Desvios
Várias técnicas:
• Prever que desvios nunca serão tomados
• Prever que desvios sempre serão tomados
• Prever se desvios serão tomados ou não baseado no
código da operação
• Prever desvios com base em desvios tomados ou não
tomados
• Prever desvios baseados em históricos
Previsão de Desvios
Prever que desvios nunca serão tomados
• Sempre busca a próxima instrução
Prever que desvios sempre serão tomados
• Assume que aquele jump irá acontecer
• Sempre busca a instrução de destino
Previsão de Branches
Previsto pelo código de operação
• Algumas instruções são mais prováveis de resultarem
em um jump do que outras
• Tem alta taxa de acerto
Prever se desvios serão tomados ou não
baseado no código da operação
• Baseado na história prévia
• Bom para loops
Previsão de Desvios
Desvios atrasados
• Rearranja as instruções
• Só executa quanto necessário
Pipeline do 486
5 estágios:
•
•
•
•
•
Busca de Instrução
Decodificação 1
Decodificação 2
Execução de Instrução
Escrita de Resultado
Exercícios (entregar final da aula)
11.1
11.2
11.3
11.6