The semantics of shared memory in Intel CPU/FPGA systems
The work
| Title | The semantics of shared memory in Intel CPU/FPGA systems |
|---|---|
| Authors | Dan Iorga; Alastair F. Donaldson; Tyler Sorensen; John Wickerson |
| Type | article |
| Year | 2021 |
| Citekey | iorga2021semantics |
Where it appeared
| Published in | Proceedings of the ACM on Programming Languages |
|---|---|
| Publisher | Association for Computing Machinery |
| Volume | 5 |
| Issue | OOPSLA |
| Pages | 1--28 |
Identifiers
| DOI | 10.1145/3485497 |
|---|
Access
| Landing page | https://doi.org/10.1145/3485497 |
|---|---|
| Free full text | https://dl.acm.org/doi/pdf/10.1145/3485497 |
Abstract
Heterogeneous CPU/FPGA devices, in which a CPU and an FPGA can execute together while sharing memory, are becoming popular in several computing sectors. In this paper, we study the shared-memory semantics of these devices, with a view to providing a firm foundation for reasoning about the programs that run on them. Our focus is on Intel platforms that combine an Intel FPGA with a multicore Xeon CPU. We describe the weak-memory behaviours that are allowed (and observable) on these devices when CPU threads and an FPGA thread access common memory locations in a fine-grained manner through multiple channels. Some of these behaviours are familiar from well-studied CPU and GPU concurrency; others are weaker still. We encode these behaviours in two formal memory models: one operational, one axiomatic. We develop executable implementations of both models, using the CBMC bounded model-checking tool for our operational model and the Alloy modelling language for our axiomatic model. Using these, we cross-check our models against each other via a translator that converts Alloy-generated executions into queries for the CBMC model. We also validate our models against actual hardware by translating 583 Alloy-generated executions into litmus tests that we run on CPU/FPGA devices; when doing this, we avoid the prohibitive cost of synthesising a hardware design per litmus test by creating our own ‘litmus-test processor’ in hardware. We expect that our models will be useful for low-level programmers, compiler writers, and designers of analysis tools. Indeed, as a demonstration of the utility of our work, we use our operational model to reason about a producer/consumer buffer implemented across the CPU and the FPGA. When the buffer uses insufficient synchronisation — a situation that our model is able to detect — we observe that its performance improves at the cost of occasional data corruption.
Copy held
| Kind | PDF, 368.8 kB |
|---|---|
| Retrieved | 2026-08-08 |
| Held | local, for personal reference |
| Where it came from | https://johnwickerson.github.io/papers/cpufpga_sharedmem_OOPSLA21.pdf |
Where this came from
| How it got here | the agent went looking · found via unpaywall |
|---|---|
| First seen | 2026-08-05 |
| Record | reviewed by a person |
| Approved | 2026-08-16 |
Cite it as
@article{iorga2021semantics,
title = {The semantics of shared memory in Intel CPU/FPGA systems},
author = {Dan Iorga and Alastair F. Donaldson and Tyler Sorensen and John Wickerson},
year = {2021},
journal = {Proceedings of the ACM on Programming Languages},
volume = {5},
number = {OOPSLA},
pages = {1--28},
publisher = {Association for Computing Machinery},
doi = {10.1145/3485497},
url = {https://dl.acm.org/doi/pdf/10.1145/3485497},
}
This record lives at https://refs.drheap.org/iorga2021semantics/ and will keep doing so.