Nível ISA. Introdução Os computadores foram divididos em diversas camadas para simplificar o...

62
Nível ISA

Transcript of Nível ISA. Introdução Os computadores foram divididos em diversas camadas para simplificar o...

Page 1: 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.

Nível ISA

Page 2: 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.

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.

Page 3: 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.

Arquitetura em Camadas

Page 4: 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.

Arquitetura em Camadas

Page 5: 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.

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.

Page 6: 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.

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.

Page 7: 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.

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.

Page 8: 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.

Nível ISA

Page 9: 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.

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

Page 10: 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.

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

Page 11: 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.

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...

Page 12: 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.

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...

Page 13: 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.

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)

Page 14: 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.

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

Page 15: 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.

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.

Page 16: 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.

Modo Núcleo

• O SO é executado neste modo.

• Permite executar qualquer instrução, sem restrições.

Page 17: 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.

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.

Page 18: 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.

Modelos de Memória

Page 19: 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.

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.

Page 20: 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.

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.

Page 21: 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.

Alinhamento das Palavras

Page 22: 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.

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.

Page 23: 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.

Registradores

Page 24: 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.

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.

Page 25: 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.

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.

Page 26: 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.

Categorias de Registradores

• Os registradores do nível ISA podem ser separados em duas categorias:– Registradores de uso especial.– Registradores de uso geral.

Page 27: 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.

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

Page 28: 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.

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.

• São, em geral, simétricos e intercambiáveis (usados indistintamente)

Page 29: 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.

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.

Page 30: 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.

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.

Page 31: 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.

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.

Page 32: 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.

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.

Page 33: 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.

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.

Page 34: 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.

Registrador de Controle

• Estes bits são atualizados em todo ciclo da ULA.

• Refletem o estado da última operação.

Page 35: 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.

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.

Page 36: 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.

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.

Page 37: 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.

Bits da PSW

• A PSW pode ser lida em modo usuário.

• Alguns campos só podem ser escritos em modo núcleo.

Page 38: 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.

Instruções

Page 39: 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.

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

Page 40: 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.

Visão Geral

• Serão abordados os níveis ISA das arquiteturas:– Pentium 4;– SPARC v9;– 8051

Page 41: 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.

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

Page 42: 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.

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

Page 43: 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.

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

Page 44: 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.

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)

Page 45: 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.

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

Page 46: 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.

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.

Page 47: 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.

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?)

Page 48: 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.

Formato de Instruções

• Algumas das relações possíveis entre o tamanho das instruções e o tamanho das palavras de memória

Page 49: 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.

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

Page 50: 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.

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 dos programas.

Page 51: 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.

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

Page 52: 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.

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

Page 53: 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.

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

Page 54: 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.
Page 55: 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.

55 Org. e Arq. de Computadores I

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.

Page 56: 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.

56 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?

Page 57: 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.

57 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.

Page 58: 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.

58 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.

Page 59: 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.

59 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.

Page 60: 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.

60 Org. e Arq. de Computadores I

Endereçamento Via Estrutura de PilhaEndereç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.

Page 61: 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.

61 Org. e Arq. de Computadores I

Comparação de modos de endereçamento.

Modo de endereçamento

Imediato

Direto

Via registrador

Indireto via Registrador

Indexado

Base-Indexado

Via estrutura de pilha

Page 62: 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.

• 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