Binary TranslationCopyright: © Redha Gouicem
With the emergence of new processor architectures such as Arm and RISC-V, the landscape of computing hardware is steadily shifting in the recent years. Industry players such as Apple, Amazon or Microsoft are moving away from the dominant x86 architecture to favor new features, higher performance or power efficiency offered by these new competitors. However, this transition is not straightforward since existing software is not compatible across architectures. Binary translation systems solve this issue by emulating the source architecture on the target one, translating every source instruction into a set of equivalent target instructions.
These systems have been around for a while, but they often suffer from performance and correctness problems. Translated binaries are usually slower than the same program natively built for the target architecture, and are sometimes even incorrectly translated, leading to bugs.
Our work addresses both of these components by working on novel techniques that leverage modern hardware to efficiently emulate programs on different architectures while ensuring the correctness of the translation.
Thread SchedulingCopyright: © Redha Gouicem
The thread scheduler is a core component of an operating system. It decides when threads run, for how long, on which core, and so on. Scheduling has been getting more complex over the years with the advances of computer hardware. The introduction of cache hierarchies, simultaneous multi-threading, non-uniform memory accesses architectures make the scheduler's job harder as it needs to use these technologies as efficiently as possible to improve application performance.
Our work focuses on improving schedulers on modern architectures by leveraging all these innovations. We also work on providing more application-specific scheduling strategies tailored specifically for a given class of applications in order to optimize its performance metrics.
VirtualizationCopyright: © Redha Gouicem
The cloud infrastructure is the backbone of a large number of applications widely used. To manage such a large and versatile architecture, cloud providers heavily rely on virtualization technologies to provide easy deployment and isolation to users.
We work on various problems in the area related to resource allocation, memory management, device management, and so on.