Zusammenfassung
Die Synthese effizienter Programme für digitale Signalprozessoren mit heterogener Registerarchitektur stellt nach wie vor cine Herausforderung für den Compilerbau dar. In diesem Beitrag wird das Konzept eines Datenflußgraph-Compilers für digitale Signalprozessoren vorgestellt. Die Transformation von Datenflußgraphen in Trellis-Bäume — über den Zwischenschritt der eingeschränkten Bäume — erlaubt die Erzeugung von sequentiellem Zwischencode mittels eines Algorithmus, dessen Komplexität nur linear von der Größe des Datenflußgraphen abhängt. In einem anschließenden Schritt werden die Register zugewiesen unter Berücksichtigung der Einschränkungen durch Mehrfachbefehle. Die Ausführungszeit des resultierenden Assemblerprogramms wird durch Parallelisierung auf Befehlsebene und Optimierung des Speicher-Layouts minimiert.
Abstract
The synthesis of efficient programs for digital signal processors with non-homogeneous register sets is still a challenge of compiler design. In this paper, we introduce the concept of a data flow graph compiler for digital signal processors. In a first step, the data flow graph is decomposed into constrained expression trees and represented by trellis trees, which allows to apply a straight-line code generation algorithm whose complexity depends just linearly on the size of the graph. Registers are assigned by taking into account the constraints of multi-function instructions. The execution time of the resulting assembly code is minimized by exploiting instruction level parallelism and memory layout optimizations.
Schrifttum
Araujo, G., Devadas, S., Keutzer, K., Liao, S., Malik, S., Sudarsanam, A., Tjiang, S., Wang, A.: Challenges in code generation for embedded processors. In: Marwedel, P., Goossens, G. (eds.): Code generation for embedded processors, chapter 3, pp. 48–64, Amsterdam: Kluwer. 1995.
Zivojnovic, V., Velarde, J. M., Schläger, C., Meyr, H.: DSPstone: a DSP-oriented benchmarking methodology. In: Proc. 5th int. conf. on signal processing applications & technology, vol. 1, pp. 715–720. Dallas, October 1994.
Goossens, G., Praet, J. V., Lanneer, D., Geurts, W., Kifli, A., Liem, C., Paulin, P. C.: Embedded software in real-time signal processing systems: design technologies. Proc. IEEE 85 (March 1997), pp. 436–454.
Lee, E. A., Messerschmitt, D. G.: Static scheduling of synchronous data flow programs for digital signal processing, IEEE trans. on computers C-36 (January 1987), pp. 24–35.
Wess, B.: Automatic instruction code generation based on trellis diagrams. In: Proc. IEEE int. symp. on circuits and systems, vol. 2, pp. 645–648, San Diego, May 1992.
Wess, B.: Code generation based on trellis diagrams. In: Marwedel, P., Goossens, G. (eds.): Code generation for embedded processors, chapter 11, pp. 188–202. Amsterdam: Kluwer, 1995.
Bruno, J., Sethi, R.: Code generation for a one-register machine. Journal of the ACM 23 (July 1976), pp. 502–510.
Wess, B.: Optimizing signal flow graph compilers for digital signal processors. In: Proc. 5th int. conf. on signal processing applications & technology, vol. 1, pp. 665–670. Dallas, October 1994.
Wess, B., Kreuzer, W.: Optimized DSP assembly code generation starting from homogeneous atomic data flow graphs. In: Proc. 38th Midwest symp. on circuits and systems, vol. 2, pp. 1268–1271, Rio de Janeiro, August 1995.
Gotschlich, M., Wess, B.: Automatic generation of constrained expression trees for global optimized DSP assembly code. In: Proc. 7th int. conf. on signal processing applications & technology, vol. 1, pp. 732–736, Boston, October 1996.
Sethi, R.: Complete register allocation problems. SIAM J. Computing 4 (September 1975), pp. 226–248.
Chaitin, G. J., Auslander, M. A., Chandra, A. K., Cocke, J., Hopkins, M. E., Markstein, P. W.: Register allocation via coloring. Computer languages 6 (1981), pp. 47–57.
Landskov, D., Davidson, S., Shriver, B., Mallett, P. W.: Local microcode compaction techniques. ACM Computing surveys 12 (September 1980), pp. 261–294.
Wess, B., Gotschlich, M.: Optimal DSP memory layout generation as a quadratic assignment problem. In: Proc. IEEE int. symp. on circuits and systems, vol. 3, pp. 1712–1715, Hong Kong, June 1997.
Helm, A., Wess, B.: A synchronous data flow graph compiler for telecommunication devices. In: Proc. 7th int. conf. on signal processing applications & technology, vol. 1, pp. 737–741, Boston, October 1996.
Helm, A., Wess, B.: Decomposition of signal flow graphs for DSP compilers using trellis trees in restricted environments. In: Proc. 5th int. conf. on signal processing applications & technology, vol. 1, pp. 677–682. Dallas, October 1994.
Author information
Authors and Affiliations
Additional information
Herrn Professor Dr.-Ing. Dr. h.c. mult. Hans Wilhelm Schüßler zum 70. Geburtstag gewidmet.
Diese Arbeit wurde im Rahmen des FWF-Projekts P1070--ÖTE und in Zusammenarbeit mit Siemens EZM Ges.m.b.H. Villach ausgeführt.
Rights and permissions
About this article
Cite this article
Kreuzer, W., Fröhlich, S., Gotschlich, M. et al. Übersetzung von Datenflußgraphen in optimierte Assemblerprogramme für Signalprozessoren. Elektrotech. Inftech. 115, 41–47 (1998). https://doi.org/10.1007/BF03159136
Issue Date:
DOI: https://doi.org/10.1007/BF03159136