חדשות היום
אסף גליל

התאמת ישום של תוכנת זמן אמת לטכנולוגיות חדשות באמצעות eVM

אסף גלילמאת: אסף גליל

במהלך חיים של מוצרים וכמובן גם של מוצרים משובצי מחשב, ישנן התפתחויות שנובעות מדרישות משתנות של השוק, התאמה לעלויות ועוד.
לעיתים כהמשך של מוצר מוצלח, שהושקעו בו שנות פיתוח רבות נולד מוצר המשך ששואף לנצל את מרכיב הפיתוח שכבר הוכיח את עצמו, ויחד עם זה לתת ללקוח פונקציונליות חדשה. כלומר המתכננים רוצים לשמר כמה שאפשר את הפונקציונליות הבסיסית, להוסיף פונקציונליות חדשה ובמקביל לכל אלה – לעבור לחומרת מחשב מודרנית.
נדרשות שתי יכולות בהתפתחות כזו:
1 – וירטואליזציה: היכולת להריץ אותה תוכנה על חומרה חדשה.
2 – תוספת תכונות ללא שינוי בקוד של התוכנה הקיימת.
קיימים היום פתרונות שמבצעים וירטואליזציה שמעליה אפשר להריץ Guest Operating Systems. זוהי שכבת תוכנה הקרויה Hypervisor שמאפשרת ל-Guest OS “לחשוב” שעומד לרשותה CPU “פרטי”. מערכות כאלה כמו VMware או Hyper V של מיקרוסופט, נועדו להריץ GPOS
(General Purpose Operating Systems) כמו Linux ו\או Windows כ-Guest OS, ולא יועדו למע”ה (Real Time Operating Systems) כמו VX Works Windows CE
או מערכות אחרות לזמן אמת.
לצורך מענה לוירטואליזציה של מערכות לזמן אמת יש צורך לדאוג לשמר את יכולות ה-Real Time של התוכנה – כשהיא עוברת מהרצה על CPU “פרטי” לריצה כ-Guest. מכאן ה-Hypervisor חייב בעצמו להיות בעל תכונות זמן אמת. בנוסף, מערכות כאלה חייבות לאפשר להתקנים מסוגים שונים ולא רק מסך, מקלדת, עכבר, דיסק וכרטיס רשת לקבל את מלוא היכולות של המחשב ללא השהיות.
eVM של TenAsys מבצע בדיוק את זה. זוהי תוכנת Hypervisor שמשתמשת במע”ה לזמן אמת INtime ונעזרת ביכולות Virtual Technology של אינטל – VT-X ו-VT-D eVM
רץ בליבה אחת, ויתר הליבות מריצות Windows שהינה ה-Host.

כמה מילים על
INtime for Windows
זוהי מערכת הפעלה של TenAsys לזמן אמת שיכולה לעבוד על ליבה אחת או יותר על מחשב שמריץ מע”ה Windows. היישומים שכותב המשתמש באמצעות כלי הפיתוח Visual Studio מתקשרים עם מע”ה Windows באמצעות shared Memory או Virtual LAN port – ובכך מאפשרים ליישום להכיל שני מרכיבים: האחד של זמן אמת, והשני של מחשוב רגיל. שני חלקי היישום הללו מתקשרים ומסנכרנים ביניהם. באיור מספר 1 מתוארת מע”ה INtime For Windows שרצה על ליבה אחת בעוד ש-Windows רץ על ליבה שניה. כל ישום שנכתב מעל INtime בשימוש ב-Visual Studio מקבל “טיפול” של Kernel לזמן אמת, ומייצר יישומים שעומדים ב-Low Latency ו-Low Jitter.

מבנה ה-eVM
TenAsys בנתה ישום מיוחד מעל INtime. הישום משתמש בפקודות הוירטואליזציה VT-x ו-VT-d שנמצאות במעבדים חדשים. פקודות אלה מבצעות Hardware Assisted .Virtualization
באיור מספר 2 מתוארות מערכת eVM. הדמיון בין איור זה לאיור מספר 1 אינו מקרי. eVM הינו כאמור ישום ב-INtime שמפעיל את פקודות הוירטואליזציה של המעבד ומאפשר לישום אחר ב-INtime להיות תוכנת ה-Guest. כלי הקונפיגורציה של eVM הם subset של כלי הקונפיגורציה ב-INtime – לצורך הישום הספציפי של הרצת שכבת Real Time Hypervisor.
שכבת הוירטואליזציה – ה-eVM – מתמקדת בהספקת התכונות הבאות ל-Guest OS
רוב מוצרי ה-Embedded מפעילים תוכנה שמפעילה התקנים שעבורם נדרשים זמן תגובה קצר וקבוע לפסיקות (Interrupts). אלה הם התקנים ששונים בין מוצר למשנהו ומתוארים באיור מספר 2 כ-Real I/O. התקני חומרה אלה מטופלים ב-eVM ישירות על ידי ה-Guest OS. גם התקנים ממשיים כאלה, ניתן להחליף בהתקני חומרה אחרים. זהו מצב שקורה כשלא ניתן כבר להשיג את החומרה הישנה.
הפעולה הראשונה באמצעות תוכנת הקונפיגרציה של ה-eVM היא ל”העביר” את ההתקן והפסיקות שלו לטיפול ה-eVM. מאותו הרגע שבו הועבר ההתקן ל-eVM התוכנה הקיימת ב-Guest מטפלת בהתקן. השינוי היחיד לעומת הביצועים כשתוכנה זו רצה על מעבד “פרטי”, הוא תוספת של כ-5 מיקרו שניות ל-Interrupt Latency (תלוי
בסוג ה-CPU אבל קבוע לאורך זמן) וזאת עקב הצורך בטיפול של ה-Real Time Hypervisor בפסיקה בטרם הגיעה ל-Guest OS.
כל ההתקנים האחרים שלא הועברו – ממשיכים להיות מטופלים על ידי Windows. עבור פניה של תוכנת ה-Guest להתקנים כמו דיסק, מסך, לוח מקשים, עכבר, חיבור לרשת נתונים מנהלית – נבנו בתוך ה-eVM – בתוך INtime שמריץ אותו ובשיתוף עם תהליכים ב-Windows – קטעי תוכנה המסומנים בשרטוט כ-Virtual I/O. להתקנים הסטנדרטים יכול המשתמש להוסיף התקנים “וירטואליים” שיחליפו התקנים שאליהם פונה ה-Guest. הגדרות ההתקנים – עבור מי מהם מבצעים וירטואליזציה – מבוצעות דרך כלי קונפיגורציה מיוחד. חשוב לציין שהדיסק של תוכנת ה-Guest, שממנו הוא מבצע את ה-boot שלו, ואליו הוא כותב – מוגדר כ-Directory מסוים – שניתן לשינוי – על הדיסק של Windows.

מעורבות Windows בפתרון הכולל למוצר
כאמור, Windows מספק התקנים וירטואליים לתוכנת ה-Guest. ניתן גם להוסיף ליישום קטעי תוכנה שרצים על Windows ומתקשרים עם תוכנת ה-Guest באמצעות Virtual LAN או Shared Memory. שיפורים כאלה יכולים לתת למוצר הישן פנים חדשות ותחרותיות לטכנולוגית ממשק אדם מכונה המקובלות היום. שרות נוסף אפשרי הוא דיווח לתוכנת ה-Guest על Shutdown או Blue Screen של Windows. במצב כזה Windows במצב של מסך כחול או Shutdown שולח דרך אחד ה-Serial Virtual Ports סדרה של תווים שמפוענחת על ידי תוכנת ה-Guest ומגיבה בהתאם לדרישות המוצר. בדרך כלל התגובה היא Shutdown מסודר של תוכנת ה-Guest במועד האפשרי, ולאחריה Restart למחשב ה-PC. טיפול כזה מוסיף למוצר הבנוי על
ה-eVM יכולת Graceful Degradation – ירידה בשרות בצורה מבוקרת ומתוזמנת.

התקני Ethernet
התקן חשוב ומקובל במוצרי Embedded הוא כרטיס רשת. אם תוכנת ה-Guest פונה לרשת בצורה דטרמיניסטית – כלומר היא דורשת תזמונים מדויקים וקבועים – אז יש להשתמש בכרטיס רשת פיזי שיועבר לטיפול eVM וינוהל על ידי התוכנה ב-Guest. אם לתוכנת הרשת ב-Guest ישנה פונקצית Bridge – ניתן לאפשר ש-Windows יפעל באמצעות אותו כרטיס הרשת.
אם לתוכנת הרשת של ה-Guest יש שימוש ב-Ethernet כרשת להעברת נתונים ללא הקפדה על הדטרמיניסטיות, ניתן לחסוך בכרטיס רשת כדוגמת זה שרץ ב-Guest המקורי, ולהשתמש ב-Virtual Ethernet Connection ל-Windows – ובנוסף לבצע Windows Ethernet Bridge עם כרטיס הרשת שמגיע עם ה-PC ומופעל על ידי Windows.
באמצעות אחת משתי הדרכים שתוארו יכול ה-eVM לאפשר לשתי מע”ה להשתמש בכרטיס רשת יחיד.

eVM מרחיבה את קשת הפתרונות של TenAsys למערכות Embedded
כאמור הפתרון הבסיסי של eVM הוא ליבה אחת “מוקדשת” ל-Guest והיתר לWindows. ה-Guest OS יכול להיות Embedded Linux ,VX works ,Windows CE ,QNX iTron Rmon3, ובפועל בשינויים קטנים כל מערכת RTOS אחרת לטכנולוגיית X86. אם רוצים להוסיף פונקציונליות חדשה למוצר הישן ניתן לעיתים להכנס לקוד הישן של ה-Guest ולהוסיף שם. לעיתים שינוי כזה איננו אפשרי. למשל שיפור GUI או עבודה ב-Data Base מתקדם, הגיוני שיפותחו מעל מרכיב ה-Windows שבינו לבין ה-Guest יש ממשק Ethernet וירטואלי, או Shared Memory.
הוספת יכולות Real Time ליישום – לעיתים אינה אפשרית טכנית להתבצע ב-Guest, או שאין מוטיבציה\יכולת לשנות את ה-Guest. במקרה זה כותבים את התוספת על ליבות נוספות שמיעדים ל INtime.
עם ההרחבות האלה – הופך הפתרון
eVM/INtime לרחב ביותר. הוא מכסה מספר רב של דרישות. איור מספר 3 מתאר את הפיתרון של TenAsys בתלות בדרישות מהמוצר שבפיתוח.
לסיכום
eVM משמר את יכולות הביצוע בזמן אמת של תוכנת ה-Guest ומצטרף לפתרונות
ה-Embedded שמציעה TenAsys. הפתרונות איפשרו בעבר פיתוחים מעל INtime עם או בלי Windows וכיום מאפשרים גם “יבוא” של קוד ממערכות ותיקות ללא שינוי – באמצעות ה-eVM. ההצטרפות של
ה-eVM מתאפשר גם שימוש בקוד שפותח בעבר מעל מערכת RTOS כלשהיא ל-X86.מיזוגו לטכנולוגיות האחרות של TenAsys מאפשר לו “פריחה חדשה” כחלק ממוצר חדש.

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