חדשות היום

המענה למערכות לזמן אמת בריבוי ליבות וריבוי מערכות הפעלה ע”י Embedded Virtualization

Chris Grujon, TenAsys

המונח  Virtualization  מובן בצורה שונה על ידי משתמשים העוסקים בישומים שונים. רוב צורות הוירטואליזציה שבה משתמשות מחלקות IT אינן מענינות מתכננים של מערכות משובצות משום שמערכות אלה אינן מבטיחות שהעיבוד של תהליכים יהיה דטרמיניסטי. כלומר אם נרצה להריץ מעל מערכות וירטואליזציה כאלה – כמו VMware ,VirtualPC ,Xen  ודומיהן  קוד שיבצע משימות טיפוסיות של מערכת משובצת, התהליכים לא יוכלו לעמוד בקריטריונים של זמן אמת:  latency  (השהיה)  ו-jitter  (שונות ההשהיה) נמוכים.

תחת זו, עבור מערכות של ליבה אחת או יותר, הדרך לספק דרישות אלה היא  לחלק את משאבי המערכת – זכרון, ליבות, פסיקות –  למספר סביבות  כך שכל סביבה רצה מעל המשאבים הטבעיים שלה (ה”סיליקון” שלה) ולא מעל קוד שמבצע דימוי של משאבים.

תחילתה של טכנולוגית הוירטואליזציה  היא הרעיון שמערכת הפעלה לזמן אמת  RTOS  עובדת לצידה של מערכת הפעלה לשימוש כללי  GPOS  כגון  Windows  –  וכל זאת על פלטפורמת מחשוב אחת. ב-EmbeddedVirtualization יוצרים סביבה נפרדת  לכל אחת ממערכת ההפעלה וליישומים הרצים מעליהן כאילו רצו על מחשבים נפרדים. היתרון בכך הוא ברור: המערכת פשוטה יותר, זולה יותר ובעלת אמינות טובה יותר עקב מיעוט הרכיבים.

כבר בשנות ה-80 של המאה הקודמת, בוני מערכות החלו להשתמש ב-PC  כאבן בנין. הישומים הראשונים היו פשוטים  והתרכזו בניצול העלות הנמוכה יותר של ה-PC לעומת פלטפורמות מחשוב שהיו מקובלות באותה התקופה.

במקביל להתפתחות ה-PC פותחו תוכנות יישום רבות ובהדרגה נוצר סטנדרט של ממשק אדם מכונה (HMI). הסטנדרט הזה איפשר למפתחי מכשירים שהשתמשו ב-PC  לפשט את ההכנה לתפעול (setup), התפעול עצמו () והתחזוקה  (maintenance)  – של המכשירים שפותחו. יחד עם זאת כיון ש-Windows  אינה בעלת יכולות של  RTOS  הוסיפו המתכננים מחשב שלם נוסף שמריץ RTOS למטרה זו. כפילות מחשוב זו, הביאה לרעיון לפשט ולרכז את כל המחשוב  ב-PC  אחד. הרצת שתי מערכות הפעלה על מחשב אחד לא היתה כבר אז רעיון חדש. כבר 10 שנים קודם לכן רצו  בסביבת מחשבי,  Mainframe מעל שכבת תוכנה על אותו המחשב – מספר מערכות הפעלה והתקשרו ביניהן ועם החומרה בדומה למה שמבוצע היום על מעבדים מודרניים.

הבעיה המרכזית  היתה שהפרדת התוכנה מהחומרה על שכבת תוכנת וריטואליזציה הביאה לכך שכל הגישות של תוכנת הישום למשאבי  I/O  כבר לא היו דטרמיניסטיים.

Embedded

Virtualization נדרש לספק דטרמיניסטיות גם כשעובדים במספר מערכות הפעלה.

המשמעות של הדרישה היא שיש למצוא דרך לחלק את משאבי המחשב כך שכל מערכת ההפעלה  לזמן אמת  (RTOS) תקבל  גישה ישירה  ל-I/O  ולInterrupts- Windows  כמערכת הפעלה  GPOS  אינה מאפשרת גישה כזו.

ככלל – מערכת כמו  Windows  תופשת פיקוד תוך כדי תהליך ההתקנה על כל התקני ה-I/O. היה צורך לפתח דרך שבה ל”שמור” על  משאבים ו-I/O  מפני ה”השתלטות” של Windows. וכיון שטכנולוגיה כזו היתה צריכה לפעול עוד בסוף שנות התשעים של המאה הקודמת, כשמעבדים היו בעלי ליבה אחת – היה צורך גם לפתח דרך מהירה של “קפיצת” ה-Context מ-GPOS ל-RTOS. כפי שמומחש באיור מספר 1.

תקשורת בין תהליכים (Processes)  מאפשרת תיאום בין משימות (Tasks)  

כאשר כמה מע”ה רצות על מחשב אחד  כל אחד בסביבה שלו – יש צורך להעביר נתונים ביניהן. זה יכול להתבצע בפשטות על ידי שמירת אזור מסוים בזכרון, אבל דורש טיפול מתמשך על ידי היישומים עצמם שיהפוך מסובך עקב הדרישה שהודעות יועברו ויקראו במועדים מסוימים. תהליך התקשורת צריך להבנות כך  שהודעה תועבר במהירות כשנדרש. העברת ההודעה צרכה לקחת בחשבון את העדיפות (priority)  של ההודעה ביחס למשימות  (tasks) אחרות – כדי שההודעות יגיעו בזמן ובסדר הנכונים. הדרישה הזו חשובה במיוחד בתקשורת בין GPOS  ל-RTOS: ארוע בעדיפות נמוכה אסור שיפסיק משימה בעדיפות גבוהה.

ריבוי ליבות מקל על חלוקה והפרדה פונקציונליים

הימצאות מעבדים מרובי ליבות שינו כמה מהכללים: כל מע”ה היא “בעלת” ליבה אחת או יותר. אין  הכרח  לתת למעבד אחד להריץ כמה מע”ה.  יש לשם לב
ש-Windows  למשל משתלט על כל הליבות מזמן ההתקנה שלה.

הדרך לעשות את החלוקה היא “לומר” ל-Windows  בזמן עליתה איזה ליבות אינן זמינות עבורה. זה מאפשר למשל במעבד בן 4 ליבות קונפיגורציות כמו  1:3  2:2 3:1  (ראה איור 2).

זה מאפשר למתכנן להתאים את דרישות כח החישוב של ה-GPOS וה-RTOS  לפי הדרישות מהמוצר. במוצר בו נדרשת פעילות זמן אמת מעטה ותוכנה “כבדה” בחלק של Windows  יש הגיון להקצות רק ליבה אחת ל-RTOS מתוך הארבע. אולם אם המוצר מבצע בקרה על מספר התקני  I/O  שפועלים במקביל  אבל ה  HMI  הוא פשוט – אזי ה-RTOS  ראוי ש”יקבל”  את רוב הליבות.

עם ריבוי הליבות יש צורך לאפשר לכל ליבה של  RTOS  להתקשר עם GPOS  וגם עם ליבות  RTOS  אחרות. במילים אחרות נדרשת רשת תקשורת שכל מע”ה בכל ליבה  יכולה לתקשר עם אחרת. רשת כזו  צרכה לשמר עבור כל  RTOS את הדטרמיניסטיות – כלומר לא לאפשר שהתקשורת הנ”ל תגרום למשימות לא להתבצע במועד או בסדר הנדרשים.

וירטואליזציה מאפשרת תקשורת דטרמיניסטית
בין פלטפורמות

סביבת EmbeddedVirtualization  שהוכיחה עצמה ביישומים מטיפוס   MissionCritical  היא משפחת מערכות ההפעלה לזמן אמת  INtime  שמפותחת על ידי TenAsys. זוהי חברה אמריקאית שרכשה את כל זכויות מערכות ההפעלה לזמן אמת  RMX  מתוצרת חברת אינטל, שהיו פופולריות מאד בארץ ובעולם החל משנות ה-80 של המאה הקודמת.  המרכיבים הבסיסיים ב-Kernel  של  INtime  לקוחים מ-RMX  ואליהם התווספו במשך השנים יכולות רבות כמו “אימוץ” סביבת פיתוח משולבת Windows ותכונות רבות שנובעות מהתפתחות מערכות ההפעלה של Microsoft והתפתחות המעבדים ממשפחת  X-86  של אינטל ומתחריה.

הטכנולוגיה שפיתחה TenAsys מבצעת הפרדת משאבים  כדי לאפשר ל-RTOS  ול-GPOS לרוץ האחת ליד השניה.  התקשורת בין הליבות השונות מבוצעת על ידי רשת הקרויה :  (GlobalObjectNetwork). הרשת בנויה מעל מכניזם תקשורת שמאפשר לכמה מערכות הפעלה להתקשר האחת לרעותה ברמת התהליך  (process)  בצורה דטרמיניסטית. פיתוח נוסף של  GOBSnet  הוא הרחבתו לפעול מעל  Ethernet – וגם כאן בצורה דטרמיניסטית. אם נחלק את היישום ל-FunctionalBlocks – כל  Block  כזה יכול להיות על ליבה באחד מהמחשבים המחוברים ביניהם ברשת  Ethernet  או באותו המחשב עצמו. זה מאפשר לבנות (כפי שמוצג באיור 3)  מערכות מבוזרות לפי שיקולים של מרחק  (שמביא לביזור) או יכולת עיבוד (שמביאה לכמות הליבות בה מוטען היישום).

כל היכולות הללו מוטמעות בתוך INtime  ומאפשרות ליצרנים  לבנות  משפחות של מוצרים במחירים שונים וביכולות שונות  ללא שינוי תוכנה.

פתרונות EmbeddedVirtualization  למימוש מערכות לזמן אמת  התפתחו מזה למעלה מעשור. אולם הפוטנציאל המלא של התפתחויות אלו מגיע עכשיו לידי מימוש עם שכיחות של מעבדים מרובי ליבות ועם תפישת GlobalObjectNetworking   שהופכת להיות ה-Standard בבנית מערכות מרובות מערכות הפעלה.

  INtime  מאפשרת מימוש מערכות כאלה כבר היום.

על המחבר

ChrisGrujon  הינו  MarketingDirector  בחברת  TenAsys. החברה מיוצגת בישראל מזה 8 שנים.

 

תגובות סגורות