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
Download

Arquitetura de Computadores