Extending the Thread Execution Model for Hybrid CPU/FPGA Architectures
Project Award Date: 09-01-2003
Real-Time and Embedded Control (RTEC) systems have continued to expand at a vigorous rate. Designers of RTEC systems are continually challenged to provide new capabilities that can meet the expanding requirements and increased computational needs of each new proposed application, but at a decreasing price/performance ratio. Recently emerging CPU/FPGA hybrid chips are becoming extremely important components contributing to the creation of a family of COTS hardware platforms for future RTEC systems. System software for these hybrids must provide a fairly general set of capabilities to support the widening range of applications, but must also be capable of providing the specialized support required to satisfy a particular application's interfacing and performance needs. Creating such a capability for RTEC applications is a difficult challenge in part, because it requires the simultaneous satisfaction of apparently contradictory forces: generalization and specialization.
The objective of this research is to develop a new system software capability that promotes the resolution of these seemingly contradictory requirements. To meet this objective we are proposing a co-design of KU Real-Time (KURT) Linux based system software and FPGA-based computational components to promote generalized control of hybrid computations (applications implemented by a mix of CPU and FPGA based threads) using the familiar and portable multi-threaded programming model. Our approach will provide well-understood synchronization and control methods for threads that can execute on both the CPU and FPGA hardware and support for real-time requirements using KURT-Linux. We will apply our approach to co-design of hybrid computations to examples at both the KURT -Linux and RTEC application levels. The result will be a hybrid programming environment that is useful in a wide range of RTEC applications and is thus significantly generalized, but one which also supports specialization through implementation of function-specific FPGA support for performance-crucial application components.
At the application level, we will use the same approach as within KURT -Linux to provide uniform concurrency control for CPU and FPGA based threads, but will do so in the context of the POSIX multi-threaded library. We will use existing multi-track audio applications as examples of R TEC applications. Within this context we will demonstrate how our approach can effectively support the standard multi-threaded programming model, with suitable adaptations for controlling the FPGA assets.
Faculty Investigator(s): Douglas Niehaus, David Andrews (PI)
Student Investigator(s): Michael Frisbie, Wesley Peck, Tejasvi Aswathanarayana, Ashwin Kumar Chimata, Keith Preston, Noah Watkins, Jason Agron, Jayanth Venkataraman, Erik Anderson
Primary Sponsor(s): NSF