SoC-C - efficient programming abstractions for heterogeneous multicore systems on chip

Alastair D. Reid, Krisztián Flautner, Edmund Grimley-Evans, Yuan Lin
ARM Ltd and University of Michigan
[pdf] [slides] [doi]

Proceedings of the 2008 International Conference on Compilers, Architecture, and Synthesis for Embedded Systems (CASES 2008)
Atlanta, GA, USA
October 2008

Abstract

The architectures of system-on-chip (SoC) platforms found in high-end consumer devices are getting more and more complex as designers strive to deliver increasingly compute-intensive applications on near-constant energy budgets. Workloads running on these platforms require the exploitation of heterogeneous parallelism and increasingly irregular memory hierarchies. The conventional approach to programming such hardware is very low-level but this yields software which is intimately and inseparably tied to the details of the platform it was originally designed for, limiting the software’s portability, and, ultimately, the architectural choices available to designers of future platform generations. The key insight of this paper is that many of the problems experienced in mapping applications onto SoC platforms come not from deciding how to map a program onto the hardware but from the need to restructure the program and the number of interdependencies introduced in the process of implementing those decisions. We tackle this complexity with a set of language extensions which allows the programmer to introduce pipeline parallelism into sequential programs, manage distributed memories, and express the desired mapping of tasks to resources. The compiler takes care of the complex, error-prone details required to implement that mapping. We demonstrate the effectiveness of SoC-C and its compiler with a ``software defined radio’’ example (the PHY layer of a Digital Video Broadcast receiver) achieving a 3.4x speedup on 4 cores.

First page of paper

BibTeX

@inproceedings{DBLP:conf/cases/ReidFGL08 , abstract = { The architectures of system-on-chip (SoC) platforms found in high-end consumer devices are getting more and more complex as designers strive to deliver increasingly compute-intensive applications on near-constant energy budgets. Workloads running on these platforms require the exploitation of heterogeneous parallelism and increasingly irregular memory hierarchies. The conventional approach to programming such hardware is very low-level but this yields software which is intimately and inseparably tied to the details of the platform it was originally designed for, limiting the software's portability, and, ultimately, the architectural choices available to designers of future platform generations. The key insight of this paper is that many of the problems experienced in mapping applications onto SoC platforms come not from deciding how to map a program onto the hardware but from the need to restructure the program and the number of interdependencies introduced in the process of implementing those decisions. We tackle this complexity with a set of language extensions which allows the programmer to introduce pipeline parallelism into sequential programs, manage distributed memories, and express the desired mapping of tasks to resources. The compiler takes care of the complex, error-prone details required to implement that mapping. We demonstrate the effectiveness of SoC-C and its compiler with a ``software defined radio'' example (the PHY layer of a Digital Video Broadcast receiver) achieving a 3.4x speedup on 4 cores. } , acceptance = {33} , affiliation = {ARM Ltd and University of Michigan} , ar_file = {CASES_08} , ar_shortname = {CASES 08} , author = {Alastair D. Reid and Kriszti{\'a}n Flautner and Edmund Grimley-Evans and Yuan Lin} , booktitle = {Proceedings of the 2008 International Conference on Compilers, Architecture, and Synthesis for Embedded Systems (CASES 2008)} , day = {19-24} , doi = {10.1145/1450095.1450112} , editor = {Erik R. Altman} , file = {cases2008-SoC-C.pdf} , location = {Atlanta, GA, USA} , month = {October} , pages = {95--104} , png = {cases2008-SoC-C.png} , publisher = {ACM} , slides = {cases2008-SoC-C-slides.pdf} , title = {{S}oC-{C}: efficient programming abstractions for heterogeneous multicore systems on chip} , year = {2008} }