ארכיטקטורת X86 חוזרת לשוק המערכות המשובצות
14 מאי, 2011
המעבדים מרובי-ליבות החדשים מחזקים את מעמדה של ארכיטקטורת X86 בשוק המערכות המשובצות. חברת TenAsys פיתחה עבורה פתרונות למערכות הפעלה בזמן אמת המאפשרים להשתמש בכלי הפיתוח של מיקרוסופט ולהפחית עלויות
המעבדים מרובי-הליבות מחזקים את מעמדה של ארכיטקטורת X86 בשוק המערכות המשובצות. חברת TenAsys פיתחה עבורה פתרונות למערכות הפעלה בזמן אמת המאפשרים להשתמש בכלי הפיתוח של מיקרוסופט ולהפחית עלויות
* אסף גליל, TenAsys
ארכיטקטורת X86 הינה ארכיטקטורת מחשבים המבוססת על מעבד 8086 של אינטל שיצא לשוק בשנת 1978. מאז נוספו לה גירסאות רבות ומתקדמות יותר, גם מתוצרת אינטל וגם מתוצרת חברות אחרות, כמו AMD למשל.
הדרישה שהדריכה את כל מפתחי הרכיבים החדשים במשפחת X86 היתה תאימות לאחור (Backward Compatibility): כל מעבד חדש נדרש להיות מסוגל להריץ קוד מכונה של מעבדים ישנים יותר. האילוץ הזה הביא לכך שכל מפתח תוכנה יכול היום להשתמש ברמת ה-Object File בתוכנה שפותחה קודם לכן, ובכך לקצר את זמן הפיתוח ולהוזיל עלויות.
ארכיטקטורת X86 נחשבת לארכיטקטורה המצליחה ביותר במספר שווקים, כמו שוק ה-PC, שוק השרתים ועוד. היא משגשגת גם בזכות סביבה עשירה של יצרני כרטיסי חומרה (המספקים מגוון עצום של לוחות-אם) וחברות תוכנה, בראשן Microsoft.
בשוק המערכות המשובצות (Embedded Systems) התמונה שונה, מכיוון שהוא דורש חומרה חסכונית מאוד מבחינת ההספק ובמגוון גדול של ביצועים. לעיתים עוצמת ה-PC גדולה בהרבה מהדרוש למוצר Embedded, ובמקרים אחרים עוצמתו נמוכה בהרבה מהנדרש מהמהערכת המשובצת.
לאחרונה יצאו לשוק מספר משפחות של מעבדים מרובי ליבה בארכיטקטורת X86, הפועלים בהספק נמוך משמעותית ממקביליהם הוותיקים יותר, ומעניקים לארכיטקטורה הזו כושר "כיסוי" של חלקים גדולים יותר משוק ה-Embedded.
דרישות ממערכת ההפעלה
בבניית תוכנה למערכות Embedded נדרשות אחת או שתיים מהתכונות הבאות:
- רובסטיות (Robustness): מכשירי Embedded רבים מנהלים התקנים ללא מעורבות של מפעיל אנושי, ולכן המכשיר צריך להיות בעל יכולת התאוששות מהירה לאחר הופעת בעיות תוכנה וחומרה.
- דטרמיניזם (Determinism): חלק מההתקנים המופעלים באמצעות מערכת משובצת דורשים תגובה מהירה חסומה בזמן. זוהי תכונה שניתן להשיג רק במערכת הפעלה שתוכננה כמערכת זמן אמת, הכוללת מנגנוני Priority Based Preemption, כלומר הפסקה מיידית (לעיתים בתוך מיקרו-שניות בודדות), של מטלה המצויה בעדיפות נמוכה, לטובת מטלה בעדיפות גבוהה יותר הממתינה לקבלת שירות.
כדי לספק את שתי התכונות הללו, מוצעות כמה מערכות הפעלה ייעודיות שלא נמצאות בשוק ה-PC הביתי. בדרך כלל הן כוללות סביבת פיתוח ייחודית המוכרת רק למפתחי מערכות זמן אמת, ואשר קשה יחסית להשיג עבורה תוכנות חופשיות לשימוש, מכיוון שבשוק ה- Embedded התוכנה היא בדרך-כלל רכושו של יצרן המוצר הסופי.
INtime של TenAsys
חברת TenAsys פיתחה פיתרון עבור שוק המערכות המשובצות הנהנה גם מיתרונות הזמינות של תוכנות מתחום ה-PC.
זוהי משפחת מערכות ההפעלה INtime, הכוללת שתי מערכות "בנות": INtime For Windows ו-Distributed INtime.
הגרסה הראשונה שלה יצאה בשנת 1997, ומאז היא המשיכה להתפתח במקביל להתפתחויות שהתרחשו במוצרים של אינטל ומיקרוסופט.
סביבת פיתוח וריצה
סביבת הפיתוח של שתי מערכות ההפעלה היא Visual Studio של מיקרוסופט, שבה משתמשים מפתחי תוכנה למחשבים ביתיים, שרתים ועוד. ניתן להשתמש בכל הגירסאות, כולל VS 2010 החדשה ביותר.
התוכנה המפותחת רצה על חומרת PC, כאשר INtime For Windows רצה לצידה של Windows ומאפשרת למפתח לקבוע איזה Process ירוץ מעל INtime ואיזה מעל Windows. בהתאמה, היא מקצה את ההתקנים ל-Intime או ל-Windows.
בזמן הריצה מקבלת INtime עדיפות גבוהה יותר מ- Windows בהקצאת משאבי ה-CPU, ולכן רמת הדטרמיניסטיות אינה מושפעת מהעובדה שגם מערכת Windows רצה על אותה הפלטפורמה. בגרסת Distributed Intime, מערכת ההפעלה רצה ללא Windows. למרות זאת ניתן ניתן לקבל שירותי Windows כמו GUI או File System, מפלטפורמת PC הנמצאת ברשת. שתי מערכות ההפעלה מנצלות היטב את יכולות ריבוי הליבות הקיימת כיום במשפחת X86.
זמינות תוכנה
בפיתוח עבור INtime for Windows המפתח יכול להשתמש במיגוון גדול של תוכנות ברמת ה-Object, בזכות היצע התוכנות הזמין עבור Windows. בחלק של INtime עצמו, ניתן להשתמש בקוד מקור שעבד ב-Windows, גם כזה שפונה לפונקציות של מערכת ההפעלה, מכיוון שאחד מממשקי ה-API של INtime האפשריים לפיתוח, הינו תואם Windows. שפות הפיתוח ב-INtime הן C ו-C++. בנוסף, ניתן לגשת ישירות אל אובייקטים של INtime מתוך Windows גם בסביבת Dot Net.
מורשת אינטל
חברת TenAsys קיבלה את כל הזכויות לתוכנות זמן-אמת של אינטל, שבפיתוחן הושקעו מאות שנות אדם. תוכנות אלו הריצו אלפי יישומים בארץ ובעולם, וחלק מהיצרנים ממשיכים לייצר ולספק עד היום מוצרים שבהם מוטמעות גירסאות שונות של מערכות הפעלה אלו.
בזכות התאימות לאחור והעברה מלאה של קוד המקור, היא נהנית מקוד אמין שנוסה באלפי יישומים. גם בגירסת Intime For Windows, המריצה שתי מערכות הפעלה זו לצד זו, מושגת הפרדה מלאה בין שתיהן.
אפילו כאשר Windows קורסת למסך כחול – INtime והתהליכים שהיא מנהלת ממשיכים לרוץ.
כל התהליכים שהוגדרו מעל INtime רצים ברמה 3 ואינם יכולים לפגוע ב-kernel שלה, אשר רץ ברמה 0. בנוסף, קיימת הפרדה גם בין תהליכים שונים הרצים על-גבי INtime, כך שאם תהליך אחד מגיע ל-Exception, התהליכים האחרים ממשיכים לפעול ללא פגע.
תקשורת בין הליבות לפלטפורמה: GOBSnet
בתחילת דרכה בשנת 1997, רצה INtime For Windows על-גבי מעבדים חד-ליבתיים מסוג 486 ופנטיום, לצידה של Windows NT. חברת TenAsys פיתחה גירסאות המשך התומכות במעבדים מתקדמים יותר ובמעבדים מרובי ליבות, ושילבה גירסאות חדשות יותר של "חלונות", כולל Windows XP ,Windows 7 וגירסאות 64 ביט. הופעת ריבוי הליבות והפיתוח של Distributed INtime דחפו את TenAsys לפתח אובייקט חדש בשם Global Object.
כל מערכת זמן-אמת פועלת על אובייקטים שבעבודה עימם מושגות העברות הנתונים והסינכרונים. לכן התווספה ל-INtime יכולת פעולה על אובייקט שנמצא בליבות אחרות ומוגדר כגלובלי. האובייקט יכול להימצא בליבה אחרת במכשיר (Host) או בליבה של PC אחר המריץ את INtime. האובייקט מכונה Global Object, והיכולת לתקשר באמצעותו קרויה Global Object Network, או בקיצור: GOBSnet.
מעל ה-Intime Kernel בכל ליבה, רצים שני שירותים נוספים: GOBS manager המנהל את האינטראקציה בין ה-Objects, ו-DSM המנהל את האינטראקציה בין ה-Processes. לממשק ה-API בכל יישום התווספו גם פניות לזיהוי Node וליצירת Reference Object המשקף את ה-Remote Object שעליו פועלים.
האובייקטים עצמם הם האובייקטים הרגילים: Shared Memory, Semaphore, Mailbox וכדומה. כל הפקודות הפועלות על אובייקט רגיל, פועלות גם על Global Object.
פיזור Processes
כל יישום בנוי מ-Processes. ניתן לפזר את ה-Processes בין Nodes שונים בהתאם לשיקולים הבאים:
- ביצועים: אם ה-Processes צורכים זמן CPU רב, פיזורם ל-Nodes אחרים יכול להבטיח יכולת ביצוע גבוהה של כל Process.
- דטרמיניזם: כשיש יותר מדי תהליכים שזמן התגובה של כל אחד מהם לטיפול ה-Interrupt Thread הוא חשוב, פיזור התהליכים מאפשר למנוע מצב שבו ה-Interrupt thread השונים מפריעים אחד לשני או לתהליכים הרצים עלNode אחר.
- מרחק: כאשר ההתקנים שבהם המערכת מטפלת פרושים במרחק רב האחד ממשנהו, יש לשקול הקצאת Nodes על-גבי PCs המחוברים ברשתLAN . במקרה כזה יכולה אחת מהפלטפורמות להריץ INtime For Windows, ולאפשר למערכת "חלונות" לספק שירותים ל-Nodes המרוחקים.
האמצעים לפיזור התהליכים הם סטטיים או דינמיים, או שילוב של שניהם.
- חלוקת סטטית פירושה שכאשר ה-kernel מתחיל לרוץ, הוא מטעין את התהליכים בסדר הדרוש, ומקצה כל אחד לליבה שהוגדרה עבורו.
- חלוקה דינמית היא אפשרות לביצוע טעינה של התהליך תוך כדי ריצה, בהתאם לקריטריונים שהמתכנן קובע.
מגוון קונפיגורציות בלא שינויי תוכנה
אחת מהתכונות החשובות שה-Global Objects מעניק למתכנן היא Scaling: יכולת להתאים את חומרת ותוכנת המערכת לדרישות משתנות בעקבות גידול. בפיתוח מערכות Embedded יש בדרך כלל מספר קונפיגורציות של אותה מערכת המשמות למטרות שונות – שיווק, סימולציה ועוד. השימוש ב-Global Objects מאפשר לכתוב את התוכנה פעם אחת בלבד לכל הגדלים הדרושים, ולבחור בצורה פשוטה, באמצעות כלי קונפיגורציה, את כל ההקצאות במערכת: גודל הזיכרון, פיזור תהליכים (כולל מליבה אחת למספר ליבות ולמכשיר נפרד), ואפילו העברת תהליכים מריבוי ליבות לליבה יחידה.
השקיפות הזו, המושגת במערכת AMP – Asymetrical Multi Processing, דומה לזו המושגת בטבעיות רבה במערכות- Symetrical Multi Processing SMP, אולם יש לה שני יתרונות משמעותיים שאינם אפשריים ב-SMP: הביזור אינו פוגע בדטרמיניסטיות של המערכת בטיפול בהתקנים, והביזור אפשרי גם לליבות המצויות ב-PCs אחרים המצויים ברשת.
סיכום
מערכות ההפעלה Distributed INtime ו-INtime for Windows מאפשרות לנצל מעבדים מרובי ליבות חזקים וחסכוניים בהספק ממשפחת X86, כדי לפתח מערכות משובצות העומדות בדרישות מורכבות. הן מעניקות יכולת פיתוח וייצור בעלויות נמוכות, תוך כדי מתן אפשרויות פונקציונליות רבות בידי המפתח.
* אודות המחבר: אסף גליל הוא מהנדס יישומים של חברת TenAsys ומייצג אותה בישראל. לאסף למעלה מ-30 שנות נסיון במערכות משובצות מחשב עם דגש על מעבדים ותוכנות למשפחות X86.
למידע נוסף: [email protected]
אתר החברה: www.TenAsys.com
פורסם בקטגוריות: חדשות , מחשבים ומערכות משובצות , מערכות משובצות