Mankind is developing a world where technology is both becoming an essential part of everyday life, and increasingly complex to comprehend. We are in effect delegating a large part of the responsibility for our continued existence to systems that we understand less and less as a society. This responsibility dilution comes with incredible risks at many levels: health, social cohesion, politics, economy; and we must thus fight thoroughly against it.

Part of the solution is political: regulation and oversight over technology development; for this, politicians need a supporting and neutral academic elite that is well-trained to understand the consequences of complexity increases. My desired contribution to this vision is to actively train technology students in thinking about the “big picture” around technological complexity and develop reusable teaching materials to this effect. The other part is scientific and educational: we must make the complexity amenable to human understanding and control somehow, either by reducing the complexity or developing powerful cognitive models to capture and oversee complex systems and the responsibility frameworks around them. My desired contribution to this vision is to actively study how technical and non-technical audiences develop cognitive models for complex systems and human interactions around them, and exploit this knowledge to build responsibility-preserving abstractions in technical systems.


Focus: Extra-functional traits of machine models

How do unconscious and tacit assumptions that programmers make about machines impact how they write programs?

What new new solutions can be found to the general parallel programmability problem [1] by studying extra-functional traits of machine models?

Next to the functional aspect which relates input data, algorithm and output data, programmers expect many extra-functional behavior contracts from the machine. My theory is that a few traits have received little attention so far by designers of programming tools, but oppose a large hidden friction against the success of programming technologies. I want to improve the state of the art in parallel and distributed programming by revealing these traits and using them to guide technology design.

[1]“how to program easily parallel and heterogeneous platforms so as to maximize performance and minimize cost?”

Focus: Open and dynamically reconfigurable platforms

What if programs could choose how processors, caches, memories and I/O devices are linked together at run-time?

Can we help solve the general parallel programmability problem by designing an open, dynamically reconfigurable platform?

Hardware reconfigurability is key to performance and efficiency. Meanwhile, open platforms attract more researchers and hackers, which in turn increases the likelihood of innovative breakthroughs. Also, dynamic platforms are necessary to reduce the time from ideas to tests. Both in combination are needed to enable a faster rate of innovation in face of the current urgent industry demand. Unfortunately, existing technology for reconfigurability (FPGAs) is neither dynamic nor open. My proposal is to design an open, dynamic platform with a coarser unit of reconfigurability than FPGAs: microthreads for computation, virtual circuit switching for links, dynamic cache and memory partitioning for storage. Its ISA provides separate primitives for platform configuration and use.

Secondary research: hardware concurrency management

What if processors directly supported instructions to create, synchronize and communicate with threads?

How does this alter the way we write programs and think about software?

This is my previous supervisor’s vision; following his retirement, I play his steward in our research group.


  • Research on extra-functional application behavior:

    • iDAPT (2015-2019): Extra-functional application management. In partnership with ASML.
    • ReNeXT (2015-, ongoing): Dynamic modeling of extra-functional behavior on reconfigurable platforms. In partnership with Thales Netherlands.
    • ADVANCE (2009-2011): Asynchronous and Dynamic Virtualisation through performance ANalysis to support Concurrency Engineering.
  • Architecture and embedded system research:

    • MGSim (2007-, ongoing): Multi-core simulation for architecture research and education.
    • SACCADE (2013-, ongoing): make the Single-Assignment C language usable for research, development, testing and evaluation of embedded systems.
    • Microgrids (2006-, ongoing): combining dataflow scheduling, hardware multithreading and hardware concurrency management to drive many-core chips efficiently.
    • Apple-CORE (2008-2011): Architecture Paradigms and Programming Languages for Efficient programming of multiple Cores.
    • System Virtualization Platform (2009-, ongoing, dormant): operating system components and low-level languages to program many-core systems.
  • Miscellaneous:

    See also: miscellaneous writings and list of open topics for research and student graduation.

Raphael's academic home page © Raphael ‘kena’ Poss. Powered by Pelican and Twitter Bootstrap. Icons by Font Awesome.