Organização e Arquitetura de
Computadores
Capítulos 9 e 10
Conjunto de Instruções
O que é um conjunto de instruções?


Coleção completa das instruções que são
entendidas por uma CPU
Código de máquina
• Binário

Representada por códigos em assembly
(linguagem de montagem)
Elementos de uma instrução

Código de operação (Cod.Op ou Opcode)
• Especifica a operação a ser efetuada
• Ex. ADD

Referência a operando fonte
• Operandos para a operação
• Dados de entrada

Referência a operando de resultado
• Resultado da operação

Referência à próxima instrução
• Indica onde a CPU deve buscar a próxima instrução
• Normalmente a próxima instrução
• Excessões: jumps
Localização dos Operandos



Memória principal (ou virtual ou cache)
Registradores da CPU
Dispositivos de I/O
Ciclo de instruções
Representação de Instruções


Cada instrução é representada por um único padrão de
bits
Para a compreensão humana, uma representação
simbólica é usada: mnemônicos
• e.x. ADD, SUB, LOAD

Operandos também podem ser representados dessa
maneira
• ADD A,B
Número de endereços

Instruções podem ser analisadas de acordo com
o número de endereços de operandos
• Operações aritméticas podem demandar um maior
número de operandos

Considere a operação:
Y=(A-B)/(C*D*E)
Quantos endereços utilizar???
3, 2 ou 1 endereços?
Número de endereços

3 endereços
• Operando 1, Operando 2, Resultado
• a = b + c;
• Pouco utilizadas

Necessita de palavras grandes para armazenar todos os
parâmetros da instrução
Número de endereços

2 endereços
• Um endereço funciona duplamente como
operando e resultado
•a=a+b
• Reduz o comprimento da instrução
• Necessita de algum trabalho extra

Armazenamento temporário de alguns resultados
Número de endereços

1 endereço
• Segundo endereço é implícito
• Normalmente é um registrador (ex: acumulador)
• Comum nas máquinas mais simples
Número de endereços

0 (zero) endereços
• Todos os endereços são implícitos
• Usa uma pilha
• e.g. push a
•
push b
•
add
•
pop c
• c=a+b
Vantagens/Desvantagens

Mais endereços
• Instruções mais complexas
• Mais registradores

Operações entre registradores são mais rápidas
• Menos instruções por programa

Menos endereços
•
•
•
•
CPU mais simples
Instruções menos complexas
Mais instruções por programa
Busca/execução mais rápidas
Decisões de projeto


Algumas decisões de projeto devem ser levadas
em conta
Efeito significativo sobre a implementação da
CPU
• Complexidade
• Custos

Necessidades do programador
Decisões de projeto

Repertório das operações
• Quantas operações?
• O que elas podem fazer?
• Quão complexas são?


Tipos de dados
Formato das instruções
• Comprimento do código de operação (quantos bits)
• Número de endereços
Decisões de projeto

Registradores
• Número de registradores disponíveis na CPU
• Quais operações podem ser feitas em quais
registradores?
• Gerais ou específicos

Modos de endereçamento

RISC versus CISC
Trabalho 3

Pesquisa
• Arquiteturas RISC x Arquiteturas CISC
• Tópicos:



•
•
•
•
Características dos dois grupos de arquiteturas
Vantagens e Desvantagens
Exemplos de arquiteturas (número de registradores,
instruções, desempenho)
Dupla
Páginas: entre 4 e 6 páginas (formato artigo)
Entrega: último dia de aula de OAC (2006)
Consultar no mínimo 4 referências (citá-las no texto)
Tipos de operando


Endereços (detalhes Cap. 10)
Números
• Inteiros
Cap. 8
• Ponto Flutuante
• Decimais (BCD: binary coded decimal)


4 bits para cada dígito decimal
Caracteres
• ASCII
• EBCDIC

Lógicos
• Bits or flags
8 bits por caracter
Tipos de operação


Quantidade de instruções varia de acordo com a
máquina
Mas a classe de instruções é basicamente a mesma:
•
•
•
•
•
•
•
Transferência de dados
Aritmética
Lógica
Conversão
E/S
Controle
Transferência de controle
Transferência de dados

Especificar
• Fonte
• Destino
• Quantidade de dados

Em alguns casos diferentes instruções para
diferentes movimentos
• e.x. IBM 370
Exemplos
Aritmética

Adição, subtração, multiplicação e divisão
• Inteiros com sinais
• Floating point

Exemplo
Lógica



Operações aplicadas a bits
AND, OR, NOT
Exemplo
Conversão

E.x. Binário para decimal
Input/Output



Instruções específicas
Pode ser executadas instruções de
movimentação de dados
Pode ser executado por uma controladora
separada (DMA)
Controle



Instruções privilegiadas
CPU deve estar em um estado específico
Para uso do sistema operacional
Transferência de controle

3 motivos
• Decisão
• Repetição
• Modularidade

Tipos de intruções:
• Desvio/Saltos (jumps)
• Chamadas de procedimento
Instruções de Desvio/Salto



Comumente instruções são executadas em
seqüência
Pode haver a necessidade de desviar (pular)
uma instrução (ou algumas)
Intruções:
• Desvio feito se alguma condição é satisfeita (desvio
condicional)
• Desvio incondicional
Chamadas de procedimento

Desenvolvimento em módulos
• Procedimentos

Vantagens:
• Modularidade
• Economia de código
Retorno de procedimentos

3 possibilidades
• Registrador
• Área de memória
• Pilha (também usada para passagem de parâmetros)

Registro de ativação
Modos de Endereçamento







Imediato
Direto
Indireto
Registrador
Indireto a Registrador
Indexado (Displacement)
Pilha (Stack)
Endereçamento Imediato (cap 10)



Operando é parte da instrução
Operando = campo do endereço
e.x. ADD 5
• Soma 5 ao conteúdo do acumulador
• 5 é o operando


Nenhuma referência à memória para buscar
dados
Rápido
Endereçamento Direto






Campo de endereços contém o endereço do operando
Endereço efetivo (EA) = campo de endereço efetivo(A)
e.x. ADD A
• Adiciona o conteúdo de uma célula A ao
acumulador
• Olha na memória o no endereço A para um
operando
Referencia uma memória única para acessar os dados
Não apresenta cálculos adicionais para trabalhar com
o endereço efetivo
Espaço de endereçamento limitado
Endereçamento Direto
Instrução
Cod.Op
Endereço A
Memória
Operando
Endereço Indireto



Células de memória apontadas por um campo
do endereço que contém o endereço (ponteiro)
do operando
EA = (A)
• Olhe em A, encontre o endereço(A) e procure lá pelo
operando
e.x. ADD (A)
• Soma o conteúdo da célula apontada ao conteúdo de
A ao acumulador
Endereço Indireto
Instrução
Cod.Op
Endereço A
Memória
Ponteiro para operando
Operando
Endereçamento a registrador




Operando émantido num registrador definido no campo
de endereço
EA = R
Número limitado de registradores
Campo de endereços necessário é pequeno
• Instruções menores (tamanho menor)
• Busca da instrução mais rápida



Nenhum acessoà memória
Execução muito rápida
Espaço de endereçamento limitado
Endereçamento a registrador
Instrução
Cod.Op Endereço do Registrador R
Banco de
Registradores
Operando
Endereçamento Indireto a Registrador





Endereçamento indireto
EA = (R)
O operando está na memória apontado pelo
conteúdo de um registrador R
Maior espaço de endereçamento (2n)
Um acesso a menos na memória do que o modo
de endereçamento indireto (puro)
Endereçamento Indireto a Registrador
Instrução
Cod.Op Registrador de Endereços R
Memória
Banco de Registradores
Ponteiro para operando
Operando
Endereçamento a Deslocamento


EA = A + (R)
Campo de endereços armazena dois valores
• A = valor base
• R = registrador que armazena o deslocamento
• ou vice versa
Endereçamento a Deslocamento
Instrução
Cod.Op Registrador R Endereço A
Memória
Banco de Registradores
Ponteiro para Operando
+
Operando
Endereçamento Relativo
Uma versão de endereçamento a
deslocamento
 R = contador de instruções (PC)
 EA = A + (PC)
 i.e. pega o operando da célula A da posição
corrente apontada pelo PC
 Vantagens: princípio da localidade e uso do
cache

Endereçamento base-registrador




A armazena o deslocamento
R armazena um ponteiro para o endereço base
R pode ser explícito ou implícito
e.x. registradores de segmento do 80x86
Endereçamento Indexado




A = base
R = deslocamento
EA = A + R
Bom para fazer acessos a arrays
• EA = A + R
• R++
Endereçamento à pilha

Operando está implicitamente no topo de uma
pilha
Comparativo
Tamanho da instrução (cap. 10)

Afetado por e afeta:
•
•
•
•
•

Tamanho da memória
Organização da memória
Estrutura do barramento
Complexidade da CPU
Velocidade da CPU
Compromisso entre um repertório variado de
instruções e a economia de espaço
• Memórias são baratas
Alocação de bits






Número de modos de endereçamento
Número de operandos
Registradores versus memória
Número de conjuntos de registradores
Faixa de endereçamento
Granularidade do endereçamento
Novos conjuntos de intruções

MMX
SSE e SSE2
3DNOW!

Características


• Multimídia
• Operações sobre múltiplos dados (vetorial)
• Registradores maiores (SSE)
Linguagem de Montagem


CPU: linguagem de máquina
Simplificar a escrita de programas
Ordenação de Bytes

Little endian:
• escreve dados com a seguinte ordenação:
[lo-bytes] [hi-bytes]

Big endian:
• escreve dados com a seguinte ordenação:
[hi-bytes] [lo-bytes]
Exemplo
Endereço de memória: byte
 Palavra: 16 bits (2 bytes)
Uma palavra:
0010 0110 1001 1010
será armazenada da seguinte forma:

- Little endian:
1600: 0010 0110
1599: 1001 1010
- Big endian
1600: 1001 1010
1599: 0010 0110
Exemplos


Pentium (80x86), VAX: little-endian
IBM 370, Motorola 680x0 (Mac), e a maioria dos
RISC: big-endian
Atividade Prática: Neander
Arquitetura






Largura de dados e endereços de 8 bits
Dados representados em complemento de dois
1 acumulador de 8 bits (AC)
1 apontador de programa de 8 bits (PC)
1 registrador de estado com 2 códigos de
condição: negativo (N) e zero (Z)
Instruções












Código
0000
0001
0010
0011
0100
0101
0110
1000
1001
1010
1111
Instrução
NOP
STA end
LDA end
ADD end
OR end
AND end
NOT
JMP end
JN end
JZ end
HLT
Comentário
nenhuma operação
armazena acumulador - (store)
carrega acumulador - (load)
soma
“ou” lógico
“e” lógico
inverte (complementa) acumulador
desvio incondicional - (jump)
desvio condicional - (jump on negative)
desvio condicional - (jump on zero)
término de execução - (halt)
Programando...


Soma de dois valores
As variáveis e o resultado estão dispostos
segundo o mapa de memória abaixo:
• posição: 128: variável A
• posição: 129: variável B
• posição: 130: resultado R
Resolução – R=A+B
Endereço
0
1
2
3
4
5
6
Instr.
LDA
128
ADD
129
STA
130
HLT
Significado
AC recebe 1.o valor
128
129
130
12
4
A
B
R
Soma 2.o valor ao acumulador
Armazena o valor na posição 130
Finaliza o programa
Exercícios
1.
2.
3.

Desenvolva um programa que some dois números e
teste se o resultado é negativo
Desenvolva um programa que some dois números (nas
posições 128 e 129), armazene o resultado em (130) e
armazene o valor 1 em (131) se não houver overflow,
255 caso contrário
Desenvolva um programa para ordenar 3 números
armazenados inicialmente nas posições 128, 129 e 130
Entregar:
•
•
Fluxograma de execução
Código (.mem)
Download

Instruction Sets