Compilation of the programming language Id Nouveau into machine code for the MIT tagged-token dataflow architecture is thoroughly described. Id Nouveau is a higher-order functional language augmented with a novel data structure facility known as I-Structures. The tagged-token dataflow architecture is a dataflow computer of the dynamic variety. Compilation takes place in two steps. In the first step, the Id Nouveau program is converted into an abstract dataflow graph called a program graph. Program graphs embody no detailed knowledge of the target architecture, yet have a very precise operational semantics. At the same time, they represent data and control flow in a way very convenient for program transformation. Several common optimizing transformations are discussed. The second step of compilation converts the program graph into machine code for the tagged-token architecture, taking into account the machine''s finite resources. Peephole optimizations for machine code are discussed, and a general-purpose optimization algorithm is given.
Cited By
- Takano S (2017). Performance Scalability of Adaptive Processor Architecture, ACM Transactions on Reconfigurable Technology and Systems, 10:2, (1-22), Online publication date: 11-Apr-2017.
- Armstrong T, Wozniak J, Wilde M and Foster I Compiler techniques for massively scalable implicit task parallelism Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis, (299-310)
- Wozniak J, Armstrong T, Wilde M, Katz D, Lusk E and Foster I Swift/T Proceedings of the 13th IEEE/ACM International Symposium on Cluster, Cloud, and Grid Computing, (95-102)
- Wozniak J, Armstrong T, Wilde M, Katz D, Lusk E and Foster I Swift/T Proceedings of the 18th ACM SIGPLAN symposium on Principles and practice of parallel programming, (309-310)
- Wozniak J, Armstrong T, Wilde M, Katz D, Lusk E and Foster I (2013). Swift/T, ACM SIGPLAN Notices, 48:8, (309-310), Online publication date: 23-Aug-2013.
- Fourtounis G, Papaspyrou N and Rondogiannis P The Generalized Intensional Transformation for Implementing Lazy Functional Languages Proceedings of the 15th International Symposium on Practical Aspects of Declarative Languages - Volume 7752, (157-172)
- Smith A, Nagarajan R, Sankaralingam K, McDonald R, Burger D, Keckler S and McKinley K Dataflow Predication Proceedings of the 39th Annual IEEE/ACM International Symposium on Microarchitecture, (89-102)
- Petersen A, Putnam A, Mercaldi M, Schwerin A, Eggers S, Swanson S and Oskin M Reducing control overhead in dataflow architectures Proceedings of the 15th international conference on Parallel architectures and compilation techniques, (182-191)
- Papadopoulos G and Culler D Monsoon 25 years of the international symposia on Computer architecture (selected papers), (398-407)
- Schauser K, Culler D and Goldstein S Separation constraint partitioning Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (259-271)
- Liu Y and Teitelbaum T Caching intermediate results for program improvement Proceedings of the 1995 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation, (190-201)
- Schauser K and Goldstein S How much non-strictness do lenient programs require? Proceedings of the seventh international conference on Functional programming languages and computer architecture, (216-225)
- Aditya S, Flood C and Hicks J Garbage collection for strongly-typed languages using run-time type reconstruction Proceedings of the 1994 ACM conference on LISP and functional programming, (12-23)
- Aditya S, Flood C and Hicks J (2019). Garbage collection for strongly-typed languages using run-time type reconstruction, ACM SIGPLAN Lisp Pointers, VII:3, (12-23), Online publication date: 1-Jul-1994.
- Hicks J Experiences with compiler-directed storage reclamation Proceedings of the conference on Functional programming languages and computer architecture, (95-105)
- Traub K, Culler D and Schauser K Global analysis for partitioning non-strict programs into sequential threads Proceedings of the 1992 ACM conference on LISP and functional programming, (324-334)
- Traub K, Culler D and Schauser K (1992). Global analysis for partitioning non-strict programs into sequential threads, ACM SIGPLAN Lisp Pointers, V:1, (324-334), Online publication date: 1-Jan-1992.
- Ju D and Ching W Exploitation of APL data parallelism on a shared-memory MIMD machine Proceedings of the third ACM SIGPLAN symposium on Principles and practice of parallel programming, (61-72)
- Ju D and Ching W (1991). Exploitation of APL data parallelism on a shared-memory MIMD machine, ACM SIGPLAN Notices, 26:7, (61-72), Online publication date: 1-Jul-1991.
- Pingali K, Beck M, Johnson R, Moudgill M and Stodghill P Dependence flow graphs: an algebraic approach to program dependencies Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (67-78)
- Arvind K and Nikhil R (2019). Executing a Program on the MIT Tagged-Token Dataflow Architecture, IEEE Transactions on Computers, 39:3, (300-318), Online publication date: 1-Mar-1990.
- Papadopoulos G and Culler D (1990). Monsoon, ACM SIGARCH Computer Architecture News, 18:2SI, (82-91), Online publication date: 1-Jun-1990.
- Papadopoulos G and Culler D Monsoon Proceedings of the 17th annual international symposium on Computer Architecture, (82-91)
- Ottenstein K, Ballance R and MacCabe A The program dependence web: a representation supporting control-, data-, and demand-driven interpretation of imperative languages Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation, (257-271)
- Ottenstein K, Ballance R and MacCabe A (1990). The program dependence web: a representation supporting control-, data-, and demand-driven interpretation of imperative languages, ACM SIGPLAN Notices, 25:6, (257-271), Online publication date: 1-Jun-1990.
- Nikhil R Can dataflow subsume von Neumann computing? Proceedings of the 16th annual international symposium on Computer architecture, (262-272)
- Nikhil R (1989). Can dataflow subsume von Neumann computing?, ACM SIGARCH Computer Architecture News, 17:3, (262-272), Online publication date: 1-Jun-1989.
- Traub K Compilation as partitioning: a new approach to compiling non-strict functional languages Proceedings of the fourth international conference on Functional programming languages and computer architecture, (75-88)
- Ariola Z and Arvind P-TAC: a parallel intermediate language Proceedings of the fourth international conference on Functional programming languages and computer architecture, (230-242)
- Iannucci R (1988). Toward a dataflow/von Neumann hybrid architecture, ACM SIGARCH Computer Architecture News, 16:2, (131-140), Online publication date: 17-May-1988.
- Culler D and Arvind (1988). Resource requirements of dataflow programs, ACM SIGARCH Computer Architecture News, 16:2, (141-150), Online publication date: 17-May-1988.
- Iannucci R Toward a dataflow/von Neumann hybrid architecture Proceedings of the 15th Annual International Symposium on Computer architecture, (131-140)
- Culler D and Arvind Resource requirements of dataflow programs Proceedings of the 15th Annual International Symposium on Computer architecture, (141-150)
Recommendations
Executing a Program on the MIT Tagged-Token Dataflow Architecture
The MIT Tagged-Token Dataflow Project has an unconventional, but integrated approach to general-purpose high-performance parallel computing. Rather than extending conventional sequential languages, Id, a high-level language with fine-grained parallelism ...
Code Optimization for Tagged-Token Dataflow Machines
The efficiency of dataflow code generated from a high-level language can be considerably improved by both conventional and dataflow-specific optimizations. Such techniques are used in implementing the single-assignment language SISAL on the Manchester ...
The architecture of the Utrecht Haskell compiler
Haskell '09: Proceedings of the 2nd ACM SIGPLAN symposium on HaskellIn this paper we describe the architecture of the Utrecht Haskell Compiler (UHC).
UHC is a new Haskell compiler, that supports most (but not all) Haskell 98 features, plus some experimental extensions. It targets multiple backends, including a bytecode ...