Software Bsico Nvel ISA Captulo 5 Mitsuo Takaki
Software Básico Nível ISA Capítulo 5 Mitsuo Takaki http: //www. cin. ufpe. br/~mt 2/ mt 2@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 microarquitetura e o nível de SO. 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 v 9; – 8051 os níveis ISA das
- Slides: 46