William Stallings Organização e Arquitetura de Computadores 8a Edição Capítulo 12 Função e Estrutura do Processador Estrutura da CPU • A CPU deve: —Buscar instruções —Interpretar instruções —Buscar dados —Processar dados —Escrever dados CPU Com os Barramentos do Sistema Estrutura Interna da CPU Registradores • A CPU deve ter algum espaço de trabalho (armazenamento temporário) • Eles são os registradores • A quantidade e a função dos registradores variam conforme os projetos de processadores. • Isso é uma das maiores decisões de projeto. • Esse é o nível mais alto na hierarquia de memória. Registradores Visíveis ao Usuário • • • • Propósito geral Dados Endereços Códigos de Condição Registradores de Propósito Geral (1) • Podem ter propósito geral verdadeiro • Podem ser restritos • Podem ser usados para dados ou endereçamento • Dados —Acumulador • Endereçamento —Segmento Registradores de Propósito Geral (2) • Faça-os de propósito geral —Aumente a flexibilidade e as opções do programador —Aumente o tamanho da instrução e a complexidade • Faça-os especializados —Instruções menores (mais rápidas) —Menos flexibilidade Quantidade de Registradores de Propósito Geral • Entre 8 - 32 • Menos = mais referências de memória • Aumentar a quantidade não diminue as referências de memória e absorve o real domínio do processador • Veja também RISC Tamanho de um Registrador de Propósito Geral • Grande o suficiente para armazenar um endereço completo • Grande o suficiente para armazenar uma palavra completa • Geralmente é possível combinar dois registradores de dados. Em C: —double int a; —long int a; Registradores de Código de Condição • Conjuntos de bits individuais —por exemplo: o resultado da última operação foi zero • Pode ser lido (implicitamente) pelos programas —por exemplo: desvie se zero • Não pode ser modificado por programas (geralmente) Registradores de Controle e Status • • • • Contador de Programa (PC) Registrador de Instruções (IR) Memory Address Register (MAR) Memory Buffer Register (MBR) • Revisão: Qual a função destes? Palavra de Status de Programa • • • • • • • • • Um conjunto de bits. Inclui códigos de condições. Sinal do último resultado. Zero Vai um Igual Overflow Interrupções habilitadas/desabilitadas Supervisor Modo de Supervisor • Intel ring zero • Modo Kernel • Permite que instruções privilegiadas sejam executadas • Usado pelo Sistema operacional • Não disponível aos programas de usuário Outros Registradores • Podem existir registradores apontando para: —Process control blocks (veja sistemas operacionais) —Vetores de interrupção (veja sistemas operacionais) • Os projetos da CPU e do Sistema operacional estão intimante ligados Exemplos de Organizações de Registradores Ciclo de Instrução • Veja o capítulo 3!!! Ciclo Indireto • Pode necessitar de acesso à memória para buscar operandos • O endereçamento indireto necessita de mais acessos à memória • Isso pode ser pensado como um subciclo adicional de instrução Ciclo de Instrução com Indireção Diagrama de Estados do Ciclo de Instrução Fluxo de Dados (Busca de Instrução) • Depende do projeto da CPU • Em geral eis o fluxo da busca: —PC contém o endereço da próxima instrução —O endereço é copiado para o MAR —O endereço é colocado no barramento de endereço —A unidade de controle requisite uma leitura à memória —O resultado é colocado no barramento de dados, copiado para o MBR, e então para o IR —Enquanto isso o PC é incrementado Fluxo de Dados (Busca de Dados) • IR é examinado • Se o endereçamento é indireto, um ciclo indireto é realizado —Os bits mais à direita do MBR são transferidos para o MAR —A unidade de controle requisite uma leitura à memória —O resultado (endereço do operando) é copiado para o MBR Fluxo de Dados (Diagrama de Busca) Fluxo de Dados (Diagrama Indireto) Fluxo de Dados (Execução) • Pode tomar várias formas • Depende da instrução sendo executada • Pode incluir —Escrita/leitura de memória —Entrada/Saída —Transferência entre registradores —Operações da ULA Fluxo de Dados (Interrupção) • Simples • Previsível • O conteúdo atual do PC é salvo para permitir voltar ao ponto em que estava • O conteúdo do PC é copiado para o MBR • Uma posição especial de memória (SP) é carregado para o MAR • O MBR é escrito na memória • O PC é carregado com o endereço da rotina de manipulação de interrupção • A próxima instrução (primeira do manipulador de interrupção) pode ser recuperada Fluxo de Dados (Diagrama de Interrupção) Busca Antecipada • Busca acessando a memória principal • A execução normalmente não acessa a memória principal • Pode buscar a próxima instrução durante a execução da atual • Isso é chamado de busca antecipada de instrução Desempenho Melhorado • Mas não dobrado: —a busca é normalmente mais curta que a execução; – pré-busca de mais que uma instrução? —qualquer desvio faz com que as instruções buscadas antecipadamente não sejam as necessárias • Adiciona mais estágios para melhorar o desempenho Pipeline de Dois Estágios Pipeline • • • • • • Busca instrução Decodifica instrução Calcula os operandos Busca os operandos Executa instruções Escreve resultado • Sobreponha estas operações Diagrama de Tempo para Operação de Pipeline de Instruções O Efeito de um Desvio Condicional na Operação de um Pipeline de Instrução Pipeline de Seis Estágios Representação Alternativa de Pipeline Fatores de Velocidade em Pipelinine Problemas no Pipeline • Pipeline, ou alguma porção do pipeline, deve parar • Também conhecido como a bolha do pipeline • Tipos de problemas —Recursos —Dados —Controle Problemas de Recurso • Duas (ou mais) instruções no pipeline precisam do mesmo recurso • Execução serial é melhor que paralela para parte do pipeline • Também chamado de problema estrutural • Por exemplo assuma um pipeline simples de cinco estágios —Cada estágio leva um ciclo do relógio • O caso ideal é uma nova instrução entrar no pipeline a cada ciclo do clock Problemas de Recurso • Assuma que a memória principal tem uma porta única • Assuma que buscas de instruções e leituras e escritas de dados são realizadas uma por vez • Ignore a memória cache • A leitura ou escrita de operando não pode ser realizada em paralelo com a busca de instrução Exemplos de Problemas de Recursos Problemas de Recurso • O estágio de busca de instrução deve ficar ocioso por um ciclo buscando I3 —Múltiplas instruções prontas para entrar na fase de execução de instrução • ULA única • Uma solução: aumente os recursos disponíveis —Múltiplas portas de memória principal —Múltiplas ULA Problemas de Dados • Conflito ao acessar uma localização de operando • Duas instruções a serem executadas em sequência • Ambas acessam um operando de registrador ou memória • Se ocorre em uma sequência estrita, nenhum problema acontece Problemas de Dados • Se ocorre em um pipeline, o valor do operando poderia ser atualizado de tal forma que produz um resultado diferente de uma execução estritamente sequencial • Por exemplo, em Assembly x86: —ADD EAX, EBX —SUB ECX, EAX /* EAX = EAX + EBX /* ECX = ECX – EAX Problemas de Dados • A instrução ADD não atualiza EAX até o final do estágio 5, no ciclo de clock 5 • A instrução SUB precisa do valor no início do seu estágio 2, no ciclo de clock 4 • O pipeline deve aguardar por dois ciclos de clock • Sem hardware especial e algoritmos de prevenção específicos, isso resulta em um uso ineficiente do pipeline. Exemplo de Problema de Dados Tipos de Problemas de Dados • Ler após escrever (RAW), dependência verdadeira —Uma instrução modifica um registrador ou uma posição de memória —A próxima instrução lê dados nesta posição —Problema se a leitura ocorrer antes da escrita Tipos de Problemas de Dados • Escrever após ler (RAW), ou antidependência —Uma instrução lê um registrador ou posição de memória —A instrução após escreve na posição —Problema se a escrita completa-se antes da leitura Tipos de Problemas de Dados • Escrever após escrever (RAW), ou dependência de saída —Duas instruções escrevem na mesma posição —Problema se a escrita toma lugar em ordem contrária da sequência pretendida • O exemplo anterior é o problema de RAW • Veja também o capítulo 14 Problema de Controle • Também conhecido como problema de desvio • O Pipeline toma decisão errada com relação à previsão de desvio • Traz instruções ao pipeline que devem ser descartadas logo depois • Meios de lidar com desvios —Múltiplos fluxos —Busca antecipada do alvo do destino —Buffer de laço —Previsão de desvio —Desvio atrasado Fluxos Múltiplos • Ter dois pipelines • Fazer busca antecipada de cada possibilidade do desvio em um pipeline separado • Usar o pipeline apropriado • Isso leva à contenção de barramento & registro • desvios múltiplos levam à necessidade de mais pipelines Busca Antecipada do Alvo do Desvio • O alvo do desvio é buscado antecipadamento, além da instrução após o desvio. • O alvo é mantido até que o desvio seja executado • Usado pelo IBM 360/91 Buffer de Laço • Memória muito rápida • Mantido pelo estágio de busca do pipeline • Verifica o buffer antes de buscar na memória • Muito bom para laços ou desvios pequenos • Parece uma memória cache • Usado no CRAY-1 Exemplo de Buffer de Laço Previsão de Desvio – Abordagem Estática • Previsão nunca tomada —Assume que o desvio não ocorrerá —Sempre busca a próxima instrução —68020 & VAX 11/780 —VAX não fazia a busca antecipada após um desvio se resultasse em falta de página (projeto de sistema operacional X projeto de CPU) • Previsão sempre tomada —Assume que o desvio ocorrerá —Sempre busca a instrução alvo Previsão de Desvio – Abordagem Estática • Previsão por Código de Operação —Algumas instruções têm maior probabilidade de resultar em um desvio do que outras —Pode-se conseguir 75% de successo Previsão de Desvio – Abordagem Dinâmica • Chave tomada/não tomada —Baseada na história —Boa para laços —Refinada pelo histórico de desvio em dois níveis ou baseado em correlação • Baseado em correlação —Em desvios de fechamento de laço, a história é uma boa previsão —Em estruturas mais complexas, a direção do desvio está correlacionada com a dos desvios relacionados – Também usa a hisória de desvios recentes Previsão de Desvio – Abordagem Dinâmica • Desvio Adiado —Não execute o desvio até que seja necessário —Rearranje instruções —Examinada no capítulo 13 - RISC Fluxograma de Previsão de Desvio Diagrama de Estados de Previsão de Desvio Lidando com Desvios Pipeline no Intel 80486 • Busca — Instruções são obtidas da memória cache memória externa — Elas são colocadas em um dos dois buffers de busca antecipada de 16 bytes — O buffer é preenchido assim que dados são consumidos pelo primeiro estágio de decodificação de instrução — As instruções podem ocupar de 1 a 11 bytes — Em média há 5 instruções no buffer — Este estágio é independente dos outros para manter o buffer sempre cheio Pipeline no Intel 80486 • Estágio de decodificação 1 — Toda informação de código de operação e modo de endereçamento é decodificada neste estágio — Esta informação está, no máximo, nos 3 primeiros bytes de cada instrução — Pode direcionar o estágio de decodificação 2 para pegar o resto da instrução (dados imediatos e de deslocamento) • Estágio de decodificação 2 — Expande os códigos de operação em sinais de controle — Computa os modos de endereçamento mais complexos • Execução — Operações da ULA, acesso à memória cache, atualização de registradores. • Escrita — Atualiza os registradores e flags de estado modificados no processo de execução anterior — Eventuais resultados são enviados à memória cache e a interface de barramento escreve nos buffers concomitantemente Três Exemplos de Pipeline no 80486 a) Sem atraso de carga de dados no pipeline b) Atraso de carga de apontador c) Temporização de instrução de desvio Registradores do Pentium II a) Unidade de inteiros no modo 32 bits Tipo Quantidade Comprimento (bits) Propósito Propósito Geral 8 32 Genéricos Segmento 6 16 Seletores de segmento EFLAGS 1 32 Bits de estado e controle Ponteiro da instrução 1 32 Ponteiro da instrução b) Unidade de ponto flutuante Tipo Quantidade Comprimento (bits) Propósito Numérico 8 80 Números de ponto flutuante Controle 1 16 Bits de controle Estado 1 16 Bits de estado Palavra de marcação 1 16 Especifica o conteúdo de registradores numéricos Ponteiro da instrução 1 48 Aponta para a instrução interrompida pela exceção Ponteiro de dados 1 48 Aponta para o operando interrompido pela exceção Registrador EFLAGS Registradores de Controle Mapeamento de Registrador do MMX • MMX usa diversos tipos de dados de 64 bits • Usa campos de endereços de registrador de 3 bits —8 registradores • Nenhum registrador específico MMX —Mapeamento para os registradores de 64 bits de ordem baixa (mantissa) —8 registradores MMX são formados Mapeamento dos Registradores MMX para Registradores de Ponto Flutuante Etiqueta de ponto flutuante Registradores de ponto flutuante Registradores MMX Processamento de Interrupção do Pentium • Interrupções —Mascaráveis —Não mascaráveis • Exceções —Detectadas pelo processador —Programadas • Tabela de vetor de interrupções —Cada tipo de interrupção tem um número —Índice para a tabela de vetor —256 * 32 bit vetores de interrupção • 5 classes de prioridade Atributos ARM • RISC • Matriz moderada de registradores uniformes — Mais que a maioria dos CISC, menos que muitos RISC • Modelo carrega/armazena — Operações realizadas em operandos apenas em registradores • Instrução uniforme de comprimento fixo — Conjunto padrão de 32 bits e 16 bits Thumb • Deslocamento ou rotação pode pré-processar registradores fonte — ULA separada e unidades de deslocamento Atributos ARM • Pequena quantidade de modos de endereçamento — Todos os endereços de carga/armazenamento dos registradores e campos de instruções — Nenhum endereçamento indireto ou indexado envolvendo valores em memória • Endereçamento de auto-incremento e autodecremento — Melhora os laços • Execução condicional de instruções minimiza os desvios condicionais — Redução no descarte de pipeline Organização ARM Simplificada Organização do Processador ARM • Muitas variações dependendo da versão do ARM • Dados trocados entre processador e memória através do barramento de dados • Item de dados (carrega/armazena) ou instrução (busca) • Instruções passam pelo decodificador antes da execução Organização do Processador ARM • Pipeline e geração do sinal de contrle na unidade de controle • Dados vão para o arquivo de registrador — Conjunto de registradores de 32 bit — Byte & sinal de dados em complemento de dois de metade de palavra estendidos • Tipicamente dois registradores fonte e um de resultado • Rotação ou deslocamento antes da ULA Modos do Processador ARM • Usuário • Privilegiado —6 modos – SO pode adequar uso de software básico – Alguns registradores são dedicados para cada modo privilegiado – Mudanças de contexto mais rápidas • Exceção —5 dos modos privilegiados —Entra em certas exceções —Substitui alguns registradores por registradores de usuário – Evita corrupção Modos Privilegiados • Modo de sistema — Não exceção — Usa os mesmos resgistradores do modo de usuário — Pode ser interrompido por... • Modo supervisor — SO — Interrupção de software usada para invocar serviços do sistema operacional • Modo de Aborto — Faltas de memória Modos Privilegiados • Modo indefinido — Tenta instrução que não é suportada pelo coprocessador de núcleo inteiro • Modo de interrupção rápida — Sinal de interrupção da fonte de interrupção rápida designada — Interrupção rápida não pode ser interrompida — Pode interromper uma interrupção normal • Modo de interrupção • Sinal de interrupção de qualquer outra fonte de interrupção Modos Modos Privilegiados Modos de exceção Tabela de Organiza ção de Registra dores ARM Usuário Sistema Supervisor Aborto Indefinido Interrupção Int. Rápida R0 R0 R0 R0 R0 R0 R0 R1 R1 R1 R1 R1 R1 R1 R2 R2 R2 R2 R2 R2 R2 R3 R3 R3 R3 R3 R3 R3 R4 R4 R4 R4 R4 R4 R4 R5 R5 R5 R5 R5 R5 R5 R6 R6 R6 R6 R6 R6 R6 R7 R7 R7 R7 R7 R7 R7 R8 R8 R8 R8 R8 R8 R8_fiq R9 R9 R9 R9 R9 R9 R9_fiq R10 R10 R10 R10 R10 R10 R10_fiq R11 R11 R11 R11 R11 R11 R11_fiq R12 R12 R12 R12 R12 R12 R12_fiq R13 (SP) R13 (SP) R13_svc R13_abt R13_und R13_irq R13_fiq R14 (LR) R14 (LR) R14_svc R14_abt R14_und R14_irq R14_fiq R15 (PC) R15 (PC) R15 (PC) R15 (PC) R15 (PC) R15 (PC) R15 (PC) CPSR CPSR CPSR CPSR CPSR CPSR CPSR SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq Organização de Registrador ARM • 37 registradores x 32-bit • 31 registradores de propósito-geral —Alguns têm propósitos especiais —I.e. PC • Seis registradores de status de programa • Registradores em bancos parcialmente sobrepostos —Modo do processador determina o banco • 16 registradores numerados e um ou dois registradores de status de programa visíveis Uso Geral de Registrador • R13 normalmente apontador de pilha (SP) —Cada modo de exceção tem seu R13 • R14 registrador de ligação (LR) —Subrotina e endereço de retorno de modo de exceção • R15 contador de programas (PC) CPSR • CPSR registrador de statud de processo —Modos de exceção têm SPSR dedicado • 16 msb são flags de usuário —Códigos de condição (N,Z,C,V) —Q – overflow ou saturação em algumas instruções SMID —J – instruções Jazelle (8 bit) —GEE[3:0] SMID usa [19:16] como flag de maior que ou igual CPSR • 16 lsb flags de sistema para modos privilegiados —E – endian —Desabilita interrupção —T – Instrução normal ou Thumb —Modo ARM CPSR e SPSR Processamento de Interrupção (Exceção) ARM • • • • Mais que uma exceção permitida Sete tipos Execução forçada dos vetores de exceção Múltiplas exceções manipuladas em ordem de prioridade Processamento de Interrupção (Exceção) ARM • Processador para a execução após a instrução atual • O estado do processador é preservado no SPSR para exceção —O endereço da instrução que está para executar é colocado no registrador de ligação —O retorno ocorre pela movimentação de SPSR to CPSR e R14 para o PC Leitura Adicional • Exemplos de processadores • Capítulo 12 do livro de William Stallings • Especificações e sites na web de fabricantes