1. ECC là gì?
ECC ( Error Checking and Correction) là chức năng tự kiểm tra và sửa lỗi trên máy tính. Thường bộ nhớ ECC được coi là thành phần căn bản và vô cùng quan trọng trong hệ thống Sever.
2. RAM ECC là gì?
Một thanh RAM có khả năng ECC (Error Checking and Correction) là một thanh RAM có khả năng điều khiển được dòng dữ liệu ra và vào nó. Do do, đối với một thanh RAM thông thường (Non-ECC) thì trong quá trình truyền tín hiệu ở tốc độ cao thì rất dễ bị đụng độ crash, đặc biệt là đối với các máy chủ. Và khi crash xảy ra thì RAM (Non-ECC) phải nạp lại toàn bộ dòng data vì không có khả năng quản lý được dòng dữ liệu. Đối với RAM ECC thì khi crash xảy ra RAM ECC chỉ cần yêu cầu gửi lại đúng gói tin (packet) bị crash. RAM ECC có 9 chip (Non ECC 8 chip), nó có chế độ tự động sửa lỗi, vì thế RAM ECC có độ ổn định và hiệu suất cao hơn các RAM bình thường khác.
3. RAM ECC hoạt động như thế nào?
RAM ECC có 9 chip thay vì 8 chip so với RAM không có tính năng ECC. Khả năng tự kiểm tra và sửa lỗi cho từng bit riêng lẻ giúp nó phát hiện và sửa lỗi kịp thời ngay lúc xảy ra. Cơ chế hoạt động của ECC không giống như RAID 4 và 5 (sử dụng thuật toán XOR để tạo ra parity bit). ECC sẽ không hy sinh một phần bộ nhớ để sử dụng cho việc sửa lỗi mà có xu hướng bổ sung thêm chip vào bộ nhớ ECC. Nhược điểm của ECC là chỉ có cơ chế sử lỗi trên từng bit riêng lẻ nên khi có nhiều bit lỗi xảy ra cùng 1 lúc thì bộ nhớ ECC tuy phát hiện ra lỗi nhưng không có khả năng sửa kịp. Đối với máy tính bàn, laptop hay thiết bị di động thì chức năng sửa lỗi ECC ít được quan tâm hơn, khi bị sẽ gây ra lỗi chương trình hoặc buộc phải khởi động lại máy gây ra phiền phức. Tuy nhiên đối với máy chủ, việc duy trì tính toàn vẹn của dữ liệu và khả năng hoạt động liên tục là 2 ưu tiên hàng đầu, do đó lựa chọn RAM ECC cho máy chủ gần như trở thành tiêu chuẩn, hết sức quan trọng.
4. Sự khác nhau giữa RAM Registered ECC và RAM Unbuffered ECC?
Hiện nay, hầu hết loại bộ nhớ sử dụng trong máy tính để bàn, laptop, thiết bị di động là loại không sử dụng bộ nhớ đệm và không có khả năng tự kiểm tra và sửa lỗi Non-ECC (Non-Error Checking and Correction). Việc hỗ trợ loại bộ nhớ ECC UDIMM (ECC Unbuffered) hay ECC RDIMM (ECC Registered) là do loại CPU của Intel hoặc AMD quyết định.
Vậy thực chất sự khác biệt giữa 2 loại RAM Registered ECC và RAM Unbuffered ECC là gì? Trước hết giữa RDIMM và UDIMM đã có sự khác nhau. Có thể tham khảo thêm tại đây: Sự khác nhau giữa RDIMM và UDIMM. RDIMM là bộ nhớ có chứa các thanh ghi (register), còn UDIMM là bộ nhớ không có các bộ đệm hoặc thanh ghi (register) mà các thiết bị được thiết kế trên bo mạch chủ. Chính vì sự khác biệt đó nên dẫn đến sự khác nhau căn bản giữa RAM Registered ECC và RAM Unbuffered ECC là ở lệnh truy xuất. Đối với RAM Unbuffered ECC thì các lệnh truy xuất bộ nhớ được đưa trực tiếp đến module bộ nhớ, còn RAM Registered ECC thì các lệnh truy xuất phải được gửi đến Registered chip trước sau đó mới truyền đến module bộ nhớ.
Cơ chế hoạt động của RAM Registered ECC có cả ưu và nhược điểm:
Nhược điểm dễ thấy nhất của RAM Registered ECC do nguyên lý hoạt động của nó. Các lệnh truy xuất do phải gửi đến Register chip trước sau đó mới truyền đến module bộ nhớ nên các lệnh chỉ thị sẽ mất xấp xỉ 1 chu kì CPU.
Ưu điểm là khi xài RAM Registered ECC sẽ giúp giảm tải bớt khối lượng điều khiển bộ nhớ của CPU, một phần công việc truy xuất trực tiếp bộ nhớ đã có Register chip thực hiện.Nhờ đó CPU sẽ bớt được khối lượng công việc, giúp máy chạy tốt và hiệu quả hơn.
Điều này trở nên đặc biệt quan trọng trong môi trường máy chủ. Ví dụ đối với loại Motherboard Supermicro X8DTH-6F hỗ trợ 2 CPU loại E5600, khoảng cách này còn lớn hơn với 48GB ECC UDIMM hoặc 192GB ECC RDIMM. Đối với môi trường ảo hóa, nơi mà dung lượng bộ nhớ và băng thông bộ nhớ (Memory bandwidth) là các yếu tố then chốt để đạt được mật độ ảo hóa cao, RAM Registered ECC là lựa chọn tốt hơn. Nếu bạn đã mua loại RAM Unbuffered ECC rồi sau đó muốn nâng cấp, rất có thể bạn sẽ phải thay thế toàn bộ RAM cũ bằng loại RAM mới và làm tăng chi phí khá nhiều.