Organização de Computadores Digitais Cap.10: Conjunto de Instruções: Modos de Endereçamento e Formatos Modos de endereçamento o Os modos de endereçamento são um aspecto da Arquitetura do conjunto de instruções nos projetos das CPUs. o Os vários modos de endereçamento definidos em uma Arquitetura do conjunto de instruções determinam como as instruções da linguagem de máquina identificam os operandos de cada instrução. OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Modos de endereçamento o Um modo de endereçamento especifica como calcular o endereço efetivo (real) de um operando através da informação disponível nos registradores ou em constantes da instrução. o Os modos de endereçamento são de interesse dos projetistas/programadores de compiladores e daqueles que escrevem diretamente em linguagem assembler. o Não há um padrão universalmente aceito para os nomes dos modos de endereçamento. OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Modos de endereçamento o Diferentes arquiteturas de computador variam muito no número de modos de endereçamento disponíveis. o É em geral possível, ao custo de algumas instruções extras e talvez um registrador, utilizar uns poucos modos de endereçamento simples para realizar todas as funções que modos mais complexos permitem. o É um fato aceito que é mais fácil aumentar a performance dos computadores se se tem uns poucos modos de endereçamento simples, do que se se tem muitos modos. o Máquinas RISC têm em torno de 5 modos de endereçamento (o IBM System/360 mainframe tinha somente 3). o Máquinas CISC (DEC VAX supermini) tinham até mais de 12 modos. OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Modos de endereçamento o Se há poucos modos, o modo requerido é codificado no próprio opcode (e.g. IBM System/390 e na maioria das RISC). o Se há muitos modos, o modo requerido é codificado em um campo específico do opcode (DEC VAX permitia múltiplos operandos em quase todas as instruções, reservando os primeiros bits para especificar o tipo de modo de endereçamento). Em agosto de 2000 a Compaq anunciou o fim da produção dos modelos VAX. o Medidas em programas gerados com compiladores a partir de linguagens de alto nível revelam que uns poucos modos são utilizados em 90 % dos casos. OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Número e Localização dos Operandos Uma característica de um conjunto de instruções é o número de operandos explicitamente indicados em uma instrução aritmética ou lógica. Em algumas arquiteturas, estas instruções referenciam explicitamente três operandos, dois operandos-fonte e um operando-destino, como por exemplo em: o ADD R1, R2, R3, onde R1 e R2 são os operandos-fonte e R3 é o operandodestino. Em outras arquiteturas, instruções aritméticas/lógicas especificam apenas dois operandos. Neste caso, um dos operandos-fonte é também o operando-destino. Por exemplo, na instrução: o ADD R1, R2, onde R2 contém um dos operandos-fonte e também é usado como operando-destino. Quanto à localização dos operandos especificados por uma instrução aritmética/lógica, podemos encontrar arquiteturas onde podem ser realizados acessos aos operandos diretamente a partir da memória principal. Por exemplo, nestas arquiteturas podemos ter instruções tais como: o ADD M1,R1,R2 o ADD M1,M2,R1 o ADD M1,M2,M3 onde M1, M2 e M3 são endereços de locações de memória. Em um outro extremo, existem arquiteturas onde todos os operandos encontramse apenas em registradores. As instruções aritméticas/lógicas são todas do tipo: o ADD R1,R2,R3 o OCD ADD R1,R2de Computadores Digitais - 2010 – Organização Prof. Camilo Rodrigues Neto Número e Localização dos Operandos A partir do número de operandos explicitamente referenciados e da localização destes operandos, podemos classificar as arquiteturas nos seguintes tipos: o arquiteturas memória-memória: as instruções aritméticas/lógicas usam três operandos e todos os operandos podem estar na memória; o arquiteturas registrador-memória: as instruções aritméticas/lógicas usam dois operandos, sendo que apenas um deles pode residir na memória; o arquiteturas registrador-registrador: as instruções aritméticas/lógicas usam três operandos, todos em registradores. Neste caso, apenas duas instruções acessam diretamente a memória: LOAD e STORE. A instrução LOAD carrega em um registrador um dado armazenado na memória e instrução STORE armazena na memória o conteúdo de um registrador. Arquiteturas memória-memória e registrador-memória apresentam como vantagem um menor número de instruções no código do programa, já que não é necessário carregar previamente em registradores os operandos-fonte de uma instrução aritmética/lógica, como acontece em uma arquitetura registrador-registrador. Por outro lado, a existência de instruções aritméticas/lógicas mais poderosas torna mais complexa a implementação da arquitetura. As arquiteturas Intel 80x86 e Motorola MC680x0 são do tipo registradormemória. Uma arquitetura memória-memória antiga foi o DEC VAX 11. OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Modos de endereçamento o o o o o o o Os campos de endereçamento são pequenos para o tamanho de memória que se quer acessar. As técnicas devem balancear: • quantidade de posições x flexibilidade de endereçamento • # de referências à memória em cada instrução x complexidade do cálculo de endereços Imediato Direto Indireto Registrador Indireto por Registrador Deslocamento (Indexado) Pilha OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Endereçamento Imediato o O operando faz parte da instrução o Operando = campo de endereço o e.g. ADD 5 o Adiciona 5 ao conteúdo do acumulador o 5 é o operando o Características: o Rápido: não é necessário fazer acesso à memória para buscar o dado o Desvantagem: o campo de operando é muito menor que o tamanho da palavra OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Endereçamento Imediato Exemplo ADD 5 o Adiciona 5 ao conteúdo do acumulador o 5 e’ o operando o É a forma mais simples de endereçamento em que o operando está presente na instrução o Este modo de endereçamento pode ser utilizado para definir e utilizar constantes e inicializar variáveis OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Endereçamento Imediato OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Endereçamento Direto o O campo de endereçamento contém o endereço efetivo do operando o Esta técnica foi muito utilizada nas primeiras gerações de computadores o Implica um acesso à memória o Limita o espaço de endereçamento OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Endereçamento Direto Exemplo, ADD A o Adiciona o conteúdo da célula A ao acumulador o Busca no endereço de memória A o operando OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Endereçamento Direto OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Endereçamento Indireto o Esta técnica procura solucionar o problema do espaço de endereçamento da técnica anterior colocando no campo do endereço da instrução uma referência à memória que contém o endereço completo da operação OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Endereçamento Indireto o Vantagem o Para uma palavra de tamanho N está disponível um espaço de endereçamento 2N o Desvantagem o São necessários 2 acessos para buscar o operando, um para o endereço, outro para o valor do operando OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Endereçamento Indireto o Exemplo: ADD (A) o Adicione o conteúdo da célula referenciada pelo conteúdo de A ao acumulador OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Endereçamento Indireto OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Endereçamento por Registrador o Esta técnica é semelhante ao endereçamento direto, a única diferença é que o campo refere um registrador em vez de uma posição de memória o Tipicamente o campo de endereço que referencia os registradores tem de 3 a 4 bits para referenciar um conjunto de 8 a 16 registradores o Vantagens o Apenas um pequeno campo de endereço é necessário e não são necessárias referências à memória o Execução muito rápida o Desvantagens o Número limitado de registradores o Quais valores ficarão nos registradores? OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Endereçamento por registrador OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Endereçamento Indireto por registrador o Esta técnica é parecida ao endereçamento indireto, porém o campo de endereço refere-se a um registrador e não uma posição da memória o As vantagens e limitações são basicamente as mesmas que o endereçamento indireto: o Para uma palavra de tamanho N está disponível um espaço de endereçamento 2N o São necessários 2 acessos para buscar o operando, um para o endereço, outro para o valor do operando o O endereço no registrador pode ser o resultado de uma conta/operação previamente feita. OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Endereçamento Indireto por Registrador OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Endereçamento por Deslocamento o Esta técnica combina as técnicas de endereçamento direto e do endereçamento indireto por registrador o Esta técnica obriga a que a instrução tenha dois campos de endereço o Sendo pelo menos um explícito (valor A usado diretamente) o O outro campo de endereçamento, R, referencia implicitamente um registrador cujo conteúdo é adicionado a A para produzir o endereçamento deslocado EA = A + (R) OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Endereçamento por Deslocamento 1 - Endereçamento Relativo o Usa-se o PC (Program Counter) o O campo de endereço da instrução corrente é um deslocamento em relação ao PC o Esta técnica explora o princípio da localidade permitindo poupar bits de endereço na instrução 2 - Endereçamento Baseado em registrador o O registrador de referência contém a posição da memória e o endereço da instrução contém o deslocamento a partir duma posição de memória OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Endereçamento por Deslocamento 3 - Endereçamento Indexado o Neste caso o campo do endereço referencia a memória principal e o registrador de referência contém um deslocamento positivo a partir dessa posição de memória o Esta aproximação é exatamente contrária ao endereçamento baseado em registrador e tem grande utilidade na execução de instruções iterativas através de alterações sucessivas do registrador de referência EA = A + (R) R=R+1 o Por exemplo suponha-se que se quer adicionar um elemento aos elementos de uma lista. O melhor seria começar com a base e somar um elemento à base A: A+1 A+2 A+3,… OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Endereçamento por Deslocamento + OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Endereçamento por Pilha o A pilha é um conjunto reservado de localizações de memória o A pilha é gerida em filosofia LIFO (Last In First Out) o Associado à pilha existe um apontador que é o endereço do topo da pilha o O apontador para o topo da pilha é mantido num registrador especial (SP – Stack Pointer), o que faz com que o endereçamento por pilha seja de fato um endereçamento indireto por registrador OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Endereçamento por Pilha o O operando está (implicitamente) no topo da pilha o ex ADD o remove dois elementos da pilha e adiciona-os e coloca o resulta na pilha OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Endereçamento por pilha + OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Formato das Instruções o O formato das instruções define a forma como os campos são distribuídos o Cada instrução deve ter um código de operação (OPCODE) e, explícita ou implicitamente, um ou mais operandos o Cada operando explícito tem de ser referenciado utilizando um dos métodos descritos anteriormente (endereçamento) OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Tamanho das Instruções o É o fator básico do desenho do conjunto de instruções e esta decisão afeta e é afetada por: o Tamanho da memória o Organização da memória o Estrutura do bus o Velocidade do CPU o O compromisso mais obvio é entre o desejo de ter um repertório de instruções mais poderoso (ou seja, mais OPCODES, mais operandos, mais modos de endereçamento) e a necessidade de poupar espaço OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Tamanho das Instruções Além deste compromisso existem outras considerações: o O tamanho das instruções deve ser igual ou múltiplo do bus do sistema, caso contrário as instruções não ficariam completas; o O tamanho das instruções deve também ser múltiplo do tamanho dos caracteres (8 bits) e dos números com vírgula fixa (inteiros) para não haver desperdícios de bits nos cálculos efetuados OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Alocação de Bits Os seguintes fatores determinam a utilização dos bits de endereçamento: o Nº de modos de endereçamento o Os modos de endereçamento indicados explicitamente ocupam mais bits que os indicados implicitamente o Nº de operandos o Menos endereços podem levar a programas mais longos e complexos o Registrador x Memória o Quantos mais registradores forem utilizados para referenciar operandos, menos bits serão necessários OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Alocação de Bits o Nº de conjuntos de registradores o Atualmente a tendência tem sido para dividir os registradores em bancos especializados (e.g. dados e deslocamentos), usando os opcode(s) da instrução para determinar implicitamente sobre que banco de registradores a operação deve ser realizada o Alcance do endereçamento (quando o acesso é feito à memória principal) o Está diretamente relacionado com o nº de bits para endereçamento na instrução OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto Leitura adicional o Stallings capítulo 10 o Intel e PowerPC Web sites OCD – Organização de Computadores Digitais - 2010 Prof. Camilo Rodrigues Neto