หน่วยความจำ ECC คืออะไร?

RAM หรือหน่วยความจำเข้าถึงโดยสุ่มบางตัวได้รับการโฆษณาเป็นหน่วยความจำ ECC ECC ย่อมาจาก Error Correcting Code และเป็นกระบวนการในการระบุและแก้ไขข้อผิดพลาดในหน่วยความจำ ข้อผิดพลาดใน RAM อาจทำให้เกิดความเสียหายหรือเปลี่ยนแปลงข้อมูล ซึ่งอาจส่งผลให้อุปกรณ์ขัดข้องและแม้แต่ช่องโหว่ด้านความปลอดภัย โดยทั่วไปแล้ว ECC RAM จะเข้ากันไม่ได้กับฮาร์ดแวร์พีซีระดับผู้บริโภค

หน่วยความจำผิดพลาดคืออะไร?

ข้อผิดพลาดของหน่วยความจำเป็นปัญหาที่ค่าที่เก็บไว้ในหน่วยความจำมีการเปลี่ยนแปลง ข้อมูลใน RAM ถูกจัดเก็บในรูปแบบไบนารี โดยมีค่า 1 หรือ 0 หากค่าของ 1 ถูกเปลี่ยนเป็น 0 หรือในทางกลับกัน ในกระบวนการที่เรียกว่า "การพลิกบิต" ข้อมูลที่จัดเก็บไว้ในแรมจะเปลี่ยนไป

ตัวอย่างเช่น สามารถใช้บิตที่เปลี่ยนแปลงเพื่อเก็บค่าในสเปรดชีต ในกรณีนี้ ค่าในสเปรดชีตสามารถเปลี่ยนเป็นตัวเลขที่แตกต่างไปจากเดิมอย่างสิ้นเชิง ซึ่ง จะส่งผลต่อผลลัพธ์สำหรับการคำนวณใดๆ เช่น การเปลี่ยนแปลงการคาดการณ์ทางเศรษฐกิจของ a ธุรกิจ. ในกรณีอื่น บิตที่เปลี่ยนแปลงอาจปิดใช้งานคุณลักษณะความปลอดภัย หรือสร้างการพิมพ์ผิดที่เปลี่ยนแปลงวิธีการรันโปรแกรม ตัวอย่างทั้งสองนี้ตรวจจับและแก้ไขได้ยากมากโดยไม่ต้องใช้หน่วยความจำ ECC ในสถานการณ์ที่รุนแรง การพลิกบิตเพียงครั้งเดียวอาจทำให้เกิดข้อผิดพลาดร้ายแรงที่ทำให้ระบบหยุดทำงาน

การพลิกกลับของบิตมีสาเหตุหลายประการ สาเหตุที่พบบ่อยที่สุดคือผลของการแผ่รังสีพื้นหลัง ซึ่งส่วนใหญ่เกิดจากนิวตรอนที่เกิดจากเหตุการณ์รังสีคอสมิก รังสีคอสมิกเป็นอนุภาคพลังงานสูง ซึ่งปกติแล้วจะเป็นโปรตอน ซึ่งเคลื่อนที่ด้วยความเร็วเกือบเท่าแสง พวกมันถูกปล่อยออกมาจากวัตถุของดาวฤกษ์ รวมถึงดวงอาทิตย์และวัตถุทางดาราศาสตร์ที่มีพลังงานสูงอื่นๆ เมื่อรังสีคอสมิกพุ่งชนอะตอม นิวตรอนและอนุภาคย่อยอื่นๆ ถูกสร้างขึ้น นิวตรอนเหล่านี้จะมีปฏิสัมพันธ์รอง

ปฏิกิริยาระหว่างนิวตรอนทุติยภูมิเหล่านี้เชื่อว่าเป็นสาเหตุหลักของข้อผิดพลาดในการพลิกบิต รังสีคอสมิกพบได้บ่อยในระดับความสูงที่สูงขึ้น โดยจะเพิ่มขึ้น 3.5x ที่ 1.5 กม. เหนือระดับน้ำทะเล และเพิ่มขึ้น 300x ที่ระดับความสูงของสายการบิน ความเสี่ยงที่เพิ่มขึ้นนี้ที่ระดับความสูงจำเป็นต้องมีมาตรการความน่าเชื่อถือเป็นพิเศษ

หน่วยความจำผิดพลาดบ่อยแค่ไหน?

คนส่วนใหญ่ไม่เห็นคอมพิวเตอร์ของพวกเขาหยุดทำงานทุกวัน ดังนั้นจึงง่ายที่จะคิดว่านี่เป็นความเสี่ยงตามหลักทฤษฎี การวิจัยจากศูนย์ข้อมูลไฮเปอร์สเกลได้ถูกนำมาใช้ในการวิเคราะห์อัตราการเกิดเหตุการณ์พลิกกลับด้านบิต การวิจัยที่ดำเนินการโดย Google ในศูนย์ข้อมูลต่างๆ ได้แสดงอัตราข้อผิดพลาดประมาณ 1 ข้อผิดพลาดบิตเดียวต่อกิกะไบต์ของ RAM ทุกๆ 1.8 ชั่วโมง

ภารกิจ Cassini-Huygens ของ Nasa ซึ่งเปิดตัวในปี 1997 เพื่อเดินทางไปยังดาวเสาร์นั้นได้รับการกำหนดค่าด้วยคอมพิวเตอร์เที่ยวบินที่เหมือนกันสองเครื่องโดยแต่ละเครื่องมี RAM ขนาด 2.5 Gb ในช่วงสองปีครึ่งแรกของการเดินทาง ยานอวกาศพบข้อผิดพลาดบิตเดียว 280 รายการต่อวัน ในวันหนึ่ง เมื่อ Cassini-Huygens อยู่ในเส้นทางของการลุกเป็นไฟของดวงอาทิตย์ บิตเพิ่มขึ้นสี่เท่า มีการสังเกตข้อผิดพลาด โดยให้หลักฐานเพิ่มเติมว่าดวงอาทิตย์เป็นสาเหตุของการพลิกคว่ำมากที่สุด ปัญหา.

มีความกังวลว่าการเพิ่มความหนาแน่นของโมดูล RAM อย่างต่อเนื่องจะทำให้ RAM รุ่นที่ใหม่กว่ามีความเสี่ยงที่จะพลิกบิตมากขึ้นเรื่อยๆ จากการศึกษาเมื่อเร็วๆ นี้พบว่าสิ่งที่ตรงกันข้ามคือความจริง เนื่องจากข้อผิดพลาดลดลงเมื่อเรขาคณิตของกระบวนการลดลง

หน่วยความจำ ECC ป้องกันข้อผิดพลาดได้อย่างไร

หน่วยความจำ ECC ใช้รหัสแก้ไขข้อผิดพลาด เช่น รหัส Hamming เพื่อแก้ไขข้อผิดพลาดแบบบิตเดียวใน RAM ตรวจพบข้อผิดพลาดสองบิต แต่ไม่สามารถแก้ไขได้ รหัสแก้ไขข้อผิดพลาด Hamming ทำงานโดยใช้อาร์เรย์ของพาริตีบิต สามารถใช้พาริตีบิตร่วมกันเพื่อตรวจจับได้ว่าบิตข้อมูลใด ๆ มีการเปลี่ยนแปลง หากมีการระบุว่ามีการพลิกบิต จะถูกเปลี่ยนกลับโดยอัตโนมัติ

เคล็ดลับ: ข้อผิดพลาดบิตเดียวคือการพลิกบิตเมื่อมีการพลิกบิตเพียงบิตเดียว ในข้อผิดพลาด double0bit สองบิตจะถูกพลิก ไม่จำเป็นต้องพลิกสองบิตในเหตุการณ์เดียวกัน การพลิกบิตครั้งที่สองจะต้องเกิดขึ้นก่อนที่บิตที่พลิกครั้งแรกจะได้รับการแก้ไข

พาริตีบิตมากกว่าที่จำเป็นหนึ่งบิตรวมอยู่ในโค้ดการแก้ไขข้อผิดพลาดของ Hamming พาริตีบิตพิเศษนี้ทำให้โค้ดสามารถตรวจจับการเกิดข้อผิดพลาดแบบสองบิตได้ อย่างไรก็ตาม ข้อผิดพลาดเหล่านี้ไม่สามารถแก้ไขได้

กระบวนการดำเนินการตรวจจับและแก้ไขข้อผิดพลาดนั้นดำเนินการบนตัวควบคุมหน่วยความจำบนแท่ง RAM

ความพร้อมของผู้บริโภคและการสนับสนุน

ฮาร์ดแวร์พีซีระดับผู้บริโภคส่วนใหญ่ไม่รองรับหน่วยความจำ ECC ส่วนหนึ่งเป็นวิธีการแยกความแตกต่างระหว่างฮาร์ดแวร์เซิร์ฟเวอร์กับฮาร์ดแวร์ของผู้บริโภค อย่างไรก็ตาม ECC RAM มีราคาสูงกว่าและทำงานช้าลงเล็กน้อย นอกจากนี้ ความเสถียรเพิ่มเติมที่จะมอบให้กับผู้บริโภคตามบ้านนั้นน้อยมาก เนื่องจากข้อผิดพลาดในการพลิกบิตไม่ใช่สาเหตุหลักของการล่มของระบบ

ไม่มีซีพียูสำหรับผู้บริโภคและผู้สนใจของ Intel รุ่นใดรองรับหน่วยความจำ ECC เฉพาะซีพียูระดับเซิร์ฟเวอร์เท่านั้น เช่น ซีพียูรุ่น Xeon ที่รองรับ CPU เกรดผู้บริโภคของ AMD ไม่รองรับ ECC อย่างไรก็ตาม เวิร์คสเตชันและ CPU ระดับเซิร์ฟเวอร์, Threadripper และ EPYC ตามลำดับ รองรับหน่วยความจำ ECC