Reconfigurable computing (RC) is a promising technique to deliver higher performance with lower energy consumption with versatility unmatched by fixed-function accelerators. The same reconfigurable hardware (RH) structure can be reprogrammed during runtime to target a vast (and changing) range of applications with close to application-specific integrated circuit (ASIC) performance.;As a shared resource, the RH depends on the operating system (OS) to provide important services to maximize its potential. Multiple running applications may concurrently demand the finite RH resources; thus both spatial and temporal sharing of the RH resources among applications are necessary. The decisions of what to configure and when to configure are key to system performance.;Furthermore, the operating system should consider both processor and RH use when fairly distributing compute resources to applications in the system. The presence of RH means that an even processor-time distribution approach the traditional OS adopts does not necessarily reflect an even compute ability. Because processor time has a smaller granularity than RH resources, processor time allocation can be adjusted based on RH use to provide compute ability balance.;Finally, the operating system should increase the usability of the RH resources by providing a straightforward programming model. Developers should not have to manually schedule their accelerators onto hardware resources---the operating system should perform this task automatically. Also, application designers should be able to easily specify the communication to and from the RH accelerator circuits.;This thesis describes efforts to address each of the above design aspects of the operating system in a reconfigurable computing system. Because these studies evolve detailed performance evaluation with realistic workloads in a full-system environment, this work includes the development of a reference design, benchmarks, and workloads for a multi-tasking reconfigurable, and a full-system cycle-accurate simulation infrastructure on which to evaluate the proposed operating system approaches. This work demonstrates that the operating system can effectively manage these resources, and thus represents an important step in the ongoing development of reconfigurable computing systems.
展开▼