550 likes | 757 Views
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
E N D
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
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 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
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 (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
Estudo de Caso: x86 Gerais Segmentos PC Flags
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
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
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
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