TWI494759B - 索引化頁面位址之轉譯以降低在虛擬化環境中記憶體使用量的技術 - Google Patents

索引化頁面位址之轉譯以降低在虛擬化環境中記憶體使用量的技術 Download PDF

Info

Publication number
TWI494759B
TWI494759B TW101145910A TW101145910A TWI494759B TW I494759 B TWI494759 B TW I494759B TW 101145910 A TW101145910 A TW 101145910A TW 101145910 A TW101145910 A TW 101145910A TW I494759 B TWI494759 B TW I494759B
Authority
TW
Taiwan
Prior art keywords
memory address
page
index
memory
host entity
Prior art date
Application number
TW101145910A
Other languages
English (en)
Other versions
TW201337557A (zh
Inventor
Sebastian Schoenberg
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of TW201337557A publication Critical patent/TW201337557A/zh
Application granted granted Critical
Publication of TWI494759B publication Critical patent/TWI494759B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/681Multi-level TLB, e.g. microTLB and main TLB

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

索引化頁面位址之轉譯以降低在虛擬化環境中記憶體使用量的技術 發明領域
本發明領域一般係關於電腦記憶體結構,並且,更明確地說,係用以減低在一虛擬環境中之記憶體使用量的技術。
發明背景
虛擬機器監視器被使用以管理一虛擬機器(VM)之客實體記憶體並且以真正之主機實體記憶體支援。映製一客VM記憶體至一主機實體記憶體之一方式被稱為“延伸頁面表”,其被使用以加速自客至主機記憶體之轉譯。雖然一般客實際位址空間安排(例如,其中於記憶體空間中之頁面被映製)對於各VM是相似的,例如,較低的n GB 是隨機位址記憶體(RAM)並且在客實體記憶體頂部之空間被使用於記憶體映製輸入/輸出(IO),各VM使用其自我之延伸頁面表樹,因為每個VM之個別的客實際至主機實際之映製是不同的。這方法可能消耗相當之記憶體數量,其可能是昂貴 的資源(例如,於嵌入式系統中)。
依據本發明之一實施例,係特地提出一種轉換一記憶體位址之方法,該方法包括下列步驟:接收用於一虛擬機器之一客邏輯記憶體位址;自該客邏輯記憶體位址決定一索引頁面參考;取回對應至該虛擬機器的一頁面索引;使用該頁面索引自一索引頁面取回該主機實體記憶體位址之一第一部份;自該客邏輯記憶體位址取回該主機實體記憶體位址之一第二部份;以及自該主機實體記憶體位址之該等第一以及第二部份產生該主機實體記憶體位址。
100‧‧‧裝置
102‧‧‧虛擬機器
104、1140、1232、1234‧‧‧記憶體
106‧‧‧中央處理單元
108‧‧‧虛擬機器控制結構
110‧‧‧延伸頁面表
112‧‧‧虛擬機器管理器
114、304‧‧‧頁面索引
116‧‧‧位址轉譯模組
118‧‧‧寫入時複製模組
200、300‧‧‧客邏輯記憶體位址
202A-D、302A-C‧‧‧記憶體位址片段
302D‧‧‧實體位址部份B
306‧‧‧實體記憶體位址
308‧‧‧第一位準頁面表
310‧‧‧第一位準入口
312‧‧‧第二位準頁面表
314‧‧‧第二位準入口
316‧‧‧第三位準表
318‧‧‧索引入口
320、324‧‧‧實體位址部份A
322‧‧‧索引頁面
326‧‧‧實體位址單元
328‧‧‧索引頁面參考
330‧‧‧正規頁面
400‧‧‧記憶體位址映製方法
401-413‧‧‧位址映製步驟
500‧‧‧寫入時複製方法
501-515‧‧‧寫入時複製步驟
601‧‧‧接收客邏輯記憶體位址模組
603‧‧‧決定索引頁面入口模組
605‧‧‧取得索引頁面參考模組
607‧‧‧取得頁面索引模組
609‧‧‧取得主機實體記憶體位址之第一部份模組
611‧‧‧取得主機實體記憶體位址之第二部份模組
613‧‧‧產生主機實體記憶體位址模組
701‧‧‧決定COW情況模組
703‧‧‧檢測寫入至唯讀記憶體模組
705‧‧‧取得客實體記憶體模組
707‧‧‧取得頁面索引入口模組
709‧‧‧計算主機實體記憶體位址模組
711‧‧‧複製記憶體區域模組
713‧‧‧產生預定COW模組
800‧‧‧管線
802‧‧‧擷取級
804‧‧‧長度解碼級
806‧‧‧解碼級
808‧‧‧分配級
810‧‧‧換名級
812‧‧‧排程級
814‧‧‧暫存器讀取/記憶體讀取級
816‧‧‧執行級
818‧‧‧回寫/記憶體寫入級
822‧‧‧異常處理級
824‧‧‧提交級
830‧‧‧前端點單元
832‧‧‧分支預測單元
834‧‧‧指令快取單元
836‧‧‧指令轉譯後備緩衝器單元
838‧‧‧指令擷取
840‧‧‧解碼單元
850‧‧‧執行引擎單元
852‧‧‧換名/分配器單元
854‧‧‧除役單元
856‧‧‧排程器單元
858‧‧‧實際暫存器檔案單元
860‧‧‧執行群集
862‧‧‧執行單元
864‧‧‧記憶體存取單元
870‧‧‧記憶體單元
872‧‧‧資料TLB單元
874‧‧‧資料快取單元
876‧‧‧L2快取單元
890‧‧‧處理器核心
900‧‧‧指令解碼器
902‧‧‧環狀網路
904‧‧‧L2快取局部性子集
906‧‧‧L1快取
906A‧‧‧L1資料快取
908‧‧‧純量單元
910‧‧‧向量單元
912‧‧‧純量暫存器
914‧‧‧向量暫存器
920‧‧‧拌和單元
922A、922B‧‧‧數值轉換單元
924‧‧‧複製單元
926‧‧‧寫入遮罩暫存器
928‧‧‧16位元寬度ALU
1000、1110、1115、1270、1280、1420‧‧‧處理器
1002A-N‧‧‧核心
1004A-N‧‧‧快取單元
1006‧‧‧共用快取單元
1008‧‧‧互連整合圖形邏輯
1010‧‧‧系統媒介單元
1012‧‧‧環狀基礎互連單元
1014‧‧‧整合記憶體控制器單元
1016‧‧‧匯流排控制器單元
1100、1200、1300‧‧‧系統
1120‧‧‧控制器中樞
1145‧‧‧協同處理器
1150‧‧‧輸入/輸出中樞
1160‧‧‧輸入/輸出裝置
1190‧‧‧圖形記憶體控制器中樞
1195‧‧‧連接
1214、1314‧‧‧I/O裝置
1216、1220‧‧‧匯流排
1218‧‧‧匯流排橋
1222‧‧‧鍵盤及/或滑鼠
1224‧‧‧音訊I/O裝置
1227‧‧‧通訊裝置
1228‧‧‧儲存單元
1230‧‧‧指令/指令碼及資料
1230‧‧‧指令碼
1238‧‧‧協同處理器
1239‧‧‧高性能界面
1250‧‧‧點對點互連
1252、1254‧‧‧P-P界面
1272、1282‧‧‧整合記憶體控制器單元
1276、1294、1286、1298‧‧‧點對點界面電路
1278、1288‧‧‧P-P界面電路
1290‧‧‧晶片組
1296‧‧‧界面
1315‧‧‧遺留I/O裝置
1400‧‧‧單晶片上系統
1402‧‧‧互連單元
1410‧‧‧應用處理器
1430‧‧‧靜態隨機存取記憶體單元
1432‧‧‧直接記憶體存取單元
1440‧‧‧外部顯示單元
1502‧‧‧高階語言
1504‧‧‧x86編譯器
1506‧‧‧x86二進制指令碼
1508‧‧‧指令集編譯器
1510‧‧‧指令集二進制指令碼
1512‧‧‧指令轉換器
1514、1516‧‧‧x86指令集核心
本發明藉由範例圖解地被說明並且不限定於附圖之圖形中,於其中相同之參考指示相似元件,並且於其中:圖1是圖解地說明依據本發明一實施例之具有複數個虛擬機器(VM)的裝置之方塊圖。
圖2是圖解地說明依據本發明一實施例之客邏輯記憶體位址的方塊圖。
圖3是圖解地說明依據本發明一實施例之使用頁面索引映製一客邏輯記憶體位址至一主機實體記憶體位址的方塊圖。
圖4是圖解地說明使用一頁面索引映製一虛擬邏輯記憶體位址至一主機實體記憶體位址之方法的實施例。
圖5是圖解地說明使用一頁面索引進行一寫入時複製 的方法之實施例。
圖6是圖解地說明依據本發明一實施例之使用一頁面索引而映製一虛擬邏輯記憶體位址至一主機實體記憶體位址的位址轉譯模組之方塊圖。
圖7是圖解地說明依據本發明一實施例之使用一頁面索引進行一寫入時複製的寫入時複製模組之方塊圖。
圖8A是圖解地說明依據本發明實施例之有序管線範例以及暫存器換名、無序發出/執行管線範例的方塊圖。
圖8B是圖解地說明依據本發明實施例之被包含於處理器中的有序結構核心以及暫存器換名、無序發出/執行結構核心範例的實施例之方塊圖。
圖9A及9B是圖解地說明依據本發明實施例之一有序核心結構範例的方塊圖。
圖10是圖解地說明依據本發明實施例之可具有多於一個核心的處理器之方塊圖。
圖11是依照本發明一實施例之第一系統的方塊圖。
圖12是依照本發明一實施例之第二系統的方塊圖。
圖13是依照本發明一實施例之第三系統的方塊圖。
圖14是依照本發明一實施例之單晶片系統(SoC)的方塊圖。
圖15是依據本發明實施例之對照使用一軟體指令轉換器以轉換一來源指令集之二進制指令為目標指令集之二進制的方塊圖。
較佳實施例之詳細說明
於下面說明中,許多特定細節被提出。但是,應了解,本發明實施例可以不必這些特定細節而被實施。於其他實例中,習知電路、結構以及技術不詳細地被展示,以免混淆這說明之了解。
說明中提及之“一實施例”、“一個實施例”、“一實施範例”等等,指示所述之實施例可包含一特定的特點、結構、或特性,但是每個實施例可以不必定得包含該特定的特點、結構、或特性。此外,此等片語不必定得是關連於相同實施例。進一步地,當一特定的特點、結構、或特性關連於一實施例被說明時,不論其是否明確地被說明,其被認為是在熟習本技術者所了解的知識之內,以使得此等特點、結構、或特性關連於其他實施例發生作用。
索引頁面轉譯
下面是使用一頁面索引映製一客邏輯記憶體位址至一主機實體記憶體位址之實施例,其是有益於減低虛擬化環境中之記憶體使用量。於一實施例中,一VMM使用一索引頁面以轉譯一客邏輯記憶體位址至一主機實體記憶體位址。於這實施例中,各VM具有其獨有的頁面索引,其被使用以參考被儲存於一索引頁面中之一對應的客實體記憶體位址。藉由查走如利用一客邏輯記憶體位址之片段所決定的一組頁面表,VMM取回對應的索引頁面之一位址。該VMM取回對於那VM的頁面索引,其是進入該索引頁面之一偏移量。於索引頁面中利用頁面索引被指示的入口包 含客實體記憶體位址。這客實體記憶體位址與客邏輯記憶體位址之一片段組合以形成主機實體記憶體位址。除了客至主機轉譯之外,VMM可使用頁面索引以協助寫入時複製或協助寫入時複製之記憶體管理機構。
圖1是展示具有複數個虛擬機器(VM)之裝置100的方塊圖。於圖1中,裝置100包含一個或多個虛擬記憶體機器(VM)102、記憶體104、以及一個或多個中央處理單元(CPU)106。於一實施例中,該裝置可以是能夠執行一個或多個虛擬機器(個人電腦、膝上型電腦、伺服器、嵌入式裝置、可程控邏輯控制器(PLC)等等的裝置型式,及/或能夠執行一個或多個虛擬機器之任何其他型式的裝置)。於一實施例中,各個CPU 106可以是單一核心或多核心處理器。於一實施例中,記憶體104是實體記憶體(例如,參看下面第8圖)。
於一實施例中,裝置100包含執行於裝置100上的一個或多個VM 102。於這實施例中,一個VMM 112使用一延伸頁面表(EPT)110以及頁面索引114而控制一組VM 102。一VM是一機器(例如,電腦)之一軟體實作例,其相同於一實體機器而執行程式。於一實施例中,一虛擬機器提供一系統平臺,其支援一操作系統(OS)之執行。如果有多於一個VM,則該等VM之各者可進行相同或不同的OS並且這OS可以是相同或不同於執行於裝置100中之OS。例如,以及於一實施例中,電腦可執行Microsoft WindowsTM ,因而VM 102可進行相同或不同的OS(例如,相同或不同形式 的Microsoft WindowsTM 、Apple Mac OSXTM 、Java OS、UNIX-為主OS等等)。
因為各個VM 102是在裝置100內執行之一分別的機器,各個VM 102包含一虛擬機器管理器(VMM)112,其被使用以同時地進行於主機裝置100上。對於各VM 102之VMM 112呈現一虛擬操作平臺給VM 102之客OS並且管理客OS之執行。此外,VMM 112管理在對應的VM 102之邏輯記憶體位址空間至記憶體104的實體記憶體位址空間之間的記憶體轉譯。於一實施例中,各個VM 102顯示而具有用以執行於VM 102中之處理程序的一記憶體區域。於這實施例中,執行於VM 102中之一處理程序使用邏輯記憶體位址以定址記憶體。當處理程序使用邏輯記憶體位址以存取記憶體時,關聯於VM 102之VMM 112轉譯邏輯記憶體位址至實體主機記憶體位址。於一實施例中,實體客記憶體位址是VM 102之實體記憶體位址,如同VM 102是具有實體記憶體的一實際實體機器。因為VM 102是沒有實體記憶體之虛擬機器,這實體客記憶體位址將需要被轉譯至記憶體104之記憶體位址的實體主機記憶體位址。於一實施例中,一客體是VM 102並且主機是支援VM 102之裝置100。於一實施例中,一個或多個CPU 106包含一位址轉譯模組116以及寫入時複製模組118。於一實施例中,位址轉譯模組116轉譯客邏輯記憶體位址至主機實體記憶體位址。於一實施例中,寫入時複製模組118進行一寫入時複製。
於一實施例中,對於VM 102之一延伸頁面表 (EPT)110可被使用以進行自邏輯客記憶體位址至實體主機位址的轉譯處理程序。於這實施例中,各EPT 110被VMM所使用以進行轉譯。但是,雖然對於各VM,一般客實際位址空間安排是相似的,其中較低的nGB 是隨機位址記憶體(RAM)以及在客實體記憶體頂部之空間被使用於記憶體映製輸入/輸出(IO),各VM將需要其獨有的延伸頁面表樹,因為每個VM之分別客實體至主機實體的映製是不同的。這方法消耗大量的記憶體數量,其尤其於嵌入式系統中可能是昂貴的資源。
於一實施例中,一頁面索引114被使用以協助客邏輯記憶體位址轉譯至主機實體記憶體位址轉譯並且降低用於各VM 102之EPT 110的記憶體需求。於一實施例中,索引化頁面映製是正規EPT機構的延伸,如上所述,其允許VMM 112使用一另外的索引暫存器(例如,於VM控制結構中之一入口),以自每個客實體位址之一組頁面訊框選擇一者。於一實施例中,延伸頁面表入口(EPTE),或對於一超級頁面,2MB延伸頁面目錄入口(EPDE)或其他目錄入口,或進一步地於延伸頁面表階系向上中,不直接地指示至資料頁面,但是指示至被稱為一索引頁面之一另外層級。於索引頁面中,其中CPU所選的哪一入口利用一另外欄(PGIDX)被選擇,該另外欄(PGIDX)被安置於VM之控制結構(VMCS)中。
例如,並且於一實施例中,不必使用頁面索引,主持許多虛擬機器之一電腦結構對於各個虛擬機器建立一 EPT,或如果具有CPU局域性記憶體之一非一致的記憶體存取(NUMA)機器是將被使用,則每個VM之每個CPU之一EPT是需要的。於這些情況中,除了非常少的頁面之外,EPT樹結構可以是相似的並且可能是相同的。於一實施例中,具有4GB客實體記憶體之一VM的EPT所需之記憶體數量是2050個頁面(每個4KB)以保持EPT頁面表。如果二個VM是執行於主機裝置上,則僅EPT方法將需要另一組之2050頁面(每個需4KB)表或另一個8MB之記憶體。藉由使用一索引化頁面,1024個索引頁面被分配並且於EPTE入口中之索引化頁面被引動並且它們的位址被設定至該索引頁面。於這實施例中,有一個EPT以及供用於虛擬機器的索引頁面以及高至512個虛擬機器各接收索引頁面中之一個程式位置。頁面索引之使用將於下面圖3及4中進一步被說明。雖然於一實施例中,各記憶體位址是64位元位址,於不同實施例中,各記憶體位址可以是一不同的尺度(16、32位元位址等等)。更進一步地,以及於一實施例中,各記憶體位址片段可以是相同或不同的尺度(例如,9位元等等)。
圖2是圖解地說明客邏輯記憶體位址200之方塊圖。於一實施例中,自一執行應用程式之觀點,客邏輯記憶體位址是一入口(例如,記憶胞等等)顯示存在於其中的一位址。於一實施例中,客邏輯記憶體位址200包含記憶體位址片段202A-D。於一實施例中,記憶體位址片段202A-C是進入被使用以取得一客實體記憶體位址之不同的頁面表的偏移量。這導出之客實體記憶體位址與頁面偏移量202D組 合。於一實施例中,頁面偏移量202D是12位元,並且其他記憶體位址片段202A-C各是9或10位元。客邏輯記憶體位址是如何被轉譯將進一步被說明於下面的圖3及4中。
圖3是展示使用一頁面索引304而映製一客邏輯記憶體位址300至一主機實體記憶體位址306的方塊圖。於圖3中,客邏輯記憶體位址300包含記憶體位址片段302A-C以及頁面偏移量302D,其中記憶體位址片段302A-C被使用作為進入不同的頁面表之偏移量並且其被使用以取得一客實體記憶體位址。於一實施例中,記憶體位址片段302A是進入第一位準頁面表308之一偏移量。這偏移量指至第一位準頁面表308中之一入口310,該入口310指至第二位準表312。記憶體位址片段302B是進入第二位準頁面表312之偏移量並且指至第二位準入口314,其指出第三位準表316。
於一實施例中,當使用僅EPT為基礎之機構時,頁面表索引302C將指至實體位址部份A320。這實體位址部份A320與來自虛擬位址(300)之其餘偏移量(302D)組合。於一實施例中,實體位址單元326組合二個實體位址部份A 320以及實體位址部份B 302D。於一實施例中並且於僅EPT之機構中,每個VM有一個EPT,因為各個EPT,對於各客邏輯記憶體位址,轉譯列表之複數個位準向下至指至對應的主機實體記憶體位址之單一入口。
於一實施例中,記憶體位址片段302C指至索引入口318。如上所述,藉由使用一索引頁面322,對於一EPT之記憶體需求被降低。於這實施例中,索引入口318是對於 索引頁面322之一參考。於一實施例中,索引頁面322是允許複數個不同VM共用相同EPT之索引。將被索引頁面322中之對應的VM所使用之入口利用頁面索引304被決定。於一實施例中,頁面索引304是唯一供用於各VM之索引並且被儲存於對應至那VM之VMCS中。於一實施例中,對於各個虛擬CPU有一個索引頁面322。於這實施例中,頁面索引304指至索引頁面322中之一入口,其被實體位址單元326所使用以產生主機實體記憶體位址306。例如,並且於一實施例中,實體位址單元326自索引頁面322接收實體位址部份B 302D以及實體位址部份A 324,其被組合以產生主機實體記憶體位址306。
除了減低客對實體記憶體位址轉譯之記憶體需求之外,使用頁面索引機構之記憶體轉譯可另外地被使用以進行一寫入時複製、協助寫入時複製、非VM虛擬至實體記憶體位址轉譯、對於複數個界面之輸入/輸出(I/O)再映製以及頁面表入口屬性改變。例如並且於一實施例中,寫入時複製(COW)是一系統技術,其降低記憶體消耗並且延緩關聯於記憶體之急切複製的經常支出。於一實施例中,藉由使用索引頁面,COW頁面被映製在相同客實體位址並且有關的EPTE很可能被安置於相同索引頁面中。於這實施例中,處理程序必需查走以找出對應的來源以及目標入口之頁面表之數目被降低。
此外以及於另一實施例中,因為如上所述的這COW操作可以是決定性的,並且實際操作比對於異常 /VMEXIT處理之成本昂貴(或較少),協助COW將自動地進行複製進入一“預決定”COW頁面。該COW頁面被參考於索引頁面中並且當於第一寫入事件上複製時被使用。因此,當需要時,這實施例允許軟體撤銷該頁面。
圖4是展示使用一頁面索引而映製一虛擬邏輯記憶體位址至一主機實體記憶體位址的方法400之實施例。於一實施例中,一CPU,例如,如於上面圖1中所述之一個或多個CPU 106,進行方法400。於圖4中,方法400在區塊401開始接收客邏輯記憶體位址。於一實施例中,客邏輯記憶體位址是一位址,自對應之VM內部的一執行應用程式之觀點,在該處顯示一入口(例如,記憶胞等等)存在。例如以及於一實施例中,如上面於圖2中所述,一客邏輯記憶體位址是客邏輯記憶體位址200。
在區塊403,方法400決定對於客邏輯記憶體位址之頁面索引入口。於一實施例中,方法400取得客邏輯記憶體位址之不同的引導記憶體位址片段並且使用這些記憶體位址片段以查走頁面表而決定頁面索引入口。例如以及於一實施例中,對於一64位元客邏輯記憶體位址,如於圖3中所述,方法400使用首先的三個記憶體位址片段302A-C而查走二個不同的頁面表(308以及312)。
在區塊405,方法400取得索引頁面表參考。於一實施例中,方法400藉由取回第n位準列表之頁面索引入口之偏移量數值以取得這參考。例如以及於一實施例中,如於圖3中所述,方法400自對於第3位準列表316之偏移量索 引入口318取得索引頁面參考328。在區塊407,方法400取得對於對應至客邏輯記憶體位址的虛擬機器之頁面索引。於一實施例中,特定虛擬機器頁面索引數值是對於一特定VM之各記憶體轉譯的常數並且被儲存於VMCS中。使用所取得的頁面索引,在區塊409,方法400使用頁面索引自該索引頁面取得主機實體記憶體位址之一部份。於一實施例中,主機實體記憶體位址之這部份代表的是一頁面偏移量。例如以及於一實施例中,如於圖3中所述,方法400自利用頁面索引304所參考的入口之索引頁面322而取得主機實體記憶體位址(部份A)324。
在區塊411,方法400自客邏輯記憶體位址取得主機實體記憶體位址之第二部份。於一實施例中,如於圖3中所述,藉由取回記憶體位址片段302D,方法400自客邏輯記憶體位址取得主機實體記憶體位址之第二部份。在區塊413,方法400藉由組合主機實體記憶體位址之第一以及第二部份而形成主機實體記憶體位址。例如以及於一實施例中,如於上面圖3中之說明,方法400使用實體位址單元326以組合主機實體記憶體位址之第一324以及第二302D部份。
如上所述,客邏輯至主機實體記憶體位址轉譯之頁面索引機構可被使用於寫入時複製以及協助寫入時複製應用。圖5是展示使用一頁面索引以進行一寫入時複製或協助寫入時複製之方法的實施例。於一實施例中,一VMM,例如,如於上面圖1中所說明之VMM 112,進行方法500。於圖5中,在區塊501,方法500開始於決定不同的VM中之 二個處理共用相同主機實體記憶體區域並且這主機實體記憶體區域被映製至相同客實體位址。於一實施例中,如果主機實體記憶體區域被映製至相同客實體位址,則其是很可能對於各個VM之EPT中的入口參考相同索引頁面。
在區塊503,方法500決定協助COW是否被進行。協助COW不同於正規COW機構之處在於其被需要之前產生一預定COW頁面。當實際COW操作是昂貴於或較廉於異常/VMEXIT時,這可是有用的,以便節省VMEXIT成本。如果協助COW正被使用,在區塊515,方法500產生一預定的COW頁面。執行前進至下面的區塊505。如果協助COW不被進行,則執行前進至下面的區塊505。於一實施例中,複數個COW頁面可預先被分配於一池頁面中並且被管理。當COW頁面是所需時,池頁面之一者被使用。
在區塊505,方法500檢測處理程序之一者是將寫入至記憶體區域。於一實施例中,方法500檢測一處理程序寫入至被標記為唯讀的記憶體區域之記憶體區域。藉由試圖寫入至唯讀記憶體,一異常被提出以啟動寫入時複製處理程序。反應於寫入至記憶體區域之檢測,在區塊507,方法500取得對於各個VM之用於記憶體區域的客實體位址。於一實施例中,因為二處理程序是使用一頁面索引,需要查走一頁面表以決定對於各VM之客實體位址。
在區塊509,方法500取得用於各VM之頁面索引。於一實施例中,方法500自VMCS取得用於各VM之頁面索引。在區塊511,使用所取得的頁面索引,方法500計 算主機實體記憶體位址。於一實施例中,方法500使用對於各VM之頁面索引而取得一部份的主機實體記憶體位址。藉由使用對於各VM之頁面索引,一頁面表查走被形成以得到二個主機實體記憶體位址。在區塊513,方法500複製主機實體位址之記憶體區域,標誌該複製作為可寫入的。於一實施例中,方法500於VMM中儲存供用於複製區域之預定頁面的位址進入在該VM之對應入口的索引頁面。於另一實施例中,使用協助COW機構,預分配頁面之位址利用CPU被儲存進入在該VM之對應入口的索引頁面。
於一實施例中,除了COW以及協助COW應用之外,頁面索引可被使用於其他記憶體應用中。例如以及於一實施例中,一頁面索引機構可被應用至虛擬於主機裝置上之實體記憶體位址轉譯。於這實施例中,資料被複製進入預定的頁面。頁面索引之這範例,可被應用以處理I/O操作之一頁面無呈現之缺點。
於另一範例中以及於另一實施例中,頁面索引可被應用於I/O再映製應用中。於這實施例中,具有複數個界面之網路卡可具有被分配以供用於各界面的一頁面表。使用該頁面索引,複數個頁面表可被一頁面表所取代並且一索引頁面被使用於先前被複數個頁面表所採用的功能上。
於進一步範例以及進一步實施例中,頁面索引可被使用以快速地改變頁面表入口屬性之狀態。因為頁面表索引大體上可達到記憶體參考之最後位準,頁面索引機構可立刻切換一大的映製圖。這是有用於追蹤改變的檔案(例 如,自動備份系統),或有用於VM之速取。
圖6是展示虛擬記憶體監視器112使用一頁面索引而映製一虛擬邏輯記憶體位址至一主機實體記憶體位址的方塊圖。於一實施例中,位址轉譯模組116包含接收客邏輯記憶體位址模組601、決定索引頁面入口模組603、取得索引頁面參考模組605、取得頁面索引模組607、取得主機實體記憶體位址之第一部份模組609,取得主機實體記憶體位址之第二部份模組611、以及產生主機實體記憶體位址模組613。於一實施例中,在上面區塊401,如於圖4中所述,接收客邏輯記憶體位址模組601接收客邏輯記憶體位址。於一實施例中,在上面區塊403,如於圖4中所述,決定索引頁面入口模組603指示頁面入口。於一實施例中,在上面區塊405,如於圖4中所述,取得頁面索引參考模組605取得頁面索引參考。於一實施例中,在上面區塊407,如於圖4中所述,取得頁面索引模組607取得頁面索引。於一實施例中,在上面區塊409,如於圖4中所述,取得主機實體記憶體位址之第一部份模組609取得主機實體記憶體位址之第一部份。於一實施例中,在上面區塊411,如於圖4中所述,取得主機實體記憶體位址之第二部份模組611取得主機實體記憶體位址之第二部份。於一實施例中,在上面區塊413如於圖4中所述,產生主機實體記憶體位址模組613產生主機實體記憶體位址。
圖7是圖解地說明寫入時複製模組118使用一頁面索引以進行一寫入時複製之方塊圖。於一實施例中,寫 入時複製模組118包含決定COW情況模組701、檢測寫入至唯讀記憶體模組703、取得客實體記憶體模組705、取得頁面索引入口模組707、計算主機實體記憶體位址模組709、複製記憶體區域模組711以及產生預定COW模組713。於一實施例中,在上面區塊501,如於圖5中所述,決定COW情況模組701決定一COW情況。於一實施例中,在上面區塊505,如於圖5中所述,檢測寫入至唯讀記憶體模組703檢測寫入至唯讀記憶體。於一實施例中,在上面區塊507,如於圖5中所述,取得客實體記憶體位址模組705取得客實體記憶體位址。於一實施例中,在上面區塊509,如於圖5中所述,取得頁面索引入口模組707取得該頁面索引入口。於一實施例中,在上面區塊511,如於圖5中所述,計算主機實體記憶體位址模組709計算該主機實體記憶體位址。於一實施例中,在上面區塊513,如於圖5中所述,複製記憶體區域模組711複製記憶體區域。於一實施例中,在上面區塊515,如於圖5中所述,產生預定COW模組713產生該預定COW頁面。
核心結構、處理器以及電腦結構範例
對於不同用途的處理器核心,可以不同方式以及於不同的處理器中被實作。例如,例如,此等核心之實作可包含:1)有意用於一般用途計算之一般用途的有序核心;2)有意用於一般用途計算之高性能的一般用途無序核心;3)有意主要用於圖形及/或科學(總產量)計算之特定用途核心。不同處理器之實作例可包含:1)包含有意用於一 般用途計算之一個或多個一般用途有序核心及/或有意用於一般用途計算的一個或多個一般用途無序核心之CPU;以及2)包含有意主要用於圖形及/或科學(總產量)之一個或多個特定用途核心的協同處理器。此等不同處理器導致不同的電腦系統結構,其可包含:1)與CPU分別之晶片上的協同處理器;2)與CPU相同之封裝中的分別晶圓上之協同處理器;3)與CPU相同之晶圓上的協同處理器(於其實例中,此一協同處理器有時被稱為特定用途邏輯,例如,整合圖形及/或科學(總產量)邏輯,或作為特定用途核心);以及4)可包含在相同晶圓上之上述CPU(有時被稱為應用核心或應用處理器)、上述之協同處理器以及另外的功能性之單晶片系統。核心結構範例接著被說明,隨後有處理器以及電腦結構範例之說明。
核心結構範例 ‧有序以及無序核心方塊圖
圖8A是依照本發明實施例圖解地說明有序管線範例以及暫存器換名、無序發出/執行管線範例之方塊圖。圖8B是依照本發明實施例圖解地說明將被包含在處理器中之有序結構核心範例以及暫存器換名、無序發出/執行結構核心範例之兩實施例的方塊圖。。第8A-B圖中中之實線方形圖解地說明有序管線以及有序核心,而虛線方形之選擇增加部份圖解地說明暫存器換名、無序發出/執行管線以及核心。在有序論點是無序論點之一子集的情況,該無序論點將被說明。
於圖8A中,處理器管線800包含擷取級802、長度解碼級804、解碼級806、分配級808、換名級810、排程(同時也習知如a發送或發出)級812、暫存器讀取/記憶體讀取級814、執行級816、回寫/記憶體寫入級818、異常處理級822、以及提交級824。
圖8B展示包含耦合至一執行引擎單元850之一前端點單元830的處理器核心890,並且其兩者皆被耦合至一記憶體單元870。核心890可以是可以是簡化指令集計算(RISC)核心、複雜指令集計算(CISC)核心、非常長指令字組(VLIW)核心或一混合或交錯的核心型式。再如另一選擇,例如,核心890可以是一特殊用途核心,例如,一網路或通訊核心、壓縮引擎、協同處理器核心、一般用途電腦圖形處理單元(GPGPU)核心、圖形核心、或其類似者。
前端點單元830包含耦合至一指令快取單元834之分支預測單元832,其耦合至一指令轉譯後備緩衝器(TLB)836,其耦合至一指令擷取單元838,其耦合至解碼單元840。解碼單元840(或解碼器)可解碼指令,並且產生如一個或多個微運算、微指令碼入口點、微指令、其他指令或其他控制信號之輸出,其自原始指令被解碼,或其以不同方式反映原始指令,或導自於原始指令。解碼單元840可使用各種不同機構被實作。適當的機構範例包含,但是不受限定於,查詢表、硬體實作、可程控邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等等。於一實施例中,核心890包含一微碼ROM或其他的媒體,而儲存用於某些巨指令的微碼(例 如,於解碼單元840中或此外在前端點單元830之內)。解碼單元840耦合至執行引擎單元850中之換名/分配器單元852。
執行引擎單元850包含耦合至除役單元854之換名/分配器單元852以及一組之一個或多個排程器單元856。該等排程器單元856代表任何數目的不同差異排程器,其包含保留站、中央指令窗口,等等。排程器單元856耦合至實際暫存器檔案單元858。各個實際暫存器檔案單元858代表一個或多個實際暫存器檔案,其不同的一者儲存一個或多個不同的資料型式,例如,純量整數、純量浮動點、封裝整數、封裝浮動點、向量整數、向量浮動點、狀態(例如,一指令指示器,其是將被執行的下一個指令之位址)等等。於一實施例中,實際暫存器檔案單元858包括向量暫存器單元、寫入遮罩暫存器單元以及純量暫存器單元。這些暫存器單元可提供結構向量暫存器、向量遮罩暫存器、以及一般用途暫存器。實際暫存器檔案單元858被除役單元854重疊以說明各種方式,於其中暫存器換名以及無序執行可被實作(例如,使用一重排緩衝器以及一除役暫存器檔案;使用一未來檔案、一歷史緩衝器、以及一除役暫存器檔案;使用一暫存器映圖以及一暫存器池;等等)。除役單元854以及實際暫存器檔案單元858被耦合至執行群集860。執行群集860包含一組的一個或多個執行單元862以及一組的一個或多個記憶體存取單元864。執行單元862可以在各種型式資料上(例如,純量浮動點、封裝整數、封裝浮 動點、向量整數、向量浮動點)進行各種運算(例如,移位、添加、減去、乘法)。雖然一些實施例可包含專用於特定功能或功能組之一些執行單元,其他實施例可僅包含所有進行全部功能的一個執行單元或複數個執行單元。排程器單元856、實際暫存器檔案單元858、以及執行群集860被展示為可能是複數,因為某些實施例對於某些型式之資料/操作產生分別管線(例如,一純量整數管線、純量浮動點/封裝整數/封裝浮動點/向量整數/向量浮動點管線、及/或記憶體存取管線,其各具有它們獨有的排程器單元、實際暫存器檔案單元、及/或執行群集-並且於一分別記憶體存取管線之情況中,某些實施例被實作,於其中僅這管線之執行群集具有記憶體存取單元864)。同時也應了解,在使用分別的管線情況,一個或多個的這些管線可以是無序發出/執行且其餘是有序。
記憶體存取單元864集合耦合至記憶體單元870,其包含耦合至資料快取單元874(其耦合至位準2(L2)快取單元876)之資料TLB單元872。於一實施範例中,記憶體存取單元864可包含負載單元、儲存位址單元以及儲存資料單元,其各耦合至記憶體單元870中之資料TLB單元872。指令快取單元834進一步耦合至記憶體單元870中之位準2(L2)快取單元876。L2快取單元876耦合至一個或多個其他位準之快取並且最後耦合至一主記憶體。
藉由範例,範例暫存器換名、無序發出/執行核心結構可如下所示地實作管線800:1)指令擷取838進行擷 取以及長度解碼級802以及804;2)解碼單元840進行解碼級806;3)換名/分配器單元852進行分配級808以及換名級810;4)排程器單元856進行排程級812;5)實際暫存器檔案單元858以及記憶體單元870進行暫存器讀取/記憶體讀取級814;執行聚集860進行執行級816;6)記憶體單元870以及實際暫存器檔案單元858進行回寫/記憶體寫入級818;7)各種單元可被包含於異常處理級822中;並且8)除役單元854以及實際暫存器檔案單元858進行提交級824。
核心890可支援包含於此處說明之指令的一個或多個指令集(例如,x86指令集(具有被添加之較新版本的一些擴充);美國加州森尼維耳市之MIPS技術的MIPS指令集;美國加州森尼維耳市之ARM持股公司的ARM指令集(具有選擇之另外的擴充,例如NEON))。於一實施例中,核心890包含支援一封裝資料指令集擴充的邏輯(例如,AVX1、AVX2、等等),因而允許被許多多媒體應用所使用的操作將使用封裝資料被進行。
應了解,該核心可支援多線程(執行二個或更多個平行的操作或線程集合),並且可因此以多種方式處理,該等多種方式包含分時多線程、同時多線程(其中一單一實體核心提供對於實體核心是同時地多線程之各線程之一邏輯核心)、或其組合(例如,分時擷取與解碼以及隨後的同時多線程,例如,Intel®Hyperthreading技術)。
雖然暫存器換名被說明於無序執行之文脈中,應了解,暫存器換名可被使用於有序結構中。雖然說明之處 理器實施例也包含分別的指令與資料快取單元834/874以及一共用L2快取單元876,另外實施例可具有,例如,供用於指令以及資料兩者之單一內部快取,例如,位準1(L1)內部快取、或複數個位準內部快取。於一些實施例中,系統可包含一內部快取以及外加於該核心及/或處理器的一外部快取之組合。另外地,所有的快取可以是外加於該核心及/或該處理器。
‧有序核心結構的特定範例
第9A-B圖是圖解地說明有序核心結構之更多特定範例的方塊圖,其核心將是一晶片中許多邏輯區塊(包含相同型式及/或不同型式的其他核心)之一者。該等邏輯區塊經由高頻寬互連網路(例如,環狀網路),取決於應用,而通訊於一些固定功能邏輯、記憶體I/O界面、以及其他必須I/O邏輯。
圖9A是依照本發明實施例之單一處理器核心與其連接之晶圓上的互連網路902以及其位準2(L2)快取904之局部性子集的方塊圖。於一實施例中,指令解碼器900支援具有封裝資料指令集擴充功能的x86指令集。L1快取906允許低潛伏期存取快取記憶體進入純量以及向量單元。雖然於一實施例中(以簡化其設計),一純量單元908以及一向量單元910使用分別的暫存器集合(分別是,純量暫存器912以及向量暫存器914)並且在它們之間轉移的資料被寫入至記憶體並且接著自位準1(L1)快取906中被回讀,本發明另外的實施例可使用不同的方法(例如,使用單一暫存器集合 或包含允許資料在二個暫存器檔案之間轉移而不必被寫入以及回讀的通訊路線)。
L2快取904之局部性子集是廣域L2快取之部份,該廣域L2快取被分割成為每個處理器核心有一個之分別的局部性的子集。各處理器核心具有直接存取路線至其之自己的L2快取904之局部性子集。利用一處理器核心所讀取的資料被儲存於其之L2快取子集904中,並且可與存取它們獨有的局部性L2快取子集的其他處理器核心快速地、平行地被存取。利用處理器核心被寫入之資料被儲存於其之自己的L2快取子集904中,並且如果必須的話,則自其他子集被湧送。環狀網路保護共用資料之協調性。環狀網路是雙向作用以允許媒介,例如,處理器核心、L2快取以及其他邏輯區塊在晶片內彼此通訊。各環形資料通道的每個方向是1012位元寬。
圖9B是依照本發明實施例之圖9A中的處理器核心之部份展開圖。圖9B包含L1快取904之L1資料快取906A部份,以及更多關於向量單元910以及向量暫存器914之詳細說明。明確地說,向量單元910是16位元寬度向量處理單元(VPU)(參看16位元寬度ALU 928),其執行一個或多個整數、單精確性浮動、以及雙重精確性浮動指令。支援於記憶體輸入上之利用拌和單元920拌合暫存器輸入、利用數值轉換單元922A-B之數值轉換、以及利用複製單元924之複製。寫入遮罩暫存器926允許推斷產生的向量寫入。
具有整合記憶體控制器以及圖形之處理器
圖10是是依照本發明實施例之處理器1000的方塊圖,處理器1000可具有多於一個核心、可具有一整合記憶體控制器、以及可具有整合圖形。圖10中之實線方塊說明具有單一核心1002A、系統媒介1010、一組的一個或多個中樞控制器單元1016之處理器1000,而選擇添加之虛線方塊說明具有複數個核心1002A-N、系統媒介單元1010中之一組的一個或多個整合記憶體控制器單元1014、以及特定用途邏輯1008之不同處理器1000。
因此,處理器1000的不同實作例可包含:1)具有整合圖形及/或科學(總產量)邏輯的特定用途邏輯1008之一CPU(其可包含一個或多個核心)、以及一個或多個一般用途核心之核心1002A-N例如,一般用途有序核心、一般用途無序核心、其二者之組合);2)一協同處理器,其具有有意主要地用於圖形及/或科學(總產量)之大量特定用途核心的核心1002A-N;以及3)一協同處理器,其具有大量之一般用途有序核心的核心1002A-N。因此,處理器1000可以是,例如,一個一般用途處理器、協同處理器或特殊用途處理器,例如,網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(一般用途圖形處理單元)、高產量多整合核心(MIC)協同處理器(包含30或更多個核心)、嵌入式處理器、或其類似者。處理器可被實作於一個或多個晶片上。處理器1000可以是一個或多個基片的一部份及/或,例如,可使用任何的一些處理技術,例如,BiCMOS、CMOS、或NMOS而被實作於一個或多個基片上。
記憶體階系包含在該等核心內之一個或多個快取位準、一組或一個或多個共用快取單元1006以及耦合至該組整合記憶體控制器單元1014之外部記憶體(未被展示)。該組共用快取單元1006可包含一個或多個中間位準快取,例如,位準2(L2)、位準3(L3)、位準4(L4)或其他快取位準、一最後位準快取(LLC)及/或其組合。雖然於一實施例中,一環狀基底互連單元1012互連整合圖形邏輯1008、該組共用快取單元1006、以及系統媒介單元1010/整合記憶體控制器單元1014,不同的實施例可使用任何數量之習知技術以供互連此等單元。於一實施例中,其被保持在一個或多個快取單元1006以及核心1002-A-N之間。
於一些實施例中,一個或多個核心1002A-N是能夠多重排程。系統媒介1010包含調節以及操作核心1002A-N的那些構件。系統媒介單元1010可包含,電力控制單元(PCU)以及顯示單元。PCU可以是或包含用以調整核心1002A-N以及整合圖形邏輯1008之電力狀態所需的邏輯以及構件。顯示單元是用以驅動一個或多個外部地連接顯示器。
核心1002A-N可以是同質的或異質的,就結構指令集而論;亦即,二個或更多個核心1002A-N可以是能夠執行相同指令集,而其他者則可以是僅能夠執行該指令集之一子集或一不同的指令集。
電腦結構範例
第11-14圖是電腦結構範例之方塊圖。供用於膝上型電腦、桌上型電腦、手持個人電腦、個人數位助理、 工程工作站、伺服器、網路裝置、網路中樞、交換機、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、手機、輕便媒體播放機、手持裝置、以及各種其他電子式裝置之習知技術的其他系統設計以及組態也是適合的。大體上,可包含如此處揭示之處理器及/或其他執行邏輯之非常多種系統或電子式裝置通常也是適合的。
接著參看至圖11,其所展示的是依據本發明一實施例之系統1100的方塊圖。系統1100可包含一個或多個處理器1110、1115,其被耦合至控制器中樞1120。於一實施例中,控制器中樞1120包含圖形記憶體控制器中樞(GMCH)1190以及輸入/輸出中樞(IOH)1150(其可以是在分別的晶片上);GMCH 1190包含耦合至記憶體1140以及協同處理器1145的記憶體以及圖形控制器;IOH 1150是耦合輸入/輸出(I/O)裝置1160至GMCH 1190。另外地,記憶體以及圖形控制器之一者或兩者被整合在處理器之內(如此處之說明),記憶體1140以及協同處理器1145直接地耦合至具有IOH 1150之單一晶片中的處理器1110以及控制器中樞1120。
另外的處理器1115之可選擇性質是圖11中中以虛線表示者。各個處理器1110、1115可包含此處說明之一個或多個處理核心並且可以是處理器1000的一些形式。
記憶體1140可以是,例如,動態隨機存取記憶體(DRAM)、相位改變記憶體(PCM)或其二者之組合。對於至 少一個實施例,控制器中樞1120經由多點匯流排,例如,前面匯流排(FSB)、點對點界面,例如,快速通道互連(QPI)、或相似連接1195與處理器1110、1115通訊。
於一實施例中,協同處理器1145是,例如,特殊用途處理器,例如,高產量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器,或其類似者。於一實施例中,控制器中樞1120可包含一整合圖形加速裝置。
就包含結構學、微結構學、熱量學、功率消耗特性以及其類似者之價值觀而論,在實體資源1110、1115之間可以是具有多種差異性。
於一實施例中,處理器1110執行控制一般型式之資料處理操作的指令。被嵌入指令內部者可以是協同處理器指令。處理器1110確認這些協同處理器指令是將利用附帶的協同處理器1145被執行之型式。因此,處理器1110在協同處理器匯流排或其他互連上發出這些協同處理器指令(或代表協同處理器指令之控制信號),至協同處理器1145。協同處理器1145接受以及執行所接收的協同處理器指令。
接著參看至圖12,其所展示的是依據本發明一實施例之第一更特定範例系統1200的方塊圖。如於圖12之展示,多處理器系統1200是點對點互連系統,並且包含經由點對點互連1250耦合的一第一處理器1270以及第二處理器1280。處理器1270以及1280各可以是處理器1000的一些形式。於本發明一實施例中,處理器1270以及1280分別是處 理器1110以及1115,而協同處理器1238是協同處理器1145。於另一實施例中,處理器1270以及1280分別是處理器1110及協同處理器1145。
處理器1270以及1280被展示,而分別地包含整合記憶體控制器(IMC)單元1272以及1282。處理器1270同時也包含點對點(P-P)界面1276以及1278作為其之匯流排控制器單元之部份;同樣地,第二處理器1280包含P-P界面1286以及1288。處理器1270、1280可使用P-P界面電路1278、1288經由點對點(P-P)界面1250交換資訊。如於圖12之展示,IMC1272以及1282耦合處理器至分別的記憶體,亦即,記憶體1232以及記憶體1234,其可以是局部性被附帶至分別處理器之主記憶體部份。
處理器1270、1280各可使用點對點界面電路1276、1294、1286、1298經由分別的P-P界面1252、1254而與晶片組1290交換資訊。晶片組1290可經由高性能界面1239而可選擇地與協同處理器1238交換資訊。於一實施例中,協同處理器1238,例如,是特殊用途處理器,例如,高產量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、或其類似者。
一共用快取(未被展示)可被包含在任一的處理器中或在兩處理器之外,經由P-P互連而與處理器連接,以至於如果一處理器被安置成為低功率模式,則任一或兩處理器之局部性快取資訊可被儲存於共用快取中。
晶片組1290可經由界面1296耦合至第一匯流排 1216。於一實施例中,第一匯流排1216可以是週邊構件互連(PCI)匯流排、或例如,一PCI快速匯流排之匯流排或另一個第三代I/O互連匯流排,然而本發明範疇是不因此受限定。
如於圖12之展示,各種I/O裝置1214可與匯流排橋1218一起耦合至第一匯流排1216,該匯流排橋1218耦合第一匯流排1216至第二匯流排1220。於一實施例中,一個或多個另外的處理器1215,例如,協同處理器、高產量MIC處理器、GPGPU、加速裝置(例如,圖形加速裝置或數位信號處理(DSP)單元)、場式可程控閘陣列、或任何其他處理器,被耦合至第一匯流排1216。於一實施例中,第二匯流排1220可以是低引腳數(LPC)匯流排。各種裝置可被耦合至一第二匯流排1220,包含,例如,鍵盤及/或滑鼠1222、通訊裝置1227以及儲存單元1228,例如,碟片驅動或其他大量儲存裝置,於一實施例中,其可包含指令/指令碼以及資料1230。進一步地,一音訊I/O 1224可被耦合至第二匯流排1220。應注意,其他結構也是可能。例如,取代圖12之點對點結構,系統可實作一多點匯流排或其他此等結構。
接著參看至圖13,其所展示的是依據本發明一實施例之第二更特定範例系統1300的方塊圖。第12以及13圖中之相同元件具有相同的參考號碼,並且圖12中之某些觀點已自圖13被省略,以避免混淆圖13的其他觀點。
圖13是分別地展示處理器1270、1280可包含整合記憶體以及I/O控制邏輯(“CL”)1272以及1282。因此,CL 1272、1282包含整合記憶體控制器單元並且包含I/O控制邏輯。圖13形不只是展示被耦合至CL1272、1282之記憶體1232、1234,但是同時也展示耦合至控制邏輯1272、1282之I/O裝置1314。遺留I/O裝置1315耦合至晶片組1290。
接著參看至圖14,其所展示的是依據本發明一實施例之SoC 1400的方塊圖。相似於圖10中之元件具有相同的參考號碼。同時,虛線方塊是在更先進之SoC上之選擇性特點。於圖14中,一互連單元1402被耦合至:一應用處理器1410,其包含一組的一個或多個核心202A-N以及共用快取單元1006;一系統媒介單元1010;一匯流排控制器單元1016;一整合記憶體控制器單元1014;一組或一個或多個協同處理器1420,其可包含整合圖形邏輯、一影像處理器、一音訊處理器、以及一視訊處理器;一靜態隨機存取記憶體(SRAM)單元1430;一直接記憶體存取(DMA)單元1432;以及用以耦合至一個或多個外部顯示器的顯示單元1440。於一實施例中,協同處理器1420,例如,包含一特殊用途處理器,例如,網路或通訊處理器、壓縮引擎、GPGPU、高產量MIC處理器、嵌入式處理器、或其類似者。
此處被揭示之機構實施例可以硬體、軟體,韌體或此等實作方法之組合而被實作。本發明實施例可被實作如於包括至少一處理器、一儲存系統(包含依電性以及非依電性記憶體及/或儲存元件)、至少一輸入裝置以及至少一輸出裝置的可程控系統上執行之電腦程式或程式碼。
程式碼,例如,說明於圖12中之程式碼1230,被 應用至輸入指令以執行此處說明之功能並且產生輸出資訊。輸出資訊可以習知的形式,被施加至一個或多個輸出裝置。為了這應用目的,一處理系統,例如,包含具有,例如,一處理器;一數位信號處理器(DSP)、一微控制器、一特定應用積體電路(ASIC)、或一微處理器之任何系統。
程式碼可以一高階程序或物件導向之程式語言被實作以通訊於一處理系統。如果需要的話,程式碼也可以組合或機器語言被實作。實際上,此處說明之機構是不受限定於任何特定程式語言的範疇。於任何情況中,語言可以是一編譯或詮釋語言。
至少一實施例之一個或多個論點可藉由儲存於代表在處理器內之各種邏輯的機器可讀取媒體上之表示指令而被實作,該等指令當利用機器被讀取時,將導致機器製造邏輯以執行此處說明之技術。此等表示,習知如“IP核心”可被儲存在有實體、機器可讀取媒體上並且被供應至各種客製或廠製設施以負載進入實際上構成邏輯或處理器之製造機器內。
此等機器可讀取儲存媒體可包含,而不限制於,利用機器或裝置被製造或被形成之非暫時、有實體的物件配置,其包含儲存媒體,例如,硬碟、任何其他型式碟片,如包含軟式磁片、光碟、小型碟片唯讀記憶體(CD-ROM)、可重寫小型碟片(CD-RW)、以及磁鐵式光碟、半導體裝置,例如,唯讀記憶體(ROM)、隨機存取記憶體(RAM),例如,動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體 (SRAM)、可消除可程控唯讀記憶體(EPROM)、快閃記憶體、電氣地可消除可程控唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁學或光學卡或適用於儲存電子式指令之任何其他型式的媒體。
因此,本發明實施例也包含非暫時、有實體的機器可讀取媒體,其包含指令或包含設計資料,例如,硬體說明語言(HDL),其界定此處說明之結構、電路、裝置、處理器及/或系統特點。此等實施例也可被稱為程式產品。
仿效(包含二進制轉譯、指令碼變形,等等)
於一些情況中,一指令轉換器可被使用以轉換來自一來源指令集之指令至一目標指令集。例如,該指令轉換器可轉換(例如,使用靜態二進制轉譯、包含動態編輯之動態二進制轉譯)、變形、仿效、或其他之不同方法,以轉換一指令為將利用核心被處理的一個或多個其他指令。指令轉換器可以軟體、硬體、韌體、或其組合被實作。指令轉換器可以是在處理器上、處理器之外、或部份在處理器上以及部份在處理器之外。
圖15是依照本發明實施例之對照軟體指令轉換器的使用以轉換來源指令集之二進制指令為目標指令集之二進制指令的方塊圖。於所說明之實施例中,指令轉換器是一軟體指令轉換器,然而另外地,該指令轉換器也可以軟體、韌體、硬體或其各種組合被實作。圖15展示高階語言1502中之一程式,該程式可使用x86編譯器1504被編譯以產生x86二進制指令碼1506,其可利用具有至少一個x86指 令集核心1516之一處理器而自然地被執行。具有至少一個x86指令集為核心1516之處理器代表任何處理器,其可大致地進行相同如具有至少一個x86指令集核心之英特爾(Intel)處理器功能,其藉由相容地執行或以不同方式處理(1)英特爾x86指令集核心之指令集的一主要部份,或(2)應用或其他軟體目標之目的碼版本,而在具有至少一個x86指令集核心之一英特爾處理器上進行,以便實質地達成如具有至少一個x86指令集核心之一英特爾處理器的相同結果。x86編譯器1504代表可操作以產生x86二進制指令碼1506(例如,目的碼)之一編譯器,該x86二進制指令碼1506可具有或不具有另外的連結處理,而被執行於具有至少一個x86指令集核心1516之處理器上。同樣地,圖15展示高階語言1502中之程式,其可使用一不同的指令集編譯器1508被編譯以產生不同的指令集二進制指令碼1510,該指令集二進制指令碼1510可藉由不具有至少一個x86指令集核心1514之處理器(例如,一處理器,其具有核心可執行美國加州森尼維耳市之MIPS技術的MIPS指令集及/或執行美國加州森尼維耳市ARM持股公司之ARM指令集)自然地被執行。指令轉換器1512被使用以轉換該x86二進制1506成為可藉由不具有一x86指令集核心1514之處理器自然地被執行的一指令碼。這轉換的指令碼是不太可能相同於另外的指令集二進制指令碼1510,因為這樣的一指令轉換器可能是不容易構成;但是,該轉換的指令碼將達成一般操作並且可自不同指令集的指令被構成。因此,指令轉換器1512代表代表軟體、韌 體、硬體、或其組合,其經由仿效、模擬或任何其他處理程序,而允許一處理器或其他不具有一x86指令集處理器或核心的電子式裝置執行該x86二進制指令碼1506。
另外的實施例
雖然圖形中之流程圖也展示利用本發明某些實施例被進行的一特定操作順序,應了解,此順序僅是範例(例如,不同的實施例可以不同順序進行操作、組合某些操作、重疊某些操作等等)。
於上面之說明中,為了說明目的,許多特定細節被提出,以便提供本發明實施例之全面的了解。但是,熟習本技術者應明白,一個或多個其他實施例可被實施,而不必一些的這些特定細節。上述本發明之特定實施例不欲被提供用以限制本發明而是說明本發明實施例。本發明範疇是不藉由上面提供之特定範例被決定,而是僅藉由下面之申請專利範圍所決定。
100‧‧‧裝置
102‧‧‧虛擬記憶體機器
104‧‧‧記憶體
106‧‧‧中央處理單元
108‧‧‧虛擬機器控制結構
110‧‧‧延伸頁面表
112‧‧‧虛擬機器管理器
114‧‧‧頁面索引
116‧‧‧位址轉譯模組
118‧‧‧寫入時複製模組

Claims (20)

  1. 一種轉換一記憶體位址之方法,該方法包括下列步驟:接收用於一虛擬機器之一客邏輯記憶體位址;自該客邏輯記憶體位址決定一索引頁面參考;取回對應至該虛擬機器之一頁面索引;使用該頁面索引自一索引頁面取回該主機實體記憶體位址之一第一部份;自該客邏輯記憶體位址取回該主機實體記憶體位址之一第二部份;以及自該主機實體記憶體位址之該等第一以及第二部份產生該主機實體記憶體位址。
  2. 如申請專利範圍第1項之方法,其中該頁面索引之取回步驟包括:自該虛擬機器之一虛擬機器控制結構取回該頁面索引。
  3. 如申請專利範圍第1項之方法,其中該頁面索引是用於該虛擬機器之常數。
  4. 如申請專利範圍第1項之方法,其中決定該索引頁面參考之步驟包括:查走一組的一個或多個頁面表以到達包含有該頁面索引參考之該組的一個或多個頁面表之一入口。
  5. 如申請專利範圍第4項之方法,其中該查走是基於該客邏輯記憶體位址之部份的一個或多個偏移量。
  6. 如申請專利範圍第4項之方法,其中該頁面表是被使用來轉譯該客邏輯記憶體位址至一客實體記憶體位址的一列表。
  7. 如申請專利範圍第1項之方法,其中該客邏輯記憶體位址以及主機實體記憶體位址為64位元位址。
  8. 如申請專利範圍第7項之方法,其中該客邏輯記憶體位址包含被使用於一索引頁面參考之決定中的四個9位元記憶體位址片段,並且其餘的12位元記憶體位址片段是該主機實體記憶體位址之第二部份。
  9. 如申請專利範圍第1項之方法,其中該虛擬機器是於主機上運行之一虛擬系統。
  10. 如申請專利範圍第1項之方法,其中該產生步驟包括:組合該主機實體記憶體位址之該等第一以及第二部份以形成該主機實體記憶體位址。
  11. 一種裝置,其包括:一接收客邏輯記憶體位址模組,其被組態以接收客邏輯記憶體位址;一決定索引頁面入口模組,其適用於自該客邏輯記憶體位址而決定一索引頁面參考;一取回索引頁面模組,其適用於取回對應至虛擬機器的一頁面索引;主機實體記憶體位址模組的一取回第一部份,其適用於使用該頁面索引而自一索引頁面取回主機實體記憶體位址之一第一部份; 該主機實體記憶體位址模組的一取回第二部份,其適用於自該客邏輯記憶體位址取回該主機實體記憶體位址之一第二部份;以及一產生主機實體記憶體位址模組,其適用於自該主機實體記憶體位址之該等第一以及第二部份產生該主機實體記憶體位址。
  12. 如申請專利範圍第11項之裝置,其中該頁面索引被儲存於該虛擬機器之一虛擬機器控制結構中。
  13. 如申請專利範圍第11項之裝置,其中該頁面索引是用於該虛擬機器之常數。
  14. 如申請專利範圍第11項之裝置,其中該決定索引頁面入口模組係進一步被組態以查走一組的一個或多個頁面表,以到達包含有該頁面索引參考之該組的一個或多個頁面表之一入口。
  15. 如申請專利範圍第14項之裝置,其中該查走是基於該客邏輯記憶體位址之部份的一個或多個偏移量。
  16. 如申請專利範圍第14項之裝置,其中該頁面表是被該虛擬機器監視器所使用以轉譯該客邏輯記憶體位址至一客實體記憶體位址之一列表。
  17. 如申請專利範圍第11項之裝置,其中該客邏輯記憶體位址以及主機實體記憶體位址為64位元位址。
  18. 如申請專利範圍第17項之裝置,其中該客邏輯記憶體位址包含被使用於一索引頁面參考之決定中的四個9位元記憶體位址片段,並且其餘的12位元記憶體位址片段是 該主機實體記憶體位址之第二部份。
  19. 如申請專利範圍第11項之裝置,其中該虛擬機器是於主機上運行的一虛擬系統。
  20. 一種具有可執行指令以進行轉換一記憶體位址之方法的非暫態機器可讀取媒體,該方法包括下列步驟:接收用於一虛擬機器之一客邏輯記憶體位址;自該客邏輯記憶體位址決定一索引頁面參考;取回對應至一虛擬機器的一頁面索引;使用該頁面索引自一索引頁面取回一主機實體記憶體位址之一第一部份;自該客邏輯記憶體位址取回該主機實體記憶體位址之一第二部份;以及自該主機實體記憶體位址之該等第一以及第二部份產生該主機實體記憶體位址。
TW101145910A 2011-12-22 2012-12-06 索引化頁面位址之轉譯以降低在虛擬化環境中記憶體使用量的技術 TWI494759B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/067043 WO2013095579A1 (en) 2011-12-22 2011-12-22 Indexed page address translation to reduce memory footprint in virtualized environments

Publications (2)

Publication Number Publication Date
TW201337557A TW201337557A (zh) 2013-09-16
TWI494759B true TWI494759B (zh) 2015-08-01

Family

ID=48669220

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101145910A TWI494759B (zh) 2011-12-22 2012-12-06 索引化頁面位址之轉譯以降低在虛擬化環境中記憶體使用量的技術

Country Status (3)

Country Link
US (1) US9317441B2 (zh)
TW (1) TWI494759B (zh)
WO (1) WO2013095579A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12437121B2 (en) 2020-09-02 2025-10-07 SiFive, Inc. Efficient processing of masked memory accesses
TWI902885B (zh) * 2020-09-02 2025-11-01 美商賽發馥股份有限公司 遮罩記憶體存取之有效率處理的積體電路及方法

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9405701B2 (en) 2012-03-30 2016-08-02 Intel Corporation Apparatus and method for accelerating operations in a processor which uses shared virtual memory
US9330013B2 (en) * 2012-06-28 2016-05-03 Industrial Technology Research Institute Method of cloning data in a memory for a virtual machine, product of computer programs and computer system therewith
US9191435B2 (en) 2012-08-23 2015-11-17 TidalScale, Inc. Selective data migration or remapping of virtual processors to provide required data accessibility to processor cores
WO2015013920A1 (zh) * 2013-07-31 2015-02-05 华为技术有限公司 一种数据转发方法、装置及系统
TWI489279B (zh) 2013-11-27 2015-06-21 Realtek Semiconductor Corp 虛擬實體位址轉換系統以及虛擬實體位址轉換系統的管理方法
US9792222B2 (en) 2014-06-27 2017-10-17 Intel Corporation Validating virtual address translation by virtual machine monitor utilizing address validation structure to validate tentative guest physical address and aborting based on flag in extended page table requiring an expected guest physical address in the address validation structure
US9703720B2 (en) 2014-12-23 2017-07-11 Intel Corporation Method and apparatus to allow secure guest access to extended page tables
US11240334B2 (en) 2015-10-01 2022-02-01 TidalScale, Inc. Network attached memory using selective resource migration
US10579421B2 (en) 2016-08-29 2020-03-03 TidalScale, Inc. Dynamic scheduling of virtual processors in a distributed system
US10908939B2 (en) * 2017-01-31 2021-02-02 Intel Corporation Efficient fine grained processing of graphics workloads in a virtualized environment
US11023135B2 (en) 2017-06-27 2021-06-01 TidalScale, Inc. Handling frequently accessed pages
US10817347B2 (en) 2017-08-31 2020-10-27 TidalScale, Inc. Entanglement of pages and guest threads
US12117940B2 (en) 2017-12-05 2024-10-15 Red Hat, Inc. Host address space identifier for non-uniform memory access locality in virtual machines
US10613990B2 (en) * 2017-12-05 2020-04-07 Red Hat, Inc. Host address space identifier for non-uniform memory access locality in virtual machines
US11940933B2 (en) * 2021-03-02 2024-03-26 Mellanox Technologies, Ltd. Cross address-space bridging
US20230018586A1 (en) * 2021-07-19 2023-01-19 Rockwell Automation Technologies, Inc. Systems and methods for distributing and executing loadable embedded software extensions in industrial controllers

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060139360A1 (en) * 2004-12-29 2006-06-29 Panesar Kiran S System and method for one step address translation of graphics addresses in virtualization
US20060206687A1 (en) * 2005-03-08 2006-09-14 Microsoft Corporation Method and system for a second level address translation in a virtual machine environment
US20080077765A1 (en) * 2006-09-22 2008-03-27 Illikkal Rameshkumar G Sharing information between guests in a virtual machine environment
TW200919183A (en) * 2007-07-05 2009-05-01 Ibm Method and apparatus for caching of page translations for virtual machines
TW201122814A (en) * 2009-12-24 2011-07-01 Univ Nat Taiwan Method for region-based management of non-volatile memory

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6289432B1 (en) * 1998-03-25 2001-09-11 International Business Machines Corporation Sharing segments of storage by enabling the sharing of page tables
US6851038B1 (en) * 2000-05-26 2005-02-01 Koninklijke Philips Electronics N.V. Background fetching of translation lookaside buffer (TLB) entries
US7330942B2 (en) * 2004-07-31 2008-02-12 Hewlett-Packard Development Company, L.P. Method for efficient virtualization of physical memory in a virtual-machine monitor
US7783858B2 (en) * 2007-01-20 2010-08-24 International Business Machines Corporation Reducing memory overhead of a page table in a dynamic logical partitioning environment

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060139360A1 (en) * 2004-12-29 2006-06-29 Panesar Kiran S System and method for one step address translation of graphics addresses in virtualization
US20060206687A1 (en) * 2005-03-08 2006-09-14 Microsoft Corporation Method and system for a second level address translation in a virtual machine environment
US20080077765A1 (en) * 2006-09-22 2008-03-27 Illikkal Rameshkumar G Sharing information between guests in a virtual machine environment
TW200919183A (en) * 2007-07-05 2009-05-01 Ibm Method and apparatus for caching of page translations for virtual machines
TW201122814A (en) * 2009-12-24 2011-07-01 Univ Nat Taiwan Method for region-based management of non-volatile memory

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12437121B2 (en) 2020-09-02 2025-10-07 SiFive, Inc. Efficient processing of masked memory accesses
TWI902885B (zh) * 2020-09-02 2025-11-01 美商賽發馥股份有限公司 遮罩記憶體存取之有效率處理的積體電路及方法

Also Published As

Publication number Publication date
TW201337557A (zh) 2013-09-16
WO2013095579A1 (en) 2013-06-27
US20140201421A1 (en) 2014-07-17
US9317441B2 (en) 2016-04-19

Similar Documents

Publication Publication Date Title
TWI494759B (zh) 索引化頁面位址之轉譯以降低在虛擬化環境中記憶體使用量的技術
US10078519B2 (en) Apparatus and method for accelerating operations in a processor which uses shared virtual memory
TWI761347B (zh) 可中斷及可重啟矩陣乘法指令、處理器、方法和系統
JP6124463B2 (ja) 一方のアーキテクチャのコードモジュールが他方のアーキテクチャのライブラリモジュールを用いることを可能にするインターアーキテクチャ互換性モジュール
JP6143872B2 (ja) 装置、方法、およびシステム
TWI516937B (zh) 用於資料讀取/寫入延伸分頁表違例之處理的決策動作決定技術之方法、裝置及非暫態機器可讀媒體
TWI524271B (zh) 模式相依的頻寬負載至較寬暫存器處理器,方法和系統
TWI575380B (zh) 用於虛擬化之細粒度位址重新映射
CN114003288A (zh) 用于将比原生支持的数据宽度更宽的数据原子地存储到存储器的处理器、方法、系统和指令
CN108351830A (zh) 用于存储器损坏检测的硬件装置和方法
US20180095892A1 (en) Processors, methods, systems, and instructions to determine page group identifiers, and optionally page group metadata, associated with logical memory addresses
TWI465920B (zh) 結構存取處理器、方法、系統及指令
TW201800948A (zh) 提取資料至具保證完成指示快取階之處理器、方法、系統及指令
CN104937568B (zh) 用于多页尺寸转换后备缓冲器(tlb)的装置和方法
TWI752034B (zh) 用以校驗具有指示校驗位元值之位元的位元校驗處理器、方法、系統與指令
CN118349314A (zh) 孔径访问处理器、方法、系统和指令

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees