December 1994 There are validated Ada compilers available for DSP chips and in Tartan's case they have been fielded and used in many programs (successfully) for many years. When Tartan began selling Ada Development Systems for Texas Instruments 320C30 digital signal processor in 1990, there were quite a few skeptics in the real-time community. Luckily, TI had realized back in 1988 when Tartan began this work under contract with TI that the real-time embedded DSP community had two major needs: 1. real-time performance 2. see number 1 Therefore, TI and Tartan made real-time performance the key acceptance criteria in the technical specifications. To make a long story short, Tartan's only skeptics in 1994 are users who have not developed real-time DSP applications using Tartan Ada for the C3x (C30 and C31). TI and Tartan released an Ada development system for the C40 in 1992 and are developing Ada for the C50 to be validated and released late this calendar year. Tartan has pioneered Ada development for DSP processors. Tartan was uniquely situated to do so for three reasons: Tartan people have been involved with Ada since its inception; Tartan has an extensive background in the code optimization techniques required for real-time performance; and Tartan has a long-standing relationship with Texas Instruments, the leading DSP processor manufacturer. Tartan's development of an Ada compiler for the TI 320C30 digital signal processor changed the waiver situation with respect to DSP applications. The availability of an Ada compiler (that, in fact, often outperforms C and assembly) has become a reason for the denial of waivers for DSP applications. Tartan grew out of research at Carnegie Mellon University in the production of highly optimized application code. Tartan's founders had developed techniques to customize optimizations to particular architectures, to segregate optimizations as individual compiler components, and to combine them in each compiler in the manner most suited for the target machine's architecture. To this day, Tartan continues to develop optimization technology as a major focus. Beyond optimizations applied automatically, there are a few built-in target architecture features that can improve code performance but must be specifically accessed by the application developer. One example is the unique addressing modes available on the C3x and C40 processors. Tartan lets users access these important hardware features such as circular addressing and bit-reversed addressing through an Ada interface called Package INTRINSICS. There is also a group of functions in Package INTRINSICS that allows the user access to logical instructions on the DSPs. Use of Package INTRINSICS generates very efficient assembly code due to the fact that the expertise is built directly into the code generation technology of an optimizing compiler. Tartan Ada has been chosen for an increasing number (up to three digits now) of DSP projects. Performance results on these projects verify the real-time performance claims made above. The following are brief descriptions of several instances where Ada has exceeded performance specifications or met stringent requirements more satisfactorily than C or assembly language. Other advantages of the Tartan Ada system are also described by these Tartan customers. Ada Exceeds Performance Specifications Tartan's Ada C30 compiler, runtime system and AdaScope debugger are key components of Alliant Techsystems Aladdin Processor--a multi-processor C30 and C31 DSP configuration. The Aladdin program required performance of 1 gigaflop of floating-point throughput. This throughput spec was exceeded with a performance of 2 gigaflops of 32-bit floating-point throughput plus 1 gigaflop of 16-bit fixed-point throughput in the same package. The delayed branch optimizations and Tartan's math routines were cited as the reason for this performance. In addition, the runtime system and AdaScope were particularly important for the Alliant project. Because the runtime is very compact, written in Ada, and customizable, Alliant was able to extend it for their multi- processor needs and rebuild the runtime kernel and their extensions together to avoid memory conflicts. Ada Beats C Two documented cases of customers who have found that Tartan Ada outperforms C compilers have been brought to Tartan's attention. 1. The Army's Wide Area Mine (WAM) project on the C30 includes target identification and processing, signal processing of acoustic signals, and control functions. The Ada implementation provided sufficient execution speed for mission-critical portions of the code that must execute in less than 500 microseconds. For some functions for which C code had also been written, comparisons indicated that the Ada code was faster than the C code. The Ada code was also able to meet stringent memory constraints of two types. One was the requirement that application code be small enough to leave 50% reserve capacity in memory. The other was the ability to make optimal use of a mix of memory that included types with differing wait states. When the user specified a wait state value for each module, the compiler produced the fastest possible code for that memory, and the linker properly assigned it to the correct memory type. This capability allowed the application to accomplish three memory fetches when using the DSP delayed branch in zero wait state portion of the memory mix rather than the single memory fetch that can be accomplished in the three wait state memory. 2. Ada outperformed C on a complex system of multiple 'C40 processors for Itek Optical Systems, a division of Litton Industries. What was important to Itek was latency--the delay between receipt of incoming data and output of its result. A required reserve capacity of 57% in the system permitted a latency of less than half of the maximum capacity of the configuration--that is, it permitted a processing time for any algorithm of only 43% of the time allowed by the data input frequency. For one of the benchmarks used by Itek, C code provided a 64% reserve, but Ada did even better with a 65% reserve. For a second benchmark, however, C code failed to execute fast enough, providing only a 54.5% reserve. Tartan Ada provided a 63% reserve for that benchmark again due to code optimization and Tartan's fast math functions. Ada Rivals Assembly We know that Ada rivals assembly in some situations. We have one outstanding instance of Ada doing better than assembly on a TI DSP. It's described in P.K. Lawlis and T.W. Elam, "Ada Outperforms Assembly: A Case Study." Proceedings of TRI-Ada, 1992. The paper abstract reads "With the intent of getting an Ada waiver, a defense contractor wrote a portion of its software in Ada to prove that Ada could not produce real-time code. The expectation was that the resultant machine code would be too large and too slow to be effective for a communications application. However, the opposite was verified. With only minor source code variations, one version of the compiled code was much smaller while executing at approximately the same speed, and a second version was approximately the same size but much faster than the corresponding assembly code." Later in the paper, to explain these results, the authors write "A skilled, experienced assembly language programmer may know many of the heuristics incorporated into a mature compiler, but not all of them. A group of assembly language programmers could possibly (though not likely) even know all that are implemented in a mature compiler product. However, a compiler can try a large number of optimizing techniques in a short period of time. Most of these techniques interact, so optimization is iterated until there is no further change. By comparison, a human must spend much time on even one optimization technique. Hence, there is a practical limit to the amount of optimizing that can be done by hand." Tartan believes that Ada has significant unrealized potential for application development for DSP processors in both the military and commercial product sectors. John Stare (stare@tartan.com) Tartan, Inc. Product Manager Digital Signal Processors Further reading: Embedded Systems Programming, December 1993, "Using Ada with Embedded DSPs," by Erich Pfeiffer and Jason Disch. DSP Applications, April 1993, "Optimizing Ada Compilers for DSP Avionics Applications," by Timothy Birus and David Syiek.