[LLVMdev] GSoC 2009: An LLVM Backend for TPA

Chris Lattner clattner at apple.com
Wed Apr 1 22:02:35 PDT 2009

On Apr 1, 2009, at 9:53 PM, lu lu wrote:

> Hi all,
> I'd like to write an LLVM backend for TPA processor architecture as  
> part of 2009's Google Summer of Code program.

Who is using the TPA processor?  Is this generally useful, or specific  
to your research program?


> TPA processor is a new architecture that offers the possibility of  
> high instruction-level parallelism with energy efficiency. TPA  
> architecture partitions the work between the compiler and the  
> hardware differently from RISC and CISC architectures. TPA  
> architecture has three different features that require new complier  
> support. First, the compiler is responsible for partitioning the  
> program into a sequence of structured blocks, which logically  
> execute atomically. Secondly, the compiler should encode instruction  
> dependences explicitly, eliminating the need for the hardware to  
> discover dependences dynamically. The instructions within each block  
> communicate directly, instead of communicating through shared  
> registers. The TPA architecture could impose restrictions on its  
> blocks to simplify the microarchitecture. Third, the compiler should  
> statically schedule the instruction for the dynamic issuing model.
> Based on the required of the TPA architecture, the project has three  
> main tasks: Fisrt, writing an LLVM backend could produce TPA machine  
> code. Secondly, we’ll optimize the method of producing the TPA  
> blocks so that the blocks are full of useful instructions while  
> enforcing the architecture constraints. Third, we’ll optimize the  
> instruction scheduler so that instructions in the block can execute  
> with minimum cost.
> Besides the basic LLVM backend for TPA processor, two passes are  
> crucial for our research work. One is function pass called  
> Hyperblock_Formation, which partition several basic blocks into a  
> TPA block. We'll use a collection of heuristics, such as critical  
> path ordering, load balancing, data cache locality, register output  
> and so on. The other is a block pass called instruction block, which  
> statically maps the instructions to the processor. To implement the  
> instruction scheduler, we'll use another set of heuristics, such as  
> placement for locality, contention, effective window size, etc.
> As for my personal background, I'm a graduate student at University  
> of Science and Technology of China with a strong background in  
> compiler theory. My major is computer architecture, the mainly job  
> of my team is to research a new architecture that could take full  
> advantage of hardware resource to speed up the programs. Recently,  
> we have proposed data-like driven TPA architecture, so we should  
> implement a compiler for it. I choose LLVM as an auxiliary  
> framework. I believe this project will be useful to our research and  
> we'll give a TPA target backend to the LLVM community.
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

More information about the llvm-dev mailing list