Delivered DSP coding tool to special programs after designing, coding and debugging the data-flow-analysis code and debugging the entire tool.
- This coding tool, known as the DFA, was intended to help DSP application coders deal with the complexity of allocating resources (registers and memory) on the Hughes Programmable Signal Processor (PSP). The PSP was a very special processor with hundreds of special signal processing instructions, several banks of various kinds of memory, several explicit pipeline stages, several ways of moving data from one kind of memory to another. Of course it had to be programmed in assembly language, causing no end of headaches for PSP programmers (and no end of job security). The DFA provided "structured" control constructs, and also helped with the allocation decisions for some memory resources.
- The module I wrote (Data flow analysis) performed what was then the "state of the art" in flow analysis. Now we just call it set-use analysis with some proprietary augmentations (actually, we also modeled the (asynchronous) interaction of the program with the I/O system). One of the difficulties with PSP programming is that sometimes the memories were just barely sufficient to hold necessary data as long as they were used carefully. It was difficult to use them well, since there were various constraints relating various instruction parameters to various memories, constraints between instructions in various pipeline stages, constraints requiring certain variables to be placed in memories corresponding to certain other variables etc. etc..
- The PSP application programmer leaves certain allocation decisions open, by means of special syntax. The DFA then attempts to determine if these remaining allocations can be chosen in a way that also meets the special PSP constraints and satisfies the storage requirements of the program. Set-use analysis is useful because it can sometimes find that the useful scope of a data item is actually smaller than its syntactical scope. This often simplifies constraints on space sharing among data items, resulting in decreased storage requirements. Many times, this provides the necessary flexibility that allows a feasible allocation to be found.
- I have done maintenance and debugging in all areas of this program.