Table of Contents
הבנת וירטואליזציה קשיחה ותפקיד קריטי של CPU
וירטואליזציה הפכה מחשוב מודרני, המאפשרת לספקי ענן, ארגונים ומרכזי נתונים כדי למקסם את השימוש בחומרה על ידי הפעלת מערכות הפעלה מרובות יישומים בשרת פיזי יחיד. בלב הטכנולוגיה הזו הוא ההיפר-בידור - שכבת תוכנה שמנהלת מכונות וירטואליות (VMs) עם זאת, היכולת של Hypervisor לשלוט ביעילות ב- VM, סביבת אורחים, ולעבור ביניהם תלויה במידה רבה על רכיב בסיסי של ה-C.
מה הם רשומות CPU?The Building Blocks of Processor State
המרשם הוא המקומות המהירים ביותר בזיכרון בתוך מעבד.הם מתגוררים ישירות על CPU למות וניתן לקרוא או לכתוב בתוך מחזור שעון יחיד - סדרי גודל מהירים יותר מזיכרון cache או RAM.בדרך כלל נמדדים ב bits (32-bit, 64 סיביות), מתעדים נתונים קריטיים כגון כתובת ההוראה הבאה (פרוגרם נגד או נקודת הוראה), נקודת הערימה הנוכחית, תוצאות אופטימיזציה, שליטה ודגלים ללא מרשם, מחזירים באופן איטי יותר של כל מעבד, כדי לבצע בדיקות זיכרון.
סיווג של רשומות
- (FLT:0) כללי רישום (GPRs) IRLT:1: בשימוש עבור ⁇ , פעולות לוגיות ותנועת נתונים. ב- x86-64 אדריכלות, רישומים כמו RAX, RBX, RCX, RDX, RSI, RDI, R8-R15 זמינים.
- (FLT:0) רישום מטרות מיוחדות (FLT:1: כולל את נקודת ההוראה (RIP ב x86-64), ערימה מס' P), ורישום דגל (RFLAGS) שולטים על זרימת ההוצאה להורג והמעמד.
- (FLT:0)Control הרשמה: ב x86, נרשם CR0, CR2, CR3, CR4 ו- CR8 בקרת תכונות כמו עריכת, הגנה ורחבות וירטואליות.
- (FLT:0) רישום הרישום של ה-SSFLT:1: CS, DS, ES, FS, GS, SS לנהל את קטע הזיכרון - אם כי עכשיו בעיקר שרידים של מצב 64 סיביות, הם נשארים חשובים להתאמה מורשת וכמה תרחישים VM.
- (FLT:0)Model-Specific Registers (MSRsrov)FLT:1: רישומים ספציפיים מעבדים השולטים בתכונות כמו ניגודי ביצועים, טמפרטורה ותוספות וירטואליות.הם אינם חלק ממערך הרישום הסטנדרטי ויש לגשת אליהם באמצעות הוראות RDMSR/WRMSR.
- (ב) ,0) , DR0-DR7 השתמש ב-Breakpoints ו- debugging.
כל VM פועל על היפרביטור צריך עותק משלו של רישומים אלה כדי לשמור על קשר עצמאי ביצוע.כאשר מתגי Hypervisor מ- VM אחד למשנהו, הוא חוסך את מצב הרישום של VM יוצא ומחזיר את המצב של VM. זה מתג חייב להיות מהיר מאוד כדי למנוע ביצועים בולטים מעל ראש.
התפקיד המרכזי של רשומות בVirtualization
ההיפר-בידור (נקרא לעתים קרובות Virtual Machine Monitor, VMM) פועל כ-Arbiter של משאבי חומרה. המרשם הוא המנגנון העיקרי שבאמצעותו VMM שומרת על המדינה, אוכפים בידוד, ו-Virtative תפעול.כאן הם הדרכים העיקריות לרשום וירטואליזציה:
המונחים: Preservation and Switching
כל VM מוקם סט של רישומים וירטואליים.כאשר ההיפר-בידור מבצע מתג קונטקסט (לדוגמה, שיתוף זמן בין שני VMs), הוא חוסך את ערכי הרישום הנוכחיים במבנה זיכרון הנקרא בלוק בקרה מכונה וירטואלי (VMCB ב- AMD) או מבנה בקרה מכונה וירטואלי (VMCS ב- Intel) ולאחר מכן מטען את תהליך הרישום הבא של VM.S.
המונחים: level Virtualization
מערכות הפעלה אורחות מצפות לבצע הוראות חסויות (למשל, שינוי טבלאות דף, עדכון תיאורי להפריע) במלכודת קלאסית - ו-emulate וירטואליזציה, כאשר האורח מנסה לשנות רישום מיוחס, ה-CPU מעלה מלכודת, ואת ההיפר-בידור מיירט את ההוראה, מחק את ההשפעה שלו על הרישום הווירטואלי, וחוזר אל האורח.זה מבטיח כי האורח לא יכול לשנות את החומרה האמיתית עם חומרה (Ted) באופן אוטומטי, AMD-in-in-in-in-intexitation עצמה, מבלי לבצע הוראות וירטואלית (DVx-in-Ted) ללא ⁇ ).
החלמה באמצעות הגנת רישום
רשומות כמו CR3 (כתובת בסיס שולחן) ו-CR0 (דגלים שליטה) משפיעות ישירות על הזיכרון וההגנה.אם מערכת אורח יכולה לשנות CR3, היא יכולה למפות זיכרון פיזי השייך ל-VM אחר, ההיפודור מונע זאת על ידי הגדרת שולחן דף צל או באמצעות טבלאות מקונן (EPT/NPT) שבו ההיפרטור שולט בכתובת השנייה ברמת הגישה של הרישום מבטיח גם אם הוא מנסה לטעון ל-CR3.
רשימות קריאה בהן: Model-Specific Registers (MSRs)
MSRs לשלוט בתכונות כגון הרחבות debug, ניטור ביצועים וניהול כוח. MSRs רבים הם per-core ומשפיעים על כל CPU הפיזי. Virtualizing אותם הוא מסובך כי הם לא נשמרים אוטומטית / ממוסמכים במהלך מתגי הקשר VM. היפרביטור חייב להשתמש שילוב של מלכודות גישה (באמצעות MSR bitmaps) וחיקוי MSR קורא /w כדי להציג כל אחד עם עקבותיה לא יכול להיות רשום VM.
סוגים של רשומות בשימוש באופן ספציפי בVirtualization
כללי-Purpose Registers
GPRs הם הרשומות הנגישות ביותר.כל VM מקבל את מערך הערכים שלה עבור RAX דרך R15. במהלך מעבר ההקשר, כל GPRs נשמרים ומשחזרים.היפרו-מבקרים קריטיים עשויים להשתמש בתכונות CPU כגון קטע זיכרון (FS, GS) כדי לאחסן נקודות per-VM כדי למנוע זיהום.
רשומות בקרה (CR0, CR2, CR3, CR4, CR8)
- (FLT:0)CR0ig0ig00earFLT:1: Controls מעבדים מצבי הפעלה (PE bit for Protect Mode, PG bit for paging) יש צורך לשנות את PE או PG יש ליירט.
- [01:0]CR2IRLT:1]: מכיל את הכתובת האחרונה של הדף, כתובת ליניארית. Hypervisors מסתמכת על זה כדי ליישם את הביקוש לזיוף ולטפל בפגמים בעמוד הקן.
- (FLT:0)CR3earFLT:1; מחזיק את הכתובת הבסיסית של היררכיה שולחן העמוד.Harware-sted וירטואליזציה משתמשת בטבלה בעמודים בעמוד מורחב (EPT) ב- Intel או ב-NPT) ב- AMD, כך ש-CR3 של האורח לדפים אורח-פיזיים, והטבלאות השניות של Hypervisor ברמה השנייה של הטבלאות אורח-פיזיות למכונה-פיזית-פיזית.
- (FLT:0)CR4IRLT:1: תכונות אפשריות כמו הרחבה של כתובת גופנית (PAE), SMEP, SMAP, והרחבות וירטואליות (VMXE bit) שינויים באורחות יירוטו ואומתו.
- (FLT:0)CR8IRLT:1: רישום עדיפות משימות, המשמש לניהול להפריע.היפר-בידור מאמת את זה כדי לשלוט במשלוח להפריע ל-VMs.
רישום
למרות שמגזר זה לא בשימוש ברובו במצב 64 סיביות, הרשומות של המגזר (CS, DS, SS, ES, FS, GS) עדיין מכילות כיפי תיאורי מוסתרים שמאוחסנים בסיס, גבולות ותכונות.ב וירטואליזציה, ההיפרטור חייב ל וירטואלי ערכים אלה כי הם משפיעים על הרשאות גישה זיכרון.
דוגמנות-סקרוניות (MSRs) בVirtualization
(הופנה מהדף ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
רשם דביג (DR0-DR7)
רישום דביג הם per-core ויכול להיות מוגדר על ידי מערכת אורחים עבור debugging.היפר-בידור חייב להציל ולשחזר אותם על מתגי ההקשר.בנוסף, תוכנה זדונית יכולה להשתמש ברישום debug כדי לפרוץ מה-VM אם לא וירטואלי כראוי.
הרחבה של וירטואליזציה: כיצד מרשם הוא משופר
לפני הרחבות חומרה, וירטואליזציה תוכנה טהורה (תרגום בינארי) סבלה עונשי ביצועים משמעותיים. אינטל הציגה VT-x (Virtualization Technology) ו- AMD הציגה AMD-V (Pacifica) כדי להוסיף מצבי CPU חדשים ומבנים ייעודיים המתועדים כי הזרמת וירטואליזציה.
אינטל VT-x: VMCS ואורח / Host State Fields
מבנה הבקרה של המכונה הווירטואלית (VMCS) הוא מבנה נתונים של זיכרון המכיל את כל המדינה הרשומה עבור VM. זה כולל: - אזור אורח: עותקים של CR0, CR3, CR4, RSP, RIP, RFLAGS, פלחי רישום, ועוד. - אזור מארח: חוסך את המדינה של הרשום של Hypervisor כדי להיות משוחזר על VM - שדות של יציאה (R) - יציאה מסוימת של , R.
VMCS טעון לתוך המעבד באמצעות ההוראה VMPTRLD, והקשר המעבר בין VMs הוא מהיר כי המעבד חוסך / חנויות כל מצב אורח בפעולה אחת.ההוראות VMXON מפעיל מצב וירטואליזציה; מצב שורש VMX (hypervisor) ומצב לא-בסיס (gue) לכל אחד יש רמות זכות משלהם.
AMD-V: VMCB
AMD משתמש ב-Virtual Machine Control Block (VMCB), השמור בזיכרון הפיזי.המדריך VMRUN מסתמך על VMCB ומתגים למצב אורח.כמו VMCS, VMCB מכיל מצב אורחים ומארח ובקרות עבור הטמעת אירועים. AMD גם משתמש בטבלה בעמודים ננקטים (NPT) שמסתמך על סט נפרד של רשומות של לוח העמודים הנשלטים על ידי Hypervisor.
ARMv8 Virtualization
מעבדי ARM יש את הסיומת הווירטואליזציה שלהם (VHE) המספקים את EL2 (רמת הפריבילגיה של HCR EL2 שליטה על התנהגות וירטואליזציה, ו- VTTBR EL2 מחזיק את הכתובת הבסיסית עבור שולחן התרגום השני שלב. ARM אינו דורש מבנה דמוי VMCS, אלא מסתמך על בנקים המופעלים על גבי מתג באמצעות VMPIDR, VPI, VCR, VPI ו-HCR.
שיקולים ב-Cret Management
העלות של שמירת ושיקום רישומים במהלך מעברי VM היא גורם ביצועים קריטי.כל יציאה VM וכניסה כוללת עשרות רישומים וחנויות. וירטואליזציה מאוישת הארדware מפחיתה את זה מעל הראש כי המעבד עצמו מבצע חיסכון גדול / חנות באמצעות מיקרוקוד, אבל יציאות עדיין יקרות (מאות של מחזורים).
מינימום VM יציאות
ההיפר-בידור יכול להגדיר את VMCS / VMCB כדי למנוע עזיבה תכופים.לדוגמה, ניתן לטפל בגישות MSR רבות ללא יציאת VM אם ה- Hypervisor מראש מדגימות את מפתות ה-MSR כדי לאפשר גישה ישירה לאורחים (עבור ®MSRs benign כמו ®-stamp Counter), CPUs מודרניים תומכים ב- APICv ו-IOU תכונות אשר להפחית את פעולות IO.
« « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « «
כמה חומרים משמרים cache לרשום ערכים במבנה הנתונים VCPU כדי להימנע עומסים אדומים.לדוגמה, אורח CR3 הוא לעתים קרובות צלל: ההיפר-בידור שומר עותק ורק מעדכן את CR3 האמיתי כאשר האורחים משנים את טבלאות העמוד שלה.
השפעה על Virtualization
כאשר היפר-בידור פועל בתוך VM (ה וירטואליזציה הנרדפת), ההיפרטור החיצוני חייב למיין את המבנים VMCS/VMCB עצמם.זה דורש טיפול נוסף עם רישומים - לדוגמה, את ה-VMLAUNCH של ה-VMLAUNCH של ה-VMLAUNCH חייב להיות מיורטט ומחק על ידי ההיפרטור החיצוני, מה שגורם תוספת של קבצים/reware תמיכה קשה עבור קן עבור וירטואליזציה (IX) ב-AMVS מסייע ב-AMD.
השלכות אבטחה של וירטואליזציה של הרישום
רשומות הן מטרה עיקרית להתקפות ערוץ צדדי והסלמה פריבילגיה.פרטור שנפגע יכול להדליף ערכים בין VMs אם מעבר להקשר אינו יסודי.לדוגמה, במהלך מתג ההקשר, שאריות נתונים ברשומות שאינן כתובות יתר ניתן לצפות על ידי ה-VM הבא Hypervisors חייב אפס רישומים רגישים (כמו קידודים debug ו-MSRs המחזיקים במפתחות חשאיות) לפני טעינה חדשה.
הוצאות להורג ספציפיות
התקפות מלטה וספקטרום לנצל את העובדה כי ביצוע קידוד יכול לגשת ערכים שאינם גלויים מבחינה ארכיטקטונית.ב וירטואליזציה, מדינת הרישום של Hypervisor עשויה להיות מודלפת לאורח זדוני באמצעות ערוצי צד מיקרוסקופיים. Mitigations כוללים מכתמי יעד צנרת (IBRS, IB) ושימוש ב-MSRs מיוחדים השולטים בחיזוי.
רישום אבטחה ואבטחה
חלק מ-MSRs (כמו אלה השולטים באימות או מספרי מעבדים) לא צריך להיות גישה על ידי אורחים.היפרוויסר קובע את מפת bitmaps MSR כדי לגרום ל- VM לצאת מכל גישה, ואז מחזיר שגיאה או ערך מזויף.זה מונע דליפת מידע או נזק חומרה.
אתגרים וכיוונים עתידיים
בעוד CPUs מודרניים מספקים תמיכה וירטואליזציה עשירה, אתגרים נותרים.נושא אחד גדול הוא המספר הגדל של MSRs כמו CPUs להוסיף תכונות - כל חדש MSR עשוי להיות וירטואלי, המוביל מבנים גדולים יותר VMCS / VMCB ומגיגים לאט יותר ההקשר.אתגר נוסף הוא FLT:0heterogeneous מחשובFLT:1; CPUs בתצורה גדולה עשוי להיות prescribed כל תכונות הליבה של VMART לעתים קרובות יש לרשום את זה לא עקבית.
חומרה עתידית עשויה לכלול רישומים ייעודיים של חומרה עבור וירטואליזציה, כגון קובץ "רישום וירטואליזציה" המתג באופן אוטומטי על כניסה / תשלום ללא תשלום מפורש / בית מרקחת.בנוסף, FLT:0 conidential מחשוביות מחשוב FLT:1 טכנולוגיות כמו Intel TDX ו- AMD SEV מסתמכות על הצפנה ושלמות, אך לרשום מדינה בתוך CPU חייב להיות מוגן מפני היפר-קולקציה מחדש של מנגנונים זדוניים אלה כדי למנוע מהם למנוע מנגנונים חדשים.
מסקנה
רשומות CPU הן הגיבורים הלא-סמויים של וירטואליזציה החומרית.הם מאחסנים את המצב הקריטי של כל מכונה וירטואלית, לאכוף בידוד באמצעות גישה מבוקרת, ומאפשרים את ההיפר-בידור לעבור בין VMs עם מינימום overhead.מרשם מטרות כלליות כדי לשלוט ברשומות ו- MSRs, כל סוג משחק תפקיד ספציפי בשמירה על האשליה של חומרה ייעודית עבור כל תוספות של אורחים.