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