Sei sulla pagina 1di 149

Tese apresentada ao Instituto de Computaco, unicamp, como requisito parcial para a a obteno do t ca tulo de Doutor em Cincia da e Computao.

ca

ii

Instituto de Computao ca Universidade Estadual de Campinas

2D-VLIW: Uma Arquitetura de Processador Baseada na Geometria da Computao ca


Ricardo Ribeiro dos Santos1
Junho de 2007

Banca Examinadora: Prof. Dr. Rodolfo Jardim de Azevedo (Orientador) Prof. Dr. Alberto Ferreira de Souza Profa. Dra. Liria Matsumoto Sato Prof. Dr. Mario Lcio Crtes u o Departamento de Informtica - UFES a

Departamento de Engenharia de Computao e Sistemas Digitais - USP ca

Instituto de Computao - UNICAMP ca

Prof. Dr. Paulo Csar Centoducatte e

Instituto de Computao - UNICAMP ca

Prof. Dr. Ivan Luiz Marques Ricarte Prof. Dr. Sandro Rigo

Faculdade de Engenharia Eltrica e Computao - UNICAMP (Suplente) e ca

Instituto de Computao - UNICAMP (Suplente) ca

Suporte nanceiro do CNPq (processo 142011/2006-1) 20062007, Capes 2005-2006 e Universidade Catlica Dom Bosco 20042005. o

vii

Dedicatria o

` A pessoa que mais me incentivou na longa caminhada dos estudos e que, de maneira to abrupta e por razes que ultrapassam a o o nosso entendimento, no est mais a a aqui para nos abraar... c Esta Tese dedicada a memria de uma e ` o brasileira comum, me, esposa, professora a do ensino fundamental da rede pblica, u enm, uma guerreira que acreditava piamente na transformao que a educao pode ca ca exercer na vida das pessoas... minha Tia, Nildete Ribeiro Porto Dourado. ix

Agradecimentos
Jamais imaginei que iniciar os agradecimentos de uma tese de doutorado fosse to a dif cil...Foram tantas as pessoas que gostaria de mencionar neste espao que, certamente, c teria que dedicar o mesmo tempo de escrita da tese...Sabendo que isso no poss a e vel, quero deixar um agradecimento a todas as pessoas que direta ou indiretamente zeram e fazem parte da minha vida e que, por falta de espao e/ou falhas de memria desse que c o vos escreve, no constaro na listagem a seguir. a a Meus agradecimentos iniciais so dedicados a DEUS. Por tudo que passei nesse a per odo do doutorado, posso dizer que sem Ele, chegar ao nal desta etapa no seria a poss vel. Devo toda a minha gratido ` Rbia Mara de Oliveira Santos, minha esposa, com a a u quem tenho compartilhado os momentos mais felizes da minha vida. Como se isso j no a a fosse bastante, a Rbia foi uma grande motivadora durante todo o per u odo do doutorado. Quero tambm agradecer ao Professor Rodolfo Azevedo. A sua disponibilidade e e ateno constantes para discutir assuntos e propor alguma soluo me impressionou muito. ca ca Alm disso, sua cordialidade e pacincia me passaram muita segurana para investir nas e e c idias e desenvolver o trabalho. e Anos aps anos meus pais: Nelson e Nadir, continuam sendo uma fonte de bons o exemplos e admirao para mim. Devo agradec-los por terem procurado me ensinar que ca e com o trabalho, a justia e a bondade, conseguimos vencer muitas adversidades. Embora c no entendendo muito o que eu estudei durante essa estada em Campinas, sei que eles esto a a muito orgulhosos de mim. Agradeo tambm ` minha irm Rejane. Quero agradece-la c e a a por ter cuidado dos meus pais nesse per odo em que, eu sei, estive to ausente. No posso a a deixar de agradecer a minha nova fam meus sogros Israel e Ira e cunhados: Misael e lia, des xi

Gisele, Elizeu e Erica e o pequeno Guilherme. Meus sogros e cunhados me acolheram com muita alegria e zeram com que eu pudesse esquecer, por alguns momentos, os grandes problemas que tinha para resolver no doutorado. Agradeo tambm ao Professor Guido Arajo, especialista e conhecedor ex c e u mio de arquiteturas de computadores e compiladores. Quero agradecer ao Professor Guido por ter me aceitado no Programa de Doutorado do IC-UNICAMP e pela pacincia e boa e vontade em sacricar a sua agenda para discutir as minhas dvidas e ler meus artigos. u Aqui no IC quero dedicar um agradecimento especial a dois colegas cuja troca de experincias foi muito frut e fera para mim. A amizade que z com o Evandro Bracht e com o Carlos Froldi dessas coisas que levarei para o resto da vida. No caso do Carlos, e a paixo comum pelo Todo Poderoso Timo tambm serviu para muitas situaes de a a e co risadas, alegrias e sofrimentos. Aqui em Campinas encontrei pessoas maravilhosas que zeram a minha adaptao ca ` cidade muito mais fcil e prazeirosa. Quero registrar meus sinceros agradecimentos ao a a grande amigo Jnior (e sua esposa Luciane) cuja amizade iniciou em So Carlos, nos u a tempos do mestrado e, com a ajuda de DEUS, nunca ir acabar; Ao Andr Drummond (e a e sua esposa Elaine) que com seu bom humor possibilitava momentos muito descontra dos na sala 86; A amiga Paolla e sua fam que graas ao seu carinho e ajuda em vrios lia c a momentos, zeram com que a estadia aqui em Campinas casse marcada para sempre. Agradeo tambm aos colegas que encontrei no LSC, docentes e funcionrios do c e a IC que sempre, com muita pacincia, tem me auxiliado nas situaes mais diversas. e co Quero agradecer ao apoio nanceiro da Capes e do CNPq que, em diferentes momentos, foram imprescind veis para manter meu foco apenas na pesquisa. Quero tambm agradecer ` UCDB pelo suporte nanceiro na fase inicial do doutorado. e a Por m, registro meus sinceros agradecimentos ` UNICAMP que, com sua losoa a de ensino e pesquisa, fornece muitos exemplos para serem seguidos no restante desse pa s. Para mim, que vem de uma regio onde estudar em escolas pblicas e de qualidade a u e contrariar a estat stica, ter estudado aqui foi o cumprimento de um sonho maravilhoso.

xii

Resumo
Anncios recentes sobre os limites do desempenho dos processadores devido ao u alcance da barreira trmica tm motivado a pesquisa sobre novas organizaes arquie e co teturais e modelos de execuo que visam continuar o aumento de desempenho dos ca processadores. Este trabalho prope uma nova arquitetura de processador denominada o 2D-VLIW. A arquitetura possui uma organizao arquitetural baseada em uma matriz ca bidimensional de unidades funcionais e de registradores distribu dos ao longo dessa matriz. O modelo de execuo 2D-VLIW possibilita que instrues longas, formadas por operaes ca co co simples, sejam buscadas na memria e executadas sobre a matriz de unidades funcionais. o Alm disso, so propostos algoritmos para gerao de cdigo para extrair o paralelismo e a ca o e preparar o cdigo para ser executado sobre a arquitetura. Algumas contribuies deste o co trabalho so a concepo de uma nova arquitetura de processador que explora paralelismo a ca em n de instrues atravs de um novo arranjo dos elementos arquiteturais, a adoo de vel co e ca um modelo de execuo que captura a geometria dos DAGs e associa os vrtices e arestas ca e desses DAGs aos recursos do hardware, um conjunto de algoritmos para escalonamento de instrues, a alocao de registradores e a codicao de instrues na arquitetura co ca ca co 2D-VLIW. Os resultados experimentais comparam o desempenho do modelo de execuo ca dessa arquitetura com o modelo EPIC adotado pelo processador HPL-PD. O speedup obtido por 2D-VLIW foi de 5% at 63%. A estratgia de escalonamento adotada por e e 2D-VLIW foi tambm avaliada e os ganhos obtidos atravs do OPC e OPI foram at 4 e e e vezes melhores que aqueles obtidos por um algoritmo de escalonamento baseado em list scheduling.

xiii

Abstract
Recent announcements on processor performance limits due to the thermal barrier have motivated research into innovative architectural organizations and execution models to sustain the increase of performance. This work proposes a new architecture named 2D-VLIW. The architecture provides a new architectural organization of the processing elements by using a two-dimensional functional units matrix and registers spread out along this matrix. The 2D-VLIW execution model fetches long instructions comprised of simple operations in the memory and dispatches these operations to the matrix. Moreover, the work presents new algorithms for code generation which are the responsible for extracting the parallelism of the applications and preparing the code for the 2D-VLIW architecture. Some contributions of this work are a new high performance architecture that exploits instruction level parallelism by a new arrangement of the architectural elements, the adoption of an execution model that captures the geometry of the DAGs and matches them to the hardware resources, a set of algorithms for code generation that make them possible to schedule instructions, allocate registers and encode long instructions of the 2D-VLIW architecture. Experimentos were used for comparing the performance of the 2D-VLIW execution model to the EPIC execution model of the HPL-PD architecture. The speedup obtained by 2D-VLIW ranges from 5%63% for all the evaluated programs. The scheduling strategy based on subgraph isomorphism was also evaluated and the OPC and OPI gains were up to 4 better than that of the list scheduling algorithm.

xv

Notao ca
Conjuntos so denidos em letras maisculas e em formato matemtico. Assim, a u a quantidade de elementos do conjunto.

V, I, P so conjuntos. A operao |V | indica a cardinalidade do conjunto, isto , a a ca e

Elementos de um conjunto so apresentados em letras minsculas e formato matea u mtico. Elementos espec a cos de um conjunto possuem um ndice subscrito junto ` a letra que dene o elemento, como o caso de xi S. e Grafos recebem a notao G = (V, E). V o conjunto de vrtices e E o conjunto ca e e de arestas do grafo G. Para diferenciar dois ou mais grafos, adota-se um ndice

subscrito junto a cada uma das letras. Assim, G1 = (V1 , E1 ) e G2 = (V2 , E2 ) so a grafos distintos. Funes e variveis de um algoritmo so apresentados em modo matemtico. Dessa co a a a forma, evaluate() representa uma funo e tag representa uma varivel. ca a Ao longo do texto, procura-se traduzir termos e denies em ingls para a l co e ngua portuguesa. No entanto, palavras e termos que no possuem uma traduo bem a ca conhecida em portugus so mantidas sem traduo (em ingls), no formato itlico. e a ca e a Esse o caso de backtracking e list scheduling, por exemplo. Termos que j foram e a adicionados aos dicionrios da l a ngua portuguesa, como chip e cache, so escritos a sem formatao. ca Mnemnicos de operaes como addi, st e sub so formatados com fonte sans serif. o co a A relao de dependncia entre duas operaes x e y, indicando que y depende do ca e co resultado de x, dada por x y. e

xvii

Lista de Acrnimos o
ADRES: Architecture for Dynamicaly Recongurable Embedded Systems. Arquitetura composta por um processador VLIW e uma matriz de unidades funcionais recongurveis. a CMOS: Complementary Metal Oxide Semiconductor. Tcnica amplamente utilizada na e fabricao de transistores. ca DAG: Directed Acyclic Graph. Grafo que evidencia as dependncias entre operaes. e co Uma aresta eij de um DAG, indica que o vrtice i produz um valor que ser usado pelo e a vrtice j. Em outras palavras, a aresta representa a dependncia da operao j para a e e ca operao i. Uma aresta eij tambm carrega consigo um peso k > 0, indicando a latncia ca e e da operao i. Os vrtices de um DAG representam as operaes de um programa. ca e co DFG: Data Flow Graph. Grafo que indica o uxo de dependncias de dados entre blocos e de um programa. DRESC: Dynamically Recongurable Embedded System Compiler. Compilador utilizado na gerao de cdigo para a arquitetura ADRES. ca o EDGE: Explicit Data Graph Execution. Um modelo de execuo e conjunto de instrues ca co adotado pelo processador TRIPS. ELI-512: Enormously Longword Instructions-512 bits. Um processador VLIW proposto por Joseph A. Fisher na Universidade de Yale no in dos anos 80. cio EPIC: Explicitly Parallel Instruction Computing. Um modelo de arquitetura que explora paralelismo em n de instruo atravs de diversas otimizaes de compilao. vel ca e co ca GPA: Grid Processors Architecture. Denio inicialmente atribu a um processador ca da que segue o modelo EDGE. HMDES: Hardware Machine Description language. Linguagem para descrio de arquica teturas de processadores acoplada ao compilador Trimaran. xix

HPL-PD: HP Labs PlayDoh. Processador parametrizvel que implementa o modelo a arquitetural EPIC para execuo de operaes de um programa. ca co ILP: Instruction Level Parallelism. Medida utilizada para indicar o paralelismo alcanado c por um processador. LSC: Laboratrio de Sistemas de Computao. o ca MIMD: Multiple Instruction Multiple Data. Um modelo de execuo para mquinas ca a paralelas em que vrias instrues diferentes podem executar simultaneamente, sendo que a co cada uma utiliza dados (operandos) diferentes. MIPS: Microprocessor without Interlocked Piped Stages. Designa uma fam de microlia processadores que implementam o padro RISC. a OPC: Operaes por Ciclo. Medida que indica a quantidade de operaes por ciclo co co alcanada por uma tcnica, sistema ou algoritmo. c e OPI: Operaes por Instruo. Medida que informa a quantidade de operaes por co ca co instruo alcanada por um algoritmo de escalonamento. ca c PPE: Power Processor Element. Processador que compe a arquitetura Cell e respono e svel pela atribuio de tarefas aos SPEs. E tambm o responsvel pela execuo do a ca e a ca sistema operacional. PRISC: Programmable Instruction Set Computers. Arquitetura recongurvel com unia dades funcionais recongurveis adicionadas ` via de dados do processador. a a RAW: The Raw Architecture Workstation. E uma arquitetura com mltiplos processadou res (arquitetura com mltiplos ncleos) que possibilita a execuo a execuo de diferentes u u ca ca granularidades de dados. RAWCC: The Raw Architecture Workstation C Compiler. E o compilador baseado em linguagem C que gera cdigo para processadores da arquitetura RAW. o RG: Registrador Global. Registrador que armazena os valores de parmetros, operandos a de ra de um DAG e resultados de folhas de um DAG na arquitetura 2D-VLIW. Essa zes arquitetura possui um banco de RGs composto por 32 registradores. RISC: Reduced Instruction Set Computer. Um modelo de arquitetura de processadores baseado em um conjunto de instrues reduzido. co xx

RT: Registrador Temporrio. E o registrador que armazena resultados temporrios das a a computaes na arquitetura 2D-VLIW. Existem vrios bancos de RTs no interior da co a matriz de UFs 2D-VLIW. Cada UF 2D-VLIW pode ler valores de dois bancos de RTs e escrever resultados em registradores de um banco de RTs. RUF: Registrador da Unidade Funcional . Registrador presente em cada unidade funcional da arquitetura 2D-VLIW. SIMD: Single Instruction Multiple Data. Um modelo de execuo para arquiteturas ca paralelas em que uma instruo opera sobre dados (operandos) diferentes. ca SPE: Synergistic Processor Element. A arquitetura Cell possui 8 SPEs. Esses processadores possuem unidades vetoriais e so os responsveis pela realizao da maior parte das a a ca tarefas em um processador Cell. SPEC: Standard Performance Evaluation Corporation. Uma empresa que comercializa uma fam de programas benchmarks muito usada na avaliao do desempenho de lia ca processadores. Alm disso, SPEC tambm dene um conjunto de mtricas que podem ser e e e usadas na avaliao de desempenho de arquiteturas de processadores. ca SSA: Single Static Assignment. Otimizao realizada sobre o cdigo do programa que ca o transforma uxos de controle em uxos de dados. SUIF: Stanford University Intermediate Format. Uma infraestrutura de compilao que ca possibilita o suporte e colaborao envolvendo pesquisas sobre otimizaes de cdigo e ca co o paralelismo em n de instruo. vel ca TRIPS: Tera-op, Reliable, Intelligently adaptive Processing System. Um processador composto por uma matriz de unidades funcionais, memrias caches e registradores oro ganizados ao longo dessa matriz. Esse processador implementa o modelo de execuo ca EDGE. UF: Unidade Funcional . E a unidade que executa o processamento das operaes em co vrias arquiteturas como, por exemplo, 2D-VLIW. a UFP: Unidades Funcionais Programveis. So unidades funcionais da arquitetura PRISC a a que permitem a recongurao de suas funes de acordo com as caracter ca co sticas da aplicao. ca xxi

ULA: Unidade de Lgica e Aritmtica. Elemento de hardware responsvel pela execuo o e a ca de operaes aritmticas e lgicas. co e o VF: Vento e Fogia. Iniciais dos nomes dos autores da biblioteca VF que agrupa um conjunto de algoritmos para isomorsmo de grafos e subgrafos. VLIW: Very Long Instruction Word. Um estilo de arquitetura de processadores que buscam instrues longas na memria e executam as operaes que compem essas instrues co o co o co de maneira paralela. VLSI: Very Large Scale Integration. Indica uma escala de integrao (densidade) adotada ca na fabricao de transistores. ca

xxii

Sumrio a
Dedicatria o Agradecimentos Resumo Abstract Notao ca Lista de Acrnimos o 1 Introduo ca 1.1 1.2 Proposta e Contribuies da Tese . . . . . . . . . . . . . . . . . . . . . . . co Organizao da Tese . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ca vi vii ix x xi xii 1 3 5 7 7 9 9

2 Trabalhos Relacionados 2.1 2.2 Denio de Parmetros para Anlise . . . . . . . . . . . . . . . . . . . . . ca a a Propostas de Arquiteturas . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7 Arquitetura RAW . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Arquitetura TRIPS . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Arquitetura ADRES . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Arquitetura WaveScalar . . . . . . . . . . . . . . . . . . . . . . . . 17 Arquitetura Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Modelo Arquitetural EPIC . . . . . . . . . . . . . . . . . . . . . . . 20 Arquitetura PipeRench . . . . . . . . . . . . . . . . . . . . . . . . . 23 xxiii

2.2.8 2.3 2.4

Outras Propostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Relacionamento entre os Trabalhos da Area . . . . . . . . . . . . . . . . . 26 Consideraes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 co 31

3 A Arquitetura 2D-VLIW 3.1 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.2 3.3

A Arquitetura 2D-VLIW . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 A Unidade Funcional 2D-VLIW . . . . . . . . . . . . . . . . . . . . 35 Registradores Temporrios . . . . . . . . . . . . . . . . . . . . . . . 37 a Interligao entre Unidades Funcionais . . . . . . . . . . . . . . . . 41 ca Hierarquia de Memria . . . . . . . . . . . . . . . . . . . . . . . . . 42 o Conjunto de Instrues 2D-VLIW . . . . . . . . . . . . . . . . . . . 45 co

Modelo de Execuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 ca Consideraes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 co 55

4 Gerao de Cdigo na Arquitetura 2D-VLIW ca o 4.1 4.2

Infraestrutura para Gerao de Cdigo . . . . . . . . . . . . . . . . . . . . 56 ca o Algoritmo de Escalonamento Baseado em Isomorsmo de Subgrafos . . . . 59 4.2.1 4.2.2 4.2.3 Heur stica 1: Ordenao Topolgica . . . . . . . . . . . . . . . . . . 66 ca o Heur stica 2: Redimensionamento do Grafo Base . . . . . . . . . . . 68 Heur stica 3: Vrtices Globais no Grafo de Entrada . . . . . . . . . 70 e

4.3 4.4 4.5 4.6

Algoritmo de Escalonamento Guloso . . . . . . . . . . . . . . . . . . . . . 73 Alocao de Registradores . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 ca Codicao de Instrues . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 ca co Consideraes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 co 90

5 Experimentos e Resultados 5.1 5.2 5.3 5.4 5.5 5.6

Experimentos e Medidas de Desempenho . . . . . . . . . . . . . . . . . . . 90 Infraestrutura para Gerao dos Experimentos . . . . . . . . . . . . . . . . 93 ca Desempenho do Modelo de Execuo . . . . . . . . . . . . . . . . . . . . . 96 ca Escalonamento e Alocao . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 ca Codicao de Instrues . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 ca co Consideraes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 co xxiv

6 Concluses o 6.1 6.2

109

Contribuies desta Tese . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 co Propostas de Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . 114 118 118

Referncias Bibliogrcas e a Bibliograa

xxv

Lista de Tabelas
2.1 4.1 5.1 5.2 5.3 5.4 5.5 5.6 Caracter sticas das arquiteturas. . . . . . . . . . . . . . . . . . . . . . . . . 30 Resultado do escalonamento baseado no algoritmo guloso de list scheduling. 76 Programas utilizados nos experimentos. . . . . . . . . . . . . . . . . . . . . 91 Latncias das operaes consideradas. . . . . . . . . . . . . . . . . . . . . . 93 e co Nmero de instrues 2D-VLIW. . . . . . . . . . . . . . . . . . . . . . . . 101 u co OPC e OPI alcanados pelos algoritmos de escalonamento. . . . . . . . . . 102 c Nmeros de cdigos de spill inseridos no corpo do programa com diferentes u o conguraes de registradores. . . . . . . . . . . . . . . . . . . . . . . . . . 104 co codicadas; |I| =nmero de instrues codicadas; |P | =nmero de padres.106 u co u o Resultados com a tcnica de codicao. |S| =nmero de instrues no e ca u co a

xxvii

Lista de Figuras
2.1 2.2 2.3 2.4 2.5 2.6 2.7 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 Arquitetura RAW. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Arquitetura TRIPS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Arquitetura ADRES. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Arquitetura WaveScalar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Arquitetura Matrix. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Viso geral da arquitetura HPL-PD. . . . . . . . . . . . . . . . . . . . . . 22 a Diagrama de blocos da arquitetura PipeRench. . . . . . . . . . . . . . . . . 23 Via de dados da arquitetura 2D-VLIW. . . . . . . . . . . . . . . . . . . . . 33 A unidade funcional 2D-VLIW. . . . . . . . . . . . . . . . . . . . . . . . . 36 Interligao da UF com seu banco de registradores temporrios. . . . . . . 38 ca a Interligao entre os elementos da matriz. ca . . . . . . . . . . . . . . . . . . 42 Hierarquia de memria 2D-VLIW. . . . . . . . . . . . . . . . . . . . . . . . 43 o Via de dados 2D-VLIW e os elementos de memria cache. . . . . . . . . . 44 o Exemplo de mapeamento e execuo sobre a matriz de UFs. . . . . . . . . 47 ca Estilo de execuo 2D-VLIW: dados e controle so enviados para as UFs ca a atravs do pipeline. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 e DAGs do programa 181.mcf e suas instrues 2D-VLIW equivalentes. . . . 49 co 3.10 Estgios iniciais da execuo das instrues A e B. . . . . . . . . . . . . . 51 a ca co 3.11 Estgios restantes da execuo das instrues A e B. . . . . . . . . . . . . 52 a ca co 4.1 4.2 4.3 Exemplo do problema de isomorsmo de subgrafos. . . . . . . . . . . . . . 60 Escalonamento de instrues baseado em isomorsmo de subgrafos. . . . . 62 co Exemplo de ordenao topolgica. . . . . . . . . . . . . . . . . . . . . . . . 67 ca o xxix

4.4 4.5 4.6 4.7 4.8 4.9

Exemplo de desenrolamento do grafo base. . . . . . . . . . . . . . . . . . . 69 Exemplo de redimensionamento do grafo base. . . . . . . . . . . . . . . . . 70 Exemplo da heur stica que inser vrtice global no DAG. . . . . . . . . . . . 72 e Grafo de entrada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Registradores globais e temporrios como vrtices do grafo base. . . . . . . 79 a e Grafo de entrada representando as operaes e registradores e o resultado co nal do escalonamento com alocao de registradores. . . . . . . . . . . . . 81 ca

4.10 Exemplo de execuo da tcnica de codicao. . . . . . . . . . . . . . . . 87 ca e ca 5.1 5.2 5.3 Organizao e uxo de execuo do compilador Trimaran com e sem as ca ca ferramentas espec cas para a arquitetura 2D-VLIW. . . . . . . . . . . . . 95 Speedup do modelo de execuo 2D-VLIW sobre HPL-PD. . . . . . . . . . 98 ca Escalabilidade dos modelos de execuo 2D-VLIW e HPL-PD. . . . . . . . 100 ca

xxx

Cap tulo 1 Introduo ca


Anncios recentes sobre os limites do desempenho dos processadores devido ao u alcance da barreira de temperatura tm levado a indstria e a comunidade cient e u ca a buscar solues inovadoras na tentativa de manter o constante aumento de desempenho co dos processadores. Em 2004, uma das companhias l deres do mercado de microprocessadores, a Intel Inc., revelou uma mudana em sua estratgia de pesquisa e evoluo de c e ca microprocessadores devido ao alcance da barreira termal [54]. Essa mudana est voltada c a para a obteno de mais desempenho do processador atravs de mltiplos elementos de ca e u processamento em um mesmo chip. Por muitos anos, o aumento constante no desempenho do processador foi devido, principalmente, ao avano na tecnologia VLSI. Esse avano tem possibilitado encapsular c c milhes e, atualmente, bilhes de transistores dentro de um unico chip e, como conseqno o ue cia, construir processadores com mais poder de processamento e melhor desempenho. E importante esclarecer que o aumento de desempenho dos processadores tambm advm de e e tcnicas embutidas no compilador [2, 62] e da adio de mais elementos de processamento e ca junto ao hardware [19, 31, 55]. A discusso em torno dos limites tecnolgicos para a construo de dispositivos de a o ca processamento cada vez menores e com maior capacidade de processamento no algo a e recente. Igualmente, a busca por alternativas alheias a esses limites j dura algumas a dcadas. A partir de meados dos anos 80, diversos trabalhos de pesquisa tm abordado e e tcnicas de compilao que consideram regies de cdigo maiores, transformao de uxos e ca o o ca de controle em uxos de dados, a colocao de dados em memrias rpidas e mais ca o a 1

Cap tulo 1. Introduo ca

prximas do processadores buscando melhorar o paralelismo entre as operaes de um o co programa e, tambm, aumentar o desempenho [44, 50, 76, 85]. Com esse mesmo intuito, e a comunidade da rea de arquiteturas de computadores tem presenciado o surgimento a de diversas propostas de arquiteturas de processadores que adotam mltiplas unidades de u processamento, memrias distribu o das ao longo do chip, unidades para manter a coerncia e da execuo do programa, entre outras inovaes [12, 13, 56, 69, 84]. ca co O interessante nessa linha de trabalhos de pesquisa que, alm de utilizar vrios e e a elementos de hardware, h uma crescente preocupao em como organizar esses elementos a ca de modo a fazer o melhor uso dos recursos existentes. Em outras palavras, como denir modelos ou paradigmas de execuo que maximizam o uso de todos esses elementos ca enquanto procuram minimizar o tempo de processamento? Nesse sentido, uma das questes-chave o uso balanceado dos diversos recursos. De forma geral, os projetistas o e procuram balancear as demandas pelos elementos do processador, pela memria, pelos o dispositivos de entrada e sa e pelas estruturas de interconexo. Um agravante para da a essa questo que o desempenho do processador cresce por um fator muito maior que o a e desempenho da memria. A conseqncia disso que o projeto de uma arquitetura de o ue e processador deve considerar essas diferenas e lanar mo de tcnicas para minimiz-las o c c a e a mximo poss a vel. Segundo [25], um desao fundamental para projetistas de processadores est em como organizar os mdulos de memria cache de modo a reduzir a latncia do a o o e acesso por parte das operaes de memria. A utilizao da tecnologia VLSI encoraja o co o ca projeto de processadores que so mais isolados do subsistema de memria ao passo em que a o tambm so mais ex e a veis para adaptar `s nuncias do comportamento desse subsistema. a a Kozyrakis e Patterson [49] acrescentam que outro grande desao para os projetistas e utilizar ecientemente o grande nmero de transistores de modo a encontrar os requisitos u de aplicaes futuras. Esses e outros trabalhos [1] informam ainda sobre a necessidade de co solues que consideram o modelo que rege a execuo desses elementos, a granularidade co ca dos dados que sero executados, a reduo da rea de memria ocupada pelo programa e a ca a o a reduo da potncia consumida pelo processador. ca e Diante desse contexto, o problema central tratado nesta Tese a ausncia de e e um modelo de execuo e de uma organizao arquitetural que consideram, de maneira ca ca

1.1. Proposta e Contribuies da Tese co

global, os padres de processamento e organizao de um programa. Por padres de o ca o processamento, deve-se entender o grau de paralelismo que pode ser obtido por um programa, os tipos de operaes que so executadas e os requisitos de hardware exigidos co a por essas operaes. Os padres de organizao referem-se ` geometria dos grafos de co o ca a dependncias das operaes do programa, entre outras caracter e co sticas desses grafos. A Seo 1.1 apresenta a proposta e algumas contribuies desta Tese. Na seqncia, a ca co ue Seo 1.2 detalha o contedo dos prximos cap ca u o tulos.

1.1

Proposta e Contribuies da Tese co


Em face dos limites tecnolgicos que a indstria de processadores est sendo o u a

obrigada a considerar e, diferente de outras propostas que buscam a melhoria de desempenho por meio do acrscimo de mais elementos de processamento, esta Tese prope uma e o discusso diferenciada visando manter a evoluo de desempenho que sempre caracterizou a ca os processadores. Na realidade, a Tese apresenta uma nova arquitetura de processador denominada 2D-VLIW1 e, atrelado a essa nova arquitetura, um modelo de execuo cuja ca caracter stica marcante o mapeamento de regies de cdigo do programa sobre as unidae o o des funcionais de uma matriz de processamento. O trabalho aqui apresentado defende o pressuposto de que o cdigo existente em um programa obedece a um padro de execuo o a ca e as dependncias entre as operaes formam uma geometria bastante peculiar que pode e co ir ao encontro da organizao dos recursos existentes na arquitetura. Adicionalmente, ca acredita-se que ao manipular regies de cdigo, ao invs de operaes simples, pode-se o o e co tratar o uso dos recursos da arquitetura de maneira mais eciente uma vez que est sendo a considerada uma abordagem global para utilizao desses recursos. ca A arquitetura proposta, 2D-VLIW, possui um arranjo dos elementos de processamento diferente do que se tem observado na literatura da rea. De maneira geral, a a arquitetura adota otimizaes de cdigo que minimizam as dependncias de uxo de co o e controle e maximizam a construo de agrupamentos de operaes que se adequam ` ca co a organizao arquitetural dos elementos de hardware. Alm disso, h uma preocupao ca e a ca
Assim chamada por buscar na memria instruoes compostas por vrios operaoes e execut-las em o c a c a uma matriz bidimensional de unidades funcionais.
1

Cap tulo 1. Introduo ca

sobre a rea ocupada de um processador baseado em 2D-VLIW assim como de programas a que executam sobre esse processador. A soluo encontrada para a arquitetura distribuir ca e registradores ao longo de uma matriz de unidades funcionais de maneira a reduzir o nmero u de acessos ao banco de registradores globais, alm de restringir a interligao entre essas e ca unidades. No caso do tamanho do programa, prope-se uma tcnica de codicao de o e ca instrues que extrai padres das instrues e mantm esses padres em uma memria co o co e o o cache especial, denominada cache de padres. o Quando comparada com os processadores dispon veis atualmente que adotam mlu tiplos ncleos de processamento, a arquitetura apresentada nesta Tese pode ser vista como u uma unidade bsica desses processadores. Dessa forma, uma viso de alto n revela a a vel um processador com mltiplos ncleos ou elementos de processamento enquanto que uma u u viso mais detalhada revela que cada elemento de processamento composto por uma maa e triz de unidades funcionais. Essa uma abordagem direta para explorao do paralelismo e ca com diferentes granularidades. No n da matriz de unidades funcionais pode-se explorar vel o paralelismo em n de instrues. No n dos elementos de processamento existe a vel co vel possibilidade de explorar um paralelismo de granularidade mais grossa, por exemplo, em n de processos. vel Em suma, esta Tese procura apresentar solues para algumas das questes apreco o sentadas e discutidas anteriormente. Essas solues esto reunidas em uma arquitetura co a de processador denominada 2D-VLIW. Dentre as contribuies desta Tese, pode-se citar as seguintes: co A concepo de um novo modelo de execuo que considera a geometria do programa ca ca e, atravs de um grafo de dependncias de operaes, combina esse grafo sobre a e e co organizao dos elementos da arquitetura; ca A proposio de uma organizao do hardware que explora o paralelismo existente ca ca nos programas e, ao mesmo tempo, propicia a escalabilidade da arquitetura;

O projeto e implementao de algoritmos para gerao de cdigo que manipulam ca ca o as operaes de um programa de maneira global e preparam essas operaes para co co serem executadas sobre o hardware 2D-VLIW;

1.2. Organizao da Tese ca

1.2

Organizao da Tese ca
O texto desta Tese est organizado em cinco cap a tulos que fornecem os conceitos

e pressupostos metodolgicos para o entendimento completo do trabalho. Os pargrafos o a a seguir detalham cada um desses cap tulos. O Cap tulo 2 apresenta os conceitos que sero considerados ao longo da Tese. a Ademais, relata as pesquisas relacionadas e procura estabelecer uma comparao entre ca essas pesquisas com vista a tornar evidente a existncia de lacunas na rea e a possibilidade e a de desenvolvimento de novos trabalhos. O Cap tulo 3 descreve os elementos que compem a arquitetura 2D-VLIW. O o cap tulo apresenta a arquitetura 2D-VLIW a partir de uma viso de alto n para um a vel detalhamento dos elementos da arquitetura. Alm disso, h uma preocupao em relatar e a ca como operaes de um programa so executadas sobre a arquitetura atravs de seu modelo co a e de execuo. ca O Cap tulo 4 apresenta as questes envolvendo a gerao de cdigo na arquitetura o ca o 2D-VLIW. H nfase na descrio das atividades de escalonamento de instrues, alocao ae ca co ca de registradores e codicao de instrues, alm da justicativa sobre a adoo do comca co e ca pilador Trimaran como infraestrutura bsica para gerao de cdigo na arquitetura 2Da ca o VLIW. A escolha dessas atividades se d em virtude do impacto que exercem sobre o dea sempenho dos programas. Nesse sentido, dadas as particularidades inerentes ` arquitetura a 2D-VLIW, essas atividades fazem uso de tcnicas inovadoras e proporcionam resultados e bastante interessantes que podem servir de motivao para adoo em processadores com ca ca caracter sticas similares a 2D-VLIW. Experimentos envolvendo caracter sticas da arquitetura 2D-VLIW so descritos no a Cap tulo 5. Esse cap tulo detalha os experimentos realizados e, principalmente, justica e discute os resultados obtidos. Seguindo o que foi apresentado nos cap tulos anteriores, os experimentos so direcionados ` avaliao do desempenho da arquitetura atravs de a a ca e seu modelo de execuo e na comparao desse desempenho com uma arquitetura de ca ca processador com o mesmo nmero de unidades funcionais. Outro grupo de experimentos u foca a ecincia das tcnicas implementadas para geraao de cdigo. Em especial, procurae e c o se mostrar os ganhos obtidos com um algoritmo de escalonamento proposto exclusivamente

Cap tulo 1. Introduo ca

para a arquitetura 2D-VLIW em contraposio a um algoritmo utilizado por arquiteturas ca de processadores em geral. H tambm experimentos que avaliam, estaticamente, a tcnica a e e de codicao de instrues mostrando os ganhos em termos da reduo no tamanho dos ca co ca programas. Ao longo de seu desenvolvimento, este trabalho tem se caracterizado como uma proposta que abre novas oportunidades de pesquisa para diversos problemas relacionados ao projeto de processadores. O Cap tulo 6 conclui sobre o que foi realizado durante o desenvolvimento deste trabalho e relata as contribuies que foram alcanadas. As co c publicaes conseguidas com esta Tese so apresentadas e, ao nal, sugere-se a extenso co a a desta proposta atravs de vrios projetos que podem ser realizados como trabalhos futuros. e a

Cap tulo 2 Trabalhos Relacionados


O aumento da disponibilidade de transistores a um custo cada vez mais reduzido tem motivado o acrscimo de elementos de hardware nos processadores atuais. Com e o advento da computao recongurvel e, mais recentemente, das arquiteturas com ca a mltiplos ncleos, essa adio de recursos atravs de circuitos somadores, subtratores, u u ca e barramentos e memrias tem sido ainda mais evidente. Diante desse contexto, este o cap tulo revisa a literatura da rea apresentando um conjunto de trabalhos que denem a novos conceitos, algoritmos e tcnicas que propiciam o uso dessa multiplicidade de recursos e na tentativa de maximizar o desempenho na execuo de programas. As propostas aqui ca apresentadas foram escolhidas tendo como base a proximidade de caracter sticas com a arquitetura 2D-VLIW.

2.1

Denio de Parmetros para Anlise ca a a


Um dos problemas comumente enfrentados na comparao entre diferentes arca

quiteturas de processadores reside na grande quantidade de variveis (caracter a sticas) existentes e que podem ser levadas em considerao. Alguns exemplos dessas variveis ca a so: conjunto de instrues, modelos de execuo, granularidade, caracter a co ca sticas de acesso ` memria, nmero de unidades funcionais (UFs), nmero e tamanho dos registradores, a o u u rede de interconexo, entre outros. a Diante de tantas variveis, imprescind determinar, claramente, quais devem a e vel ser usadas visando relacionar diferentes trabalhos. Considerando que h similaridade a 7

Cap tulo 2. Trabalhos Relacionados

entre caracter sticas de outros trabalhos e a proposta presente nesta Tese, a descrio dos ca trabalhos da rea apresentados a seguir foi embasada em cinco caracter a sticas principais: Organizao Arquitetural. Esta caracter ca stica tem sido um fator preponderante para o avano e mudanas em muitos projetos de arquitetura de processadores c c apresentados nos ultimos anos. O intuito aqui apresentar informaes quantitativas e co considerando: nmero de UFs, nmero e tamanho dos registradores, quantidade e u u tamanho de memrias caches, buers, entre outros. o Topologia de Interconexo. Esta caracter a stica diz respeito ` topologia e dea sempenho da rede de interconexo adotada para interligar os elementos de procesa samento. Modelo de Execuo. O foco aqui mostrar como uma operao executada no ca e ca e processador e quais recursos so utilizados em tempo de execuo. a ca Gerao de Cdigo. Todo processador deve oferecer uma interface, atravs da ca o e qual o cdigo de um programa pode utilizar os recursos de hardware em tempo o de execuo. ca No entanto, para que um programa possa utilizar tais recursos,

ferramentas de compilao so necessrias para traduzir programas em seqncias ca a a ue de cdigo que sejam intelig o veis pelo hardware. Essas ferramentas podem ser desde infraestruturas de compilao que geram cdigo binrio a partir de um programa ca o a em linguagem de alto n vel, at algoritmos para alocao de recursos, otimizaes e ca co de cdigo, maximizao de operaes paralelas. o ca co Desempenho e Implementao. O intuito aqui apresentar informaes sobre ca e co o desempenho da arquitetura, experimentos e implementaes realizadas em hardco ware. Granularidade do paralelismo. A granularidade do paralelismo indica se uma arquitetura procura melhorar o desempenho atravs do paralelismo de instrues e co (granularidade na), linhas de execuo e/ou processos (granularidade grossa). ca Alm da problemtica envolvendo a denio de critrios para avaliao de are a ca e ca quiteturas de processadores diferentes, uma outra diculdade reside na discrepncia de a

2.2. Propostas de Arquiteturas

termos e, at mesmo, alguns conceitos usados pelas arquiteturas. Nesse sentido, deve-se e considerar as denies a seguir para os trabalhos discutidos na Seo 2.2. co ca Denio 1 Uma operaao representa uma funo que deve ser executada pelo hardca c ca ware. Uma operao engloba tambm os operandos (parmetros) da funo assim como ca e a ca o local onde os resultados devem ser armazenados. Exemplos de operaes so add, sub, co a mul e and. Denio 2 Uma instruao armazenada na memria como um conjunto composto ca c e o por uma ou mais operaes. co Denio 3 A unidade funcional a unidade responsvel pela execuo de uma ca e a ca operao. Possui multiplexadores para selecionar as entradas e sa ca das, unidade de lgica o e aritmtica e unidade de controle. Pode ser especializada para uma classe de operaes. e co Denio 4 Um elemento de processamento formado por um processador com ca e capacidade para executar todo o conjunto de instrues de uma arquitetura. De maneira co geral, um elemento de processamento possui estgios de pipeline, interface de acesso a a ` memria, unidade de lgica e aritmtica e registradores. o o e

2.2

Propostas de Arquiteturas
Esta seo apresenta as caracter ca sticas de algumas arquiteturas de processadores

que utilizam mltiplas unidades funcionais e/ou elementos de processamento na tentativa u de explorar o paralelismo de instrues existente em programas. Existe uma grande co quantidade de propostas de arquiteturas com mltiplas unidades funcionais dispon u veis na literatura. Nesse sentido, as propostas aqui apresentadas foram escolhidas tendo como base as similaridades de caracter sticas com o objeto de estudo desta Tese e a disponibilidade de informaes. co

2.2.1

Arquitetura RAW
A arquitetura RAW [84] um projeto de pesquisa iniciado no Massachussets e

Institute of Technology - MIT em meados da dcada de 90, cuja caracter e stica principal

10

Cap tulo 2. Trabalhos Relacionados

reside na organizao de clulas de computao visando a execuo de operaes. Cada ca e ca ` ca co clula possui memria para instrues e dados, um elemento de processamento (EP), e o co registradores, dispositivos de lgica congurvel e um roteador que suporta roteamento o a dinmico e esttico. Atravs da lgica congurvel, operaes espec a a e o a co cas e de vrios tipos a de granularidade podem ser executadas. O modelo de execuo RAW segue o modelo ca bsico de execuo de um processador RISC com pipelines (por exemplo, o processador a ca MIPS). A diferena bsica que RAW possui uma matriz de elementos de processamento c a e e, com isso, existem mais possibilidades de explorao do paralelismo. ca A Figura 2.1(a) apresenta a organizao da arquitetura disposta em uma matriz M ca com 44 clulas de computao. Cada clula mi atua como um processador independente e ca e e pode comunicar com qualquer outra clula mj , i = j, da matriz atravs do roteamento e e dinmico de pacotes de dados. Na Figura 2.1(b) pode-se observar os componentes de uma a clula de processamento assim como o sistema de interconexo. A Figura 2.1(c) detalha e a os estgios do pipeline no processador de uma clula. a e A gerao de cdigo para execuo na arquitetura RAW ca a cargo do compilador ca o ca RAWCC [52]. Esse compilador baseado na infraestrutura de compilao SUIF e possui e ca trs fases principais: otimizaes independentes de mquina, escalonamento e alocao de e co a ca registradores, gerao de cdigo e roteamento. Dentre essas trs fases, a etapa de alocao ca o e ca de recursos (escalonamento) merece ateno especial em virtude de seu impacto sobre a ca utilizao dos recursos dispon ca veis e a ecincia no desempenho do programa. De maneira e geral, o escalonamento de instrues na arquitetura RAW consiste em atribuir operaes, co co dentro de blocos bsicos, para clulas de processamento considerando a conexo dessa a e a clula para outras clulas que a operao mantm dependncia. O compilador RAWCC e e ca e e utiliza um algoritmo de list scheduling [34, 40] estendido com heur sticas para calcular a latncia de comunicao para escalonar as instrues. e ca co Os autores [81] relatam a implementao de um prottipo RAW com 16 clulas ca o e de processamento utilizando, cada uma, tecnologia de 180nm e com uma freqncia ue de 450MHz. O desempenho dessa implementao foi comparado com um processador ca Pentium III com 600MHz e tambm fabricado com tecnologia de 180nm. As capacidades e de memria e registradores de ambas arquiteturas sob comparao so equivalentes. Nos o ca a

2.2. Propostas de Arquiteturas

11

clula EP RT

(a) Matriz de clulas. EP=Elemento de Processamento; RT=Roteador. e


PC Cache Mem. Dados Inst. Processador

Roteador/

Switch

(b) Detalhamento de uma clula. e


Ex M1 I DI Reg A Ex1 M2 TL Ex2 TV Ex3 Ex4 Reg

(c) Estgios de pipeline de um EP. Os trs estgios iniciais (busca da instruao, decodicaao e leitura a e a c c dos registradores) so comuns para todas as classes de operaoes. a c

Figura 2.1: Arquitetura RAW.

12

Cap tulo 2. Trabalhos Relacionados

experimentos realizados com aplicaes cient co cas voltadas para clculos com matrizes a densas, RAW alcanou um speedup variando de 1.3 6.4 sobre o processador Pentium III. c

2.2.2

Arquitetura TRIPS
A Arquitetura TRIPS (denominada previamente GPA) uma instncia do cone a

junto de instrues EDGE [13, 64]. Essa arquitetura foi projetada com o pressuposto co de alcanar maiores n c veis de ILP que arquiteturas convencionais atravs de um novo e modelo de execuo e arranjo dos elementos de hardware. A base da arquitetura TRIPS ca consiste em uma matriz M , com 4 4 elementos de processamento, em que cada elemento elementos so conectados atravs de uma rede dedicada a m de transmitir operandos e a e dados. O controle dos elementos de processamento feito por uma linha de execuo1 e ca que controla o mapeamento de blocos de operaes para esses elementos. De maneira co similiar `s arquiteturas VLIW, um compilador utilizado para detectar paralelismo e a e escalonar as instrues para a matriz M , de forma que o grafo de uxo de dados pode co ser mapeado inteiramente na arquitetura. A Figura 2.2 apresenta uma viso geral da a arquitetura TRIPS. Na Figura 2.2(a), a memria cache de instrues, CacheI, responsvel por o co e a armazenar as operaes que sero enviadas para os elementos da matriz M enquanto co a que a cache de dados, CacheD, mantm os operandos dessas operaes. H uma unidade e co a funcional denominada bloco de controle que determina qual grupo de operaes deve ser co mapeado para a matriz e quando tal grupo termina a execuo. Na Figura 2.2(b), cada ca elemento da matriz possui uma ULA, portas de entrada para os operandos, buers de operandos e operaes e um roteador que envia os valores de sa para portas espec co da cas. Cada ULA possui 8 frames que armazenam operaes de um bloco de operaes mapeado co co sobre a matriz. A arquitetura possui suporte para especulao de blocos e permite que ca at 8 blocos (1024 operaes= 8 blocos 8 frames 16 EPs) sejam trazidos para a matriz. e co
1

mi , 1 i 16 possui uma memria de instruo e uma unidade de execuo. Esses o ca ca

Do ingls: thread. e

2.2. Propostas de Arquiteturas

13

031

3263

6495

96127

Banco de Reg.
Cache I0 Cache I1 Cache D0

Cache D1

Cache I2

Cache D2

Cache I3

Cache D3

Bloco de Controle
(a) Viso geral da matriz TRIPS. a
Controle
Ope Operandos Frame 7 .
. .

Frame 1 Frame 0

Roteador

(b) Detalhamento de um elemento de processamento.

Figura 2.2: Arquitetura TRIPS.

14

Cap tulo 2. Trabalhos Relacionados

No modelo de execuo TRIPS, o compilador o responsvel por organizar as ca e a operaes em blocos. Com isso, um bloco de operaes pode ser um bloco bsico2 [3], um co co a hiperbloco3 [53] ou um trao de execuo [3, 62]. Os dados presentes em um bloco so c ca a de trs tipos: (1) dados de sa e da, que so valores criados pelo bloco e usados por grupos a subseqentes; (2) temporrios, que so valores produzidos e consumidos dentro do bloco u a a e (3) dados de entrada, que so valores produzidos pelos blocos anteriores na seqncia a ue de execuo. ca A execuo de um bloco de operaes acontece aps a busca do bloco e o mapeaca co o mento dessas operaes sobre a matriz. Cada operao armazenada em uma entrada do co ca e EP. Aps isso, uma operao move l as entradas do bloco e repassa os operandos para o ca e os EPs que esto armazenando as operaes. A medida que uma operao termina sua a co ca operao, os resultados so enviados para outros EPs que mantm operaes consumidoras ca a e co desses resultados ou para registradores, caso os resultados sejam dados de sa do grupo. da O destino do resultado codicado explicitamente na operao. Cada destino referido e ca e pelo nome do EP de maneira que o resultado possa ser enviado diretamente para a operao consumidora. Uma operao pode armazenar informaes de localizao de ca ca co ca at 3 outras operaes consumidoras. Caso o nmero de consumidores seja maior que 3, e co u uma operao especial, denominada split, inserida no escalonamento a m de permitir ca e o envio dos resultados para todos os destinos. A arquitetura TRIPS utiliza o compilador Scale [13] para a gerao de cdigo. ca o Esse compilador executa quatro tipos de otimizaes: co Formao de hiperblocos: hiperblocos so utilizados pelo fato de agruparem mais ca a operaes do que blocos bsicos comuns e transformarem algumas dependncias de co a e uxo de controle em uxo de dados atravs da insero de predicados. e ca Execuo predicada: predicados possibilitam que ambos os lados de um bloco ca de deciso (if-else) sejam avaliados simultaneamente, embora, apenas o lado que foi a
Blocos de operaoes cuja principal caracter c stica que a execuao inicia pela primeira operaao do e c c bloco e o sa ocorre apenas pela ultima operaao do bloco. da c 3 Um hiperbloco um conjunto de blocos bsicos com predicados. Nesse conjunto, o controle pode e a iniciar apenas na primeira operaao mas, ao contrrio do bloco bsico, pode sair por mais de um local. c a a Hiperblocos so formados a partir de tcnicas de if-conversion. a e
2

2.2. Propostas de Arquiteturas

15

tomado pelo bloco de deciso seja efetivamente executado. Essa otimizao aumenta a ca consideravelmente a quantidade de operaes por ciclo. co Adequao de hiperblocos: essa otimizao averigua o uso de recursos por parte ca ca das operaes de um hiperbloco e, se necessrio, divide o hiperbloco at que o nmero co a e u de operaes restantes no ultrapasse 128 (8 frames 16 EPs) sendo, no mximo, co a a

32 operaes de carregamento ou armazenamento na memria, leitura mxima de co o a 32 registradores e escrita em 32 registradores.

Alocao de recursos f ca sicos: essa otimizao mapeia operaes para EPs e ca co para operao(es) consumidora(s). Atravs de heur ca o e sticas implementadas junto ao escalonador [21, 63], operaes independentes so alocadas em diferentes EPs co a

insere operaes de cpia quando uma operao produtora deve rotear seu resultado co o ca

para aumentar a concorrncia. Operaes dependentes so alocadas em elementos e co a prximos a m de minimizar o roteamento e atrasos de comunicao. o ca Os autores relatam experimentos [69] onde foram consideradas variaes de 2 co

mentos foi avaliar a escalabilidade e os ganhos de desempenho sob diferentes conguraes co da arquitetura. O melhor resultado foi de 15 operaes por ciclo alcanado apenas pelo co c execuo. ca programa mgrid com uma matriz de 8 8 elementos de processamento e uma linha de

2, 4 4, 8 4, e 8 8 no tamanho da matriz da arquitetura TRIPS. O intuito dos experi-

2.2.3

Arquitetura ADRES
ADRES [56,58] uma arquitetura recongurvel de granularidade grossa cujo foco e a

principal se concentra na melhoria de desempenho de aplicaoes para sistemas embarcados. c A arquitetura composta por um processador VLIW, com L unidades funcionais, acoplado e com uma matriz M de unidades funcionais recongurveis. a As unidades funcionais possuem bancos de registradores dedicados que so usados para armazenar valores ina termedirios. Assim como arquiteturas VLIW tradicionais, o processador VLIW usado a por ADRES possui um conjunto de unidades funcionais e um banco de registradores que fornece operandos e recebe os resultados dessas unidades funcionais. Pelo fato de ser uma

16

Cap tulo 2. Trabalhos Relacionados

arquitetura recongurvel, o nmero de unidades funcionais um parmetro que depende a u e a da aplicao que ser executada. A Figura 2.3 mostra duas vises da arquitetura ADRES: ca a o uma viso a partir do processador VLIW e do sistema de interconexo entre as unidades a a funcionais, Figura 2.3(a), e uma viso detalhada de uma unidade funcional, Figura 2.3(b). a
Processador VLIW Banco de Registradores Globais

UF Matriz de UFs UF RT

UF

UF

UF

UF

UF

UF

UF

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

UF RT

(a) Viso geral da arquitetura ADRES. UF=Unidade Funcional. RT=Registrador Temporrio. a a

Predicado Memria de Configurao Buffer

Operando1

Operando2

Unidade Funcional Banco de Registradores

Registrador

Registrador

Registrador

(b) Detalhamento de uma unidade funcional.

Figura 2.3: Arquitetura ADRES. Na Figura 2.3(b) poss observar que uma unidade funcional prov suporte a e vel e operaes predicadas, a m de eliminar poss co veis dependncias de uxo de controle. Os e

2.2. Propostas de Arquiteturas

17

resultados de uma UF podem ir diretamente para outras unidades funcionais atravs dos e registradores temporrios. A memria de congurao funciona como uma memria cache a o ca o para conguraes que foram e/ou podem ser utilizadas pela UF. co A gerao de cdigo para a arquitetura est a cargo do compilador DRESC [57, ca o a 58]. Alm de reconhecer os recursos dispon e veis no hardware, uma das principais funes co desse compilador consiste em identicar ncleos de laos que consomem a maior parte u c do tempo de processamento do programa e mapear tais ncleos sobre a matriz de UFs u recongurveis. Para tanto, o compilador utiliza um algoritmo conhecido como modulo a scheduling [67] a m de minimizar o intervalo entre iteraes de um lao. O compilador co c representa os recursos existentes na arquitetura atravs de um grafo, onde os vrtices so e e a os recursos e as arestas so as interconexes entre esses recursos. a o Um fato interessante a observar nesta arquitetura que o processador VLIW e e a matriz de unidades funcionais trabalham independentemente de forma que o controle do programa pode ser trocado entre esses dois conjuntos de elementos. Os experimentos que avaliaram o desempenho da arquitetura ADRES utilizaram programas mult midias e de telecomunicaes compilados utilizando o compilador DRESC. O nmero de operaes co u co por ciclo foi de 19 at 42 utilizando uma matriz 88 de UFs. A freqncia do processador e ue assim como o nmero de registradores e a congurao de memria no foram mencionados u ca o a pelos autores.

2.2.4

Arquitetura WaveScalar
WaveScalar [78,79] um modelo de execuo e um conjunto de instrues de uxo e ca co

de dados. A diferena bsica entre essa abordagem e propostas de arquiteturas de uxo de c a dados anteriores que WaveScalar consegue manipular semnticas de memria baseadas e a o no modelo de execuo von-Neumman em uma mquina de uxo de dados. Isso poss ca a e vel pois WaveScalar possui uma implementao descentralizada da tcnica token-store que ca e garante a coerncia da execuo das operaes de memria. e ca co o Um processador baseado no modelo WaveScalar chamado WaveCache [80]. A e Figura 2.4 apresenta as principais caracter sticas existentes em um WaveCache.

18

Cap tulo 2. Trabalhos Relacionados

Domnio Pod EP

Rede de Interconexo

Cluster

Buffer de Armazenamento

(a) Cluster de elementos de processamento.


Domnio Pod EP

Buffer de Armazenamento

Rede de Interconexo

(b) Sistema de interconexo dentro de um cluster. a

Figura 2.4: Arquitetura WaveScalar.

2.2. Propostas de Arquiteturas

19

O WaveCache possui uma matriz M de elementos de processamento que so a utilizados pelas operaes de um programa. O WaveCache , na realidade, um processador co e que possui mltiplos elementos de processamento EPs) organizados hierarquicamente em u clusters para reduo de custos de comunicao dos operandos, Figura 2.4(a). O n ca ca vel mais alto na hierarquia WaveCache conhecido como cluster de processamento. Cada e cluster possui quatro dom nios, cada dom nio possui oito EPs. Dois EPs formam um Pod. Os EPs em um Pod compartilham lgica de bypassing com o intuito de facilitar a o execuo de operaes com dependncia de dados. A Figura 2.4(b) apresenta os detalhes ca co e da interligao entre os elementos desses diferentes n ca veis da hierarquia. Adicionalmente, cada cluster possui uma memria cache de dados, interfaces para operaes de memria e o co o roteadores para comunicao com outros clusters. Cada EP possui uma unidade funcional, ca buers para armazenar operandos e circuitos para controlar e executar operaes. Todos co esses recursos esto distribu a dos ao longo de um pipeline de cinco estgios. a A arquitetura WaveScalar considera um programa como um conjunto de grafos de uxo de dados que devem ser executados obedecendo as relaes de dependncia co e entre as operaes. Diferente de arquiteturas orientadas a um contador de programa, co uma operao WaveScalar envia seus resultados para operaes consumidoras e essas ca co executam assim que todos os seus operandos estejam dispon veis nas entradas de um EP. As operaes WaveScalar so agrupadas em blocos chamados Waves que, por sua co a vez, so mapeados para os EPs do WaveCache. Assim que todas as operaes de uma a co Wave terminam sua execuo, uma nova Wave carregada sobre os EPs. Para garantir a ca e semntica correta de execuo das operaes, principalmente no caso de iteraes de laos a ca co co c e operaes de desvio, WaveScalar usa operaes especiais, funes e que mantm co co co e a coerncia dos dados e preservam a ordem de execuo correta em caso de desvios no e ca programa. No h informaes sobre a adoo ou implementao de um compilador a a co ca ca espec co para WaveScalar. Em [59,60], os autores mencionam um conjunto de algoritmos para escalonamento de instrues. co Experimentos com um simulador da arquitetura WaveScalar [80] consideraram aplicaes com um unica linha de execuo e tambm com vrias linhas de execuo. co ca e a ca A comparao foi realizada com um processador DEC Alpha EV7. Em [80], os autores ca

20

Cap tulo 2. Trabalhos Relacionados

no mencionaram informaes sobre a congurao de hardware das arquiteturas sob a co ca comparao e nem o compilador utilizado. Para aplicaes com mltiplas linhas de ca co u execuo, o desempenho de WaveScalar foi at 9 vezes melhor comparado ` arquitetura ca e a Alpha.

2.2.5

Arquitetura Matrix
A arquitetura Matrix [61] uma arquitetura recongurvel que suporta congue a

rao e distribuio dos recursos de hardware atravs das operaes de um programa. A ca ca e co grande motivao para arquiteturas como Matrix possibilitar a unicao de recursos ca e ca para armazenamento e controle de dados e operaes. A arquitetura formada por co e uma matriz de unidades funcionais de 8 bits interconectadas atravs de um sistema de e interconexo recongurvel. Cada unidade funcional possui uma memria de 256 bytes, a a o ULA, unidade de multiplicao e uma rede de interconexo hierrquica. A Figura 2.5 ca a a apresenta a viso geral da arquitetura Matrix e os principais recursos da uma unidade a funcional. A arquitetura utiliza pipelines, no n das unidades funcionais, para a execuo vel ca de operaes. Os autores argumentam que um modelo de execuo simples, baseado co ca em pipelines, junto com uma rede recongurvel que oferece muitas possibilidades de a interconexo permite construir modelos de execuo ainda mais complexos como arrays a ca sistlicos, arquiteturas VLIW e modelos SIMD. o Uma implementao dessa arquitetura foi realizada em um processo de 0.5 CMOS. ca Nessa implementao, os autores relatam que uma conguraao com 100 unidades funca c cionais operando a uma freqncia de 100MHz, alcanou um desempenho de pico de 1010 ue c operaes (8 bits) por segundo. Os autores no informaram detalhes sobre ferramentas co a para gerao de cdigo na arquitetura Matrix. ca o

2.2.6

Modelo Arquitetural EPIC


Diante das limitaes de escalabilidade e complexidade presentes em processaco

dores modernos que utilizam modelos de execuo superescalar ou VLIW, a abordagem ca EPIC [70,71] prope um novo paradigma para a construo de processadores que exploram o ca

2.2. Propostas de Arquiteturas

21

UF

UF

UF

UF

UF

UF

UF

UF

UF

UF

UF

UF

UF

UF

UF

UF

UF

UF

UF

UF

UF

UF

UF

UF

UF

(a) Matriz de UFs e suas interconexes. o


Redes 2 e 3 Dados/ Controle Redes 1, 2 e 3 Operandos/ Endereos

Lgica de Controle

UF
(ULA, Registradores)

Rede de nvel 1

(b) Detalhe da UF e a hierarquia de interconexes. o

Figura 2.5: Arquitetura Matrix. paralelismo em n das operaes de um programa. EPIC comumente denida como vel co e uma classe de arquiteturas de processadores que prope o uso de tcnicas avanadas de o e c otimizao de cdigo junto com elementos de hardware que suportam essas otimizaes ca o co de cdigo. Dois exemplos de arquiteturas baseadas em EPIC so: a arquitetura Intel o a IA-64 [27] e HPL-PD [47]. Para os propsitos deste cap o tulo, interessante destacar as e caracter sticas do processador HPL-PD em virtude de ser um projeto com uma gama de informaes dispon co veis e implementa grande parte dos conceitos EPIC. HPL-PD [46] um processador parametrizvel que implementa diversos conceitos e a do modelo EPIC. Assim como qualquer processador que segue a losoa EPIC, HPL-

22

Cap tulo 2. Trabalhos Relacionados

PD adota tcnicas de compilao para extrair melhor desempenho das aplicaes. A e ca co arquitetura possui um conjunto de unidades funcionais especializadas em: operaes de co memria, operaes envolvendo inteiros e, por m, operaes de ponto utuante. Bancos o co co de registradores so os responsveis pela interconexo dessas unidades funcionais. HPLa a a PD possui dois modos de execuo: superescalar e EPIC. No primeiro modo, operaes so ca co a buscadas na memria e so escalonadas dinamicamente para as unidades funcionais. No o a segundo modo, vrias operaes so organizadas em instrues. Esse modo possibilita que a co a co operaes com dependncias de dados (escrita-leitura) sejam codicadas na mesma insco e truo. Ainda sobre esse modo de execuo, o processador HPL-PD busca uma instruo ca ca ca na memria e executa suas operaes respeitando as dependncias de dados existentes. o co e Independente do modo de execuo, o processamento de uma operao HPL-PD ca ca consiste basicamente: 1) na leitura dos operandos da operao; 2) na execuo da operao ca ca ca propriamente dita e, nalmente, 3) na escrita dos resultados na memria ou no registrador o de destino. A Figura 2.6 apresenta os principais componentes da arquitetura HPL-PD.

Unidade de Prbusca

Unidade de Busca

Decodificao e Controle

Registradores de Predicado

Registradores de Desvio

Registradores de
Propsito Geral

Registradores de
Ponto Flutuante

Registradores de Controle

Unidade de Desvios

Unidade de Inteiros

Unidade de Ponto Flutuante

Unidade de Load/Store

Figura 2.6: Viso geral da arquitetura HPL-PD. a

2.2. Propostas de Arquiteturas

23

A gerao de cdigo para o processor HPL-PD est a cargo do compilador Trimaca o a ran [16]. Dessa forma, o compilador Trimaran recebe uma descrio, especicada atravs ca e da linguagem HMDES [37], da arquitetura HPL-PD a ser adotada e simula o cdigo do o programa considerando as caracter sticas presentes nessa especicao. ca

2.2.7

Arquitetura PipeRench
A arquitetura PipeRench [17,35,72,73] procura resolver limitaes relacionadas ao co

reuso de pipelines de hardware atravs da recongurao dinmica e de uma abstrao e ca a ca denominada hardware virtual. O modelo de hardware virtual adotado por PipeRench e formado por um pipeline com uma determinada quantidade de estgios (stripes). Cada a estgio consiste de 16 elementos de processamento e uma rede de interconexo para a a possibilitar a comunicao entre EPs. Cada EP possui uma unidade de lgica e aritmtica, ca o e 8 registradores e utiliza 42 bits para sua congurao. Logo, com 16 EPs por estgio ca a so necessrios 672 bits para recongurar cada estgio da arquitetura. Uma viso mais a a a a detalhada da organizao dos estgios e a interconexo entre EPs pode ser observada na ca a a Figura 2.7.

Fila de entrada 128 bits EP EP

Stripe 0 Stripe 1 Stripe 2 Stripe 3

EP

EP

EP

EP

EP

EP

EP

EP

EP

EP

EP 672 bits

EP

EP

EP 128 bits Fila de sada

128 bits

Memria de Config.
Estado de R0

Figura 2.7: Diagrama de blocos da arquitetura PipeRench.

24

Cap tulo 2. Trabalhos Relacionados

O processo de compilao de um programa para o hardware PipeRench ocorre da ca seguinte forma: 1) o compilador PipeRench [35] toma uma descrio da arquitetura virtual ca que inclui o nmero de EPs por estgio, nmero de registradores por EP, entre outros; 2) o u a u compilador realiza o parsing do programa escrito em uma linguagem intermediria de uxo a de dados; 3) depois do parsing, o compilador desenrola laos e determina a largura de os c e a quantidade de lgica requerida por cada operao; 4) aps isso, decompe operadores o ca o o de alto n e aqueles que excedem o tempo de ciclo; 5) um passo de recomposio pode vel ca ser necessrio se as decomposies introduzem inecincias. A recomposio usa padres a co e ca o para encontrar subgrafos que podem ser mapeados nos mdulos j parametrizados. o a A m de demonstrar a factibilidade dessa arquitetura em uma implementao real, ca Schmit e outros [73] descrevem todos os passos realizados na implementao da arquitetura ca PipeRench utilizando tecnologia CMOS [66] em um processo de 0.18, rea total do die a disso, Goldstein e outros [35] apresentam experimentos de desempenho com 9 ncleos de u programas em que um prottipo PipeRench com freqncia de 100MHz, EPs de 8 bits e o ue 8 registradores por EP alcanou speedup de at 189, 7 sobre uma arquitetura UltraSparc c e II de 300MHz. de 7, 3 7, 6 mm2 , 3, 65 milhes de transistores e uma freqncia de 120MHz. Alm o ue e

2.2.8

Outras Propostas
Dado o grande avano da rea de arquitetura de computadores, fcil imaginar c a e a

que existe uma variedade de trabalhos que propem novas arquiteturas de processadores. o Esta seo apresenta algumas propostas de arquiteturas que, embora no estejam to ca a a relacionadas diretamente com a arquitetura 2D-VLIW como aquelas apresentadas nas Subsees 2.2.1- 2.2.7, possuem algumas particularidades que serviram de base para o co advento de arquiteturas mais inovadoras. Como j bem conhecido, o acrscimo de mltiplos elementos de processamento ae e u junto ao hardware a m de aproveitar o paralelismo existente entre as operaes de um co programa no algo recente. O surgimento de tcnicas superscalares, mquinas vetoriais a e e a e arquiteturas de uxo de dados datam dos idos dos anos 60 e 70. No in dos anos 80, cio Fisher [31] introduziu o conceito de mquina VLIW e apresentou a arquitetura ELI-52. a

2.2. Propostas de Arquiteturas

25

Essa arquitetura possui 16 UFs, cada uma contendo uma ULA e armazenamento local. Para fornecer operaes para essas UFs, a mquina ELI-52 busca na memria instrues co a o co longas com mais de 500 bits. Nessa arquitetura, a deteco do paralelismo e a garantia ca da coerncia da execuo do cdigo ca a cargo do compilador Bulldog. e ca o No nal dos anos 80, pesquisas a respeito de arquiteturas com capacidade de recongurao comearam a receber maior ateno pela comunidade cient ca c ca ca da rea. a Nessas arquiteturas, o objetivo repassar determinadas operaes para serem processadas e co por um hardware recongurvel. Por recongurvel, deve-se entender a capacidade de a a reprogramar o hardware, via software, de maneira a especializ-lo para um processamento a espec co. A arquitetura PRISC [68] um exemplo bem conhecido de arquitetura recone gurvel. PRISC estende o conjunto de instrues RISC atravs de operaes espec a co e co cas que so implementadas em Unidades Funcionais Programveis em hardware. Essas UFPs a a so adicionadas ` microarquitetura de maneira a manter os benef a a cios de alto desempenho das arquiteturas RISC e, ainda, gerar impacto m nimo no tempo de ciclo do processador. PRISC adota rotinas de compilao a m de gerar automaticamente operaes ca co para UFPs. Essas rotinas analisam a complexidade do hardware para determinadas operaes e interagem com ferramentas de s co ntese em hardware para selecionar operaes co que executaro com melhor desempenho se direcionadas para uma UFP. Pelo fato de a serem adicionadas em paralelo com as unidades funcionais j existentes no processador, a essas UFPs estendem a funcionalidade existente na via de dados. PRISC foi inicialmente vislumbrada para acelerar o desempenho de aplicaes de propsito geral que executam co o sobre um hardware de baixo custo. Razdan e Smith [68] relatam speedups da ordem de 22% ao executar programas do benchmark SPECint92 em uma arquitetura MIPS R2000. Um ponto interessante a ser notado na apresentao dessa arquitetura, refere-se ` mudana ca a c semntica nos campos da instruo MIPS a m de suportar o hardware recongurvel a ca a e a ausncia de tcnicas que exploram o paralelismo da aplicao considerando as novas e e ca unidades funcionais. A arquitetura WormHole [8] uma arquitetura dinamicamente recongurvel. e a Mais especicamente, particiona os estgios de recongurao em sub-mdulos de graa ca o nulao na que so colocados na arquitetura a medida que so necessrios. Um dos ca a a a

26

Cap tulo 2. Trabalhos Relacionados

atrativos desta arquitetura est na possibilidade de minimizar o problema de reconguraa co dinmica atravs de um esquema de controle distribu a a e do. Para tanto, WormHole adota o conceito de streams de informaes. Esses streams so compostos por um segmento de co a cabealho que transporta informaes de congurao de cada unidade funcional, e um c co ca segmento de dados, que transporta os operandos. Basicamente, a arquitetura organizada e por uma matriz M = 4 4 unidades funcionais. A medida que um stream propaga pela matriz, as informaes de congurao de uma unidade funcional so retiradas do co ca a cabealho. c Em 2000, um consrcio de companhias ligadas ` area de tecnologia: Sony , o a Toshiba e IBM , anunciaram que modelos de execuo tradicionais no so sucientes ca a a para manter a melhoria de desempenho desejada em face do aumento da complexidade das aplicaes atuais. Esse consrcio de empresas props ento uma nova arquitetura co o o a denominada Cell [45]. Tal arquitetura foi direcionada, inicialmente, para prover o melhor desempenho poss para aplicaes multim vel co dia e jogos. A arquitetura Cell formada e por um processador de propsito geral (PPE) e oito elementos de processamento (SPE). o O PPE a implementao de 64 bits da arquitetura PowerPC , possui memrias cache e ca o de n 1 e n 2 e um pipeline de 23 estgios. Cada SPE possui uma memria interna vel vel a o (256KB) que armazena instrues e dados, um banco de registradores com 128 registraco dores, unidades funcionais para processamento de inteiros, ponto-utuante, operaes de co memria e operaes de desvio. Os SPEs podem executar at duas operaes simultneas o co e co a enquanto que o PPE pode manipular at duas linhas de execuo simultaneamente. No e ca entanto, operaes identicadas como vetoriais, so repassadas `s unidades do mesmo co a a nome e seguem um modelo de execuo SIMD. ca

2.3

Relacionamento entre os Trabalhos da Area


Aps apresentar as propostas de arquiteturas de processadores, pode-se agora o

analis-las conjuntamente sob a tica das caracter a o sticas denidas na Seo 2.1. ca Primeiramente, deve-se destacar a tendncia das propostas com relao ` ore ca a ganizao dos recursos de processamento na forma de matrizes bidimensionais. Essa ca caracter stica s no observada nas arquiteturas HPL-PD e PipeRench. o a e HPL-PD

2.3. Relacionamento entre os Trabalhos da Area

27

aborda a execuo de operaes atravs de unidades funcionais especializadas que se ca co e comunicam atravs de bancos de registradores globais. PipeRench utiliza elementos de e processamento interligados na forma de um pipeline de execuo. As demais arquiteturas, ca de outra forma, possuem algum mecanismo para comunicao entre unidades funcionais ca sem a necessidade de enviar os dados para registradores globais. Como exemplo, as arquiteturas RAW, TRIPS, WaveScalar e Matrix utilizam roteadores e barramentos para estabelecer uma conexo dinmica entre as unidades que executam operaes, enquanto a a co que a arquitetura ADRES faz uso de registradores temporrios, distribu a dos na matriz de unidades funcionais, para possibilitar a comunicao entre duas unidades. ca Com relao ao modelo de execuo, apenas a arquitetura WaveScalar utiliza um ca ca modelo orientado a uxo de dados. Nessa arquitetura, os resultados das operaes so co a enviados diretamente `s operaes consumidoras e essas, por sua vez, executam assim a co que seus operandos esto dispon a veis. RAW e TRIPS, de outra forma, buscam operaes co na memria a cada ciclo de relgio e distribuem essas operaoes sobre os elementos de o o c processamento de acordo com o escalonamento denido pelo compilador. O modelo de execuo da arquitetura Matrix pode ser congurado como: SIMD, MIMD ou VLIW, de ca acordo com as caracter sticas de cada aplicao. Independente do modelo de execuo, ca ca cada unidade funcional dessa arquitetura possui um pipeline de 5 estgios. Na arquitetura a ADRES, a execuo das operaes pode acontecer atravs do processador VLIW ou pelas ca co e unidades funcionais da matriz recongurvel. O que acontece em geral que operaes que a e co fazem parte de laos so mapeadas para a matriz recongurvel enquanto que operaes c a a co fora de laos so executadas pelo processador VLIW. Em se tratando da arquitetura c a HPL-PD, uma nova instruo buscada na memria a cada ciclo e suas operaes so ca e o co a escalonadas para as unidades funcionais. O escalonamento determinado em tempo e de compilao. ca Todos os operandos e resultados so obtidos a partir de bancos de a registradores globais, de maneira que no h uma interconexo direta entre as unidades a a a funcionais HPL-PD. Na arquitetura PipeRench, as operaes so executadas por meio do co a pipeline de EPs. No tocante ` gerao de cdigo, apenas a arquitetura Matrix no apresenta infora ca o a mas sobre algoritmos e/ou ferramentas de compilao para gerao de cdigo. As arquico ca ca o

28

Cap tulo 2. Trabalhos Relacionados

teturas RAW, ADRES, TRIPS e HPL-PD j possuem compiladores espec a cos (RAWCC, DRESC, Scale e Trimaran, respectivamente) para a gerao de cdigo a partir de uma ca o linguagem de alto n vel. As arquiteturas WaveScalar e PipeRench, por outro lado, possuem algoritmos de escalonamento de instrues que, baseados em tcnicas clssicas de co e a escalonamento list scheduling, permitem simular a execuo de um programa considerando ca os recursos existentes na arquitetura alvo. A Tabela 2.1 resume as caracter sticas presentes nas arquiteturas da Seo 2.2. ca E interessante observar que a maioria das arquiteturas apresentadas recorrem a elementos de processamento formados por processadores completos (com pipelines, banco de registradores, memrias cache) para melhorar os n o veis de desempenho dos programas. Alm disso, a maior parte dessas arquiteturas utiliza sistemas de interconexo dinmicos e a a atravs de dispositivos roteadores e comutadores a m de possibilitar a comunicao e ca entre quaisquer unidades de processamento. Por m, deve ser notado que a maioria das propostas adota modelos de execuo onde o software de compilao exerce papel ca ca fundamental. Esse software , muitas vezes, o unico responsvel pela utilizao eciente e a ca dos recursos do hardware e, por conseqncia, tem grande inuncia sobre o desempenho ue e nal de uma aplicao. ca

2.4

Consideraes Finais co
Um dos grandes desaos para arquiteturas que exploram paralelismo em n vel

de instruo relacionar o acrscimo de mais elementos de hardware com os ganhos de ca e e desempenho obtidos pelas aplicaes. Idealmente, esses ganhos devem ser diretamente co proporcionais ao aumento dos elementos de hardware na arquitetura. O modelo de execuo e as otimizaes feitas pelo compilador so cada vez mais importantes para ca co a conseguir tais ganhos de desempenho. Este cap tulo apresentou as principais caracter sticas de projetos de arquiteturas de processadores que utilizam mltiplas unidades para execuo de operaes. A escolha dos u ca co trabalhos apresentados na Seo 2.2 foi motivada pela proximidade de caracter ca sticas com a arquitetura proposta nesta Tese. Um estudo mais detalhado envolvendo a comparao ca entre arquiteturas que exploram paralelismo em n de instruo pode ser encontrado vel ca

2.4. Consideraes Finais co

29

em [24, 39]. Avaliaes e comparaes envolvendo caracter co co sticas gerais e o desempenho de uma gama de arquiteturas de processadores recongurveis podem ser encontrados a em [7, 20]. Apesar das diversas caracter sticas, existem ainda algumas lacunas a serem preenchidas. Exemplos dessas lacunas so: a ausncia de topologias de interconexo a e a que capturam a topologia de DAGs e tcnicas de codicao de instrues que adotam e ca co novas caches para minimizar a latncia e reduzir a rea ocupada pela regio de cdigo do e a a o programa. O prximo cap o tulo apresenta as caracter sticas da arquitetura 2D-VLIW bem como o paradigma de execuo adotado por essa abordagem. ca

Cap tulo 2. Trabalhos Relacionados

Arquiteturas RAW

Organizao ca Recursos Matriz de EPs

dos

Interconexo a Roteamento dinmico a

TRIPS

Matriz de EPs

Roteamento dinmico a

ADRES

Matriz de UFs e Processador VLIW

Registradores intermedirios a

WaveScalar

Matriz de EPs

Roteamento hierrquico a

Matrix

Matriz de UFs

Barramento entre UFs

HPL-PD

Conjunto de UFs

Banco de Registradores Globais

PipeRench

Conjunto de EPs

Roteamento dinmico a e banco de registradores em cada EP

Modelo de Execuca o Cada EP executa sua operao segundo ca o escalonamento denido em tempo de compilao. ca Cada hiperbloco de operaes mapeado co e sobre a matriz. Instrues co carregam operaes que so co a executadas ou pelo processador VLIW ou pela matriz de UFs. Operaes so executaco a das assim que os operandos esto dispon a veis. Depende da aplicao, ca podendo ser SIMD, MIMD ou VLIW. Instrues longas carco regam operaes, com co e sem dependncias de e dados, que so atribu a das `s UFs. a Operaes executam co sobre os estgios de a execuo previamente ca congurados.

Gerao de Cdigo ca o Compilador RAWCC

Compilador Scale

Compilador DRESC

Algoritmo de escalonamento

No Informado a

Compilador Trimaran

Algoritmo de escalonamento

30

Tabela 2.1: Caracter sticas das arquiteturas.

Cap tulo 3 A Arquitetura 2D-VLIW


Atualmente, diversas propostas de arquiteturas de processadores tm explorado e a obteno de maiores n ca veis de paralelismo e, por conseqncia, melhor desempenho ue das aplicaes atravs do acrscimo de mais recursos de processamento, do uso de canais co e e de comunicao mais largos e de maiores quantidades de memria. Neste contexto, a ca o arquitetura 2D-VLIW est focada no uso eciente desses recursos por meio de novos a arranjos dos elementos do hardware e de um modelo que privilegia a execuo de vrias ca a operaes a cada ciclo de relgio. Essa nova organizao dos elementos de hardware vai co o ca ao encontro da geometria dos grafos de dependncias de operaes procurando maximizar e co o desempenho na execuo do programa e melhorar a escalabilidade da arquitetura. ca Este cap tulo cobre as principais caracter sticas da organizao do hardware que ca compe a arquitetura 2D-VLIW. O texto aborda a organizao da via de dados 2D-VLIW, o ca a caracterizao das unidades funcionais, a estrutura dos registradores e memria e a rede ca o de interligao entre as unidades funcionais. Ao nal, h ainda sees apresentando ca a co o conjunto de instrues e o modelo de execuo dessa arquitetura. co ca exemplicado atravs de operaes extra e co das de um programa real. Esse ultimo e

3.1

A Arquitetura 2D-VLIW
A arquitetura 2D-VLIW est baseada no pressuposto de que a organizao dos a ca

elementos que compem o processador associado a um modelo de execuo que explora o ca esses recursos ecientemente podem exercer um papel preponderante no aumento de 31

32

Cap tulo 3. A Arquitetura 2D-VLIW

desempenho na execuo das aplicaes. Dois pontos inovadores na abordagem adotada ca co por essa arquitetura residem na topologia e na organizao desses elementos. ca Na perspectiva da arquitetura 2D-VLIW, a computao dos dados de um programa ca possui duas caracter sticas intr nsicas: 1. possibilidade de determinar um arranjo bidimensional das operaes. co 2. existncia de computao local. e ca A primeira caracter stica diz respeito ` possibilidade de organizar grupos de opea raes de maneira bidimensional. Nesse espao de duas dimenses, o eixo x formado por co c o e operaes independentes e que podem ser executadas em paralelo; o eixo y compreende co a cadeia de dependncia entre operaes que deve ser obedecida a m de garantir a e co semntica correta do programa. A segunda caracter a stica, computao local, est baseada ca a no fato que uma regio de cdigo recebe alguns (poucos) parmetros de entrada e realiza a o a toda a sua computao com base nesses parmetros. Tais parmetros atuam geralmente ca a a como ponto de partida para o in da computao. Aps isso, a regio que recebeu os cio ca o a parmetros segue seu processamento utilizando apenas os valores que foram e esto sendo a a denidos dentro da prpria regio. Alis, essa segunda caracter o a a stica pode ser observada, com alguma facilidade, em funes e procedimentos de um programa. co Uma funo ca recebe alguns parmetros de entrada, dene variveis locais a partir desses parmetros de a a a entrada e executa todas as suas operaes internas tendo como base os valores denidos co internamente. A forma que a arquitetura 2D-VLIW adota para ir ao encontro das caracter sticas mencionadas atravs de uma organizao distribu dos elementos de hardware respone e ca da sveis pelo processamento das operaes e armazenamento dos resultados e operandos. a co No contexto da arquitetura 2D-VLIW, esses elementos de processamento distribu dos so a denidos como unidades funcionais e os elementos de armazenamento so chamados de a registradores temporrios. A Figura 3.1 apresenta uma viso geral da arquitetura 2Da a VLIW. Nessa gura poss e vel observar a via de dados usada por uma instruo e a ca organizao das UFs atravs de uma matriz 4 4. A matriz M de UFs 2D-VLIW comca e e
16

posta por todas as UFs da arquitetura, de maneira que M =


i=1

U Fi . Por simplicidade,

3.1. A Arquitetura 2D-VLIW

33

a hierarquia de memria e os registradores temporrios no foram exibidos. No entanto, o a a esses e outros elementos relevantes da arquitetura so apresentados com mais detalhes nas a Subsees 3.1.1 ` 3.1.5. co a

Instruo 2DVLIW

Reg. Pipeline Busca/Decod

UF 1 UF 2 UF 3 UF 4 EX 1
Unidade de Controle Reg. Pipeline EX1 /EX 2

Banco de Regs. Globais

UF 5 UF 6 UF 7 UF 8 EX 2
Reg. Pipeline EX2 /EX 3

Reg. Pipeline Decod/Exec

UF 9 UF 10 UF 11 UF 12 EX 3
Reg. Pipeline EX3 /EX 4

Matriz de Unidades Funcionais

UF 13 UF 14 UF 15 UF 16 EX 4

Figura 3.1: Via de dados da arquitetura 2D-VLIW. Antes de apresentar os elementos que compem a via de dados 2D-VLIW, deveo se ter em mente a denio de uma instruo nessa arquitetura. As instrues 2Dca ca co VLIW so formadas por operaes simples (add, sub, ld, st, entre outros) que executam a co sobre a matriz de unidades funcionais. O nmero de operaes em uma instruo u co ca e equivalente ` quantidade de unidades funcionais na matriz. Assim, para a matriz 4 4 da a 16 operaes no programa para preencher toda a matriz, operaes especiais do tipo nop co co (operaes nulas que no alteram os estados dos registradores) so inseridas. co a a A cada ciclo de relgio, uma instruo 2D-VLIW buscada da memria e colocada o ca e o no registrador de pipeline Busca/Decod. No estgio de decodicao, a instruo a ca ca e decodicada e os operandos que usam registradores globais so repassados ao banco de a Figura 3.1, uma instruo 2D-VLIW possui 16 operaes. Caso no seja poss encontrar ca co a vel

34

Cap tulo 3. A Arquitetura 2D-VLIW

registradores globais. Depois disso, a instruo est pronta para ser repassada ` matriz de ca a a unidades funcionais. A cada ciclo de execuo, EX1 , EX2 , EX3 , EX4 , quatro operaes ca co de uma instruo so repassadas para as UFs. A instruo levada de um estgio EXi ca a ca e a para um estgio EXj , j = i + 1, 1 i < 4, atravs dos registradores de pipeline. Deve a e ser destacado que esse modelo permite, de maneira geral, que uma operao atribu ` ca da a uma UF no estgio EXj use os resultados das operaes que executaram no estgio EXi . a co a Obviamente, essa caracter stica vale apenas para os casos onde o tempo de processamento da operao no estgio EXi igual ou menor que o tempo que a instruo leva para ser ca a e ca enviada do estgio EXi para EXj . Note ainda que o sistema de conexo entre as UFs a a possibilita que uma UF do estgio EXi fornea operandos para duas outras UFs no estgio a c a EXj . Essa conexo feita por meio dos registradores temporrios que esto distribu a e a a dos ao longo da matriz de UFs e so os responsveis principais pela comunicao direta entre a a ca UFs. Uma das razes para escolha desse modelo de execuo, em contraposio a outros o ca ca modelos que mapeiam todas as operaes da instruo simultaneamente, reside na exibico ca lidade que o modelo adotado traz para explorar o paralelismo em regies que vo alm dos o a e limites de blocos de controle (blocos bsicos, hiperblocos ou superblocos1 ). Na abordagem a onde todas as operaes so enviadas simultaneamente, como o caso da arquitetura co a e TRIPS, h de se esperar o trmino de todas as operaes para que um novo conjunto seja a e co submetido para o hardware. De forma diferente, a abordagem adotada por 2D-VLIW permite que at quatro conjuntos de operaes estejam executando simultaneamente sobre e co a matriz de UFs. Observe que, em muitos casos, esses conjuntos podem representar blocos de controle distintos. E importante salientar que, embora a Figura 3.1 apresenta uma matriz com 4 4

UFs, o projeto da arquitetura 2D-VLIW no restringe o tamanho dessa matriz. Alguns a experimentos apresentados no Cap tulo 5 mostraro, inclusive, o desempenho de prograa mas executando sobre a arquitetura com diversas conguraes de tamanho da matriz co de unidades funcionais. Sem perda de generalidade, as referncias ao tamanho da matriz e
Um superbloco um conjunto de operaoes tal que o controle pode entrar apenas pela primeira e c operaao enquanto que a sa pode acontecer por um ou mais locais dentro do conjunto. Diferente de c da hiperblocos, as operaoes dentro de um superbloco no so predicadas de forma que tal superbloco possui c a a apenas operaoes de um caminho (trao) de controle. c c
1

3.1. A Arquitetura 2D-VLIW

35

ao longo deste cap tulo consideram uma congurao de 16 UFs organizadas como uma ca matriz quadrada 4 4. Uma discusso importante sobre a execuo de operaes na arquitetura 2D-VLIW a ca co concerne ` gerao de cdigo. Ao observar a via de dados 2D-VLIW, pode-se inferir que, a ca o diferentemente de arquiteturas superescalares, no h unidades dedicadas ao escalonaa a mento dinmico de operaes e ` entrega de operaes fora de ordem. A arquitetura aqui a co a co apresentada prov elementos de hardware simples e atribui ` infraestrutura de compilao e a ca a tarefa de usar os recursos de maneira eciente. A arquitetura 2D-VLIW tem utilizado a infraestrutura de compilao Trimaca ran [16] como plataforma bsica para gerao de cdigo. Um dos motivos para a escolha a ca o de Trimaran est na capacidade desse compilador de construir hiperblocos [53] e escalonar a operaes dentro desses hiperblocos para as UFs. Hiperblocos so agrupamentos de vrios co a a blocos bsicos, acrescentando predicados em operaes dentro de desvios condicionais na a co tentativa de maximizar o paralelismo em n de operaes. Essa caracter vel co stica bastante e adequada para arquiteturas como 2D-VLIW pois disponibiliza mais operaes e, por conco seqncia, mais possibilidades de paralelismo, do que uma organizao baseada em blocos ue ca bsicos. Alm disso, Trimaran possui recursos para representar e simular arquiteturas a e que possuem mltiplas unidades funcionais. Esse recurso permite que programas sejam u compilados e simulados considerando as caracter sticas de arquiteturas descritas atravs e da linguagem HMDES [37]. O Cap tulo 4 apresenta as questes principais envolvidas na o gerao de cdigo para 2D-VLIW. ca o As subsees a seguir discorrem, com mais detalhes, sobre as unidades funcionais co da arquitetura 2D-VLIW, as caracter sticas dos registradores, a rede de interligao entre ca UFs, a hierarquia de memria e o conjunto de instrues dessa arquitetura. o co

3.1.1

A Unidade Funcional 2D-VLIW


As unidades funcionais da arquitetura 2D-VLIW so as responsveis pela execuo a a ca

das operaes. As UFs so formadas por uma ULA, um banco de registradores temporco a a rios composto por 2 registradores, um registrador interno e interface com a memria. Os o operandos de uma operao tm suas origens em trs fontes poss ca e e ves: o registrador global,

36

Cap tulo 3. A Arquitetura 2D-VLIW

o registrador temporrio ou o registrador interno da UF. Assim, uma U Fi um conjunto a e Alm disso, algumas operaes predicadas podem fazer uso dos valores em registradores e co de predicados. A Figura 3.2 mostra todos os blocos lgicos e sinais de controle dentro de o uma UF 2D-VLIW. composto por {rt0i , rt1i , RU Fi , U LAi , IMi }, em que IMi a interface de memria da U Fi . e o

Registrador de Pipeline

Operando1

Operando2

SelOpnd1

SelOpnd2

SelPred

ULA
SelOperao

Registrador UF (RUF)

Interface para Memria Banco de Registradores Temporrios

Banco de Registradores Globais

Figura 3.2: A unidade funcional 2D-VLIW. Os resultados computados por uma UF podem ser escritos em um registrador temporrio ou em um registrador global. Adicionalmente, o resultado sempre escrito a e no RUF. A atividade de escrita no registrador global, entretanto, no ocorre da mesma a forma que em um RT ou no RUF. Nesses dois ultimos, h uma ligao direta entre a UF a ca e o banco de RTs e RUF. De forma diferente, uma UF no possui uma porta de escrita a espec ca para o banco de registradores globais. Na realidade, h uma porta de escrita a compartilhada pelas UFs de cada linha da matriz. Assim, em um dado ciclo de execuo, ca apenas uma operao por linha da matriz pode armazenar seus resultados no banco de ca registradores globais. Exceo ` essa regra ocorre apenas para as UFs da ultima linha da ca a

3.1. A Arquitetura 2D-VLIW

37

matriz. Nesse caso, h uma porta de escrita no banco de registradores globais dedicada a para cada UF. O motivo para essa diferena entre portas de escrita para UFs em linhas c diferentes da matriz se d pela intuio de que UFs da ultima linha so locais provveis a ca a a para operaes de retorno de uma funo, da mesma forma que UFs internas so locais co ca a provveis para operaes intermedirias da funo. a co a ca O resultado de uma operao escalonada na linha j e que executa em um ciclo i de ca relgio, estar dispon o a vel, atravs dos RTs e do RUF, para trs outras operaes no ciclo e e co seguinte i + 1 uma vez que: duas operaes, na linha j + 1, podem usar esse resultado co atravs do registrador temporrio enquanto outra operao, na mesma linha j, pode usar e a ca o resultado do RUF. Os sinais de controle SelOpnd1, SelOpnd2, SelPred e SelOperao so ca a fornecidos a partir dos registradores de pipeline. Os dois primeiros sinais possibilitam a seleo da origem dos operandos de uma operao. O sinal SelPred seleciona valores em ca ca registradores de predicado. Por m, o sinal de controle SelOperao informa qual operao ca ca dever ser executada pela UF. a O uso de RTs possibilita um modelo bem simples de conexo entre UFs, alm a e de minimizar o uso de registradores globais. Observe que essa reduo no uso de regisca tradores globais vai ao encontro da caracter stica de computao local que foi discutida ca na Seo 3.1. Os registradores globais na arquitetura 2D-VLIW podem ser vistos como ca parmetros de entrada para uma funo e os registradores temporrios, espec a ca a cos para cada UF, funcionam como os valores intermedirios produzidos e usados por essa funo. a ca Nessa analogia, a instruo 2D-VLIW pode ser entendida como uma funo. ca ca

3.1.2

Registradores Temporrios a
Para dar suporte ao modelo de execuo 2D-VLIW, que o responsvel pela ca e a

execuo de operaes nas UFs da matriz, existem trs classes de registradores dentro da ca co e arquitetura: os registradores globais, os registradores temporrios e os registradores de a predicado. A arquitetura prev o uso de 32 registradores globais organizados em um banco e de registradores no estgio de decodicao, 32 registradores temporrios organizados em a ca a 16 bancos com 2 registradores cada e, por m, 32 registradores de predicado.

38

Cap tulo 3. A Arquitetura 2D-VLIW

Banco de Registradores Globais

Registrador Pipeline ID/EX1

UF1
RT0 RT1

UF2
RT0 RT1

Registrador Pipeline EX /EX 1 2

UF5
RT0 RT1

UF6
RT0 RT1

Figura 3.3: Interligao da UF com seu banco de registradores temporrios. ca a

A Figura 3.3 apresenta os detalhes da interconexo entre uma UF e um banco a de registradores temporrios. E interessante observar tambm a restrio com relao ` a e ca ca a escrita no banco de registradores globais. Observe que apenas uma UF pode armazenar resultados nesse banco de registradores em um determinado instante. Na Subseo 3.1.1 foi apresentada uma analogia do uso dos registradores globais e ca temporrios com os parmetros de entrada e as operaes executadas dentro de uma a a co funo. No contexto da arquitetura 2D-VLIW, essa diviso propicia duas vantagens ca a importantes: associao dos operandos e resultados com os registradores de acordo com ca a semntica de uso das operaes dentro de grafos ac a co clicos dirigidos (DAGs); a reduo ca no nmero de portas de escrita e leitura no banco de registradores globais. u A primeira vantagem est relacionada com a capacidade da arquitetura de mapear a DAGs inteiros sobre a matriz de unidades funcionais. Esse mapeamento s poss o e vel porque os RTs podem armazenar os resultados de operaes e fornecer esses resultados no co ciclo seguinte ao armazenamento. Nesse caso, as operaes produtoras e consumidoras dos co

3.1. A Arquitetura 2D-VLIW

39

resultados podem estar agrupadas dentro da mesma instruo 2D-VLIW. O agrupamento ca de operaes produtoras e consumidoras dentro de uma mesma instruo poss pois os co ca e vel RTs so usados durante os estgios de execuo da via de dados. Os registradores globais, a a ca por outro lado, podem armazenar apenas valores durante os ciclos de execuo. A leitura ca dos valores feita apenas no estgio de decodicao. Observe que os RTs funcionam e a ca muito bem como elementos de armazenamento dos valores internos de um DAG, assim como os registradores globais armazenam os operandos das operaes ra de um DAG co zes ou, at mesmo, os resultados produzidos pelas operaes que so folhas de um DAG. e co a O nome registrador temporrio vem do fato que os valores armazenados geralmente a so vlidos apenas dentro do DAG. Considere duas operaes opm e opn que mantm uma a a co e relao de dependncia opm opn , signicando que opn depende do resultado de opm . Se ca e a operao opm escalonada em uma UF da linha i, 1 i < 4 e, no ciclo j, armazena ca e seu resultado em um registrador temporrio, opn pode ser escalonada para uma UF da a linha i + 1 e ler o resultado de opm no ciclo j + 1. Observe que opm e opn podem ser colocadas em uma mesma instruo e, mais importante, podem ser trazidas da memria ca o em uma mesma transao de busca de instruo. Se, de outra forma, as operaes opm e ca ca co opn utilizam registradores globais, cada operao deve estar em uma instruo diferente, ca ca uma vez que a leitura dos registradores globais realizada no estgio de decodicao, e e a ca a escrita nesses registradores feita no estgio de execuo. e a ca A segunda vantagem uma conseqncia direta da primeira. J foi comentado que e ue a os operandos dos vrtices ra de um DAG so mapeados para os registradores globais e zes a e os valores intermedirios de um DAG so armazenados em RTs. Como, geralmente, a a h mais vrtices internos do que vrtices ra a e e zes em um DAG, essa associao possibilita ca reduzir o nmero de portas de leitura e escrita no banco de registradores globais j que u a a maior parte das operaes utilizam os RTs. Essa reduo tem um impacto direto na co ca complexidade de rea e latncia do banco de registradores globais. a e Em geral, a complexidade de rea de um banco de registradores limitada, no a e pe =nmero de portas de escrita, pl =nmero de portas de leitura e n = pe + pl. Observe u u pior caso, por O(n2 ) [14] e a latncia de pior caso limitada por O(log pl). Considere e e

que o nmero de portas de leitura tem um impacto direto na rea e latncia do banco u a e

40

Cap tulo 3. A Arquitetura 2D-VLIW

de registradores. Diversas arquiteturas baseadas em mltiplas unidades de execuo, u ca em especial arquiteturas VLIW, possuem um nmero de portas de leitura limitado por u arquitetura. Ao adotar registradores temporrios e considerando que apenas ra a zes dos DAGs utilizam efetivamente o banco de registradores globais, tem-se a possibilidade de reduzir a complexidade de pior caso da latncia desse banco de registradores. Esse pior e caso passa a ser agora O( k) (em termos exatos, 2 k). A reduo de k para k ca co zes de DAGs possam ser colocadas possibilita que at k operaes que representam ra e em uma mesma instruo 2D-VLIW. Como exemplo do impacto que essa reduo pode ca ca banco de registradores globais. Note que esse mesmo banco de registradores para uma arquitetura 2D-VLIW com 4 4 unidades funcionais possui apenas 8 portas de leitura. Essa reduo de portas de leitura permite tambm uma reduo da rea ocupada pelo ca e ca a banco global da ordem de 4 vezes e uma reduo de latncia de 40%, se for considerado ca e que ambas as arquiteturas possuem o mesmo nmero de portas de escrita. u trazer, considere uma arquitetura VLIW com 16 UFs e com 16 2 portas de leitura no O(k) (em termos exatos, 2 k), onde k a quantidade de unidades funcionais da e

Uma primeira impresso sobre essa restrio no nmero de portas pode sugerir a ca u que tal reduo acarreta um crescimento no cdigo do programa e, por conseqncia, ca o ue reduo do desempenho nal da aplicao. Esse crescimento do cdigo seria devido ` ca ca o a necessidade de dividir operaes em duas ou mais instrues pelo fato de que tais operaes co co co ultrapassam o limite de portas dispon veis. No entanto, experimentos realizados com programas que realizam computao com nmeros inteiros e de ponto-utuante mostram ca u que tal restrio no degrada o desempenho da aplicao j que a maior parte dos DAGs ca a ca a no possuem 4 ra e, mesmo quando possuem, alguns operandos dessas ra so valores a zes zes a imediatos e at valores que j esto armazenados dentro dos RTs. Em outros casos, os e a a DAGs que tm mais de 4 ra j possuem mais vrtices do que o limite suportado por e zes a e uma instruo (16 operaes). Assim, esses DAGs j seriam obrigados a usar mais que ca co a uma instruo 2D-VLIW. ca

3.1. A Arquitetura 2D-VLIW

41

3.1.3

Interligao entre Unidades Funcionais ca


A interligao entre as UFs da arquitetura 2D-VLIW pode ser caracterizada como ca

esttica, de um unico estgio e com conexes limitadas, similar `s redes de malha usadas a a o a em multiprocessadores como Goodyear Aerospace, Intel Paragon e o J-Machine do MIT [28]. Como j pde ser observado pela Figura 3.1, as UFs so interconectadas a o a atravs de registradores temporrios de forma que uma UF na linha i, 1 i < 4, pode e a enviar seus resultados para duas outras UFs na linha i + 1. A motivao principal para a ca adoo desse modelo de interligao a similaridade com os padres geomtricos de um ca ca e o e DAG. Considerando que os vrtices de um DAG possuem, no mximo, duas arestas de e a entrada e que os vrtices de um n j esto interligados com outros vrtices de n e vel a e veis > j, o modelo de interligao da matriz vai ao encontro do padro de interconexo do DAG. ca a a Alm disso, um modelo de interligao como esse facilita a construo de algoritmos que e ca ca tratam o mapeamento de um DAG inteiro sobre a matriz de UFs. Nesse caso, a matriz e representada como um grafo dirigido G = (V, E), onde V = conjunto das UFs da matriz e E = conjunto das arestas de comunicao da matriz que interligam as UFs. A Figura 3.4 ca apresenta uma viso mais detalhada do sistema de interconexo de UFs na arquitetura a a 2D-VLIW. A interconexo entre duas UFs pode ser representada como uma aresta de comua nicao eij , sendo que eij = (U Fi , U Fj ) indica que as unidades funcionais U Fi e U Fj ca eij E. A interconexo esttica possibilita que o transporte de um dado da U Fi para a a so interligadas no sentido U Fi U Fj atravs de um registrador temporrio. Logo, a e a a U Fj , atravs de uma aresta eij , seja realizado em tempo constante O(1). Se o mesmo e

resultado da U Fi deve ser usado por uma U Fl atravs de uma aresta eil = (U Fi , U Fl ) mas, e operaes de cpia devem ser inseridas na matriz de UFs a m de possibilitar o envio do co o valor de U Fi para U Fl . Nessa situao, a latncia para comunicao de U Fi e U Fl passa ca e ca a ser O( |V |). eil E, mesmo assim a comunicao entre essas duas UFs ainda poss ca e vel. Nesse caso,

Outro ponto que motiva a utilizao desse sistema de interconexo a facilidade ca a e para escalar de acordo com o nmero de UFs. Observando atentamente a Figura 3.4, u pode-se construir matrizes de UFs a partir de matrizes menores, seguindo o mesmo padro a

42

Cap tulo 3. A Arquitetura 2D-VLIW

UF 1

UF 2

UF 3

UF 4

UF 5

UF 6

UF 7

UF 8

Bancos de

Registradores Temporrios
UF 9 UF10 UF11 UF12

UF13 UF14 UF15 UF16

Figura 3.4: Interligao entre os elementos da matriz. ca de interligao dos ns da matriz menor. Mais importante, o nmero de arestas |E| da ca o u

matriz cresce linearmente com o nmero de UFs. Dessa forma, o nmero de arestas de u u comunicao na arquitetura limitado por (|V |). ca e

3.1.4

Hierarquia de Memria o
As atividades (busca de instrues, armazenamento de dados e carregamento de co

dados em registradores) que envolvem o sistema de memria da arquitetura 2D-VLIW o utilizam uma hierarquia de memrias cache similar ao que j ocorre com a maior parte o a dos microprocessadores usados atualmente. H um primeiro n a vel de memria cache o dividida em dados e instrues. Um segundo n de memria cache que agrupa os dados co vel o e instrues em um local unico. Por m, o terceiro n consiste na memria de trabalho co vel o onde o programa carregado quando inicia a execuo no processador. e ca Uma diferena para esse modelo tradicional de hierarquia de memria que 2Dc o e VLIW usa uma memria cache adicional no n 1. Essa cache denominada cache de o vel e padres e funciona como um local de armazenamento rpido para a busca de padres de o a o instrues 2D-VLIW. Esses padres so extra co o a dos, em tempo de compilao, de instrues ca co

3.1. A Arquitetura 2D-VLIW

43

no codicadas e funcionam como um mapa para decodicar instrues trazidas da a co memria. Assim, a hierarquia de memria presente na arquitetura 2D-VLIW pode ser o o representada conforme a Figura 3.5.

Memria

Memria

Cache de Nvel 2

Cache Integrada

Cache de Nvel 1

Cache de Instrues

Cache de Dados

Cache de Padres

Via de Dados 2DVLIW

Figura 3.5: Hierarquia de memria 2D-VLIW. o Diferentemente das caches de dados e instrues, a cache de padres no utilizada co o a e durante o estgio de busca de instruo nem durante o estgio de execuo. O padro resa ca a ca a ponsvel pela representao completa das operaes de uma instruo buscado durante o a ca co ca e estgio de decodicao pois, dessa forma, pode ser executado concomitante com a leitura a ca dos registradores globais. Essa caracter stica bastante util pois reduz o efeito dessa cache e sobre o caminho cr tico de execuo de uma instruo, uma vez que no adiciona um novo ca ca a estgio na via de dados. Na realidade, o que est ocorrendo que a busca de um padro e a a a e a decodicao da instruo esto sendo executadas em paralelo com a leitura de operandos ca ca a no banco de registradores globais. As latncias de acesso `s memrias caches utilizadas e a o nos experimentos envolvendo a arquitetura 2D-VLIW, assim como as latncias de leitura e e escrita nos bancos de registradores so as mesmas adotadas pelo compilador Trimaran a

44

Cap tulo 3. A Arquitetura 2D-VLIW

para acesso aos recursos da arquitetura HPL-PD [47]. A Figura 3.6 apresenta novamente a via de dados 2D-VLIW mas agora caracterizada com os elementos de memria. o
Cache de Instrues

Reg. Pipeline Busca/Decod

Unidade de Controle

Banco de Regs. Globais

Cache de Padres

Cache Integrada nivel 2

Memria

Reg. Pipeline Decod/Exec 1

Matriz de Unidades Funcionais

Cache de Dados

Figura 3.6: Via de dados 2D-VLIW e os elementos de memria cache. o A utilizao de instrues codicadas, ao invs de instrues longas e simples, est ca co e co a pautada na necessidade de reduzir a latncia na busca de operaes de um programa e, e co com isso, minimizar os impactos dessa latncia no desempenho do programa. A motivao e ca para usar instrues codicadas e, por conseqncia, extrair padres e armazen-los em co ue o a uma memria cache junto ` via de dados do processador tem origem em estudos iniciais o a no escopo do projeto 2D-VLIW apresentado nesta Tese. No entanto, h um trabalho a de mestrado em desenvolvimento no LSC/IC-Unicamp pelo estudante Rafael Fernandes Batistella cujos objetivos so investigar algoritmos de codicao para instrues 2Da ca co

3.1. A Arquitetura 2D-VLIW

45

VLIW e analisar o desempenho da cache de padres. Sendo assim, esse tpico tratado o o e nesta Tese em carter informativo e com o intuito de mostrar a hierarquia de memria a o vislumbrada para a arquitetura 2D-VLIW. Um detalhamento melhor sobre a tcnica de e codicao e o emprego da cache de padres pode ser visto na Seo 4.5. ca o ca

3.1.5

Conjunto de Instrues 2D-VLIW co


Algumas regras e operaes devem estar presentes em um conjunto de instrues co co

adotado pela arquitetura 2D-VLIW a m de adequar a execuo do programa aos recursos ca da arquitetura e, alm disso, possibilitar melhorias no desempenho da aplicao: e ca Operaes com predicados. Algumas operaes que esto nos dois lados de co co a um desvio condicional devem possuir predicados a m de que o processador 2Ddever ser executada. A determinao de quais operaes devem possuir esses a ca co predicados depende do nmero mximo de instrues que utilizam a via de dados u a co de um processador 2D-VLIW simultaneamente. Operaes . Operaes funcionam como um dispositivo multiplexador selecioco co nando uma de suas entradas. Tais operaes so usadas quando uma operao opi co a ca possui um operando p que criado por operaes opj e opk no delay slot dos dois lados e co de uma operao de desvio. Sob essa situao, a operao deve ser executada antes ca ca ca se destacar que o signicado adotado para a operao no contexto da arquitetura ca 2D-VLIW o mesmo usado pelas funes no contexto de transformaes SSA [26]. e co co Operaes com at dois operandos. Essa caracter co e stica deve estar presente em todas as operaes, excetuando `quelas com predicados, a m de que os DAGs co a possam ser mapeados diretamente sobre a matriz de UFs. Um conjunto de instrues co com operaes que aceitam mais que 2 operandos poderia formar, por exemplo, co DAGs isomorfos para o grafo K3,3 [9] que no so mapeados para a matriz de UFs a a da arquitetura 2D-VLIW. de opi , de acordo com a seguinte cadeia de dependncia: opj , opk opi . Devee VLIW saiba, ao trazer da memria tais operaes, distinguir efetivamente qual o co

46

Cap tulo 3. A Arquitetura 2D-VLIW

Operao com mais de um valor imediato. O sistema de codicao de ca ca

palavras 2D-VLIW permite que apenas um valor imediato seja usado em cada operao. Dessa forma, operaes que utilizam mais de um operando imediato ca co devem ser divididas. Em virtude da adoo do compilador Trimaran como plataforma bsica para comca a

pilao e simulao de programas na arquitetura 2D-VLIW, os experimentos apresentados ca ca no Cap tulo 5, envolvendo o desempenho de aplicaes sobre o processador 2D-VLIW, co utilizam o conjunto de instrues da arquitetura HPL-PD. co

3.2

Modelo de Execuo ca
Como j mencionado na Seo 3.1, a execuo de instruoes de um programa sobre a ca ca c

a arquitetura 2D-VLIW passa por registradores de pipeline ao longo da via de dados. Em cada ciclo de relgio, uma instruo 2D-VLIW buscada na memria e colocada o ca e o no registrador Busca/Decod. Quando alcana os estgios de execuo, as operaes que c a ca co formam a instruo so executadas, em paralelo, de acordo com o nmero de UFs em ca a u cada linha da matriz. A maneira como as instrues de um programa percorrem a via de co dados 2D-VLIW e so executadas o que caracteriza o modelo de exercuo 2D-VLIW. a e ca A Figura 3.7 exemplica a execuo de uma instruo na via de dados 2D-VLIW. ca ca A Figura 3.7(a) exibe como as operaes de um DAG podem ser organizados em uma co instruo 2D-VLIW. A Figura 3.7(b) apresenta uma viso em perspectiva da execuo ca a ca dessa instruo aps cada ciclo de relgio. Essa viso se d pela presena dos registradores ca o o a a c temporrios entre unidades funcionais de linhas diferentes. Assim, pode-se visualizar trs a e dimenses na execuo de instrues 2D-VLIW: o eixo y representado pelos sinais de o ca co e controle enviados pelos registradores de pipeline; o eixo x indica o caminho dos dados que passam pelas UFs; o eixo z formado pelos registradores temporrios que armazenam e a os resultados para serem usados pelas operaes dos prximos ciclos. Observe que a co o instruo tem o seu tamanho reduzido ciclo-aps-ciclo. Isso indica que operaes que j ca o co a foram executadas no so repassadas para os prximos estgios de execuo. a a o a ca A Figura 3.8 apresenta uma outra viso da execuo 2D-VLIW nas UFs de uma a ca matriz 44. Nessa gura, pode-se observar o uxo de dados e controle entre as UFs assim

3.2. Modelo de Execuo ca

47

(a) Representaao de uma instruao 2D-VLIW como uma matriz de operaoes. c c c

(b) Execuao da instruao apresentada em 3.7(a) na via de dados 2D-VLIW c c

Figura 3.7: Exemplo de mapeamento e execuo sobre a matriz de UFs. ca

como o paralelismo atravs de diferentes instrues 2D-VLIW (indicadas com diferentes e co cores nas entradas de cada UF). As UFs de uma mesma linha recebem os sinais de controle e dados simultaneamente. No entanto, h o envio dos dados e controle das unidades a funcionais de uma linha i para uma linha i + 1. E importante observar a execuo paralela ca entre linhas diferentes da matriz. Enquanto as UFs da primeira linha executam operaes co de uma mesma instruo e com um conjunto de sinais de controle, as UFs das demais ca linhas esto tambm executando operaes de diferentes instrues a partir de sinais de a e co co controle previamente armazenados nos registradores de pipeline. Note que os resultados enviados de uma UF da linha i para uma UF da linha i + 1 s podem ser utilizados no o

48

Cap tulo 3. A Arquitetura 2D-VLIW

prximo ciclo de relgio desde que apenas nesse prximo ciclo que os sinais de controle o o e o estaro dispon a veis para as UFs da linha i + 1. Por simplicidade, a interconexo entre a todas as unidades funcionais da matriz no apresentada. Mesmo assim, pode-se entender a e como essa interconexo ao observar as duas UFs mais ` esquerda da primeira e segunda e a a linhas da matriz (linhas cont nuas). A interconexo entre essas UFs reete o padro de a a interligao adotado para as demais UFs da matriz (linhas tracejadas). ca
Registrador de Pipeline

UF

UF

UF

UF

UF

UF

UF

UF

dados

UF

UF

UF

UF

UF

UF

UF

UF

controle

Figura 3.8: Estilo de execuo 2D-VLIW: dados e controle so enviados para as UFs ca a atravs do pipeline. e

A partir dos exemplos mencionados nas Figuras 3.7 e 3.8, pode-se agora desvendar a execuo de DAGs a partir de programas reais. A Figura 3.9 apresenta DAGs do ca programa 181.mcf do benchmark SPECint00 e as instrues 2D-VLIW formadas a partir co do agrupamento das operaes desses DAGs. As operaes desses DAGs fazem parte do co co conjunto de instrues HPL-PD. co A Figura 3.9(a) exibe oito DAGs do programa 181.mcf e a Figura 3.9(b) apresenta como as operaes desses DAGs so organizadas nas instrues 2D-VLIW A e B. Por co a co agruparem o mesmo nmero de operaes que as UFs da matriz, uma instruo 2Du co ca VLIW pode ser tambm representada como uma matriz de operaes. Operaes que no e co co a possuem dependncias so colocadas na mesma linha da instruao indicando que podem e a c ser executadas em paralelo. A regio tracejada na Figura 3.9(b) representa todo o DAG, a

3.2. Modelo de Execuo ca

49

addi

addi

addi

addi

ld

ld

ld

ld

addi

addi

addi

and

and

and

and

ld

ld

add

add

addi

addi

addi

addi

addi

addi

and

addi

st

st

st

st

st

(a) DAGs do programa 181.mcf.

A
addi addi addi addi

A1 A2 A4

ld

ld

ld

ld

and and and and A3


addi addi addi addi

B
addi addi and addi

B1 B2 B3 B4

ld st

ld st

addi st

addi addi add add

st

st

(b) Instruoes 2D-VLIW obtidas aps o escalonamento dos DAGs do programa 181.mcf. c o

Figura 3.9: DAGs do programa 181.mcf e suas instrues 2D-VLIW equivalentes. co

50

Cap tulo 3. A Arquitetura 2D-VLIW

tambm tracejado, na Figura 3.9(a). Considerando a regio tracejada na Figura 3.9(b), e a nota-se que os operandos da operao st so fornecidos pelas operaes and e addi atravs ca a co e do registrador temporrio e do RUF, respectivamente. Isso pode ser conrmado ao a observar que a operao st est localizada, na instruo B, uma linha abaixo da posio da ca a ca ca operao and na instruo A. A operao st est tambm na mesma posio da operao ca ca ca a e ca ca addi. Neste ponto, deve estar claro que a posio de uma operao na instruo indica ca ca ca qual UF ser usada. Operaes que esto na mesma posio mas em instrues diferentes a co a ca co utilizaro a mesma UF mas em ciclos de relgio diferentes. a o As Figuras 3.10 e 3.11 exibem o status do processamento das instrues A e B na co matriz 2D-VLIW. Sem perda de generalidade, deve-se considerar que todas as operaes co so executadas em um ciclo de relgio. A m de retratar o modelo de execuo da a o ca arquitetura, o processamento da instruo ser mostrado j no estgio EX1 . O estgio ca a a a a de busca de instruo semelhante ao de arquiteturas que utilizam instrues longas na ca e co memria. O estgio de decodicao, em acrscimo ` leitura dos registradores globais, o a ca e a realiza a busca do padro da instruo junto a cache de padres e, posteriormente, a a ca o decodicao da instruo. Essa atividade de decodicao necessita de um conhecimento ca ca ca prvio sobre o formato da instruo codicada e, por isso, ser detalhada na Seo 4.5. e ca a ca A Figura 3.10(a) representa o primeiro ciclo de execuo na matriz de UFs. A ca primeira linha recebe as operaes, operandos e sinais de controle do registrador de pipeline co Decod/EX1 . As quatro unidades funcionais da linha A1 executam as operaes addi, addi, co addi, addi da instruo A. As setas tracejadas indicam quais UFs recebero os resultaca a dos dessas operaes. Note que os resultados so enviados para as UFs consumidoras co a obedecendo a rede de interligao entre UFs. ca No segundo estgio de execuo, Figura 3.10(b), as operaoes ld, ld, ld, ld da linha a ca c A2 so executadas na segunda linha de unidades funcionais. Nesse mesmo ciclo de relgio, a o as operaes da linha B1 esto sendo executadas na primeira linha de UFs da matriz. co a No terceiro estgio de execuo, Figura 3.11(a), o registrador de pipeline EX2 /EX3 a ca armazena informaes para execuo das operaes da linha A3 . Observe que, no mesmo co ca co ciclo de relgio, a segunda linha da matriz est executando as operaes ld, ld, addi, st da o a co

3.2. Modelo de Execuo ca

51

addi addi addi addi

A1 A2 A4
A1
addi addi addi addi EX /EX
1 2

ld

ld

ld

ld

Decod/EX

and and and and A3


addi addi addi addi

addi addiand addi

B1 B2 B3 B4
(a) Ciclo 1.

EX /EX
2

ld st

ld st

addi st

addi addi add add

EX /EX 3 4

st st

A1

Decod/EX1

ld

ld

ld

ld

A2
B1
addi addi and addi EX /EX 1 2

and and and and A3


addi addi addi addi

A4

addi addiand addi

B1 B2 B4

A2 ld

ld

ld

ld
EX /EX 2 3 EX /EX 3 4

ld st

ld addi st st st st

addi addi

add add B3
(b) Ciclo 2.

Figura 3.10: Estgios iniciais da execuo das instrues A e B. a ca co

instruo B2 e, agora, a primeira linha de uma nova instruo C inicia sua execuo na ca ca ca matriz. No quarto estgio de execuo, Figura 3.11(b), as operaoes de A4 so executadas a ca c a na quarta linha, as operaes de B3 so executadas na terceira linha, as operaes da linha co a co C2 da instruo C esto executando na segunda linha e uma nova instruo, D, inicia sua ca a ca execuo na matriz. O ultimo estgio de execuo representado na Figura 3.11(c) onde ca a ca e quatro operaes st da linha B4 esto sendo executadas na ultima linha da matriz e todas co a as operaes da instruo A j foram executadas. co ca a

52

Cap tulo 3. A Arquitetura 2D-VLIW

A1

A2
and and and and A3
addi addi addi addi

1111 0000 Decod/EX1 11 11 1111 00 00 0000 11 11 00 00 11 11 00 00 11 11 00 00 C 1 00 00 11 11 11 11 00 00 11 11 00 00 11 11 00 00


EX /EX
1 2

A4

B2

ld

ld addi st
EX /EX
2

B1

ld st

ld addi st st st st

B2
A 3 and and and and
EX /EX 3 4

addi addi

add add B3 B4

(a) Ciclo 3.
Decod/EX1

A1

D1

A
addi addi addi addi

A2 A3 A4

11111 00000 EX 111 11111111 000 00000000 1 /EX2 111 111 000 000 111 111 000 000 111 111 000 000 C000 000 111 111 111 111 000 000 2 000 000 111 111 000 000 111 111
EX /EX 2 3

B1

B3

addi addi add add EX /EX 3 4

B2
addi addi

add add B3
st st

st

st

B4

A4

addi addi addi addi

(b) Ciclo 4.
E1

1111 0000 Decod/EX1 11 11 1111 00 00 0000 111 11 000 00 11 11 00 00 111 11 000 00 11 11 00 00 111 11 000 00 11 11 00 00 111 11 000 00 EX /EX
1 2

B1

D2

B
st st st st

B2 B3 B4

1111 0000 /EX EX 11 11 1111 00 00 0000 2 3 111 11 000 00 11 11 00 00 111 11 000 00 C 3 00 00 11 11 111 11 000 00 11 11 00 00 111 11 000 00
EX /EX
3 4

B4

st

st

st

st

(c) Ciclo 5.

Figura 3.11: Estgios restantes da execuo das instrues A e B. a ca co

3.3. Consideraes Finais co

53

Analisando o quarto estgio de execuo, poss notar que a matriz de UFs a ca e vel est totalmente preenchida com operaes de quatro diferentes instrues 2D-VLIW: A, a co co B, C e D. Aps o quarto estgio, uma instruo 2D-VLIW termina de executar sobre a o a ca matriz a cada ciclo de relgio, enquanto uma nova instruo inicia seu processamento. Por o ca m, interessante observar que todas as operaes executadas atravs dos cinco estgios e co e a de execuo, Figuras 3.10(a), 3.10(b), 3.11(a), 3.11(b) e 3.11(c), representam exatamente ca todas as operaes das instrues A e B denidas na Figura 3.9(b). co co No exemplo do modelo de execuo 2D-VLIW apresentado nas Figuras 3.10 e 3.11, ca os sinais de controle referentes `s leituras/escritas em registradores, ` execuo das unia a ca dades funcionais e ` ativao dos multiplexadores foram omitidos na tentativa de facilitar a ca o entendimento do modelo. Pelo mesmo motivo, as latncias de todas as operaes e co do exemplo foram consideradas unitrias. Como usual, uma execuo baseada em um a ca conjunto de instrues mais realista considera operaes com latncias diferentes e at co co e e latncias variveis, como o caso das operaes de memria que buscam dados para serem e a e co o armazenados em registradores. E importante destacar que esse exemplo, mesmo sendo simplicado, no prejudica o entendimento bsico do modelo de execuo 2D-VLIW. No a a ca caso de operaes com latncias no-unitrias, tais operaes teriam o uso exclusivo da UF co e a a co de acordo com a sua latncia. Para as operaes com latncias variveis, o compilador o e co e a e responsvel por incluir operaes no DAG que testam se o dado requisitado na memria a co o j est dispon para ser utilizado. Se a latncia da operao varivel a ponto de poder a a vel e ca e a afetar a semntica de execuo do programa, o processador 2D-VLIW deve sofrer um stall a ca at que a operao seja nalizada. e ca

3.3

Consideraes Finais co

Os elementos que constituem a arquitetura e o modelo de execuo 2D-VLIW ca foram apresentados neste cap tulo. E importante deixar claro que, embora no possuindo a uma implementao em hardware, diversas caracter ca sticas denidas nessa arquitetura esto baseadas em anlises experimentais e na simulao de programas considerando o a a ca modelo de execuo proposto. Mesmo assim, alguns recursos presentes na arquitetura, em ca

54

Cap tulo 3. A Arquitetura 2D-VLIW

particular, a manipulao das operaes de memria, ainda carecem de mais investigaes ca co o co e, portanto, podem sofrer mudanas quanto ` abordagem aqui apresentada. c a A presena de algumas caracter c sticas j tm se tornado usual nos processadores a e dispon veis atualmente. Tais caracter sticas, mesmo no sendo abordadas diretamente a neste cap tulo, so fact a veis para utilizao na arquitetura 2D-VLIW. Algumas dessas ca so: predio de saltos, acesso especulativo ` memria e pr-busca de dados. a ca a o e De posse das informaes a respeito da organizao dos elementos de hardware da co ca arquitetura pode-se, a partir de agora, discorrer sobre a gerao de cdigo para 2D-VLIW. ca o As etapas que compem a gerao de cdigo exercem importncia fundamental para a o ca o a arquitetura pois so as responsveis pela distribuio das operaes de um programa a a ca co sobre os recursos da arquitetura e, como conseqncia, pelo uso eciente desses recursos ue e obteno de desempenho. As caracter ca sticas envolvendo a gerao de cdigo para a ca o arquitetura 2D-VLIW so apresentadas no Cap a tulo 4.

Cap tulo 4 Gerao de Cdigo na Arquitetura ca o 2D-VLIW


Um dos maiores desaos para processadores que exploram paralelismo em n vel de instruo reside na diculdade para gerar cdigo que utiliza ecientemente todos os ca o recursos presentes na arquitetura. Para suprir essa diculdade, uma grande quantidade de tcnicas de otimizao de cdigo, assim como novas abordagens para lidar com as e ca o diferentes fases que compem a gerao de cdigo, esto presentes na literatura da rea. o ca o a a Ao referir-se `s arquiteturas com mltiplos recursos para processamento de operaes a u co e interessante observar que a diculdade para gerao de cdigo est centrada, em muitos ca o a casos, nas otimizaes realizadas sobre o cdigo e nas etapas de escalonamento de instruco o ces e alocao de registradores. Essas etapas so tambm responsveis pelo uso eciente o ca a e a dos recursos de um processador e, por conseqncia, pelo desempenho na execuo da ue ca aplicao. ca Diante desse contexto, o presente cap tulo discorre sobre as tcnicas e algoritmos e adotados para gerar cdigo tendo como base a arquitetura 2D-VLIW. Em particular, o o cap tulo est focado nas tcnicas utilizadas nas atividades de escalonamento de instrua e ces, alocao de registradores e codicao de instrues. As duas primeiras so bem o ca ca co a conhecidas e esto presentes em qualquer projeto envolvendo a gerao de cdigo para a ca o processadores. A ultima atividade mais espec e ca e tratada na arquitetura 2D-VLIW e visando minimizar a sobrecarga com a busca de instrues longas na memria e a reduo co o ca da rea ocupada pelo programa. Este cap a tulo no cobre a denio de uma linguagem a ca 55

56

Cap tulo 4. Gerao de Cdigo na Arquitetura 2D-VLIW ca o

de programao para 2D-VLIW e, tampouco, as etapas de compilao envolvendo anlise ca ca a lxica, sinttica e semntica. Embora sejam tcnicas muito importantes na denio e a a e ca de um compilador, a arquitetura 2D-VLIW no est voltada para uma linguagem de a a programao espec ca ca nem para um conjunto de instrues unico. Mesmo assim, o texto co do cap tulo apresenta informaes sobre a ferramenta de compilao adotada para gerao co ca ca de cdigo considerando o modelo de execuo 2D-VLIW. o ca

4.1

Infraestrutura para Gerao de Cdigo ca o


Em arquiteturas de processadores que exploram o paralelismo existente em progra-

mas, uma parte considervel do trabalho de deteco e extrao do paralelismo reside no a ca ca software que gera o cdigo para essa arquitetura. Alm da premissa bsica de traduzir as o e a especicaes de um programa em uma descrio que seja intelig para o processador, co ca vel vrias otimizaes so executadas sobre o programa durante o processo de gerao de a co a ca cdigo. Atravs dessas otimizaes, os requisitos do programa so detectados e mapeados o e co a sobre os recursos oferecidos pelo hardware do processador. Para os propsitos deste o cap tulo, duas atividades realizadas durante a gerao de cdigo sero tratadas com maior ca o a destaque: o escalonamento de instrues e a alocao dos registradores. co ca A arquitetura 2D-VLIW transfere as atividades de escalonar as instrues do proco grama e alocar os registradores da arquitetura para serem tratadas exclusivamente durante o processo de gerao de cdigo. Essas tarefas tm um impacto direto no desempenho da ca o e aplicao em razo de serem as responsveis por determinar quais operaes do programa ca a a co utilizaro quais recursos de hardware. Alm disso, ambas as tarefas requerem algoritmos a e extremamente ecientes, uma vez que tanto o escalonamento de instrues quanto a co alocao de registradores, em suas formas gerais, foram provados como pertencentes ` ca a indica que no h algoritmos de complexidade polinomial para resolver a situao de pior a a ca
De maneira geral, problemas NP-completos so aqueles cujas soluoes timas no podem ser a c o a determinadas em tempo polinomial. Formalmente, um problema NP-completo pertence ao conjunto de problemas que no podem ser resolvidos em tempo polinomial e, mais ainda, um problema em NP a pode ser reducido a esse problema NP-completo.
1

classe de problemas N P-completos1 [33, 74]. A prova de que pertencem ` essa classe a

4.1. Infraestrutura para Gerao de Cdigo ca o

57

caso desses problemas. Como conseqncia, h necessidade de lanar mo de tcnicas ue a c a e heur sticas a m de resolv-los em tempo computacional vivel. e a Para o problema de escalonamento de instrues, uma heur co stica comumente empregada aquela baseada no algoritmo de list scheduling [34, 40], em que o programa e e dividido em regies de cdigo chamadas de blocos bsicos e as operaes desses blocos o o a co so organizadas em DAGs. Seja G = (V, E) um DAG, o algoritmo de list scheduling a vrtices ainda no escalonados, cujos ancestrais j foram escalonados, para participarem e a a da lista de candidatos (Cands); O algoritmo escolhe o vrtice com maior atraso, dentre e os vrtices da lista Cands, para ser escalonado em cada momento; O algoritmo termina e quando a lista Cands est vazia. Na verso proposta por [34], os autores argumentam a a que a complexidade do tempo de execuo de pior caso O(|V |2 ) embora, na prtica, o ca e a tempo de execuo observado seja linear. ca No caso da alocao de registradores, heur ca sticas baseadas no problema de colorao de vrtices de um grafo de interferncia tm se constitu na abordagem mais ca e e e do utilizada [10, 15]. O problema de colorao de vrtices , por si s, um problema N Pca e e o completo. computa o atraso mximo de cada vrtice vi V para um vrtice folha de G; seleciona os a e e

Denio 5 Um grafo de interferncia G = (V, E) um grafo formado pelas variveis ca e e a de um programa que intereferem entre si. O conjunto V formado pelas variveis do e a programa. Existe uma aresta eij = (vi , vj ) E entre as variveis vi e vj se elas interferem a entre si. Isto , se ambas esto vivas2 em um determinado ponto do programa. e a

Basicamente, heur sticas de colorao de vrtices criam um grafo de interferncia ca e e G = (V, E) e tentam colorir os vrtices de G com R cores, R = conjunto de registradores e do processador. Nessa colorao, cada vrtice recebe uma cor e vrtices adjacentes ca e e devem receber cores distintas. Pesquisas recentes em torno do problema de alocao de ca registradores tm mostrado que existem programas cujos grafos de interferncia pertencem e e ` classe dos grafos cordais [9]. Sob essa condio, a colorao pode ser realizada de maneira a ca ca tima em tempo polinomial [38, 65]. o
2

Indica que o valor atual dessas variveis ainda sero usados. a a

58

Cap tulo 4. Gerao de Cdigo na Arquitetura 2D-VLIW ca o

Apesar de amplamente discutidas na literatura da rea, abordagens tradicionais a para os problemas de escalonamento de instrues e alocaao de registradores no se mosco c a tram atrativas para arquiteturas de processadores com diversas restries arquiteturais, co como o caso de 2D-VLIW. Sobre tais arquiteturas, abordagens que utilizam regies de e o cdigo maiores que um bloco bsico e que consideram a multiplicidade de recursos podem o a oferecer ganhos de desempenho para a aplicao. Diante de tal cenrio, a adoo de ca a ca algoritmos ecientes ainda mais necessria. e a No caso espec co de 2D-VLIW, o problema de escalonamento de instrues foi co tratado atravs da proposio de duas heur e ca sticas distintas: um algoritmo baseado em isomorsmo de subgrafos e um algoritmo guloso baseado em list scheduling. O primeiro algoritmo representa tanto as operaes de um programa quanto os recursos da arquitetura co atravs de dois grafos distintos: o grafo do programa e o grafo da arquitetura. O objetivo e do algoritmo de isomorsmo obter um subgrafo do grafo da arquitetura que seja isomorfo e ao grafo do programa. Esse subgrafo indica exatamente quais recursos do processador devem ser utilizados por cada operao. O algoritmo guloso baseado em list scheduling ca estende o algoritmo tradicional de list scheduling adaptando-o para representar a topologia da arquitetura e obedecer `s restries de interconexo. a co a O problema da alocao de registradores na arquitetura 2D-VLIW abordado ca e atravs de uma extenso do algoritmo original de escalonamento de instrues baseado e a co em isomorsmo de subgrafos. Nesse novo algoritmo, o grafo da arquitetura dotado e com vrtices representando os registradores temporrios e globais e, com isso, possibilie a tar que a alocao de registradores seja realizada simultaneamente com a atividade de ca escalonamento. Alm de algoritmos espec e cos para escalonamento de instrues e alocao de co ca registradores, a gerao de cdigo na arquitetura 2D-VLIW tambm trata do problema ca o e de codicar instrues longas em representaes mais simples visando reduzir a latncia co co e de busca de instrues. A soluo encontrada baseada em tcnicas de fatorao de co ca e e ca operandos [5] e executada logo aps a atividade de escalonamento de instrues. e o co Como j apresentado no Cap a tulo 3, a gerao de cdigo para a arquitetura 2Dca o VLIW est a cargo do compilador Trimaran [16]. Mesmo no tendo sido desenvolvido a a

4.2. Algoritmo de Escalonamento Baseado em Isomorsmo de Subgrafos

59

para gerar cdigo considerando arquiteturas como 2D-VLIW, esse compilador oferece o diversos recursos atrativos para arquiteturas com mltiplas unidades funcionais e que u exploram o paralelismo em n vel de instruo. Como exemplo, h a possibilidade de ca a organizar o cdigo em regies que propiciam um nmero maior de operaes que os o o u co blocos bsicos tradicionais. Essa caracter a stica j , por si s, uma fonte de motivao a e o ca para o uso do Trimaran pois permite alcanar maiores n c veis de paralelismo e, por conseqncia, melhor desempenho do que se blocos bsicos fossem utilizados. Apesar de ue a todos os recursos, a infraestrutura Trimaran no possui muitas opes de algoritmos para a co estudo dos problemas de escalonamento de instrues e alocao de registradores. Em se co ca tratando de escalonamento de instrues, os algoritmos implementados originalmente e co que podem ser utilizados por esse compilador so variaes do algoritmo de list scheduling a co e do algoritmo de modulo scheduling [67]. Para o caso da alocao de registradores, ca o algoritmo utilizado uma variao do algoritmo de colorao de vrtices. Embora e ca ca e bastante uteis para arquiteturas baseadas no modelo EPIC, esses algoritmos carecem de vrias adaptaes para serem utilizados numa arquitetura como 2D-VLIW. Alm dessas a co e questes, uma das caracter o sticas fundamentais da arquitetura 2D-VLIW a extrao de e ca padres das instrues obtidas pelo escalonador de maneira a criar instrues codicadas o co co menores que as originais. Essa funcionalidade no existe na infraestrutura Trimaran j a a que seu foco no abrange a codicao de instrues longas. a ca co Diante do exposto, nota-se a necessidade de prover novos algoritmos para os problemas de escalonamento de instrues, alocao de registradores e codicao de instrues co ca ca co para gerar cdigo para a arquitetura 2D-VLIW a partir do compilador Trimaran. As o sees a seguir detalham e exemplicam esses algoritmos mostrando como as solues so co co a mapeadas para a arquitetura 2D-VLIW.

4.2

Algoritmo de Escalonamento Baseado em Isomorsmo de Subgrafos


O isomorsmo de subgrafos uma forma geral do problema de casamento de e

padres e uma generalizao comum de diversos problemas relacionados ` teoria dos o ca a grafos. Alguns exemplos desses problemas so: determinao de caminhos hamiltonianos, a ca

60

Cap tulo 4. Gerao de Cdigo na Arquitetura 2D-VLIW ca o

cliques, determinao de menor caminho, entre outros [29]. Variaes do problema de ca co isomorsmo de subgrafos tm sido usadas em problemas prticos como otimizaes em e a co compiladores, teste de circuitos integrados e processamento de imagens. Denio 6 No problema de isomorsmo de grafos, dois grafos G1 = (V1 , E1 ) e G2 = ca (V2 , E2 ) so ditos isomorfos, denotado por G1 G2 se existe uma bijeo : V1 V2 a ca =

tal que, para todo par de vrtices vi , vj V1 vale que (vi , vj ) E1 se e somente se e ((vi ), (vj )) E2 .

Denio 7 No problema de isomorsmo de subgrafos, o grafo G1 = (V1 , E1 ) isomorfo ca e ao grafo G2 = (V2 , E2 ) se existe um subgrafo de G2 , por exemplo G , tal que G1 G . =
2 2

Para algumas escolhas de G1 e G2 existe uma ordem exponencial de ocorrncias e de isomorsmo de forma que a tentativa de list-las j foi demonstrado como sendo um a a problema N P-completo [33]. Sem perda de generalidade, o grafo G1 ser doravante a chamado de grafo de entrada e o grafo G2 ser denominado grafo base. a A Figura 4.1 mostra um exemplo de isomorsmo de subgrafos. As Figuras 4.1(a) e 4.1(b) mostram o grafo de entrada e o grafo base, respectivamente. O resultado do mapeamento das arestas e vrtices do grafo G1 para o grafo G2 o grafo resultante na e e Figura 4.1(c). Observe que (a) = 6, (b) = 5, (c) = 4, (d) = 3.
1 a b d 2 3 6 5 (d) 3 4 (c) 6 (a) 5 (b)

c (a) Grafo de entrada G1 .

4 (b) Grafo base G2 .

(c) Grafo resultante G . 2

Figura 4.1: Exemplo do problema de isomorsmo de subgrafos. O escalonamento de instrues tem se mostrado como uma das tarefas mais comco plexas na gerao de cdigo para a arquitetura 2D-VLIW. A razo para isso que o ca o a e

4.2. Algoritmo de Escalonamento Baseado em Isomorsmo de Subgrafos

61

compilador obrigado a capturar diversas caracter e sticas do hardware como tamanho da matriz e topologia de interligao, nmero de registradores globais e temporrios ca u a e considerar tudo isso durante a fase de escalonamento. Nesse sentido, tcnicas que e consideram a geometria dos grafos de entrada assim como a topologia da matriz de unidades funcionais, como o caso de algoritmos para o problema de isomorsmo de e subgrafos, podem ser boas alternativas para resoluo do escalonamento de instrues. Um ca co esquema baseado em isomorsmo de subgrafos pode minimizar parte desta complexidade ao lidar com a matriz de UFs na forma de um grafo base e tentar associar os vrtices e e arestas do grafo de entrada com os vrtices e arestas desse grafo base. e Dessa forma, dado um grafo de entrada G1 e um grafo base G2 , o objetivo do escalonador encontrar um subgrafo G2 , G2 G2 , tal que G2 isomorfo a G1 . O e e subgrafo G2 representa os recursos de hardware (UFs e canais de comunicaao) utilizac

dos pelos vrtices (operaes do programa) de G1 . Esse mapeamento de operaes em e co co unidades funcionais gera uma instruo 2D-VLIW completa. A Figura 4.2 exemplica o ca escalonamento de instrues na arquitetura 2D-VLIW como um problema de isomorsmo co de subgrafos. Observe que as unidades funcionais, os registradores de pipeline e suas interligaes, apresentados inicialmente na Figura 3.1, so agora representados como co a vrtices (retngulos) e arestas no grafo base. e a O resultado do escalonamento uma e instruo 2D-VLIW, em que cada posio da instruo possui uma operao que ser ca ca ca ca a executada ` medida que a instruo percorre a matriz de UFs. a ca Problemas de isormosmo de subgrafos pertencem ` classe de problemas N Pa

completos [82]. Com isso, adotar algoritmos ecientes um requisito primordial para e utilizar solues que resolvam esses problemas. No escalonamento de instrues para co co a arquitetura 2D-VLIW, utiliza-se a biblioteca VF para isomorsmo de grafos [22, 23]. Essa biblioteca possui a implementao de alguns algoritmos clssicos para isomorsmo ca a de grafos e subgrafos, incluindo um algoritmo, tambm denominado VF, denido pelos e prprios autores da biblioteca. O motivo para a adoo dessa biblioteca utilizar uma o ca e de suas implementaes para prover o escalonamento de instrues 2D-VLIW. Algumas co co otimizaes foram adicionadas ao cdigo da biblioteca VF a m de tornar seus algoritmos co o aptos para utilizao na atividade de escalonamento de instrues. Alm de um conjunto ca co e

62

Cap tulo 4. Gerao de Cdigo na Arquitetura 2D-VLIW ca o

Grafos de Entrada
addi addi

Grafo Base
addi addi and addi

Resultado do Escalonamento

addi addi and addi


ld
add add

ld

add

add

st

addi

and

addi

addi

111 111 000 000 111 000 111 111 000 000 111 000 111 111 000 000 111 000

st

111 111 000 000 111 111 000 000 111 111 000 000 111 111 000 000 111 111 000 000 111 111 000 000

111 000 1111 0000111 addi 000 1111 0000 111111 111 000000 000 111 111 000 000 1111 0000 111 111 000 000 1111 0000 111111 111 000000 000 1111 0000 111111 111 000000 000 1111 0000 111111 111 000000 000 1111 0000

add ld 000add 000 111 111 1111 0000 st

Figura 4.2: Escalonamento de instrues baseado em isomorsmo de subgrafos. co

de trs heur e sticas que procuram facilitar a determinaao de um isomorsmo, uma das c otimizaes principais consiste em restringir o tempo de processamento do algoritmo na co tentativa de for-lo a apontar uma soluo dentro de um limite de tempo estabelecido. ca ca Caso o isomorsmo no possa ser determinado dentro dessa restrio de tempo, heur a ca sticas visando ` melhoria do desempenho do algoritmo devem ser executadas. Atravs de a e experimentos realizados, foi poss observar que essas otimizaes foram bastante uteis vel co ao escalonar DAGs com mais de 100 ns. o Os parmetros de entrada para o escalonamento de instrues 2D-VLIW baseado a co em isomorsmo de subgrafos so DAGs, gerados pelo compilador Trimaran, e um grafo a base. Alm da indicao da dependncia entre vrtices, esses DAGs carregam consigo e ca e e informao de latncia das operaes e indicao de parmetros de entrada para chamadas ca e co ca a de funes e procedimentos. De posse desses parmetros, o escalonador 2D-VLIW realiza o co a isomosmo de cada DAG para o grafo base. O Algoritmo 1 resume os passos principais do algoritmo de escalonamento de instrues 2D-VLIW baseado em isomorsmo de subgrafos. co A funo subg iso sched() (linha 1) encontra um subgrafo G2 , G2 G2 , isomorfo ca

para G1 . Esse procedimento usa o algoritmo VF para determinar se existe o isomorsmo entre os grafos de entrada e o grafo base. Caso o subgrafo G2 no seja encontrado a (linhas 2-8), o escalonador escolhe uma heur stica (linhas 3-6) com base no valor da

4.2. Algoritmo de Escalonamento Baseado em Isomorsmo de Subgrafos

63

Algoritmo 1 Algoritmo de escalonamento de instrues 2D-VLIW baseado em isomorco smo de subgrafos. ENTRADA: Grafo de entrada G1 e grafo base G2 . SA IDA: Conjunto de instrues 2D-VLIW. co Sched(DAG: G1 , GRAFO BASE: G2 ) 1) G2 = subg iso sched(G1 , G2 , &tag); 2) while (G2 == N U LL) 3) switch(tag) 4) case 0 : topological order(G1 ); 5) case 1 : base graph resize(G2 ); 6) case 2 : DAG global vertices(G1 ); 7) G2 = subg iso sched(G1 , G2 , &tag); 8) end while 9) create 2D-V LIW instruction(G2 );

varivel tag e executa essa heur a stica sobre um dos parmetros de entrada. A heur a stica topological order() (linha 4) realiza a ordenao topolgica no DAG de entrada G1 . A heuca o r stica base graph resize() (linha 5) redimensiona o grafo base com o intuito de oferecer mais opes de combinao para o grafo G1 . A ultima heur co ca stica, DAG global vertices() (linha 6), transforma o DAG G1 em um grafo G1 mais ex vel. Esse novo grafo tem a caracter stica de poder utilizar regies de G2 que no eram consideradas por G1 . o a Note que apenas uma heur stica executada depois de cada tentativa sem sucesso da e funo subg iso sched(). Um dos motivos para utilizao dessas heur ca ca sticas aps a funo o ca e sticas podem acarsubg iso sched() que, para determinados grafos de entrada, as heur retar um maior tempo de processamento por parte do isomorsmo (base graph resize()) ou mesmo, uso demasiado de recursos (DAG global vertices()). Aps o isomorsmo ser nalmente determinado, as operaes do grafo G1 (ou G1 ), o co junto com as UFs do subgrafo G2 , iro compor a(s) instruo(es) 2D-VLIW criada(s) a ca o pela funo create 2D-V LIW instruction() (linha 9). As trs heur ca e sticas descritas nesse algoritmo sero detalhadas nas Subsees 4.2.1, 4.2.2 e 4.2.3. a co No algoritmo VF, funo subg iso sched() no Algoritmo 1, dados dois grafos ca e somente se existe uma funo bijetora que preserva a estrutura dos dois grafos, de ca forma que M mapeia cada ramo do grafo G1 em um ramo do grafo G2 e vice-versa. De G1 = (V1 , E1 ) e G2 = (V2 , E2 ), um mapeamento M V1 V2 um isomorsmo se e

64

Cap tulo 4. Gerao de Cdigo na Arquitetura 2D-VLIW ca o

maneira mais espec ca, o processo de casamento entre os grafos pode ser descrito atravs e de uma representao do espao de estados. Cada estado s, durante o processamento ca c do algoritmo, pode ser associado a uma soluo parcial M (s) que contm apenas um ca e subconjunto dos componentes da funo de mapeamento M . Uma soluo de mapeamento ca ca parcial identica univocamente dois subgrafos de G1 e G2 , G1 (s) e G2 (s), obtidos por meio de uma seleo dos vrtices de G1 e G2 inclu ca e dos nos componentes de M (s), e os ramos conectados a eles. O algoritmo termina com um subgrafo vlido quando todos os vrtices a e de G1 j foram selecionados e o estado nal constitui um isomorsmo entre G1 e o subgrafo a de G2 . Se o algoritmo termina depois de ter selecionado todos os vrtices de G2 e o estado e nal no constitui um isomorsmo de subgrafos, signica que no existe um subgrafo a a em G2 que seja isomorfo para G1 . O Algoritmo 2 apresenta uma verso resumida da a funo subg iso sched(). Essa descrio contm os passos principais responsveis pela ca ca e a determinao do subgrafo isomorfo ao grafo de entrada. ca Algoritmo 2 Algoritmo de isomorsmo de subgrafos. ENTRADA: Grafo de entrada G1 , grafo base G2 e tag. SA IDA: Subgrafo G2 . subg iso sched(DAG: G1 , GRAFO BASE: G2 , TAG: &tag) 1) sched nodes = 0; 2) nodeG1 = next(G1 ); 3) nodeG2 = next(G2 ); 4) while (sched nodes < |V1 | && sched nodes 0) 5) if IsF easible(nodeG1 , nodeG2 ) 6) G2 = AddU sef ulP air(nodeG1 , nodeG2 ); 7) sched nodes = sched nodes + 1; 8) nodeG1 = next(G1 ); 9) nodeG2 = next(G2 ); 10) else 11) if (nodeG2 .index < |V2 |) 12) nodeG2 = next(G2 ); 13) else 14) backtrack(); 15) end if 16) end if 17) end while 18) tag = evaluate(G2 , G1 , G2 ); 19) return G2 ;

4.2. Algoritmo de Escalonamento Baseado em Isomorsmo de Subgrafos

65

A cada iterao do lao (linhas 4-17), o algoritmo verica se o par de vrtices ca c e selecionados (funo next() nas linhas 2-3, 8-9 e 12), nodeG1 e nodeG2 so solues ca a co parciais fact veis para o isomorsmo. A cada par de vrtices fact encontrado (funo e vel ca IsF easible() na linha 5), o subgrafo G2 incrementado (funo AddU sef ulP air() na e ca linha 6) com as informaes sobre os vrtices de G1 e G2 que fazem parte desse par. Um co e par de vrtices fact se possuem as mesmas caracter e e vel sticas (mesmo grau de entrada, grau de sa da, etc.) e contribuem para uma soluo parcial do isomorsmo. Se um par ca de vrtices no uma soluo fact e a e ca vel, deve-se vericar se h ainda outros vrtices de G2 a e que podem ser pesquisados (linhas 11 e 12). Caso todos os vrtices de G2 j tenham sido e a testados, deve-se realizar uma ao de backtracking (linha 14) a m de que um vrtice ca e previamente escalonado de G1 escolha outro vrtice de G2 como par. O algoritmo executa e enquanto existirem vrtices de G1 que ainda no foram escalonados (linhas 4-17). Antes e a do algoritmo nalizar, a funo evaluate() analisa o contedo do subgrafo G2 a m de ca u detectar se o isomorsmo no pde ser conclu e, nesse caso, retornar o resultado para a o do a varivel tag (linha 18). Caso o isomorsmo no seja detectado, a funo evaluate() a a ca analisa os grafos G1 e G2 , assim como o valor atual da varivel tag para indicar um novo a valor de retorno para essa varivel e, como conseqncia, propor a utilizao de uma das a ue ca heur sticas do Algoritmo 1.

O valor V deve ser o maior entre o nmero de vrtices de G1 e G2 pois representar a u e a quantidade mxima de estados visitados pelo algoritmo. Claramente, um algoritmo com a essa complexidade fatorial impraticvel para grafos a partir de um determinado nmero e a u de vrtices. No entanto, os autores [22] argumentam que a situao de pior caso acontece e ca se G1 e G2 so grafos quase completos. De fato, a manipulao de grafos completos no a ca a ocorre no escalonamento de instrues 2D-VLIW uma vez que os grafos de entrada so co a ac clicos e possuem um limite no nmero de arestas de entrada. O grafo base tambm no u e a um grafo completo, uma vez que cada vrtice (as UFs da matriz) possui arestas para e e apenas dois outros vrtices. Nessa situao, a complexidade do algoritmo limitada por e ca e O(|V |2 ).

A complexidade de pior caso desse algoritmo O(|V |!|V |), V = max(|V1 |, |V2 |). e

66

Cap tulo 4. Gerao de Cdigo na Arquitetura 2D-VLIW ca o

4.2.1

Heur stica 1: Ordenao Topolgica ca o


A heur stica de ordenao topolgica prov uma ordenao dos vrtices do grafo ca o e ca e

G1 que ser considerada durante a execuo da funo subg iso sched(). Dependendo da a ca ca ordenao de G1 , o algoritmo de isomorsmo pode no apresentar um bom desempenho ca a pois ter que executar muitos passos de backtracking. A Figura 4.3 mostra um exemplo a onde a ordenao topolgica pode evitar passos de backtracking desnecessrios por parte ca o a do algoritmo de escalonamento. As Figuras 4.3(a)-4.3(b) mostram um DAG de entrada no ordenado e o escalonamento resultante sem a utilizao de backtrackings. As Figua ca ras 4.3(c)-4.3(d) mostram o DAG de entrada ordenado a partir dos vrtices ra (vrtices e zes e com as letras a e b) para os vrtices folhas (vrtice com a letra d) e o escalonamento e e resultante sem a realizao de qualquer passo de backtracking. Os nmeros no lado ca u direito de cada vrtice indicam a ordem seguida pelo escalonador. Os retngulos em e a branco, Figuras 4.3(b) e 4.3(d), representam as UFs dispon veis que podem ser usadas pelo escalonador. Os retngulos hachurados indicam UFs j ocupadas. a a A Figura 4.3(b) mostra o estado do algoritmo de isomorsmo de subgrafos depois de escalonar os vrtices a, c e d. Para preservar as dependncias entre os vrtices, e e e os vrtices d e c devem sofrer o backtracking de maneira que o vrtice c possa ser e e escalonado novamente sobre uma U Fi que possua uma aresta de entrada de alguma U Fj dispon vel. Essa U Fj ser usada pelo vrtice b. Observe que esses passos de backtrackings a e no acontecem na Figura 4.3(c) pois o DAG de entrada foi ordenado obedecendo as a dependncias do grafo. Ao escalonar os DAGs de entrada seguindo as dependncias entre e e os vrtices, o resultado nal na Figura 4.3(d) obtido sem a necessidade de realizar e e qualquer backtracking. Existem dois algoritmos bsicos de ordenao topolgica implementados junto ao a ca o escalonador de instrues 2D-VLIW. Um algoritmo baseado na busca em largura no co e DAG de entrada. O objetivo desse algoritmo gerar uma ordenao tal que vrtices e ca e descendentes so mantidos to prximos quanto poss a a o vel (na ordenao) de seus anca cestrais. O resultado dessa ordenao faz com que um vrtice ancestral seja sempre ca e escalonado primeiro e seus descendentes sero escalonados to logo quanto poss a a vel. O segundo algoritmo de ordenao topolgica baseado numa soluo do problema de Binca o e ca

4.2. Algoritmo de Escalonamento Baseado em Isomorsmo de Subgrafos

67

1111 0000 1111 0000 1111 0000 1111 0000

Registrador de Pipeline EX 1 /EX 2

1111 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 0000

Registrador de Pipeline EX 2 /EX 3

Registrador de Pipeline EX 3 /EX 4

(a) DAG de entrada no ordenado. a

1111 0000 1111 0000 1111 0000 1111 0000 (b) Estado do escalonamento sem qualquer backtracking para o DAG 4.3(a). 1111 0000 1111 0000 1111 0000 a b 1111 0000
Registrador de Pipeline EX 1 /EX 2

1111 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 0000

Registrador de Pipeline EX 2 /EX 3

Registrador de Pipeline EX 3 /EX 4

(c) DAG de entrada ordenado.

1111 0000 1111 0000 1111 0000 1111 0000 (d) Estado do escalonamento sem qualquer backtracking para o DAG 4.3(c).

Figura 4.3: Exemplo de ordenao topolgica. ca o

68

Cap tulo 4. Gerao de Cdigo na Arquitetura 2D-VLIW ca o

Packing [42] denominado Best Fit Decreasing. Nesse algoritmo, os vrtices que fazem e parte do caminho cr tico de um DAG so escalonados primeiro. A motivao para tal a ca algoritmo evitar situaes onde partes de um DAG sejam escalonadas em regies que e co o poderiam ser ocupadas por vrtices do caminho cr e tico. Ambos os algoritmos de ordenao ca tm complexidade de pior caso O(|V1 | + |E1 |). e Embora bastante util, existem situaes onde esta heur co stica no suciente para a e possibilitar o isomorsmo. Nessas situaes, o algoritmo pode lanar mo das heur co c a sticas apresentas nas Subsees 4.2.2 e 4.2.3. co

4.2.2

Heur stica 2: Redimensionamento do Grafo Base


Esta heur stica executada quando um grafo base G2 no possui vrtices sucientes e a e

para comportar um subgrafo isomorfo para G1 . Basicamente, a heur stica redimensiona o grafo base, formando assim um novo grafo base maior e com mais possibilidades de comportar um subgrafo isomorfo para G1 . Pode-se entender esta heur stica como um desenrolamento do grafo base, uma vez que o aumento do tamanho desse grafo consee guido atravs da utilizao de mais vrtices e arestas ao longo do tempo. O efeito dessa e ca e heur stica pode ser comparado com uma classe de otimizaes de cdigo chamadas de co o software pipeline [4]. A Figura 4.4 exemplica o desenrolamento de um grafo base, a matriz de UFs da Figura 4.4(a), em um grafo base ainda maior apresentado na Figura 4.4(b). Analisando a matriz de UFs B, pode-se notar que as UFs de uma linha i dessa matriz, indicam que uma UF de uma matriz desenrolada B pode ler valores produzidos por UFs de dois vrtices da matriz A para dois vrtices da matriz B. e e Observe que o DAG na Figura 4.5(a) no pode ser escalonado sobre um grafo a base composto por apenas uma matriz de UFs. Isso ocorre porque o vrtice 2 possui e 3 descendentes e os vrtices dos grafo base possuem apenas 2 descendentes. A soluo e ca desenrolar o grafo base at que se consiga vrtices com 3 descendentes. Analisando e e e novamente a Figura 4.4(b), poss notar que um grafo base formado por 2 matrizes e vel de UFs possuem vrtices com mais de dois descendentes. Aps desenrolar um grafo base, e o 2 i 4, possuem mais arestas que as UFs de mesma linha na matriz A. Essas arestas

da matriz A e da prpria matriz B. A Figura 4.4(c) mostra os detalhes de interconexo o a

4.2. Algoritmo de Escalonamento Baseado em Isomorsmo de Subgrafos

69

(a) Grafo base=uma matriz de UFs.

(b) Grafo base desenrolado=duas matrizes de UFs.

(c) Detalhe da interligaao entre a matriz A e a matriz B. c

Figura 4.4: Exemplo de desenrolamento do grafo base.

70

Cap tulo 4. Gerao de Cdigo na Arquitetura 2D-VLIW ca o

1
1

2 3 4

(a) Grafo de entrada.


1
1 2

(b) Grafo base.

4 5

A
5 3 4

(c) Grafo de entrada.

(d) Grafo base desenrolado.

Figura 4.5: Exemplo de redimensionamento do grafo base. o resultado nal do escalonamento na Figura 4.5(d) obtido. Por simplicidade, o grafo e base representado sem as interligaes entre as UFs. Mesmo assim, deve estar claro que e co essas interligaes existem na matriz de UFs e so consideradas durante o escalonamento. co a Diferente das demais heur sticas utilizadas durante a etapa de escalonamento, esta heur stica modica o grafo base, ao invs do grafo de entrada. Portanto, a complexidade e de pior caso limitada pelas caracter e sticas do grafo base e no mais pelo grafo de entrada. a essa complexidade que o desenrolamento de um grafo base aumenta o nmero de vrtices e u e de maneira linear, enquanto que a quantidade de arestas incrementada de maneira e quadrtica. a Nesse caso, a heur stica de dimensionamento tem complexidade O(|E2 |2 ). A razo para a

4.2.3

Heur stica 3: Vrtices Globais no Grafo de Entrada e


A heur stica de insero de vrtices globais no grafo de entrada funciona como um ca e

mecanismo para exibilizar esse grafo na tentativa de acelerar o escalonamento sobre a matriz de unidades funcionais.

4.2. Algoritmo de Escalonamento Baseado em Isomorsmo de Subgrafos

71

Durante o escalonamento, o escalonador tenta associar os DAGs de entrada com o grafo base. Se o DAG de entrada complexo ao ponto do escalonador no conseguir e a realizar o isomorsmo dentro de um intervalo de tempo, o algoritmo de escalonamento pode utilizar esta heur stica para exibilizar o grafo G1 a m de encontrar solues mais co rpidas. Basicamente, a heur a stica converte alguns vrtices de G1 em uma nova classe de e vrtices, denominados vrtices globais, com o intuito de permitir ao escalonador utilizar e e regies diferentes do grafo base para realizar o escalonamento. Os vrtices escolhidos para o e serem convertidos so aqueles com o maior nmero de arestas de sa (maior nmero de a u da u descendentes). A razo para essa escolha est baseada em alguns experimentos emp a a ricos que investigaram a causa de backtrackings. Nesses experimentos foi poss notar que os vel vrtices com o maior nmero de arestas de sa so a causa mais comum para chamadas e u da a ao procedimento de backtracking. A Figura 4.6 resume como essa heur stica funciona.

Na Figura 4.6(a) o vrtice 2 possui 3 descendentes e o grafo base, Figura 4.6(b), e tem vrtices dispon e veis sucientes para realizar o isomorsmo com o DAG de entrada. No entanto, o mapeamento de arestas do DAG sobre as arestas do grafo base faz com que o algoritmo de isomorsmo esteja propenso a explorar apenas os vrtices conectados atravs e e de registradores temporrios. A soluo encontrada converter o vrtice 2 em um vrtice a ca e e e 2g (vrtice global). O termo vrtice global indica que o resultado da operao de 2g e e ca ser armazenada em um registrador global. Essa mudana possibilita maior exibilidade a c para o escalonador, uma vez que valores armazenados em registradores globais podem ser lidos por qualquer vrtice do grafo base. Obviamente, desde que os atrasos causados pela e escrita e posterior leitura sejam respeitados.

Pode-se observar que o resultado dessa heur stica torna o grafo de entrada muito mais ex vel com relao ao escalonamento de seus vrtices, permitindo-o usar outros ca e vrtices do grafo base que no estavam dispon e a veis sem a insero do vrtice global. A ca e uma unica vez, cada um dos vrtices do grafo de entrada ` procura daqueles com maior e a grau de sa da. complexidade de pior caso dessa heur stica est limitada por O(|V1 |), j que examina, a a

72

Cap tulo 4. Gerao de Cdigo na Arquitetura 2D-VLIW ca o

111 000 1111111 0000000 111 000 1111111 0000000 111 1111111 0000000 111 000 1111111 0000000 1 000 111 000 1111111 0000000 111 000 1111111 0000000 111 000 1111111 0000000 111 000 1111111 0000000 111 000 1111111 0000000 2 000 111 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000

(a) DAG de entrada.


111111 000000 1111 0000 111111 000000 1111 0000 111111 000000 1111 0000 111111 000000 1111 0000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111 0000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111 000 1111111 0000000 111 000 1111111 0000000 111 000 1111111 0000000 111 000 1111111 0000000 111 000 1111111 0000000

111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111 000 1111111 0000000 111 000 1111111 0000000 111 000 1111111 0000000 111 000 1111111 0000000 111 000 1111111 0000000

111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 111 000 111111 000000 111 000 111111 000000 111 000 111111 000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111 000

(b) Escalonamento resultante.


1

2g

111 000 1111111 0000000 111 000 1111111 0000000 111 000 1111111 0000000 111 1111111 0000000 1 000 111 000 1111111 0000000 111 000 1111111 0000000 111 000 1111111 0000000 111 000 1111111 0000000 111 000 1111111 0000000 2g 000 111 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000

(c) DAG de entrada com um vrtice global 2g. e


111111 000000 1111 0000 111111 000000 1111 0000 111111 000000 1111 0000 111111 000000 1111 0000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111 0000111 111111 000000 1111000 0000000 111111 000000 1111000 0000111 111111 000000 1111000 0000111 111 000 1111000 0000111 111 000 1111000 0000111 111 000 1111000 0000111 111 000 1111000 0000111 111 000 1111 0000111

111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111000 1111000 0000111 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111 000 1111111 0000000 111 000 1111111 0000000 111 000 1111111 0000000 111 000 1111111 0000000 111 000 1111111 0000000

111111 000000 111111 000000 111111 000000 111111 000000 3 4 111111 000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 111 000 111111 000000 111 000 111111 000000 5 000 111 111111 000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111111 000000 1111111 0000000 111 000

(d) Escalonamento resultante depois da inserao do vrtice global. c e

Figura 4.6: Exemplo da heur stica que inser vrtice global no DAG. e

4.3. Algoritmo de Escalonamento Guloso

73

4.3

Algoritmo de Escalonamento Guloso


O algoritmo de list scheduling para 2D-VLIW utiliza tcnicas gulosas para realizar e

o escalonamento considerando cada vrtice do grafo de entrada separadamente. Como em e qualquer algoritmo de list scheduling, este algoritmo escalona cada vrtice de acordo com e algum critrio pr-estabelecido no conjunto de vrtices candidatos. Dada uma operao e e e ca opi a ser escalonada, o algoritmo tenta escolher uma UF dispon de maneira a agrupar a vel operao opi na mesma instruo que seus vrtices ancestrais, com o intuito de aumentar ca ca e o nmero de operaes por instruo. Se no for poss encontrar uma UF que satisfaa u co ca a vel c essa condio, o algoritmo escolhe a primeira UF dispon ca vel, obedecendo a dependncia e e as restries de interligao das UFs. co ca Observe que, nesse caso, a operao opi ca e armazenada em uma instruo 2D-VLIW diferente de seus antecessores. Da mesma forma ca que o escalonamento baseado em isomorsmo, a estratgia de escalonamento executa um e procedimento de backtracking toda vez que no h uma soluo de escalonamento poss a a ca vel, de acordo com o estado do escalonamento e as restries de tempo, para o vrtice atual. co e Mesmo acarretando uma complexidade exponencial, o procedimento de backtracking e necessrio para garantir que o escalonamento obedea as dependncias entre os vrtices a c e e do grafo de entrada. A estratgia de escalonamento guloso baseada em list scheduling resumida atravs e e e do Algoritmo 3 que apresenta uma estrutura de escalonamento similar `quela apresentada a no Algoritmo 1. Exceto pelas linhas 1 e 7, os passos desse algoritmo so os mesmos do a Algoritmo 1 discutido na Seo 4.2, com exceo apenas da retirada da heur ca ca stica de redimensionamento do grafo base, uma vez que essa heur stica no mais necessria na a e a estratgia de list scheduling. As mesmas heur e sticas para o problema de isomorsmo de subgrafos podem ser aplicadas nos parmetros de entrada desse novo algoritmo. Alm a e disso, as mesmas restries de tempo usadas no algoritmo de isomorsmo so tambm co a e usadas no Algoritmo 3. O Algoritmo 4 detalha os passos principais da funo greedy ls sched() utilizada ca no Algoritmo 3. O lao principal (linhas 3-12) escolhe os vrtices (operaes) do conjunto Cand de c e co acordo com sua ordenao topolgica. A matriz M usada para armazenar o mapeamento ca o e

74

Cap tulo 4. Gerao de Cdigo na Arquitetura 2D-VLIW ca o

Algoritmo 3 Estratgia de escalonamento baseado no algoritmo guloso de List Schedue ling. ENTRADA: Um grafo de entrada G1 e um grafo base G2 . SA IDA: Conjuntos de instrues 2D-VLIW. co LS Sched(DAG: G1 , BASE GRAPH: G2 ) 1) G2 = greedy ls sched(G1 , G2 , &tag); 2) while (G2 == N U LL) 3) switch(tag) 4) case 0 : topological order(G1 ); 5) case 1 : DAG global vertices(G1 ); 6) G2 = greedy ls sched(G1 , G2 , &tag); 7) end while 8) create 2D-V LIW instruction(G2 );

Algoritmo 4 Algoritmo de escalonamento guloso baseado em List Scheduling. ENTRADA: Grafo de entrada G1 e grafo base G2 . SA IDA: Grafo G2 representando todas as UFs utilizadas pelos vrtices de G1 . e greedy ls sched(DAG: G1 , BASE GRAPH: G2 , TAG: &tag) 1) Cand = G1 .root; 2) M [|V1 |][|V2 |]; 3) while (Cand = ) 4) i = position(M, Cand.top); 5) F U = f ind available f u(M, i); 6) if (F U == N U LL) 7) backtrack(); 8) else 9) inst = f ind minimum inst(M, F U, i); 10) M [i][F U ] = inst; 11) end if 12) end while 13) G2 = create G2 (M ); 14) tag = evaluate(G2 , G1 , G2 ); 15) return G2 ;

4.3. Algoritmo de Escalonamento Guloso

75

entre uma operao opi e uma UF U Fj e, principalmente, saber qual instruo conter ca ca a a operao opi . O nmero de linhas de M dado por |V1 | enquanto que o nmero de ca u e u colunas dado por |V2 |. A posio M [i][j] armazena o nmero da instruo onde a e ca u ca

operao opi ser armazenada e, alm disso, indica que essa operao ser executada ca a e ca a para a operao opi , de acordo com as restries de dependncia e interligao das ca co e ca

na U Fj . A funo f ind available f u() (linha 5) encontra a primeira UF dispon ca vel UFs. Se nenhuma UF encontrada, o procedimento backtrack() (linha 7) chamado e e de maneira que o(s) ancestral(is) direto(s) de opi ocupe uma nova posio na tentativa ca de possibilitar um novo escalonamento para essa operao. Quando uma UF dispon ca vel encontrada (linha 8), determina-se uma instruo que possa armazenar opi atravs da e ca e o e ca funo f ind minimum inst(). Aps isso, a matriz M atualizada com a informao da ca instruo que contm opi . A funo create G2 () recebe a matriz M como entrada e cria ca e ca um grafo G2 com informaes sobre as UFs utilizadas no escalonamento. co Ao considerar apenas a informao de cada vrtice individualmente, algoritmos ca e baseados em list scheduling obtm um desempenho muito aqum das expectativas em are e quiteturas com diversas restries como 2D-VLIW. Um exemplo disso que o tratamento co e local dado por um algoritmo desse tipo gera um nmero considervel de backtrackings u a que, por sua vez, tm um impacto direto no desempenho do escalonador. Como exemplo, e da rvore, passos de backtracking. Essa complexidade domina o desempenho do algoritmo a e acaba por determinar sua complexidade nal. Mesmo com a possibilidade de ocorrncia e de backtrackings tambm no algoritmo de isomorsmo, a possibilidade menor pois o e e algoritmo garante, a cada tentativa de escalonamento, que um vrtice antecessor seja e escalonado numa UF que tenha arestas livres para comportar os vrtices sucessores. e O exemplo a seguir mostra como o algoritmo guloso baseado em list scheduling escalona os vrtices de um grafo de entrada sobre a matriz de unidades funcionais. e Considere o DAG apresentado originalmente na Figura 4.3(c) e mostrado novamente na Figura 4.7 como grafo de entrada. A soluo apresentada pelo algoritmo pode ser vista ca na Tabela 4.1. numa situao onde o grafo de entrada uma rvore, h possivelmente O(2h ), h = altura ca e a a

76

Cap tulo 4. Gerao de Cdigo na Arquitetura 2D-VLIW ca o

Figura 4.7: Grafo de entrada. 1 1 -1 -1 -1 2 0 1 -1 -1 3 0 0 0 0 4 0 0 0 0 5 0 0 0 0 6 0 0 1 -1 7 0 0 0 0 8 0 0 0 0 9 0 0 0 0 10 0 0 0 1 11 0 0 0 0 12 0 0 0 0 13 0 0 0 0 14 0 0 0 0 15 0 0 0 0 16 0 0 0 0

a(0,0) b(0,0) c(a,b) d(c,0)

Tabela 4.1: Resultado do escalonamento baseado no algoritmo guloso de list scheduling.

A primeira linha da Tabela 4.1 representa as unidades funcionais presentes na arquitetura. Os nmeros colocados em cada coluna remetem a Figura 3.1. A primeira u ` coluna mostra os vrtices que compem o grafo de entrada, de acordo com a ordem e o ditada pelo algoritmo de ordenao topolgica. Junto a cada vrtice, h a informao de ca o e a ca dependncia, entre parnteses, indicando os ancestrais (x, y) do vrtice. Se x = 0 ou y = 0, e e e signica que o vrtice atual no possui ancestral(is). Antes de iniciar o algoritmo, a matriz e a preenchida com zeros indicando que nenhuma UF foi escolhida. Conforme especicado e no Algoritmo 4, a operao opi , da linha i, escalonada em uma U Fj dispon ca e vel. O escalonamento da operao opi sobre U Fj deve obedecer `s seguintes condies: ca a co M [i, j] = 0. caso opk opi e opk escalonada previamente em M [k, l] e opi em M [i, j], ento e a deve existir uma aresta de comunicao elj = (vl , vj ) E2 . ca

4.4. Alocao de Registradores ca

77

Se essas condies so satisfeitas, o algoritmo marca a posio M [i, j] = 1 para co a ca indicar que a operao opi utilizar a U Fj na instruo 1. Depois que a U Fj est ocupada, ca a ca a o algoritmo coloca uma marca n, onde n o nmero da ultima instruo 2D-VLIW que e u ca da linha i estejam em uso no momento do escalonamento de opi , o algoritmo escolhe a primeira posio M [i, j] que satisfaa as dependncias de opi e remarca essa posio, ca c e ca informando a utilizao dessa U Fj em uma nova instruo. ca ca E interessante observar que o resultado obtido pelo algoritmo de list scheduling para o grafo da Figura 4.7 foi o mesmo resultado do algoritmo de isomorsmo de subgrafos para o mesmo grafo de entrada. No entanto, deve-se atentar que o algoritmo de list scheduling realiza um nmero bem maior de backtrackings que o algoritmo baseado em u isomorsmo de subgrafos uma vez que no considera a topologia completa do grafo de a entrada e sim as dependncias individuais dos vrtices. Os resultados dos experimentos do e e Cap tulo 5 conrmam as diferenas de desempenho e a qualidade do resultado ao comparar c o algoritmo de list scheduling com os resultados obtidos pelo algoritmo de isomorsmo de subgrafos. utilizou essa UF, nas posies M [i + 1, j], M [i + 2, j] . . . , M [|V1 |, j]. Caso todas as UFs co

4.4

Alocao de Registradores ca
As fases de alocao de registradores e o escalonamento de instrues podem ser ca co

realizados conjuntamente na arquitetura 2D-VLIW. Na verdade, a soluo encontrada ca para lidar com o problema de alocao de registradores usar a mesma tcnica baseada ca e e em isomorsmo de subgrafos para ambas as tarefas de escalonamento e alocao. Com a ca adio dessa caracter ca stica, os grafos de entrada e o grafo base devem sofrer alteraes j co a que precisam considerar a alocao dos resultados/operandos em registradores. ca Na soluo do problema de alocao de registradores baseada em isomorsmo de ca ca subgrafos, o escalonador deve passar a considerar trs restries adicionais durante o e co escalonamento: 1. Em uma cadeia de dependncia opj , opk opi , a operao opi pode ser escalonada e ca vivos na entrada da U Fm .

em uma U Fm se e somente se opj e opk j foram escalonadas e seus resultados esto a a

78

Cap tulo 4. Gerao de Cdigo na Arquitetura 2D-VLIW ca o

2. Uma operao opi pode ser escalonada em uma U Fm apenas se, pelo menos, um dos ca registradores temporrios de U Fm estiver livre. Caso opi armazena seu resultado em a um registrador global, o escalonador deve vericar se, na linha de U Fm da matriz de UFs, existe uma aresta livre para o banco de registradores globais. 3. Se no existirem registradores temporrios livres no momento do escalonamento da a a operao opi , um cdigo de spill 3 deve ser inserido e escalonado a m de garantir ca o a semntica correta de execuo para opi e, conseqentemente, para o programa. a ca u Outrossim, a mesma ao deve ocorrer caso o registrador em questo seja global. ca a As duas primeiras restries j esto implementadas em uma ferramenta para co a a escalonamento e alocao de registradores considerando a arquitetura 2D-VLIW. Sobre ca a terceira restrio, o uso e manipulao de cdigo de spill durante a alocao de reca ca o ca gistradores 2D-VLIW assim como melhorias no algoritmo de alocao constituem o foco ca de investigao de um trabalho de mestrado iniciado no 2 semestre/2006 e que est em ca a desenvolvimento no LSC/IC-UNICAMP pelo estudante Lu Guilherme Pereira. Para os s experimentos envolvendo alocao de registradores no Cap ca tulo 5, foi a manipulao de ca spill code fornecida pelo compilador Trimaran. A Figura 4.8 exibe a representao dos bancos de registradores temporrios como ca a vrtices do grafo base. A Figura 4.8(a) detalha como uma UF interligada aos seus e e registradores e na Figura 4.8(b) h a representao desses registradores no grafo base. a ca Por simplicidade, a Figura 4.8 omite os detalhes de interconexo entre os registradores a globais e as UFs. Deve estar claro que qualquer registrador global pode ser lido e escrito por qualquer UF desde que o limite do uso de portas de leitura e escrita sejam obedecidos conforme discutido na SubSeo 3.1.2. ca Na Figura 4.8, uma aresta cont nua eij = (U Fi , rtj ) representa uma porta de escrita da U Fi para o registrador rtj . A aresta tracejada representa uma porta de leitura que pode ser usada pela UF. Cada UF escreve seus resultados em apenas um banco de registradores temporrios mas pode realizar a leitura a partir de de dois bancos diferentes. a
O cdigo de spill possibilita que o valor de um registrador seja armazenado na memria, liberando o o assim um registrador para ser usada pela operaao que est executando atualmente. c a
3

4.4. Alocao de Registradores ca

79

Banco de Registradores Globais

Registrador Pipeline ID/EX1

UF1
RT0 RT1

UF2
RT0 RT1

Registrador Pipeline EX /EX 1 2

UF5
RT0 RT1

UF6
RT0 RT1

(a) Interligaao entre UFs e os registradores. c


Banco de Registradores Globais
Registrador Pipeline ID/EX
UF UF

RT RT

RT RT

Registrador Pipeline EX /EX 1

UF

UF

RT RT

RT RT

(b) Representaao dos registradores no grafo base. c

Figura 4.8: Registradores globais e temporrios como vrtices do grafo base. a e

80

Cap tulo 4. Gerao de Cdigo na Arquitetura 2D-VLIW ca o

Outro ponto importante a ser observado que os valores lidos do banco de registradores e globais so enviados para as UFs atravs de registradores de pipeline. a e A Figura 4.9(b) exibe o mesmo grafo de entrada apresentado na Figura 4.9(a) agora caracterizado com vrtices representando os registradores. Nessa gura, pode-se observar e a presena de novos vrtices entre os pares de vrtices a c, b c e c d. O resultado c e e do escalonamento e da alocao de registradores considerando esse grafo de entrada sobre ca a matriz de UFs com seus registradores temporrios apresentado na Figura 4.9(c). a e O resultado do escalonamento e alocao de registradores, Figura 4.9(c), utiliza ca as mesmas UFs da soluo obtida na Figura 4.3(d) mas, agora, considera a alocao de ca ca registradores. A vantagem adicional nesta abordagem de alocao de registradores a ca e determinao de quais registradores sero utilizados e, principalmente, garantir que o reca a sultado de uma operao esteja vivo na entrada das UFs das operaes dependentes. Uma ca co considerao importante a respeito da complexidade do algoritmo de isomorsmo com a ca e introduo da alocao de registradores. Na realidade, essa nova atividade no aumenta ca ca a a complexidade do problema j que os vrtices representando registradores so denidos a e a como uma classe especial de vrtices, diferente da classe dos vrtices que so operaes e e a co e UFs. O algoritmo de escalonamento considera apenas vrtices de mesma classe como e potenciais para o isomorsmo e, com isso, no h confuso entre vrtices representando a a a e operaes e vrtices representando registradores. De fato, uma conseqncia gerada com co e ue a introduo desses novos vrtices o aumento do nmero de vrtices e arestas dos dois ca e e u e grafos o que, de certa forma, pode impactar o tempo de processamento do algoritmo de escalonamento e alocao. No entanto, as heur ca sticas apresentadas nas SubSees 4.2.1co 4.2.3 procuram justamente exibilizar os grafos de entrada e o grafo base na tentativa de facilitar o isomorsmo e, como conseqncia, melhorar o desempenho do escalonador. ue

4.5

Codicao de Instrues ca co
De maneira geral, programas que utilizam instrues longas ocupam uma quantico

dade total de memria maior do que aqueles que adotam instrues de tamanhos menores. o co Na tentativa de reduzir esse uso de memria e, ao mesmo tempo, maximizar o desempenho o da atividade de busca de instrues, algumas arquiteturas adotam tcnicas de compresso co e a

4.5. Codicao de Instrues ca co

81

(a) Representaao original do grafo de entrada. c


a b

(b) Representaao do grafo de entrada com vrtices indicando o uso de registradores. c e

(c) Resultado do escalonamento e da alocaao de registradores. c

Figura 4.9: Grafo de entrada representando as operaes e registradores e o resultado co nal do escalonamento com alocao de registradores. ca

82

Cap tulo 4. Gerao de Cdigo na Arquitetura 2D-VLIW ca o

do tamanho das instrues. Originalmente, a arquitetura 2D-VLIW armazena e busca na co memria instrues longas formadas por operaes que sero executadas sobre a matriz de o co co a UFs. Sendo assim, a abordagem adotada por 2D-VLIW para reduzir a rea de memria a o ocupada pelas instrues baseada em uma estratgia de codicao de instrues. Essa co e e ca co tcnica visa ` reduo do tamanho da instruo que armazenada na memria ao mesmo e a ca ca e o tempo em que mantm a via de dados to simples quanto poss e a vel. A estratgia de codicao formada por um algoritmo que fatora os padres das e ca e o instrues e obtm uma instruo codicada e um padro que, junto com essa codicao, co e ca a ca permite recriar a instruo completa. ca Denio 8 Uma instruo codicada I contm operandos no redundantes de uma ca ca e a instruo original e no codicada S e um campo de endereo para o padro que representa ca a c a a instruo original. ca

Denio 9 Um padro P de uma instruo no codicada S formado pelo conjunto ca a ca a e ponteiros para os operandos presentes na instruo codicada I. ca das operaes op1 , op2 , . . . , opn S,n =quantidade de UFs da matriz, juntamente com co

Com a introduo das instrues codicadas e padres de intrues, o estgio ca co o co a de decodicao passa a ter uma atividade adicional. Antes de apresentar essa nova ca atividade, deve-se ter em mente que as instrues codicadas so armazenadas na meco a mria e na cache de instrues da mesma forma como acontecia com as instrues no o co co a codicadas. Os padres de instrues so tambm armazenados na memria. A diferena o co a e o c que os padres utilizam uma cache espec e o ca denominada cache de padres. Diante o desse contexto, o processo de busca e decodicao passa a ser: ca No estgio de busca de instruo, uma instruo codicada buscada na memria a ca ca e o Obviamente, a cache de n 2 e a memria s sero utilizadas, respectivamente, vel o o a caso a instruo procurada no seja encontrada na cache de n 1 e na cache de ca a vel n 2. vel

utilizando a hierarquia: cache de instrues no n 1, cache de n 2, memria. co vel vel o

4.5. Codicao de Instrues ca co

83

No estgio de decodicao, enquanto os registradores globais so lidos, busca-se a ca a um padro de acordo com o campo de endereo presente na instruo codicada. A a c ca busca do padro segue a hierarquia: cache de padres, cache de n 2, memria. a o vel o De posse do padro e da instruo codicada, a decodicao da instruo realizada a ca ca ca e e, a partir de ento, tem-se uma instruo completa cujas operaes sero executadas a ca co a na matriz de UFs. De maneira parecida com as tcnicas tradicionais de compresso de cdigo baseadas e a o em fatorao de operandos [5, 30, 32], a tcnica de codicao de instrues 2D-VLIW ca e ca co extrai padres a partir de operandos redundantes na instruo no codicada. Essa o ca a estratgia gera uma considervel reduo no tamanho da instruo codicada, uma vez que e a ca ca dados redundantes no estaro mais presentes em seu contedo. Essa tcnica est pautada a a u e a na sobrejeo intr ca nseca entre instrues e padres. Pesquisas anteriores [18, 77] focando co o a busca de padres de instrues, descobriram que a funo que mapeia o conjunto de o co ca instrues de um programa CI para o conjunto de padres dessas instrues CP obedece co o co ao comportamento de uma funo sobrejetora. Em outras palavras, dado um conjunto ca
n m

de instrues codicadas CI = co
j=1

Ij , um conjunto de padres CP = o
i=1

Pi , existe um

mapeamento f tal que

Pl = f (Ii ) = f (Ij ) = f (Ik ), i = j = k, {Ii , Ij , Ik } CI, Pl CP

onde

(4.1)

Observe que a funo f na Equao 4.1 sobrejetora pois mapeia instrues ca ca e co diferentes sobre um mesmo padro Pl . a Como j apresentado no Cap a tulo 3, existem algumas restrioes na arquitetura 2Dc VLIW envolvendo o nmero de portas dispon u veis nos registradores globais. Essas restrices devem ser levadas em considerao durante o processo de codicao de instrues j o ca ca co a que tambm representam uma limitao sobre os tipos de operaes que podem fazer parte e ca co

84

Cap tulo 4. Gerao de Cdigo na Arquitetura 2D-VLIW ca o

de uma instruo. Uma conseqncia da aplicao dessas restries arquiteturais durante ca ue ca co a codicao de uma instruo que o nmero de instruoes codicadas geralmente ca ca e u c e maior que o nmero de instrues no codicadas. Assim, a existncia da sobrejeo u co a e ca entre o conjunto de instrues e o conjunto de padres uma condio necessria para co o e ca a que essa estratgia possa reduzir a quantidade de memria utilizada por um programa. Os e o resultados apresentados no Cap tulo 5 comprovam a existncia dessa sobrejeo e, mais e ca importante, mostram a reduo no tamanho do programa acarretada por essa tcnica. ca e Semelhante ` analogia proposta no Cap a tulo 3, envolvendo registradores e chamadas de funes, pode-se entender a tcnica de codicao como uma chamada de funo. co e ca ca Os parmetros de entrada da funo so os operandos que esto na instruo codicada. a ca a a ca A funo o prprio padro da instruo e o contedo da funo so as operaes que ca e o a ca u ca a co so armazenadas pelo padro. Quando uma nova instruo buscada na memria, isso a a ca e o signica que os parmetros esto sendo repassados para a funao. A chamada ` funo a a c a ca e equivalente ` busca do padro na cache. A execuo da funo corresponde ` execuo a a ca ca a ca das operaes individuais que compem o padro. co o a Um ponto importante aqui entender como funciona o algoritmo para criar as e instrues codicadas. Em linhas gerais, o algoritmo para codicao analiza todas as co ca instrues no codicadas geradas pelo escalonador. Para cada instruo no codicada S, co a ca a a primeira tarefa do algoritmo criar uma instruo codicada vazia I e um padro vazio e ca a armazena o cdigo da operao opk em um campo de Pj e verica se os operandos de opk o ca P . Considere uma instruo Sj onde, para cada operao opk Sj , 1 k 16 o algoritmo ca ca

esto na instruo codicada Ij . Em caso positivo, o algoritmo adiciona um ponteiro para a ca esses operandos em Pj . Considerando que operandos dos registradores globais so lidos no a estgio de decodicao (em paralelo com a decodicao da instruo), esses operandos a ca ca ca so armazenados nas posies iniciais de Ij . A quantidade de posies reservadas para os a co co operandos de registradores globais depende do nmero de portas de leitura dispon no u vel RG. Obviamente, devido `s restries arquiteturais, algumas operaes que pertenciam a co co ` instruo Sj podem no estar em Ij . Nesse caso, as operaes que no puderam fazer a ca a co a parte de Ij devem compor uma nova instruo Ij+1 . Ao terminar a anlise sobre todas as ca a operaes de Sj , obtem-se ento uma nova instruo codicada Ij e um padro Pj . No co a ca a

4.5. Codicao de Instrues ca co

85

entanto, antes de considerar efetivamente a existncia desse padro Pj , faz-se uma busca e a no conjunto de padres CP j criado com o intuito de averiguar se Pj = Pi , Pi CP . o a Em caso positivo, a instruo Ij deve ser atualizada com a informao do endereo do ca ca c padro Pi enquanto que o padro Pj ser descartado. Em caso negativo, Pj adicionado a a a e ao conjunto CP e tem seu endereo inserido em Ij . c O Algoritmo 5 apresenta os passos principais do algoritmo de codicao. Alguns ca procedimentos do algoritmo, por exemplo, deteco e descarte de um padro existente, ca a manipulao de registradores de destino, entre outros, foram omitidos em favor da simplica cidade. A entrada para o algoritmo o conjunto de instrues no codicadas CS, obtido e co a aps as fases de escalonamento de instruo e alocao de registradores. o ca ca Para cada instruo do conjunto CS (linha 1), o algoritmo analisa o contedo da ca u instruo (linha 4) vericando se os operandos op.opnd1 e op.opnd2 da operao atual op ca ca esto em alguma posio da instruo codicada I (linhas 5 e 16, respectivamente). Se a ca ca estiverem, ponteiros devem ser acrescentados no padro P a m de indicar quais so os a a operandos corretos da operao op (linhas 14, 15 e 25). Se, devido ` alguma restrio da ca a ca arquitetura, operaes no podem ser codicadas na instruo atual I, essas operaes co a ca co sero codicadas em uma nova instruo (linhas 7-9, 18-20). O algoritmo possui dois laos a ca c importantes: o primeiro repetido at que todas as instrues de CS sejam analisadas; e e co o segundo verica cada operao presente na instruo S selecionada no lao anterior. ca ca c Embora no apresentando, importante entender que antes da execuo da insero a e ca ca do padro ao conjunto de padres (linha 28), deve-se vericar se o referido padro j a o a a existe nesse conjunto. Como o nmero de operaes de uma instruo constante, a u co ca e complexidade do algoritmo limitada pelo tamanho do conjunto CS e pela complexidade e portanto, O(|CS|2 ). da consulta ao conjunto de padres. Em uma situao de pior caso |CP | = |CS| e, o ca

A Figura 4.10 exemplica a utilizao do algoritmo de codicao sobre uma ca ca instruo 2D-VLIW sem codicao. Por simplicidade, considere uma instruo no ca ca ca a UFs. codicada formada apenas por 4 operaes, isto , uma arquitetura 2D-VLIW com 2 2 co e

86

Cap tulo 4. Gerao de Cdigo na Arquitetura 2D-VLIW ca o

Algoritmo 5 Algoritmo de codicao. ca ENTRADA: Conjunto de instrues no codicadas CS. co a SAIDA: Conjunto de instrues codicadas CI e padres CP . co o Encoding(SET INST: CS) 1) for each S CS 2) create new I; 3) create new P ; 4) for each op S 5) if op.opnd1 I 6) if f ree space(I) < 1 7) CI = CI I; 8) CP = CP P ; 9) create new I; 10) create new P ; 11) end if 12) I.add(op.opnd1); 13) end if 14) P.add op(op.opcode); 15) P.add opnd = location of op.opnd1 in I; 16) if op.opnd2 I 17) if f ree space(I < 1) 18) CI = CI I; 19) CP = CP P ; 20) create new I; 21) create new P ; 22) end if 23) I.add(op.opnd2); 24) end if 25) P.add opnd = location of op.opnd2 in I; 26) end for 27) CI = CI I; 28) CP = CP P ; 29) end for

4.5. Codicao de Instrues ca co

87

add r1, r2, r3 addu r4, r2, r6 addi r7, r6, 9 subu r9, r10, r6
(a) Cdigo que ser escalonado. o a

add

r1

r2

r3 addu r4

r2

r6 addi r7

r6

9 subu r9 r10

r6

(b) Instruao no codicada S. c a


add r1, r2, r3
0 1 2 3 4 5 6 7 8

instruo codificada
9 10 11 12

r2

r3

r1

add

padro

(c) Instruao codicada I e o padro P aps codicar a operaao add. c a o c


addu r4, r2, r6
0 1 2 3 4 5 6 7 8

instruo codificada
9 10 11 12

r2

r3

r6

r1

r4

add

addu 7

padro

(d) Instruao codicada I e o padro P aps codicar a operaao addu. c a o c


addi r7, r6, 9
0 1 2 3 4 5 6 7 8

instruo codificada
9 10 11 12

r2

r3

r6

r1

r4

r7

add

addu 7

addi 8

padro

(e) Instruao codicada I e o padro P aps codicar a operaao addi. c a o c


subu r9, r10, r6
0 1 2 3 4 5 6 7 8

instruo codificada
9 10 11 12

r2

r3

r6

r10

r1

r4

r7

r9

add

addu 7

addi 8

10 subu 11

padro

(f) Instruao codicada I e o padro P aps codicar a operaao subu. c a o c

endereo padro

10

11

12

r2

r3

r6

r10

r1

r4

r7

r9

(g) Instruao codicada I aps todos os passos do algoritmo. c o

Figura 4.10: Exemplo de execuo da tcnica de codicao. ca e ca

88

Cap tulo 4. Gerao de Cdigo na Arquitetura 2D-VLIW ca o

A Figura 4.10 mostra os passos para codicar a instruo denida em 4.10(b) ca usando a estratgia de codicao 2D-VLIW. As Figuras 4.10(c)-4.10(f) mostram o estado e ca atual da instruo codicada e o contedo do padro aps cada passo do algoritmo. Em ca u a o cada etapa, o algoritmo atualiza e instruo codicada e seu respectivo padro. As setas ca a indicam os operandos e o resultado utilizados por cada operao inserida no padro. ca a Considere, por exemplo, a operao add r1, r2, r3 no passo 4.10(c). Primeiro, o cdigo ca o da operao add inserido no padro. Depois disso, o primeiro registrador (r1), que ca e a e um registrador de sa armazenado no campo 6 da instruo codicada (os campos 0 da, e ca at 5 so reservados para leitura dos operandos do banco de registradores globais). Um e a ponteiro para o campo 6 armazenado em uma linha da cache de padres. A codicao e o ca dos dois registradores de leitura (r2 e r3) segue o mesmo procedimento mas usa os campos reservados para leitura dos registradores globais. Observe que a segunda operao addu ca r4, r2, r6, Figura 4.10(d), tambm utiliza o registrador r2. Nesse caso, o campo 0 ser e a reusado. No ultimo passo, Figura 4.10(f), tem-se uma instruo codicada e um padro. ca a A instruo codicada armazenada na cache de instrues enquanto que o padro ser ca e co a a armazenado na cache de padres. Na Figura 4.10(g), a informao sobre o endereo do o ca c padro adicionada na instruo codicada. a e ca E importante ter em mente que a instruo original (no codicada), Figura 4.10(b), ca a e o padro armazenado na cache de padres, Figura 4.10(f), so bem diferentes embora a o a tenham quase o mesmo nmero de campos. A diferena marcante est na representao u c a ca dos dados pois os campos de um padro armazenam ponteiros para campos da instruo a ca codicada, enquanto os campos de uma instruo no codicada armazenam ca a ndices dos registradores e valores imediatos. O processo de decodicao de uma instruo 2D-VLIW simples: depois que o ca ca e padro buscado na cache de padres, o hardware de decodicao utiliza os ponteiros que a e o ca esto armazenados dentro do padro, juntamente com a instruo codicada trazida da a a ca memria, para reconstruir a instruo 2D-VLIW no codicada. Durante a decodicao, o ca a ca a instruo codicada funciona como um dicionrio de operandos para os ponteiros do ca a padro. Essa caracter a stica, atrelada ` capacidade de decodicao enquanto a leitura a ca dos registradores globais processada, possibilita que essa tcnica de codicao tenha e e ca

4.6. Consideraes Finais co

89

uma grande diferena para tcnicas tradicionais de compresso que armazenam padres c e a o ou dados para decodicao em tabelas. Em geral, tcnicas de compresso de cdigo ca e a o acrescentam um estgio espec a co para decodicao da palavra junto ` via de dados, ca a alm de utilizarem uma ou mais tabelas (dicionrios) para reconstruir a palavra completa. e a Considerando uma arquitetura 2D-VLIW com 44 UFs, uma instruo 2D-VLIW ca sem codicao possui 512 bits (considerando um conjunto de instrues cujas operaes ca co co possuem 32 bits). A instruo codicada denida para essa arquitetura possui 128 bits, ca um decremento da ordem de 4 sobre o tamanho original, enquanto que um padro a possui 496 bits. Como j mencionado no Cap a tulo 3, as pesquisas envolvendo tcnicas e de codicao para instrues 2D-VLIW tm suas origens a partir de estudos iniciais ca co e realizados no escopo desta Tese. Atualmente, as atividades relacionadas com codicao ca de instrues, padres e cache de padres na arquitetura 2D-VLIW so parte de um co o o a trabalho de mestrado em desenvolvimento no LSC/IC-UNICAMP.

4.6

Consideraes Finais co
Este cap tulo apresentou as caracter sticas principais do processo de gerao de ca

cdigo para a arquitetura 2D-VLIW. Dentre as diversas etapas que fazem parte do proo cesso de gerao de cdigo para uma arquitetura de processador, as tcnicas utilizadas ca o e para escalonar e codicar instrues e alocar registradores assumem papel de destaque co em virtude de seus impactos sobre o projeto da arquitetura. Deve-se, inclusive, destacar que a investigao em torno de ferramentas, tcnicas e algoritmos para gerao de cdigo ca e ca o nessa arquitetura so tambm objetos de estudos de dois trabalhos em n de mestrado a e vel atualmente em desenvolvimento no LSC/IC-UNICAMP.

Cap tulo 5 Experimentos e Resultados


A tarefa de avaliar e comparar experimentalmente projetos em torno de arquiteturas de processadores tem se mostrado bastante rdua. Muitas vezes, esses projetos a no disponibilizam recursos e informaes sucientes para que seja poss realizar tal a co vel avaliao. Mesmo as iniciativas que procuram implementar ferramentas para simular o ca comportamento dos processadores no possuem um considervel conjunto de casos de a a entrada, de forma que dif avali-las e compar-las com outras propostas. e cil a a Este cap tulo cobre os experimentos realizados a m de validar empiricamente as consideraes que compem esta Tese e que foram discutidas nos cap co o tulos anteriores. Ao longo deste cap tulo, procura-se apresentar e justicar os experimentos escolhidos assim como a infraestrutura utilizada na realizao desses experimentos. Por no possuir ca a ainda uma implementao em hardware, os experimentos envolvendo o processador 2Dca VLIW so baseados na simulao do modelo de execuo na tentativa de determinar o a ca ca desempenho do processador. Alm disso, tambm h experimentos sobre as atividades e e a de escalonamento de instrues, alocao de registradores e codicao de instrues que, co ca ca co por afetarem diretamente a qualidade do cdigo gerado, possuem tambm inuncia no o e e desempenho nal da arquitetura.

5.1

Experimentos e Medidas de Desempenho


Os experimentos envolvendo a arquitetura 2D-VLIW cobrem trs caracter e sticas

bsicas: o modelo de execuo, o escalonamento de instrues juntamente com a alocao a ca co ca 91

92

Cap tulo 5. Experimentos e Resultados

de registradores e, por m, o esquema de codicao de instrues. Os experimentos ca co apresentados neste cap tulo foram realizados com base na simulao de uma especicaca co da arquitetura e na execuo de algoritmos que geram cdigo tendo como alvo as a ca o caracter sticas arquiteturais denidas no Cap tulo 3. Em todos os experimentos, procurou-se utilizar o mesmo conjunto de programas divididos entre trs benchmarks diferentes, com o intuito de facilitar anlises compae a rativas e, ao mesmo tempo, utilizar um conjunto de programas que seja representativo sobre a caracter stica avaliada. Esses programas so provenientes dos pacotes de a benchmarks SPEC2000 [41] (programas que lidam com nmeros inteiros e de pontou utuante) e MEDIABench [51]. A escolha dos programas teve como base o trabalho de Joshi e outros [43] que consistiu na anlise dos diversos programas que compem os a o pacotes SPEC2000 e MEDIABench, onde pde-se concluir que apenas um subconjunto de o todos esses programas suciente para mensurar o desempenho de um processador. Os e experimentos aqui apresentados cobrem aproximadamente 75% do conjunto de programas do pacote SPEC denidos pelos seus autores. A no-cobertura total de todos os programas a foi devido ` ausncia do programa 176.gcc. Ao compilar esse programa com Trimaran, no a e a foi poss conrmar a correo da execuo do programa e, por esse motivo, o 176.gcc foi vel ca ca retirado do conjunto de programas dos experimentos. Os programas escolhidos e utilizados nos experimentos discutidos neste cap tulo so apresentados na Tabela 5.1. a

Programas 168.wupwise 175.vpr 179.art 181.mcf 183.equake 197.parser 256.bzip2 epic g721.decode & g721.encode

Benchmark SPECfp SPECint SPECfp SPECint SPECfp SPECint SPECint MEDIABench MEDIABench

Descrio ca Clculos de cromodinmica quntica a a a Anlise e s a ntese de circuitos digitais Redes neurais e reconhecimento de imagens Otimizaao de ve c culos em transporte pblico u Simulaao da propagaao de ondas s c c smicas Parser de sentenas em ingls c e Compresso e descompresso de arquivos a a Compresso de imagens por meio de wavelets a Codicaao e decodicaao de sinais de voz c c

Tabela 5.1: Programas utilizados nos experimentos.

5.1. Experimentos e Medidas de Desempenho

93

Todos os programas foram compilados com o compilador Trimaran (verso 3.7) e as a opes de formao de hiperblocos e desenrolamento de laos (em at 32 vezes) habilitadas. co ca c e Nos experimentos apresentados na Seo 5.3, o modelo de execuo 2D-VLIW foi especica ca cado atravs da linguagem de descrio de arquiteturas denominada HMDES [37]. Nesse e ca conjunto de experimentos, o modelo de execuo 2D-VLIW foi comparado considerando ca duas medidas de desempenho: o speedup e a escalabilidade. A primeira medida considera a proporo em que um sistema melhor que outro segundo algum critrio previamente ca e e denido. No experimento em questo, o speedup mede quanto o modelo de execuo 2Da ca VLIW possui melhor desempenho que o modelo EPIC, considerando o tempo de execuo ca de EPIC, TB , em ciclos de relgio, sobre o tempo de execuo de 2D-VLIW, TA , conforme o ca a Equao 5.1. ca

Sp =

TB TA

(5.1)

A escalabilidade informa se h ocorrncia de speedup de uma congurao A1 de a e ca um processador, sobre uma congurao B1 do mesmo processador. O intuito vericar ca e se ` medida que se aumenta o nmero de unidades funcionais, o desempenho continua a u aumentando. As latncias consideradas para as operaes existentes nos programas so apresene co a tadas na Tabela 5.2. A informao sobre a latncia representa a quantidade de ciclos de ca e relgio necessrios para computar a operao no estgio de execuo. o a ca a ca Os experimentos descritos na Seo 5.4 utilizam duas medidas que avaliam o preenca chimento de uma instruo 2D-VLIW, Operaes Por Instruo - OPI, e o preenchimento ca co ca da matriz de unidades funcionais, Operaes Por Ciclo - OPC. Essas medidas permitem co indicar se uma estratgia de escalonamento e/ou alocao de registradores est utilizando e ca a os recursos de hardware de maneira eciente. Obviamente, as melhores solues so co a aquelas que provem os n e veis mais altos de OPIs e OPCs. Por m, os experimentos descritos na Seo 5.5 procuram averiguar como a esca tratgia de codicao afeta o tamanho do cdigo dos programas quando comparada a e ca o uma estratgia sem codicao. Nesse caso, duas medidas merecem destaque: o Reuso e o e ca

94

Cap tulo 5. Experimentos e Resultados

Operaoes c Operaoes com inteiros (excluindo mult. e diviso) c a Multiplicaao c Diviso a Operaoes em ponto-utuante c Busca na cache de n 1 vel Busca na cache de n 2 vel Busca na memria o Escrita na memria o Operaoes de desvio c

Latncia (em ciclos) e 1 3 8 3 2 7 35 1 1

Tabela 5.2: Latncias das operaes consideradas. e co

Fator de Reduo. A primeira medida indica a quantidade mdia de instrues codicadas ca e co que utilizam um mesmo padro. Em outras palavras, essa a medida que verica se h a e a sobrejeo entre o conjunto de instrues e o conjunto de padres. A segunda medida ca co o informa quanto foi a reduo da rea de cdigo de um programa a partir do uso da ca a o tcnica de codicao. E importante observar que, quanto maior o reuso e o fator de e ca reduo, mais eciente a tcnica de codicao. ca e e ca

5.2

Infraestrutura para Gerao dos Experimentos ca


A m de determinar o desempenho de algumas caracter sticas que compem a o

arquitetura 2D-VLIW, deve-se lanar mo de ferramentas que possibilitam avaliar essas c a caracter sticas atravs de experimentos. Como no h uma implementao em hardware e a a ca do processador 2D-VLIW, toda a infraestrutura para execuo de experimentos comca e posta por ferramentas de software. Algumas dessas ferramentas so partes do compilador a Trimaran, enquanto outras foram adicionadas ao uxo de execuo desse compilador. A ca Figura 5.1 mostra a organizao do compilador Trimaran por meio do uxo de execuo ca ca de seus principais elementos. A Figura 5.1(a) mostra o uxo de execuo normal do ca compilador Trimaran, onde poss observar quatro elementos distintos: e vel Impact: o elemento responsvel pela traduo do programa em uma linguagem e a ca fonte para uma linguagem intermediria com otimizaes independentes de mquina; a co a

5.2. Infraestrutura para Gerao dos Experimentos ca

95

Elcor: o elemento responsvel pelas otimizaes dependentes de mquina do come a co a

pilador e onde as fases de escalonamento e alocao de registradores so realizadas; ca a

Descrio HMDES: a descrio do processador que dever ser considerada pelas ca e ca a otimizaes dependentes de mquina e na etapa de simulao; co a ca

Simulao: esse elemento recebe uma descrio de mquina e o cdigo com as ca ca a o otimizaes dependentes de mquina e realiza a simulaao do cdigo. A fase de co a c o simulao permite obter um trao das operaes do programa que foram executadas ca c co e estat sticas gerais sobre a execuo. E poss ca vel obter tambm um programa e executvel independente. a A Figura 5.1(a) representa o uxo de execuo das ferramentas nos experimentos ca envolvendo o desempenho do modelo de execuo (Seo 5.3). Para esse experimento, o ca ca algoritmo de escalonamento e o de alocao de registradores utilizados foram aqueles j ca a implementados na infraestrutura Trimaran. A Figura 5.1(b), por outro lado, mostra o uxo de execuo para os experimentos das Sees 5.4 e 5.5. As setas com cores escuras ca co indicam o uxo de execuo seguido nesses experimentos, a seta clara indica o uxo de ca execuo normal do compilador Trimaran mas que no utilizado nesses experimentos, ca a e a seta tracejada indica um uxo de execuo ainda no implementado na arquitetura. A ca a ausncia de um uxo automatizado entre as ferramentas de escalonamento & alocao e ca e codicao, desenvolvidas para a arquitetura 2D-VLIW e o compilador Trimaran, no ca a prejudicou a obteno dos resultados nos experimentos das Sees 5.4 e 5.5 pois, esses ca co experimentos avaliam o resultado das ferramentas e no o desempenho nal da aplicao. a ca Mesmo para o experimento que utiliza informao dinmica (Tabela 5.4), o resultado ca a e baseado no trao de execuo obtido previamente com o uxo normal de ferramentas do c ca compilador Trimaran. Deve-se ressaltar que a integrao entre essas ferramentas j foi ca a iniciada e est em fase de desenvolvimento. a A linguagem HMDES possibilita descrever diversas caracter sticas arquiteturais em um estilo hierrquico, de forma que estas podem ser adicionadas a uma especicao a ca em funo de outras denidas previamente. Uma das caracter ca sticas que chama a ateno ca nessa linguagem e, conseqentemente, motivou sua adoo para descrever o modelo de u ca

96

Cap tulo 5. Experimentos e Resultados

Programa fonte

Trimaran
Descrio HMDES

Impact

Elcor

Simulao

Trao de Execuo Programa fonte

Estatsticas de Execuo

(a) Fluxo de execuao do compilador Trimaran. c

Trimaran
Descrio HMDES

2DVLIW
Impact

Elcor

Escalonamento & Alocao

Simulao

Codificao

Trao de Execuo

Estatsticas de Execuo

(b) Fluxo de execuao do compilador Trimaran com as ferramentas desenvolvidas na arquitetura 2Dc VLIW.

Figura 5.1: Organizao e uxo de execuo do compilador Trimaran com e sem as ca ca ferramentas espec cas para a arquitetura 2D-VLIW.

5.3. Desempenho do Modelo de Execuo ca

97

execuo 2D-VLIW, reside na capacidade de especicar unidades funcionais, a interligao ca ca das operaes do conjunto de instrues HPL-PD com UFs e com bancos de registradores co co da arquitetura e a denio do estgios de execuo para a(s) unidade(s) funcional(is). ca a ca Essas caracter sticas da linguagem vo ao encontro de algumas particularidades do modelo a de execuo 2D-VLIW j que, como apresentado no Cap ca a tulo 3, esse modelo adota unidades funcionais, interligadas atravs de registradores, que so ativadas em diferentes e a estgios de execuo. Obviamente, os recursos da linguagem no capturam diretamente a ca a todas as caracter sticas do modelo de execuo. Por exemplo, no poss ca a e vel modelar canais compartilhados assim como tambm no poss modelar a utilizao de mais e a e vel ca de um banco de registradores por operao. Essas restries impedem a modelagem ca co de determinadas caracter sticas como o acesso compartilhado das unidades funcionais, de uma linha da matriz, para o banco de registradores e a utilizao de registradores ca temporrios e globais por parte de uma operao. De fato, a capacidade de utilizar a ca barramentos (canais compartilhados) por parte das unidades funcionais que esto em a uma linha da matriz no foi coberta pela modelagem utilizando HMDES. De qualquer a forma, as ferramentas de compilao tomam conhecimento dessa restrio da linguagem ca ca HMDES e no geram cdigo considerando essa caracter a o stica. A restrio envolvendo a ca utilizao de mais de um banco de registradores foi resolvida atravs da criao de bancos ca e ca globais distribu dos do mesmo tamanho dos bancos de registradores temporrios e da a interligao desses bancos `s unidades funcionais. ca a O modelo de execuo 2D-VLIW especicado na linguagem HMDES utilizado ca e no experimento envolvendo o desempenho dessa especicao. Essa modelagem no foi, ca a no entanto, utilizada nos experimentos sobre o escalonamento de instrues assim como co naqueles sobre codicao de instrues, uma vez que as ferramentas adotadas nesses ca co experimentos foram constru das levando em conta todas as caracter sticas da arquitetura, inclusive aquelas que no puderam ser especicadas pela linguagem HMDES. a

5.3

Desempenho do Modelo de Execuo ca


O primeiro experimento compara o speedup obtido pelo modelo de execuo 2Dca

VLIW com o modelo de execuo utilizado pelo processador HPL-PD apresentado na ca

98

Cap tulo 5. Experimentos e Resultados

SubSeo 2.2.6. Os dois modelos de execuo foram especicados utilizando a linguagem ca ca HMDES. O nmero de registradores, unidades funcionais, conjunto de instrues e latncia u co e das operaes foram os mesmos para ambos os modelos. A correo desse experimento co ca garantida pela comparao entre traos de execuo executados no processador hospee ca c ca deiro1 sem a utilizao do modelo avaliado (2D-VLIW ou HPL-PD) e com a utilizao do ca ca modelo. Os programas aqui apresentados foram aqueles cujos traos so iguais tanto antes c a quanto depois da incluso dos modelos. Esse mecanismo de correo procura garantir que a ca o cdigo simulado por um modelo 2D-VLIW ou HPL-PD seja equivalente ao executado o por um processador real. A Figura 5.2 mostra o speedup (em ciclos de processamento) obtido pelo modelo 2D-VLIW com diversas conguraes da matriz de unidades funcionais sob as mesmas co conguraes do modelo EPIC adotado pelo processador HPL-PD. Por exemplo, as coluco nas correspondentes ` legenda 2D-VLIW 33 indicam o speedup de uma congurao a ca 2D-VLIW com 33 unidades funcionais sobre uma congurao HPL-PD com 9 unidades ca funcionais. Observe que o speedup foi alcanado em todas as conguraes, com ganhos c co na faixa de 5% at 63%. e Note que o modelo 2D-VLIW obtm melhores resultados que o modelo HPLe PD em todos os programas. Depois de uma anlise do cdigo gerado para ambas as a o arquiteturas, pode-se observar que a razo por trs do speedup 2D-VLIW sobre HPLa a PD foi devido ` organizao das unidades funcionais. A adio de registradores entre as a ca ca unidades funcionais tornou poss manipular dependncias escrita-aps-leitura2 atravs vel e o e da matriz sem incorrer em atrasos extras por causa da leitura de um banco com muitos registradores globais. Deve-se destacar que ganhos maiores que esses seriam esperados caso a especicao pudesse capturar todas as caracter ca sticas de 2D-VLIW e o simulador levasse em considerao as latncias decorrentes do nmero de portas do banco de registradores ca e u globais. Outro experimento relacionado ao desempenho refere-se ` escalabilidade obtida a ao utilizar conguraes diferentes de unidades funcionais tanto na arquitetura 2D-VLIW co quanto em HPL-PD. A Figura 5.3 exibe os resultados com o experimento de escalabilidade.
1 2

Processador que executa o compilador Trimaran. Do ingls: Write-After-Read (WAR). e

5.3. Desempenho do Modelo de Execuo ca

99

100 2DVLIW 2x2 2DVLIW 3x3 2DVLIW 4x4 2DVLIW 3x10 80

% Speedup

60

40

20

0
168.wupwis 175.vpr 179.art 181.mcf 183.equak 197.parse 256.bzip2 epic g721.dec g721.enc

Figura 5.2: Speedup do modelo de execuo 2D-VLIW sobre HPL-PD. ca

100

Cap tulo 5. Experimentos e Resultados

Observe que nos grcos das Figuras 5.3(a) e 5.3(b), as barras cuja congurao indica 4 a ca UFs (2D-VLIW 22 e HPL-PD 4) possuem speedup=1 e so chamadas de conguraes a co base. As demais barras indicam o speedup de sua respectiva congurao sobre a conca gurao base. Assim, se uma determinada barra atinge, por exemplo, um speedup=1.2, ca isso signca que sua respectiva congurao possui um desempenho 20% melhor que a ca congurao base. Da mesma forma, se uma congurao possui um speedup< 1, essa ca ca congurao tem um desempenho pior que a congurao base. ca ca Para alguns programas (por exemplo, epic e 175.vpr), o desempenho decremene tado a medida que o nmero de unidades funcionais aumentada. Esse fenmeno, aumenu e o tar o nmero de unidades funcionais decrementa o desempenho, devido principalmente ao u e aumento dos ciclos de stalls por parte das operaes de memria. Pelo fato da congurao co o ca de memria no ser modicada a medida que se aumenta o nmero de unidades funcionais, o a u h mais possibilidade de encontrar gargalos no acesso ` memria j que mais operaes a a o a co esto tentando o acesso simultneo. Apesar de ser encontrado em diferentes propores, a a co esse fenmeno acontece tanto no modelo 2D-VLIW quanto no modelo HPL-PD. o

5.4

Escalonamento e Alocao ca
O primeiro experimento considerando o escalonamento de instrues utilizando co

os algoritmos denidos nas Sees 4.2 e 4.3 apresenta o nmero de instrues 2D-VLIW co u co obtidos por cada algoritmo. O intuito deste experimento determinar qual abordagem e de escalonamento pode oferecer maiores ganhos no desempenho de programas sobre a arquitetura 2D-VLIW com uma congurao com 44 UFs. Deve-se ressaltar que para os ca experimentos envolvendo o escalonamento, os mesmos programas, hiperblocos, operaes co e latncias de operaes so considerados por ambos os algoritmos. Mais ainda, a correo e co a ca garantida atravs da vericao dos resultados de sa de cada algoritmo. Nesse e e ca da caso, os dois algoritmos devem ter conseguido escalonar o mesmo nmero de programas, u hiperblocos e operaes. co Os resultados so apresentados na Tabela 5.3 onde os valores entre parnteses a e indicam os ganhos obtidos com a tcnica de isomorsmo de subgrafos sobre a tcnica de e e list scheduling. Os valores da linha Mdia, incluindo o valor correspondente ao ganho, e

5.4. Escalonamento e Alocao ca

101

1.8 2DVLIW 2x2 2DVLIW 3x3 2DVLIW 4x4 2DVLIW 3x10 1.6

Speedup

1.4

1.2

0.8
168.wupwis 175.vpr 179.art 181.mcf 183.equak 197.parse 256.bzip2 epic g721.dec g721.enc

(a) Escalabilidade 2D-VLIW.


1.8 HPLPD 4 HPLPD 9 HPLPD 16 HPLPD 30 1.6

Speedup

1.4

1.2

0.8
168.wupwis 175.vpr 179.art 181.mcf 183.equak 197.parse 256.bzip2 epic g721.dec g721.enc

(b) Escalabilidade HPL-PD.

Figura 5.3: Escalabilidade dos modelos de execuo 2D-VLIW e HPL-PD. ca

102

Cap tulo 5. Experimentos e Resultados

representam a mdia entre os valores resultantes de cada algoritmo sobre o conjunto de e programas.
Programas 168.wupwise 175.vpr 179.art 181.mcf 183.equake 197.parser 256.bzip2 epic g721.decode g721.encode Mdia e List Scheduling N mero de Instruoes u c 13.396 83.165 17.704 13.764 18.268 80.036 16.297 6.720 3.523 3.572 25.644,5 Escalonamento de Isomorsmo em Subgrafos N mero de Instruoes (Ganho %) u c 6.111 (54) 36.634 (56) 6.953 (61) 7.333 (47) 6.761 (63) 40.437 (49) 16.208 (2) 2.533 (62) 1.489 (58) 1.503 (58) 12.596,2 ( 51%)

Tabela 5.3: Nmero de instrues 2D-VLIW. u co Os resultados da Tabela 5.3 mostram claramente que a estratgia baseada em e isomorsmo de subgrafos gera menos instrues 2D-VLIW que o algoritmo guloso de list co scheduling em todos os programas avaliados. A estratgia de isomorsmo de subgrafos e obteve ganhos 2 melhores que o algoritmo de list scheduling em 7 (70%) dos 10 programas. O nmero mdio de instrues que o escalonamento baseado em isomorsmo u e co gerou aproximadamente 51% menor que o nmero mdio alcanado pelo list scheduling. e u e c Esses resultados tm um impacto direto no tamanho nal do cdigo dos programas e, e o conseqentemente, em seu desempenho. Programas que possuem mais instrues tero u co a que dedicar mais ciclos de busca para trazer da memria todas as operaes que necessitam o co executar. A razo principal para a diferena entre resultados obtidos pelo algoritmo de a c list scheduling e o algoritmo de isomorsmo reside na estratgia usada para garantir e o escalonamento das operaes dentro de um tempo pr-determinado. No caso de list co e scheduling, se o algoritmo no est conseguindo escalonar o vrtice atual aps uma a a e o quantidade de tentativas, a heur stica de insero de vrtices globais logo chamada. ca e e Com isso, o vrtice consegue ser escalonado ao custo de considerar os ciclos de relgio e o para escrita e leitura do banco de registradores globais. O algoritmo de isomorsmo,

5.4. Escalonamento e Alocao ca

103

de outra forma, procura utilizar a heur stica de redimensionamento do grafo base pois, em algumas situaes, com mais espao dispon co c vel, o algoritmo converge rapidamente para uma soluo. Apenas quando essa estratgia no surte os efeitos desejados que o ca e a e algoritmo de isomorsmo usar a insero de vrtices globais. E importante deixar claro a ca e que um escalonamento realizado apenas com a primeira estratgia (redimensionamento e do grafo base) utiliza menos instrues j que no h necessidade de aguardar por escritas co a a a e leituras nos registradores globais. Os vrtices do DAG continuam armazenando seus e resultados e recuperando seus operandos diretamente dos registradores temporrios. a A Tabela 5.4 compara o OPC e o OPI alcanado por ambos os algoritmos de c escalonamento sobre ncleos de programas. Esses ncleos correspondem `s funes e u u a co hiperblocos responsveis por, aproximadamente, 90% do tempo de execuo do programa. a ca Os valores apresentados nas colunas 2 e 3 indicam o OPC e OPI, este ultimo entre parnteses, respectivamente. e
Programas 168.wupwise 175.vpr 179.art 181.mcf 183.equake 197.parser 256.bzip2 epic g721.decode g721.encode Mdia e List Scheduling OPC (OPI) 1,44 (2,10) 1,20 (2,01) 1,10 (1,50) 1,60 (2,00) 1,30 (2,01) 1,85 (2,04) 2,10 (2,40) 1,10 (1,40) 1,50 (1,73) 1,60 (1,80) 1,48 (1,90) Escalonamento de Isomorsmo em Subgrafos OPC (OPI) 2,03 (2,83) 5,40 (7,10) 3,80 (6,80) 2,65 (2,79) 2,70 (2,95) 6,80 (8,50) 4,53 (5,36) 1,50 (3,12) 2,70 (3,00) 2,70 (3,00) 3,48 (4,55)

Tabela 5.4: OPC e OPI alcanados pelos algoritmos de escalonamento. c O algoritmo de isomorsmo de subgrafos obtm melhores resultados que o ale goritmo de list scheduling em todos os programas considerados. Os ganhos com os valores de OPC e OPI por parte do algoritmo de isomorsmo chegam a ser at 4 vezes e melhores que os do algoritmo guloso de list scheduling. Um resultado interessante surge quando os resultados obtidos neste experimento so comparados com aqueles obtidos a em [21] que utiliza a arquitetura TRIPS apresentada na Subseo 2.2.2. Ao comparar ca

104

Cap tulo 5. Experimentos e Resultados

um subconjunto de programas (179.art, 256.bzip2, 183.equake e 197.parser) em comum entre os experimentos realizados com 2D-VLIW e em [21], observa-se que o OPC mdio e obtido em [21] foi de 3.62 enquanto que o OPC mdio pelo algoritmo de isomorsmo e foi de 4.45. Alm disso, o algoritmo de escalonamento descrito em [21] no considera e a restries de tempo em suas heur co sticas enquanto que, tanto a abordagem de isomorsmo de subgrafos quanto a tcnica de list scheduling obtm o desempenho de pico tendo como e e base restries no tempo de execuo do algoritmo. co ca Um outro experimento avaliou o speedup obtido pelo algoritmo de isomorsmo sobre o algoritmo de list scheduling, levando em considerao o tempo gasto no escalonaca mento do cdigo de um programa. Nesse experimento, o desempenho mdio alcanado o e c pelo algoritmo de isomorsmo foi em torno de 57.5 vezes melhor que o algoritmo de list scheduling. Esse experimento tambm tomou como base uma congurao 2D-VLIW com e ca 4 4 UFs. O experimento a seguir mostra alguns resultados considerando os ganhos em termos da reduo de cdigo para manipular spills no corpo dos programas ao adotar ca o registradores temporrios. Esse experimento consistiu na incluso (ou retirada) de regisa a tradores temporrios junto ` especicao HMDES do modelo de execuo 2D-VLIW. a a ca ca A Tabela 5.5 mostra a quantidade de cdigo de spill gerado em cada programa, em o tempo de compilao, utilizando uma congurao com registradores globais apenas ca ca (32 registradores) e quando um banco de registradores globais (32 registradores) e 32 estar claro que esse experimento no utiliza o algoritmo de escalonamento de instrues a co e alocao de registradores integrado, conforme apresentado na Seo 4.4. Nesse sentido, ca ca o objetivo aqui mostrar que h ganhos signicativos com a incluso de registradores e a a temporrios em uma congurao 2D-VLIW com 4 4. a ca E importante entender que, mesmo que a reduo seja aparentemente pequena, ca isso pode resultar em um ganho considervel em tempo de execuao. Por exemplo, nos a c programas g721.decode e g721.encode o unico cdigo de spill reduzido (de 18 para 17) o se encontra, em ambos os programas, em laos interiores. Como, de maneira geral, laos c c registradores temporrios (16 bancos de RTs 2 registradores por RT) adotado. Deve a e

5.5. Codicao de Instrues ca co

105

Programas 168.wupwise 179.art 181.mcf 183.equake 197.parser 256.bzip2 epic g721.decode g721.encode

Registradores Globais 14 40 16 20 77 19 12 18 18

Registradores Globais + Bancos de Regs. Temporrios a 9 24 14 10 34 13 6 17 17

Tabela 5.5: Nmeros de cdigos de spill inseridos no corpo do programa com diferentes u o conguraes de registradores. co

interiores so as partes mais executadas dos programas, uma economia no nmero de a u spills dentro desses laos melhora consideravelmente o desempenho nal da aplicao. c ca

5.5

Codicao de Instrues ca co
Este experimento mostra o impacto da tcnica de codicao sobre o tamanho e ca

do programa comparando os resultados com a estratgia de no codicar as instrues. e a co A codicao das instrues e seus respectivos padres so obtidos de acordo com as ca co o a denies apresentadas na Seo 4.5 e considerando uma congurao 2D-VLIW com co ca ca simula a decodicao das instrues codicadas e seus padres resultando em instrues ca co o co no codicadas. Deve-se aqui atentar para o fato que os valores de sa desse algoritmo a da devem estar presentes no conjunto de instrues no codicadas. H, no entanto, uma co a a exceo para os casos de instrues codicadas que foram originadas a partir de quebras ca co das instrues no codicadas. Essas quebras foram devido a extrapolao dos recursos co a ` ca arquiteturais e/ou ` extrapolao das restries de tamanho para uma instruo codia ca co ca cada. Nesse caso, o nmero de instrues decodicadas pelo algoritmo de decodicao u co ca ser maior que o nmero de instrues no codicadas. Mesmo assim, a correo ainda a u co a ca pode ser realizada pois a diferena entre o nmero de instrues decodicadas e o nmero c u co u 4 4 UFs. A correo deste experimento garantida por meio de um procedimento que ca e

106

Cap tulo 5. Experimentos e Resultados

de instrues no codicadas deve ser igual ao nmero de quebras computadas pelo co a u algoritmo de codicao. ca A Tabela 5.6 mostra os resultados da estratgia de codicao. As trs primeiras e ca e colunas, |S|, |I| e |P |, mostram o nmero de instrues no codicadas, instrues u co a co codicadas e padres para cada programa. As instrues no codicadas foram obtidas o co a atravs do escalonamento baseado em isomorsmo de subgrafos, como pode ser observado e na Tabela 5.3. A coluna Reuso a taxa de reuso dos padres P por parte das instrues e o co codicadas I. Em outras palavras, o Reuso informa quantas instrues codicadas co utilizam o mesmo padro. A coluna Fator de Reduo indica a porcentagem de reduo a ca ca do tamanho de um programa que utiliza instrues codicadas quando comparado com co um programa usando instrues no codicadas. Por exemplo, a verso codicada do co a a programa 168.wupwise 53% menor que o mesmo programa sem codicao. Os valores e ca das colunas Reuso e Fator de Reduo so calculados de acordo com as Equaes 5.2 ca a co e 5.3, respectivamente. Reuso = |I| |P | (5.2)

Fator de Reduo = 1 ca sendo:

((|I| ) + (|P | )) (|S| )

(5.3)

o tamanho da instruo codicada. No exemplo considerado neste experimento, e ca cada instruo possui 128 bits. ca

o tamanho de cada padro de instruo. Cada padro possui 496 bits. e a ca a o tamanho da instruo no codicada. Cada instruo 2D-VLIW agrupa 16 e ca a ca codicada 512 bits. e Os resultados da Tabela 5.6 conrmam algumas premissas declaradas na Seo 4.5. ca Os valores da Coluna Reuso representam a sobrejeo entre instrues codicadas e seus ca co padres. Como j mencionado, a sobrejeo uma condiao necessria para decrementar o a ca e c a

operaes, cada uma possuindo 32 bits. O tamanho total de uma instruo no co ca a

5.5. Codicao de Instrues ca co

107

Programas 168.wupwise 175.vpr 179.art 181.mcf 183.equake 197.parser 256.bzip2 epic g721.decode g721.encode Mdia e

|S| 6.111 36.634 6.953 7.333 6.761 40.437 16.208 2.533 1.489 1.503 12.596,2

|I| 7.746 40.811 8.880 8.028 8.383 41.959 18.194 3.066 1.607 1.624 14.029,8

|P | 957 5.066 1.025 1.160 1.159 5.345 2.212 674 391 399 1.838,8

Reuso 8,09 8,06 8,66 6,92 7,23 7,85 8,23 4,55 4,11 4,07 6,78

Fator de Reduo (%) ca 53 59 54 57 52 61 59 44 48 47 53,4

Tabela 5.6: Resultados com a tcnica de codicao. |S| =nmero de instrues no e ca u co a codicadas; |I| =nmero de instrues codicadas; |P | =nmero de padres. u co u o o tamanho do programa, uma vez que o tamanho da instruo codicada e o tamanho do ca padro juntos maior que o tamanho de uma instruo no codicada, + > . Alm a e ca a e disso, a sobrejeo reduz as possibilidades de perdas de desempenho devido ` freqncia ca a ue de misses simultneos na cache de instrues e de padres. a co o A Tabela 5.6 tambm revela outro resultado interessante: o impacto das restries e co arquiteturais (uso restrito de portas de leitura e escrita nos registradores globais) e do algoritmo de codicao (menor nmero de operaes com imediatos) no causaram um ca u co a aumento signicativo no nmero de instrues codicadas. O aumento no nmero de u co u Contudo, como pode ser observado pela coluna Fator de Reduo, esse aumento no ca a foi signicativo a ponto de impactar sobre o tamanho do programa. Na realidade, essa tcnica de codicao de instrues fact mesmo quando e ca co e vel comparada com uma codicao bastante compacta como o caso da tcnica utilizada por ca e e arquiteturas x86. Tomando como exemplo os valores das colunas |I| e |P | para o programa 181.mcf, pode-se observar que esse programa possui 128.488 bytes (8.028 (128/8)) utilizados pelas instrues codicadas e 71.920 bytes (1.160 (496/8)) pelos padres. co o conclui-se que esse programa possui, aproximadamente, 200.408 bytes (128.488 + 71.920) de cdigo. Na arquitetura x86, utilizando o compilador gcc verso 4.1.1 com a opo de o a ca instrues codicadas foi de 8% 27%, tendo um aumento mdio em torno de 15%. co e

Considerando que instrues e padres compem o segmento de cdigo de um programa, co o o o

108

Cap tulo 5. Experimentos e Resultados

desenrolamento de laos ativada e a opo de ligao dinmica desativada, esse mesmo c ca ca a programa possui 477.738 bytes de cdigo. O menor tamanho do segmento de cdigo obtido o o com a tcnica de codicao 2D-VLIW comparado com o tamanho do segmento de cdigo e ca o obtido com a codicao x86 pde ser notado em um subconjunto dos programas SPEC ca o e em todos os programas MEDIABench avaliados. Deve-se tambm deixar claro que os valores apresentados na Tabela 5.6 cobrem e uma avaliao esttica da tcnica de codicao. O efeito dessa codicao considerando ca a e ca ca a busca de instrues e padres em suas respectivas memrias cache fazem parte de co o o uma avaliao dinmica. Tal avaliao implementada no trabalho de mestrado que ca a ca e estuda algoritmos e tcnicas para codicao de instruoes 2D-VLIW, atualmente em e ca c desenvolvimento no LSC/IC-UNICAMP.

5.6

Consideraes Finais co
Vrios experimentos envolvendo os conceitos e proposies abordados ao longo a co

desta Tese foram apresentados neste cap tulo. Alm de mostrar os resultados dos exe perimentos, procurou-se detalhar a metodologia adotada assim como as ferramentas e critrios utilizados. Realizar experimentos em projetos envolvendo processadores uma e e atividade rdua pois envolve a necessidade de construir e integrar diversas ferramentas. a Nos casos onde o hardware ainda no est dispon a a vel, como o caso de 2D-VLIW, e ferramentas de simulao so utilizadas, o que no minimiza a diculdade e o esforo ca a a c despendido para conseguir realizar experimentos. E interessante observar que, com o passar dos anos, a preocupao em ter um conjunto de instncias que avaliam, de forma ca a representativa, projetos na rea de arquitetura de computadores tm aumentado signia e cativamente. O trabalho de Joshi e outros [43] discute a questo da quantidade de a programas realmente necessrios para validar o desempenho de processadores e prope a o o uso de um conjunto reduzido, mas representativo, de programas para essa validao. ca Outro ponto de muita discusso no que concerne ` avaliao de trabalhos envolvendo a a ca arquiteturas de processadores diz respeito ` modelagem e simulao. O trabalho de a ca Skadron e outros [75] apresenta essa questo e discute resultados interessantes sobre o a crescimento de avaliaes experimentais baseadas em simulao. Um de seus resultados co ca

5.6. Consideraes Finais co

109

mostra uma crescente adoo em experimentos que utilizam simulao, em contraposio ca ca ca aqueles que possuem uma implementao nal do sistema. Esse resultado tem como ca base o os artigos aceitos no Simpsio Internacional de Arquiteturas de Computadores o (ISCA - International Symposium on Computer Architecture) no per odo de 1985-2001. Como exemplo, um dado revelado pelos autores que mais de 90% dos artigos aceitos, e nesse simpsio, no ano de 2001 utilizaram simulao, enquanto que essa porcentagem o ca foi de apenas 28% em 1985. Alm de SPEC e MEDIABench, um outro benchmark e bastante utilizado em avaliaes experimentais na rea de arquitetura de computadores co a e o MiBench [36]. O prximo cap o tulo retoma as motivaes e objetivos principais que nortearam o co desenvolvimento desta Tese. As contribuies alcanadas com o desenvolvimento deste co c trabalho, na forma de artigos e relatrios publicados, tambm so listadas. Por m, divero e a sas sugestes para o desenvolvimento de trabalhos futuros so apresentadas e discutidas. o a

Cap tulo 6 Concluses o


A proposta de um novo modelo de execuo para arquiteturas de processadores, ca assim como algoritmos que suportam esse modelo foram apresentados e discutidos nesta Tese. O objeto de estudo nesta Tese vai ao encontro de uma lacuna existente na rea de a arquitetura de processadores que a proposio de modelos de execuo e algoritmos para e ca ca gerao de cdigo que consideram a geometria dos grafos de dependncia entre operaes ca o e co de programas. A motivao para lidar com essa abordagem se d pela necessidade ca a crescente em investigar novas alternativas de organizao do hardware na tentativa de ca sobrepor algumas questes abertas e barreiras tecnolgicas j conhecidas pela comunidade o o a da rea de arquitetura de computadores. Dentre essas, destacam-se a barreira trmica a e devido ` miniaturizao cont a ca nua dos transistores e a disparidade entre o desempenho do processador e da memria gerando o problema conhecido como Memory Wall. o Este trabalho iniciou com uma busca visando dimensionar e caracterizar o estado da arte em termos de arquiteturas que exploram paralelismo em n de instruo atravs vel ca e de novas organizaes dos elementos de hardware, tcnicas avanadas de gerao de co e c ca cdigo e novos paradigmas de execuo. Um selecionado dessas arquiteturas faz parte o ca do Cap tulo 2. Ao elaborar esse cap tulo, o intuito no foi apenas apresentar trabalhos a relacionados mas tambm realizar uma anlise cr e a tica e compar-los qualitativamente com a a proposta desta Tese. O Cap tulo 3 abordou as caracter sticas de hardware da arquitetura 2D-VLIW. Na perspectiva do entendimento geral da arquitetura, os principais conceitos e caracter sticas provenientes do projeto da arquitetura 2D-VLIW so comentados. O cap a tulo apresentou 111

112

Cap tulo 6. Concluses o

os elementos mais relevantes que compem essa arquitetura, alm de justicar as decises o e o de projeto. Procurou-se tambm mostrar os ganhos obtidos com esse projeto atravs e e da anlise da reduo da complexidade de vrios elementos. Alm de ser o ponto de a ca a e partida para o entendimento dos elementos que fazem parte da arquitetura, esse cap tulo exemplicou o modelo de execuo 2D-VLIW. ca As questes envolvendo a gerao de cdigo para a arquitetura 2D-VLIW foram o ca o discutidas no Cap tulo 4. E nesse cap tulo que a infraestrutura de compilao e simulao ca ca de cdigo foi denida. Alm de apresentar as lacunas existentes para gerao de cdigo o e ca o em arquiteturas com restries arquiteturais, como o caso de 2D-VLIW, o Cap co e tulo 4 descreveu as solues adotadas para resolv-las. Houve uma preocupao adicional em co e ca mostrar no apenas os algoritmos desenvolvidos mas tambm analis-los em termos de a e a suas complexidades de tempo no pior caso. tomadas e mostrar os ganhos obtidos. O Cap tulo 5 apresentou os experimentos realizados na validao dos conceitos ca principais desta Tese. E nesse cap tulo que se tem uma anlise quantitativa dos ganhos a advindos do melhor desempenho de 2D-VLIW. A denio de quais experimentos, o ca detalhamento de como os experimentos foram realizados e as justicativas em torno dos resultados formaram o cerne desse cap tulo. Outrossim, o ponto importante foi demonstrar que a arquitetura 2D-VLIW pode trazer ganhos signicativos para o desempenho nal das aplicaes. Mais ainda, o cap co tulo raticou a existncia de algumas contribuies tanto no e co campo de projeto de arquiteturas de processadores quanto no projeto e desenvolvimento de algoritmos que compem as etapas da gerao de cdigo em um compilador. o ca o Da mesma forma que no cap tulo que apresentou os elementos que compem a arquitetura, procurou-se aqui justicar as decises o o

6.1

Contribuies desta Tese co


Durante o seu desenvolvimento, esta Tese foi caracterizada como uma frente de

trabalho em diversas sub-reas envolvendo o projeto de arquiteturas de processadores. a Alm deste trabalho, em n de doutorado, dois outros trabalhos em n de mestrado e vel vel esto sendo desenvolvidos a partir de problemas investigados inicialmente atravs desta a e Tese.

6.1. Contribuies desta Tese co

113

Justamente por abordar atividades em diversas sub-reas, as contribuies desta a co Tese podem ser agrupadas em dois grandes grupos: as contribuies relacionadas ` rea de co aa arquitetura de computadores e aquelas relacionadas ` gerao de cdigo. Em se tratando a ca o de arquitetura de computadores as seguintes contribuies foram realizadas: co A proposio de uma nova arquitetura de processador que explora o paralelismo ca como unidades funcionais e registradores; A adoo de um modelo de execuo que captura as dependncias de dados entre ca ca e operaes de um programa e obedece essas dependncias sem a introduo de co e ca elementos de hardware com propsito exclusivo para esse m; o A introduo de um esquema de codicao de instrues que utiliza uma memria ca ca co o inerente ao esquema de execuo e excluindo a necessidade de adicionar mais um ca estgio de pipeline; a A comprovao emp ca rica, atravs de experimentos e comparaes com arquiteturas e co que exploram paralelismo em n de instruo, dos ganhos obtidos com esse novo vel ca modelo de execuo; ca A raticao que a reduo no nmero de portas do banco de registradores uma ca ca u e ganhos efetivos em termos de rea e latncia. a e A despeito da gerao de cdigo, mais algumas contribuies foram realizadas: ca o co A demonstrao das possibilidades de gerao de cdigo para processadores com ca ca o entre unidades funcionais; A proposio e implementao de heur ca ca sticas de escalonamento e alocao de regisca tradores que exploram a geometria dos grafos de entrada assim como elementos de hardware;

em n de instruo atravs de uma nova organizao dos elementos arquiteturais vel ca e ca

cache de padres no estgio de decodicao, aproveitando assim um paralelismo o a ca

alternativa fact para o projeto de arquiteturas de processadores e pode trazer vel

diversas restries arquiteturais em termos de portas de registradores e interligao co ca

114

Cap tulo 6. Concluses o

A utilizao de tcnicas de codicao de instrues por meio de um algoritmo ca e ca co baseado em fatorao de operandos e operadores. Alm disso, a implementao e a ca e ca utilizao do mesmo junto a uma infraestrutura de compilao; ca ca A proposio, implementao e utilizao de diversas heur ca ca ca sticas que facilitam e isomorsmo de subgrafos; O tratamento dos problemas clssicos de escalonamento de instrues e alocao de a co ca registradores de maneira integrada; A busca constante em divulgar os resultados obtidos permeou todo o desenvolvimento deste trabalho. Antes mesmo da primeira publicao em evento ou peridico, ca o houve a preocupao em publicar um relatrio tcnico que servisse como referncia bsica ca o e e a para os primeiros artigos da arquitetura 2D-VLIW. Dessa forma, a listagem a seguir apresenta, em ordem crescente pela data de submisso, o relatrio tcnico e as publicaes a o e co provenientes deste trabalho e fornece uma descrio rpida sobre cada uma. Alm dos ca a e artigos j publicados, h tambm os artigos submetidos recentemente e que ainda esto a a e a sob avaliao. ca 1. R. Santos, R. Azevedo, G. Araujo. The 2D-VLIW Architecture. Technical Report IC-03-06. Institute of Computing, State University of Campinas, 2006, CampinasSo Paulo, Brazil. a Esse relatrio tcnico foi o primeiro trabalho descrevendo a arquitetura 2D-VLIW. o e O texto focou a apresentao detalhada dos recursos existentes na arquitetura e de ca seu modelo de execuo. ca 2. R. Santos, R. Azevedo, G. Araujo. Exploiting Dynamic Reconguration Techniques: The 2D-VLIW Approach. In Proceedings of the 13th Recongurable Architectures Workshop (RAW) joint with the 24th IEEE International Parallel Distributed Processing Symposium (IPDPS). Rhodes-Island, Greece, 2006, IEEE Computer Society. Essa publicao tratou da adoo da arquitetura 2D-VLIW voltada para reconguca ca rao dinmica. Considerou-se aqui a possibilidade de utilizar a memria cache de ca a o

aceleram a convergncia dos algoritmos de escalonamento e alocao baseados em e ca

6.1. Contribuies desta Tese co

115

padres como uma memria cache de conguraes. O artigo tambm realizou uma o o co e comparao de caracter ca sticas entre 2D-VLIW e arquiteturas com recongurao ca dinmica. a 3. R. Santos, R. Azevedo, G. Araujo. 2D-VLIW: An Architecture Based on the Geometry of the Computation. In Proceedings of the 17th IEEE International Conference on Application-specic, Systems, Architectures and Processors (ASAP). Steamboat Springs-Colorado, USA, 2006, IEEE Computer Society. Essa foi a publicao que detalhou as caracter ca sticas principais da arquitetura 2DVLIW. Os recursos de hardware presentes na arquitetura foram apresentados e discutiu-se as razes dos ganhos de 2D-VLIW em comparao com o modelo EPIC, o ca representado pelo processador HPL-PD. 4. R. Santos, R. Azevedo, G. Araujo. The 2D-VLIW Architecture Model. ACM Transactions on Architectures and Compilation Techniques (TACO). 2007, ACM Press. (submetido) Esse artigo abordou detalhadamente a arquitetura, o modelo de execuo e a inca fraestrutura para gerao de cdigo. Alm da descrio minuciosa de todos esses ca o e ca elementos, houve a preocupao em apresentar experimentos que raticaram os ca conceitos principais da proposta 2D-VLIW. 5. R. Santos, R. Azevedo, R. M. O. Santos. A DAGs-Packing Heuristic for a High Performance Processor Architecture. In Proceedings of the Brazilian Symposium on Operational Research (SBPO). Fortaleza-Cear, Brazil. 2007. (submetido) a Esse artigo apresentou uma abordagem mais terica sobre o projeto e desenvolo vimento de uma das heur sticas utilizadas durante o escalonamento de instrues co 2D-VLIW. O objetivo foi mostrar que a heur stica permite a modelagem e resoluo ca do problema de Empacotamento de Faixas1 , bem conhecido pela comunidade da rea de otimizao combinatria, como uma fase do escalonamento de instrues a ca o co baseado em isomorsmo de subgrafos.
1

Do ingls: Strip Packing. e

116

Cap tulo 6. Concluses o

6. R. Santos, R. Azevedo, G. Araujo. An Instruction Scheduling Algorithm Based on Subgraph Isomorphism. In Proceedings of the 16th ACM International Symposium on Parallel Architectures and Compilation Techniques (PACT). Brasov, Romania, 2007, ACM Press. (submetido) Nesse artigo, o objetivo foi detalhar a resoluo do problema de escalonamento ca de instrues atravs de uma heur co e stica que resolve o problema de isomorsmo de subgrafos. Uma das motivaes foi mostrar que mesmo um algoritmo para resoluo co ca muito boas para o problema de escalonamento de instrues. Ademais, discutiu-se co tambm a questo do emprego de algoritmos de escalonamento clssicos que tratam e a a o grafo de entrada de maneira local, como o caso de algoritmos baseados em list e scheduling. Alm desses artigos j publicados e sob avaliao, h um outro artigo, em fase nal e a ca a de escrita, que discorre sobre a tcnica de codicao e apresenta resultados estticos e e ca a dinmicos com diversos programas. Esse artigo ser submetido ao Brazilian Symposium on a a Computer Architectures (Simpsio Brasileiro de Arquiteturas de Computadores - SBAC) o de 2007. de um problema N P-completo, acoplado com heur sticas ecientes, fornece solues co

6.2

Propostas de Trabalhos Futuros


Como mencionado na Seo 6.1, uma das caracter ca sticas marcantes desta Tese foi

a abertura de trabalhos em vrias sub-reas. Diante desse contexto e com a complexidade a a inerente ` pesquisa envolvendo a proposio de novos paradigmas e conceitos na rea de a ca a arquitetura de computadores, h diversas possibilidades de extenso deste trabalho. A a a listagem a seguir, fornece algumas sugestes para desenvolvimento de pesquisas futuras: o Estudar o impacto das operaes com latncias variveis na arquitetura 2D-VLIW co e a e propor solues que minimizam o nmero de stalls do processador; co u O intuito aqui investigar o impacto de operaes com latncias variveis sobre o e co e a nmero de stalls de um processador baseado em 2D-VLIW e, principalmente, propor u otimizaes de cdigo de forma que esse nmero seja minimizado. Pode-se, inclusive, co o u

6.2. Propostas de Trabalhos Futuros

117

estudar pequenas modicaes ou acrscimos de funcionalidades em uma unidade co e funcional da matriz de UFs a m de atender a demanda das operaes com latncias co e variveis. Contudo, deve-se ter a preocupao em manter o modelo de execuo e a a ca ca organizao das UFs o mais simples poss pois essa uma caracter ca vel e stica intr nseca ao projeto 2D-VLIW. Integrar as ferramentas de escalonamento de instrues, alocao de registradores e co ca

codicao de instrues junto ao compilador Trimaran com o intuito de possibilitar ca co um uxo de execuo completo e, ainda, aproveitar as caracter ca sticas de simulao ca desse compilador; O desenvolvimento dessa proposta deve fechar o trabalho a respeito de uma infraestrutura de compilao para a arquitetura 2D-VLIW. Alm disso, h aqui uma ca e a contribuio pujante para pesquisas futuras que propem novas otimizaes de ca o co cdigo ou melhorias no processo de gerao de cdigo. Parte dessa proposta est o ca o a sendo discutida e, pretende-se implement-la no mbito do projeto de mestrado do a a aluno Lu Guilherme Pereira que investiga tcnicas de spill code junto ao algoritmo s e

de escalonamento e alocao de registradores. ca Realizar experimentos com a tcnica de codicao visando ` determinao de pae ca a ca da cache de padres; o Atravs de experimentos com padres de instrues e com base na taxa de ocupao e o co ca de instrues codicadas, deve-se buscar o menor tamanho para uma instruo co ca codicada e o padro da instruo sem sacricar o tamanho do programa como a ca um todo. Ademais, os experimentos podem ir alm e auxiliar na determinao da e ca organizao da cache de padres com relao ` pol ca o ca a tica de substituio de objetos, ca tamanhos de blocos e conjuntos, entre outros parmetros. Parte desse trabalho est a a sendo desenvolvido no projeto de mestrado do aluno Rafael Fernandes Batistella e h, inclusive, um artigo submetido para uma conferncia contendo resultados a e estticos e dinmicos envolvendo a tcnica de codicaao. a a e c

rmetros para o tamanho da instruo codicada, tamanho do padro e organizao a ca a ca

118

Cap tulo 6. Concluses o

Comparar quantitativamente o modelo de execuo da arquitetura 2D-VLIW com ca modelos de outras arquiteturas baseadas em matrizes de unidades funcionais como TRIPS, RAW e at com processadores comerciais como os processadores TMS e a e arquitetura Itanium; O foco desse trabalho a construo de uma infraestrutura de simulao que e ca ca possibilite a avaliao e comparao de modelos de execuo prximos ao modelo ca ca ca o 2D-VLIW. Apesar do objetivo ser bem denido, a execuo desse trabalho exige um ca estudo considervel a m de determinar parmetros de comparao, caracter a a ca sticas das arquiteturas, programas e instncias de entrada a serem utilizadas, entre outros. a Realizar um estudo terico sobre as caracter o sticas dos DAGs e do grafo da arquitetura e propor algoritmos de isomorsmo de subgrafos que tirem proveito dessas dade da soluo proposta pelo algoritmo de escalonamento adotado atualmente; ca A caracter stica principal desse projeto fazer uma anlise terica sobre a otimalie a o dade das solues obtidas pelo algoritmo de escalonamento baseado em isomorsmo co de subgrafos. H uma intuio de que os grafos G2 - obtidos como resultado a ca do isomorsmo - sejam boas solues para o escalonamento. No entanto, no se co a sabe quo distante da soluo tima est a soluo fornecida pelo algoritmo. Em a ca o a ca acrscimo a esse estudo, poss realizar um estudo mais detalhado considerando a e e vel qualidade da soluo das heur ca sticas utilizadas. Em particular, uma das heur sticas que merece ateno especial aquela que infere o tamanho do grafo base a partir ca e do tamanho do grafo de entrada. Acredita-se que uma formulaao do problema c de Empacotamento de Faixas baseada em programao linear inteira pode fornecer ca melhores resultados. Estudar e realizar experimentos considerando potncia e rea consumida por um e a processador 2D-VLIW; Essa proposta est voltada para a questo da anlise dos recursos de hardware a a a presentes em um processador 2D-VLIW. O objetivo aqui avaliar quantitativamente e as caracter sticas de potncia e rea consumida pela arquitetura 2D-VLIW. Alm e a e caracter sticas e obtenham melhores desempenhos. Alm disso, vericar a otimalie

6.2. Propostas de Trabalhos Futuros

119

disso, uma contribuio relevante seria usar informaes de consumo de potncia das ca co e operaes e agregar essas informaes junto `s ferramentas de gerao de cdigo. co co a ca o Nesse sentido, pode-se tomar como base trabalhos anteriores que realizaram anlises a de potncia sobre arquiteturas que exploram paralelismo em n de instruo [11, e vel ca 48] ou trabalhos que adicionaram algoritmos para avaliaao de potncia junto a c e compiladores [6, 83]. Dotar a linguagem HMDES com recursos para possibilitar a descrio da interca para realizar a simulao de arquiteturas com diferentes modelos de execuo e ca ca organizaes arquiteturais; co Em adio ` proposta envolvendo a integrao das ferramentas de escalonamento ca a ca e alocao no compilador Trimaran, esse trabalho teria por objetivo adicionar noca vas caracter sticas ` linguagem de descrio de hardware HMDES na tentativa de a ca aumentar o leque de arquiteturas que podem ser descritas atravs dessa linguagem. e Apesar de estar fortemente relacionado com a linguagem HMDES, essa proposta ainda exige o conhecimento e implementao de novas funcionalidades no cerne do ca compilador Trimaran. Realizar a implementao em hardware de uma instncia da arquitetura 2D-VLIW; ca a Esse trabalho faria a implementao do prottipo de um processador 2D-VLIW em ca o uma tecnologia de hardware. Inicialmente, a tecnologia de FPGAs (Field Programmable Gate Arrays) seria usada. Essa implementao deve seguir as especicaes ca co da arquitetura e possibilitar mais experimentos envolvendo uma implementao real ca da arquitetura.

conexo entre UFs e registradores e inserir caracter a sticas no simulador Trimaran

Referncias Bibliogrcas e a
[1] A. Adl-Tabatabai, P. Dubey, D. Dunning, M. Espig, E. Grochowski, A. Gonzalez, S. Hahn, R. Huggahalli, J. Jayasimha, A. Kumar P. Kundu, T. Mattson, D. McAuley, A. Munoz, and C. Narad. Intel Tera-Scale Research Program Focuses on Moving from a Few Cores to Many. Technology@Intel Magazine, pages 17, 2006. [2] A. V. Aho, M. S. Lam, R. Sethi, and J. D. Ullman. Techniques, & Tools. Addison Wesley, 2 edition, 2007. [3] A. V. Aho, R. Sethi, and J. D. Ullman. Compilers, Principles, Techniques and Tools. Addison Wesley, Boston, 1986. [4] A. Aiken and A. Nicolau. Optimal Loop Parallelization. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 308317. ACM Press, April 1988. [5] G. Araujo, P. Centoducatte, M. Cortes, and R. Pannain. Code Compression Based on Operand Factorization. In Proceedings of the 31st Annual ACM/IEEE International Symposium on Microarchitecture (MICRO), pages 194201. IEEE Computer Society, 1998. [6] R. Banakar, M. Ekpanyopang, K. Puttaswamy, R. Rabbah, M. Balakrishnan, V. Mooney, and K. Palem. A System Level Energy Model for HPL-PD Microarchitecture in Trimaran Framework (TRIREME). Technical Report GIT-CC-02-35, Georgia Institute of Technology, 2002. 121 Compilers - Principles,

122

REFERENCIAS BIBLIOGRAFICAS

[7] F. Barat, R. Lauwereins, and G. Deconinck. Engineering, 28(9):847860, 2002.

Recongurable Instruction Set

Processors from a Hardware/Software Perspective. IEEE Transactions on Software

[8] R. Bittner and P. Athanas. WormHole Run-Time Reconguration. In Proceedings of the 5th International Symposium on Field-Programmable Gate Arrays (FPGA), pages 7985. ACM Press, February 1997. [9] J. A. Bondy and U. S. R. Murty. Graph Theory with Applications. The Macmillan Press, 1976. [10] P. Briggs, K. D. Cooper, K. kennedy, and L. Torczon. Coloring Heuristics for Register Allocation. In Proceedings of the ACM SIGPLAN 1989 Conference on Programming Language Design and Implementation (PLDI), pages 275284. ACM Press, 1989. [11] D. Brooks, V. Tiwari, and M. Martonosi. Wattch: A Framework for ArchitecturalLevel Power Analysis and Optimizations. In Proceedings of the International Symposium on Computer Architecture (ISCA), pages 8394. ACM Press, 2000. [12] D. Burger and J. Goodman. Billion-Transistor Architectures: There and Back Again. IEEE Computer, 37(3):2228, 2004. [13] D. Burger, S. W. Keckler, K. S. McKinley, M. Dahlin, L. K. John, C. Lin, C. R. Moore, J. Burril, R. G. Mcdonald, and W. Yoder. Scaling to the End of Silicon with EDGE Architectures. IEEE Computer, 37(7):4455, 2004. [14] A. Capitanio, N. Duit, and A. Nicolau. Partitioned Register Files for VLIWs: A Preliminary Analysis of Tradeos. In Proceedings of the 25th IEEE International Symposium on Microarchitecture (MICRO), pages 292300. IEEE Computer Society, 1992. [15] G. J. Chaitin, M. A. Auslander, A. K. Shandra, J. Cocke, M. E. Hopkins, and P. W. Markstein. Register Allocation via Coloring. Computer Languages, 6:4757, 1981.

REFERENCIAS BIBLIOGRAFICAS

123

[16] L. N. Chakrapani, J. Gyllenhaal, W. Mei, W. Hwu, S. A. Mahlke, K. V. Palem, and R. M. Rabbah. Trimaran - An Infrastructure for Research in Instruction-Level Parallelism. Lecture Notes in Computer Science, 3602:3241, 2004. [17] Y. Chou, P. Pillai, H. Schmit, and J. P. Shen. PipeRench Implementation of

the Instruction Path Coprocessor. In Proceedings of the 33rd IEEE/ACM Annual International Symposium on Microarchitecture (MICRO), pages 147158. IEEE Computer Society, December 2000. [18] D. Citron and D. G. Feitelson. Revisiting Instruction Level Reuse. In Proceedings of the Workshop on Duplication, Deconstructing and Debunking (WDDD), pages 6270, May 2002. [19] R. P. Colwell, R. P. Nix, J. J. ODonnel, D. B. Papworth, and P. K. Rodman. A VLIW Architecture for a Trace Scheduling Compiler. In Proceedings of the 2nd International Conference on Architectual Support for Programming Languages and Operating Systems (ASPLOS), pages 180192. IEEE Computer Society, 1987. [20] K. Compton and S. Hauck. Recongurable Computing: A Survey of Systems and Software. ACM Computing Surveys, 34(2):170210, 2002. [21] K. E. Coons, X. Chen, S. K. Kushwaha, D. Burger, and K. S. McKinley. A Spatial Path Scheduling Algorithm for EDGE Architectures. In Proceedings of the 12th ACM Annual International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS), pages 4051. ACM Press, October 2006. [22] L. P. Cordella, P. Foggia, C. Sansona, and M. Vento. An Improved Algorithm for Matching Large Graphs. In Proceedings of the 3rd IAPR TC15 Workshop on GraphBased Representations, pages 149159, Ischia - Italy, 2001. [23] L. P. Cordella, P. Foggia, C. Sansone, and M. Vento. Evaluating Performance of the VF Graph Matching Algorithm. In Proceedings of the 10th International Conference on Image Analysis and Processing, pages 11721177. IEEE Computer Society, 1999.

124

REFERENCIAS BIBLIOGRAFICAS

[24] H. Corporaal. ILP Architectures: Trading Hardware for Software Complexity. In Proceedings of the 3rd International Conference on Algorithms and Architectures for Parallel Processing, pages 1412154. IEEE Computer Society, 1997. [25] D. E. Culler, J. P. Singh, and A. Gupta. Parallel Computer Architecture - A

Hardware/Software Approach. Morgan Kaufmann Publishers Inc., 1999. [26] R. Cytron, J. Ferrante, B. K. Rosen, M. N. Wegman, and F. K. Zadeck. An

Ecient Method of Computing Static Single Assignment Form. In Proceedings of the 16th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 2535, Austin-TX, 1989. ACM Press. [27] Carole Dulong. The IA-64 Architecture at Work. IEEE Computer, 31(7):2432, 1998. [28] H. El-Rewini and M. Abd-El-Barr. Advanced Computer Architecture and Parallel Processing. John Wiley & Sons, New Jersey, 2005. [29] D. Eppstein. Subgraph Isomorphism in Planar Graphs and Related Problems.

Journal of Graph Algorithms and Applications, 3(3):127, 1999. [30] J. Ernst, W. Evans, C. W. Fraser, S. Lucco, and T. A. Proebsting. and Implementation (PLDI), pages 358365. ACM Press, 1997. [31] J. A. Fisher. Very Long Instruction Word Architectures and the ELI-512. In Code

Compression. In Proceedings of the Conference on Programming Language Design

Proceedings of the 10th International Symposium on Computer Architecture (ISCA), pages 140150. IEEE Computer Society, 1983. [32] M. Franz and K. Thomas. Slim Binaries. Communications of the ACM, 40(2):8794, 1997. [33] M. R. Garey and D. S. Johnson. Computers and Intractability: A Guide to the Theory of NP-Completeness. W. H. Freeman and Company, 1979.

REFERENCIAS BIBLIOGRAFICAS

125

[34] P. H. Gibbons and S. S. Muchnick. Ecient Instruction Scheduling for a Pipelined Architecture. In Proceedings of the 1986 SIGPLAN Symposium on Compiler Construction, pages 1116. ACM Press, 1986. [35] S. C. Goldstein, H. Schmit, M. Budiu, S. Cadambi, M. Moe, and R. R. Taylor. PipeRench: A Recongurable Architecture and Compiler. IEEE Computer, 33(4):70 76, 2000. [36] M.R. Guthaus, J. S. Ringenberg, D. Ernst, T. M. Austin, T. Mudge, and R. B. Brown. MiBench: A Free, Commercially Representative Embedded Benchmark Suite. In Proceedings of the 2001 IEEE International Workshop on Workload Characterization, pages 314. IEEE Computer Society, 2001. [37] J. C. Gyllenhaal, W. W. Hwu, and B. R. Rau. HMDES Version 2.0 Specication. Technical Report IMPACT-96-3, Center for Reliable and High-Performance Computing - University of Illinois at Urbana-Champaign, Urbana-Champaign-Illinois, 1996. [38] S. Hack. Interference Graphs of Programs in SSA-Form. Technical Report ISSN 1432-7864, Universitat Karlsruhe, 2005. [39] T. Hara, H. Ando, C. Nakanishi, and M. Nakaya. Recongurable Computing: A Survey of Systems and Software. ACM SIGARCH Computer Architecture News, 24(2):213224, 1996. [40] J. L. Henessy and T. Gross. Postpass Code Optimization of Pipeline Constraints. ACM Transactions on Programming Languages and Systems, 5(3):422448, July 1983. [41] J. Henning. SPEC CPU2000: Measuring CPU Performance in the New Millenium. IEEE Computer, 33(7):2835, 2000. [42] D. S. Johnson. Fast Algorithms for Bin Packing. Journal of Computer and System Sciences, 8:272314, 1974.

126

REFERENCIAS BIBLIOGRAFICAS

[43] A. Joshi, A. Phansalkar, L. Eeckhout, and K. John. Measuring Benchmark Similarity Using Inherent Program Characteristics. IEEE Transactions on Computers, 55:769 782, 2006. [44] N. P. Jouppi. Available Instruction-Level Parallelism for Superscalar and Superpipelined Machines. In Proceedings of the 3rd International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS), pages 272 282. ACM Press, 1989. [45] J. A. Kahle, M. N. Day, H. P. Hofstee, C. R. Johns, T. R. Maeurer, and D. Shippy. Introduction to the Cell Multiprocessor. IBM Journal of Research and Development, 49(4):589603, 2005. [46] V. Kathail, M. S. Schlansker, and B. R. Rau. Palo Alto, 1994. [47] V. Kathail, M. S. Schlansker, and B. R. Rau. HPL-PD Architecture Specication: Version 1.1. Technical Report 93-80, Hewlett Packard Laboratories Palo Alto, 2000. [48] H. S. Kim, N. Vijaykrishnan, M. Kandemir, and M. J. Irwin. A Framework for Energy Estimation of VLIW Architecture. In Proceedings of the International Conference on Computer Design (ICCD), pages 4045. IEEE Computer Society, 2001. [49] C.E. Kozyrakis and D. A. Patterson. A New Direction for Computer Architecture Research. IEEE Computer, 31(11):2432, 1998. [50] M. S. Lam and R. P. Wilson. Limits of Control Flow on Parallelism. In Proceedings of the 19th International Symposium on Computer Architecture (ISCA), pages 4657. ACM Press, 1992. [51] C. Lee, M. Potkonjak, and W. H. Smith. MediaBench: A Tool for Evaluating and Synthesizing Multimedia and Communications Systems. In Proceedings of the 30th Annual International Symposium on Microarchitecture (MICRO), pages 330335, Research Triangle Park - North Carolina, 1997. IEEE Computer Society. HPL PlayDoh Architecture

Specication: Version 1.1. Technical Report 93-80, Hewlett Packard Laboratories

REFERENCIAS BIBLIOGRAFICAS

127

[52] W. Lee, R. Barua, M. Frank, D. Srikrishna, J. Babb, V. Sarkar, and S. Amarasinghe. Space-Time Scheduling of Instruction-Level Parallelism on a Raw Machine. In Proceedings of the 8th International Conference on Architectural Support for Programming Language and Operating Systems (ASPLOS), pages 4657. ACM Press, 1998. [53] S. A. Mahlke, D. C. Lin, W. Y. Chen, R. E. Hank, and R. A. Bringmann. Eective Compiler Support for Predicated Execution Using the Hyperblock. In Proceedings of the 25th IEEE/ACM International Symposium on Microarchitecture (MICRO), pages 4554. IEEE Computer Society, December 1992. [54] J. Marko. Intels Big Shift After Hitting Technical Wall. The New York Times, May 2004. [55] S. McGeady. The 1960CA Superscalar Implementation of the 80960 Architecture. IEEE Computer, pages 232240, 1990. [56] B. Mei, A. Lambrechts, J-Y Mignolet, D. Verkest, and R. Lauwereins. Architecture Exploration for a Recongurable Architecture Template. IEEE Design & Test of Computers, 22(2):90101, 2005. [57] B. Mei, S. Vernalde, D. Verkest, H. D. Man, and R. Lauwereins. DRESC: In

A Retargetable Compiler for Coarse-Grained Recongurable Architectures. (FPT), pages 166173. IEEE Computer Society, 2001.

Proceedings of the IEEE International Conference on Field-Programmable Technology

[58] B. Mei, S. Vernalde, D. Verkest, H. De Man, and R. Lauwereins. Adres: An Architecture with Tightly Coupled VLIW Processor and Coarse-Grained Recongurable Matrix. In Proceedings of the 13th International Conference on Field-Programmable Logic and Applications (FPLA), pages 6170, 2003. [59] M. Mercaldi, S. Swanson, A. Petersen, A. Putnam, A. Schwerin, M. Oskin, and S. J. Eggers. Instruction Scheduling for a Tiled Dataow Architecture. In Proceedings of the 16th International Conference on Architectural Support for Programming Language and Operating Systems (ASPLOS), pages 141150. ACM Press, 2006.

128

REFERENCIAS BIBLIOGRAFICAS

[60] M. Mercaldi, S. Swanson, A. Petersen, A. Putnam, A. Schwerin, M. Oskin, and S. J. Eggers. Modeling Instruction Placement on a Spatial Architecture. In Proceedings of the ACM Symposium on Parallel Algorithms and Architectures (SPAA), pages 158169. ACM Press, 2006. [61] E. Mirsky and A. DeHon. A Recongurable Computing Architecture with Congurable Instruction Distribution and Deployable Resources. In Proceedings of the IEEE Symposium on FPGAs for Custom Computing Machines (FCCM). IEEE Computer Society, 1996. [62] S. S. Muchnick. Advanced Compiler Design and Implementation. Morgan Kaufmann, San Francisco, 1997. [63] R. Nagarajan, S. K. Kushwaha, D. Burger, K. S. McKinley, C. Lin, and S. Keckler. Static Placement, Dynamic Issue (SPDI) Scheduling for EDGE Architectures. In Proceedings of the 13th ACM Annual International Parallel Architecture and Compilation Techniques (PACT), pages 7484. IEEE Computer Society, 2004. [64] R. Nagarajan, K. Sankaralingam, D. Burger, and S. Keckler. A Design Space

Evaluation of Grid Processor Architectures. In Proceedings of the 34th IEEE/ACM Annual International Symposium on Microarchitecture, pages 4051. IEEE Computer Society, 2001. [65] F. M. Q. Pereira and J. Palsberg. Register Allocation via Coloring of Chordal Graphs. In Proceedings of the Asian Symposium on Programming Languages and Systems, pages 315329, 2005. [66] D. A. Pucknell and K. Eshraghian. Basic VLSI Design: Systems and Circuits. Prentice Hall, Sydney, 2 edition, 1988. [67] B. R. Rau. Iterative Modulo Scheduling: An Algorithm for Software Pipelining Loops. In Proceedings of the 27th Annual International Symposium on Microarchitecture (MICRO), pages 6374. ACM Press, December 1994.

REFERENCIAS BIBLIOGRAFICAS

129

[68] R. Razdan and M. D. Smith. A High-Performance Microarchitecture with HardwareProgrammable Functional Units. In Proceedings of the 27th IEEE/ACM Annual International Symposium on Microarchitecture (MICRO), pages 172180. IEEE Computer Society, November 1994. [69] K. Sankaralingam, R. Nagarajan, H. Liu, C. Kim, J. Huh, D. Burger, S. W. Keckler, and C. R. Moore. Exploiting ILP, TLP, and DLP with the Polymorphous TRIPS Architecture. In Proceedings of the 30th IEEE Annual International Symposium on Computer Architecture (ISCA), pages 422434. ACM Press, May 2003. [70] M. S. Schlansker and B. R. Rau. Alto, February 2000. [71] M. S. Schlansker and B. R. Rau. EPIC: Explicitly Parallel Instruction Computing. IEEE Computer, 33(2):3745, 2000. [72] H. Schmit. Incremental Reconguration for Pipelined Applications. In Proceedings of the 5th IEEE Symposium on FPGA-Based Custom Computing Machines (FCCM), pages 4755. IEEE Computer Society, 1997. [73] H. Schmit, D. Whelihan, A. Tsai, M. Moe, B. Levine, and R. R. Taylor. PipeRench: A Virtualized Programmable Datapath in 0.18 Micron Technology. In Proceedings of the IEEE Custom Integrated Circuits Conference (CICC), pages 6366, Florida, May 2002. IEEE Computer Society. [74] R. Sethi. Complete Register Allocation Problems. In Proceedings of the 5th Annual ACM Symposium on Theory of Computation, pages 182195. ACM Press, 1973. [75] K. Skadron, M. Martonosi, D. I. August, M. D. Hill, D. J. Lilja, and V. S. Pai. Challenges in Computer Architecture Evaluation. IEEE Computer, 36(8):3036, 2003. [76] M. D. Smith, M. Johnson, and M. A. Horowitz. Limits on Multiple Instruction Issue. In Proceedings of the 3rd International Conference on Architectural Support EPIC: An Architecture for Instruction-Level

Parallel Processors. Technical Report 99-111, Hewlett Packard Laboratories Palo

130

REFERENCIAS BIBLIOGRAFICAS

for Programming Languages and Operating Systems (ASPLOS), pages 290302. ACM Press, 1989. [77] A. Sodani and G. S. Sohi. Dynamic Instruction Reuse. In Proceedings of the 24th Annual International Symposium on Computer Architecture (ISCA), pages 194205. ACM Press, 1997. [78] S. Swanson, K. Michelson, A. Schwerin, and M. Oskin. Dataow: The Road Less Complex. In Proceedings of the 30th Annual International Symposium on Computer Architecture (ISCA). ACM Press, 2003. [79] S. Swanson, K. Michelson, A. Schwerin, and M. Oskin. WaveScalar. In Proceedings of the 36th IEEE International Symposium on Microarchitecture (MICRO). IEEE Computer Society, 2003. [80] S. Swanson, A. Schwerin, M. Mercaldi, A. Petersen, A. Putnam, K. Michelson, M. Oskin, and S. Eggers. The WaveScalar Architecture. ACM Transactions on Computer Systems, 2007. [81] M. B. Taylor, W. Lee, J. Miller, D. Wentzla, I. Bratt, B. Greenwald, H. Homann, P. Johnson, J. Kim, J. Psota, A. Saraf, N. Shnidman, V. Strumpen, M. Frank, S. Amarasinghe, and A. Agarwal. Evaluation of the Raw Microprocessor: An Exposed-Wire-Delay Architecture for ILP and Streams. In Proceedings of the 31st Annual International Symposium on Computer Architecture (ISCA), pages 213. IEEE Computer Society, 2004. [82] J. R. Ullmann. An Algorithm for Subgraph Isomorphism. Journal of the Association for Computing Machinery, 23(1):3142, 1976. [83] N. Vijaykrishnan, M. Kandemir, A. Sivasubramanian, and M. J. Irwin. Power Aware Design Methodologies, chapter Tools and Techniques for Integrated HardwareSoftware Energy Optimizations, pages 277296. Kluwer Academic Publishers, 2002.

REFERENCIAS BIBLIOGRAFICAS

131

[84] E. Waingold, M. Taylor, D. Srikrishna, V. Sarkar, W. Lee, V. Lee, J. Kim, M. Frank, P. Finch, R. Barua, J. Babb, S. Amarasinghe, and A. Argawal. Baring it All to Software: RAW Machines. IEEE Computer, 30(9):8693, 1997. [85] D. W. Wall. Limits of Instruction-Level Parallelism. In Proceedings of the 4th ACM Annual International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS), pages 176188. ACM Press, 1991.

Potrebbero piacerti anche