{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,9,30]],"date-time":"2026-09-30T22:10:57Z","timestamp":1790806257071,"version":"4.1.0"},"reference-count":36,"publisher":"Association for Computing Machinery (ACM)","issue":"6","license":[{"start":{"date-parts":[[2019,11,30]],"date-time":"2019-11-30T00:00:00Z","timestamp":1575072000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Embed. Comput. Syst."],"published-print":{"date-parts":[[2019,11,30]]},"abstract":"<jats:p>Many application areas for embedded systems, such as DSP, media coding, and image processing, are based on stream processing. Stream programs in these areas are often naturally described as graphs, where nodes are computational kernels that send data over the edges. This structure also exhibits large amounts of concurrency, because the kernels can execute independently as long as there are data to process on the edges. The explicit data dependencies also help making efficient sequential implementations of such programs, allowing programs to be more portable between platforms with various degrees of parallelism.<\/jats:p>\n          <jats:p>The kernels can be expressed in many different ways; for example, as imperative programs with read and write statements for the communication or as a set of actions that can be performed and conditions for when these actions can be executed. Traditionally, there has been a tension between how the kernels are expressed and how efficiently they can be implemented. There are very efficient implementation techniques for stream programs with restricted expressiveness, such as synchronous dataflow.<\/jats:p>\n          <jats:p>\n            In this article, we present a framework for building stream program compilers that we call T\u00ffcho. At the core of this framework is a common kernel representation, based on a machine model for stream program kernels called\n            <jats:italic>actor machine<\/jats:italic>\n            , on which transformations and optimizations are performed. Both imperative and action-based kernels are translated to this common representation, making the same optimizations applicable to different kinds of kernels, and even across source language boundaries. An actor machine is described by the steps of execution that a kernel can take, and the conditions for taking them, together with a\n            <jats:italic>controller<\/jats:italic>\n            that decides how the conditions are tested and the steps are taken.\n          <\/jats:p>\n          <jats:p>We outline how kernels of an imperative process language and an action-based language are decomposed and translated to the common kernel representation, and we describe a simple backend that generates sequential C code from this representation. We present optimization heuristics of the decision process in the controller that we evaluate using a few dozen kernels from a video decoder with various degrees of complexity. We also present kernel fusion, by merging the controllers of actor machines, as a way of scheduling kernels on the same processor, which we compare to prior art.<\/jats:p>","DOI":"10.1145\/3362692","type":"journal-article","created":{"date-parts":[[2019,12,16]],"date-time":"2019-12-16T13:12:30Z","timestamp":1576501950000},"page":"1-25","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":14,"title":["T\u00ffcho"],"prefix":"10.1145","volume":"18","author":[{"ORCID":"https:\/\/orcid.org\/0000-0003-0267-8969","authenticated-orcid":false,"given":"Gustav","family":"Cedersj\u00f6","sequence":"first","affiliation":[{"name":"Lund University, Lund, Sweden"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"J\u00f6rn W.","family":"Janneck","sequence":"additional","affiliation":[{"name":"Lund University, Lund, Sweden"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2019,12,14]]},"reference":[{"key":"e_1_2_1_1_1","unstructured":"Marianne Baudinet and David MacQueen. 1985. Tree pattern matching for ML. (1985). http:\/\/www.smlnj.org\/compiler-notes\/85-note-baudinet.ps.  Marianne Baudinet and David MacQueen. 1985. Tree pattern matching for ML. (1985). http:\/\/www.smlnj.org\/compiler-notes\/85-note-baudinet.ps."},{"key":"e_1_2_1_2_1","volume-title":"Proceedings of the 2013 8th International Symposium on Image and Signal Processing and Analysis (ISPA\u201913)","author":"Bezati E.","unstructured":"E. Bezati , M. Mattavelli , and J. W. Janneck . 2013. High-level synthesis of dataflow programs for signal processing systems . In Proceedings of the 2013 8th International Symposium on Image and Signal Processing and Analysis (ISPA\u201913) . 750--754. E. Bezati, M. Mattavelli, and J. W. Janneck. 2013. High-level synthesis of dataflow programs for signal processing systems. In Proceedings of the 2013 8th International Symposium on Image and Signal Processing and Analysis (ISPA\u201913). 750--754."},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1109\/78.485935"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSP.2015.2411229"},{"key":"e_1_2_1_5_1","volume-title":"Proceedings of the 1993 IEEE International Conference on Acoustics, Speech, and Signal Processing","volume":"1","author":"Buck J. T.","unstructured":"J. T. Buck and E. A. Lee . 1993. Scheduling dynamic dataflow graphs with bounded memory using the token flow model . In Proceedings of the 1993 IEEE International Conference on Acoustics, Speech, and Signal Processing , Vol. 1 . 429--432. J. T. Buck and E. A. Lee. 1993. Scheduling dynamic dataflow graphs with bounded memory using the token flow model. In Proceedings of the 1993 IEEE International Conference on Acoustics, Speech, and Signal Processing, Vol. 1. 429--432."},{"key":"e_1_2_1_6_1","volume-title":"Proceedings of the 17th International Workshop on Software and Compilers for Embedded Systems. ACM, 31--39","author":"Cedersj\u00f6 Gustav","unstructured":"Gustav Cedersj\u00f6 and J\u00f6rn W. Janneck . 2014. Software code generation for dynamic dataflow programs . In Proceedings of the 17th International Workshop on Software and Compilers for Embedded Systems. ACM, 31--39 . Gustav Cedersj\u00f6 and J\u00f6rn W. Janneck. 2014. Software code generation for dynamic dataflow programs. In Proceedings of the 17th International Workshop on Software and Compilers for Embedded Systems. ACM, 31--39."},{"key":"e_1_2_1_7_1","volume-title":"Proceedings of the 2016 International Conference on Embedded Computer Systems: Architectures, Modeling and Simulation (SAMOS\u201916)","author":"Cedersj\u00f6 Gustav","unstructured":"Gustav Cedersj\u00f6 and J\u00f6rn W. Janneck . 2016. Processes and actors: Translating kahn processes to dataflow with firing . In Proceedings of the 2016 International Conference on Embedded Computer Systems: Architectures, Modeling and Simulation (SAMOS\u201916) . IEEE, 21--30. Gustav Cedersj\u00f6 and J\u00f6rn W. Janneck. 2016. Processes and actors: Translating kahn processes to dataflow with firing. In Proceedings of the 2016 International Conference on Embedded Computer Systems: Architectures, Modeling and Simulation (SAMOS\u201916). IEEE, 21--30."},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1109\/ACSSC.2014.7094699"},{"key":"e_1_2_1_9_1","volume-title":"Proceedings of the 2012 Conference Record of the 46th Asilomar Conference on Signals, Systems and Computers (ASILOMAR\u201912)","author":"Cedersj\u00f6 G.","unstructured":"G. Cedersj\u00f6 and J. W. Janneck . 2012. Toward efficient execution of dataflow actors . In Proceedings of the 2012 Conference Record of the 46th Asilomar Conference on Signals, Systems and Computers (ASILOMAR\u201912) . 1465--1469. G. Cedersj\u00f6 and J. W. Janneck. 2012. Toward efficient execution of dataflow actors. In Proceedings of the 2012 Conference Record of the 46th Asilomar Conference on Signals, Systems and Computers (ASILOMAR\u201912). 1465--1469."},{"key":"e_1_2_1_10_1","volume-title":"Proceedings of the 2013 Conference on Signals, Systems and Computers (ASILOMAR\u201913). 1801","author":"Cedersj\u00f6 G.","year":"1804","unstructured":"G. Cedersj\u00f6 and J. W. Janneck . 2013. Actor classification using actor machines . In Proceedings of the 2013 Conference on Signals, Systems and Computers (ASILOMAR\u201913). 1801 -- 1804 . G. Cedersj\u00f6 and J. W. Janneck. 2013. Actor classification using actor machines. In Proceedings of the 2013 Conference on Signals, Systems and Computers (ASILOMAR\u201913). 1801--1804."},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-06859-7_145"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/762488.762489"},{"key":"e_1_2_1_13_1","volume-title":"Janneck","author":"Eker Johan","year":"2003","unstructured":"Johan Eker and J\u00f6rn W . Janneck . 2003 . CAL Language Report Specification of the CAL Actor Language. EECS Department, University of California , Berkeley. http:\/\/www2.eecs.berkeley.edu\/Pubs\/TechRpts\/2003\/4186.html. Johan Eker and J\u00f6rn W. Janneck. 2003. CAL Language Report Specification of the CAL Actor Language. EECS Department, University of California, Berkeley. http:\/\/www2.eecs.berkeley.edu\/Pubs\/TechRpts\/2003\/4186.html."},{"key":"e_1_2_1_14_1","volume-title":"Proceedings of the Forum on Specification 8 Design Languages (FDL\u201906)","volume":"6","author":"Falk Joachim","year":"2006","unstructured":"Joachim Falk , Christian Haubelt , and J\u00fcrgen Teich . 2006 . Efficient representation and simulation of model-based designs in systemc . In Proceedings of the Forum on Specification 8 Design Languages (FDL\u201906) , Vol. 6 . Joachim Falk, Christian Haubelt, and J\u00fcrgen Teich. 2006. Efficient representation and simulation of model-based designs in systemc. In Proceedings of the Forum on Specification 8 Design Languages (FDL\u201906), Vol. 6."},{"key":"e_1_2_1_15_1","first-page":"18","article-title":"Analysis of systemc actor networks for efficient synthesis","volume":"10","author":"Falk Joachim","year":"2010","unstructured":"Joachim Falk , Christian Zebelein , Joachim Keinert , Christian Haubelt , Juergen Teich , and Shuvra S. Bhattacharyya . 2010 . Analysis of systemc actor networks for efficient synthesis . ACM Trans. Embed. Comput. Syste. 10 , 2 (2010), 18 . Joachim Falk, Christian Zebelein, Joachim Keinert, Christian Haubelt, Juergen Teich, and Shuvra S. Bhattacharyya. 2010. Analysis of systemc actor networks for efficient synthesis. ACM Trans. Embed. Comput. Syste. 10, 2 (2010), 18.","journal-title":"ACM Trans. Embed. Comput. Syste."},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1109\/EUC.2014.55"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1007\/s11265-009-0445-1"},{"key":"e_1_2_1_18_1","volume-title":"The Compiler Design Handbook: Optimizations and Machine Code Generation","author":"Gupta Rajiv","unstructured":"Rajiv Gupta , Eduard Mehofer , and Youtao Zhang . 2002. Profile-guided compiler optimizations . In The Compiler Design Handbook: Optimizations and Machine Code Generation . CRC Press . Rajiv Gupta, Eduard Mehofer, and Youtao Zhang. 2002. Profile-guided compiler optimizations. In The Compiler Design Handbook: Optimizations and Machine Code Generation. CRC Press."},{"key":"e_1_2_1_19_1","volume-title":"Bhattacharyya","author":"Hsu Chia-Jui","year":"2004","unstructured":"Chia-Jui Hsu , Fuat Keceli , Ming-Yung Ko , Shahrooz Shahparnia , and Shuvra S . Bhattacharyya . 2004 . DIF : An interchange format for dataflow-based design tools. In Proceedings of the International Workshop on Embedded Computer Systems. Springer , 423--432. Chia-Jui Hsu, Fuat Keceli, Ming-Yung Ko, Shahrooz Shahparnia, and Shuvra S. Bhattacharyya. 2004. DIF: An interchange format for dataflow-based design tools. In Proceedings of the International Workshop on Embedded Computer Systems. Springer, 423--432."},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/2370036.2145818"},{"key":"e_1_2_1_21_1","unstructured":"ISO\/IEC 23001-4:2009 2009. Information Technology\u2014MPEG Systems Technologies\u2014Part 4: Codec Configuration Representation. Standard.  ISO\/IEC 23001-4:2009 2009. Information Technology\u2014MPEG Systems Technologies\u2014Part 4: Codec Configuration Representation. Standard."},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1109\/ACSSC.2011.6190107"},{"key":"e_1_2_1_23_1","volume-title":"Proceedings of the IFIP Congress on Information Processing\u201974","volume":"74","author":"Kahn Gilles","year":"1974","unstructured":"Gilles Kahn . 1974 . The semantics of a simple language for parallel programming . In Proceedings of the IFIP Congress on Information Processing\u201974 , Vol. 74 . 471--475. Gilles Kahn. 1974. The semantics of a simple language for parallel programming. In Proceedings of the IFIP Congress on Information Processing\u201974, Vol. 74. 471--475."},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.5555\/762577.2813333"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2004.1281665"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1109\/PROC.1987.13876"},{"key":"e_1_2_1_27_1","volume-title":"A Denotational Semantics for Dataflow with Firing. Electronics Research Laboratory","author":"Lee Edward A.","year":"1997","unstructured":"Edward A. Lee . 1997. A Denotational Semantics for Dataflow with Firing. Electronics Research Laboratory , College of Engineering , University of California. http:\/\/www2.eecs.berkeley.edu\/Pubs\/TechRpts\/ 1997 \/3167.html. Edward A. Lee. 1997. A Denotational Semantics for Dataflow with Firing. Electronics Research Laboratory, College of Engineering, University of California. http:\/\/www2.eecs.berkeley.edu\/Pubs\/TechRpts\/1997\/3167.html."},{"key":"e_1_2_1_28_1","volume-title":"Proceedings of the Conference on Design, Automation and Test in Europe. European Design and Automation Association, 111--116","author":"Plishker William","unstructured":"William Plishker , Nimish Sane , and Shuvra S. Bhattacharyya . 2009. A generalized scheduling approach for dynamic dataflow applications . In Proceedings of the Conference on Design, Automation and Test in Europe. European Design and Automation Association, 111--116 . William Plishker, Nimish Sane, and Shuvra S. Bhattacharyya. 2009. A generalized scheduling approach for dynamic dataflow applications. In Proceedings of the Conference on Design, Automation and Test in Europe. European Design and Automation Association, 111--116."},{"key":"e_1_2_1_29_1","unstructured":"Jonas Skeppstedt. 2016. The ASIM Power Architecture simulator.  Jonas Skeppstedt. 2016. The ASIM Power Architecture simulator."},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/2488222.2488255"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1109\/92.931229"},{"key":"e_1_2_1_32_1","volume-title":"Proceedings of the 6th International Conference on Application of Concurrency to System Design 2006 (ACSD\u201906)","author":"Stuijk Sander","year":"2006","unstructured":"Sander Stuijk , Marc Geilen , and Twan Basten . 2006 . SDF3: SDF for free . In Proceedings of the 6th International Conference on Application of Concurrency to System Design 2006 (ACSD\u201906) . IEEE, 276--278. Sander Stuijk, Marc Geilen, and Twan Basten. 2006. SDF3: SDF for free. In Proceedings of the 6th International Conference on Application of Concurrency to System Design 2006 (ACSD\u201906). IEEE, 276--278."},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-45937-5_14"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/1065944.1065975"},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1007\/s11265-009-0390-z"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/2502081.2502231"}],"container-title":["ACM Transactions on Embedded Computing Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3362692","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3362692","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T23:44:54Z","timestamp":1750203894000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3362692"}},"subtitle":["A Framework for Compiling Stream Programs"],"short-title":[],"issued":{"date-parts":[[2019,11,30]]},"references-count":36,"journal-issue":{"issue":"6","published-print":{"date-parts":[[2019,11,30]]}},"alternative-id":["10.1145\/3362692"],"URL":"https:\/\/doi.org\/10.1145\/3362692","relation":{},"ISSN":["1539-9087","1558-3465"],"issn-type":[{"value":"1539-9087","type":"print"},{"value":"1558-3465","type":"electronic"}],"subject":[],"published":{"date-parts":[[2019,11,30]]},"assertion":[{"value":"2017-03-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2019-09-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2019-12-14","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}