מאת: מרק הרמלינג, מנהל תחום ווירטואליזציה, ווינד ריבר
להייפרווייזר היסטוריה ארוכה בשוק הארגוני , אך כיום הוא חודר – ובהצלחה – לתחום היישומים המוטמעים. הסקירה הבאה מתארת את מקורות הווירטואליזציה וההייפרוויזרים ומסבירה מה מקומם במערכות מוטמעות.
מקורה של תפיסת הווירטואליזציה במחשבי המיינפריים של IBM בסוף שנות ה-60 של המאה הקודמת, בהם יכול היה מחשב בודד להריץ בו בזמן כמה וכמה מערכות הפעלה אורחות. שכבת הווירטואליזציה במחשבי המיינפריים הללו סיפקה סביבה ווירטואלית שהיתה בעלת אותן תכונות בדיוק כמו לחומרה עצמה. מערכות הפעלה שונות יכלו לרוץ על כל אחת מהסביבות הווירטואליות הללו – בלי להיות ‘מודעות’ זו לזו ומי שבחרו בווירטואליזציה היו המפיצות הגדולות של יוניקס, דוגמת סאן מיקרו סיסטמס, היולט פאקארד (HP), IBM ו-SGI, תחילה בחומרה המקורית (והיקרה) שלהן. VMware הניפה את לפיד הווירטואליזציה בסוף שנות ה-80 של המאה הקודמת, והכניסה את הטכנולוגיה לחומרות ולחוות שרתים מבוססות x86. ווירטואליזציה של ארכיטקטורת ה-x86 אינה משימה של מה בכך, ולסביבה הווירטואלית מחיר כבד בביצועים. משום כך החלו יצרניות המעבדים (אינטל ו-AMD) להוסיף את הווירטואליזציה לחומרת התמיכה (VT-x, AMD-V) במעבדי השרתים שלהן.
חברות רבות נוספות מספקות היום טכנולוגיות ווירטואליזציה, והנושא הופך לנושא חם באמת. בין נושאות הדגל כיום: מיקרוסופט, סיטריקס, רד האט ו-Parallels.
העיקרון המרכזי בווירטואליזציה הוא שקיים מוניטור למכונה ווירטואלית (VMM), המכונה לעיתים תכופות הייפרווייזר, שיש לו שליטה מוחלטת על החומרה. תפקידו של ההייפרווייזר הוא “לתרגם” בקשות ממערכות ההפעלה הרצות בסביבות הווירטואליות (הנקראות בדרך כלל מערכות הפעלה אורחות, או פשוט אורחות).
בווירטואליזציה מלאה, המשמעות היא שמערכת ההפעלה האורחת לא עוברת שינוי והיא אינה מודעת לכך שהיא רצה בסביבה ווירטואלית. פעולות מסויימות (פעולות בעלות קדימות) של האורחת, “מתורגמות” על ידי ההייפרווייזר. לדוגמה, פעולה כמו הגדרה מחודשת של יחידת ניהול הזיכרון (MMU). באמצעות חומרת התמיכה, מזהה המעבד את הפעולות בעלות הקדימות של האורחת ומעמיד עצמו לרשות ההייפרווייזר כדי שזה יוכל לבצע את הפעולות הנחוצות “לתרגום” הדרישה למעבד. ללא חומרת התמיכה, יהיה ההייפרווייזר חייב לבחון את הקוד עצמו לפני הביצוע, פעולה יקרה ובעלת השפעה משמעותית על הביצועים. בסביבות רבות של טכנולוגיית שרתים וטכנולוגיית מידע, נדרשת כיום ווירטואליזציה מלאה.
ווירטואליזציה בשוק ה-IT אפשרה לחברות לספק שירותים רבים יותר עם תג מחיר נמוך יותר משום שהן נזקקות לפחות שרתים בעודן מספקות יכולות משופרות עם עמידות בפני תקלות, איזון עומסים באתרים, התאוששות מקריסות, וכיוצא בזה.
התפיסות המשמשות במערכות מוטמעות זהות לאלו המשמשות בתעשיית השרתים, אך היישום הרבה יותר מגוון. לא תמיד מכילים השבבים המשמשים במערכות המוטמעות את חומרת התמיכה המסייעת לווירטואליזציה, יש להם הספקים נמוכים יותר, וכמות הזיכרון שלהם מוגבלת. יישומים מוטמעים גם דורשים בדרך כלל תגובת זמן-אמת לאירועים, לעתים תכופות בטווח של מיקרו שניות. המשמעות היא שהייפרווייזרים מוטמעים צריכים להיות קטנים ומהירים ולהוסיף תקורה מינימלית לניהול הפסיקות ולמהירות החישוב (הפתרון האידיאלי לא יוסיף תקורה כלל).
עם ווירטואליזציה מלאה, הרצת מערכות הפעלה שלא עברו שינויים בסביבות ווירטואליות לחלוטין עשויה להיות יקרה, במיוחד אם אין חומרת תמיכה. בעולם המערכות המוטמעות, הביצועים חשובים יותר מתמיכה בווירטואליזציה מלאה, וקוד המקור זמין למערכות מוטמעות רבות, ופותח את הדלת לטכניקה המכונה “פארווירטואליזציה” (paravirtualization).
בפארווירטואליזציה, מערכת ההפעלה האורחת עוברת שינוי כדי שתפעל בתיאום עם ההייפרווייזר. בעיקרון, הפעולות בעלות הקדימות מוסרות ממערכת ההפעלה ומוחלפות בבקשות (למעשה קריאות מערכת) בתוך ההייפרווייזר. פארווירטואליזציה מספקת ווירטואליזציה יעילה על גבי כל מעבד – אינטל, PowerPC, ARM, MIPS וכן הלאה – ומביאה את הווירטואליזציה אל עולם המערכות המוטמעות.
ליבות מרובות
ווירטואליזציה מופיעה לעתים תכופות באותו הקשר עם ריבוי ליבות. הסיבה לכך היא ברורה מאליה: ווירטואליזציה מספקת את היכולת לחלק מעבד מרובה ליבות רב עצמה לכמה וכמה סביבות ווירטואליות נפרדות. אחד התחומים הראשונים בתעשיית המערכות המוטמעות שעשה שימוש בריבוי ליבות היה תחום הרשתות, אך תחומי הבקרה התעשייתית, הרכב ותעשיות נוספות רבות מצטרפות למגמה.
ריבוי ליבות פשוט מספק יותר פעולות בשנייה, תוך צריכת אנרגיה פחותה ויצירת פחות חום. השאלה העולה פעמים רבות היא כיצד לרתום את העוצמה הזו. כאן התשובה היא ווירטואליזציה. הווירטואליזציה מספקת את היכולת ליצור סביבות נפרדות בעלות תקורה נמוכה שיריצו קוד קיים או שישמשו לפיתוח קוד חדש. למעבדים המודרניים יש בין שתיים ל-32 ליבות, ובאופק נראים מעבדים עם ליבות רבות עוד יותר, והמתכננים יכולים להריץ על המעבדים האלה מערכת הפעלה יחידה או לחלק אותם ולהריץ עליהם מערכות הפעלה רבות, חלקן על ליבה יחידה וחלקן על כמה ליבות.
המניעים העיקריים
ישנן סיבות רבות לכך שמפתחי מוצרים מתעניינים בריבוי ליבות ובווירטואליזציה במוצרים מוטמעים, אבל ישנן שתיים עיקריות: ביצועים וקונסולידציה.
את המניע של הביצועים קל להבין. פרויקט המיועד לבנות מוצרים חזקים יותר יצטרך לבחון את ריבוי הליבות, שכן המירוץ לייצור מעבדים במהירות של מגה-הרצים רבים יותר הגיע לסיומו. תדירויות גבוהות יותר צורכות אנרגיה רבה יותר, כך שהשימוש בליבות מרובות הפועלות בתדירויות נמוכות יותר הוא הדרך בה יש ללכת.
גם את מניע הקונסולידציה קל להבין. מוצרים רבים כיום מכילים כמה מעבדים, במיוחד בתעשיית הרכב, התחבורה, הבקרה התעשייתית, הרפואה, הדפוס וכיוצה בזה, וריבוי הליבות מספק הזדמנות לשלב את כל המעבדים האלה לרכיב אחד, ולחסוך מקום, כסף ואנרגיה.
ההייפרווייזר רץ ישירות על המעבד (חד-ליבה או מרובה ליבות), מחלק את הזיכרון, ליבות העיבוד וההתקנים האחרים למחיצות, יוצר את הסביבות הווירטואליות, ואז יוצא מהתמונה. הוא מאפשר למחיצת הבקרה לאתחל סביבות ווירטואליות ולעדכן אותן תוך כדי ריצה. ההייפרווייזר מספק גם את היכולת לנעול כל סביבה ווירטואלית לליבה שלה או לחלק פרוסות זמן של ליבה אחת בין כמה וכמה סביבות ווירטואליות באמצעות סדרן זמן אמת יעיל.
ריבוי ליבות יישאר בסביבה עוד זמן רב, ומוצר שיכול להשתמש היום בליבה יחידה עשוי לעבור לליבה כפולה במהדורה הבאה שלו, וליבה מרובעת או יותר בעוד חמש שנים. ווירטואליזציה מספקת את הגמישות להסתגל לשינויים אלה בלי שנהיה חייבים לבצע שינויים גדולים בארכיטקטורת התוכנה של המוצרים האלה.
הפרדה
אחת הסיבות לכך שמערכות מוטמעות רבות מכילות כיום מעבדים מרובים היא כדי לוודא הפרדה מלאה של קודים קריטיים מקודים לא קריטיים. לדוגמה, הבקרה של מכונה גדולה רצה על מעבד נפרד מזה שעליו רצה התוכנה המספקת את הממשק הגרפי למשתמש. סוג זה של הפרדה ניתן למצוא במערכות מוטמעות מסיבות של אבטחה, בטיחות ומסיבות משפטיות. הייפרווייזר מוטמע הוא שכבה קטנה של תוכנה מתחת לסביבות הווירטואליות, כך שהוא המתווך האידיאלי, המבטיח כי הסביבות הווירטואליות לא ישפיעו זו על זו. לעתים תכופות יש להעביר את המתווכים האלה רישוי, וזה אפשרי בגלל הגודל המזערי של שכבת הווירטואליזציה.
הפרדה אינה מחסום בפני הווירטואליזציה, אלא משהו שיש לקחת בחשבון כשמתכננים מערכת ווירטואלית מוטמעת.
חדשנות
סטייה קלה ממניע הקונסולידציה נמצא במצב בו למוצר קיים יש רמה מסויימת של תפקודיות, מכשיר רפואי, למשל, מדפסת משולבת או ממיר טלוויזיה. מכשירים אלה מריצים פעמים רבות מערכות הפעלה זמן-אמת כדי לספק את רמת ההיענות הנדרשת מהם. כניסת הלינוקס לשוק סיפקה הזדמנויות להוסיף למכשירים אלה תפקודיות חדשה פורצת דרך, אך המחיר של הוספת מעבד נוסף מונעת זאת. ווירטואליזציה מסירה את המחסום הזה ומאפשרת למתכנן להוסיף לינוקס למעבד הקיים (בתנאי שיש מספיק מחזורי עיבוד זמינים) ולספק תפקודיות חדשה וחדשנית למכשיר הקיים.
טכנולוגיית ההייפרווייזר נמצאת איתנו זמן רב יותר מאשר המחשב האישי הנפוץ כל כך. בשנים האחרונות ‘המריאה’ הווירטואליזציה בשוק ה-IT וכיום היא עושה דרכה אל שוק המערכות המוטמעות. אבל מערכות מוטמעות רגישות יותר ממערכות IT לזמינות משאבים, ולכן ההייפרווייזרים עצמם קטנים יותר וממוקדים בהתנהגות זמן אמת.
השימוש בהייפרווייזרים לחידוש מוצרים קיימים מספק למתכנני המערכות המוטמעות דרכים חדשות להוספת תכונות ובטיחות, הן באמצעות קוד פתוח והן באמצעות פיתוחים משלהם. פריטים הדורשים רישוי מסייעים למפתחים לעבור ביעילות רבה יותר את תהליך אישור התקנים, וההייפרוויזרים מסייעים בהפרדת מרכיבי הבטיחות הקריטיים של התכנון מתחומים קריטיים פחות.
מתכנני מערכות מוטמעות רגישים הרבה יותר למשאבים הזמינים מאשר מתכנני מערכות ארגוניות. נציגי הדור החדש של ההייפרווייזרים לתחום התעשייה, התחבורה והרפואה חייבים להיות בעלי מיקוד חד ביותר על נפח הזיכרון ועל מחזורי העיבוד. זה מאפשר למתכנן גמישות מירבית בפיתוח הקוד, ומספק תכונות חדשות שישפרו הן את הבטיחות והן את התפקודיות של מערכות הדור הבא. מערכות מוטמעות הופכות מהירות יותר, מעבדים מרובי ליבות נכנסים יותר ויותר לשימוש, והמתכננים צופים לקראת הרמה הבאה של גמישות ויכולת ההתאמה במערכות המוטמעות.