ARQUITETURA DE COMPUTADORES Nível da Microarquitetura Prof.: Agostinho S. Riofrio Nível de Microarquitetura Agenda 1. 2. 3. 4. 5. 6. 7. 8. 9. Introdução Caminho de Dados ULA Registradores Temporização Operação de Memória Controle de Microinstrução Áreas de Memória Memória Cache Nível de Microarquitetura Introdução Sua função é implementar o nível ISA (Instruction Set Architecture) através de um microprograma que controlará a lógica digital da CPU. Este nível é mais comumente encontado em processadores CISC. Nível de Microarquitetura Introdução Microprograma em ROM para buscar, decodificar e executar as instruções IJVM. − Cada instrução IJVM é uma função a ser chamada pelo programa principal. − Programa principal é loop simples, sem fim que determina a próxima função chamada, executa a função, determina a próxima função, executa a função e assim por diante. − Instruções IJVM: curtas, normalmente um ou dois campos. O primeiro campo é sempre o OPCODE. − O microprograma tem um conjunto de variáveis, acessadas por todas as funções denominado estado do computador. Nível de Microarquitetura Caminho de Dados Nível de Microarquitetura Caminho de Dados Possui a ULA, suas entradas e saídas. Conjunto de registradores de 32 bits acessíveis apenas pelo microprograma 6 linhas de seleção da função da ULA porém com apenas 16 funções úteis Números negativos representados em complemento de dois Entrada de dados da ULA: • Sempre do registrador H (Holding) • Qualquer um dos outros registradores, excluindo o H e MAR Nível de Microarquitetura Caminho de Dados Saída da ULA: Alimenta o deslocador Deslocador: • SLL8 (Shift Left Logical) • SRA1 (Shift Right Arithmetic) É possível ler e escrever em um mesmo registrador no mesmo ciclo de relógio. Nível de Microarquitetura Tabela de seleção de funções da ULA Nível de Microarquitetura Registradores MAR (Memory Address Register): Porta de endereçamento de memória (32 bits) MDR (Memory Data Register): Porta de dados de memória (32 bits), leitura ou escrita na memória. PC (Program Counter): indica a posição de memória(endereço) que contém a próxima instrução a ser executada. MBR (Memory Byte Register) : Porta de dados da memória (8 bits), apenas leitura da memória SP (Stack Pointer): Aponta para o topo da pilha Nível de Microarquitetura Registradores LV (Local Variable): Aponta para a base das variáveis locais dentro da pilha CPP (Constant Pool Pointer): Aponta para a base da área de constantes. TOS OPC H (Holding Register) Nível de Microarquitetura Temporização do Caminho de Dados Diagrama de temporização de um ciclo do caminho de dados. Nível de Microarquitetura Subciclos da temporização •Os sinais de controle são ajustados (∆w) •Os registradores são carregados no barramento B (∆x) •Operação da ULA e deslocador (∆y) •Propagação do resultado pelo barramento C de volta aos registradores (∆z) Nível de Microarquitetura Operação de Memória Memória física orientada por Bytes (total de 4GB) Os registradores MAR/MDR são utilizados para ler palavras de dados no nível ISA => 32 bits Os registradores PC/MBR são uilizados para ler o programa executável no nível ISA => 8 bits Nível de Microarquitetura Microinstruções 29 sinais para controlar a via de dados: − 9 sinais para escrita nos registradores − 9 sinais para leitura dos registradores − 8 sinais para controlar a ULA e deslocador − 2 sinais para indicar leitura ou escrita via MAR/MDR − 1 sinal para indicar busca de instrução via PC/MBR Nível de Microarquitetura Microinstruções Nível de Microarquitetura Microinstruções ADDR: Contém o endereço da possível próxima microinstrução JAM: Determina como a próxima microinstrução é selecionada ALU: Funções da ULA e Deslocador C: Seleção de qual registrador é carregado do barramento C MEM: Funções da memória B: Seleção de qual registrador é lido no barramento B Nível de Microarquitetura Controle de Microinstrução Nível de Microarquitetura Controle de Microinstrução O Seqüenciador determina quais sinais de controle devem ser habilitados em cada ciclo, responsável por seguir uma seqüência de operações necessárias para a execução de uma única instrução ISA: 1. Determina o estado de cada sinal de controle do sistema 2. Explicita o endereço da próxima microinstrução a ser executada A Memória de Armazenamento de Controle contém todo o microprograma (512 palavras de 36 bits). Nível de Microarquitetura Controle de Microinstrução As microinstruções NÃO são armazenadas seqüencialmente na memória de controle e cada microinstrução especifica sua sucessora. •MPC (MicroProgram Counter): Especifica o endereço da memória de controle •MIR (MicroInstruction Register): Saída de dados da memória de controle Nível de Microarquitetura Subciclos da Temporização Durante o subciclo 1, iniciado pela borda descendente do relógio, MIR é carregado a partir do endereço contido em MPC no instante em questão. Durante o subciclo 2, os sinais de MIR se propagam e o barramento Bé carregado a partir do registrador selecionado Durante o subciclo 3, a ULA e o deslocador funcionam e produzem um resultado estável. Durante o subciclo 4, os valores do barramento C, dos barramentos de memória e da ULA tornam-se estáveis. Na borda ascendente do relógio os registradores são carregados a partir do barramento C,.......... Nível de Microarquitetura Modelo de Memória Memória vista de duas formas: − Vetor de 4G bytes − Vetor de 1G palavras, cada palavra 4 bytes Endereços implícitos que fornecem a base para um ponteiro. As instruções só podem acessar a memória indexando a partir destes ponteiros. Endereços absolutos não são visíveis no nível ISA. Nível de Microarquitetura Conceito de Pilha Enquanto A está ativo Após A chamar B Após B chamar C Após C e B retornarem e A chamar D Nível de Microarquitetura Áreas da Memória 1. Conjunto de constantes: − Não pode ser escrita por um programa . − Consiste de constantes, strings e ponteiros para outras áreas de memória. − CPP: Aponta sempre para a base desta área (endereço da primeira palavra da área de constantes). Nível de Microarquitetura Áreas da Memória 2. Quadro de variáveis Locais: − Não inclui a pilha de operandos − Utilizada para a alocação de variáveis durante a execução de um procedimento. − A pilha de operandos está localizada exatamente acima do quadro de variáveis locais. − Argumentos da chamada do procedimento armazenados no começo do quadro de variáveis locais. − LV: Possui o endereço da primeira posição do quadro de variáveis locais. Nível de Microarquitetura Áreas de Memória 3. Pilha de Operandos: − A pilha não excede um certo tamanho, garantido pelo compilador Java. − A área da pilha de operandos é alocada acima da área de variáveis locais − SP: aponta para o topo da pilha de operandos => valor alterado durante a execução do programa. 4. Área de Métodos: − Região de memória que contém o programa. Nível de Microarquitetura Áreas de Memória Nível de Microarquitetura Conjunto de Instruções IJVM Nível de Microarquitetura Microinstrução Nível de Microarquitetura Memória Cache • Registradores – Memória de trabalho da CPU para armazenamento temporário de instruções e dados; – Registradores de propósitos gerais, vários registradores de propósitos específicos ( PC, SP, Flags, etc.); - Volátil • Memória Primaria – Em comparação com os registradores da CPU, tempo de acesso maior, porém sua capacidade de armazenamento é bem maior; – Deve ser suficientemente grande para armazenar os programas em execução e seus respectivos dados – Até 70 vezes mais lenta que os registradores - Volátil Nível de Microarquitetura Memória Cache • Memória Secundária – Não volátil – Memória de transbordo (Memória Virtual) - Grande capacidade de armazenamento – Tempo de acesso bem maior que o da memória primária Nível de Microarquitetura Programas •Os programas tendem a reutilizar dados e instruções que usaram recentemente. •Também aplica-se a dados mas não tão fortemente quanto em instruções. Nível de Microarquitetura Principio da Localidade − Localidade Espacial Localizações de memória com endereços numericamente similares a uma localização de memória recentemente acessada provavelmente serão acessadas em um futuro próximo; − Localidade Temporal Localizações de memória recentemente acessadas são acessadas novamente. Isto ocorre, por exemplo com localizações proximas do topo de uma pilha, ou com intruções dentro de um laço. Nível de Microarquitetura Memória Cache •Armazena cópia das regiões da memória primária mais freqüentemente usadas pela CPU, num curto intervalo de tempo; • Memória cache não pode ser acessada pelo programador (mesmo em assembly); • Computadores com vários níveis hierárquicos de cache são comuns atualmente, tipicamente os níveis mais altos ficam no mesmo circuito integrado da CPU; Nível de Microarquitetura Memória Cache de Instruções Cache de Instruções – A próxima instrução a ser executada é retirada do cache de instruções; – não estando ali presente, nova seqüência é carregada no Cache de Instruções; – Caso o Cache de Instruções contenha aninhamentos inteiros de laços com grande número de repetições, serão evitados inúmeros acessos à memória Nível de Microarquitetura Funcionamento da Memória Cache •A cache e a memória primária são dividas em blocos com um número fixo de palavras de memória (nível mais alto) •O endereço de memória é então divido em duas partes: – O endereço do bloco (às vezes, chamado de título, ou tag) – A posição da palavra dentro do bloco (offset) •Todo pedido de acesso a memória é feito primeiramente a cache. •Caso o dado não seja encontrado na cache, o bloco solicitado será trazido da memória primária para a cache. Este evento de chama de falha. Nível de Microarquitetura Memória Cache Cache de Mapemanto Direto • Cada bloco da memória só pode ser colocado em uma posição da memória Valid: Indica se exitem dados válidos no bloco Tag: Consiste de endereço de 16 bits que identifica ao bloco da memória primáriade onde vieram os dados Data: Contém uma cópia dos dados na memória Nível de Microarquitetura Memória Cache Nível de Microarquitetura Memória Cache Cache Completamente Associativo • Cada bloco pode ser alocado em qualquer osição da cache • Posição definida pela estratégia de substituição Cache Associativo de Conjunto • Um bloco da memória pode ser deslocado para um único determinado conjunto ( o qual conta com um certo número de blocos), dentro do qual o bloco pode ser colocado em qualquer posição Nível de Microarquitetura Vantagens e Desvantagens Mapeamento Direto Vantagens: Simplicidade de construção Desvantagens: Possível Ineficiência devido a falta de flexibilidade Completamente Associativo Vantagens: Total flexibilidade Desvantagens: Complexidade e custo de implementação Associativo de Conjunto Vantagens e Desvantagens: Meio termo entre as duas abordagens anteriores Nível de Microarquitetura Substituição de Bloco •Mapeamento direto: Não há decisão a ser feita, pois cada bloco é direcionado para um bloco de cache •Mapeamento Completamente associativo ou de conjunto: - Menos recentemente usado(Least Recently Used): Registra-se os acessos aos blocos e se retira do cache o menos usado recentemente. Nível de Microarquitetura Estratégia de Gravação – Write-Through: As informações são gravadas no cache e na memória inferior Vantagens • Mais fácil de Implementar • Falha de leitura não causa gravação • Nível Inferior sempre coerente Desvantagem • Gravações sempre demoram o tempo do nível inferior, mesmo em caso de acerto Nível de Microarquitetura Estratégia de Gravação – Write-Back: As informações são gravadas apenas no cache. A gravação na memória ocorrerá apenas quando houver substituição do bloco. Vantagens • Usa menos largura de Banda da Memória • Poupa Energia por usar menos HW Desvantagens • Precisa controlar atualização da Memória • Falha de leitura pode causar gravação • Memória fica inconsistente com a cache Nível de Microarquitetura REFERÊNCIAS BIBLIOGRÁFICAS [1] TANEMBAUM, Andrew S. Organização Estruturada de Computadores. Quinta Edição. Editora Pearson Prentice Hall, São Paulo, 2007. [2] HENNESSY, John L.; Patterson, David A.; Organização e Projeto de Computadores – 2ª Edição 2000; ED LTC. [3] MONTEIRO, M. A. Introdução à organização de computadores. Quarta Edição. Editora LTC, Rio de Janeiro, 2002.