Description
Actual requirement is to port GNU C Compiler to DSP. Since we do not have knowledge in porting GNU to DSP, we decided to build the prototype.
The prototype should support the basic DSP application namely FIR Filter.
First we have defined the input/ output (by hand coding the expected assembly) based on the DSP application to be supported.
In this prototype the following features of the DSP architecture needs to be supported:
- Pipelining
- Multiple ALU
- SIMD (DSP has multiple execution units)
- Hardware loop
- Post increment addressing mode
- Multiple memory banks
We have restricted the C level feature which needs to be supported as per the DSP application program.
The main challenge is that how to support the features which are specific to DSP.
As a first step we have identified whether the support exist for the above features in GNU Compiler. We have studied and analyzed the existing GNU port (Example BlackFin) which supported the similar features required for DSP.
We have identified that the required DSP features are already supported in GNU Compiler. So, the machine descriptions need to be added in-order to support the required DSP features.
Now, we decided to do the experiment. We have added the machine descriptions and experiment the impact of the same. After successful experiment we incorporated each feature to the GNU port for DSP.
GNU Compiler porting work is split into multiple defined increments. This division of task enables concentrating on a small defined set of tasks at a time.
The following increments are defined for porting GNU Compiler for DSP.
-
First Increment (00.00.01):
The following features are supported:
- Instructions as required by basic DSP application
- Multiple ALU
- Pipelining
- Post-increment addressing mode
-
Second Increment (00.00.02):
The following features are supported:
- X and Y memory bank.
-
Third Increment (00.00.03):
Currently we are proceeding with this increment. The following features are planned to be supported:
- Hardware loop
- Architecture restrictions
-
Forth Increment (00.00.04):
The following features are planned to be supported:
- SIMD
Each increment is planned ~1 to 1.5 months. Total duration of the prototype is 5 months.
-
Current status:
Currently we have completed 2 increments (00.00.01 and 00.00.02). Assembly is generated for respective increments. Since we don’t have tools (Assembler, Linker and Simulator), assembly is verified manually.