Dissertação

{en_GB=C Compiler for the VERSAT Reconfigurable Processor} {} EVALUATED

{pt=Nos últimos anos, a computação reconfigurável tem recebido grande atenção, pois permite mudar a arquitetura dinamicamente. Versat é uma dessas arquiteturas reconfiguráveis. O objetivo deste trabalho é fornecer um compilador da linguagem C para o picoVersat, o controlador do Versat. O picoVersat possui um conjunto muito reduzido de instruções, realizando cálculos simples e controlando os subsistemas a ele ligados. Foi escolhido o compilador lcc porque permite múltiplos processadores alvo, está bem documentado e utiliza uma ferramenta de seleção das instruções, facilitando o processo de geração de código. Cada processador alvo do lcc é configurado por uma estrutura que parameteriza o gerador alvo. A reserva de registos pode ajustar-se às caraterísticas de cada processador e uma árvore gramatical permite descrever a maioria das operações, associando-lhes um custo. Conseguese a otimização da seleção de instruções fornecendo diferentes combinações de árvores gramaticais com custos distintos. As instruções mais complexas podem ser codificadas manualmente, tal como o registo de ativação das funções. Adicionou-se ao lcc a geração direta de instruções em assembly, pois não é uma função ANSI C. Como o Versat é configurado através da escrita em posições específicas de memória, o seu controlo realiza-se com simples instruções de atribuição em C. Foram realizados testes extensivos ao compilador num ambiente de desenvolvimento integrado. O compilador realizado permite controlar o Versat numa linguagem de alto-nível. O número reduzido de instruções disponíveis no picoVersat implica que as operações na pilha, como manipulação de argumentos e funções, resulta em longas sequências de instruções., en=Reconfigurable computing has had a great focus in the past decades as it promises to combine the performance of dedicated hardware with the flexibility of software. Versat is a Coarse Grained Reconfigurable Array architecture capable of dynamic and partial reconfiguration. The purpose of this work is to provide a full C language compiler for picoVersat, the Versat hardware controller. PicoVersat has a minimalist instruction set, can be programmed in its assembly, and is used to perform simple calculations and reconfiguring Versat. The lcc framework was chosen because it is a retargetable compiler, well documented and uses a code selection tool to help the code generation process. Each lcc back-end is configured through a structure that parameterizes the back-end code generator. Instruction selection optimization is achieved by providing different tree grammar combination of different costs. Complex instructions can be coded manually as well as function activation records. Assembly in-lining through the asm routine was added to the compiler front-end, since it is not ANSI C. The Versat configuration is memory mapped, thus each functional unit can be configured by writing to specific memory addresses with an ordinary C language assignment instruction. The compiler was integrated into a compilation framework, and extensive testing was performed. The resulting compiler allows all benefits of the C high-level language. Low level assembly instructions are still possible through the asm directive. The minimalist picoVersat instruction set results in long code sequencies, specially for stack operations like argument or function manipulation. }
{pt=Versat, CGRA, picoVersat, compilador de C, geração de código com lcc, en=Versat, CGRA, picoVersat, C-compiler, lcc back-end}

novembro 20, 2019, 14:0

Publicação

Obra sujeita a Direitos de Autor

Orientação

ORIENTADOR

José João Henriques Teixeira de Sousa

Departamento de Engenharia Electrotécnica e de Computadores (DEEC)

Assistant Professor