Univ ersidade Federal do Rio de Janei ro Info rmátic a DCC/IM. Arquiteturas VLIW. Gabriel P. Silva. Gabriel P. Silva

Documentos relacionados
Arquitetura e Organização de Processadores. Aula 08. Arquiteturas VLIW

Universidade de Coimbra Departamento de Engenharia Informática Licenciatura em Engenharia Informática Arquitectura de Computadores 2 Junho de 2003

Microarquiteturas Avançadas

Infraestrutura de Hardware. Melhorando Desempenho de Pipeline Processadores Superpipeline, Superescalares, VLIW

Pequena Apresentação Sobre Paralelismo em nível de instrução

Universidade Federal do Rio de Janeiro Pós-Graduação em Informática Microarquiteturas de Alto Desempenho Arquiteturas VLIW Gabriel P.

Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores

Arquitetura de Computadores Aula 11 - Multiprocessamento

Arquiteturas Superescalares

Paralelismo ao Nível das Instruções p. 1

1. A pastilha do processador Intel possui uma memória cache única para dados e instruções. Esse processador tem capacidade de 8 Kbytes e é

COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto

Arquiteturas RISC e CISC. Adão de Melo Neto

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 02: PROCESSAMENTO PARALELO: PROCESSADORES VETORIAIS

Arquitetura de Computadores. Conjunto de Instruções

PIPELINE. Introdução ao Pipeline. PIPELINE Ciclo de Instruções. PIPELINE Ciclo de Instruções. PIPELINE - Exemplo. PIPELINE Considerações

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

Arquitetura de Computadores. Processamento Paralelo

Universidade Federal do Rio de Janeiro Pós-Graduação em Informática. Introdução. Gabriel P. Silva. Gabriel P. Silva

Trabalhos Práticos Arquitetura de Computadores I Prof. Fabian Vargas

Prof. Rômulo Calado Pantaleão Camara Carga Horária: 2h/60h

Predição de Desvios e Processadores Superescalares Especulativos

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ORGANIZAÇÃO COMPUTACIONAL

Universidade Federal do Rio de Janeiro Bacharelado de Ciência da Computação. Arquitetura de Computadores I. RISC versus CISC

ORGANIZAÇÃO DE COMPUTADORES

CPU. Funções: Componentes: Processamento; Controle. UC (Unidade de Controle); Registradores; ALU s, FPU s etc. Arquitetura de Computadores 3

Organização e Arquitetura de Computadores I

Arquiteturas Superescalares

COMPUTADORES. Arquiteturas de Computadores Paralelos. Prof.: Agostinho S. Riofrio

Microprocessadores II - ELE 1084


Organização de Sistemas de Computadores

Arquitetura de Computadores

Sistemas Operacionais. Conceitos de Hardware

Arquitetura e Organização de Processadores. Aula 1. Introdução Arquitetura e Organização

Arquitetura e Organização de Computadores

Arquitetura e Organização de Processadores. Aulas 06 e 07. Superescalaridade

Arquitetura de Computadores. Prof. João Bosco Jr.

ORGANIZAÇÃO DE COMPUTADORES

Arquitetura de Computadores Aula 10 - Processadores

2º Estudo Dirigido CAP 3

1) Enumere e dê exemplo dos tipos de conflitos que podem ocorrer em um pipeline de instruções de um processador.

Processadores Superescalares - Avançando na exploração de paralelismo entre instruções

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 06

Antes de deixarmos o hardware (1) Nível da Arquitetura do Conjunto das Instruções

Infraestrutura de Hardware. Funcionamento de um Computador

Introdução à Computação: Arquitetura von Neumann

Arquiteturas de Computadores

Arquitetura de Computadores II

Nível da Arquitetura do Conjunto das Instruções

MICROPROCESSADORES. Aula 10

SSC510 Arquitetura de Computadores. 6ª aula

2ª Lista de Exercícios de Arquitetura de Computadores

Arquitetura e Organização de Computadores

Processadores para computação de alto desempenho

Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação MATA49 Programação de software básico Arquitetura Intel

É um sinal elétrico periódico que é utilizado para cadenciar todas as operações realizadas pelo processador.

ENGENHARIA DE SISTEMAS MICROPROCESSADOS

Conjunto de Instruções e Modelos de Arquiteturas

Processadores para computação de alto desempenho

Computadores e Programação (DCC/UFRJ)

Arquitetura e Organização de Processadores. Aula 4. Pipelines

Processador ( CPU ) E/S. Memória. Sistema composto por Processador, Memória e dispositivos de E/S, interligados por um barramento

ARQUITETURA DE COMPUTADORES. Organização de Sistemas Computacionais. Prof.: Agostinho S. Riofrio

Processador. Processador

Nível da Arquitetura do Conjunto de Instruções. Ronaldo de Freitas Zampolo

Conjunto de Instruções. Alisson Brito

Computadores podem ser úteis em problemas que envolvem: Grande número de dados. Grande número de cálculos. Complexidade. Precisão.

Processadores. Principal função é executar programas armazenados na memória principal.

Introdução. (Aula 2) Organização Estruturada de Computadores

Avaliação de Desempenho

Microprocessadores. Família x86 - Evolução

Organização de computadores. Aula 05

Introdução (Aula 2) Introdução Arquitetura de Hardware. Organização Estruturada de Computadores. Introdução Conceitos (2) Introdução Conceitos (1)

Software retargeting

Organização e Arquitetura de Computadores I

CONCURSO PÚBLICO PARA PROVIMENTO DE CARGO EFETIVO PROFESSOR DE ENSINO BÁSICO, TÉCNICO E TECNOLÓGICO Edital 20/2015 Campus Rio Pomba FOLHA DE PROVA

3. Unidade Central de Processamento

2. A influência do tamanho da palavra

Introdução à Computação: Máquinas Multiníveis

Professor: Vlademir de Oliveira Disciplina: Microcontroladores e DSP. Memórias de Dados e de Programa

Univ ersidade Feder al do Rio de Janei ro Informáti ca DCC/IM. Pipeline. Gabriel P. Silva. Gabriel P. Silva

Arquiteturas que Exploram Paralismos: VLIW e Superscalar. Ch9 1

SSC0611 Arquitetura de Computadores

Organização e Arquitetura de Computadores I

Organização de Sistemas Computacionais Processadores: Organização da CPU

Organização e Arquitetura de Computadores I

PLANEJAMENTO DAS DISCIPLINAS DE SISTEMAS DIGITAIS NA EC3. Workshop de Graduação do PCS Prof. Edson S. Gomi 31 de julho de 2018

Explorando o paralelismo entre instruções

1) Considere a situação atual da memória do sistema computacional abaixo discriminada.

Arquitetura de Computadores

Microarquiteturas Avançadas

18/10/2010. Unidade de Controle Controle. UC Microprogramada

SSC510 Arquitetura de Computadores 1ª AULA

DTSVLIW. UFES Mestrado em Informática. Arquiteturas Avançadas de Computador. Sotério Ferreira de Souza. Prof. Alberto Ferreira de Souza

Organização e Arquitetura de Computadores I

Trabalho Realizado por: Fábio Daniel Andrade Batista nº Tiago Fraga Tinoco Frade de Macedo nº

PSI3441 Arquitetura de Sistemas Embarcados

Sistemas Embebidos I , Tiago Miguel Dias ADEETC - Secção de Arquitecturas e Sistemas Operativos

Computadores e Programação (DCC/UFRJ)

Transcrição:

Univ ersidade Federal do Rio de Janei ro Info rmátic a DCC/IM Arquitetura de Computadores II Arquiteturas VLIW

Introdução A arquitetura Very Long Instruction Word (VLIW) tenta alcançar maiores níveis de paralelismo de instrução pela execução de instruções longas compostas por múltiplas operações. As palavras de instrução longas consistem de várias operações artiméticas, lógicas e de controle cada uma das quais poderia ser uma operação individual em um processador RISC simples. O processador VLIW executa o conjunto de operações concorrentemente, alcançando assim um alto grau de paralelismo no nível de instrução. É responsabilidade do compilador escalonar as operações de modo a utilizar o melhor possível as unidades funcionais disponíveis no processador. Um dos maiores obstáculos à evolução das arquiteturas VLIW tem sido a falta de compatibilidade binária com as arquiteturas convencionais.

Histórico Mesmo antes do advento das primeiras máquinas VLIW, havia diversos processadores e dispositivos computacionais que utilizavam uma instrução longa para controlar o funcionamento de diversas unidade funcionais em paralelo. Contudo, essas máquinas eram normalmente programadas manualmente e o código utilizado para essas máquinas não podia ser generalizado para outras arquiteturas, porque os compiladores daquela época só exploravam o paralelismo dentro dos limites dos blocos básicos. Joseph A. Fisher, um pioneiro da VLIW, desenvolveu uma técnica global de compactação de microcódigo, chamada de trace scheduling, que poderia ser utilizada em compiladores para gerar código para arquiteturas do tipo VLIW a partir de código seqüencial. Suas descobertas levaram ao desenvolvimento do processador ELI-512 e ao compilador trace scheduling Bulldog.

Histórico Duas c ompanias f oram f undadas e m 1 98 4 p ara co nstr uir computadores com te cnolo gia VL IW: Mult iflow e C ydrome. A M ulti flo w f oi i niciada p or F ish er e se us c ole gas da Universi dade d e Yale. A C ydrome f oi f undada p or Bob Rau, q ue f oi u m o utro pioneiro d a V LIW e s eus c ole gas. Em 1 98 7 a Cydro me la nçou o se u p ri meiro p roce ss ador comercia l, o C ydra 5, c om u ma p ala vra de 2 56 b its e i nclu ía sup orte em h ardware p ara a t écnica de so ftw are p ipelin e. No mesm o a no a M ulti flo w la nçou a T race/200, co m uma pala vra d e 2 56 bits, p ara u m d esp ach o d e a té 7 o pera ções por c iclo. As p ri meira s m áquin as V LI W f oram u m fra cass o c omercia l, o que levou ao f echamento d a C ydrome e m 1 99 8 e d a Multi flo w e m 1990.

Comerciais: Histórico Processador IA-64 ou Itanium da Intel Processador Crusoe da Transmeta Processador Trimedia da Philips Processador TMS320C62x DSPs da Texas Instruments Experimentais: Processador Playdoh dos Laboratórios HP Processador Tinker da North Carolina State University Processador de imagens Imagine em desenvolvimento na Universidade de Stanford.

Características Cada instrução longa é formada por um conjunto de operações que podem ser executadas em paralelo. As instruções longas são montadas através de técnicas de escalonamento por software aplicadas em tempo de compilação ou através da compactação do código gerado por um compilador convencional. Grau de concorrência das operações situa-se na prática entre 2 e 4. Código objeto não é compatível com o de um processador com arquitetura convencional. Arquiteturas organizadas com múltiplas unidades funcionais e banco de registradores com múltiplas portas de leitura As arquiteturas VLIW apresentam menor complexidade do que as arquiteturas superescalares baseadas em escalonamento dinâmico (por hardware ) de instruções.

Exemplo de Arquitetura Arquitetura do Processador VLIW Defoe

Itanium IA-64 Intel

Itanium IA-64 O processador Itanium é a primeira implementação da arquitetura IA-64 da Intel. A IA-64 é uma ISA no estilo VLIW denominado EPIC (Explicitly Parallel Instruction Computing) pela Intel e HP. Este processador executa a 800 MHz, com um processo de fabricação de 0,18 micron e possui um pipeline com 10 estágios. É uma arquitetura VLIW de 64 bits, capaz de executar até 6 operações/ciclo, possuindo 4 unid. inteiras, 4 multimedia, 2 de load/store, 2 de ponto flutuante com precisão estendida e 2 de ponto flutuante com precisão simples. Cada palavra VLIW consiste de um ou mais pacotes de 128 bits. Cada pacote de 128 bits consiste de 3 operações e um template. O template codifica as combinações mais freqüentes de tipos de operações. Duas instruções são buscadas a cada ciclo, totalizando até 6 operações buscadas, despachadas e executadas por ciclo.

Formato d a Instrução Palavra de Instrução do IA-64 Instrução 2 41 bits Instrução 1 41 bits Instrução 0 41 bits Template 5 bits 128 bits As instruções do IA-64 são montadas pelo compilador em pacotes. Um pacote é uma palavra longa de 128-bits (LIW) contendo três operações IA-64 junto junto com um template que contém informações sobre o grupo de operações. A arquiteura IA-64 não insere operações de NOP para preencher posições vazias no pacote. O template indica explicitamente o paralelismo, isto é: Se as intruções no pacote podem ser executadas em paralelo. Ou se uma ou mais delas devem ser executadas serialmente. Se pacote pode ser executado em paralelo com os pacotes vizinhos.

Itanium IA-64

Itanium IA-64 Existem 128 registradores de uso geral de 64 bits e outro conjunto de 128 registradores de ponto flutuante de 82 bits cada, além de 64 registradores de predicado. Os registradores de predicado servem para execução condicional das operações. Caso a execução da instrução não se confirme, o seu resultado é descartado. No IA-64, os registradores de uso geral GPR0 a GPR31 são fixos. Os registradores 32-127 podem ser renomeados sob o controle do programa. Os registradores de predicado de 0 a 15 são fixos, e os registradores de 16 a 63 podem ser renomeados em conjunto com os registradores de uso geral. O compilador pode escalonar os loops segundo a técnica de software pipeline. Tradicionalmente, isso requer que o loop seja desenrolado e que os registradores de iterações sucessivas sejam renomeados.

Itanium IA-64 O IA-64 suportas especulação de dados e controle controlada pelo software. Para realizar especulação de controle, o compilador move os loads para antes do desvio que o controla. O load é então marcado como especulativo. O processador não sinaliza exceções em um load especulativo. Se o desvio de controle for tomado posteriormente, o compilador utiliza uma operação especial check.s para verificar se a exceção ocorreu, desviando então para uma rotina de exceção, quando for o caso.

Itanium IA-64 Para o suporte à especulação de dados, o processador utiliza um tipo especial de load chamado de load avançado. Se o compilador não conseguir verificar com certeza se pode passar um load na frente de um store, então o load avançado é utilizado. O processador usa uma estrutura especial chamada ALAT para verificar se o store realizado posteriormente escreveu na mesma posição lida pelo load avançado. Mais tarde, na posição original do load avançado, o compilador usa uma operação especial de verificação para saber de o store invalidou o load avançado. Se for o caso, a operação de verificação transfere o controle para uma rotina especial de recuperação dos dados.

Itanium IA-64 O IA-64 suporta tanto a predição dinâmica como a estática para os desvios. O IA-64 também inclui instruções de SIMD para o processamento multimidia. Instruções multimidia similares às MMX e SSE da arquitetura x86 enxergam os registradores de uso geral como dois operandos de 32 bits, quatro de 16 bits ou oito de 8 bits e os opera em paralelo. Para compatibilidade com a família Pentium, uma unidade de controle e decodificação especial para instruções do IA-32 está presente no Itanium. Na tentativa de aumentar o desempenho, o processador IA- 64 inclui diversas facilidades que não são encontradas em arquiteturas VLIW tradicionais, tornando-se assim o processador VLIW mais complexo já projetado. Isso é um paradoxo, já que a arquitetura VLIW tem como objetivo simplificar o hardware transferindo complexidade para o compilador.

Crusoe Transmeta

Transmeta Crusoe A arquitetura Crusoe representa um ponto muito interessante na história dos processadores VLIW. Tradicionalmente os processadores VLIW foram projetados para com o objetivo de maximizar desempenho. Os projetistas do Crusoe desenvolveram uma arquitetura com baixo consumo de energia, voltada para aplicações móveis e que fosse capaz de emular a arquitetura de outros processadores, em particular a arquietura ISA do 80x86 e a máquina virtual Java. Possui 64 registradores de uso geral e suporta despacho estritamente em ordem. O Crusoe tem duas unidades funcionais para inteiros, uma de ponto flutuante, uma unidade memória (load/store) e uma unidade de desvio.

Crusoe

Crusoe O Crusoe inclui uma cache de instruções L1 associativa de 64KB com associtividade 8 e de associatividade 16 para dados, além da cache L2 unificada de 512KB. Pipeline para inteiros de 7 estágios e de 10 estágios para ponto flutuante. Controlador de memória DDR SDRAM com 100-133 MHZ, 2.5V Controlador de memória SDR SDRAM com 100-133 MHZ, 3,3V Controlador PCI ( PCI 2.1 compatível ) com 33 MHZ, 3.3V Consumo médio de 0.4-1.0 W executando a 367-800MHZ, 0.9-1.3V executando aplicações multimedia.

Crusoe A palavra longa no Crusoe tem ou 64 ou 128 bits de largura. Uma palavra de instrução de 128 bits é chamada de molécula pela Transmeta e codifica 4 operações chamadas de átomos. O formato da molécula determina como as operações são roteadas para as unidades funcionais. O Crusoe, ao contrário do IA-64, usa códigos de condição que são idênticos aos utilizados na arquitetura X86 para facilitar a simulação.

Crusoe Todos os átomos dentro de uma molécula são executadas em paralelo, e o formato da molécula diretamente determina como átomos são roteados para as unidades funcionais; isso simplifica bastante o hardware do despacho e decodificação. A arquitetura contém 64 registradores de números inteiros, numerados de %r0 a %r63. Por convenção, alguns destes registradores são utilizados para manter estados x86, enquanto outros contém estados internos ao sistema, ou podem ser usados como registradores temporários, por exemplo, para renomear os registradores por software.

Crusoe Code Morphing Programas binários do x86 são emulados com ajuda de um tradutor binário chamado code morphing, projetado para traduzir dinamicamente as instruções x86 em VLIW. Isso torna a compatibilidade de código binário um problema ultrapassado. O code morphing é um programa que reside em um Flash ROM e é a primeira aplicação a iniciar quando o Crusoe é ligado. Apenas o código nativo do code morphing necessita ser modificado em caso de atualização da arquitetura x86. Com uma forma de otimizar o desempenho e o consumo, o hardware e o software mantém em conjunto uma cache de código traduzido. As traduções são instrumentadas para coletar freqüência de execução e histórico de desvio, como forma de auxiliar uma tradução mais eficiente do código pelo code morphing.

Crusoe - Code Morphing

Crusoe - Code Morphing

Crusoe - Code Morphing O tradutor contém código cujo único propósito é coletar informações tais como frequência de execução de blocos ou histórico de desvios. Estes dados podem ser usados para decidir quando e o que otimizar e traduzir. Por exemplo, se um dados desvio é normalmente tomado, o sistema pode então otimizar a favor do caminho mais frequentemente tomado. Além disso, o tradutor pode decidir especular o melhor caminho baseado no histórico de desvios.

Crusoe - Code Morphing As instruções x86 acima são traduzidas para código VLIW em duas moleculas : 1. ld %r30, [%esp]; sub.c %ecx, %ecx, 5 2. ld %esi, [%ebp]; add %eax, %eax, %r30; add %ebx, %ebx,%r30

Cache de Tradução Cache de Tradução - permite ao software code morphing reutilizar as traduções e eliminar as redundâncias. Ao encontrar seqüências de instruções x86 traduzidas previamente, o code morphing pula o processo de tradução e executa diretamente o conteúdo da cache de traduções. A cache de traduções explora o alto grau de repetição tipicamente encontrados em programas do mundo real. O custo inicial da tradução é amortizado pelas váias execuções repetidas.

Cache de Tradução

Crusoe - Arquitetura Processadores x86 Convencionais Traduz uma instrução simples por vez Traduz uma instrução x86 toda vez que é encontrada. Muito complexo, lógica de transistores complexa, maior consumo. Processador Crusoe com Code Morphing Traduz um grupo inteiro de instruções por vez. Traduz as instruções apenas uma vez, salvando o resultado da tradução em uma cache para reuso. Muito da complexidade do processador é implementado por software. Lógica menos complexa, menor consumo.

Crusoe - Consumo O processador Crusoe foi projetado especificamente para diminuir o consumo de energia, usando o software Code Morphing no lugar da lógica de transistores, gerando bem menos calor que os processadores convencionais. Utiliza a tecnologia de gerenciamento de consumo LongRun. Como o LongRun funciona? O LongRun opera configurando o processador para rodar a um número de freqüências e voltagens diferentes. O algoritmo do LongRun no software code morphing monitora o processador Crusoe e dinamicamente troca entre estes pontos conforme as condições de mudança em tempo de execução. O tempo ocioso é monitorado e o LongRun acha um ponto de freqüência/voltagem que minimiza o tempo ocioso para o trabalho atual.

Crusoe - Consumo

Especificações

Referências 2. Site da Transmeta http://www.transmeta.com 3. Alexander Klaiber, The Technology Behind Crusoe Processors, White Paper, Transmeta Corporation, 2000