Cap. 10 Conjunto de instruções

Propaganda
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
Download