Một chuẩn IBM lập cho ngành công nghiệp là các chip nhớ trong dây chín, mỗi chip đều năm giữ 1 bit dữ liệu: 8 bit mỗi ký tự cộng thêm 1 bit gọi là bit chẵn lẻ (Parity bit). Bit chẵn lẻ cho phép mạch điều khiển bộ nhớ theo dõi 8 bit kia một kiểm tra chéo lập sẵn cho tính toàn vẹn của mỗi byte trong hệ thống.
Kiểm tra tính chẵn lẻ
Ban đầu, tất cả các hệ thống PC sử dụng bộ nhớ kiểm tra tính chẵn lẻ để đảm bảo tính chính xác. Bắt đầu từ năm 1994 hầu hết các nhà cung cấp bắt đầu bán các hệ thống không có kiểm tra chẵn lẻ hay bất kỳ đĩa nào phát hiện hoặc sửa lỗi! Các hệ thống này có thể sử dụng các module bộ nhớ không chẵn lẻ rẻ hơn, tiết kiệm khoảng 10% đến 15% giá thành bộ nhớ cho hệ thống.
Bộ nhớ chẵn lẻ dẫn đến tăng giá thành hệ thống ban đầu, chủ yếu do các bit bộ nhớ thêm vào. Tính chẵn lẻ không thể sửa lỗi hệ thống, nhưng vì chẵn lẻ có thể phát hiện lỗi, nó giúp người dùng nhận ra những lỗi bộ nhớ khi chúng xảy ra.
Từ đó Intel và những nhà sản xuất chipset khác đặt hỗ trợ bộ nhớ ECC vào nhiều chipset (đặc biệt trong các kiểu cao cấp). Tuy nhiên những chipset dòng thấp thiếu hỗ trợ cho cả tính chẵn lẻ hay ECC. Nếu độ tin cậy là quan trọng với bạn, hãy chắc chắn hệ thống bạn mua có hỗ trợ ECC.
Kiểm tra chẵn lẻ hoạt động như thế nào
Đầu tiên IBM thiết lập tiêu chuẩn tính lẻ (odd parity) dành cho kiểm tra lỗi. Giải thích dưới đây có thể giúp bạn hiểu tính lẽ là gì. Khi 8 bit riêng biệt trong một byte được chứa trong bộ nhớ, một bộ phận phát/bộ phận kiểm tra chẵn lẻ, là một phần của CPU hay nằm trong một chip đặc biệt trên bo mạch chủ, đánh giá các bit dữ liệu bằng cách thêm số 1s vào trong byte. Nếu một số chẵn lẻ được tìm thấy, bộ phận phát/bộ phận kiểm tra chẵn lẻ sẽ tạo ra số 1 và lưu trữ nó giống như bit thứ 9 (bit chẵn lẻ) trong chip nhớ chẵn lẻ. Điều này làm tổng tất cả 9 bit (bao gồm cả bit chẵn lẻ) thành một số lẻ. Nếu tổng số ban đầu của 8 bit dữ liệu là một số lẻ, bit chẵn lẻ sẽ tạo ra một số 0, giữ tổng số tất cả 9 bit thành một số lẻ. Nguyên tắc cơ bản là giá trị bit chẵn lẻ luôn luôn được chọn vì thế tổng của tất cả 9 bit (8 bit dữ liệu cộng thêm 1 bit chẵn lẽ) được lưu giữ như là một số lẻ. Nếu hệ thống được sử dụng tính chẵn (even paritv) thì thí dụ cùng giống như vậy ngoại trừ bit chẵn lẻ sẽ được tạo ra để bào đàm một tổng số chẵn. Điều đó không có nghĩa là liệu có nên dùng tính chẵn hay tính lẻ hệ thống sẽ sử dụng cái này hoặc cái kia, nó hoàn toàn rõ rằng đối với các chip nhớ liên quan. Hãy nhớ rằng 8 bit dữ liệu trong một byte được đánh số 0 I 2 3 4 5 6 7. Các ví dụ dưới đây có thể làm cho nó dễ hiểu hơn:
Số bit dữ liệu: 0 12 3 4 5 6 7 bit chẵn lẻ
Giá trị bit dữ liệu: 1 0 1 1 0 0 1 1 0
Trong ví dụ này, vì tổng số bit dữ liệu với giá trị của 1 là một số lẻ (5), bit chẵn lẽ phải có giá trị của 0 để đảm bảo một tổng số lẻ cho tất cả 9 bit.
Dưới đây là một ví dụ khác:
Số bit dữ liệu: 0 1 2 3 4 5 6 7 bit chẵn lẻ
Giá trị bit dữ liệu: 1 1 1 1 0 0 1 1 1
Trong ví dụ này. vì tổng số các bit dữ liệu với một giá trị của 1 là một số chẵn (6). các bit chẵn lẻ cần phải có một giá trị của 1 để tạo ra một tổng số lẻ cho tất cả 9 bit.
Khi hệ thống đọc lại bộ nhớ từ lưu trữ, nó kiểm tra thông tin chẵn lẻ. Nếu một byte (9-bit) có số bit chẵn, thì byte đó chắc chắn phải có một lỗi. Hệ thống không thể cho biết bit nào đã thay đổi hoặc là chi một bit đơn thay đổi. Nếu 3 bit thay đổi. cho ví dụ, byte vẫn treo lệnh lỗi kiểm tra chẵn lẻ; nếu 2 bit thay đổi, tuy nhiên, byte hông có thể bó qua không chú ý. Bởi vì các lỗi bit (trong một byte đơn) là rất hiếm, lược đồ này cho bạn biết bộ nhớ còn hoạt động tốt hay bị hỏng một cách hợp lý và không tốn kém.
Các ví dụ dưới đây hiển thị các thông báo kiểm tra chẵn lẻ cho ba loại của hệ thống cũ:
Đối với IBM PC: KIỂM TRA CHẴN LẺ X
Đối với IBM XT: KIỂM TRA CHẴN LẺ X YYYYY (z)
Đối với IBM AT và dòng cuối XT: KIỂM TRA CHẴN LẺ X YYYYY
X là 1 hoặc 2:
1 = Lỗi xảy ra trên bo mạch chủ
2 = Lỗi xảy ra trong một Slot mở rộng
Trong ví dụ này. yyyyy đại diện cho một số từ 00000 đến FFFFF chỉ ra, trong ký hiệu hệ thập lục phân, các byte trong đó xảy ra lỗi.
Cùng vậy z là (S) hoặc (E):
(S) = Lỗi chẵn lẻ xảy ra trong đơn vị hệ thống
(E) = Lỗi chẵn lẻ xảy ra trong một chassis mơ rộng tùy chọn
Lưu ý:
Một chassis mở rộng là một tùy chọn IBM bán cho các hệ thống XT và PC đầu tiên để thêm vào nhiều Slot mở rộng hơn.
Khi một lỗi kiểm tra chẵn lẻ được phát hiện, mạch kiểm tra chẵn lẻ của bo mạch chủ sẽ tạo ra ngắt không ngụy trang (NMI: Nonmaskable inteưupt) tạm thời dừng xử lý và chuyển mọi tập trung của hệ thống vào lỗi. NM1 gây ra một thủ tục trong ROM cần được thực thi, ở vài hệ thống IBM cũ hơn, thủ tục kiểm tra chẵn lẻ ROM tạm thời dừng hẳn CPU. Trong trường hợp đó. hệ thống khóa lại và bạn cần phải thực hiện việc xác lập lại phần cứng hoặc một tiên trình tắc mở để khởi động lại hệ thống. Thật không may là mọi tập tin bạn chưa kịp lưu đều bị mất trong tiến trình này.
Hầu hết các hệ thống không tạm thời dừng hẳn CPU lại khi một lỗi chẵn lẻ dược phát hiện; thay vào đó họ cho bạn sự lựa chọn khởi động lại hệ thống hoặc tiếp tục như thể không có gì xảy ra. Ngoài ra. những hệ thống này có thể hiển thị thông báo lỗi chẵn lẻ ở một định dạng khác từ IBM. mặc dù thông tin được trình bày cơ bản là giống nhau. Ví dụ hầu hết các hệ thống với một BIOS Phoenix hiển thị một trong những thông báo:
Ngắt chẵn lẻ bộ nhớ ở xxxx: xxxx
Loại(S) Tắt NMI. Loại(R)Khởi động lại phím khác để tiếp tục
hoặc
Ngắt chẵn lẻ card I/O ở xxxx: xxxx
Loại(S)Tắt NMI, Loại(R) Khởi động lại, phím khác để tiếp tục
Dòng đầu của hai thông báo chỉ ra một lỗi chẵn lẻ của bo mạch chủ (kiểm tra chẵn lẻ 1) và dòng thứ hai cho biết một lỗi chẵn lẻ của Slot mở rộng (kiểm tra chẵn lẻ 2). Lưu ý rằng địa chỉ được đưa ra dưới dạng xxxx:xxxx cho các lỗi bộ nhớ trong phân đoạn: dạng chừa trống hơn là địa chỉ dòng kẻ thẳng, chẳng hạn như với thông báo lỗi của IBM. Phân đoạn: dạng địa chỉ chừa trống vẫn cho bạn vị trí của lỗi đến giải quyết của một byte đơn.
Bạn có ba cách để làm sau khi xem thông báo lỗi này:
■ Bạn có thể nhấn phím s để tắt lệnh kiểm tra chẵn lẻ và bất đầu lại hoạt động của hệ thống tại nơi mà kiểm tra chẵn lẻ đầu tiên diễn ra.
■ Bạn có thể nhấn R buộc hệ thống khởi động lại, mất bất kỳ công việc nào chưa lưu.
■ Bạn có thể nhấn bất kì phím nào để hệ thống bắt đầu lại hoạt động với chức năng kiểm tra chẵn lẻ vẫn còn bật.
Nếu rắc rối xảy ra cùng giống như việc gây ra sự gián đoạn kiểm tra chẵn lẻ khác. Thường nên cẩn trọng khi nhấn phím s, vô hiệu hoá kiểm tra chẵn lẻ, do đó bạn có thể lưu lại công việc. Trong trường hợp này, tốt nhất là lưu mọi thứ cần thiết vào đĩa mềm nhằm ngăn chặn việc hóng đĩa cứng có thể xảy ra. Bạn cũng nên tránh ghi đè lên file cũ (mặc dù vẫn còn hoạt động tốt) bởi vì bạn có thể đang lưu một file hóng do bộ nhớ hỏng. Bởi vì kiểm tra chẵn lẻ đã được vô hiệu hoá các vận hành đã lưu sẽ không bị gián đoạn nữa. Sau đó bạn tắt hệ thống khởi động lại và chạy) khi bất cứ phần mềm chuẩn đoán bộ nhớ nào bạn có để thử và theo dấu lỗi. Trong một số trường hợp, POST tìm thấy lỗi ở lần khởi động lại kế tiếp, nhưng thường bạn cần phải chạy một chương trình chuẩn đoán tinh vi có lẽ trong một chế độ liên tục để định vị lỗi.
Hệ thống với một AMI BIOS hiển thị thông báo lỗi chẵn lẻ dưới một trong các hình thức sau:
Địa chỉ lỗi chẵn lẻ trên bo mạch chủ (HEX) = (xxxxx)
hoặc
Địa chỉ lỗi chẵn lẻ ngoài bo mạch chủ (HEX) = (xxxxx)
Các thông báo này cho thấy một lỗi trong bộ nhớ đã xảy ra trong quá trình POST và việc hỏng hóc ở các địa chỉ được chỉ định. Dòng đầu tiên cho thấy rằng lỗi đã xảy ra trên bo mạch chủ và thông báo thứ hai cho biết lỗi ở card tiếp hợp ở Slot mở rộng. AMI BIOS cùng có thể hiển thị các lỗi bộ nhớ ở một trong các phương thức sau:
Lỗi chẵn lẻ bộ nhớ ở xxxxx
hoặc
Lỗi chẵn lẻ card I/O ở xxxxx
Các thông báo này cho thấy một lỗi bộ nhớ đã xảy ra tại địa chỉ đã nêu trong quá trình hoạt động bình thường. Dòng thứ nhất cho thấy một lỗi bộ nhớ bo mạch chủ và dòng thứ hai biểu thị một lỗi bộ nhớ thiết bị tiếp hợp Slot mở rộng.
Mặc dù nhiều hệ thống cho phép bạn tiếp tục quy trình sau một lỗi chẵn lẻ và thậm chí cho phép vô hiệu hoá hơn nữa chức năng kiểm tra chẵn lẻ, tiếp tục sử dụng hệ thống sau khi phát hiện lỗi chẵn lẻ có thể gây nguy hiểm cho hệ thống. Ý tưởng để bạn tiếp tục sử dụng phương pháp này cho bạn thời gian lưu lại bất kỳ công việc chưa lưu trước khi bạn chuẩn đoán và bảo dưỡng lại máy tính, nhưng hãy cẩn thận cách bạn làm những việc này.
Lưu ý rằng các thông báo này có thể biến đổi phụ thuộc không chi vào ROM BIOS mà còn vào hệ điều hành của bạn. Các hệ điều hành ở chế độ bảo vệ, chẳng hạn như hầu hết các phiên bản Window, chặn các lỗi này và chạy chương trình bộ quản lý riêng của chúng, hiển thị một thông báo khác với cái ROM đã hiển thị. Thông báo có thể kết hợp với màn hình màu xanh hoặc có thể với một bầy lỗi, nhưng nó thường chỉ ra rằng đó là bộ nhớ hay các chẵn lẻ liên quan.
Cảnh báo :
Khi bạn được cảnh báo vê’ một lỗi chẵn lẻ bộ nhớ. hãy nhớ việc kiểm tra chẵn lẻ đang báo cho bạn bộ nhớ đã bị hóng. Bạn có muốn lưu để các dữ liệu có tiềm năng hóng lên trên các lập tin tốt sẵn có từ trước không? Chắc chắn không! Hãy chắc chắn rằng bạn lưu tập tin đang làm dưới một tên khác. Ngoài ra, sau một lỗi chẵn lẻ, chỉ lưu vào 0 đĩa mềm nếu có thể và tránh lưu vào đĩa cứng, có một cơ hội mong manh rằng đĩa cứng có thể bị hỏng nếu bạn lưu các nội dung của bộ nhớ hỏng vào.
Sau khi lưu công việc của bạn. xác định nguyên nhân của lỗi chẵn lẻ và sửa hệ thống. Bạn có thể muốn sử dụng tùy chọn tắt chức năng kiểm tra chẵn lẻ và chi cần tiếp tục sử dụng hệ thống như thể không có hỏng hóc. Làm như thế giống như nới bớt bộ phận đồng hồ hiển thị áp suất dầu trên xe bằng một lỗ rõ nên áp suất dầu sẽ không còn là vấn đề với bạn nữa!
Mã sửa lỗi (ECC)
ECC (Error-correcting Code) đà tiến một bước dài trong việc phát hiện lỗi chẵn lẻ. Thay vì chi phát hiện một lỗi. ECC cho phép một lỗi bit đơn được sửa, điều đó có nghĩa là hệ thống có thể tiếp tục mà không có sự gián đoạn và không có việc hỏng dữ liệu. ECC, được bổ sung trong hầu hết các máy tính cá nhân, chỉ có thể phát hiện, không sửa các lỗi bit đôi. Bởi vi nghiên cứu đã chỉ ra rằng khoảng 98% lỗi bộ nhớ là trạng thái bit đơn, loại ECC được sử dụng phổ thông nhất là loại mà trong đó bộ điều khiển bộ nhớ kèm theo phát hiện và sửa các lỗi bit đơn trong một từ dữ liệu truy cập (các lỗi bit đôi có thể được phát hiện nhưng không được sửa chữa). Loại ECC này được biết như là phát hiện lỗi bit đôi sửa lỗi bit đơn (SEC-DED: single- bit error correction double-bit error detection) và đòi hỏi 7 bit kiêm ưa cộng thêm với 32 bit trong một hệ thống 4 byte và 8 bit kiểm tra cộng thêm với 64 bit trong một hệ thống 8 byte. Nếu hệ thống sử dụng SIMM, hai SIMM 36 bit (chằn lẻ) được thêm vào mỗi dãy (để có tổng cộng 72 bit), và ECC được thực hiện ờ cấp dãy. Nếu hệ thống sử dụng DIMM, một DIMM 72-bit đơn chẵn lẻ/ECC được sử dụng như là một dãy và cung cấp các bit thêm. RIMM được gắn thành từng cặp hoặc đơn lẻ tùy thuộc vào chipset và bo mạch chủ. Chúng phải là những phiên bản 18 bit nếu muốn chẵn lẻ/ ECC.
ECC đòi hỏi bộ điều khiển bộ nhớ tính toán các bit kiểm tra trong hoạt động ghi bộ nhớ, thực hiện một so sánh giữa đọc và tính toán các bit kiểm tra trong hoạt động đọc, nếu cần thiết thì sửa các bit hỏng. Nguvên lý thiết kế ECC cộng thêm trong bộ điều khiển bộ nhớ không mang ý nghĩa lắm ở thời buổi thiết kế VLSI tốc độ cao, không đắt đỏ này nhưng thực sự ECC ảnh hưởng đến tốc độ bộ nhớ khi ghi. Điều này là bởi vì hoạt động phải được định thời gian để chờ sự tính toán của các bit kiểm tra và các hoạt động đọc khi hệ thống chờ dữ liệu được sửa. Trong một tiến trình ghi từ từng phần, trước hết toàn bộ từ phải được đọc, ghi lại byte (hoặc các byte) ảnh hưởng và sau đó mới tính toán lại các bit kiểm tra mới. Điều này chuyển các hoạt động ghi từ từng phần sang ghi sửa đôi đọc chậm hơn. May mắn thay, thành công của tiến trình này là rất nhỏ. Khoảng chừng vài phần trăm là tối đa, vì vậy sự thỏa hiệp để tăng độ tin cậy là tốt nhất.
Hầu hết các lỗi bộ nhớ là một bản chất của bit đơn mà ECC có thể sửa lỗi được. Kết hợp kỹ thuật chịu đựng sai sót (fault-tolerant) này là cung cấp tin cậy hệ thống cao và tính ích lợi kèm theo. Một hệ thống cơ số ECC là một lựa chọn tốt cho các máy chủ, workstation hay các ứng dụng trọng yếu mà trong đó chi phí của một lỗi bộ nhớ tiềm tàng lại vượt quá chi phí của bộ nhớ cộng thêm và hệ thống để sửa chữa chúng, cùng với việc bảo đảm rằng chúng không làm giám giá trị độ tin cậy hệ thống. Nếu coi trọng dữ liệu và sử dụng hệ thống của bạn cho những nhiệm vụ quan trọng bạn cần phải có bộ nhớ ECC.