อ่าน 2 นาที
ความทรงจำที่คงอยู่
ใน วิทยาการคอมพิวเตอร์ หน่วย ความจำถาวร คือวิธีการหรืออุปกรณ์ใดๆ สำหรับการจัดเก็บโครงสร้างข้อมูลอย่างมีประสิทธิภาพเพื่อให้สามารถเข้าถึงได้โดยใช้คำสั่งหน่วยความจำหรือ API...
ความทรงจำที่คงอยู่
ในวิทยาการคอมพิวเตอร์หน่วยความจำถาวรคือวิธีการหรืออุปกรณ์ใดๆ สำหรับการจัดเก็บโครงสร้างข้อมูลอย่างมีประสิทธิภาพเพื่อให้สามารถเข้าถึงได้โดยใช้คำสั่งหน่วยความจำหรือ API หน่วยความจำแม้หลังจากสิ้นสุดกระบวนการที่สร้างหรือแก้ไขครั้งล่าสุดแล้ว[ 1 ]
หน่วยความจำถาวร (Persistent Memory) มักถูกเข้าใจผิดว่าเป็นหน่วยความจำเข้าถึงแบบสุ่มที่ไม่ระเหย (NVRAM) แต่แท้จริงแล้ว หน่วยความจำถาวรมีความเชื่อมโยงกับแนวคิดเรื่องความคงทน (Persistence) มากกว่า โดยเน้นที่สถานะของโปรแกรมที่อยู่นอกเหนือขอบเขตความผิดพลาด (Fault Zone) ของกระบวนการที่สร้างมันขึ้นมา (กระบวนการคือโปรแกรมที่กำลังทำงานอยู่ ขอบเขตความผิดพลาดของกระบวนการคือส่วนย่อยของสถานะโปรแกรมที่อาจเสียหายได้หากกระบวนการยังคงทำงานต่อไปหลังจากเกิดความผิดพลาด เช่น เนื่องจากส่วนประกอบที่ไม่น่าเชื่อถือที่ใช้ในคอมพิวเตอร์ที่กำลังประมวลผลโปรแกรมนั้น)
การเข้าถึงที่มีประสิทธิภาพเหมือนหน่วยความจำถือเป็นลักษณะเฉพาะของหน่วยความจำถาวร[ 2 ]สามารถทำได้โดยใช้คำสั่งหน่วยความจำของไมโครโปรเซสเซอร์ เช่น โหลดและจัดเก็บ นอกจากนี้ยังสามารถทำได้โดยใช้ API ที่ใช้การเข้าถึงหน่วยความจำโดยตรงจากระยะไกล (RDMA) เช่น การอ่าน RDMA และการเขียน RDMA วิธีการอื่นๆ ที่มีความหน่วง ต่ำ ซึ่งอนุญาตให้เข้าถึงข้อมูลระดับไบต์ก็มีคุณสมบัติเช่นกัน
ความสามารถของหน่วยความจำถาวรนั้นขยายไปไกลกว่าการคงสภาพของบิตที่จัดเก็บไว้ ตัวอย่างเช่น การสูญเสียเมตาเดต้าที่สำคัญ เช่น รายการในตารางเพจ หรือโครงสร้างอื่นๆ ที่แปลงที่อยู่เสมือนเป็นที่อยู่ทางกายภาพ อาจทำให้บิตที่ทนทานไม่คงอยู่ถาวร ในแง่นี้ หน่วยความจำถาวรจึงคล้ายกับรูปแบบการจัดเก็บข้อมูลคอมพิวเตอร์ที่เป็นนามธรรมมากกว่า เช่นระบบไฟล์อันที่จริง เทคโนโลยีหน่วยความจำถาวรที่มีอยู่เกือบทั้งหมดอย่างน้อยก็มีการใช้งานระบบไฟล์พื้นฐานที่สามารถใช้สำหรับการเชื่อมโยงชื่อหรือตัวระบุกับส่วนขยายที่จัดเก็บไว้ และอย่างน้อยที่สุดก็มีวิธีการของระบบไฟล์ที่สามารถใช้สำหรับการตั้งชื่อและการจัดสรรส่วนขยายดังกล่าว
ปัญหาการอ่านข้อมูลที่เขียนไม่ถาวร
ปัญหาการอ่านค่าที่เขียนไม่ถาวร (read-of-non-persistent-write problem) พบได้ใน โปรแกรมที่ไม่มีการล็อก ( lock - free programs) บนหน่วยความจำถาวร เนื่องจากโอเปอเรชันเปรียบเทียบและสลับ (CAS) ไม่ได้บันทึกค่าที่เขียนลงในหน่วยความจำถาวร ข้อมูลที่แก้ไขแล้วจึงสามารถมองเห็นได้โดยโปรโตคอลความสอดคล้องของแคช (cache coherence protocol) ก่อนที่ข้อมูลที่แก้ไขแล้วจะสามารถสังเกตได้โดยตัวสังเกตการทำงานผิดพลาด (crash observer) ในหน่วยความจำถาวร หากเกิดไฟฟ้าดับทันทีหลังจากที่การเขียนปรากฏให้เห็นแล้วแต่ยังไม่ถาวร ปัญหาการอ่านค่าที่เขียนไม่ถาวรอาจเกิดขึ้นได้ กล่าวคือ ตัวแปรข้อมูลที่ถูกแก้ไขโดยโอเปอเรชันเปรียบเทียบและสลับสามารถมองเห็นได้โดยตัวสังเกตการทำงานพร้อมกันก่อนตัวสังเกตการทำงานผิดพลาด ทำให้เกิดความไม่สอดคล้องกันในการทำงานผิดพลาดได้
เพื่ออธิบายปัญหา: สำหรับลิสต์แบบลิงก์เดี่ยวที่ไม่มีการล็อก โหนดสามารถถูกแทรกโดยเธรดผู้ผลิต Aหลังจากโหนดหัว โหนด ถัดไปของโหนดหัวจะถูกสลับแบบอะตอมิก (CAS) ให้ชี้ไปยังโหนดใหม่ Aแต่ CAS นี้จะไม่ถูกบันทึกไว้ จากนั้น โหนดอื่นจะถูกแทรกโดยเธรดผู้ผลิต Bหลังจากโหนด Aเนื่องจาก CAS สำหรับโหนด Aนั้นมองเห็นได้สำหรับเธรดพร้อมกันทั้งหมดแล้ว CAS จะสลับ โหนด ถัดไปของโหนด A แบบอะตอมิก ให้ชี้ไปยังโหนด Bและ CAS นี้จะถูกบันทึกไว้ หากเกิดไฟฟ้าดับ ณ จุดนี้ แอปพลิเคชันที่ใช้ลิสต์แบบลิงก์จะอยู่ในสถานะที่ไม่สอดคล้องกัน โดยทั้งโหนด Aและโหนด Bจะหายไป เนื่องจาก โหนด ถัดไปจาก โหนด หัวไปยังโหนด Aไม่ได้รับการบันทึกไว้ เนื่องจากโหนด Bได้รับการเผยแพร่แล้วแต่ไม่สามารถเข้าถึงได้หลังจากการรีบูต และข้อมูลอื่นๆ อาจถูกจัดเก็บไว้ซึ่งเข้าถึงผ่านหรือขึ้นอยู่กับโหนด Bการเข้าถึงข้อมูลดังกล่าวในภายหลังทั้งหมดจะไม่สามารถทำได้ ส่งผลให้ข้อมูลสูญหาย[ 3 ]
ปัญหาการอ่านการเขียนที่ไม่คงอยู่ไม่ได้จำกัดอยู่เฉพาะรายการเชื่อมโยงแบบไม่มีล็อกเท่านั้น แต่ยังสามารถพบได้ในโครงสร้างข้อมูลแบบไม่มีล็อกใดๆ ที่อาจมีช่องว่างระหว่างการมองเห็นพร้อมกันและการมองเห็นแบบคงอยู่ ตัวอย่างเช่น ปัญหาที่คล้ายกันนี้อาจเกิดขึ้นกับบัฟเฟอร์วงกลม แบบคงอยู่ [ 4 ]
ดูเพิ่มเติม
- NOVA (filesystem)หรือ "non-volatile memory accelerated" คือระบบไฟล์แบบ log-structured โอเพนซอร์ส สำหรับหน่วยความจำถาวรที่สามารถเข้าถึงได้ทีละไบต์
- ข้อมูลถาวรคือ ข้อมูลที่เข้าถึงไม่บ่อยและไม่น่าจะถูกแก้ไข
- โครงสร้างข้อมูลแบบคงอยู่ (Persistent data structures ) คือโครงสร้างข้อมูลที่เก็บรักษาเวอร์ชันก่อนหน้าของตัวเองไว้เสมอเมื่อมีการแก้ไข (กล่าวคือไม่สามารถเปลี่ยนแปลงได้)
- Phantom OSระบบปฏิบัติการที่คงอยู่ถาวร
ลิงก์ภายนอก
- การเขียนโปรแกรมหน่วยความจำถาวร (Persistent Memory Programming ) คือชุดรวมแหล่งข้อมูลที่เกี่ยวข้องกับการเขียนโปรแกรมหน่วยความจำถาวร
- คอนเทนเนอร์และข้อมูลถาวร , LWN.net , 28 พฤษภาคม 2015, โดย Josh Berkus
- การรีเฟรช DRAM แบบอะซิงโครนัส (ADR) , SNIA , มกราคม 2014 (ใช้ได้กับ DRAM ด้วย)
- Twizzler: ระบบปฏิบัติการสำหรับลำดับชั้นหน่วยความจำยุคใหม่ รายงานทางเทคนิค ของมหาวิทยาลัยแคลิฟอร์เนีย ซานตาครูซ UCSC-SSRC-17-01 วันที่ 5 ธันวาคม 2017 โดย Daniel Bittman, Matt Bryson, Yuanjiang Ni, Arjun Govindjee, Isaak Cherdak, Pankaj Mehra, Darrell DE Long และ Ethan L. Miller
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ความทรงจำที่คงอยู่
ใน วิทยาการคอมพิวเตอร์ หน่วย ความจำถาวร คือวิธีการหรืออุปกรณ์ใดๆ สำหรับการจัดเก็บโครงสร้างข้อมูลอย่างมีประสิทธิภาพเพื่อให้สามารถเข้าถึงได้โดยใช้คำสั่งหน่วยความจำหรือ API...
ปัญหาการอ่านข้อมูลที่เขียนไม่ถาวร
ปัญหาการอ่านค่าที่เขียนไม่ถาวร (read-of-non-persistent-write problem) พบได้ใน โปรแกรมที่ไม่มีการล็อก ( lock - free programs) บนหน่วยความจำถาวร เนื่องจาก โอเปอเรชันเปรียบเทียบและสลับ (CAS) ไม่ได้บันทึกค่าที่เขียนลงในหน่วยความจำถาวร...
ดูเพิ่มเติม
NOVA (filesystem) หรือ "non-volatile memory accelerated" คือระบบไฟล์แบบ log-structured โอเพนซอร์ส สำหรับหน่วยความจำถาวรที่สามารถเข้าถึงได้ทีละไบต์ ข้อมูลถาวร คือ ข้อมูลที่เข้าถึงไม่บ่อยและไม่น่าจะถูกแก้ไข โครงสร้างข้อมูลแบบคงอยู่ (Persistent data structures )...
ลิงก์ภายนอก
การเขียนโปรแกรมหน่วยความจำถาวร (Persistent Memory Programming ) คือชุดรวมแหล่งข้อมูลที่เกี่ยวข้องกับการเขียนโปรแกรมหน่วยความจำถาวร คอนเทนเนอร์และข้อมูลถาวร , LWN.