Arquitetura de Computadores Cap. 10 Conjunto de Instruções: Modos de End. e Formatos Modos de Endereçamento Imediato Direto Indireto Registrador Indireto Via Registrador Deslocamento (Indexação) Pilha Endereço Efetivo Sistemas Sem Memória Virtual Endereço da Memória Principal ou Registrador Sistemas Com Memória Virtual Endereço Virtual ou Registrador Mapeamento para Endereço Físico Mecanismo Específico Endereçamento Imediato Operando é Parte da Instrução Algoritmo Operando = Campo de Endereço Aplicações Típicas Definição e Uso de Constantes Atribuição de Valores Iniciais a Variáveis Nenhuma Referência à Memória Rápido Magnitude Limitada Diagrama de End. Imediato Instrução Opcode Operando Endereçamento Direto Campo de Endereço End. do Operando Algoritmo End. Efetivo (EA) = Campo de End. (A) Referência Única à Memória Sem Cálculos Adicionais para Obter EA Espaço de Endereçamento Limitado Diagrama de End. Direto Instrução Opcode Endereço A Memória Operando Endereçamento Indireto Campo de Endereço End. de Palavra na Memória End. do Operando Algoritmo EA = (A) Vantagem Tam. da Palavra = N Espaço de End. 2N Desvantagem 2 Acessos à Memória para Obter Operando Diagrama de End. Indireto Instrução Opcode Endereço A Memória Ponteiro p/Op. Operando Endereçamento de Registrador Semelhante ao End. Direto Campo de Endereço Registrador Onde Está Operando Algoritmo EA = R Tipicamente Campo de End. 3-4 bits __ Registradores? Endereçamento de Registrador Vantagem Tamanho do Campo de End. é Pequeno Instruções Pequenas Não Requer Referência à Memória Busca Mais Rápida Desvantagem Espaço de Endereçamento Limitado Diagrama de End. de Registrador Instrução Opcode End. do Registrador R Registradores Operando End. Indireto Via Registrador Semelhante ao End. Indireto Campo de End. Registrador R com End. do Operando Algoritmo EA = (R) Vantagens e Desvantagens Semelhante ao End. Indireto Um Acesso à Memória a Menos Diagrama de End. Indireto Via Registrador Instrução Opcode End. do Registrador R Memória Registradores Ponteiro para Op. Operando End. Por Deslocamento Combina Capacidades de End. Direto e Indireto Via Registrador Algoritmo EA = A + (R) Dois Campos de End. A = End. Explícito, Usado Diretamente R = Registrador com Deslocamento Diagrama de End. Por Deslocamento Instrução Opcode Registrador R Endereço A Memória Registradores Ponteiro para Op. + Operando End. Por Deslocamento Três Usos Comuns Endereçamento Relativo End. Via Registrador-Base Indexação End. Por Deslocamento End. Relativo R = Program Counter, PC EA = A + (PC) Deslocamento Relativo ao End. da Instrução Explora Conceito de Localidade e Uso da Cache Maioria das Referências à Memória Posições Próximas da Instrução Atual Ver Apêndice 4A End. Por Deslocamento End. Via Registrador-Base R = Endereço Base A = Deslocamento Forma Conveniente de Implementar a Segmentação de Memória Referência a R Pode Ser Explícita ou Implícita Ex.: Registradores de Segmento no 80x86 End. Por Deslocamento Indexação A = Base R = Deslocamento EA = A + R Conveniente para Acessar Matrizes EA = A + R R++ Indexação – Combinações Pós-Indexação EA = (A) + (R) Pré-Indexação EA = (A+(R)) Diagramas Atividade! Endereçamento à Pilha Topo da Pilha (Implicitamente) Operando Pilha Seqüência Linear de Posições de Memória Bloco Reservado Lista Push-Down Fila LIFO (Last In, First Out) Apontador de Topo da Pilha (Stack Pointer) Registrador Referência à Pilha = End. Indireto Via Registrador Formatos de Instrução Disposição de bits da Instrução Inclui Código de Operação (OpCode) Zero ou Mais Operandos (Implícita ou Explicitamente) Usualmente Mais de Um Formato de Instrução em Um Conjunto de Instrução Formatos de Instrução Questões Fundamentais Tamanho de Instrução Alocação de bits Instruções de Tamanho Variável Tamanho de Instrução Afeta e É Afetada por Tamanho da Memória Organização da Memória Estrutura de Barramento Complexidade da CPU Velocidade da CPU Determina Riqueza e Flexibilidade da Máquina para Programador Assembly Tamanho da Instrução Conflito Fornecer Repertório de Instruções Poderoso Necessidade de Economizar Espaço Demanda dos Programadores Mais Códigos de Operação Prg. Compacto Mais Operandos Prgs. Mais Compactos Mais Modos de End. Mais Flexibilidade Maior Espaço de Endereçamento Tamanho da Instrução Instruções Maiores = Desperdício? Espaço Instr. de 32 bits = 2 X Instr. de 16 bits Utilidade É Duas Vezes Maior? Tamanho da Instrução = Unidade de Transferência de Dados Memória-CPU? Nº de Instruções Obtidas em Um Ciclo de Busca Alocação de bits Conflito Nº de OpCodes Capacidade de Endereçamento Uso de OpCodes de Tamanho Variável Tamanho Mínimo para OpCode Alocação de bits Fatores de Uso dos bits Número de Modos de Endereçamento Número de Operandos Memória ou Registrador 8 a 32 Registradores Visíveis ao Usuário Número de Conjuntos de Registradores Dois ou Mais: Dados e Deslocamento Faixa de Endereços Granularidade de Endereçamento Tamanho da Palavra X Acesso ao Byte/Palavra As Escolhas São Críticas? Instruções de Tamanho Variável Instruções de Tamanhos Diferentes X Tamanho Único Custo Principal Complexidade da CPU Tamanhos de Instruções = Múltiplos ou Divisores do Tamanho da Palavra Estratégia Típica: Buscar Sempre o Nº de Bytes do Tamanho da Maior Instrução Pentium Pesquisar Modos de Endereçamento Formatos de Instrução Conclusões Instruction Set = Simples ou Complexa? Compatibilidade e Legado Fornecer ao Desenvolvedor de Compiladores Ferramentas para Produzir Código Eficiente Por onde estudar ? Computer Organization and Architecture William Stallings Cap. 10