זיכרון RAM מסוים, או זיכרון אקראי, מפורסם כזיכרון ECC. ECC ראשי תיבות של Error Correcting Code והוא תהליך של זיהוי ותיקון שגיאות בזיכרון. שגיאות ב-RAM עלולות לגרום לשחיתות או לשינוי בנתונים, מה שעלול לגרום להתרסקות המכשיר ואפילו לפרצות אבטחה. זיכרון RAM של ECC בדרך כלל אינו תואם לחומרת PC ברמת הצרכן.
מהן שגיאות זיכרון?
שגיאות זיכרון הן בעיה שבה הערך המאוחסן בזיכרון משתנה. הנתונים ב-RAM מאוחסנים בבינארי, עם ערכים של 1 או 0. אם הערך של 1 עובר ל-0 או להיפך, בתהליך שנקרא "היפוך סיביות", הנתונים המאוחסנים ב-RAM משתנים.
לדוגמה, ניתן להשתמש בביט שהשתנה כדי לאחסן ערך בגיליון אלקטרוני. במקרה זה, ניתן לשנות את הערך בגיליון האלקטרוני למספר שונה לחלוטין אשר ישפיע על התוצאה עבור כל חישוב, למשל שינוי התחזיות הכלכליות של א עֵסֶק. במקרים אחרים, הביט שהשתנה יכול להשבית תכונת אבטחה, או ליצור שגיאת הקלדה שמשנה את אופן הפעלת התוכנית. קשה מאוד לזהות ולפתור את שתי הדוגמאות הללו ללא שימוש בזיכרון ECC. בתרחיש קיצוני, היפוך סיביות בודד עלול לגרום לשגיאה קטסטרופלית שגורמת לקריסת מערכת.
להיפוך סיביות יש סיבות אפשריות רבות, הסיבה השכיחה ביותר היא תוצאה של קרינת רקע, הנגרמת בעיקר על ידי נויטרונים שנוצרו על ידי אירועי קרניים קוסמיות. קרן קוסמית היא חלקיק באנרגיה גבוהה, בדרך כלל פרוטון, שנע כמעט במהירות האור. הם נפלטים על ידי גופי כוכבים כולל השמש וחפצים אסטרונומיים אחרים באנרגיה גבוהה. כאשר קרן קוסמית פוגעת באטום נוצרת גשם של נויטרונים וחלקיקים תת-אטומיים אחרים, לנייטרונים הללו יש אינטראקציות משניות.
אינטראקציות ניוטרונים משניות אלו נחשבות למקור העיקרי לשגיאות היפוך סיביות. קרניים קוסמיות שכיחות יותר בגבהים גבוהים יותר עם עלייה של פי 3.5 ב-1.5 ק"מ מעל פני הים ועלייה של פי 300 בגובה השיוט של מטוסי נוסעים. סיכון מוגבר זה בגובה מחייב אמצעי אמינות נוספים.
עד כמה שגיאות זיכרון נפוצות?
רוב האנשים לא רואים את המחשבים שלהם קורסים כל יום, אז קל לחשוב שזה בעיקר סיכון תיאורטי. נעשה שימוש במחקר ממרכזי נתונים בקנה מידה גדול כדי לנתח את קצב התקריות של היפוך סיביות. מחקר שביצעה גוגל במרכזי הנתונים שלה הראה שיעור שגיאה של בערך שגיאת סיביות אחת לכל גיגה-בייט של זיכרון RAM כל 1.8 שעות.
משימת Cassini-Huygens של נאסא שהושקה ב-1997 כדי לנסוע לשבתאי הוגדרה עם שני מחשבי טיסה זהים כל אחד עם 2.5 ג'יגה-בייט של זיכרון RAM. במהלך השנתיים וחצי הראשונות למסע, החללית צפתה ב-280 שגיאות של סיביות בודדות ביום. במהלך יום אחד, כאשר קאסיני-הויגנס היה בנתיב של התלקחות שמש, עלייה של פי ארבעה נצפו שגיאות, מה שמספק הוכחה נוספת לכך שהשמש היא הגורם לרוב התהפכות הסיביות נושאים.
היו חששות שהגידול המתמשך בצפיפות של מודולי RAM תוביל לכך שגרסאות מאוחרות יותר של זיכרון RAM יהיו יותר ויותר פגיעות להיפוך סיביות. מחקרים עדכניים יותר הראו שההפך הוא למעשה המקרה, שכן השגיאות ירדו ככל שגיאומטריית התהליך ירדה.
כיצד זיכרון ECC מגן מפני שגיאות?
זיכרון ECC משתמש בקודי תיקון שגיאות, כגון קודי Hamming, כדי לתקן שגיאות של סיביות בודדות ב-RAM. ניתן לזהות שגיאות כפולות אך לא לתקן אותן. קודי תיקון שגיאות הפטיש פועלים באמצעות מערך של סיביות זוגיות. יחד ניתן להשתמש בסיביות זוגיות אלה כדי לזהות אם סיביות נתונים השתנו. אם ביט מזוהה כמתהפך, הוא משתנה בחזרה אוטומטית.
טיפ: שגיאת סיביות בודדת היא תקרית של היפוך סיביות כאשר רק ביט בודד מתהפך. בשגיאות double0bit, שני סיביות הופכים. אין צורך להעיף את שני הביטים באותה תקרית, ההיפוך השני צריך להתרחש רק לפני שהביט המתהפך הראשון יתוקן.
סיביות זוגיות אחת יותר מהנדרש כלולה בקודי תיקון שגיאות של Hamming. סיביות זוגיות נוספת זו נותנת לקוד את היכולת לזהות את התרחשותן של שגיאות סיביות כפולות, עם זאת, שגיאות אלו לא ניתנות לתיקון.
תהליך ביצוע זיהוי ותיקון השגיאות מתבצע בבקר הזיכרון על גבי מקל ה-RAM.
זמינות ותמיכה לצרכן
רוב חומרת המחשב האישי ברמת הצרכן אינה תומכת בזיכרון ECC. זה חלקית כשיטה להבחנה מלאכותית בין חומרת שרת לחומרה צרכנית. עם זאת, זיכרון RAM של ECC עולה יותר ופועל מעט יותר לאט. בנוסף, היציבות הנוספת שהיא תספק לצרכנים ביתיים היא מינימלית שכן שגיאות היפוך סיביות אינן הגורם העיקרי לקריסות מערכת.
אף אחד מהמעבדים בדרגת הצרכנים והחובבים של אינטל לא תומך בזיכרון ECC, רק המעבדים בדרגת השרת שלו, כמו המעבדים בטווח Xeon. המעבדים בדרגת הצרכן של AMD אינם תומכים ב-ECC, אולם, מעבדי תחנת העבודה ושרתים שלהם, Threadripper ו-EPYC בהתאמה, כן תומכים בזיכרון ECC.