Presentation is loading. Please wait.

Presentation is loading. Please wait.

第4章 伺服器虛擬化.

Similar presentations


Presentation on theme: "第4章 伺服器虛擬化."— Presentation transcript:

1 第4章 伺服器虛擬化

2 大綱 4.1  簡介 4.2  處理器虛擬化 4.3  記憶體虛擬化 4.4  I/O 虛擬化

3 仿真技術 為何談論仿真? 事實上,虛擬化技術可以被當作是一種仿真技術的特例 許多虛擬化技術是由仿真技術發展出或是繼承仿真技術 仿真的目的
提供一種方法,讓(子)系統顯現出和其他(子)系統相同的介面和特色 宿主實體硬體 ISA 1 仿真 ISA 2 仿真 賓客 ISA 1 賓客 ISA 2

4 仿真技術 三種仿真技術的實作 直譯仿真(Interpretation) 仿真器一次只直譯一個指令
靜態二元轉換(Static Binary Translation) 仿真器一次轉換一區塊的二進位指令,並更進一步執行最佳化 動態二元轉換(Dynamic Binary Translation) 混合方法的仿真器,將以上兩種方法混合使用 設計上的挑戰及議題 暫存器映射問題 效能提升問題

5 直譯仿真 直譯仿真執行流程 仿真器從賓客記憶體中提取一道指令 解譯指令並將其發送到相對應的模擬單元
執行指令的功能,並修改相關的系統狀態,如模擬暫存器的數值 增加賓客程式計數暫存器的數值,之後再次重複這個程序 優點 簡單實作 缺點 效能差

6 … 直譯仿真技術流程圖 直譯器 執行宿主 ADD 執行宿主SUB 執行宿主MOV 執行宿主JMP 解碼與發派 增加賓客PC 值 單一賓客指令

7 靜態二元轉換 使用編譯器最佳化技術的基本區塊概念 基本區塊是整個程式內一部分的程式碼,有某些理想的特性使得它本身非常適合進行分析
一個基本區塊只有一個入口點,裡面沒有程式碼為整個程式裡任何位置之跳躍指令的目的地 一個基本區塊只有一個出口點,只有最後一條指令可以使得程式執行其他的基礎區塊

8 靜態二元轉換 基本區塊 1 基本區塊 3 基本區塊 2 基本區塊 4 SUB R1 R2 0x00C9 MOV R4 R1
JMP L1 BEQ L2 R3 R1 基本區塊 1 基本區塊 3 基本區塊 2 基本區塊 4

9 靜態二元轉換 靜態二元轉換流程 仿真器從賓客記憶體中提取一個二元碼基礎區塊 解譯區塊內的指令,並發派到相對應的轉譯單元
將賓客指令轉換成宿主指令 將轉換過的二元碼寫入程式碼快取 (Code Cache),重複步驟1,直到完成所有的轉譯 執行轉換過的原生二元碼 優點 仿真器可以重複使用轉換過的宿主程式碼 在轉換賓客指令區塊時,仿真器可以做到更多的最佳化 缺點 實作的複雜度增加

10 … 二元轉換技術流程圖 二元碼轉換器 轉譯為宿主 ADD 轉譯為宿主 SUB 轉譯為宿主 MOV 轉譯為宿主 JMP 解碼與發派
寫入程式碼快取 轉譯下一個指令 賓客二元碼基礎區塊 宿主二元碼基礎區塊 二元碼轉換器

11 比較 直譯仿真的實作 靜態二元轉換的實作 賓客二元碼 直譯器 賓客二元碼 二元碼 轉換器 宿主二元碼 快取 MOV R1 R2
ADD R1 R2 R3 MOV R1 R2 MOV R3 R4 宿主二元碼 快取 ADD EXA EXB MOV EXA EXB MOV EXC EXD

12 動態二位轉換 一種混合的實作方式 針對第一次找到的程式碼,直接由直譯器做直譯,並標明這些程式碼為找到的程式碼
隨著賓客程式碼被找到,引發二位轉換的模組,將賓客程式區塊轉換成宿主程式區塊,並將其放到程式碼快取 在下次執行賓客程式被轉換過的區塊時,便可轉跳至程式碼快取執行轉換過的宿主二位元程式碼 優點 兼顧直譯器與二元碼轉換器的特色 缺點 很難實作

13 動態二位轉換 第一次執行時,宿主程式碼快取中沒有轉換過的程式碼存在 程式碼快取比對失敗,直接直譯賓客指令
隨著程式區塊被找到,引發二位碼轉換器 將賓客程式區塊轉換成宿主二位元碼,並放進程式碼快取 在下次執行時,執行在程式碼快取裡被轉換過的程式區塊 賓客二元碼 仿真管理者 二元碼 轉換器 直譯器 宿主二元碼 快取 存在 結束 不存在 返回 觸發

14 設計上的挑戰及議題 暫存器映射問題 效能提升問題

15 暫存器映射問題 … 為何要映射暫存器? 不同的指令集架構會定義不同數量的暫存器 賓客指令集架構有時會需要一些特殊用途的暫存器
宿主指令集架構的暫存器可能無法滿足或是受限的 賓客 ISA 來源暫存器區塊 來源記憶體印象檔 程式計數器 堆疊指標 暫存器 1 暫存器 N 暫存器 2 宿主 ISA 暫存器 3 暫存器 4 暫存器 5 暫存器 N + 4 暫存器 6

16 暫存器映射問題 映射不同用途的暫存器 特殊用途的暫存器 程式計數暫存器 堆疊指標暫存器 分頁表暫存器 系統旗標暫存器 賓客的內文和記憶體映像
通用的暫存器 產生的中間值

17 暫存器映射問題 如果宿主暫存器的個數多於賓客 較容易實作的情況 例如:直接一對一映射賓客的暫存器至宿主的暫存器,並用剩餘的暫存器來做最佳化
實例 : 將x86指令集映射到RISC指令集架構 如果宿主暫存器的個數不夠 需要較進階的處理 例如:只映射一些經常使用的賓客暫存器至宿主的暫存器,剩餘未被映射的暫存器則留在記憶體裡 在此情況下,映射的決策是非常重要的

18 效能提升問題 什麼導致嚴重的效能問題? 控制流程問題 在程式碼快取和仿真管理者之間,若內文切換的頻率過高,將會導致效能降低 目標二元碼最佳化
若採用一次轉換一個指令的方式來轉換來源二元碼,將會錯失許多目標二元碼能被最佳化的機會 解決方法: 改變轉換方式 轉換鏈 (Translation chaining) 進行最佳化 靜態與動態

19 改變轉換方式 非最佳化控制流程 導致頻繁的內文切換 宿主二元碼快取 仿真 管理者 內文切換 基礎區塊 1 ......... 返回仿真管理員
基礎區塊 2 基礎區塊 3 仿真 管理者 存在 結束 內文切換

20 改變轉換方式 轉換鏈技術 直接從這一個轉換跳到下一個轉換 宿主二元碼快取 避免切換回仿真管理者 仿真 管理者 基礎區塊 1
跳躍至基礎區塊 2 基礎區塊 2 跳躍至基礎區塊 3 基礎區塊 3 返回仿真管理員 仿真 管理者 存在 結束

21 進行最佳化 如何最佳化二元程式碼? 靜態最佳化 (編譯時做最佳化) 最佳化技術根據原始碼的語意資訊,應用於生成二元程式碼
但不易取得賓客軟體原始碼 動態最佳化 (執行時做最佳化) 最佳化技術根據執行時的資訊及程式輸入資料的相關資訊,應用於生成二元程式碼 動態最佳化技術的優點 受惠於動態分析 不受編譯單元限制 知道精確的執行環境

22 動態最佳化 如何實作動態最佳化? 分析程式執行時的行為 以輸入資料和宿主硬體特色為基礎,收集執行時的分析資
藉由重新安排指令的順序或是其他技術,來動態轉換或修改二元程式碼 將最佳化的二元程式碼寫回程式碼快取,以供下次執行使用

23 動態最佳化 如何分析程式的行為及檔案? 收集程式執行時的統計資料 跳躍或分歧指令的目標位置 條件判斷指令的真偽值 記憶體中的資料值
處理器的快取記憶空間命中機率 可預測性使得這些統計資料,在未來可以做為最佳化之用

24 動態最佳化 動態轉換及最佳化: 賓客二元碼 仿真管理者 二元碼 轉換器 直譯器 宿主二元碼 快取 概要資料 賓客二元碼 仿真管理者 直譯器
存在 結束 不存在 返回 觸發 概要資料 資料搜集 賓客二元碼 仿真管理者 直譯器 宿主二元碼 快取 存在 結束 不存在 返回 觸發 二元碼 轉換器

25 虛擬化技術 從仿真到虛擬化 仿真技術在宿主上仿真賓客,但宿主和賓客是不同的指令集架構,而虛擬化技術,賓客和宿主有相同的指令集架構
一些仿真的問題將不會存在於虛擬化 不需要將每個二元指令轉換成宿主的指令集架構 不需要擔心特殊暫存器映射不相配的問題 一些不存在於仿真的問題,現在存在了 指令優先權應該被良好控制 虛擬化的目標 執行或模擬所有賓客系統的指令 宿主實體硬體 虛擬化 賓客系統 1 賓客系統 2

26 虛擬化技術 Popek 和Goldberg的理論 提出讓硬體有效支援虛擬化技術的指令集架構,所需要滿足之充分條件
設計硬體指令集架構時,要考慮到虛擬化技術的準則 超級監督者 (或稱虛擬機器監控器) 必須滿足三個特性 等質性 與真實硬體一樣的性質及行為 資源控管性 完全的控制權 高效能性 減少虛擬化所造成的開銷

27 處理器架構 現在的處理器會將運作時的狀態分成若干模式 通常在概念上將其分為兩種模式 核心模式 (ring 0)
處理器可以執行任何架構上允許的操作 傳統的作業系統核心是在此模式下執行 使用者模式 (ring 1 ~ 3) 處理器通常只可以執行所有指令的子集合 部分的存取功能也是受限制的 傳統使用者的應用程式在此模式下執行

28 處理器架構 根據對處理器的模式以及硬體本身的行為,指令可分為四種 特權指令 需要高權限模式才能執行的指令 敏感指令
需要與硬體互動或牽涉到系統控制相關的指令 關鍵指令 屬於敏感但不屬於特權的指令 無害指令 上述三種之外的其他的指令

29 硬體指令分類 使用者模式 特權指令 敏感指令 關鍵指令 無害指令

30 處理器陷入 什麼是陷入(Trap)? 當處理器在非核心模式下所發生的權限控制現象
發出中斷訊號,可暫時從使用者模式切換到核心模式處理內部或外部事件 陷入類型 系統呼叫 在使用者模式下所引起的事件 例如:向作業系統發出輸入輸出的操作 硬體中斷 在任何模式下的硬體事件所觸發 例如:硬體計時器引發的事件 例外事件 因軟硬體錯誤所引起的例外 在非核心模式中執行特權指令 或存取不合法的記憶體位置

31 處理器陷入 Ring 0 核心模式 Ring 3 使用者模式 系統呼叫 中斷 / 例外

32 陷入與仿真模型 如何讓處理器虛擬化能有效率? 應該讓賓客二元碼盡可能在處理器上執行 理論上,將不會有額外的開銷
實際上,不能讓賓客系統直接處理每件事 超級監督者要可以控制所有的系統以及硬體資源 解決方法: 模式環壓縮,又稱為陷入與仿真模型 將傳統的作業系統從核心模式推移到使用者模式 在核心模式下運行超級監督者 超級監督者可以攔截所有的陷入事件

33 陷入與仿真模型 基本流程: 超級監督者讓賓客系統裡的所有指令,都直接在處理器的使用者模式中執行
當賓客系統執行到特權指令時,處理器會因為權限不足而觸發陷入事件,因此切換到核心模式,並讓硬體的控制權落入超級監督者手中 超級監督者會根據觸發陷入的原因選擇對應的仿真動作,而且在動作完成之後,再把部分系統狀態還原到賓客系統陷入之前,然後進入使用者模式,並跳躍回賓客系統繼續執行

34 陷入與仿真模型 Ring 3 Ring 2 Ring 1 Ring 0 傳統作業系統 應用程式引起的系統呼叫
處理器會跳躍到作業系統的軟體中斷處理程序向量 切換為核心模式,並執行作業系統的相對應程式 硬體事件引起的外部中斷 處理器會暫停當前的工作,並跳躍到作業系統裡的硬體中斷處理程序向量 應用程式 Ring 3 系統呼叫 Ring 2 Ring 1 傳統作業系統 Ring 0 中斷處理程序向量 實體硬體 硬體中斷

35 陷入與仿真模型 Ring 3 Ring 2 Ring 1 Ring 0 加入虛擬化技術之後 系統呼叫 硬體中斷 例外事件 實體硬體 應用程式
賓客系統 Ring 1 特權指令 中斷處理程序向量 超級監督者 仿真 Ring 0 中斷處理程序向量 實體硬體 硬體中斷

36 內文切換 超級監督者在不同虛擬機器之間的切換過程
透過硬體計時器的逾時中斷訊號暫停執行中的虛擬機器工作,並進行內文切換動作並將控制權轉至超級監督者 儲存被中斷的虛擬機器狀態 透過排程機制選擇下一個要被執行的虛擬機器 設定硬體計時器的下一次逾時時間長度 還原虛擬機器上次被中斷前的系統狀態 設置程式計數器為虛擬機器的計時器逾時中斷訊號處裡向量 啟動下一個虛擬機器 執行超級監督者 虛擬機器 計時器 中斷訊號 儲存虛擬 機器狀態 選擇下一 個虛擬機器 設定計時器 逾時長度 還原虛擬 機器狀態 設定程式 計數器

37 系統狀態管理 … 虛擬化如何管理系統狀態 超級監督者會保存每個虛擬機器的系統狀態至記憶體 當超級監督者從一個虛擬機器內文切換到另一個虛擬機器
將暫存器的值寫回記憶體 拷貝下一個賓客系統暫存器的值至處裡器的暫存器 超級監督者記憶體 虛擬機器1暫存器之值 虛擬機器3暫存器之值 虛擬機器2暫存器之值 處理器 處理器的暫存器 內文切換時, 拷貝暫存器之值

38 虛擬化理論 子集理論 建構超級監督者的必要條件 敏感指令的集合是特權指令集合的子集合 遞迴仿真 可以被遞迴虛擬化的必要條件 可虛擬化的
必須克服時間依存的問題 基於理論之下,x86架構是不能直接被虛擬化 因為存在關鍵指令

39 虛擬化技術 如何虛擬化不能虛擬化的硬體? 半虛擬化(Para-virtualization) 修改賓客系統使其略過關鍵指令
實作超級呼叫(Hyper-Calls)讓賓客系統直接對超級監督者請求的介面 二元轉換 利用仿真的技術使硬體可虛擬化 藉由轉換技術略過關鍵指令 硬體輔助 修改或增進指令集架構來提供可虛擬化的架構 減少超級監督者實作的複雜度

40 半虛擬化 半虛擬化的實作 在半虛擬化的技術裡,賓客系統應該要被修改,以避免引發關鍵指令
賓客系統要知道超級監督者的存在,並且和其順利地合作,而非對於超級監督者一無所知 超級監督者要提供超級呼叫的介面,此介面將會是賓客和宿主的溝通通道 賓客系統 ADD R2 R1 0x00F4 MOV R1 R2 << 關鍵指令 >> MOV R3 R2 修改過的賓客系統 << 超級監督者 超級呼叫 >>

41 二元轉換 在仿真技術裡 二元轉換模組用來最佳化二元程式碼區塊,並且將二元碼從賓客指令集架構轉換成宿主指令集架構 在虛擬化技術裡
二元轉換模組用來略過或修改賓客系統的二元程式碼區塊(包含關鍵指令) 將那些關鍵指令轉換成為達到進一步仿真而將會陷入超級監督者的一些特權性指令

42 二元轉換 靜態方法與動態方法 靜態二元轉換 整個可執行的檔案被轉換成一個可執行的目標架構 很難做到正確的,因為不是所有程式碼可以被編譯器發現
動態二元轉換 看一小段程式碼,特別是依單一基本區塊的順序,轉換它們並將結果序列存進快取記憶體 程式碼只在找到時被轉換,而且可能的話,分支指令會被變成指向已轉換且已儲存之程式碼的指標

43 二元轉換 動態二元轉換和最佳化 超級監督者可以動態轉換二元程式碼,且收集概要資料以便更進一步最佳化 賓客二元碼 VMM 分配管理員
二元碼 轉換器 仿真 宿主二元碼 快取 存在 結束 不存在 返回 資料搜集 原生 執行 陷入 還原 概要資料 觸發

44 困難與挑戰 半虛擬化的困難 賓客系統的修改 需擁有賓客系統的原始碼,才能修改此作業系統的核心,否則半虛擬化不能實現 二元轉換的困難
自我修改程式 如果賓客程式在執行時需要修改自己的二元程式碼,則二元轉換便需要重新轉換新的程式區塊 自我參照程式 如果賓客程式在執行時需要參照自己的二元程式碼,則超級監督者便需要使自己可以返指回原本賓客二元碼的位置 即時系統 對於一些注重時間序的賓客系統,仿真環境會降低時間的精準性,此問題尚未有完美的解決方案

45 硬體解決方法 為何困難重重? 關鍵指令在使用者模式不會被陷入 即使使關鍵指令被陷入,其語意可能也會被改變而導致無法判別陷入發生原因的窘境
簡而言之,傳統的處理器並未考量虛擬化技術的需求 如果處理器能知道賓客和宿主的不同行為,超級監督者的設計將會更有效率、更簡單

46 硬體解決方法 陷入與仿真模型的主要問題 賓客系統中額外的陷入情況 有些陷入發生的情況應該不需要超級監督者介入 關鍵指令被賓客系統呼叫
關鍵指令的存在,將造成賓客系統對下層的操作無法被超級監督者完全掌握 解決方法 需要重新定義一些指令的語意 需要採用一個新的處理器控制模型

47 Intel VT-x 英特爾(Intel)提出新操作模式的x86架構
根操作模式(VMX Root Operation) 簡稱 根模式(Root Mode) 所有的傳統軟體在此模式皆可正常運行 超級監督者應該在此模式運行,並且控制所有的系統資源 非根操作模式(VMX Non-Root Operation) 簡稱 非根模式(Non-Root Mode) 所有敏感指令行為在此模式是被重新定義的 敏感指令將會陷入根模式 賓客系統應該在此模式運行,而且可以透過典型的「陷入與仿真模型」被完全虛擬化

48 Intel VT-x 加入硬體輔助技術之後 系統呼叫 處理器會跳躍到非根操作模式的軟體中斷處理程序向量 賓客系統將直接對這個系統呼叫做出回應
硬體中斷 處理器會暫停當前的工作,進入跟操作模式,並跳躍到硬體中斷處理程序向量 超級監督者交由相對應的賓客系統之中斷處理程序,可搭配硬體最佳化 例外事件 特權指令交由非根模式的賓客系統直接處理 敏感指令才交由根模式的超級監督者處理

49 Intel VT-x Ring 3 Ring 2 Ring 1 Ring 0 非 根 模 式 根 模 式 實體硬體 應用程式 傳統作業系統
系統呼叫 Ring 2 非 根 模 式 Ring 1 Ring 0 傳統作業系統 敏感指令 中斷處理程序向量 根 模 式 超級監督者 仿真 2 中斷處理程序向量 實體硬體 硬體中斷

50 內文切換 超級監督者在Intel VT-x支援的不同虛擬機器間切換過程 VMXON/VMXOFF 藉由兩個指令用於開啟或關掉處理器的根模式
VM Entry 使處理器的模式由根模式切換到非根模式 VM Exit 使處理器的模式由非根模式切換到根模式 賓客系統 1 VMM 賓客系統 2 VMXON VMXOFF VM Entry VM Exit

51 系統狀態管理 英特爾採用硬體方法來有效進行暫存器切換 ─ VMCS結構 狀態區域 當處於VM-Entry時,儲存宿主作業系統的狀態
當處於VM-Exit時,儲存賓客系統的狀態 控制區域 在非根模式(Non-Root Mode)控制指令行為 控制VM-Entry和VM-Exit的過程 離開資訊 提供離開VM-Exit的原因以及相關的硬體資訊 每當VM-Entry和VM-Exit發生時,處理器會自動讀取相對應的VMCS結構

52 系統狀態管理 虛擬處理器管理虛擬機器的狀態 虛擬處理器在執行時會綁定到特定的實體處理器上 由硬體處裡VMCS相關的必要系統狀態資訊
由軟體處裡Non-VMCS相關的非必要系統資訊 實體 CPU 暫存器 虛擬處理器內文 VMCS 內文 Non-VMCS 內文 超級監督者內文 硬體實現 軟體實現

53 小結 –處理器虛擬化 仿真技術 直譯及二位轉換方法 狀態映射及效能議題 虛擬化技術 處理器的架構 陷入與仿真模型 關鍵指令議題 硬體輔助
Intel VT-x 方法

54 記憶體虛擬化 作業系統中的記憶體管理 傳統上,作業系統完全控制所有實體的記憶體空間,並且提供一連續的位址給每個程序
在伺服器虛擬化,超級監督者應該使得所有虛擬機器分享實體的記憶體空間而不需要知道實際狀況 記憶體虛擬化的目標 位址轉換 控制主記憶體的轉換表 記憶體保護 定義存取控制的權限 存取屬性 定義記憶體的屬性及類型,指示記憶體的操作如何被處理

55 記憶體架構 什麼是記憶體管理單元(MMU)? 一個電腦的硬體元件,負責處理處理器要求的記憶體存取
功能包含將虛擬位址轉換成實體位址、記憶體保護、快取記憶體控制、匯流排仲裁等 什麼是分頁表基底暫存器(Page Table Base Register , PTBR) ? 分頁表基底暫存器是暫存器指標,指向分頁表的基底

56 記憶體架構

57 記憶體架構 什麼是TLB (Table Lookaside Buffer)? 處理器的快取記憶體 通常以硬體的方式進行記憶體管理
可增進虛擬位址轉換的速度 處理器 MMU TLB 分頁 1 分頁 2 分頁 3 邏輯記憶體位址 實體記憶體位址

58 記憶體虛擬化 記憶體虛擬化架構 賓客系統 超級監督者 賓客虛擬地址 賓客分頁表 賓客實體地址 記憶體映射槽 宿主虛擬地址 宿主分頁表
宿主實體地址 宿主分頁表 記憶體映射槽

59 記憶體虛擬化 記憶體存取效能的下降是難以承受的,因此,超級監督者需要更進一步最佳化
超級監督者維護影分頁表(shadow page tables): 直接映射虛擬到實體的位址 使用硬體的TLB來做位址轉換 賓客系統 超級監督者 賓客虛擬地址 宿主實體地址 影分頁表

60 影分頁表 映射賓客虛擬位址至宿主實體位址 影分頁表 賓客系統會在賓客實體記憶框架維護自己的虛擬記憶體分頁
針對每個賓客實體記憶體框架,超級監督者應該將其映射到宿主記憶體框架 影分頁表維護從賓客虛擬位址到宿主實體位址的映射 分頁表保護 超級監督者會應用寫入保護至所有賓客分頁表的實體框架,使得賓客分頁表寫入異常及陷入超級監督者

61 影分頁表 影分頁表 超級監督者要使得記憶體管理單元被虛擬化 超級監督者管理真正的分頁表基底暫存器,及每個虛擬機器的虛擬分頁表基底暫存器
當賓客系統被啟動,真正的分頁表基底暫存器指標會指向影分頁表 當賓客系統企圖修改分頁表基底暫存器,它將會被超級監督者截住以便於更進一步仿真 虛擬 PTBR 真實 PTBR 分頁目錄 分頁表 實體記憶體地址 影分頁表

62 影分頁表 創建影分頁表 賓客系統會維護自己的分頁表給每個程序 超級監督者映射每個賓客實體分頁至宿主的實體分頁 創造影分頁表給每個賓客分頁表
超級監督者應該保護包含賓客分頁表的宿主框架 賓客系統 程序 1 程序 2 1 2 1 2 3 賓客虛擬地址 賓客分頁表 1 2 3 4 5 6 7 8 9 賓客實體地址 超級監督者 宿主分頁表 影分頁表 1 2 3 4 5 6 7 8 9 10 11 12 13 宿主實體地址 寫入保護

63 影分頁表 用TLB實作: 例如:在賓客系統的程序2想存取它自己分頁編號1的記憶體 虛擬 PTBR = 8 8 9 6 4 7
實體記憶體位址 8 9 6 4 7 分頁目錄 真實 PTBR = 10 10 11

64 影分頁表 影分頁表操作: 賓客系統 超級監督者 新程序 存取 虛擬 PTPR 真實 PTPR 載入 ! 轉換指標至新位置 相對映射表
內文切換 存取 程序分頁表 程序分頁表 程序分頁表 虛擬 PTPR 賓客系統 真實 PTPR 超級監督者 分頁錯誤 影分頁表 影分頁表 影分頁表 載入 ! 轉換指標至新位置 相對映射表 建置新的影分頁表映射至新程序

65 其他議題 分頁錯誤及分頁保護議題 當實體分頁錯誤發生,超級監督者需要決定這個異常是否應該要被置入賓客系統
如果在賓客系統的分頁表裡的條目仍是有效的,則超級監督者應該準備相對應的分頁並且不應置入任何異常至賓客系統 如果在賓客系統的分頁表裡的條目是無效的,則超級監督者應該直接置入虛擬分頁錯誤至賓客系統 當賓客系統想修改它的分頁表,超級監督者需要攔截這個操作 當賓客系統重新載入分頁表基底暫存器,處理器將會因為環壓縮性質,而陷入超級監督者 超級監督者將會查看賓客系統的分頁表並修改相關的影分頁表,使得記憶體管理單元得到宿主硬體的位址

66 硬體解決方法 影分頁表技術的困難 影分頁表的實作是極度困複雜的 分頁錯誤的機制及 同步化很重要 宿主記憶體空間額外的成本是很可觀的
但為何需要這個技術來虛擬記憶體管理單元? 記憶體管理單元起初不是為了虛擬化而實作 記憶體管理單元完全不知道兩層分頁的位址轉換 可考慮硬體的解決方法

67 擴充分頁表 擴充分頁表(Extended Page Table, EPT)的概念
擴充分頁表再多實作一個分頁表層級,而非沿著一個分頁表層級查看 一個分頁表由一個賓客系統維護,用於產生賓客實體位址 另外一個分頁表由超級監督者維護,用於映射賓客實體位址至宿主實體位址 針對每一個記憶體存取操作,擴充分頁表的記憶體管理單元將會從賓客頁表直接取得賓客實體位址,然後由超級監督者映射表自動取得實體位址

68 擴充分頁表 用EPT實作: 賓客系統 超級監督者 EPT MMU EPT TLB PTBR = 8 EPT 指標 = 12 宿主實體位址
分頁目錄 分頁表 實體位址 EPT 指標 = 12 宿主實體位址 EPT MMU 賓客實體位址 EPT TLB 超級監督者 賓客系統 賓客虛擬記憶體位址 6 8 9 7 Data 8 4 13 12

69 小結 –記憶體虛擬化 軟體實作 記憶體架構 MMU TLB 影分頁表 記憶體管理單元由虛擬分頁表基底暫存器實現虛擬化 影分頁表的建立
分頁錯誤及分頁表保護 硬體輔助 擴充分頁表 硬體同時查看賓客和宿主的分頁表

70 I/O虛擬化 目標 分享或創建I/O裝置給虛擬機器 兩種類型的I/O子系統架構 埠口 I/O (Port I/O)
記憶體映射 I/O (Memory Mapped I/O, MMIO) 使用相同的位址匯流排來定址記憶體及I/O裝置,且用於存取記憶體的處理器指令也會用於存取裝置 傳統I/O的技術 直接記憶體存取 PCI / PCI Express (PCIe)

71 埠口 I/O I/O裝置會被映射至獨立的位址空間
I/O裝置會有不同於一般記憶體的位址空間,可以是在處理器實體介面多餘的I/O插腳(Pin),或是整個匯流排給I/O專用 一般可在英特爾微處理器找到,特別是可以讀寫一到四位元組(outb, outw, outl)至一個I/O裝置的IN和OUT指令 優點 不須太多邏輯,便可解析位址 定址能力有限的處理器可受惠 缺點 需要更多的指令來完成相同的任務 I/O的位址空間大小不夠彈性

72 記憶體映射 I/O I/O裝置被映射到系統的記憶體 為了存取硬體裝置,只要對那些特別的位址用正常的記憶體存取指令讀寫即可 優點
對於資料的操作可以用較少的指令 缺點 實體記憶體位址空間必須與其他I/O裝置分享 整個地址匯流排必須對每一個裝置進行解碼

73 直接記憶體存取 什麼是直接記憶體存取? 允許電腦裡部分硬體子系統,不必透過處理器便可以存取系統記憶體 兩種類型的直接記憶體存取:
同步的直接記憶體存取 直接記憶體存取的操作由軟體引發 例如:音效卡驅動程式可能觸發直接記憶體存取的操作來撥放音樂 非同步的直接記憶體存取 直接記憶體存取的操作由裝置(硬體)引發 例如:網卡使用直接記憶體存取的操作,將資料載入記憶體並中斷處理器來做更進一步的操作

74 PCI與 PCI Express 什麼是PCI? 一種電腦匯流排,用於 附加硬體裝置 傳統使用的PIC卡包含: 網卡、音效卡、數據機
一種電腦擴展卡標準,設計來代替舊的PCI、PCI-X、AGP標準的 它的拓撲是基於點對點的序列連結,而非共享的匯流排架構

75 PCI與 PCI Express 以PCI為主的系統,基於樹狀拓撲來建造 PCI匯流排 平行連結裝置及橋接器 PCI-PCI橋接器
變成是較底層匯流排的Root PCI-ISA橋接器 連結到傳統的ISA裝置

76 PCI與 PCI Express CPU PCI-ISA 橋接器 PCI-PCI 橋接器 顯示卡 ISA 設備 SCSI 硬碟 以太網路卡

77 PCI與 PCI Express 以PCIe為主的系統,基於點對點架構來建造 Root Complex
負責銜接處理器行為、記憶體系統和I/O 子系統 轉換器 連接終端裝置或其他的轉換器 終端裝置 實體的PCIe裝置 傳統的PCI裝置 PCI Express橋接器 連結至其他傳統的子系統

78 PCI與 PCI Express PCIE-PCI 橋接器 CPU Root Complex 記憶體 終端設備 交換器 PCI 設備

79 I/O虛擬化 實作層級: 系統呼叫 位於應用程式與賓客系統間的介面 驅動程式呼叫 位於賓客系統與I/O裝置的介面 I/O操作
超級監督者 實體硬體 應用程式 系統呼叫 IO 驅動程式 驅動呼叫 IO 操作 實作層級: 系統呼叫 位於應用程式與賓客系統間的介面 驅動程式呼叫 位於賓客系統與I/O裝置的介面 I/O操作 位於賓客系統I/O裝置驅動與虛擬硬體(在超級監督者裡)間的介面

80 I/O虛擬化 系統呼叫層級 當一個應用程式引發系統呼叫,系統呼叫將會先陷入超級監督者
系統呼叫陷入 影系統呼叫 返回應用程式 實體硬體設備 系統呼叫層級 當一個應用程式引發系統呼叫,系統呼叫將會先陷入超級監督者 超級監督者攔截系統呼叫,並維護影子I/O系統呼叫程序來模擬功能 在完成操作之後,控制權會回歸賓客系統裡的應用程式

81 I/O虛擬化 驅動程式呼叫層級 採取半虛擬化技術,在 賓客系統的I/O裝置驅 動需要被修改
驅動呼叫 修改後的 設備驅動程式 發起超級呼叫 超級呼叫返回 VMM IO 元件 實體硬體設備 驅動程式呼叫層級 採取半虛擬化技術,在 賓客系統的I/O裝置驅 動需要被修改 I/O操作藉由修改過的 裝置驅動與超級監督者 IO元件之間的Hyper- Call所引發

82 I/O虛擬化 I/O操作層級 記憶體映射I/O 載入/儲存至真實記憶體的特定區域被解析為一種裝置的命令 記憶體映射I/O的區域是被保護的
有特殊位址的特殊輸入/輸出指令 I/O指令是屬於特權指令 由於特權的性質,這些I/O操作將會被超級監督者管控著 IO 操作 MMIO / 埠口 IO 實體硬體設備 IO 操作陷入 返回賓客系統

83 設備模型 專注於I/O操作層的實作 這是全虛擬化的方法 賓客系統與超級監督者間的邏輯關係 超級監督者攔截從賓客系統發出的I/O操作
將這些指令傳遞到執行中平台的設備模型 設備模型需要仿真I/O操作介面 埠口I/O 記憶體映射I/O 直接記憶體存取 賓客系統 運行平台 IO 驅動程式 設備模型 超級 監督者

84 設備模型 兩種不同設備模型的實作 將設備模型實作為超級監督者的一部分 裝置模是在使用者空間執行,被視為是獨立的服務 宿主系統 超級監督者
第一種設備模型 第二種設備模型 賓客系統 宿主系統 IO 驅動程式 設備 模型 核心 模式 使用者 模式 超級監督者

85 設備模型 I/O虛擬化流程 設備偵測 超級監督者需讓賓客系統識別虛擬化的I/O裝置 之後賓客系統將載入相對應的裝置驅動 存取攔截
在做完虛擬裝置操作後,超級監督者會將控制權回傳給賓客系統 模擬設備 設備模型應該仿真真實的電子邏輯來滿足所有裝置介面定義及其影響 超級監督者可能可以共享所有的實體裝置給所有的虛擬機器

86 設備偵測 虛擬化實體的匯流排裝置 可列舉的 (Enumerable) 這些裝置定義一個完整的設備偵測方法
超級監督者必須仿真裝置本身以外,還必須仿真匯流排的行為 例如:PCI或PCI Express裝置 不可列舉的 (Non-enumerable) 這些裝置有自己的硬體編碼 虛擬機器裝置應該設置一些狀態資訊在虛擬裝置的埠口 例如:PS/2鍵盤及滑鼠 虛擬化不存在的裝置 超級監督者必須定義且仿真這些裝置的所有功能 超級監督者可能將他們定義成不可列舉或是可列舉的裝置 賓客系統需要載入這些虛擬裝置的一些新驅動

87 存取攔截 在虛擬裝置被賓客系統偵測到後,超級監督者必須攔截並控制所有從賓客系統發出的I/O操作 埠口I/O操作 直接分配裝置
間接分配裝置 超級監督者應該關閉實體的位元圖 所有從賓客系統發出的I/O指令,將會被超級監督者攔截,並且轉送至實體的硬體

88 存取攔截 記憶體映射I/O操作 直接分配裝置 超級監督者應該使用影分頁表,對應賓客系統的I/O裝置位址空間至宿主的空間
間接分配裝置 超級監督者應該讓所有在影分頁表的I/O裝置位址內容是有效的 當賓客系統存取那些位址空間,將會引起分頁錯誤,讓處理器陷入超級監督者以便於進行裝置仿真 直接記憶體存取機制 位址重新映射 因為在賓客系統裡的裝置驅動不知道宿主實體位址,所以攔截賓客系統時,超級監督者需要自動重新映射直接記憶體存取的目標

89 模擬設備 I/O裝置類型 專一性設備 例如:顯示器、滑鼠、鍵盤等 分割性裝置 例如:硬碟、磁帶等 分享性裝置 例如:網卡、顯示卡等
純虛擬設備 例如:虛擬裝置、實體不存在的裝置等

90 模擬設備 專一性設備 較容易實現 通常具有不可被分享的特性 只要讓賓客系統與設備之間的溝通資訊正確轉送就可以完成 分割性設備
將其分割成多個小部分,並視為虛擬機器專用的裝置 超級監督者將位址空間轉換成相對應的實體裝置位址

91 模擬設備 分享性設備 應該在虛擬機器間共享 每一個虛擬機器擁有自己的虛擬裝置狀態 超級監督者將從虛擬機器發出的要求轉換成實體的裝置
純虛擬設備 附加到虛擬機器的虛擬裝置沒有相對應的實體裝置 完全是透過軟體方式模擬產生

92 效能議題 考慮到效能時,有兩個主要的問題: 如何使賓客系統直接存取I/O位址?
不同於上述討論的軟體方法,可利用硬體輔助(例如Intel EPT技術),將I/O位址從宿主映射直接到賓客,不需要額外的軟體成本 如何使DMA能直接存取在賓客系統的記憶體空間? 針對同步的直接記憶體存取操作,賓客系統將可以透過EPT 技術,指定正確的實體記憶體位址 針對不同步的直接記憶體存取操作,硬體必須從宿主作業系統存取記憶體,需要超級監督者的調度

93 硬體解決方法 困難點 軟體無法直接從設備存取資料 兩個硬體解決方法 將直接記憶體存取重新映射,實作在硬體上
透過硬體自動重新映射直接記憶體存取操作 例如:Intel VT-d 指定PCI Express裝置的I/O虛擬化標準 實作有PCI Express介面的虛擬化裝置 例如:SR-IOV或MR-IOV

94 Intel VT-d 增加直接記憶體存取重新映射硬體元件 DMA 重映射 IO 設備 超級監督者 賓客系統 IO 緩衝區 軟體方法 硬體方法

95 I/O虛擬化過程 軟體實現 透過超級監督者完成虛擬化 優點 缺點 不需要特殊硬體支援即可做到全虛擬化 可能需要大量處理器的額外開銷
賓客系統 軟體交換器 虛擬網路卡

96 I/O虛擬化過程 硬體輔助 實作有Intel VT-x及 VT-d 支援的虛擬化 優點 缺點 資料存取避開超級監督者 改善I/O效能
專用實體裝置的分配會限制系統的可擴展性 IO 設備 超級監督者 賓客系統 Intel VT-x Intel VT-d 虛擬網路卡

97 I/O虛擬化過程 新的工業標準 提出在PCI Express裝置上之I/O虛擬化標準,而非只實作處理器或記憶體的虛擬化 優點 缺點
SR-IOV 優點 完全和實際硬體裝置合作 改善系統的可擴展性 改善系統的靈活度 缺點 I/O裝置必須支援新的實作規格 IO 設備 超級監督者 賓客系統 Intel VT-x Intel VT-d 虛擬網路卡

98 小結 – I/O虛擬化 系統架構 埠口I/O與記憶體映射I/O 直接記憶體存取 PCI / PCI Express I/O虛擬化
不同實作層級 設備模型 硬體輔助

99 總結 伺服器虛擬化技術 處理器虛擬化 記憶體虛擬化 I/O 虛擬化 環壓縮、Intel VT-x 等 影分頁表、Intel EPT等
設備模型、Intel VT-d、PCIe SR-IOV等 虛擬機器 (VM) Xen、KVM、 VMWare x86、ARM、MIPS 處理器、記憶體、輸入/出裝置


Download ppt "第4章 伺服器虛擬化."

Similar presentations


Ads by Google