General-purpose instruction set processors suffer from a lack of forward compatibility: older processors do not support newer instruction set extensions, so they cannot run programs compiled for those extensions. This yields a form of programmed obsolescence in which software distributed as precompiled binaries cannot run on a machine whose only crime is to be old. The RISC-V instruction set is currently very vulnerable to this issue, as many devices have already been manufactured while new extensions were being ratified. Some newer extensions are explicitly required by some important software, such as Linux distributions. To improve forward compatibility, we propose an emulation layer that traps unsupported instructions and handles them in software. The proof-of-concept currently runs in userspace, but our goal is to provide it as a kernel module to run proprietary driver blobs—and perhaps even a precompiled Linux kernel—transparently. Emulation performance varies widely with the frequency of unsupported instructions, but we suggest dynamic code generation to improve performance significantly in some cases. CCS Concepts • Computer systems organization → Embedded software; Maintainability and maintenance.
Building similarity graph...
Analyzing shared references across papers
Loading...
Jean-Michel Gorius
Arthur Pérais
Erven Rohou
Centre National de la Recherche Scientifique
Université Grenoble Alpes
Institut national de recherche en sciences et technologies du numérique
Building similarity graph...
Analyzing shared references across papers
Loading...
Gorius et al. (Tue,) studied this question.
www.synapsesocial.com/papers/69d894ad6c1944d70ce05988 — DOI: https://doi.org/10.1145/3801488.3807478