Hardware transactional memory and message passing
Raphael Fuchs · Repository for Publications and Research Data (ETH Zurich) · 2014
Message passing has gained increased adoption.It is an integral part of programming languages like Erlang and Go, the de-facto standard on large-scale clusters, and the basic means of communication in the Barrelfish operating system.This thesis focuses on point-to-point, inter-core message passing between two processes running in parallel and within a cache-coherency domain.State-of-the-art communication in such a scenario bypasses the kernel and relies on shared memory for message transfer, therefore providing high bandwidth communication.However, low-latency is only achieved if the receiver is constantly polling, which wastes processor cycles that are better spent on application processing.We describe a simple hardware mechanism, alert-on-update, that, inspired by hardware transactional memory, monitors multiple memory locations and triggers a control transfer upon modification.This mechanism enables the sender to notify the receiver of a new message and, in turn, frees the receiver from constant polling.We integrate alert-on-update into Barrelfish's message passing framework and describe the support needed from the operating system.Using full-system simulation, the evaluation shows that our solution outperforms polling at regular intervals with message latencies up to several orders of magnitude lower and, on top of that, provides a cleaner programming construct.