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