hardware supported permission checks on persistent
play

Hardware Supported Permission Checks On Persistent Objects for - PowerPoint PPT Presentation

Hardware Supported Permission Checks On Persistent Objects for Performance and Programmability Tiancong Wang, Sakthikumaran Sambasivam, James Tuck twang14@ncsu.edu or jtuck@ncsu.edu 1 NVM Programming 2 NVM Programming


  1. Hardware Supported Permission Checks On Persistent Objects for Performance and Programmability Tiancong Wang, Sakthikumaran Sambasivam, James Tuck twang14@ncsu.edu or jtuck@ncsu.edu �1

  2. NVM Programming �2

  3. NVM Programming • Non-Volatile Memory is attractive • Byte addressable persistent storage NVMM �2

  4. NVM Programming • Non-Volatile Memory is attractive • Byte addressable persistent storage NVMM • Direct access (DAX) �2

  5. NVM Programming • Non-Volatile Memory is attractive • Byte addressable persistent storage NVMM • Direct access (DAX) Pool 1 • Treat NVM as many persistent Pool 2 regions, a.k.a. pools �2

  6. NVM Programming Address Space • Non-Volatile Memory is attractive stack • Byte addressable persistent storage NVMM • Direct access (DAX) Pool 1 • Treat NVM as many persistent Pool 2 regions, a.k.a. pools • Pools are mapped to address space to create persistent data structure heap BSS data text �2

  7. NVM Programming Address Space • Non-Volatile Memory is attractive stack • Byte addressable persistent storage NVMM • Direct access (DAX) Pool 1 • Treat NVM as many persistent Pool 2 regions, a.k.a. pools • Pools are mapped to address space to create persistent data structure • Use permanent pointers for creating heap linked data structures BSS data text �2

  8. NVM Programming Address Space • Non-Volatile Memory is attractive stack • Byte addressable persistent storage NVMM • Direct access (DAX) Pool 1 • Treat NVM as many persistent Pool 2 regions, a.k.a. pools • Pools are mapped to address space to create persistent data structure • Use permanent pointers for creating heap linked data structures BSS • A permanent pointer can point to an data object within the pool, or across text pools �2

  9. Problem Program 1 Address Space stack NVMM Pool 1 Pool 2 heap BSS data text �3

  10. Program 1 Address Space stack Problem Program 2 Address Space heap • Another program wants to access BSS stack data text the same data structure NVMM Pool 1 Pool 2 heap BSS data text �3

  11. Program 1 Address Space stack Problem Program 2 Address Space heap • Another program wants to access BSS stack data text the same data structure NVMM ★ Is the permanent pointer still valid? Pool 1 Pool 2 ? heap BSS data text �3

  12. Program 1 Address Space stack Problem Program 2 Address Space heap • Another program wants to access BSS stack data text the same data structure NVMM ★ Is the permanent pointer still valid? Pool 1 • Need to map the pools before Pool 2 accessing it. ? heap BSS data text �3

  13. Program 1 Address Space stack Problem Program 2 Address Space heap • Another program wants to access BSS stack data text the same data structure NVMM ★ Is the permanent pointer still valid? Pool 1 • Need to map the pools before Pool 2 accessing it. ? • Not all the programs have same permissions; need to check the permission before mapping heap BSS data text �3

  14. Program 1 Address Space stack Problem Program 2 Address Space heap • Another program wants to access BSS stack data text the same data structure NVMM ★ Is the permanent pointer still valid? Pool 1 • Need to map the pools before Pool 2 accessing it. ? • Not all the programs have same permissions; need to check the permission before mapping heap ★ We need to validate on ALL BSS permanent pointers before data dereferencing, to make sure the text pool is checked and mapped �3

  15. Program 1 Address Space stack Problem Program 2 Address Space heap • Another program wants to access BSS stack data text the same data structure NVMM ★ Is the permanent pointer still valid? Pool 1 • Need to map the pools before Pool 2 accessing it. ? • Not all the programs have same permissions; need to check the permission before mapping heap ★ We need to validate on ALL BSS permanent pointers before Performance overhead data dereferencing, to make sure the text Programming burden pool is checked and mapped �3

  16. Solution • System Persistent Object Table System Persistent Object Table (SPOT) (SPOT) • Similar to page table, BUT is a system table. • Permission check: stores Pool ID Physical addr. Permission info permission information • Mapping: stores mapping of physical addresses • Programmers no longer need to reason about permanent pointers as long as the program has permissions

  17. Contributions �5

  18. Contributions • Point out permanent pointers can point to unmapped regions; reasoning about them is a new programming burden �5

  19. Contributions • Point out permanent pointers can point to unmapped regions; reasoning about them is a new programming burden • Hardware can efficiently check permission and map pools when dereferencing any permanent address. �5

  20. Contributions • Point out permanent pointers can point to unmapped regions; reasoning about them is a new programming burden • Hardware can efficiently check permission and map pools when dereferencing any permanent address. • We study and compare different design choices that provide permission checks in hardware and software �5

  21. Contributions • Point out permanent pointers can point to unmapped regions; reasoning about them is a new programming burden • Hardware can efficiently check permission and map pools when dereferencing any permanent address. • We study and compare different design choices that provide permission checks in hardware and software • Evaluate on 6 microbenchmarks and 2 applications �5

  22. Contributions • Point out permanent pointers can point to unmapped regions; reasoning about them is a new programming burden • Hardware can efficiently check permission and map pools when dereferencing any permanent address. • We study and compare different design choices that provide permission checks in hardware and software • Evaluate on 6 microbenchmarks and 2 applications • Our design offers a 2.9x speedup on average for micro- benchmarks and 1.4x and 1.8x speedup on TPC-C and Vacation �5

  23. Outline • Introduction • Motivation - More details of permission check and pool mapping • Implementation - Hardware supported permission check (SPOT) • Result - Performance on out-of-order processors • Summary �6

  24. MOTIVATION • Permanent address: ObjectID • Where’s programming burden and performance overhead • Idea of automatic permission check �7

  25. Motivation - ObjectIDs

  26. Motivation - ObjectIDs • Permanent address : ObjectID, (Pool ID, offset)

  27. Motivation - ObjectIDs • Permanent address : Pool ID Offset Object ID ObjectID, (Pool ID, offset) • Translation : Address = Pool ID Base address BaseAddressLookup(Pool #) 1234 0xDEADBEEF + offset 5678 0x12345678 … …

  28. Motivation - ObjectIDs • Permanent address : Pool ID Offset Object ID 5678 ObjectID, (Pool ID, offset) Hash Table search • Translation : Address = Pool ID Base address BaseAddressLookup(Pool #) 1234 0xDEADBEEF + offset 5678 0x12345678 + … … Translated address

  29. Motivation - ObjectIDs • Permanent address : Pool ID Offset Object ID 5678 ObjectID, (Pool ID, offset) Hash Table search • Translation : Address = Pool ID Base address BaseAddressLookup(Pool #) 1234 0xDEADBEEF + offset • Translation can be optimized 5678 0x12345678 + through either hardware or … … software support in prior works Translated address

  30. Motivation - Programming burden Address Space stack Pool 1 Pool 2 heap BSS data text

  31. Motivation - Programming burden Address Space oid1 = head (1, 10) stack Pool 1 Pool 2 heap BSS data text

  32. Motivation - Programming burden Address Space oid1 = head stack check oid1 (1, 10) Check&Map Pool 1 Pool 1 Pool 2 heap BSS data text

  33. Motivation - Programming burden Address Space oid1 = head stack check oid1 addr1 = translate oid1 (1, 10) Pool 1 Pool 2 heap BSS data text

  34. Motivation - Programming burden Address Space oid1 = head stack check oid1 addr1 = translate oid1 Pool 1 (1, 20) oid2 = load from addr1 Pool 2 heap BSS data text

  35. Motivation - Programming burden Address Space oid1 = head stack check oid1 addr1 = translate oid1 Pool 1 oid2 = load from addr1 check oid2 (1, 20) Pool 2 heap BSS data text

  36. Motivation - Programming burden Address Space oid1 = head stack check oid1 addr1 = translate oid1 Pool 1 oid2 = load from addr1 check oid2 addr2 = translate oid2 (1, 20) Pool 2 heap BSS data text

  37. Motivation - Programming burden Address Space oid1 = head stack check oid1 addr1 = translate oid1 Pool 1 oid2 = load from addr1 check oid2 addr2 = translate oid2 Pool 2 (2, 20) oid3 = load from addr2 heap BSS data text

  38. Motivation - Programming burden Address Space oid1 = head stack check oid1 addr1 = translate oid1 Pool 1 oid2 = load from addr1 check oid2 addr2 = translate oid2 Pool 2 oid3 = load from addr2 check oid3 (2, 20) Check&Map Pool 2 heap BSS data text

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend