DSPG X-C compiler main program (xc)
See also [1,2,3]
The program xc is the main part of the X-C compiler environment. This program parses the input source code. Furthermore, all loops in the X-C program are partitioned in a way, that the loop headers are mapped onto the DSPG (Data Sequencer Parameter Generator) and the loop bodies are mapped onto the DPSS (Data Path Synthesis System). Hereby, also nested loops have to be considered. To accomplish this partitioning, xc uses the algorithm of Tarjan to analyze the loop structure, and the algorithm of Allen-Kennedy to partially vectorize loops.
The DPSS and DSPG are explained more precise in the following: The loop headers usually contain the limits and the step-width of the index variable. So, in this part of the loop, the indexing function for the data array is determined. In the case of nested loops, all headers contribute to this function and have to be considered. The indexing of array elements means address-calculation during runtime. As Xputers have a dedicated hardware for address-calculation, the indexing-function is transformed into an address-sequence, which is executed by the Generic Address Generator (GAG).The resulting code for the GAGs consists only of a few parameters. Therefore, this part is called DSPG (Data Sequencer Parameter Generator). The parameters for the GAGs are, together with the code for the MoM-3 Controller, described in an assembler-source file for the multilevel assembler momass. For the generation of the assembler source file, xc needs the scheduling of the 7 GAGs. This depends of the configuration of the according rALU subnets, which is determined by the scheduler of the DPSS. Thus, the whole DPSS is invoked inside xc and can not run parallel to the DSPG.
Other than the loop headers, the loop bodies contain the instructions to be executed in each iteration. These operations, like assignments and mathematical operation, are executed by the reconfigurable ALU (rALU). The code for the rALU is generated by the Data Path Synthesis System (DPSS). So xc generates a description of the operations in the loop body in the programming-language ALEX, which is a simple language based upon C. Furthermore, the structure of the input (X-C) program is needed by the DPSS. Thus, a second file, the rALU blockfile is generated, which contains this block structure in a simple form.
The application data for the MoM must be provided in a special arrangement called the datamap in order to be processable. Therefore, the xc compiler takes the declarations of the data from the X-C program and creates a mapping of this data into two-dimensional arrays. To describe this mapping, the size, shape and initialization data of the arrays, a special Datamap Description Language (DDL) has been designed. The description is passed to the dmap compiler, which generates the application data binaries to be loaded by the Runtime-System.
The xc compiler also generates the scanwindows for the GAGs, which are put into the assembler file. The distribution of the scanwindows onto the seven GAGs is determined by the board assignment file from the rALU assembler, which xc gets back from the DPSS. With this information, xc creates statistics about the access frequency of the variables (i.e. data arrays) by each GAG. This statistic data is used later in the process of memory planning.
 

Literature

  1. K. Schmidt: A Program Partitioning, Restructuring and Mapping Method for Xputers; Ph.D. Thesis, University of Kaiserslautern, 1995
  2. M. Gaßmann: Entwurf und Implementierung eines Parsers für die Sprache MoM-C; Projektarbeit, Universität Kaiserslautern, 1994
  3. C. Kamer: Programmentwurf und Implementierung eines restrukturierenden und parallelisierenden Compilers für Xputer; Diplomarbeit, Universität Kaiserslautern, 1994