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

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

O Funcionamento do Processador

Exemplo: CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 ADD $s0, $t0, $t1 IF ID EX MEM WB SUB $t2, $s0, $t3 IF Stall Stall ID EX MEM WB

Conteúdos: Debora, Edcarllos, livros! slides disponíveis!

10. CPU (Central Processor Unit) Conjunto das instruções Estrutura interna Formato das instruções...

Organização e Arquitetura de Computadores. Capítulo 13 Paralelismo no nível de instruções

Arquitetura e Organização de Computadores 2

Unidade 1: O Computador

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização

Fundamentos de Programação. Diagrama de blocos

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

Sistemas Operacionais. Rodrigo Rubira Branco

Data Path / Control Path Controle do MIPS

Organização de Computadores 1

Arquitetura de Computadores - Processadores Superescalares. por Helcio Wagner da Silva

Arquitetura de Computadores. Ivan Saraiva Silva

ARQUITETURA DE COMPUTADORES. Professor: Clayton Rodrigues da Siva

Inteligência Artificial

Arquitetura de Computadores I

Universidade Federal do Rio de Janeiro Pós-Graduação em Informática IM-NCE/UFRJ. Pipeline. Gabriel P. Silva. Microarquitetura de Alto Desempenho

Predição de Desvios e Processadores Superescalares Especulativos

Organização e Arquitetura de Computadores. Ivan Saraiva Silva

Microarquiteturas Avançadas

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

Nivel de Linguagem de Montagem (Assembly)

Arquitetura de Computadores I

Caminho dos Dados e Atrasos

Introdução a Programação Aula 01

Aula 10: Escalonamento da CPU

Informática I. Aula Aula 19-20/06/06 1

Fundamentos de Teste de Software

O Processador: Via de Dados e Controle

Fundamentos de Sistemas Operacionais

Arquitetura de Computadores - Arquitetura RISC. por Helcio Wagner da Silva

ENGENHARIA DE SOFTWARE

Arquiteturas que Exploram Paralismos: VLIW e Superscalar. Ch9 1

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

SISTEMAS DISTRIBUÍDOS

Programação Orientada a Objetos SANTOS, Rafael

Prof a Andréa Schwertner Charão DELC/CT/UFSM

Notas de Aula Guilherme Sipahi Arquitetura de Computadores. Arquitetura de von Neumann

Informática I. Aula 5. Aula 5-13/05/2006 1

Infraestrutura de Hardware. Revisão Pipeline, Superescalar e Multicores

Introdução à Informática

Unidade 14: Arquiteturas CISC e RISC Prof. Daniel Caetano

Do alto-nível ao assembly

Depois do estudo deste capítulo, o estudante deve ser capaz de:

Introdução à Programação de Computadores Parte I

ARQUITETURA DE COMPUTADORES

Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

Avaliando e Compreendendo o Desempenho. Capítulo 4

Conceitos básicos sobre computadores

As características comuns, encontradas na maioria dos processadores RISC são as seguintes:

Aula 03. Processadores. Prof. Ricardo Palma

Sistemas Operacionais. Rodrigo Rubira Branco

Gerenciamento do Escopo do Projeto (PMBoK 5ª ed.)

Universidade Estadual de Ponta Grossa PRÓ-REITORIA DE GRADUAÇÃO DIVISÃO DE ENSINO

7-1. Parte 6 Otimizações da Arquitetura

Organização e Arquitetura de Computadores I

Arquiteturas RISC. (Reduced Instructions Set Computers)

Linux e Computação Científica

Sistemas Distribuídos

ANHANGUERA EDUCACIONAL. Capítulo 2. Conceitos de Hardware e Software

Introdução. Nível da Linguagem de Montagem. Linguagem de Montagem (2) Linguagem de Montagem (1) Linguagem de Montagem

Curso de Formação de Oficiais Conhecimentos Específicos ENGENHARIA DE COMPUTAÇÃO CADERNO DE QUESTÕES

Arquitetura e Organização de Computadores. Histórico. Gerações

Algumas características especiais

Introdução aos Computadores Introdução à Ciência de Computadores Outubro / 16

Oganização e Arquitetura de Computadores

Pipelining - analogia

Conteúdo programático

Organização e Arquitetura de Computadores I

FORMULÁRIO PARA CRIAÇÃO DE DISCIPLINA

Banco de Dados I. Prof. Edson Thizon

Organização e Arquitetura de Computadores I

Fundamentos de Arquitetura e Organização de Computadores

Processamento de Dados aplicado à Geociências. AULA 1: Introdução à Arquitetura de Computadores

Organização e Arquitetura de Computadores I

Capítulo 1 Introdução

Análise de Sistemas 3º Bimestre (material 2)

SISTEMAS OPERACIONAIS. 3ª. Lista de Exercícios

Prova de Fundamentos de Bancos de Dados 1 a Prova

Arquitetura de Computadores I

3. Arquiteturas SIMD. 3.1 Considerações iniciais

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

ARQUITETURA DE COMPUTADORES

Emparelhamentos Bilineares Sobre Curvas

RISC X CISC - Pipeline

4 Sistema Computacional:

Aula 14: Instruções e Seus Tipos

2 Segmentação de imagens e Componentes conexas

Introdução à Arquitetura de Computadores

Microcontroladores e Interfaces 3º Ano Eng. Electrónica Industrial

Arquitetura de Computadores RISC x CISC. Gustavo Pinto Vilar

Arquitecturas Alternativas. Pipelining Super-escalar VLIW IA-64

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Microprocessadores. Memórias

Transcrição:

Universidade Federal do Rio Grande do Sul Instituto de Informática Programa de Pós-Graduação em Computação Arquitetura e Organização de Processadores Aula 08 Arquiteturas VLIW

1. Introdução VLIW é Very Long Instruction Word máquinas que exploram paralelismo no nível das instruções várias operações são executadas em paralelo em diferentes unidades funcionais, tais como em máquinas superescalares a diferença está no controle do despacho e da terminação das operações superescalares: as dependências são resolvidas em tempo de execução por um hardware dedicado VLIW: as dependências são resolvidas em tempo de compilação pelo compilador

Introdução em uma máquina VLIW, várias operações (instruções em uma máquina normal) são codificadas em uma mesma instrução a palavra de instrução é bastante longa, podendo conter várias operações (que operam sobre vários operandos) independentes a posição de cada operação dentro da palavra VLIW determina a unidade funcional que será usada o hardware de despacho é simples

Organização VLIW

Programas e fluxos a compilação de um programa é (normalmente) feita em três fases parsing da linguagem de entrada para uma descrição (estrutura) intermediária otimização da estrutura intermediária geração do código para a arquitetura-alvo a estrutura de dados intermediária representa: fluxo de controle as diferentes seqüências de execução das instruções que formam o programa fluxo de dados as dependências de dados que existem entre as várias operações blocos básicos: grupos de instruções que são SEMPRE executadas em seqüência

Blocos básicos

2. Escalonamento o escalonamento das operações consiste em determinar as operações que serão executadas em paralelo em uma máquina VLIW o compilador é responsável por esta tarefa operações que são executadas em paralelo são atribuídas à mesma palavra de instrução em um mesmo bloco básico (seqüencial) estas instruções podem ser escalonadas com base no fluxo de dados escalonamento ASAP (as soon as possible) a transição da fronteira entre blocos exige técnicas mais elaboradas escalonamento acíclico: programas com desvios, sem ciclos escalonamento cíclico: programas com ciclos e laços

Escalonamento dentro de um bloco básico Latências: Adder = 1 ciclo Multiplier = 3 ciclos Load = 2 ciclos Store = 1 ciclo

3. Escalonamento acíclico exemplo de técnica: escalonamento baseado em predicados operações que se seguem a um if são associadas com um predicado valor do predicado é definido em função do resultado do teste do if a palavra VLIW deve ser acrescida de um registrador de predicado para cada instrução a máquina deve ser acrescida de uma unidade operativa para implementar operador de definição de predicados uma operação... é completada se o predicado é verdadeiro não é completada se o predicado é falso esta técnica é conhecida como if-conversion

Predicação

4. Escalonamento cíclico o código do ciclo inicial é reescrito seqüencialmente até se conseguir um padrão de instruções que se repetem ao longo do tempo loop unrolling este padrão repetido ao longo do tempo é chamado de kernel do laço o kernel do laço será realizado por uma (ou mais) instruções VLIW cada instrução VLIW pode conter operações de diferentes ciclos antes da duplicação (isto é representado com índices)

Escalonamento cíclico: exemplo R1 2.14 R3 X R5 Y R1 2.14 R3 X R5 Y L: R2 load M [ R3++ ] R4 R2*R1 store M [ R5++ ] R4 if R3 < X+100 goto L Laço inicial } L: R2 load M [ R3++ ] R4 R2*R1 store M [ R5++ ] R4 R2 load M [ R3++ ] R4 R2*R1 store M [ R5++ ] R4 R2 load M [ R3++ ] R4 R2*R1 store M [ R5++ ] R4 R2 load M [ R3++ ] R4 R2*R1 store M [ R5++ ] R4 if R3 < X+100 goto L Laço reescrito 4 vezes

Escalonamento cíclico: exemplo R1 2.14 R3 X R5 Y L: R2 load M[R3++] R4 R2*R1 store M[R5++] R4 R2 load M[R3++] R4 R2*R1 store M[R5++] R4 R2 load M[R3++] R4 R2*R1 store M[R5++] R4 R2 load M[R3++] R4 R2*R1 store M[R5++] R4 if R3<X+100 goto L Laço reescrito 4 vezes seqüencialmente R1 2.14 R3 X R5 Y R2 1 load M[R3++] R2 2 load M[R3++] R4 1 R2 1 *R1 R2 3 load M[R3++] R4 2 R2 2 *R1 store M[R5++] R4 1 R2 4 load M[R3++] R4 3 R2 3 *R1 store M[R5++] R4 2 R2 5 load M[R3++] R4 4 R2 4 *R1 store M[R5++] R4 3 R2 6 load M[R3++] R4 5 R2 5 *R1 store M[R5++] R4 4 R2 7 load M[R3++] R4 6 R2 6 *R1 store M[R5++] R4 5 R2 8 load M[R3++] R4 7 R2 7 *R1 store M[R5++] R4 6 R2 9 load M[R3++] R4 8 R2 8 *R1 store M[R5++] R4 7 R2 10 load M[R3++] R4 9 R2 9 *R1 store M[R5++] R4 8 R4 10 R2 10 *R1 store M[R5++] R4 9 store M[R5++] R4 10 if R3<X+100 goto L Ao longo do tempo estas três operações podem sempre ser executadas em paralelo

Escalonamento cíclico: exemplo Ao longo do tempo estas três operações podem sempre ser executadas em paralelo R2 3 load M[R3++] R4 2 R2 2 *R1 store M[R5++] R4 1 R2 4 load M[R3++] R4 3 R2 3 *R1 store M[R5++] R4 2 R2 5 load M[R3++] R4 4 R2 4 *R1 store M[R5++] R4 3 R2 6 load M[R3++] R4 5 R2 5 *R1 store M[R5++] R4 4 R2 7 load M[R3++] R4 6 R2 6 *R1 store M[R5++] R4 5 R2 8 load M[R3++] R4 7 R2 7 *R1 store M[R5++] R4 6 R2 9 load M[R3++] R4 8 R2 8 *R1 store M[R5++] R4 7 R2 10 load M[R3++] R4 9 R2 9 *R1 store M[R5++] R4 8 1 o estágio 2 o estágio R1 3 o estágio Load R2 * R4 Store Na prática o compilador usou as unidades operativas para configurar (via software) um pipeline de 3 estágios dedicado à execução deste laço

5. Exercício I1: R1 = R2 + R3 I2: R10 = mem[r5+100] I3: R5 = R1 + R6 I4: R7 = R4 * R8 I5: R2 = R7 + R3 I6: R9 = R4 + R10 Somador tem latência de 1 ciclo Multiplicador e memória têm latência de 2 ciclos Dependências de dados R10 = mem [R5+100] R1 = R2 + R3 verdadeiras falsas R7 = R4 * R8 R9 = R4 + R10 R5 = R1 + R6 R2 = R7 + R3 + + * load / store R1 = R2 + R3 nop R7 = R4 * R8 R10 = mem [ ] R5 = R1 + R6 nop nop nop VLIW gasta mais memória de programa que superescalar R9 = R4 + R10 R2 = R7 + R3 nop nop

6. Processador Crusoe Processador simples poucas unidades funcionais parte de controle simplificada economia de potência Compatível com o conjunto de instruções x86 Realiza tradução dinâmica de código, no nível do conjunto de instruções aplicações são escritas com código assembly para o conjunto de instruções do x86 Implementa um compromisso entre HW e SW na execução de algoritmos SW decodificação de instruções x86 e escalonamento destas em instruções VLIW HW processador VLIW

Características arquiteturais Processador VLIW com: 2 unidades de inteiros 1 unidade de ponto flutuante 1 unidade de memória 1 unidade para desvios banco de registradores com 64 registradores para inteiros banco de registradores com 32 registradores para ponto flutuante 1 instrução VLIW é chamada de molécula pode conter até 4 instruções RISC, chamadas de átomos tamanho varia de 64 até 128 bits todos os átomos executam em paralelo a posição de cada átomo determina a unidade na qual este é executado simplifica as unidades de decodificação e despacho de instruções

Comparação entre arquiteturas Superescalar VLIW Crusoe

Moléculas e mapeamento princípios Moléculas são executadas sequencialmente não há execução fora-de-ordem hardware da parte de controle simplificado Moléculas são criadas a partir da tecnologia chamada Code Morphing durante a execução do programa tradução de código x86 tenta paralelizar ao máximo as instruções moléculas com 4 instruções

Crusoe vs. x86

Moléculas e mapeamento exemplo molécula de 128 bits FADD ADD LD BRCC Unidade de Ponto Flutuante Unidade de Inteiros ULA #0 Unidade de Leitura/Escrita Unidade de Desvios

Code Morphing Sistema de tradução dinâmica x86 ISA Crusoe - VLIW ISA Armazenado em uma ROM dentro do processador É o primeiro programa a ser executado quando o processador inicializa Apenas o próprio código do Code Morphing é escrito através do conjunto de instruções do Crusoe

Relações entre o código da aplicação e o code morphing BIOS Code Morphing VLIW Engine Sistema Operacional Aplicações

Características do code morphing Pode traduzir um grupo inteiro de operações x86 simultaneamente processadores nativos traduzem (para microcódigo) uma instrução por vez As instruções traduzidas são armazenadas em uma memória cache específica translation cache traduções são realizadas apenas uma vez durante a execução do código o tempo de tradução e o consumo de potência são amortizados através das sucessivas execuções permite emprego de algoritmos para traduções e escalonamento mais sofisticados somente possível quando não ocorrem falhas na translation cache o tamanho da translation cache é determinado pelo sistema operacional