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

Slides:



Advertisements
Apresentações semelhantes
Parte 1: Organização de Computadores
Advertisements

Capitulo 6: Entrada e Saída
Organização de Computadores I
gerador de código intermediário
Arquitetura de Computadores
WebDesign Redes de Computadores Aula 05
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções.
Arquitetura e organização de computadores.
Barramentos Introdução.
Entrada e Saída Introdução.
Organização de computadores Professora Marcela Santos Aula 8 – Conjunto de instruções.
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 03: Computador.
Software Básico Silvio Fernandes
ARQUITETURAS RISC E CISC
Arquitetura dos Microprocessadores 8086 e 8088
Daniel M. Aquino, Marcelo C. Perez, Thais A. B. Fernandes
CISC e RISC.
Professor: Erivelto Tschoeke – UDESC/CEPLAN
O MICROPROCESSADOR INTEL 8080
Sistemas Digitais Microprocessados
REPRESENTAÇÃO DE INSTRUÇÕES
Organização da Memória Principal
Arquitetura de Computadores
Linguagens de Programação
Threads.
Processadores – Aula 3 Professor: André Luis Meneses Silva
Processadores – Aula 3 Professor: André Luis Meneses Silva
Sistemas Operacionais I
Representação de Instruções
Sistemas Operacionais
Fundamentos de programação CUDA
Arquitetura de computadores
Algoritmos 1º Semestre Materia: Informática Profº: Cristiano.
ORGANIZAÇÃO DE COMPUTADORES
Arquitetura de computadores
Tipos de Dados Paradigmas de Programação
Organização e Arquitetura de Computadores
Organização e Arquitetura de Computadores
Agenda Modos de Endereçamento.
Arquitetura de Computadores
Unidade Central De Processamento: Processador
SISTEMAS OPERACIONAIS I Memória Virtual e Paginação
Geração de Código aula-12-geração-de-código.pdf.
Software Básico Nível ISA Capítulo 5 Mitsuo Takaki
Sistemas Operacionais
Unidade Central De Processamento: Processador
Arquitetura de Computadores
Organização e Arquitetura de Computadores
Microprocesadores x Microcontroladores
8088 Assembly Software Básico Mitsuo Takaki.
Registradores.
Nível ISA.
Fundamentos de linguagens de programação
Parte 3 Seção de Dados e Unidade de Controle
CES-10 INTRODUÇÃO À COMPUTAÇÃO
Software Básico Introdução à Organização de Computadores Capítulo 1 Mitsuo Takaki
Tipos de Dados Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem.
Sistemas de Arquivos Sistemas Operacionais Profa. Priscila Facciolli
SISTEMAS DE INFORMAÇÃO
Sistemas computacionais
Funcionamento interno do computador
ARQUITETURA DE COMPUTADORES Nível do Conjunto de Instruções
A linguagem de Máquina – Instruções Básicas
Nível ISA.
COMPILADORES 02 Prof. Marcos. COMPILADORES Do Programa à Execução Computadores das mais variadas arquiteturas têm funcionamento:
 Evolução constante das linguagens de programação de alto nível (LAN) desde o Fortran (primeira LAN)  Surgimento de novos paradigmas como a OO, Orientação.
 Todo processador é constituído de circuitos capazes de realizar algumas operações primitivas:  Somar e subtrair  Mover um dado de um local de armazenamento.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais FATEC-PB Professor: Gustavo Wagner
Construção de Via de dados Trabalho Avaliativo do Primeiro Bimestre. Marcos André de Sena Silva.
Lógica de Programação Aula 06 Prof. Marcelo Marcony.
Transcrição da apresentação:

Nível de arquitetura do conjunto de instrução Capítulo 5

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

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

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

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

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

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

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

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

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

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

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.

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

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

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

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.

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

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

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

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

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

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

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)

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

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

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

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

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.

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

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

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 Os formatos originais de instrução da SPARC.

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 Formatos de instrução do 8051.

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

Instrução imediata para carregar 4 no registrador 1. 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.

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

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

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

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

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

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.

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.

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.

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

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)

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

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

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.

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.

Notação Polonesa Invertida (3) Infixa Notação polonesa invertida Alguns exemplos de expressões infixas e seus equivalentes em notação polonesa invertida.

Avaliação de fórmulas em notação polonesa invertida Utilização de uma pilha para avaliar uma fórmula em notação polonesa invertida.

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.

Ortogonalidade de Opcodes e modos de endereçamento (2) Projeto simples para os formatos de instrução de uma máquina de três endereços.

Modos de endereçamento do Pentium 4 (1) Modos de endereçamento de 32 bits do Pentium 4. M[x] é a palavra de memória em x.

Modos de endereçamento do Pentium 4 (2) Acesso a a[i].

Discussão dos modos de endereçamento Comparação entre os modos de endereçamento.

Controle de laço (a) Laço do tipo “teste no final”. (b) Laço do tipo “teste no início”.

Registradores de dispositivo para um terminal simples. Entrada/Saída (1) Registradores de dispositivo para um terminal simples.

Exemplo de E/S programada. Entrada/Saída (2) Exemplo de E/S programada.

Sistema com controlador de DMA. Entrada/Saída (3) Sistema com controlador de DMA.

Instruções do Pentium 4 (1) Uma seleção de instruções de inteiros do Pentium 4.

Instruções da UltraSPARC III (1) Instruções de inteiros da UltraSPARC III primária.

Conjunto de instruções do 8051.

Conjunto de instruções do 8051.

Conjunto de instruções do 8051.

Conjunto de instruções do 8051.

Conjunto de instruções do 8051.

Fluxo de controle seqüencial e desvios Contador de programa como função do tempo (ajustada). (a) Sem desvios. (b) Com desvios.

Procedimentos Recursivos (1) Configuração inicial para o problema Torres de Hanói para cinco discos.

Procedimentos recursivos (2) Etapas requeridas para resolver o problema Torres de Hanói para três discos.

Procedimentos Recursivos (3) Etapas requeridas para resolver o problema Torres de Hanói para três discos.

Procedimentos Recursivos (4) Procedimento para resolver o problema Torres de Hanói.

Procedimentos Recursivos (5) Pilha em diversos pontos durante a execução da rotina do slide anterior.

Co-rotinas (1) Quando um procedimento é chamado, a sua execução sempre começa na primeira declaração do procedimento.

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.

Exemplo de seqüência temporal de várias interrupções.

Torres de Hanói em linguagem de montagem do Pentium 4 (1) Torres de Hanói para Pentium 4.

Torres de Hanói em linguagem de montagem do Pentium 4 (2) Torres de Hanói para Pentium 4.

Torres de Hanói em linguagem de montagem do Pentium 4 (3) Torres de Hanói para Pentium 4.

Torres de Hanói em linguagem de montagem UltraSPARC III (1) Torres de Hanói para UltraSPARC III.

Torres de Hanói em linguagem de montagem UltraSPARC III (2) Torres de Hanói para UltraSPARC III.

Reduzindo Referencias à Memória Registradores do Itanium 2.

Escalonamento de Instruções O pacote IA-64 contém três instruções.

Reduzindo Desvios Condicionais: Predicação (1) (a) Declaração if. (b) Código genérico de montagem para (a). (c) Instrução condicional.

Reduzindo Desvios Condicionais: Predicação (2) (a) Declaração if. (b) Código genérico de montagem para (a). (c) Execução condicional.

Reduzindo Desvios Condicionais: Predicação (3) (a) Declaração if. (b) Código genérico de montagem para (a). (c) Execução predicada.