The OpenProcessor Platform: Fostering Research on the Hardware/Software Boundary

  • Autor:

    Raphael Neider

  • Quelle:

    Karlsruhe Reports in Informatics 2011,1

  • Datum: 2011
  • Abstract:

    Today's computing systems typically execute task-speciffic software on general purpose hardware. As a consequence, the software layer must make do with whatever instructions, information, and services the underlying hardware exposes. This restriction can lead to implementing inefficient approximations rather than the intended functionality of software. For example, virtual memory subsystems in operating systems often approximate the desired least recently used (or least frequently used) strategy for page replacement using a two-handed clock algorithm just because the hardware only provides a single referenced bit rather than the required timestamp (or reference counter) per page.

    Programmable hardware such as sufficiently large field programmable gate arrays (FPGAs) has been available for quite some years and could be used to give software developers the possibility to alter or augment the hardware to better match their demands. However, there is no basic system available that can serve as a starting point for FPGA-based HW/SW research and that is both sufficiently powerful and easy enough to work with.

    In this report, we describe the OpenProcessor platform, a free and open source computing platform, comprising both synthesizable hardware and support software. The hardware is described in Verilog, ready for deployment on an FPGA development board, and designed with a focus on extensibility and simplicity rather than utmost performance in order to attract many developers. The software stack comprises a microkernel-based operating system offering a subset of the POSIX API to execute on the FPGA plus a number of management and monitoring services to run on an attached PC.


      author = {Raphael Neider},
      title = {The OpenProcessor Platform: Fostering Research on the Hardware/Software Boundary},
      institution = {Fakultät für Informatik, Institut für Betriebs- und Dialogsysteme (IBDS)},
      year = 2011,
      number = 1,
      month = jan,
      url = {},