nível de arquitetura do conjunto de instrução
DESCRIPTION
Capítulo 5. Nível de arquitetura do conjunto de instrução. Nível ISA - Introdução. Historicamente foi desenvolvido antes dos outros níveis Originalmente era o único nível É a interface entre o software e o hardware - PowerPoint PPT PresentationTRANSCRIPT
© 2007 by Pearson Education
Nível de arquitetura do conjunto de instrução
CapítuloCapítulo
55
© 2007 by Pearson Education
Nível ISA - Introdução
• Historicamente foi desenvolvido antes dos outros níveis
• Originalmente era o único nível• É a interface entre o software e o hardware• Os programas escritos em várias linguagens de alto
nível são traduzidos para uma forma intermediária comum (nível ISA)
• O hardware é construído de tal forma que possa executar o nível ISA diretamente
• Define a interface entre os compiladores e o hardware
© 2007 by Pearson Education
Nível ISA - Introdução
• O nível ISA é a interface entre os compiladores e o hardware.
• Compilador e hardware precisam entender a linguagem do nível ISA
© 2007 by Pearson Education
Nível ISA - Introdução
• Quando surge um novo hardware, as perguntas a serem feitas pelos clientes potenciais são:
• É compatível com o hardware antigo ?• Pode executar o SO antigo ?• Executará todos o programas de aplicação já existentes sem
a necessidade de modificação e recompilação ?
• Isto leva os projetistas de computador a manterem a mesma ISA entre modelos ou ao menos permitir compatibilidade
© 2007 by Pearson Education
Nível ISA - Introdução
• Um hardware novo pode ser compatível com uma ISA antiga mas características do novo hardware precisam de software novo para serem exploradas
• Pode-se passar de um projeto com características implementadas a nível de microprograma para as mesmas características implementadas com execução direta no hardware
• Novo software para explorar tais características• ISA compatível com programas antigos
© 2007 by Pearson Education
Nível ISA - Visão Geral Propriedades
• O nível ISA é o modo como a máquina se apresenta a um programador de linguagem de máquina
• Código de nível ISA é o que um compilador produz, ignorando chamadas ao SO e linguagem de montagem simbólica
• Para produzir código de nível ISA, necessita-se saber
• O modelo de memória• Quais e quantos são os registradores• Quais tipos de dados e instruções estão disponíveis
© 2007 by Pearson Education
Nível ISA - Visão Geral Propriedades
• Não são questões do nível ISA:• Se a microarquitetura é microprogramada ou não o é• Se tem paralelismo ou não• Se é superescalar ou não
• Tais aspectos não são visíveis para o escritor de compilador
• Nível ISA especificado• V9 SPARC • Diferentes chips com preços variados capazes de rodar os
mesmos programas de aplicação• Nível ISA não especificado
• Chip Intel Pentium 4 • Clonado
© 2007 by Pearson Education
Nível ISA - Visão Geral Propriedades
• Na maioria das máquinas há no mínimo os modos• Kernel (núcleo)
• Executa o SO• Permite que todas as instruções sejam
executadas• Usuário
• Executa programas de aplicação• Não permite que certas instruções sejam
manipuladas diretamente• E.g., manipulação da cache
© 2007 by Pearson Education
Nível ISA - Visão Geral Modelo de Memória
• Todos os computadores dividem a memória em células de endereço consecutivos
• O tamanho de células mais comum é 8 bits
• Historicamente usadas células de 1 a 60 bits• Uma célula de 8 bits é denominada byte• Codificação ASCII levou a células de 8
bits• Codificação UNICODE necessita de 16
bits
© 2007 by Pearson Education
Nível ISA - Visão Geral Modelo de Memória
• Bytes são agrupados em palavras de• 32 bits
• 4 bytes• 64 bits
• 8 bytes• Há instruções disponíveis para se
manipular palavras inteiras
© 2007 by Pearson Education
Nível ISA - Visão Geral Modelo de Memória
• Há arquiteturas que exigem palavras alinhadas em suas fronteiras
• Mais eficiente• E.g., Pentium 4
• Nível ISA permite endereçar palavras de forma não alinhada, o que causa mais acesso à memória• Compatibilidade com o nível ISA de máquinas 8088
antigas• Outras permitem endereçamento de palavras
não alinhadas
© 2007 by Pearson Education
Nível ISA - Visão Geral Modelo de Memória
Palavra de 8 bytes em memória little-endian. (a) Alinhada. (b) Não alinhada. Algumas máquinas requerem que palavras na memória sejam alinhadas.
© 2007 by Pearson Education
Visão geral do nível ISA do Pentium 4
Registradores primáriosdo Pentium 4.
© 2007 by Pearson Education
Visão geral do nível ISAda UltraSPARC III (1)
Registradores gerais da UltraSPARC III.
© 2007 by Pearson Education
Operação das janelas de registrador da UltraSPARC III.
Visão geral do nível ISAda UltraSPARC III (2)
© 2007 by Pearson Education
Visão geral do nível ISA do 8051
(a) Organização de memória em chip para o 8051. (b) Principais registradores do 8051.
© 2007 by Pearson Education
Tipos de dados
• Uma questão fundamental é se há ou não há suporte de hardware para um tipo particular de dado
• O hardware espera um certo formato de inteiros e não funciona adequadamente quando recebe qualquer outra coisa
• E.g., Se o hardware somente suporta aritmética de 32 bits e é necessário um tipo de dado de 64 bits (dupla precisão), faz-se necessário dar suporte a nível de software
© 2007 by Pearson Education
Tipos de dados
• Os tipos de dados podem ser divididos em numéricos e não numéricos
• Tipos numéricos:• O principal entre os tipos numéricos são os inteiros• Um inteiro de 32 bits com sinal pode manipular números
positivos e negativos ( (2 ** 31) – 1)• Para números não inteiros (e.g 3,2) são usados números de
ponto flutuante
• Com comprimentos de 32, 64 ou 128 bits (dependendo da arquitetura)
• O bug do milêncio Y2K foi causado por programadores que objetivavam otimizar o uso recursos computacionais
• Usaram 2 dígitos decimais para o ano ao invés de 16 bits
© 2007 by Pearson Education
Tipos de dados
• Os tipos de dados podem ser divididos em numéricos e não numéricos
• Tipos não numéricos:
• Computadores modernos são usados para aplicações não numéricas (e.g., e-mail, vídeo, web, fotos)
• São necessários tipos de dados muitas vezes não suportados pelo nível ISA
• Muitas vezes o nível ISA possui instruções para manipular
• cadeias de caracteres
• Valores booleanos
• Não há suporte a endereçar bits
• Mapas de bits onde uma palavra é usada para armazenar 32 valores booleanos
• Ponteiros
• Um ponteiro é um endereço de memória
© 2007 by Pearson Education
Tipos de dados do Pentium 4
Tipos de dados numéricos do Pentium 4. Os tipos suportados
estão marcados com x.• Manipula bem inteiros de 8 ou 16 bits• Possui numerosas instruções para efetuar operações aritméticas e
boolenas• Operandos não tem que estar alinhados na memória• Desempenho melhor se os endereços de palavras forem múltiplos de 4
bytes• Bom na manipulação de caracteres ASCII de 8 bits
• Instruções especiais para buscar e manipular caracteres
© 2007 by Pearson Education
Tipos de dados da UltraSPARC III
Tipos de dados numéricos da UltraSPARC III. Os tipos suportados
estão marcados com x.
• É baseada em registradores• Quase todas as instruções operam em registradores de 64
bits• Tipos de dados de caracteres e cadeia de caracteres não são
suportados por hardware, mas sim inteiramente por software
© 2007 by Pearson Education
Tipos de dados do 8051
Tipos de dados numéricos do 8051. Os tipos suportadosestão marcados com x.
• Todos os registradores tem 8 bits, inclusive ponteiros, caracteres• Todo bit pode ser endereçado individualmente• O bit zero é o mais à direita no byte• Há instruções para bits individuais
• Ajustar, liberar, efetuar operações AND e OR• Completar, mover e testar bits
© 2007 by Pearson Education
Formatos de Instrução (1)
Quatro formatos comuns de instrução:
(a) Instrução sem endereço. (c) Instrução com dois endereços.
(b) Instrução com um endereço. (d) Instrução com três endereços.
• Uma instrução consiste em um opcode geralmente com informações adicionais
• De onde vem os operandos e para onde vão os resultados
• O endereçamento define onde estão os operandos (seus endereços)
© 2007 by Pearson Education
Formatos de Instrução (1)
• Instruções sempre possuem um opcode• O opcode indica o que a instrução faz
• Endereços indicam onde estão os operandos
© 2007 by Pearson Education
Formatos de Instruções (2)
Algumas relações possíveis entre comprimentode instrução e de palavra.
• Um programa que consistem em n instruções de 16 bits, ocupa apenas metade da memória que um programa de n instruções de 32 bits
• É preciso contrabalançar o tamanho mínimo da instrução com o tempo requerido para decodificá-la e executá-la
© 2007 by Pearson Education
Formatos de Instruções (2)
• Uma outra razão para minimizar o comprimento da instrução é a largura de banda da memória (bits/s)
• A capacidade de processamento dos processadores tem crescido mais rápido que a largura de banda da memória
• Processadores ficam ociosos e o gargalo é a largura de banda da memória• O gargalo da largura de banda da memória diz respeito à RAM e a Cache
© 2007 by Pearson Education
Formatos de Instruções (2)
• Instruções mais curtas significam um processador mais rápido• Computadores modernos podem executar várias instruções por ciclo de
relógio• Buscar várias instruções por ciclo de relógio se torna imperativo• O tamanho da cache de instruções é um importante critério de projeto
para o desempenho
© 2007 by Pearson Education
Expansão de Opcodes (1)
Instrução com um opcode de 4 bits e três campos de endereço
de 4 bits cada.
• Denomina-se expansão de opcode ao artifício utilizado pelos projetistas de computador ao contrabalancear o tamanho/quantidade de memória endereçável com a quantidade de instruções possíveis
© 2007 by Pearson Education
Expansão de Opcodes (1)
Instrução com um opcode de 4 bits e três campos de endereço
de 4 bits cada.
• Neste projeto é possível 16 instruções de três endereços
• Seria ideal para uma CPU com 16 registradores
© 2007 by Pearson Education
Expansão de Opcodes (2)
Expansão de opcode que permite 15 instruções de três endereços, 14 instruções de dois endereços, 31 instruções de um endereço, e 16 instruções sem endereço. Os campos marcados com xxxx, yyyy e zzzz são campos de endereço de 4 bits.
© 2007 by Pearson Education
Expansão de Opcodes (2)
• Instruções de 3 endereços tem um opcode de 4 bits• Instruções de 2 endereços tem um opcode de 8 bits• Instruções de 1 endereço tem um opcode de 12 bits• Instruções sem endereço tem um opcode de 16 bits
© 2007 by Pearson Education
Formatos das instruções do Pentium 4
Formatos de instrução do Pentium 4.
• Bastante complexo com 6 campos de tamanho variável, cinco dos quais opcionais• Arquitetura evoluiu por muitas gerações mantendo opções desastrosas do início do projeto
© 2007 by Pearson Education
Formatos das instruções do Pentium 4
Formatos de instrução do Pentium 4.
• Nas primeiras arquiteturas Intel, todos os opcodes tinham 1 byte• 1 byte de prefixo usado extensivamente para modificar algumas instruções• Com o tempo a Intel esgotou seus opcodes
• Um opcode extra OxFF foi designado como código de escape para permitir um segundo byte de instrução• Instruções difíceis de decodificar
© 2007 by Pearson Education
Formatos de instrução da UltraSPARC III
Os formatos originais de instrução da SPARC.
• Consiste inteiramente em instruções de 32 bits alinhadas na memória• Instruções simples que especificam apenas uma única ação• Uma instrução aritmética típicia especifica dois operandos fontes e um único registrador de destino
© 2007 by Pearson Education
Formatos de instrução do 8051
Formatos de instrução do 8051.
• Possui 6 formatos de instruções simples • As instruções são de 1, 2 ou 3 bytes
1 byte
2 bytes
3 bytes
© 2007 by Pearson Education
Endereçamento• O Endereçamento permite indicar onde estão os operandos que fazem parte das instruções
• Modos de Endereçamento:
• Endereçamento imediato
• Endereçamento direto
• Endereçamento de registrador
• Endereçamento indireto de registrador
• Endereçamento indexado
• Endereçamento de base indexado
• Endereçamento de pilha
© 2007 by Pearson Education
Endereçamento
• O Endereçamento permite indicar onde estão os operandos que fazem parte das instruções
• Modos de Endereçamento:• Endereçamento imediato
• É o modo mais simples de uma instrução especificar seu operando• O endereço realmente contém o operando em si e não uma informação que descreva onde o operando está• Tem a vantagem de não exigir uma referência extra à memória para buscar o operando• Operando imediato é buscado na memória juntamente com a instrução• Desvantagem é que somente uma constante pode ser fornecida neste modo
Instrução imediata para carregar 4 no registrador 1.
© 2007 by Pearson Education
Endereçamento
• O Endereçamento permite indicar onde estão os operandos que fazem parte das instruções
• Modos de Endereçamento:• Endereçamento direto
• Um operando é indicado na memória através do seu endereço completo • Neste caso a instrução sempre acessará a mesma localização da memória• O endereço direto é usado para acessar variáveis globais cujos endereços são conhecidos no momento da compilação
© 2007 by Pearson Education
Endereçamento
• O Endereçamento permite indicar onde estão os operandos que fazem parte das instruções
• Modos de Endereçamento:• Endereçamento de registrador
• É o mesmo que o endereçamento direto, mas especifica um registrador em vez de uma localização de memória• Como os registradores são muito importantes, devido ao acesso rápido e endereços curtos, esse modo de endereçamento é o mais comum na maioria dos computadores• Compiladores verificam quais variáveis serão mais acessadas e as colocam em um registrador
• E.g., o índice de um laço é posto em um registrador pelo compilador
© 2007 by Pearson Education
Endereçamento
© 2007 by Pearson Education
Endereçamento
• O Endereçamento permite indicar onde estão os operandos que fazem parte das instruções
• Modos de Endereçamento:• Endereçamento indireto de registrador
• O operando que está sendo especificado vem da memória ou vai para a memória• O endereço do operando na memória não está ligado à instrução (como no modo direto)• O endereço do operando fica armazenado em um registrador• O endereço do operando na instrução é na verdade um ponteiro
© 2007 by Pearson Education
Endereçamento
• O Endereçamento permite indicar onde estão os operandos que fazem parte das instruções
• Modos de Endereçamento:• Endereçamento indireto de registrador
• Vantagens• O endereço do operando na instrução faz referencia à memória sem pagar o preço por ter um endereço de memória completo na instrução• Pode usar diferentes palavras de memória em diferentes execuções da instruções
© 2007 by Pearson Education
Endereçamento
• O Endereçamento permite indicar onde estão os operandos que fazem parte das instruções
• Modos de Endereçamento:• Endereçamento indireto de registrador• E.g.,
Um programa genérico em linguagem de montagem para calcular a soma dos elementos de um vetor.
© 2007 by Pearson Education
Endereçamento
• O Endereçamento permite indicar onde estão os operandos que fazem parte das instruções
• Modos de Endereçamento:• Endereçamento indexado
• É o nome que se dá ao endereçamento de memória que fornece um registrador mais um deslocamento constante• É útil para poder referenciar palavras de memória cujo deslocamento em relação a um registrador é conhecido.
© 2007 by Pearson Education
Endereçamento Indexado (1)
Programa genérico em linguagem de montagem para calcular
a operação OR de Ai AND Bi para dois vetores de 1024 elementos.
• Tem-se dois vetores unidimensionais de 1.024 palavras cada, A e B • Deseja-se calcular A[i] AND B[i] para todos os pares e então efetuar
uma operação OR com esses 1.024 produtos booleanos para ver se há ao menos um par não zero no conjunto.
© 2007 by Pearson Education
Endereçamento Indexado (2)
Possível representação de MOV R4, A (R2).
A Palavra de memória endereçada é
A[0] no endereço 124300
A[1] no endereço 124300
A[2] no endereço 124300
© 2007 by Pearson Education
Endereçamento
• O Endereçamento permite indicar onde estão os operandos que fazem parte das instruções
• Modos de Endereçamento:• Endereçamento de base indexado
• Algumas máquinas tem um modo de endereçamento no qual o endereço de memória é calculado somando dois registradores mais um deslocamento (opcional)• Um dos registradores é a base e o outro é o índice
LOOP: MOV R4,(R2+R5) AND R4,(R2+R6)
© 2007 by Pearson Education
Endereçamento
• O Endereçamento permite indicar onde estão os operandos que fazem parte das instruções
• Modos de Endereçamento:• Endereçamento de pilha
© 2007 by Pearson Education
Notação Polonesa Invertida (1)
• A forma com o operador entre os operandos é chamada notação infixa
• x + y
• A forma com o operador após os operandos é denominada pós-fixa ou notação polonesa invertida
• x y +
• Vantagens da notação polonesa invertida sobre a notação infixa• Na expressão de fórmulas algébricas, qualquer fórmula pode ser expressa
sem parênteses
© 2007 by Pearson Education
Notação Polonesa Invertida (1)
Cada vagão ferroviário representa um símbolo na fórmula a ser convertida de notação infixa para notação polonesa invertida.
© 2007 by Pearson Education
Notação Polonesa Invertida (2)
Tabela de decisão usada pelo algoritmo de conversão
da notação infixa para a notação polonesa invertida.
© 2007 by Pearson Education
Alguns exemplos de expressões infixas e seus equivalentes em notação polonesa invertida.
Notação Polonesa Invertida (3)
Infixa Notação polonesa invertida
© 2007 by Pearson Education
Avaliação de fórmulas emnotação polonesa invertida
Utilização de uma pilha para avaliar uma fórmulaem notação polonesa invertida.
© 2007 by Pearson Education
Ortogonalidade de Opcodes e modos de endereçamento (1)
Projeto simples para formatos de instrução
de uma máquina de três endereços.
© 2007 by Pearson Education
Projeto simples para os formatos de instruçãode uma máquina de três endereços.
Ortogonalidade de Opcodes e modos de endereçamento (2)
© 2007 by Pearson Education
Modos de endereçamentodo Pentium 4 (1)
Modos de endereçamento de 32 bits do Pentium 4.
M[x] é a palavra de memória em x.
© 2007 by Pearson Education
Acesso a a[i].
Modos de endereçamentodo Pentium 4 (2)
© 2007 by Pearson Education
Discussão dos modosde endereçamento
Comparação entre os modos de endereçamento.
© 2007 by Pearson Education
Controle de laço
(a) Laço do tipo “teste no final”.
(b) Laço do tipo “teste no início”.
© 2007 by Pearson Education
Entrada/Saída (1)
Registradores de dispositivo para um terminal simples.
© 2007 by Pearson Education
Entrada/Saída (2)
Exemplo de E/S programada.
© 2007 by Pearson Education
Entrada/Saída (3)
Sistema com controlador de DMA.
© 2007 by Pearson Education
Instruções do Pentium 4 (1)
Uma seleção de instruções
de inteiros do Pentium 4.
© 2007 by Pearson Education
Instruções da UltraSPARC III (1)
Instruções de inteiros da
UltraSPARC III primária.
© 2007 by Pearson Education
Instruções do 8051 (1)
Conjunto de instruções do 8051.
© 2007 by Pearson Education
Instruções do 8051 (2)
Conjunto de instruções do 8051.
© 2007 by Pearson Education
Conjunto de instruções do 8051.
Instruções do 8051 (3)
© 2007 by Pearson Education
Conjunto de instruções do 8051.
Instruções do 8051 (4)
© 2007 by Pearson Education
Conjunto de instruções do 8051.
Instruções do 8051 (5)
© 2007 by Pearson Education
Fluxo de controle seqüencial e desvios
Contador de programa como função do tempo (ajustada).(a) Sem desvios. (b) Com desvios.
© 2007 by Pearson Education
Procedimentos Recursivos (1)
Configuração inicial para o problema Torres de Hanói para cinco discos.
© 2007 by Pearson Education
Procedimentos recursivos (2)
Etapas requeridas para resolver o problema Torres de Hanói para três discos.
© 2007 by Pearson Education
Procedimentos Recursivos (3)
Etapas requeridas para resolver o problema Torres de Hanói para três discos.
© 2007 by Pearson Education
Procedimentos Recursivos (4)
Procedimento para resolver o problema Torres de Hanói.
© 2007 by Pearson Education
Procedimentos Recursivos (5)
Pilha em diversos pontos durante a execução da rotina do slide anterior.
© 2007 by Pearson Education
Co-rotinas (1)
Quando um procedimento é chamado, a sua execução sempre começa na primeira declaração do procedimento.
© 2007 by Pearson Education
Co-rotinas (2)
Quando uma co-rotina é reiniciada, sua execução começa na primeira
declaração não executada na última chamada, e não no princípio.
© 2007 by Pearson Education
Interrupções
Exemplo de seqüência temporal de várias interrupções.
© 2007 by Pearson Education
Torres de Hanói em linguagem de montagem do Pentium 4 (1)
Torres de Hanói para Pentium 4.
© 2007 by Pearson Education
Torres de Hanói para Pentium 4.
Torres de Hanói em linguagem de montagem do Pentium 4 (2)
© 2007 by Pearson Education
Torres de Hanói em linguagem de montagem do Pentium 4 (3)
Torres de Hanói para Pentium 4.
© 2007 by Pearson Education
Torres de Hanói em linguagem de montagem UltraSPARC III (1)
Torres de Hanói para UltraSPARC III.
© 2007 by Pearson Education
Torres de Hanói em linguagem de montagem UltraSPARC III (2)
Torres de Hanói para UltraSPARC III.
© 2007 by Pearson Education
Reduzindo Referencias à Memória
Registradores do Itanium 2.
© 2007 by Pearson Education
Escalonamento de Instruções
O pacote IA-64 contém três instruções.
© 2007 by Pearson Education
Reduzindo Desvios Condicionais: Predicação (1)
(a) Declaração if.
(b) Código genérico de montagem para (a).
(c) Instrução condicional.
© 2007 by Pearson Education
(a) Declaração if.
(b) Código genérico de montagem para (a).
(c) Execução condicional.
Reduzindo Desvios Condicionais: Predicação (2)
© 2007 by Pearson Education
Reduzindo Desvios Condicionais: Predicação (3)
(a) Declaração if.
(b) Código genérico de montagem para (a).
(c) Execução predicada.