Loading [a11y]/accessibility-menu.js
HW-FUTEX: Hardware-Assisted Futex Syscall | IEEE Journals & Magazine | IEEE Xplore

Abstract:

Efficient thread synchronization primitives are crucial in modern computer systems for the performant execution of interdependent code segments. In Linux, the futex() sys...Show More

Abstract:

Efficient thread synchronization primitives are crucial in modern computer systems for the performant execution of interdependent code segments. In Linux, the futex() syscall is used to construct blocking synchronization primitives such as mutexes or conditional variables. When using futex, the uncontended case is efficiently handled entirely in user space. In the event of contention, the kernel is called to put the waiting thread to sleep until the state of the primitive changes to uncontended. The kernel must be notified of this change by a futex() syscall to wake-up the sleeping thread. This syscall must be issued by the thread that changes the primitive, which is a significant burden on this thread. To remove this burden, we introduce HW-FUTEX to offload the futex wake functionality to a hardware unit (HW Unit) that asynchronously initiates wake-ups of the sleeping threads. This reduces the time required to issue the futex wake functionality by at least 90% to 350 cycles, with no additional overhead in the uncontended case.
Page(s): 16 - 29
Date of Publication: 13 October 2023

ISSN Information:


I. Introduction

The scalability of the performance of multiprocessor systems on chip (MPSoC) is increasingly limited by the efficiency of inter-process communication (IPC) mechanisms. There are a variety of IPC mechanisms designed for either data exchange, synchronization, or a combination of both. In this article, we focus on blocking synchronization primitives in Linux. In general, synchronization primitives manage access to a shared resource. A blocking synchronization primitive puts a thread to sleep when there is no access to that resource (contention).

Contact IEEE to Subscribe

References

References is not available for this document.