View
107
Download
1
Category
Preview:
Citation preview
Software Básico
Nível ISACapítulo 5
Mitsuo Takakihttp://www.cin.ufpe.br/~mt2/
mt2@cin.ufpe.br
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 nível da microarquitetura e o nível de SO.
• 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 para os compiladores.– 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 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, 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 e resultados intermediários de cálculos.
• 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 híbrido de núcleo/usuário.
• 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 os níveis ISA das arquiteturas:– Pentium 4;– SPARC v9;– 8051
Recommended