Structured computer organization; (2nd ed.)
Structured computer organization; (2nd ed.)
Highly parallel computing (2nd ed.)
Highly parallel computing (2nd ed.)
A compiler approach to fast hardware design space exploration in FPGA-based systems
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Garp: a MIPS processor with a reconfigurable coprocessor
FCCM '97 Proceedings of the 5th IEEE Symposium on FPGA-Based Custom Computing Machines
SPARK: A High-Lev l Synthesis Framework For Applying Parallelizing Compiler Transformations
VLSID '03 Proceedings of the 16th International Conference on VLSI Design
Automatic compilation of c for hybrid reconfigurable architectures
Automatic compilation of c for hybrid reconfigurable architectures
Virtual memory window for application-specific reconfigurable coprocessors
Proceedings of the 41st annual Design Automation Conference
Performance and Area Modeling of Complete FPGA Designs in the Presence of Loop Transformations
IEEE Transactions on Computers
Seamless Hardware-Software Integration in Reconfigurable Computing Systems
IEEE Design & Test
FCCM '06 Proceedings of the 14th Annual IEEE Symposium on Field-Programmable Custom Computing Machines
The Challenges of Synthesizing Hardware from C-Like Languages
IEEE Design & Test
Domain-Specific Language for HW/SW Co-design for FPGAs
DSL '09 Proceedings of the IFIP TC 2 Working Conference on Domain-Specific Languages
CODES+ISSS '09 Proceedings of the 7th IEEE/ACM international conference on Hardware/software codesign and system synthesis
Building heterogeneous reconfigurable systems with a hardware microkernel
CODES+ISSS '09 Proceedings of the 7th IEEE/ACM international conference on Hardware/software codesign and system synthesis
ACM Transactions on Reconfigurable Technology and Systems (TRETS)
FCache: a system for cache coherent processing on FPGAs
Proceedings of the ACM/SIGDA international symposium on Field Programmable Gate Arrays
Redsharc: a programming model and on-chip network for multi-core systems on a programmable chip
International Journal of Reconfigurable Computing - Special issue on Selected Papers from the International Conference on Reconfigurable Computing and FPGAs (ReConFig'10)
Multithreading on reconfigurable hardware: An architectural approach
Microprocessors & Microsystems
International Journal of Reconfigurable Computing
Hi-index | 0.00 |
This paper introduces hthreads, a unifying programming model for specifying application threads running within a hybrid computer processing unit (CPU)/field-programmable gate-array (FPGA) system. Presently accepted hybrid CPU/FPGA computational models--and access to these computational models via high level languages--focus on programming language extensions to increase accessibility and portability. However, this paper argues that new high-level programming models built on common software abstractions better address these goals. The hthreads system, in general, is unique within the reconfigurable computing community as it includes operating system and middleware layer abstractions that extend across the CPU/FPGA boundary. This enables all platform components to be abstracted into a unified multiprocessor architecture platform. Application programmers can then express their computations using threads specified from a single POSIX threads (pthreads) multithreaded application program and can then compile the threads to either run on the CPU or synthesize them to run within an FPGA. To enable this seamless framework, we have created the hardware thread interface (HWTI) component to provide an abstract, platform-independent compilation target for hardware-resident computations. The HWTI enables the use of standard thread communication and synchronization operations across the software/hardware boundary. Key operating system primitives have been mapped into hardware to provide threads running in both hardware and software uniform access to a set of sub-microsecond, minimal-jitter services. Migrating the operating system into hard-ware removes the potential bottleneck of routing all system service requests through a central CPU.