SpaceJMP: Programming with multiple virtual address spaces

Izzat El Hajj, Alexander Merritt, Gerd Zellweger, Dejan Milojicic, Reto Achermann, Paolo Faraboschi, Wen-Mei W Hwu, Timothy Roscoe, Karsten Schwan

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Abstract

Memory-centric computing demands careful organization of the virtual address space, but traditional methods for doing so are inflexible and inefficient. If an application wishes to address larger physical memory than virtual address bits allow, if it wishes to maintain pointer-based data structures beyond process lifetimes, or if it wishes to share large amounts of memory across simultaneously executing processes, legacy interfaces for managing the address space are cumbersome and often incur excessive overheads. We propose a new operating system design that promotes virtual address spaces to first-class citizens, enabling process threads to attach to, detach from, and switch between multiple virtual address spaces. Our work enables data-centric applications to utilize vast physical memory beyond the virtual range, represent persistent pointer-rich data structures without special pointer representations, and share large amounts of memory between processes efficiently. We describe our prototype implementations in the Dragon- Fly BSD and Barrelfish operating systems. We also present programming semantics and a compiler transformation to detect unsafe pointer usage. We demonstrate the benefits of our work on data-intensive applications such as the GUPS benchmark, the SAMTools genomics workflow, and the Redis key-value store.

Original languageEnglish (US)
Title of host publicationASPLOS 2016 - 21st International Conference on Architectural Support for Programming Languages and Operating Systems
PublisherAssociation for Computing Machinery
Pages353-368
Number of pages16
ISBN (Electronic)9781450340915
DOIs
StatePublished - Mar 25 2016
Event21st International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS 2016 - Atlanta, United States
Duration: Apr 2 2016Apr 6 2016

Publication series

NameInternational Conference on Architectural Support for Programming Languages and Operating Systems - ASPLOS
Volume02-06-April-2016

Other

Other21st International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS 2016
CountryUnited States
CityAtlanta
Period4/2/164/6/16

Fingerprint

Virtual addresses
Computer programming
Data storage equipment
Computer operating systems
Data structures
Interfaces (computer)
Semantics
Systems analysis
Switches

ASJC Scopus subject areas

  • Software
  • Information Systems
  • Hardware and Architecture

Cite this

El Hajj, I., Merritt, A., Zellweger, G., Milojicic, D., Achermann, R., Faraboschi, P., ... Schwan, K. (2016). SpaceJMP: Programming with multiple virtual address spaces. In ASPLOS 2016 - 21st International Conference on Architectural Support for Programming Languages and Operating Systems (pp. 353-368). (International Conference on Architectural Support for Programming Languages and Operating Systems - ASPLOS; Vol. 02-06-April-2016). Association for Computing Machinery. https://doi.org/10.1145/2872362.2872366

SpaceJMP : Programming with multiple virtual address spaces. / El Hajj, Izzat; Merritt, Alexander; Zellweger, Gerd; Milojicic, Dejan; Achermann, Reto; Faraboschi, Paolo; Hwu, Wen-Mei W; Roscoe, Timothy; Schwan, Karsten.

ASPLOS 2016 - 21st International Conference on Architectural Support for Programming Languages and Operating Systems. Association for Computing Machinery, 2016. p. 353-368 (International Conference on Architectural Support for Programming Languages and Operating Systems - ASPLOS; Vol. 02-06-April-2016).

Research output: Chapter in Book/Report/Conference proceedingConference contribution

El Hajj, I, Merritt, A, Zellweger, G, Milojicic, D, Achermann, R, Faraboschi, P, Hwu, W-MW, Roscoe, T & Schwan, K 2016, SpaceJMP: Programming with multiple virtual address spaces. in ASPLOS 2016 - 21st International Conference on Architectural Support for Programming Languages and Operating Systems. International Conference on Architectural Support for Programming Languages and Operating Systems - ASPLOS, vol. 02-06-April-2016, Association for Computing Machinery, pp. 353-368, 21st International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS 2016, Atlanta, United States, 4/2/16. https://doi.org/10.1145/2872362.2872366
El Hajj I, Merritt A, Zellweger G, Milojicic D, Achermann R, Faraboschi P et al. SpaceJMP: Programming with multiple virtual address spaces. In ASPLOS 2016 - 21st International Conference on Architectural Support for Programming Languages and Operating Systems. Association for Computing Machinery. 2016. p. 353-368. (International Conference on Architectural Support for Programming Languages and Operating Systems - ASPLOS). https://doi.org/10.1145/2872362.2872366
El Hajj, Izzat ; Merritt, Alexander ; Zellweger, Gerd ; Milojicic, Dejan ; Achermann, Reto ; Faraboschi, Paolo ; Hwu, Wen-Mei W ; Roscoe, Timothy ; Schwan, Karsten. / SpaceJMP : Programming with multiple virtual address spaces. ASPLOS 2016 - 21st International Conference on Architectural Support for Programming Languages and Operating Systems. Association for Computing Machinery, 2016. pp. 353-368 (International Conference on Architectural Support for Programming Languages and Operating Systems - ASPLOS).
@inproceedings{77991d440c274b6da57a9485b9819567,
title = "SpaceJMP: Programming with multiple virtual address spaces",
abstract = "Memory-centric computing demands careful organization of the virtual address space, but traditional methods for doing so are inflexible and inefficient. If an application wishes to address larger physical memory than virtual address bits allow, if it wishes to maintain pointer-based data structures beyond process lifetimes, or if it wishes to share large amounts of memory across simultaneously executing processes, legacy interfaces for managing the address space are cumbersome and often incur excessive overheads. We propose a new operating system design that promotes virtual address spaces to first-class citizens, enabling process threads to attach to, detach from, and switch between multiple virtual address spaces. Our work enables data-centric applications to utilize vast physical memory beyond the virtual range, represent persistent pointer-rich data structures without special pointer representations, and share large amounts of memory between processes efficiently. We describe our prototype implementations in the Dragon- Fly BSD and Barrelfish operating systems. We also present programming semantics and a compiler transformation to detect unsafe pointer usage. We demonstrate the benefits of our work on data-intensive applications such as the GUPS benchmark, the SAMTools genomics workflow, and the Redis key-value store.",
author = "{El Hajj}, Izzat and Alexander Merritt and Gerd Zellweger and Dejan Milojicic and Reto Achermann and Paolo Faraboschi and Hwu, {Wen-Mei W} and Timothy Roscoe and Karsten Schwan",
year = "2016",
month = "3",
day = "25",
doi = "10.1145/2872362.2872366",
language = "English (US)",
series = "International Conference on Architectural Support for Programming Languages and Operating Systems - ASPLOS",
publisher = "Association for Computing Machinery",
pages = "353--368",
booktitle = "ASPLOS 2016 - 21st International Conference on Architectural Support for Programming Languages and Operating Systems",

}

TY - GEN

T1 - SpaceJMP

T2 - Programming with multiple virtual address spaces

AU - El Hajj, Izzat

AU - Merritt, Alexander

AU - Zellweger, Gerd

AU - Milojicic, Dejan

AU - Achermann, Reto

AU - Faraboschi, Paolo

AU - Hwu, Wen-Mei W

AU - Roscoe, Timothy

AU - Schwan, Karsten

PY - 2016/3/25

Y1 - 2016/3/25

N2 - Memory-centric computing demands careful organization of the virtual address space, but traditional methods for doing so are inflexible and inefficient. If an application wishes to address larger physical memory than virtual address bits allow, if it wishes to maintain pointer-based data structures beyond process lifetimes, or if it wishes to share large amounts of memory across simultaneously executing processes, legacy interfaces for managing the address space are cumbersome and often incur excessive overheads. We propose a new operating system design that promotes virtual address spaces to first-class citizens, enabling process threads to attach to, detach from, and switch between multiple virtual address spaces. Our work enables data-centric applications to utilize vast physical memory beyond the virtual range, represent persistent pointer-rich data structures without special pointer representations, and share large amounts of memory between processes efficiently. We describe our prototype implementations in the Dragon- Fly BSD and Barrelfish operating systems. We also present programming semantics and a compiler transformation to detect unsafe pointer usage. We demonstrate the benefits of our work on data-intensive applications such as the GUPS benchmark, the SAMTools genomics workflow, and the Redis key-value store.

AB - Memory-centric computing demands careful organization of the virtual address space, but traditional methods for doing so are inflexible and inefficient. If an application wishes to address larger physical memory than virtual address bits allow, if it wishes to maintain pointer-based data structures beyond process lifetimes, or if it wishes to share large amounts of memory across simultaneously executing processes, legacy interfaces for managing the address space are cumbersome and often incur excessive overheads. We propose a new operating system design that promotes virtual address spaces to first-class citizens, enabling process threads to attach to, detach from, and switch between multiple virtual address spaces. Our work enables data-centric applications to utilize vast physical memory beyond the virtual range, represent persistent pointer-rich data structures without special pointer representations, and share large amounts of memory between processes efficiently. We describe our prototype implementations in the Dragon- Fly BSD and Barrelfish operating systems. We also present programming semantics and a compiler transformation to detect unsafe pointer usage. We demonstrate the benefits of our work on data-intensive applications such as the GUPS benchmark, the SAMTools genomics workflow, and the Redis key-value store.

UR - http://www.scopus.com/inward/record.url?scp=84975246091&partnerID=8YFLogxK

UR - http://www.scopus.com/inward/citedby.url?scp=84975246091&partnerID=8YFLogxK

U2 - 10.1145/2872362.2872366

DO - 10.1145/2872362.2872366

M3 - Conference contribution

AN - SCOPUS:84975246091

T3 - International Conference on Architectural Support for Programming Languages and Operating Systems - ASPLOS

SP - 353

EP - 368

BT - ASPLOS 2016 - 21st International Conference on Architectural Support for Programming Languages and Operating Systems

PB - Association for Computing Machinery

ER -