หน่วยความจำ ECC: ลักษณะและการทำงานของ RAM นี้

หน่วยความจำ ECC

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

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

Registered RAM หรือ RDIMM คืออะไร?

การลงทะเบียนหน่วยความจำ RDIMM

หน่วยความจำ RAM ที่ลงทะเบียนจะแตกต่างจากหน่วยความจำทั่วไปเนื่องจากมีการลงทะเบียนที่อยู่ระหว่างโมดูลหน่วยความจำ ซึ่งในกรณีนี้เรียกว่า RDIMM และตัวควบคุมหน่วยความจำของระบบ การลงทะเบียนนี้เป็นหน่วยความจำที่เก็บข้อมูลต่อไปนี้:

  • ที่อยู่หน่วยความจำที่จะเข้าถึง
  • คำสั่ง (อ่าน เขียน หรือคัดลอก)
  • ความเร็วสัญญาณนาฬิกาที่สื่อสารกับ RAM

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

อย่างไรก็ตาม โมดูล RDIMM ใช้งานได้ช้ากว่าโมดูลทั่วไป เนื่องจากมีการเพิ่มขั้นตอนเพิ่มเติมสำหรับการเข้าถึงรีจิสทรี ซึ่งแปลเป็นแบนด์วิดท์ที่ต่ำกว่ามาก และเวลาแฝงที่สูงขึ้นมากใน RDIMM อย่างไรก็ตาม โมดูล DIMM ที่ใช้ในพีซีนั้นมีไว้สำหรับใช้ในพีซีเดสก์ท็อป ซึ่งโดยปกติแล้วจะมีช่องทางการเข้าถึงไม่เกินสองช่อง เช่นเดียวกับกรณีของเวิร์กสเตชันที่ใช้ HEDT CPU และเซิร์ฟเวอร์ด้วย

ECC ใน RAM คืออะไร?

Intel Xeon

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

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

แต่เพื่อให้ได้แนวคิด เราจะใช้ค่าง่าย ๆ เป็นเลขฐานสองคือ 011101011 ซึ่งในหน่วยทศนิยมจะเท่ากับตัวเลข 235

  • หากบิตแรกเปลี่ยนแปลง 111101011 ค่าจะกลายเป็น 491
  • หากเป็นบิตที่สองที่เปลี่ยนแปลง 001101011 ค่าจะกลายเป็น 107
  • การเปลี่ยนแปลงในบิตที่สามทำให้ค่า 011001011 และดังนั้น 203

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

รหัสของแฮมมิง

โคดิโก แฮมมิง อีซีซี

วิธีการที่ใช้ในการแก้ไขข้อผิดพลาดในสัญญาณหน่วยความจำ ECC เรียกว่ารหัส Hamming นี่ไม่ใช่อัลกอริทึมประเภทใดที่ CPU ดำเนินการ แต่ดำเนินการในตัวควบคุมหน่วยความจำที่อยู่ในตัวประมวลผล พร้อมรองรับ RAM ประเภทนี้ ชื่อนี้มาจากนักคณิตศาสตร์ชาวอเมริกัน Richard W. Hamming ซึ่งเป็นผู้พัฒนา

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

บิตเหล่านั้นที่อยู่ในตำแหน่งสอดคล้องกับกำลัง 2 (1, 2, 4, 8…) จะถูกทำเครื่องหมายเป็นบิตพาริตี ในขณะที่บิตที่เหลือจะถูกทำเครื่องหมายเป็นบิตสำหรับข้อมูลเท่านั้น บิตพาริตีจะเพิ่มเป็นสองเท่าที่ส่วนท้ายของสตริงบิต ดังนั้นจึงเรียกอีกอย่างว่าบิตซ้ำซ้อน เนื่องจากมีการทำซ้ำ ในการตรวจสอบความสมบูรณ์ของข้อมูล สิ่งที่ทำคือเปรียบเทียบกันเพื่อตรวจสอบความสมบูรณ์ของสัญญาณที่จัดเก็บไว้ในหน่วยความจำ

Código Hamming bits paridad

หากการดำเนินการเป็นการเขียนหน่วยความจำ:

  • CPU จะส่งข้อมูลไปยังตัวควบคุมหน่วยความจำ ซึ่งจะแจ้งที่อยู่หน่วยความจำที่ต้องการแก้ไขและข้อมูลที่ต้องการเขียน
  • ตัวควบคุมสร้างรหัส ECC และส่งไปยังหน่วยความจำ
  • ข้อมูลถูกเก็บไว้ในหน่วยความจำ

ในทางกลับกัน หากอ่านจากหน่วยความจำ

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

โมดูล RAM พร้อมECC

RAM ECC และไม่มี ECC

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

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

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