Uma das principais características do conjunto de instruções compreensível por um processador é o numero e a localização de seus operandos indicados em uma instrução aritmética ou lógica.
Uma dos primeiros formatos de instrução projetados possuía quatro operandos, conforme abaixo:
Cod. Op.
|
Op.1
|
Op.2
|
Op.3
|
End. Prox. Instruc.
|
Este formato de instrução (não usado mais) era completo, possuindo a localização de todos os operandos, também trazia a localização da próxima instrução a ser executada. Uma vantagem deste formato de instrução é o fato de dispensar as instruções de desvio incodicional, pois o endereço de desvio consta na instrução. A desvantagem deste formato está na grande quantidade de espaço de espaço em memória que ela ocupa, principalmente por que uma grande quantidade de instruções não precisarem de três operandos.
Em algumas arquiteturas, as instruções possuem três operandos, dois operandos-fonte e um operando-destino, como por exemplo em
Cod. Op.
|
Op.1
|
Op.2
|
Op.3
|
onde Op.1 e Op.2 são os operandos-fonte e Op.3 é
o operando-destino. Um problema neste formato de instrução acontece
quando as operações repetem os operandos (Op.2
= Op.3, por exemplo). Isso acontece normalmente quando se deseja incrementar
ou decrementar o valor de uma variável.
Tendo isso em vista, algumas arquiteturas utilizam instruções
com apenas dois operandos
Cod. Op.
|
Op.1
|
Op.2
|
onde Op.2 é operando-fonte e também operando-destino.
Quanto à localização
dos operandos especificados por uma instrução, 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 aritméticas/lógicas
tais como:
Cod. Op.
|
M1
|
R1
|
R2
|
Cod. Op.
|
M1
|
M2
|
R2
|
Cod. Op.
|
M1
|
M2
|
M3
|
onde R1 e R2 são registradores e M1, M2 e
M3 são endereços de locações de memória. Em um outro extremo, existem arquiteturas
onde todos os operandos encontram-se apenas em registradores. As instruções aritméticas/lógicas
são todas do tipo:
Cod. Op.
|
R1
|
R2
|
R3
|
Cod. Op.
|
R1
|
R2
|
A partir do número de
operandos explicitamente referenciados e da localização destes operandos,
podemos classificar as arquiteturas nos seguintes tipos:
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.
Arquiteturas
registrador-memória: as instruções aritméticas/lógicas usam dois operandos,
sendo que apenas um deles pode residir na memória.
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 registrador-memória. Dentre as
arquiteturas memória-memória está o DEC VAX 11.
Principais Referências:
- Tao, Welfane K. Arquitetura e Organização de Computadores. Cap. 6. 2004, Janeiro.
- Clícia, M. O conjunto de Instruções do Computador. Cap. 4. 2005, Abril.
Nenhum comentário:
Postar um comentário