Memory-Side Protection With a Capability Enforcement Co-Processor

Authors

Leonid Azriel, Lukas Humbel, Reto Achermann, Alex Richardson, Moritz Hoffmann, Avi Mendelson, Timothy Roscoe, Robert N. M. Watson, Paolo Faraboschi and Dejan Milojicic

Venue

ACM TACO

Links

[ .doi ] [ .pdf ] [ .bib ]

Abstract

Byte-addressable nonvolatile memory (NVM) blends the concepts of storage and memory and can radically improve data-centric applications, from in-memory databases to graph processing. By enabling large-capacity devices to be shared across multiple computing elements, fabric-attached NVM changes the nature of rack-scale systems and enables short-latency direct memory access while retaining data persistence properties and simplifying the software stack.

An adequate protection scheme is paramount when addressing shared and persistent memory, but mechanisms that rely on virtual memory paging suffer from the tension between performance (pushing toward large pages) and protection granularity (pushing toward small pages). To address this tension, capabilities are worth revisiting as a more powerful protection mechanism, but the long time needed to introduce new CPU features hampers the adoption of schemes that rely on instruction-set architecture support.

This article proposes the Capability Enforcement Co-Processor (CEP), a programmable memory controller that implements fine-grain protection through the capability model without requiring instruction-set support in the application CPU. CEP decouples capabilities from the application CPU instruction-set architecture, shortens time to adoption, and can rapidly evolve to embrace new persistent memory technologies, from NVDIMMs to native NVM devices, either locally connected or fabric attached in rack-scale configurations. CEP exposes an application interface based on memory handles that get internally converted to extended-pointer capabilities.

This article presents a proof of concept implementation of a distributed object store (Redis) with CEP. It also demonstrates a capability-enhanced file system (FUSE) implementation using CEP. Our proof of concept shows that CEP provides fine-grain protection while enabling direct memory access from application clients to the NVM, and that by doing so opens up important performance optimization opportunities (up to 4× reduction in latency in comparison to software-based security enforcement) without compromising security.

Finally, we also sketch how a future hybrid model could improve the initial implementation by delegating some CEP functionality to a CHERI-enabled processor.

Bibtex

@article{Azriel:2019:MPC,
 author = {Azriel, Leonid and Humbel, Lukas and Achermann, Reto and Richardson, Alex and Hoffmann, Moritz and Mendelson, Avi and Roscoe, Timothy and Watson, Robert N. M. and Faraboschi, Paolo and Milojicic, Dejan},
 doi = {10.1145/3302257},
 id = {Azriel:2019:MPC},
 issn = {1544-3566},
 journal = {ACM Transactions on Architecture and Code Optimization},
 month = {3},
 number = {1},
 pages = {5:1--5:26},
 publisher = {Association for Computing Machinery},
 series = {ACM TACO},
 title = {Memory-Side Protection With a Capability Enforcement Co-Processor},
 url = {https://doi.org/10.1145/3302257},
 volume = {16},
 year = {2019}
}

Contact

The University of British Columbia
Department of Computer Science
2366 Main Mall
ICICS Building, Office 341
Vancouver, BC V6T 1Z4
Canada

achreto [at] cs.ubc.ca
+1 604 827 2446