| 1 | \begin{taskinfo} |
|---|
| 2 | \let\LIP\leader |
|---|
| 3 | \let\INRIA\enable |
|---|
| 4 | \end{taskinfo} |
|---|
| 5 | % |
|---|
| 6 | \begin{objectif} |
|---|
| 7 | The objective of this task is to convert the input specification of |
|---|
| 8 | an hardware accelerator, which must be written in a familiar language |
|---|
| 9 | (C/C++) with as few constraints as possible, into a form suitable for |
|---|
| 10 | the HLS tools (i.e. HAS back-end tools of the COACH project). If the |
|---|
| 11 | target is an ASIP, the front-end has to extract |
|---|
| 12 | patterns from the source code and convert them into the definition |
|---|
| 13 | of an extensible processor. If the target is a process network, the |
|---|
| 14 | front end has to distribute the workload and the data sets as fairly |
|---|
| 15 | as possible, identify communication channels, and output an \xcoach |
|---|
| 16 | description. |
|---|
| 17 | \end{objectif} |
|---|
| 18 | % |
|---|
| 19 | \begin{workpackage} |
|---|
| 20 | \subtask{ASIP compiler} |
|---|
| 21 | This sub-task aims at providing compiler support for custom instructions |
|---|
| 22 | within the HAS front-end. It will take as input the COACH intermediate |
|---|
| 23 | representation, and will output an annotated COACH IR containing the custom |
|---|
| 24 | instructions definitions along with their occurrence in the application. |
|---|
| 25 | \begin{livrable} |
|---|
| 26 | \itemV{0}{12}{x}{\Sinria}{ASIP compilation flow} |
|---|
| 27 | In this first version of the software, the computations patterns corresponding to |
|---|
| 28 | custom instructions are specified by the user, and then automatically extracted (when |
|---|
| 29 | beneficial) from the application intermediate representation. |
|---|
| 30 | \itemL{12}{27}{x}{\Sinria}{ASIP compilation flow}{6:6:3} |
|---|
| 31 | In this second version, the software will also be able to automatically identify |
|---|
| 32 | interesting pattern candidates in the application code, and use them as custom |
|---|
| 33 | instructions. |
|---|
| 34 | \end{livrable} |
|---|
| 35 | % |
|---|
| 36 | \subtask{Micro-architectural template models for ASIP} |
|---|
| 37 | In this sub-task, we provide micro-architectural template models for the two target |
|---|
| 38 | processor architectures (NIOS-II and MIPS) supported within the COACH-ASIP design flow. |
|---|
| 39 | For each processor, we provide a simulation model (System-C) and a synthesizable model (VHDL) |
|---|
| 40 | of the architecture, along with its architectural extensions |
|---|
| 41 | \begin{livrable} |
|---|
| 42 | \itemV{0}{12}{x}{\Sinria}{SystemC for extensible MIPS } |
|---|
| 43 | { A SystemC simulation model for a simple extensible MIPS architectural template } |
|---|
| 44 | \itemL{12}{27}{x}{\Sinria}{SystemC for extensible MIPS}{3:2:1} |
|---|
| 45 | {A SystemC simulation model for an extensible MIPS with a tight architectural integration of |
|---|
| 46 | its instruction set extensions} |
|---|
| 47 | \itemV{3}{18}{h}{\Sinria}{VHDL for an extensible MIPS} |
|---|
| 48 | {A synthesizable VHDL model for a simple extensible MIPS architectural template} |
|---|
| 49 | \itemL{18}{27}{h}{\Sinria}{VHDL for extensible MIPS}{8:8.5:3} |
|---|
| 50 | {A synthesizable VHDL model for an extensible MIPS with a tight architectural integration of |
|---|
| 51 | its instruction set extensions} |
|---|
| 52 | \itemL{27}{36}{d}{\Sinria}{Evaluation report }{0:0:3} |
|---|
| 53 | {An evaluation report with quantitative analysis of the performance/area trade-off induced by |
|---|
| 54 | the different approaches} |
|---|
| 55 | \end{livrable} |
|---|
| 56 | % |
|---|
| 57 | \subtask{Automatic parallelization and memory optimization} |
|---|
| 58 | This sub-task aims at providing a source-level optimizer in front the |
|---|
| 59 | HLS back-end tools. The optimizations are threefold: |
|---|
| 60 | \begin{itemize} |
|---|
| 61 | \item Extraction of parallelism in polyhedral loops and conversion |
|---|
| 62 | into a process network. |
|---|
| 63 | \item Minimization of intra-process local memory |
|---|
| 64 | \item Construction of inter-process FIFOs |
|---|
| 65 | \end{itemize} |
|---|
| 66 | We will design these methods by using polyhedral techniques, as we did |
|---|
| 67 | in the past for pure HPC optimizations. The program model is typically |
|---|
| 68 | regular programs where loop bounds, conditions and array indices are |
|---|
| 69 | affine functions. In a second part, we will extend the program model |
|---|
| 70 | by using conservative approximations. |
|---|
| 71 | \begin{livrable} |
|---|
| 72 | \itemV{0}{6}{d}{\Slip}{Method, Preliminary Definition} |
|---|
| 73 | Description and specification of a process construction method for programs with |
|---|
| 74 | polyhedral loops. |
|---|
| 75 | \itemV{6}{12}{x}{\Slip}{Process construction} |
|---|
| 76 | Preliminary implementation in the Syntol framework. |
|---|
| 77 | At this step the software will just implement a single constructor. |
|---|
| 78 | \itemL{30}{36}{d+x}{\Slip}{Process generation method}{3:0:3} |
|---|
| 79 | Final assessment of the method and improved version of the specification. |
|---|
| 80 | % |
|---|
| 81 | \itemV{6}{12}{d}{\Slip} {Arrays and FIFO} |
|---|
| 82 | Description and specification of the FIFO construction method |
|---|
| 83 | and the local memory optimization method. |
|---|
| 84 | \itemV{12}{18}{d+x}{\Slip} {Arrays and FIFO} |
|---|
| 85 | Preliminary implementation in the Bee framework. |
|---|
| 86 | Conversion of the input and output of Bee to the \xcoach format. |
|---|
| 87 | At this step, only local memory optimization will be available. |
|---|
| 88 | \itemL{18}{30}{d+x}{\Slip}{Arrays and FIFO}{1.5:2.0:1} |
|---|
| 89 | Final assessment of the method and improved version of the specification. |
|---|
| 90 | % |
|---|
| 91 | \itemV{18}{30}{d+x}{\Slip}{Non-polyhedral extension} |
|---|
| 92 | Extension of automatic parallelization and memory optimization |
|---|
| 93 | to non-polyhedral loops. Implementation in the Bee framework. |
|---|
| 94 | \itemL{30}{36}{d+x}{\Slip} {Non-polyhedral extension}{0.0:9.0:13.0} |
|---|
| 95 | Final release taking into account the feedbacks from the |
|---|
| 96 | demonstrator \STs. |
|---|
| 97 | \end{livrable} |
|---|
| 98 | % |
|---|
| 99 | \end{workpackage} |
|---|
| 100 | |
|---|