กลับไปหน้าบทความ

อ่าน 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
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Persistent_memory&oldid=1350632724 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ความทรงจำที่คงอยู่

ใน วิทยาการคอมพิวเตอร์ หน่วย ความจำถาวร คือวิธีการหรืออุปกรณ์ใดๆ สำหรับการจัดเก็บโครงสร้างข้อมูลอย่างมีประสิทธิภาพเพื่อให้สามารถเข้าถึงได้โดยใช้คำสั่งหน่วยความจำหรือ 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.