Retargeting Open64 to A RISC processor -- A Student’s Perspective
description
Transcript of Retargeting Open64 to A RISC processor -- A Student’s Perspective
Retargeting Open64 to A RISC processor
-- A Student’s Perspective
Author: Huimin Cui Xiaobing Feng
2009.03
1
Motivation
Retarget is of significance for Open64 – Good retarget-ability brings more targets– more targets support brings more user.
But there is no detailed manual– To show how to retarget step by step, to let
even a green-hand can do the porting.
– To give an overview of the performance just after retarget done.
2
Retarget Procedure
Summarized a detailed procedure for future retarget
– File creation order– Building order– Listed all the files that require modification– How to fix up some critical files
3
Retarget Procedure —our
methodology(1)1st step
– Verify basic compiler issues, C Front-endIR transformationCode generationSimple Library Function Call
– Naïve HelloWorld
4
Retarget Procedure —our
methodology(2)
2nd step– Verify ABI/CFlow– Variations of HelloWorld
Change Data types of parametersAdd control-flow: branch & loop
3rd step– Verify optimization FRAMEWORK– -O0, -O2, -O3
Retarget Procedure —our
methodology(3)4th step
– Further verify CG/optimizations/multiple procedures
– Stanford benchmark, -O0 to –O3
5th step– Verify c++ FE/loop optimizations– Abstraction penalty benchmark, -O0 to –O3
6
Retarget Procedure—some points
In most cases, it’s easier to tailor the files from existing ones
Make the compiler work, then make it perform
Use debugging tools of isolation/tracing/ dumping
7
Discussion—Easy of Retarget
Took a student 2 monthsDealt with
– ISA– ABI– Code Generation– Some machine-dependent functions
Passed the benchmarks, (-O0 to –O3)– Stanford Benchmark– Abstraction Penalty Benchmark– Some applications from CPU2000, bzip2 & mcf
8
Discussion—Performance (1)
NO machine-dependent performance tuning after retarget.
– competitive or better performance compared to a matured GCC-Mips compiler
– obvious performance improvement from –O2 to –O3, especially for C++ programs with higher abstraction levels.
9
Discussion—Performance(2)
Performance of abstraction penalty, -O2 and –O3The higher, the better
10
Discussion—Performance(3)
Performance of Stanford BenchmarkThe lower, the better
11
Discussion—Performance(4)
Performance of bzip2 & mcf
12
Suggestions
Can the flags distributed in multiple files be merged into one file?– Eg. Endianness
Can some graphic tools be developed for view IR, flow, etc?
13
Summary
A detailed retarget procedure (derived from Fred Chow’s document)– Shared our methodology
Discussed two retargeting issues– Ease of retarget– Performance
Some suggestions