Software Básico
Nível ISA
Capítulo 5
Mitsuo Takaki
http://www.cin.ufpe.br/~mt2/
[email protected]
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
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.
Compilador
• O desenvolvedor de um compilador necessita
obter informações do nível ISA.
• Se não for utilizado de forma correta, pode
produzir resultados errados.
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.
Espaço de Endereço
• A maioria das máquinas possuem apenas um
único espaço linear de endereço.
• Algumas possuem espaços de endereços
separados para instruções e dados.
– A busca de uma instrução no endereço 8 vai para
um espaço de endereço diferente da busca por
um dado no endereço 8.
Espaço de Endereço Separado
• A principal vantagem deste esquema é que
fica impossível sobrescrever acidentalmente o
programa.
– Overflow.
• Atenção!! Este esquema é diferente do uso de
uma cache dividida.
Semântica da Memória
• A semântica da memória é mais um aspecto
do modelo de memória do nível ISA.
• Espera-se que após uma instrução STORE, a
execução de um LOAD, no mesmo endereço,
retornará o valor que acabou de ser escrito.
Semântica da Memória
• Em muitos projetos, as microinstruções são
reordenadas.
• Há uma chance da memória não ter o
comportamento esperado.
– Este problema é agravado como uso de
multiprocessadores.
– Há uma sequência de instruções de leitura/escrita
a uma memória compartilhada.
Semântica da Memória
• Existem diversas soluções para este problema,
como:
– Serializar requisições de memória;
– Não prover garantias;
– Usar modelos de memória intermediários.
Serializar Requisições de Memória
• Cada instrução é concluída antes da próxima
ser emitida.
• Forma simples de implementar.
• Degrada o desempenho do sistema.
Não Prover Garantias
• O programa deve executar uma instrução
SYNC sempre que necessitar uma ordenação.
– Bloqueia todas as requisições de memória até que
as anteriores tenham concluído.
• Passa toda responsabilidade
compiladores.
para
os
– Necessitam entender detalhes do funcionamento
da microarquitetura.
Modelos de Memória
Intermediária
• O hardware fica responsável por bloquear
automaticamente a emissão de certas
referências à memória.
• Algumas referências não são bloqueadas.
Registradores
Registradores
• Todos
os
computadores
registradores visíveis no nível ISA.
possuem
• 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, 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.
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.
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.
• Sempre existem instruções aritméticos,
booleanas, LOAD, STORE, MOVE...
Instruções
• Serão abordados
arquiteturas:
– Pentium 4;
– SPARC v9;
– 8051
os
níveis
ISA
das
Download

Nível ISA