Run-Time Services for Hybrid CPU/FPGA Systems on Chip

Modern FPGA devices, which include (multiple) processor core(s) as diffused IP on the silicon die, provide an excellent platform for developing custom multiprocessor systems-on-programmable chip (MPSoPC) architectures. As researchers are investigating new methods for migrating portions of applications into custom hardware circuits, it is also critical to develop new run-time service frameworks to support these capabilities. Hthreads (HybridThreads) is a multithreaded RTOS kernel for hybrid FPGA/CPU systems designed to meet this new growing need. A key capability of hthreads is the migration of thread management, synchronization primitives, and run-time scheduling services for both hardware and software threads into hardware. This paper describes the hthreads scheduler, a key component for controlling both software-resident threads (SW threads) and threads implemented in programmable logic (HW threads). Run-time analysis shows that the hthreads scheduler module helps in reducing unwanted system overhead and jitter when compared to historical software schedulers, while fielding scheduling requests from both hardware and software threads in parallel with application execution. Run time analysis shows the scheduler achieves constant time scheduling for up to 256 active threads with a total of 128 different priority levels, while using uniform APIs for threads requesting OS services from either side of the hardware/software boundary

[1]  Bo Zhou,et al.  An operating system framework for reconfigurable systems , 2005, The Fifth International Conference on Computer and Information Technology (CIT'05).

[2]  Krithi Ramamritham,et al.  The Spring kernel: a new paradigm for real-time systems , 1991, IEEE Software.

[3]  Victor Yodaiken The RTLinux Manifesto , 1999 .

[4]  Lennart Lindh,et al.  Real-time kernel in hardware RTU: a step towards deterministic and high-performance real-time systems , 1996, Proceedings of the Eighth Euromicro Workshop on Real-Time Systems.

[5]  David A. Patterson,et al.  Computer Architecture: A Quantitative Approach , 1969 .

[6]  A. Crespo,et al.  A hardware scheduler for complex real-time systems , 1999, ISIE '99. Proceedings of the IEEE International Symposium on Industrial Electronics (Cat. No.99TH8465).

[7]  Ahmed Amine Jerraya,et al.  Hardware/software interface codesign for embedded systems , 2005, Computer.

[8]  Paolo Ienne,et al.  Seamless hardware-software integration in reconfigurable computing systems , 2005, IEEE Design & Test of Computers.

[9]  Paolo Ienne,et al.  Virtual memory window for application-specific reconfigurable coprocessors , 2004, Proceedings. 41st Design Automation Conference, 2004..

[10]  Kang G. Shin,et al.  Scalable hardware priority queue architectures for high-speed packet switches , 1997, Proceedings Third IEEE Real-Time Technology and Applications Symposium.

[12]  Abraham Silberschatz,et al.  Operating System Concepts, 5th Edition , 1994 .

[13]  David L. Andrews,et al.  Using the Multi-Threaded Computation Model as a Unifying Framework for Hardware-Software Co-Design and Implementation , 2003, 2003 The Ninth IEEE International Workshop on Object-Oriented Real-Time Dependable Systems.

[14]  Yao-Wen Chang,et al.  Programmable Logic Devices , 2007 .

[15]  Wayne H. Wolf,et al.  Communication synthesis for distributed embedded systems , 1995, ICCAD.

[16]  D. Andrews,et al.  hthreads: a hardware/software co-designed multithreaded RTOS kernel , 2005, 2005 IEEE Conference on Emerging Technologies and Factory Automation.

[17]  Jaehwan Lee,et al.  A comparison of the RTU hardware RTOS with a hardware/software RTOS , 2003, ASP-DAC '03.

[18]  Uwe Brinkschulte,et al.  Real-time scheduling on multithreaded processors , 2000, Proceedings Seventh International Conference on Real-Time Computing Systems and Applications.

[19]  Douglas M. Blough,et al.  A Hardware-Software Real-Time Operating System Framework for SoCs , 2002, IEEE Des. Test Comput..

[20]  Peter J. Ashenden,et al.  Programming models for hybrid FPGA-cpu computational components: a missing link , 2004, IEEE Micro.

[21]  Abraham Silberschatz,et al.  Operating System Concepts , 1983 .

[22]  Mohamed Shalan,et al.  A Configurable Hardware Scheduler for Real-Time Systems , 2003, Engineering of Reconfigurable Systems and Algorithms.

[23]  David R. Butenhof Programming with POSIX threads , 1993 .