Formato de Instruções

Propaganda
Nível ISA
Introdução
• Os computadores foram divididos em diversas
camadas para simplificar o desenvolvimento
de aplicações e reduzir custos de produção.
• O entendimento dessas diferentes camadas
permite entender o funcionamento interno do
computador.
Arquitetura em Camadas
Arquitetura em Camadas
Nível ISA
• Chamado de nível de arquitetura do conjunto
de instruções.
• Está
localizado
entre
o
microarquitetura e o nível de SO.
nível
da
• Foi desenvolvido antes de qualquer nível.
– Nos primeiros computadores só existiam nível de
lógica digital e ISA.
Nível ISA
• Os programas em diversas linguagens são
traduzidos para uma linguagem intermediária
comum.
– Da mesma forma que Java converte para
Bytecode.
– O hardware deve ser capaz de executar programas
de nível ISA diretamente.
Nível ISA
• Define a interface entre os compiladores e o
hardware.
– É uma linguagem que ambos devem entender.
– Os compiladores devem saber transformar de
uma linguagem alto nível para uma linguagem do
nível ISA.
Nível ISA
Nível ISA
• O Nível ISA depende de uma negociação entre os
projetistas de compiladores e os engenheiros de
Hardware
– Engenheiros de Hardware felizes e
– Desenvolvedores de Software contentes
• As novas máquinas devem ser compatíveis com:
– Antigos Sistemas Operacionais
– Aplicações já desenvolvidas
– O desafio é construir máquinas melhores e
compatíveis com as anteriores
Nível ISA
• Quais as características que uma boa ISA deve
ter?
– Ser implementada com eficiência, tanto nas
tecnologias atuais como nas futuras
• hardware mais simples
• hardware com melhor tecnologia disponível
– Facilidade de se gerar código para a ISA
Propriedades
• O nível ISA define como a máquina se
apresenta a um programador de linguagem de
máquina.
– Quais as instruções disponíveis;
– Qual modelo de memória utilizado;
– Quais e quantos registrados existem;
– Quais os tipos de dados suportados...
Propriedades
• Outras questões não fazem parte deste nível:
– Se a microarquitetura é microprogramada ou não.
– Se possui paralelismo ou não...
• Outras questões são visíveis neste nível:
– Uso de processadores específicos para números
inteiros e ponto flutuante...
Propriedades
• Algumas arquiteturas definem documentos de
requisitos da camada ISA.
– Diferentes implementadores podem construir a
máquina e obter o mesmo desempenho. Ex: V9
SPARC
• Para algumas arquiteturas não existe uma
documentação formal de especificação
– fabricante não quer clones de sua máquina (ex:
Pentium-Intel)
Propriedades
• Para outras arquiteturas o nível ISA é especificado por um
documento formal
– permitindo que diferentes implementadores construam
máquinas distintas, rodando o mesmo software (chips
funcionalmente identicos com diferenças em preço e
performance)
– O documento formal contém
• seções normativas: que impoem requisitos que devem
ser atendidos na implementação
• seções informativas: que ajuda o leitor a entender os
requisitos sem entrar na definição formal
• conjuntos de testes: conjunto de testes específicos para
se verificar a implementação em relação a
especificação formal
Modos de Utilização
• Este nível provê, no mínimo, dois modos de
utilização:
– Modo núcleo ou modo kernel.
– Modo usuário.
Modo Núcleo
• O SO é executado neste modo.
• Permite executar qualquer instrução, sem
restrições.
Modo Usuário
• Executa programas do usuário.
• Possui acesso restrito à algumas instruções
importantes.
– Não é possível usar as instruções que manipulam
a cache, por exemplo.
Modelos de Memória
Modelos de Memória
• Todos os computadores dividem a memória em
células endereçáveis.
• O tamanho mais utilizado é de 8 bits, chamado
de 1 byte.
• Este tamanho facilita o armazenamento de
caracteres ASCII.
– 7 bits do caractere;
– 1 bit de paridade.
Modelos de Memória
• Estes bytes são agrupados em palavras.
– Podem ser de 4 ou 8 bytes.
• As instruções podem manipular palavras
inteiras.
• Algumas arquiteturas exigem que as palavras
sejam alinhadas.
Alinhamento das Palavras
Alinhamento das Palavras
• No Pentium 4, é possível referenciar qualquer
byte.
• Sem alinhamento, uma palavra pode ficar
“espalhada”.
– Necessita de duas instruções para carregar a
palavra.
Registradores
Registradores
• Memórias rápidas usadas em execução de
instruções dentro do processador (objetivo é
minimizar os acessos às memórias externas ao
processador)
• Todos
os
computadores
possuem
registradores visíveis no nível ISA.
• São visíveis para controlar a execução do
programa, reter resultados temporários e
outros fins.
Registradores
• Em geral, os registradores do nível de
microarquitetura não são visíveis no nível ISA.
• Alguns são visíveis em ambos os níveis.
– PC (contador de programa), ponteiro de pilha...
• Todos os registradores do nível ISA são visíveis
no nível abaixo.
Categorias de Registradores
• Os registradores do nível ISA podem ser
separados em duas categorias:
– Registradores de uso especial.
– Registradores de uso geral.
Registradores de Uso Especial
• Incluem o PC e o ponteiro de pilha.
• Possuem papéis especiais no funcionamento
do computador.
• Alguns só são usados pelo processador
Registradores de Uso Geral
• Contém variáveis locais
intermediários de cálculos.
e
resultados
• Sua função é prover acesso rápido a dados
muito usados.
• São, em geral, simétricos e intercambiáveis
(usados indistintamente)
Registradores de Uso Geral
• No Pentium 4, há um registrador chamado
EDX.
– É usado como registrador de uso geral, mas
também armazena metade do produto em uma
multiplicação e retém metade do dividendo em
uma divisão.
Uso dos Registradores
• É comum que SOs e compiladores adotem
convenções sobre o uso dos registradores.
• Alguns podem ser utilizados para armazenar
parâmetros de procedimentos e outros como
registradores transitórios.
Uso dos Registradores
• Sem uma convenção:
– Registradores que armazenam uma variável local
pode perder seu conteúdo após um
procedimento.
– O endereço de retorno pode ser perdido.
Uso dos Registradores
• Os registradores de uso especial são usados
apenas pelo SO.
– São acessados em modo núcleo.
• Compiladores e usuários não necessitam
saber que eles existem.
Registrador de Controle
• Possui um comportamento
núcleo/usuário.
híbrido
de
• O registrador de flags ou PSW (Program
Status Word) é um registrador de controle.
• Possui vários bits importantes para CPU.
Registrador de Controle
• Estes bits são atualizados em todo ciclo da
ULA.
• Refletem o estado da última operação.
Bits da PSW
• N – Setado quando o resultado é negativo.
• Z – Quando o resultado é zero.
• V – Quando resultado excede a capacidade da
ULA.
• C – Quando o resultado causou um vai-um do bit
da esquerda.
• A – Quando houve um vai-um do bit 3 (vai-um
auxiliar)
• P – Quando o resultado teve paridade par.
Bits da PSW
• As instruções de comparação e desvio
condicional utilizam estes bits para realizar
uma determinada ação.
• Por exemplo, a instrução CMP (comparação)
na verdade subtrai os operandos e, se forem
iguais, seta Z como 1.
Bits da PSW
• A PSW pode ser lida em modo usuário.
• Alguns campos só podem ser escritos em
modo núcleo.
Instruções
Instruções
• É a principal característica do nível ISA.
• O conjunto de instruções controlam tudo o que a máquina
pode fazer
• Tipos de instruções típicas:
– LOAD, STORE - realizam o movimento de dados e
instruções entre memória e registradores
– MOVE - realizam cópia de valores entre registros
– ADD, SUB, MULT,... - realizam operações aritméticas
– AND, OR, XOR, ... - realizam operações lógicas
– EQ, NEQ, LEQ,... - realizam operações de comparação
– GOTO - operação de desvio
Visão Geral
• Serão abordados
arquiteturas:
– Pentium 4;
– SPARC v9;
– 8051
os
níveis
ISA
das
Tipos de Dados
• Se existe suporte de hardware para um
determinado tipo de dado
– usuário não pode manipular dado em formato
particular
diferente
do
especificado
(implementado)
• Se não existe esse suporte
– usuário tem maior flexibilidade para trabalhar
com tipos diferentes ou próprios
Tipos Dados
• Se existe suporte de hardware para um
determinado tipo de dado
– usuário não pode manipular dado em formato
particular
diferente
do
especificado
(implementado)
• Se não existe esse suporte
– usuário tem maior flexibilidade para trabalhar
com tipos diferentes ou próprios
Dados Numéricos
• Tipos de Dados Numéricos
– Inteiros
• Comumente de 8, 16, 32 e 64 bits, com sinal e sem sinal
• Muitas vezes representados em complemento de 2
• Exemplo: Para o caso de 32 bits sem sinal temos 232
valores inteiros
• Exemplo: Para caso de 32 bits com sinal temos 231
valores inteiros mais o sinal
– Ponto Flutuante
• Comumente de 32, 64 e 128 bits, com sinal e sem sinal
• Considera-se o sinal, a parte inteira e a parte decimal
• Podem existir registradores específicos para esses tipos
de dados
Dados Não Numéricos
• Tipos de Dados não numéricos
– Textos ou alfanuméricos
• Tipicamente usados em processadores de texto,
planilhas e banco de dados
• Códigos mais usados atualmente: ASCII (8 bits) e
UNICODE (16bits)
Formato de Instruções
• Uma instrução é formada por:
– um código de operação (obrigatório)
– informações a respeito da fonte e do destino de
seus operandos (facultativo)
• um, dois ou três endereços
Formato de Instruções
• Formatos de instruções muito comuns: (a) Instrução sem
endereço. (b) Instrução com um endereço. (c) Instrução com
dois endereços. (d) instrução com três endereços.
Formato de Instruções
• O código de operação informa ao hardware o
que deve ser feito quando de sua execução.
• As instruções
– podem ter tamanhos diversos (complica o projeto
mas tem-se economia de memória) ou
– serem todas de tamanhos iguais (simplifica o
projeto, mas desperdiça espaço. Porque?)
Formato de Instruções
• Algumas das relações possíveis entre o tamanho das
instruções e o tamanho das palavras de memória
Critérios para Determinação do Formato de
Instruções
• Para uma arquitetura ter sucesso comercial
• Pode-se querer que ela dure 20 anos ou mais,
mantendo compatibilidades
• O ISA deve ter a capacidade de suportar o acréscimo de
novas instruções
• O ISA deve ser capaz de explorar novidades ao longo do
tempo de vida
• Algumas decisões tomadas quando do projeto ISA
podem revelar-se inadequadas ao longo do tempo,
principalmente se a tecnologia for incompatível com a
implementação do ISA
Critérios para Determinação do Formato de
Instruções
• Em geral as instruções pequenas são mais
atraentes do que as grandes. Porque?
• A banda passante (número de bits por segundo que a
memória é capaz de liberar) da memória tem crescido
menos que a velocidade dos processadores. As
memórias atuais não tem a capacidade de suprir
instruções e operandos na velocidade que o
processador pode consumi-las.
• Um programa feito com instruções de 16 bits gasta
metade do espaço de memória de um programa com
instruções de 32 bits.
• Deve-se considerar, também, a taxa de crescimento do
preço de memória e a taxa de crescimento do tamanho
Critérios para Determinação do Formato de Instruções
• Por outro lado, a minimização do tamanho das
intruções pode dificultar muito a sua
decodificação. O projetista é obrigado a usar
um conjunto restrito de códigos para as
instruções e o projeto pode não ser flexível
para aumento da quantidade de instruções
Endereçamento
• Como os bits de endereçamento são interpretados no
processo de localização do operando?
• Normalmente esses bits contêm o endereço do
operando na memória
• Mas isso não é regra geral
Modos de endereçamento
• Endereçamento Imediato
• Endereçamento Direto
• Endereçamento Via Registrador
• Endereçamento Indireto Via Registrador
• Endereçamento Indexado
• Endereçamento Base_Indexado
• Endereçamento Via Estrutura de Pilha
Endereçamento Imediato
• O campo de instrução de endereçamento contém o valor do
operando
• Esse operando é conhecido como operando imediato, pois ele
é trazido automaticamente da memória, na própria operação
de busca da instrução.
• Mais usado para especificar constantes de valor pequeno.
Porque?
Instrução com operando imediato, para carregar o valor 4 no
registrador 1.
55
Org. e Arq. de Computadores I
Endereçamento Direto
• O operando armazenado na memória é informado pelo seu
endereço completo
• Esse modo de endereçamento é conhecido como modo de
endereçamento direto.
• O endereçamento direto só pode ser usado para acessar
variáveis globais cujo endereço seja conhecido em tempo de
compilação.Porque?
56
Org. e Arq. de Computadores I
Endereçamento Via Registrador
• é, conceitualmente,
idêntico ao endereçamento
direto, mas especifica um registrador em vez de um
endereço de memória.
• é o modo de endereçamento mais usado na maioria dos
processadores (mantém-se as variáveis mais usadas no
processamento e aproveita-se o baixo tempo de acesso e o
número de bits reduzido dos registradores)
• não pode ser usado em operações de carga (LOAD) e
armazenamento (STORE) envolvendo memória principal.
57
Org. e Arq. de Computadores I
Endereçamento Indireto Via Registrador
• o operando especificado vem da memória ou vai para a
memória, mas seu endereço não está gravado na
instrução, (como no endereçamento direto). O endereço é
obtido indiretamente a partir do endereço de um registrador
de
referência.
• por exemplo, quando se tem um loop de manipulação de um
array usa-se o endereço do início do array como referência e
os demais são obtidos indiretamente com base nessa
referência.
58
Org. e Arq. de Computadores I
Endereçamento Indexado
• Endereçamento de memória a partir do conteúdo de um
registrador (implícito ou explícito) somado a um deslocamento
constante.
Endereçamento Base-Indexado
• Modo de endereçamento segundo o qual o endereço de
memória é calculado somando-se o conteúdo de dois
registradores com um deslocamento (opcional). Um dos
registradores é o registrador base e o outro é o registrador
índice.
59
Org. e Arq. de Computadores I
Endereçamento Via Estrutura de Pilha
• Instruções sem endereços explícitos (Exemplo: IADD) são
possíveis de serem definidas desde que sua execução esteja
associada a uma estrutura de pilha.
60
Org. e Arq. de Computadores I
Modo de endereçamento
Imediato
Direto
Via registrador
Indireto via Registrador
Indexado
Base-Indexado
Via estrutura de pilha
Comparação de modos de endereçamento.
61
Org. e Arq. de Computadores I
• Exercícios
• O que é o nível ISA e qual a sua importância no projeto de um computador
de uso geral.
• A especificação definida no nível ISA depende de negociações entre os
interessados no computador. Quem são esses interessados e quais são as
características dessas negociações?
• Explique as 3 seções que geralmente são colocadas num documento
formal de específicação do nível ISA.
• Qual a importância da especificação dos registradores do computador no
nível ISA. Explique a diferença entre registradores de propósito geral e
registradores de propósito específico
Download