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