波佩克與戈德堡虛擬化需求

波佩克與戈德堡虛擬化需求(英語:Popek and Goldberg virtualization requirements)是一組充分條件,用於驗證某一電腦架構可否被有效虛擬化。傑拉爾德·J·波佩克與羅伯特·P·戈德堡於1974年合作論文《可虛擬第三代架構的規範化條件(英語:Formal Requirements for Virtualizable Third Generation Architectures)》中提出。儘管這組條件基於簡單化假設獲得,但它們仍為判定一個電腦架構是否能夠有效支援虛擬化提供了一個便利方法,也為設計可虛擬化電腦架構給出了指導原則。

引入

系統虛擬機器(system virtual machine)是指能夠虛擬包括單或多處理器記憶體、外存及周邊裝置在內之全體硬件資源的虛擬機器。虛擬機器監視器(virtual machine monitor,VMM)是一個軟件,用於提供虛擬機器的抽象(Abstraction)。當分析一個VMM所創造的環境時,有三點性質值得特別關注:

等價性:一個執行於VMM下的程式,其行為應與直接執行於等價物理機上的同程式的行為完全一致。
資源控制:VMM對虛擬資源進行完全控制。
效率性:機器指令中經常使用的那一部分應在沒有VMM干預下執行。

波佩克與戈德堡認為VMM應具備上述三個性質。今天來看,VMM通常被認為具備前兩個性質即可。

波佩克與戈德堡描述了一台物理機為了能夠執行具備以上性質之VMM,其指令集架構(Instruction Set Architecture,ISA)必須滿足的特徵。儘管這些分析使用所謂「第三代架構模型」(如IBM 360DEC公司的PDP-10)得出相關特徵,它們對於現在的電腦也是足夠適用的。這個模型包括一個執行於系統或用戶模式的CPU,並可以訪問線形、統一化可編址主記憶體。它還假設,指令集有一個子集只能執行於系統模式(內核態);主記憶體通過一個重定位暫存器進行定址。輸入/輸出中斷未被考慮。

虛擬化需求

為匯出虛擬化需求,波佩克與戈德堡將ISA的全部指令分為三類。

優先級指令
當處理器處於用戶態時自陷,處於內核態時不自陷的指令。
控制敏感指令
試圖改變系統資源組態的指令。
行為敏感指令
其行為或結果取決於資源組態狀態(如重定位暫存器的內容或處理器所處模式)的指令。

波佩克與戈德堡的分析結果主要歸納如下:

定理1:對於任何傳統的第三代電腦,只要其敏感指令是優先級指令的一個子集,就可以為其建立VMM。

直觀地說,這條定理指出,欲構造一個VMM,其充分條件是所有可能影響VMM正常工作的指令(即敏感指令)能夠自陷並將控制權移交給VMM。這就保證了資源控制;非特權指令則必須被本地(物理機)執行——也就是更有效率地執行。等價性也得到滿足。

一個關聯問題是遞歸虛擬化的ISA需求,即探討在什麼樣的條件下可以建立一個能執行於自身拷貝上的VMM。波佩克與戈德堡指出,

定理2:一台傳統第三代電腦是遞歸虛擬的,當

  1. 它是可虛擬的;
  2. 可以為它建立一台不加任何時間依賴性的VMM。

處理關鍵指令

定理1所給出的條件可以通過犧牲第三條性質、效率性來放寬。因此,許多按波佩克與戈德堡之定義應歸類為非可虛擬的ISA也有VMM。但是,虛擬這種體系結構意味着對一些關鍵指令,即敏感且非特權指令,必須作出正確處理。動態重編譯中常用的修補程式方法在這裏得到運用:在執行時發現這樣的指令,並以自陷到VMM來替換。

參見