25/8/2010 Endereçamento Arquitetura de Computadores Conjuntos de Instruções: modos de endereçamento e formatos Normalmente, os campos de endereço são relativamente pequenos, impossibilitando a referência a uma grande quantidade de posições na memória principal ou virtual Diferentes técnicas de endereçamento são empregadas, buscando: Prof. Marcos Quinet Universidade Federal Fluminense – P.U.R.O. ◦ Aumentar a quantidade de posições de memória endereçáveis ◦ Aumentar a flexibilidade do endereçamento ao número de referências à memória ◦ Minimizar a complexidade do cálculo de endereços 2 Endereçamento Técnicas de endereçamento Praticamente todas as arquiteturas de computadores fornecem mais de um modo de endereçamento ◦ O valor do operando é especificado diretamente na instrução Instrução Um ou mais bits do formato de instrução podem constituir um campo de modo de endereçamento Endereço efetivo: em sistemas sem uso de memória virtual, é um endereço na M.P. ou de um registrador; já com a utilização de memória virtual, trata-se de um endereço virtual ou um registrador 3 Endereçamento imediato Opcode Operando Vantagem: nenhuma referência à memória Desvantagem: limitada magnitude do operando 4 1 25/8/2010 Técnicas de endereçamento Técnicas de endereçamento Endereçamento direto Instrução ◦ O campo de endereço contém o endereço efetivo do operando Opcode Endereço A Memória Ex.: ADD A, representa: ◦ Procura no endereço A na memória um operando; ◦ Soma o valor do endereço A ao acumulador. Operando Método simples, nenhuma outra operação é necessária para determinar o endereço Porém, o espaço de endereçamento é limitado (normalmente, menor do que uma palavra) 5 Técnicas de endereçamento Técnicas de endereçamento Endereçamento indireto Instrução ◦ No campo de endereço está o endereço de uma palavra de memória, que por sua vez, contém o endereço do operando 6 Opcode Endereço A Memória Ex.: ADD (A), representa a soma ao acumulador do conteúdo de memória apontado pelo endereço representado por A Com esta técnica, é possível utilizar um grande espaço de endereçamento (2n, onde n é o tamanho da palavra, em bits) Desvantagem: agora são necessários dois acessos à memória para acessar o conteúdo, o que torna o processo mais lento Ponteiro para operando Operando 7 8 2 25/8/2010 Técnicas de endereçamento Técnicas de endereçamento Endereçamento de registrador Instrução ◦ Semelhante ao endereçamento direto, a referência ao campo de endereço é a um registrador, e não a um endereço da M.P. Opcode Endereço do registrador R Registradores Normalmente, os endereços a registradores tem de 3 a 4 bits, possibilitando referenciar de 8 a 16 registradores de propósito geral Vantagens: campo de endereço da instrução é pequeno e não realiza acesso à memória (acesso aos registradores é mais rápido) Desvantagem: espaço de endereçamento muito limitado Operando 9 Técnicas de endereçamento Técnicas de endereçamento Instrução Endereçamento indireto via registrador Opcode ◦ Análogo ao endereçamento indireto usando memória; o registrador contém uma posição da memória principal 10 Endereço do registrador R Memória Registradores Assim como no endereçamento indireto (via memória principal), permite trabalhar com um maior espaço de endereçamento, porém requer dois acessos à memória (porém, um destes é a um registrador, logo, o tempo é bastante inferior ao da outra técnica) Ponteiro p/ o operando 11 Operando 12 3 25/8/2010 Técnicas de endereçamento Técnicas de endereçamento Instrução Endereçamento por deslocamento ◦ Método bastante poderoso, pois combina as técnicas de endereçamento direto + endereçamento indireto por registrador Opcode Registrador R Memória Registradores A instrução precisa de dois campos de endereço, sendo um deles explícito O outro campo é uma referência implícita, especifica um registrador cujo conteúdo é adicionado ao endereço explícito A, produzindo o endereço efetivo Pode ser utilizado de três formas (vistas a seguir) Endereço A Ponteiro para operando + Operando 13 Técnicas de endereçamento 14 Técnicas de endereçamento Endereçamento relativo O registrador referenciado implicitamente é o contador de programa (PC), usado para produzir o endereço efetivo O endereço efetivo é um deslocamento relativo ao endereço da instrução Explora o conceito da localidade de referência, o que permite economizar bits de endereço na instrução 15 Endereçamento via registrador-base O registrador contém um endereço de memória e o campo de endereço, um deslocamento em relação a este endereço ◦ Também explora o princípio da localidade de referência ◦ Permite a implementação da segmentação da memória 16 4 25/8/2010 Técnicas de endereçamento Técnicas de endereçamento Indexação Normalmente o campo de endereço contém um endereço da M.P., e o registrador, um deslocamento positivo relativo a esse endereço Uso na implementação de mecanismos de operações iterativas Endereçamento a pilha ◦ É uma forma de endereçamento implícito; a referência à memória sempre será o topo da pilha ◦ Ex.: acrescentar ‘1’ a cada elemento de uma lista. O elemento ‘A’, que representa um endereço de memória a partir do qual está armazenada a lista é colocado no registrador, que a cada operação é incrementado de 1 17 O apontador de topo da pilha (stack pointer) é mantido em um registrador, logo, os acessos as posições de memória da pilha são feitas por endereçamento indireto via registrador Vantagem: sem referências à memória Desvantagem: aplicabilidade limitada Ex.: ADD → desempilha dois dados da pilha e os soma 18 Técnicas de endereçamento Instrução Opcode Implícito Registrador topo de pilha 19 5