1 / 88

Nível de arquitetura do conjunto de instrução

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

jaafar
Download Presentation

Nível de arquitetura do conjunto de instrução

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Capítulo5 Nível de arquitetura do conjunto de instrução

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

  3. O nível ISA é a interface entre os compiladores e o hardware. Compilador e hardware precisam entender a linguagem do nível ISA Nível ISA - Introdução

  4. 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 Nível ISA - Introdução

  5. 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 Nível ISA - Introdução

  6. 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 Nível ISA - Visão Geral Propriedades

  7. 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 Nível ISA - Visão Geral Propriedades

  8. 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 Nível ISA - Visão Geral Propriedades

  9. 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 Nível ISA - Visão Geral Modelo de Memória

  10. 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 Nível ISA - Visão Geral Modelo de Memória

  11. 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 Nível ISA - Visão Geral Modelo de Memória

  12. 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. Nível ISA - Visão Geral Modelo de Memória

  13. Registradores primários do Pentium 4. Visão geral do nível ISA do Pentium 4

  14. Registradores gerais da UltraSPARC III. Visão geral do nível ISAda UltraSPARC III (1)

  15. Operação das janelas de registrador da UltraSPARC III. Visão geral do nível ISAda UltraSPARC III (2)

  16. (a) Organização de memória em chip para o 8051. (b) Principais registradores do 8051. Visão geral do nível ISA do 8051

  17. 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 Tipos de dados

  18. 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 Tipos de dados

  19. 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 Tipos de dados

  20. 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 Tipos de dados do Pentium 4

  21. 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 Tipos de dados da UltraSPARC III

  22. Tipos de dados numéricos do 8051. Os tipos suportados estã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 Tipos de dados do 8051

  23. 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) Formatos de Instrução (1)

  24. Instruções sempre possuem um opcode O opcode indica o que a instrução faz Endereços indicam onde estão os operandos Formatos de Instrução (1)

  25. Algumas relações possíveis entre comprimento de 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 Formatos de Instruções (2)

  26. 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 Formatos de Instruções (2)

  27. 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 Formatos de Instruções (2)

  28. 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 Expansão de Opcodes (1)

  29. 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 Expansão de Opcodes (1)

  30. 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 ezzzz são campos de endereço de 4 bits. Expansão de Opcodes (2)

  31. 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 Expansão de Opcodes (2)

  32. Formatos de instrução do Pentium 4. Formatos das instruções 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

  33. Formatos de instrução do Pentium 4. Formatos das instruções 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

  34. Os formatos originais de instrução da SPARC. Formatos de instrução da UltraSPARC III • 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

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

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

  37. 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çãoimediataparacarregar 4 no registrador 1.

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

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

  40. 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 • Em arquiteturas carregue armazene, como a UltraSARC III quase todas as instruções usam exclusivamente o modo registrador • A única vez em que o modo registrador não é usado é quando • um operando é transferido da memória para um registrador • Instrução LOAD • ou do registrador para a memória • Instrução STORE

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

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

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

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

  45. 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. Endereçamento Indexado (1)

  46. 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 Endereçamento Indexado (2)

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

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

  49. 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 Notação Polonesa Invertida (1)

  50. Cada vagão ferroviário representa um símbolo na fórmula a ser convertida de notação infixa para notação polonesa invertida. Notação Polonesa Invertida (1)

More Related