מאת: אוסטין לסה, מעבדות Xilinx. כשמדובר במערכות שהבטיחות היא מאפיין קריטי עבורן (מטוסים, רכבות, מכוניות), או במערכות בקרה תעשייתיות (טחנות רוח, מפעלי קיטור), חייב המתכנן לקחת בחשבון כמה גורמים חשובים. ראשית, עליו לזכור שכשל הוא תמיד בגדר אפשרות – הוא יכול לקרות, ואף יקרה. שנית, כשמתרחש כשל, זוהי המשימה שלנו לוודא שאינו מוביל לפציעה או לקיפוח חיים.
בניגוד למערכות מסחריות שבהן כשל עלול לגרום אי-נוחות או תסכול, כאשר מדובר ביישומים קריטיים לבטיחות עלולות ההשלכות של כשל להיות הרות אסון. על כן, חייב המתכנן של מערכות אל-כשל לבדל את תכנוניו וליישם פילוסופיית תכנון הולמת שתמנע את האפשרות של כשלים, או לפחות תמזער אותה ככל האפשר.
כאשר מדובר בשרת, נתב, מערכת טלפוניה, מתג של טלפון סלולרי או מערכות מסחריות אחרות, התרחשות כשל, לרוב, לא תגרום לפגיעה גופנית או קיפוח חיים. מידת ההחמרה וההקפדה של מערך הכללים שייושם תהיה כמובן תלויה בהיקף השירות (מספר הלקוחות המושפעים) ובסוג השימוש בציוד (מתג טלפון עסקי או מרכז חירום להצלת חיים). בכל מקרה, כאשר מתרחש כשל במערכת שנחשבת לא-קריטית, התוצאה תהיה אובדן שירות: לא נעים, אבל לא נורא. ובכל זאת, מובן שמוניטין של שיעור כשלים (או במילים אחרות, קצב תקלות) נמוך יעזור לחברה לשמור על לקוחות שמחים ומרוצים.
לפני שנעבור לבחון מערכות בהן כשל איננו בגדר אפשרות מתקבלת על הדעת, הבה נבחן לעומק מערכות שבהן כשל איננו גורלי ומשמעו רק אובדן שירות.
מערכות שבהן כשל איננו בגדר אסון
בדרך כלל מתכננים שואפים ליצור תכנונים אמינים ככל האפשר. דמיינו 10,000 מערכות פרוסות בשטח. במצב כזה ניתן לצפות לתלונה אחת על כשל ללקוח כל 174 ימים בממוצע. זהו קו הבסיס – שיעור כשלים בסיסי שאינו מחייב פעולה מיוחדת עבור המערכת אם מדובר במערכת שמורכבת מרכיב אחד בלבד: התקן FPGA מסדרה 7 של זיילינקס בצומת 28 ננומטר. הבעיה היא שאף מערכת איננה מורכבת מרכיב אחד בלבד. ישנם לוחות מעגלים מודפסים, ספקי כוח, מחברים, נורות לד, מתגים ועוד.
מערכת טיפוסית, על כלל הרכיבים הקשורים אליה, תציע תוחלת חיים קצרה בהרבה מזו של התקן FPGA בודד של זיילינקס. מספרים אופיינים נעים בין 1000FIT ל-10,000 FIT כשמדובר במערכות שהתקן FPGA מסדרה 7 מהווה חלק קטן במערכת. זה שווה ערך לשיעור כשלים הנע בין כל 114 שנים במקרה הטוב ו-11.4 שנים במקרה הגרוע, או ארבעה ימים עד פחות מיום בין תלונות לקוחות. שוב, מדובר במערכת שבהן הבטיחות איננה קריטית וכשל יגרום לאי-נוחות אך אין בו כדי סכנה ממשית.
לא לכל הרכיבים יש שיעור כשלים קבוע (CFR). למרבית ההתקנים יש את מה שמכונה “עקומת אמבטיה” – כזו שדפנותיה תלולות ותחתיתה שטוחה – עבור הזמן הממוצע בין כשלים (MTBF). תקופת החיים הראשונה טומנת בחובה יותר כשלים מהתקופה שאחריה, תופעה המכונה בשם “מחלות ילדות”. בדרך כלל ישנו פרק זמן ממושך אחרי התקופה הראשונית הזו שבו יהיה שיעור הכשלים נמוך. פרק זמן זה מכונה “חיי פעולה רגילים” (Normal operating life). ולקראת סוף חייו של הרכיב יגדל שיעור הכשלים – תקופה זו מכונה “סוף החיים”.
חברת זיילינקס מתכננת את מוצריה המסחריים והתעשייתיים לתוחלת חיים מינימלית של 15 שנים. תקופה זו יכולה להתארך או להתקצר בהתאם לטמפרטורה המרבית של צומת המוליכים. נתוני האמינות וההוראות למשתמש יספקו למשתמש את הפרטים הספציפיים עבור ה-FPGAs השונים של זיילינקס.
מערכות שאינן יכולות להסתכן בכשל
למערכת שפעולה משובשת שלה עלולה לסכן את הסביבה או חיי אדם יוגדר תמיד שיעור כשלים מרבי מותר. זו יכולה להיות דרישה מחמירה ביותר אך כיוון שאף מערכת איננה מושלמת ואף תכנון אינו יכול להיות לגמרי בטוח מפני כשלים, קיים מספר, שגם אם הוא קשה להשגה, הוא אפשרי.
כיוון ששיעור כשלי החומרה של הרכיבים גדול מכדי לעמוד בדרישה, יהיה על המתכנן לספק הכפלה (יתירות) עבור כלל הרכיבים, תת-המערכות וספקי הכוח הקריטיים, זאת לצד אמצעים נוספים שיבטיחו היעדר כשלים. מערכות מסוג זה מתוכננות בדרך כלל כך שגם אם הן כושלות, הכשל מתרחש באורח “בטיחותי”.
דמיינו שני מכלולים נפרדים לגמרי שלכל אחד מהם שיעור כשלים של 10,000FIT וכל אחד בודק את השני באמצעות ערוץ תקשורת מוכפל (במקרה זה אולי רק שני UARTs על ארבעה חוטים בכל מערכת). נקודת הכשל היחידה תהיה כעת ארבעת החוטים או ה-UARTs, אך כל כשל כזה יהיה ניתן לאיתור. תת-המכלול לא יהיה מסוגל לתקשר עם תאומו והמערכת תהיה מסוגלת לכבות את הכל באורח מיידי ובטיחותי.
עדיין קיימת האפשרות ששתי המערכת יכשלו בו זמנית. זוהי ההסתברות של כשל של כל אחת מתת-המערכות, כפול עצמה, או כשל אחד בו-זמני אחת ל-130 מיליון שנים. רמת ביצועים כזו תעמוד, מן הסתם, בדרישות.
מתי זה מספיק? מתי אוכל לקבוע כי סיימתי?
לעתים קרובות שוכחים המתכננים שתכנון המתמקד באמינות הוא בעצם משימה אינסופית, אלא אם קובעים יעד ברור ומוגדר. בדוגמאות שהבאנו לעיל, אם שיעור הכשלים של התוכנה (מנויטרונים אטמוספריים) היה 1FIT עבור אלמנט בהתקן XILINX 7 SERIES (זהו השיעור האמיתי עבור מעבד ליבה רכה ™PICOBLAZE), מה אמור המתכנן לעשות כעת? ובכן, הכלל המנחה שאני רואה מסביבי מזה זמן רב הוא שברגע ששיעור כשלים כלשהו נמוך משיעור הכשלים של החומרה, אפשר להכריז על סיום העבודה.
אם המערכת הסופית איננה עומדת בדרישות, נראה כי הארכיטקטורה שלכם שגויה (לדוגמה, אין בה יתירות).
ולשם כך יש סטנדרטים….
למרבה השמחה עומדים כיום לרשות המתכננים סטנדרטים בינלאומיים עבור מערכות תעשייה, תעופה, רכב, רפואה ואחרות. ה-IEC 61508 הוא תקן ה”מטריה” החל על כלל התעשייה ברמה הגבוהה ביותר, ולכל ענף תעשייה יש מערך משנה של תקנים משלו. מה שחשוב לזכור לגבי הסטנדרטים הללו הוא, שאף אחת מיצרניות הרכיבים איננה מאושרת (או ניתנת לאישור) בפני עצמה. כדי לעמוד בתקן יש לאשר את המערכת הסופית ואת כל יצרניותיה.
מי שמנסה לטעון שיש ביכולתו למכור לכם התקן FPGA באישור 26262 (תקן IEC למכוניות) ללא ספק משקר. אין דבר כזה. אותו דבר נכון גם לגבי תקן ה-DO-254 למטוסים. מה שנבדק אל מול הסטנדרט הוא המערכת השלמה הסופית והתכנון שלה, לא הרכיבים. מובן שאם יש התקן FPGA אחד במערכת וזה הכול, יהיה קל מאוד למצוא את שיעור הכשלים. פשוט בודקים ב-UG116 אם מדובר ברכיב של זיילינקס. אך מצב שכזה אינו מתרחש אף פעם, שהרי כל המערכות כוללות יותר מרכיב אחד בלבד.