Modos de Endereçamento
Modos de endereçamento são as regras pelas quais uma instrução especifica onde seus operandos estão localizados — em um registrador, incorporados como um imediato, ou na memória em um endereço calculado a partir de registradores e deslocamentos.
Definition
Um modo de endereçamento é um método especificado por uma instrução para determinar a localização de um operando, variando de valores mantidos diretamente em registradores ou na própria instrução a endereços calculados a partir de registradores base, registradores de índice e deslocamentos.
Scope
Este tópico aborda as formas como os operandos são nomeados e localizados: imediato, registrador, indireto por registrador, base-mais-deslocamento, indexado, PC-relativo e modos computados mais complexos. Ele trata de como os modos de endereçamento afetam o tamanho do código, a contagem de instruções e a complexidade do hardware. Exclui como as instruções são codificadas em bits (formatos e codificação de instruções) e a tradução virtual-para-física do sistema (memória virtual e paginação).
Core questions
- Como cada modo de endereçamento calcula o endereço efetivo ou o valor de um operando?
- Quais modos de endereçamento são mais frequentemente usados em programas reais e por quê?
- Como modos de endereçamento mais ricos reduzem a contagem de instruções ao custo de hardware e complexidade de decodificação?
- Por que as arquiteturas de carga-armazenamento restringem o acesso à memória a alguns modos simples?
Key concepts
- endereçamento imediato
- endereçamento por registrador
- endereçamento indireto por registrador
- base-mais-deslocamento
- endereçamento indexado
- endereçamento PC-relativo
- cálculo de endereço efetivo
- restrição de carga-armazenamento
Mechanisms
Cada modo de endereçamento define como o processador deriva um operando. Operandos imediatos são codificados na instrução; operandos de registrador são lidos do arquivo de registradores; operandos de memória têm um endereço efetivo calculado adicionando um registrador base, um índice escalonado opcional e um deslocamento. O endereçamento PC-relativo forma endereços relativos ao contador de programa, o que suporta código independente de posição e alvos de desvio.
Clinical relevance
Os modos de endereçamento moldam como os compiladores geram código: base-mais-deslocamento mapeia naturalmente para campos de estrutura e variáveis de pilha, modos indexados para acesso a arrays, e endereçamento PC-relativo para executáveis independentes de posição e bibliotecas compartilhadas. Projetos RISC de carga-armazenamento mantêm deliberadamente o endereçamento de memória simples para facilitar o pipeline, enquanto máquinas CISC oferecem modos mais ricos para densidade de código.
History
Arquiteturas iniciais e CISC acumularam muitos modos de endereçamento elaborados, incluindo formas indiretas de memória e auto-incremento. Estudos empíricos de uso de instruções mostraram que um pequeno conjunto de modos simples é responsável pela maioria dos acessos, motivando a decisão RISC de suportar apenas alguns modos e confinar o acesso à memória a instruções de carga e armazenamento.
Key figures
- John L. Hennessy
- David A. Patterson
Related topics
Seminal works
- hennessy2019
- patterson2020
Frequently asked questions
- Por que as arquiteturas RISC suportam tão poucos modos de endereçamento?
- Estudos descobriram que os programas usam predominantemente alguns modos simples. Restringir o acesso à memória a modos indiretos por registrador e base-mais-deslocamento mantém o pipeline simples e o cálculo do endereço efetivo rápido, enquanto os compiladores sintetizam quaisquer padrões de acesso mais ricos a partir desses primitivos.
- Para que é usado o endereçamento PC-relativo?
- O endereçamento PC-relativo calcula um endereço como um deslocamento a partir do contador de programa. É usado para alvos de desvio e salto e para acessar dados próximos, permitindo código independente de posição que é executado corretamente independentemente de onde é carregado na memória.