TWI524185B - 使用多重分頁表執行之技術 - Google Patents
使用多重分頁表執行之技術 Download PDFInfo
- Publication number
- TWI524185B TWI524185B TW102113265A TW102113265A TWI524185B TW I524185 B TWI524185 B TW I524185B TW 102113265 A TW102113265 A TW 102113265A TW 102113265 A TW102113265 A TW 102113265A TW I524185 B TWI524185 B TW I524185B
- Authority
- TW
- Taiwan
- Prior art keywords
- physical memory
- executable code
- memory address
- page table
- virtual memory
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45554—Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/656—Address space sharing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
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
本發明係有關於使用多重分頁表執行之技術。
異質計算系統及裝置(例如,使用基於不同指令集架構之多個相異計算處理器之系統)用於許多計算情境中。舉例而言,在一些裝置中,單獨之CPU及GPU可位於同一晶粒上。在各種系統中,計算處理器可經組配以執行基於非相同的指令集架構(ISA)之指令。異質處理器之使用可提供處理、空間及資源效率。舉例而言,位於同一晶粒上之兩個處理器可各自具有對共同記憶體之存取權;此共享記憶體允許兩個處理器容易地存取同一資料。
然而,資源共享亦可能在一些異質計算系統中導致問題。當使用支援使用函式指標的程式語言時一個此種問題產生,該等程式語言允許將指向一函式之指標作為資料在執行緒之間傳遞。在具有使用不同ISA之異質處理器的傳統系統中,此等函式指標並不常受到良好支援(或根本不受支援)。舉例而言,若針對第一處理器產生一指向按第一ISA撰寫之函式的指標,則彼同一指標可最終被傳遞至
在第二處理器上執行之執行緒。若該第二處理器試圖執行由該函式指標所指向的函式,則通常將存在錯誤,因為第二處理器將試圖執行按一不受支援ISA撰寫的函式。一些系統試圖藉由針對每一函式儲存兩個指標來解決此問題,但此途徑並非對所有語言皆有良好作用,諸如,對於C及C++就表現不佳。
依據本發明之一實施例,係特地提出一或多種電腦可讀儲存媒體,其具有實施於其內的指令,該等指令經組配以回應於由包含一第一電腦處理器及一第二電腦處理器之一計算裝置進行的執行而使得該計算裝置操作一虛擬機管理器以將虛擬記憶體位址轉譯為實體記憶體位址,其中該虛擬記憶體管理器經組配以使用對應地與該第一處理器及該第二處理器相關聯之一第一分頁表或一第二分頁表中的一選定者將與由該第一處理器或該第二處理器進行之一程式碼提取相關聯的一虛擬記憶體位址轉譯為一實體記憶體位置之一對應實體記憶體位址,其中使用該第一分頁表及該第二分頁表中之哪一者係視該程式碼提取與該第一或該第二處理器相關聯而定。
100‧‧‧異質執行系統(HES)
105‧‧‧原始程式碼
110‧‧‧編譯器
113‧‧‧可執行程式碼之經說明版本/用於中央處理單元(CPU)之可執行程式碼
115‧‧‧可執行程式碼之經說明版本/用於圖形處理單元(GPU)之可執行程式碼
120‧‧‧載入器
130‧‧‧第一處理器
135‧‧‧第二處理器
140、150‧‧‧分頁表
155‧‧‧可執行程式碼(EC)虛擬記憶體(VM)位址
160‧‧‧實體記憶體
170‧‧‧可執行程式碼(EC)1實體位址
180‧‧‧可執行程式碼(EC)2實體位址
200‧‧‧虛擬機監測器(VMM)
210‧‧‧資料虛擬記憶體位址
220‧‧‧資料實體記憶體位址
300、400‧‧‧實例異質執行系統(HES)程序
310、320、330、420、430、440、450、510、520、530、540、550、560‧‧‧操作
500‧‧‧實例異質執行系統(HES)程式碼提取程序
600‧‧‧電腦系統
604‧‧‧處理器
608‧‧‧控制邏輯元件/系統控制邏輯元件
612‧‧‧系統記憶體
616‧‧‧非依電性記憶體(NVM)/儲存器
620‧‧‧通信介面
624‧‧‧異質執行邏輯元件/異質邏輯元件
藉由結合隨附圖式之以下實施方式將容易地理解實施例。為了促進此描述,相似參考數字指示相似結構元件。在隨附圖式之諸圖中,藉由實例而非藉由限制來說明實施例。
圖1說明根據各種實施例之具有多重分頁表的實例異質執行系統。
圖2說明根據各種實施例之具有多重分頁表之異質執行系統的實例虛擬機監測器。
圖3說明根據各種實施例之具有多重分頁表執行程序的實例異質執行系統。
圖4說明根據各種實施例之具有多重分頁表載入程序的實例異質執行系統。
圖5說明根據各種實施例之具有多重分頁表程式碼提取程序的實例異質執行系統。
圖6說明根據各種實施例之適合於實踐本發明之實例計算環境。
在以下的實施方式中,參考形成本文之一部分的隨附圖式,其中相似數字始終表示相似部分,且其中可經實踐之實施例係藉由說明加以展示。應理解,可利用其他實施例且可在不脫離本發明之範疇的情況下進行結構或邏輯改變。因此,以下的實施方式不應被理解為限制意義,且實施例之範疇係由附加申請專利範圍及其等效物界定。
可以最有助於理解所主張之標的之方式將各種操作描述為多個離散的依次動作或操作。然而,不應將描述之次序解釋為暗示此等操作必定依賴於次序。詳言之,此等操作可不以呈現之次序執行。所描述之操作可以與所
描述實施例不同的次序執行。在額外實施例中,可執行各種額外操作及/或可省略所描述操作。
出於本發明之目的,片語「A及/或B」意謂(A)、(B)或(A及B)。出於本發明之目的,片語「A、B及/或C」意謂(A)、(B)、(C)、(A及B)、(A及C)、(B及C)或(A、B及C)。
該描述可使用片語「在一實施例中」或「在多個實施例中」,其可各自指代相同或不同實施例中之一或多者。另外,如關於本發明之實施例所使用,術語「包含」、「包括」、「具有」及其類似者係同義的。
如本文中所使用,術語「模組」可指代以下各者,為以下各者之部分或包括以下各者:特殊應用積體電路(「ASIC」)、電子電路、執行一或多個軟體或韌體程式之處理器(共享的、專用的或群組)及/或記憶體(共享的、專用的或群組)、組合邏輯電路、及/或提供所描述功能性之其他合適組件。
參看圖1,展示說明具有多重分頁表之異質執行系統100(「HES 100」)的方塊圖。在各種實施例中,HES 100可經組配以在異質處理器環境中選擇性地執行可執行程式碼之不同版本中的適當者。在各種實施例中,HES 100可經組配以經由使用多重分頁表而支援使用指向可執行程式碼之虛擬記憶體位址的函式指標。因此,在HES 100之實施例中,函式指標可包括一虛擬記憶體位址,該虛擬記憶體位址(諸如)由多重分頁表中之一者映射至一實體記憶體
位址,該實體記憶體位址含有可由利用該函式指標之處理器執行的可執行程式碼。該映射可在虛擬記憶體位址轉譯期間(諸如,在程式碼提取期間)使用。在實施例中,當HES100之另一處理器尋求使用該函式指標執行其自己之程式碼提取時,可使用與該另一處理器相關聯之第二分頁表以將虛擬記憶體位址轉譯為不同的實體記憶體位址,在該實體記憶體位址中可找到可由該另一處理器執行之程式碼。多重分頁表之此使用允許HES100支援函式指標而同時對於被指向之每一函式僅利用一個虛擬記憶體位址。
如所說明,在實施例中,原始程式碼105之一部分(例如,一函式)可由編譯器110編譯為可執行程式碼之多個版本(諸如,可執行程式碼之經說明版本113及115)。在各種實施例中,編譯器110可組配有HES100之知識,且特定而言組配有在HES100中所使用之一或多個處理器的知識。在實施例中,當編譯器110被如此組配時,編譯器110可產生可執行程式碼之版本113及115以使用來自HES 100中所使用之處理器之各種ISA的指令。舉例而言,如圖1中所說明,在各種實施例中,編譯器110可將原始程式碼105之一部分編譯為用於CPU之可執行程式碼(113)以及用於GPU之可執行程式碼(115)。在各種實施例中,原始程式碼105可包含主線程式碼及一或多個函式;此等函式中之一或多者可被編譯為可執行程式碼之版本113及115。在替代實施例中,可(諸如,由軟體開發者)使用不同編譯器來編譯可執行程式碼之不同版本,其中該等編譯器
以不同ISA之處理器為目標。
可執行程式碼之不同版本113及115可接著由載入器120載入,在各種實施例中,載入器120可視情況包括於HES 100中,或可為單獨組件或模組。在各種實施例中,載入器120可經組配以將可執行程式碼之不同版本113及115載入至實體記憶體160中。舉例而言,如所說明,可執行程式碼之不同版本113及115可儲存於實體記憶體中的實體記憶體位址之分離集合處,諸如,經說明的EC 1實體位址170及EC 2實體位址180之集合。在各種實施例中,載入器120亦可經組配以組配分頁表(諸如,經說明之分頁表140及150)或促進分頁表(諸如,經說明之分頁表140及150)之組配,以支援本文中所描述之各種虛擬記憶體位址轉譯活動。下文描述由載入器120執行之活動的特定實例。
在實施例中,HES 100可組配有諸如第一處理器130及第二處理器135的一或多個處理器,其經組配以在HES 100上執行可執行程式碼。如上文所論述,在各種實施例中,第一處理器130及第二處理器135可經組配以執行基於不同ISA的指令。因此,在一些實施例中,第一及第二處理器130及135不可經組配以執行針對其他處理器撰寫之可執行程式碼。在一些實施例中,該等處理器可包含一CPU及一GPU;在其他實施例中,可利用不同處理器。在各種實施例中,亦可利用兩個以上處理器。
在各種實施例中,第一及第二處理器130及135
可經組配以利用虛擬記憶體。詳言之,在各種實施例中,第一及第二處理器130及135可與多重分頁表,諸如,分頁表140及150相關聯,以便使虛擬記憶體管理器將待由處理器存取之虛擬記憶體位址轉譯為實體記憶體位址。在各種實施例中,多重分頁表140及150可經組配以將一或多個虛擬記憶體位址轉譯為與含有程式碼之記憶體區域相關聯的相異實體記憶體位址。因此,如圖1中所說明,分頁表140及150可各自含有關於將名義上在虛擬記憶體位址之特定集合(例如,被說明為EC VM位址155的虛擬記憶體位址之集合)處找到可執行程式碼的資訊。然而,在各種實施例中,分頁表140及150可各自經組配以將此等虛擬記憶體位址轉譯為實際上找到可執行程式碼之實體記憶體位置的單獨實體記憶體位址。因此,如圖1中所說明,分頁表140及150可經組配以視用於轉譯之分頁表而將來自EC VM位址155之位址集合的位址轉譯為實體記憶體位址集合:EC 1實體位址170或EC 2實體位址180中的任一者。如上文所論述,HES 100對此等多重分頁表之使用允許HES 100選擇性地使用可執行程式碼之多個版本,而同時仍允許將單一虛擬記憶體位址用以指向該程式碼,就如同僅存在一個版本那樣。
圖2說明根據各種實施例之HES 100之實例虛擬機監測器200(「VMM 200」)。在各種實施例中,VMM 200可經組配以實施本文中所描述之HES 100之一或多個操作。在各種實施例中,VMM 200可經組配以轉譯由第一及
/或第二處理器130及135進行之記憶體存取。舉例而言,第一處理器130及/或第二處理器135可在利用虛擬記憶體之虛擬機(未經說明)中執行客體軟體。作為客體軟體之操作的部分,第一處理器130及/或第二處理器135可尋求在一或多個虛擬記憶體位址處執行記憶體存取。在一些實施例中,此等記憶體存取可包含程式碼提取及/或資料存取。
如圖2中所說明,VMM 200可包括分頁表140及150。在各種實施例中,分頁表140及/或150可經組配以與第一及第二處理器130及135相關聯。在一些實施例中,分頁表140及150中之任一者可僅與單一處理器相關聯;在其他實施例中,分頁表140及150中之任一者或其兩者可與多個處理器相關聯。在實施例中,若一分頁表係與多個處理器相關聯,則彼等處理器可經組配以根據同一ISA操作。
在實施例中,分頁表140及150可經組配以將一組共同的虛擬記憶體位址展示為定址同一可執行程式碼。虛擬記憶體位址之此共同集合的實施例係藉由EC VM位址155之集合示範於圖中,EC VM位址155之集合係含於分頁表140及150中之每一者中的同一位置中。在各種實施例中,EC VM位址155中之位址可由分頁表140及150中之每一者映射至實體記憶體位址之單獨集合中(諸如,EC 1實體位址170及EC 2實體位址180)。如上文所論述,在各種實施例中,實體記憶體位址之此等集合可由載入器120判定,該載入器120經組配以在由EC 1實體位址170及
EC 2實體位址180涵蓋之不同位置處將可執行程式碼之各種版本儲存至實體記憶體中。
如上文所論述,在各種實施例中,分頁表140及150可經組配以將針對可執行程式碼之一組共同虛擬記憶體位址映射至單獨實體記憶體位址。另外,在各種實施例中,分頁表140及150可經組配以將與資料儲存相關聯之虛擬記憶體位址映射至實體記憶體位址之一共同集合。因此,如所說明,分頁表140及150可經組配以將來自資料虛擬記憶體位址210之一集合的虛擬記憶體位址映射至資料實體記憶體位址220之一集合。在各種實施例中,此等與資料相關聯之虛擬記憶體位址可根據由HES 100利用的多重分頁表中之每一者而與實體記憶體位址之同一集合相關聯。在實施例中,藉由利用將與資料相關聯之虛擬記憶體位址映射至相同實體記憶體位址的分頁表140及150,HES 100之VMM 200可允許異質之第一處理器130及第二處理器135具有對相同資料之存取權,而同時仍促進諸如上文所描述的對函式指標之使用。
圖3說明根據各種實施例之實例HES 100程序300。在各種實施例中,可執行程序300以在HES 100上編譯、載入且執行可執行程式碼。該程序可以操作310開始,在操作310中,編譯器110可將原始程式碼105之一部分編譯為可執行程式碼之多個版本,諸如,可執行程式碼之版本113及115。如上文所論述,在各種實施例中,可執行程式碼之每一版本可含有基於不同ISA且因此可各自由
HES 100中之不同處理器執行的指令。接下來,在操作320處,載入器120可將可執行程式碼之不同版本載入至HES 100中。下文關於圖4之程序400來論述此操作之特定實施例。接下來,在操作330處,HES 100可使用多重分頁表選擇性地執行可執行程式碼之適當版本。在實施例中,操作330可包括使用函式指標進行的一或多個程式碼提取。下文參考圖5之程序500論述此等程式碼提取之特定實施例。該程序可接著結束。
圖4說明根據各種實施例之實例HES 100程序400。該程序可以操作420開始,在操作420處載入器120可判定由編譯器110產生之可執行程式碼之不同版本的大小。接著,在操作430處,載入器120可基於在操作420處判定之大小而選擇待映射至可執行程式碼之不同版本的虛擬記憶體位址。在各種實施例中,載入器可經組配以選擇可執行程式碼之不同版本的最大大小作為將被映射至可執行程式碼之該等版本的虛擬記憶體位址之集合的大小。在實施例中,藉由選擇該最大大小,載入器120可經組配以使得虛擬記憶體位址之集合至少與儲存於實體記憶體中之可執行程式碼之任一版本一樣大。另外,藉由選擇該最大大小,載入器120可更好地允許任何處理器始終在相同虛擬記憶體位址處找到函式,而無關於彼處理器所使用之可執行程式碼之版本的大小。在實施例中,虛擬記憶體位址之集合可因此被填補(pad)(諸如,當與可執行程式碼之大小較小之版本相比較時)以達成此選定。
接下來,在操作440處,載入器120可經組配以將可執行程式碼之多個版本載入至實體記憶體中。在各種實施例中,載入器可在實體記憶體位址之相鄰集合處將可執行程式碼之各版本載入至記憶體中;在其他實施例中,可執行程式碼之各版本可儲存於單獨的不相鄰實體記憶體區段中。在各種實施例中,載入器120可經組配以將可執行程式碼之各種版本載入至實體記憶體之大小相等之區段中。在各種實施例中,載入器120可經組配以將可執行程式碼之各種版本載入至大小等於在操作430處所選擇之大小的實體記憶體區段中。因此,在一些實施例中,載入器120可經組配以填補由可執行程式碼之較小版本所佔據的實體記憶體,以使得可執行程式碼之彼版本佔據與其他版本相同量之實體記憶體空間。在其他實施例中,可執行程式碼之多個版本可儲存於記憶體之大小不同之區段中,而無關於其是否由虛擬記憶體位址之相同集合映射至。
接下來,在操作450處,載入器120可經組配以組配分頁表(諸如,分頁表140及150)以包括針對可執行程式碼之各種版本的虛擬記憶體位址。在各種實施例中,載入器可在操作450處產生分頁表。在其他實施例中,載入器120可經組配以將虛擬記憶體位址與可執行程式碼之各種版本的實體記憶體位址之間的映射寫入至已建立之分頁表中。在其他實施例中,載入器120可經組配以將關於映射之資訊提供至VMM 100(或其他實體)以用於分頁表140及150之建立或組配。該程序可接著結束。
圖5說明根據各種實施例之實例HES 100程式碼提取程序500。在各種實施例中,程序500之執行可經由在處理器上執行一程序,其中一函式指標被傳遞至該程序且該處理器試圖將執行切換至由該函式指標指向的函式。雖然參考單一處理器描述了程序500,但可認識到,在各種實施例中,可使用同一函式指標針對HES 100中之不同處理器重複該程序。
該程序可以操作510開始,在操作510處,在HES 100之處理器中之一者上執行的程序可接收函式指標。在各種實施例中,所指向之函式可與原始程式碼105及上文所描述的可執行程式碼之版本113或115中之一者相關聯。
接下來,在操作520處,HES 100可自指向用於該函式之可執行程式碼的函式指標判定虛擬記憶體位址。如上文所論述,在各種實施例中,虛擬記憶體位址可相同,而無關於當前程序正在哪一處理器上執行。接下來,在操作530處,處理器可試圖進行對由函式指標指向的可執行程式碼(例如,處理器預期在操作520處所判定之虛擬記憶體位址處找到的可執行程式碼)的程式碼提取。
接下來,在操作540處,VMM 200可使用與處理器相關聯之分頁表(例如,分頁表140或150)來轉譯虛擬記憶體位址。接著,在操作550處,處理器可自實體記憶體存取在經轉譯之實體記憶體位址處找到的可執行程式碼。該經存取程式碼可接著在操作560處由處理器執行。
該程序可接著結束。
圖6針對一個實施例說明適合於實踐本發明之實施例的實例電腦系統600。如所說明,實例電腦系統600可包括耦接至(若干)處理器604中之至少一者的控制邏輯元件608、耦接至系統控制邏輯元件608之系統記憶體612、耦接至系統控制邏輯元件608之非依電性記憶體(NVM)/儲存器616,及耦接至系統控制邏輯元件608之一或多個通信介面620。在各種實施例中,該一或多個處理器604可為處理器核心。
對於一個實施例而言,系統控制邏輯元件608可包括任何合適介面控制器,以提供至該(等)處理器604中之至少一者及/或至與系統控制邏輯元件608通信之任何合適裝置或組件之任何合適介面。
對於一個實施例而言,系統控制邏輯元件608可包括用以提供至系統記憶體612之介面的一或多個記憶體控制器。系統記憶體612可用以載入且儲存例如用於系統600之資料及/或指令。在一個實施例中,舉例而言,系統記憶體612可包括任何合適之依電性記憶體,諸如,合適之動態隨機存取記憶體(「DRAM」)。
在一個實施例中,系統控制邏輯元件608可包括用以提供至NVM/儲存器816及(多個)通信介面620的介面之一或多個輸入/輸出(「I/O」)控制器。
舉例而言,NVM/儲存器616可用以儲存資料及/或指令。NVM/儲存器616可(例如)包括諸如快閃記憶體之
任何合適非依電性記憶體,及/或可(例如)包括任何合適之非依電性儲存裝置,諸如,一或多個硬碟機(「HDD」)、一或多個固態硬碟、一或多個光碟(「CD」)機、及/或一或多個數位多功能光碟(「DVD」)機。
NVM/儲存器616可包括實體地為一裝置之部分的儲存資源,系統600係安裝於該裝置上,或NVM/儲存器616可由該裝置存取而未必為該裝置之一部分。舉例而言,可經由該或該等通信介面620經由網路存取NVM/儲存器616。
特別是,系統記憶體612及NVM/儲存器616可包括異質執行邏輯元件624之臨時或持久複本。異質執行邏輯元件624可包括指令,當由該或該等處理器604中之至少一者執行時該等指令導致系統600以上文所描述之與多重分頁表有關之操作實踐異質執行中之一或多者。在一些實施例中,異質執行邏輯元件624可額外/替代性地位於系統控制邏輯元件608中。
通信介面620可提供用於使系統600經由一或多個網路通信及/或與任何其他合適裝置通信的介面。通信介面620可包括任何合適之硬體及/或韌體,諸如,網路配接器、一或多個天線、無線介面,等等。在各種實施例中,通信介面620可包括一用於使系統600使用NFC、光學通信(例如,條碼)、藍芽或其他類似技術來與另一裝置直接通信(例如,無中間裝置)的介面。
對於一個實施例而言,該(等)處理器604中之至
少一者可與系統控制邏輯元件608及/或異質執行邏輯元件624封裝在一起。對於一個實施例而言,該或該等處理器604中之至少一者可與系統控制邏輯元件608及/或異質邏輯元件624封裝在一起以形成系統級封裝(「SiP」)。對於一個實施例而言,該或該等處理器804中之至少一者可與系統控制邏輯元件608及/或異質執行邏輯元件624整合在同一晶粒上。對於一個實施例而言,該或該等處理器604中之至少一者可與系統控制邏輯元件608及/或異質執行邏輯元件624整合在同一晶粒上以形成系統單晶片(「SoC」)。
以下段落描述各種實施例之實例。在各種實施例中,一種異質計算設備(其用於在其上執行一函式)可包括一實體記憶體。該設備亦可包括一第一電腦處理器,其耦接至該實體記憶體且經組配以支援第一指令集架構。該設備亦可包括一第二電腦處理器,其耦接至該實體記憶體且經組配以支援第二指令集架構。該設備亦可包括一虛擬機管理器,其經組配以在該設備之一或多個電腦處理器上操作以將虛擬記憶體位址轉譯為實體記憶體位址。該虛擬記憶體管理器可經組配以操作以使用一第一分頁表或一第二分頁表中之一選定者將與由該第一或該第二電腦處理器進行之一程式碼提取相關聯的一虛擬記憶體位址轉譯為該實體記憶體之一對應實體記憶體位址,其中使用該第一或該第二分頁表中之哪一者係視該虛擬記憶體位址與由該第一電腦處理器進行之該程式碼提取相關聯抑或與由該第二電腦處理器進行之該程式碼提取相關聯而定。
在各種實施例中,該第一分頁表可經組配以將該虛擬記憶體位址映射至一第一實體記憶體位址,且該第二分頁表可經組配以將該虛擬記憶體位址映射至一不同於該第一實體記憶體位址之第二實體記憶體位址。在各種實施例中,該實體記憶體可經組配以含有在包括該第一實體記憶體位址之一第一實體記憶體區域中的用於該函式之第一可執行程式碼及在包括該第二實體記憶體位址之一第二實體記憶體區域中的用於該函式之第二可執行程式碼,且該第一實體記憶體區域及該第二實體記憶體區域可為不同的實體記憶體區域。在各種實施例中,該第一指令集架構及該第二指令集架構可為相異的。在各種實施例中,該第一可執行程式碼可包括該第一指令集架構之指令且該第二可執行程式碼可包括該第二指令集架構之指令。
在各種實施例中,該設備可進一步包括一載入器,該載入器經組配以在該設備之一或多個電腦處理器上操作。該載入器可經組配以將該第一可執行程式碼載入至該第一實體記憶體區域中,且將該第二可執行程式碼載入至該第二實體記憶體區域中。在各種實施例中,該載入器可經進一步組配以操作以促進該第一分頁表及該第二分頁表之組配以將與該程式碼提取相關聯之該虛擬記憶體位址映射至該等對應之第一及第二實體記憶體位址。
在各種實施例中,該虛擬記憶體位址可基於一包含該虛擬記憶體位址之函式指標而與該程式碼提取相關聯,該函式指標係可用於該第一電腦處理器及該第二電腦
處理器兩者。在各種實施例中,該虛擬記憶體位址可作為一引數被傳遞至在該第一電腦處理器上執行之可執行程式碼及在該第二電腦處理器上執行之可執行程式碼兩者。
在各種實施例中,一種電腦實施方法可促進程式碼在包含利用第一指令集之一第一電腦處理器及利用第二指令集之一第二電腦處理器之一異質計算裝置上之執行。該方法可包括藉由一在該計算裝置上操作之載入器在各別第一及第二實體記憶體區域處將基於該第一指令集的用於該函式之第一可執行程式碼及基於該第二指令集的用於該函式之第二可執行程式碼載入至該計算裝置之實體記憶體中,該載入係回應於一用以將用於一函式之可執行程式碼載入至該計算裝置上之記憶體中的請求而執行,該可執行程式碼包含第一可執行程式碼及基於該第二指令集的用於該函式之第二可執行程式碼。該方法亦可包括藉由該載入器促進第一及第二分頁表之組配以用於轉譯由該等對應之第一及第二電腦處理器進行的虛擬記憶體存取,該第一分頁表及該第二分頁表將用於針對該函式之一程式碼提取的一虛擬記憶體位址映射至該等對應之第一及第二實體記憶體區域中的實體位址。
在各種實施例中,該方法可進一步包括藉由該載入器促進該第一分頁表及該第二分頁表之組配,以將與包括用於該程式碼提取之該虛擬記憶體位址之一共同虛擬記憶體區域相關聯的虛擬記憶體位址映射至該第一實體記憶體區域及該第二實體記憶體區域之實體記憶體位址。
在各種實施例中,該方法可進一步包括藉由該載入器基於該第一可執行程式碼及該第二可執行程式碼之各別大小而選擇該共同虛擬記憶體區域之一大小。在各種實施例中,選擇該大小可包括至少部分地基於該第一可執行程式碼之一大小及該第二可執行程式碼之一大小中的一較大者而選擇該共同大小。
用於執行上文所描述之技術的電腦可讀媒體(包括非暫時性電腦可讀媒體)、方法、系統及裝置為本文中所揭示之實施例的例示性實例。另外,上文所描述之互動中的其他裝置可經組配以執行各種所揭示之技術。
儘管出於描述之目的,已在本文中說明且描述了特定實施例,但在不脫離本發明之範疇的情況下,經計劃以達成相同目的之多種替代及/或等效實施例或實施可取代所展示且經描述之實施例。本申請案意欲涵蓋本文中所論述之實施例之任何調適或變化。因此,顯然本文中所描述之實施例僅意欲受申請專利範圍限制。
在本發明敍述「一」或「第一」元件或其等效物的情況下,本發明包括一或多個該等元件,既不要求亦不排除兩個或兩個以上該等元件。另外,針對經識別元件之序數指示符(例如,第一、第二或第三)用以在元件之間進行區分,且不指示或暗示該等元件之所要求或經限制數目,其亦不指示該等元件之特定位置或次序,除非另外明確陳述。
100‧‧‧異質執行系統(HES)
105‧‧‧原始程式碼
110‧‧‧編譯器
113‧‧‧可執行程式碼之經說明版本/用於中央處理單元(CPU)之可執行程式碼
115‧‧‧可執行程式碼之經說明版本/用於圖形處理單元(GPU)之可執行程式碼
120‧‧‧載入器
130‧‧‧第一處理器
135‧‧‧第二處理器
140、150‧‧‧分頁表
155‧‧‧可執行程式碼(EC)虛擬記憶體(VM)位址
160‧‧‧實體記憶體
170‧‧‧可執行程式碼(EC)1實體位址
180‧‧‧可執行程式碼(EC)2實體位址
Claims (42)
- 一或多種電腦可讀儲存媒體,其具有實施於其內的指令,該等指令經組配以回應於由包含一第一電腦處理器及一第二電腦處理器之一計算裝置進行的執行而使得該計算裝置操作一虛擬機管理器以將虛擬記憶體位址轉譯為實體記憶體位址,其中該虛擬記憶體管理器經組配以使用對應地與該第一處理器及該第二處理器相關聯之一第一分頁表或一第二分頁表中的一選定者,將與由該第一處理器或該第二處理器進行之一程式碼提取相關聯的一虛擬記憶體位址轉譯為一實體記憶體位置之一對應實體記憶體位址,其中使用該第一分頁表及該第二分頁表中之哪一者係視該程式碼提取與該第一或該第二處理器相關聯而定。
- 如申請專利範圍第1項之一或多種電腦可讀儲存媒體,其中:該第一分頁表將與該程式碼提取相關聯之該虛擬記憶體位址映射至一第一實體記憶體位址,及該第二分頁表將與該程式碼提取相關聯之該虛擬記憶體位址映射至不同於該第一實體記憶體位址之一第二實體記憶體位址。
- 如申請專利範圍第2項之一或多種電腦可讀儲存媒體,其中該第一實體記憶體位址與具有該第一處理器之一第一指令集架構之第一可執行程式碼的一第一實體記 憶體區域相關聯,且該第二實體記憶體位址與具有該第二處理器之一第二指令集架構之第二可執行程式碼的一第二實體記憶體區域相關聯,其中該第一實體記憶體區域及該第二實體記憶體區域為不同的實體記憶體區域,且該第一指令集架構及該第二指令集架構為不同的指令集架構。
- 如申請專利範圍第3項之一或多種電腦可讀儲存媒體,其中該第一分頁表及該第二分頁表經組配以將與一共同虛擬記憶體資料區域相關聯之虛擬記憶體位址映射至一共同實體記憶體區域之實體記憶體位址。
- 如申請專利範圍第3項之一或多種電腦可讀儲存媒體,其中該第一可執行程式碼及該第二可執行程式碼係各自由共同原始程式碼產生。
- 如申請專利範圍第5項之一或多種電腦可讀儲存媒體,其中該等指令經進一步組配以回應於由該計算裝置進行之執行而使得該計算裝置操作一載入器以將該第一可執行程式碼及該第二可執行程式碼載入至該等對應之第一及第二實體記憶體區域中。
- 如申請專利範圍第6項之一或多種電腦可讀儲存媒體,其中該載入器經組配以促進對該第一分頁表及該第二分頁表之組配以將與該程式碼提取相關聯之該虛擬記憶體位址映射至該等對應之第一及第二實體記憶體位址。
- 如申請專利範圍第7項之一或多種電腦可讀儲存媒體, 其中該載入器經組配以促進對該第一分頁表及該第二分頁表之組配以將與一共同虛擬記憶體區域相關聯的虛擬記憶體位址映射至該第一實體記憶體區域及該第二實體記憶體區域之實體記憶體位址,該共同虛擬記憶體區域包括與該程式碼提取相關聯之該虛擬記憶體位址。
- 如申請專利範圍第8項之一或多種電腦可讀儲存媒體,該載入器經組配以至少部分地基於該第一可執行程式碼及該第二可執行程式碼之各別大小來選擇該共同虛擬記憶體區域之一大小。
- 如申請專利範圍第9項之一或多種電腦可讀儲存媒體,其中該載入器經組配以至少部分地基於該第一可執行程式碼之一大小及該第二可執行程式碼之一大小中的一較大者來選擇該共同虛擬記憶體區域之該大小。
- 如申請專利範圍第1項至第10項中任一項之一或多種電腦可讀儲存媒體,其中該虛擬記憶體位址係基於包含該虛擬記憶體位址之一函式指標而與該程式碼提取相關聯,該函式指標係可用於該第一電腦處理器及該第二電腦處理器兩者。
- 如申請專利範圍第11項之一或多種電腦可讀儲存媒體,其中該虛擬記憶體位址需作為一引數被傳遞至在該第一電腦處理器上執行之可執行程式碼及在該第二電腦處理器上執行之可執行程式碼兩者。
- 一或多種電腦可讀儲存媒體,其具有實施於其內的指 令,該等指令經組配以回應於由包含利用一第一指令集之一第一電腦處理器及利用一第二指令集之一第二電腦處理器的一計算裝置進行之執行而使得該計算裝置操作一載入器以進行以下操作:對用以將針對一函式之可執行程式碼載入至該計算裝置上之記憶體中的一請求進行回應,其中該可執行程式碼包含基於該第一指令集之針對該函式之第一可執行程式碼及基於該第二指令集之針對該函式之第二可執行程式碼,其中回應於該請求包括在各別第一及第二實體記憶體區域處執行該第一可執行程式碼及該第二可執行程式碼至該計算裝置之實體記憶體中的一載入;促進對第一及第二分頁表之組配以用於轉譯由該等對應之第一及第二電腦處理器進行的虛擬記憶體存取,其中該第一分頁表及該第二分頁表需用以將用於該函式之一程式碼提取的一虛擬記憶體位址映射至該等對應之第一及第二實體記憶體區域中的實體記憶體位址。
- 如申請專利範圍第13項之一或多種電腦可讀儲存媒體,其中該載入器經組配以經由促進該第一分頁表及該第二分頁表之組配以將與包括用於該程式碼提取之該虛擬記憶體位址之一共同虛擬記憶體區域相關聯的虛擬記憶體位址映射至該第一實體記憶體區域及該第二實體記憶體區域之實體記憶體位址而促進該第一分頁 表及該第二分頁表之組配。
- 如申請專利範圍第14項之一或多種電腦可讀儲存媒體,其中該載入器經組配以基於該第一可執行程式碼及該第二可執行程式碼之各別大小來選擇該共同虛擬記憶體區域之一大小。
- 如申請專利範圍第15項之一或多種電腦可讀儲存媒體,其中該載入器經組配以至少部分地基於該第一可執行程式碼之一大小及該第二可執行程式碼之一大小中的一較大者來選擇該大小。
- 一種異質計算設備,其用於在該異質計算設備上執行一函式,該異質計算設備包含:一實體記憶體;一第一電腦處理器,其耦接至該實體記憶體且經組配以支援一第一指令集架構;一第二電腦處理器,其耦接至該實體記憶體且經組配以支援一第二指令集架構;以及一虛擬機管理器,其經組配以在該設備之一或多個電腦處理器上操作以將虛擬記憶體位址轉譯為實體記憶體位址;其中該虛擬記憶體管理器經組配以操作以使用一第一分頁表或一第二分頁表中之一選定者,將與由該第一或該第二電腦處理器進行之一程式碼提取相關聯的一虛擬記憶體位址轉譯為該實體記憶體之一對應實體記憶體位址,其中使用該第一或該第二分頁表中之哪一 者係視該虛擬記憶體位址與由該第一電腦處理器進行之該程式碼提取相關聯或與由該第二電腦處理器進行之該程式碼提取相關聯而定。
- 如申請專利範圍第17項之設備,其中:該第一分頁表經組配以將該虛擬記憶體位址映射至一第一實體記憶體位址,及該第二分頁表經組配以將該虛擬記憶體位址映射至不同於該第一實體記憶體位址之一第二實體記憶體位址。
- 如申請專利範圍第18項之設備,其中:該實體記憶體經組配以在包括該第一實體記憶體位址之一第一實體記憶體區域中含有用於該函式之第一可執行程式碼及在包括該第二實體記憶體位址之一第二實體記憶體區域中含有用於該函式之第二可執行程式碼;及該第一實體記憶體區域及該第二實體記憶體區域為不同的實體記憶體區域。
- 如申請專利範圍第19項之設備,其中該第一指令集架構及該第二指令集架構為相異的。
- 如申請專利範圍第20項之設備,其中該第一可執行程式碼包含該第一指令集架構之指令且該第二可執行程式碼包含該第二指令集架構之指令。
- 如申請專利範圍第18項之設備,其進一步包含一載入器,該載入器經組配以在該設備之一或多個電腦處理器上操作以進行以下操作: 將該第一可執行程式碼載入至該第一實體記憶體區域中;及將該第二可執行程式碼載入至該第二實體記憶體區域中。
- 如申請專利範圍第22項之設備,其中該載入器經進一步組配以操作以促進該第一分頁表及該第二分頁表之組配以將與該程式碼提取相關聯之該虛擬記憶體位址映射至該等對應之第一及第二實體記憶體位址。
- 如申請專利範圍第17項至第23項中任一項之設備,其中該虛擬記憶體位址係基於包含該虛擬記憶體位址之一函式指標而與該程式碼提取相關聯,該函式指標係可用於該第一電腦處理器及該第二電腦處理器兩者。
- 如申請專利範圍第24項之設備,其中該虛擬記憶體位址需作為一引數被傳遞至在該第一電腦處理器上執行之可執行程式碼及在該第二電腦處理器上執行之可執行程式碼兩者。
- 一種用於促進程式碼在一異質計算裝置上之執行的電腦實施方法,該異質計算裝置包含第一及第二電腦處理器,該方法包含下列步驟:藉由在一計算裝置上操作之一虛擬機管理器,使用對應地與該第一處理器及該第二處理器相關聯之一第一分頁表或一第二分頁表中的一選定者,將與由該第一處理器或該第二處理器進行之一程式碼提取相關聯的一虛擬記憶體位址轉譯為一實體記憶體位置之一對應實體記憶體位址,其中使用該第一或該第二分頁表中之 哪一者係視該虛擬記憶體位址與由該第一處理器進行之該程式碼提取相關聯或與由該第二處理器進行之該程式碼提取相關聯而定。
- 如申請專利範圍第26項之方法,其中:該第一分頁表將該虛擬記憶體位址映射至一第一實體記憶體位址,及該第二分頁表將該虛擬記憶體位址映射至不同於該第一實體記憶體位址之一第二實體記憶體位址。
- 如申請專利範圍第27項之方法,其中該第一實體記憶體位址與具有該第一處理器之一第一指令集架構之第一可執行程式碼的一第一實體記憶體區域相關聯,且該第二實體記憶體位址與具有該第二處理器之一第二指令集架構之第二可執行程式碼的一第二實體記憶體區域相關聯,其中該第一實體記憶體區域及該第二實體記憶體區域為不同的實體記憶體區域,且該第一指令集架構及該第二指令集架構為不同的指令集架構。
- 如申請專利範圍第28項之方法,其中該第一分頁表及該第二分頁表經組配以將與一共同虛擬記憶體資料區域相關聯之虛擬記憶體位址映射至一共同實體記憶體區域之實體記憶體位址。
- 如申請專利範圍第28項之方法,其中該第一可執行程式碼及該第二可執行程式碼係各自由共同原始程式碼產生。
- 如申請專利範圍第30項之方法,其進一步包含藉由在 該計算裝置上操作之一編譯器將該共同原始程式碼編譯為該第一可執行程式碼及該第二可執行程式碼。
- 如申請專利範圍第30項之方法,其進一步包含藉由在該計算裝置上操作之一載入器將該第一可執行程式碼及該第二可執行程式碼載入至該等對應之第一及第二實體記憶體區域中。
- 如申請專利範圍第32項之方法,其進一步包含藉由該載入器促進該第一分頁表及該第二分頁表之組配,以將與該程式碼提取相關聯之該虛擬記憶體位址映射至該等對應之第一及第二實體記憶體位址。
- 如申請專利範圍第33項之方法,其中促進該第一分頁表及該第二分頁表之組配包含促進該第一分頁表及該第二分頁表之組配以將與一共同虛擬記憶體區域相關聯的虛擬記憶體位址映射至該第一實體記憶體區域及該第二實體記憶體區域之實體記憶體位址,該共同虛擬記憶體區域包括與該程式碼提取相關聯之該虛擬記憶體位址。
- 如申請專利範圍第34項之方法,其進一步包含藉由該載入器至少部分地基於該第一可執行程式碼及該第二可執行程式碼之各別大小而選擇該共同虛擬記憶體區域之一大小。
- 如申請專利範圍第35項之方法,其中選擇一共同大小包含至少部分地基於該第一可執行程式碼之一大小及該第二可執行程式碼之一大小中的一較大者而選擇該 共同虛擬記憶體區域之該大小。
- 如申請專利範圍第26項至第36項中任一項之方法,其中該虛擬記憶體位址係基於包含該虛擬記憶體位址之一函式指標而與該程式碼提取相關聯,該函式指標係可用於該第一電腦處理器及該第二電腦處理器兩者。
- 如申請專利範圍第37項之方法,其中該虛擬記憶體位址經組配以作為一引數被傳遞至在該第一電腦處理器上執行之可執行程式碼及在該第二電腦處理器上執行之可執行程式碼兩者。
- 一種用於促進程式碼在一異質計算裝置上之執行的電腦實施方法,該異質計算裝置包含利用一第一指令集之一第一電腦處理器及利用一第二指令集之一第二電腦處理器,該方法包含下列步驟:藉由一在該計算裝置上操作之載入器在各別第一及第二實體記憶體區域處將基於該第一指令集的用於該函式之第一可執行程式碼及基於該第二指令集的用於該函式之第二可執行程式碼載入至該計算裝置之實體記憶體中,該載入係回應於用以將用於一函式之可執行程式碼載入至該計算裝置上之記憶體中的一請求而執行,該可執行程式碼包含第一可執行程式碼及基於該第二指令集的用於該函式之第二可執行程式碼;藉由該載入器促進第一及第二分頁表之組配以用於轉譯由該等對應之第一及第二電腦處理器進行的虛擬記憶體存取,該第一分頁表及該第二分頁表將用於針 對該函式之一程式碼提取的一虛擬記憶體位址映射至該等對應之第一及第二實體記憶體區域中的實體位址。
- 如申請專利範圍第39項之方法,其進一步包含藉由該載入器促進該第一分頁表及該第二分頁表之組配以將與包括用於該程式碼提取之該虛擬記憶體位址之一共同虛擬記憶體區域相關聯的虛擬記憶體位址映射至該第一實體記憶體區域及該第二實體記憶體區域之實體記憶體位址。
- 如申請專利範圍第40項之方法,其進一步包含藉由該載入器基於該第一可執行程式碼及該第二可執行程式碼之各別大小而選擇該共同虛擬記憶體區域之一大小。
- 如申請專利範圍第41項之方法,其中選擇該大小包含至少部分地基於該第一可執行程式碼之一大小及該第二可執行程式碼之一大小中的一較大者而選擇該共同大小。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2012/037164 WO2013169248A1 (en) | 2012-05-09 | 2012-05-09 | Execution using multiple page tables |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201411350A TW201411350A (zh) | 2014-03-16 |
TWI524185B true TWI524185B (zh) | 2016-03-01 |
Family
ID=49551094
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102113265A TWI524185B (zh) | 2012-05-09 | 2013-04-15 | 使用多重分頁表執行之技術 |
Country Status (6)
Country | Link |
---|---|
US (3) | US9697120B2 (zh) |
EP (2) | EP3242213A1 (zh) |
CN (2) | CN107273311B (zh) |
AU (1) | AU2012379689B2 (zh) |
TW (1) | TWI524185B (zh) |
WO (1) | WO2013169248A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8918608B2 (en) * | 2012-01-09 | 2014-12-23 | Ravello Systems Ltd. | Techniques for handling memory accesses by processor-independent executable code in a multi-processor environment |
US9697120B2 (en) * | 2012-05-09 | 2017-07-04 | Intel Corporation | Execution using multiple page tables |
CN105577499B (zh) * | 2014-10-10 | 2019-05-28 | 华为技术有限公司 | 决策协调方法、执行装置和决策协调器 |
US9910780B2 (en) * | 2015-10-28 | 2018-03-06 | International Business Machines Corporation | Pre-loading page table cache lines of a virtual machine |
US10379870B2 (en) * | 2017-07-07 | 2019-08-13 | Vmware, Inc. | Supporting soft reboot in multi-processor systems without hardware or firmware control of processor state |
US10678705B2 (en) * | 2018-09-13 | 2020-06-09 | Qualcomm Incorporated | External paging and swapping for dynamic modules |
US11836091B2 (en) * | 2018-10-31 | 2023-12-05 | Advanced Micro Devices, Inc. | Secure memory access in a virtualized computing environment |
EP3987395B1 (en) * | 2019-08-07 | 2023-10-18 | Samsung Electronics Co., Ltd. | Electronic device for executing instructions using processor cores and various versions of instruction set architectures |
US11243864B2 (en) * | 2019-09-17 | 2022-02-08 | International Business Machines Corporation | Identifying translation errors |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3451595B2 (ja) * | 1995-06-07 | 2003-09-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ |
US6480952B2 (en) * | 1998-05-26 | 2002-11-12 | Advanced Micro Devices, Inc. | Emulation coprocessor |
US6732220B2 (en) | 1999-02-17 | 2004-05-04 | Elbrus International | Method for emulating hardware features of a foreign architecture in a host operating system environment |
US7953588B2 (en) * | 2002-09-17 | 2011-05-31 | International Business Machines Corporation | Method and system for efficient emulation of multiprocessor address translation on a multiprocessor host |
US7418584B1 (en) | 2004-05-11 | 2008-08-26 | Advanced Micro Devices, Inc. | Executing system management mode code as virtual machine guest |
US7167970B2 (en) * | 2004-05-24 | 2007-01-23 | Sun Microsystems, Inc. | Translating loads for accelerating virtualized partition |
CN101346706B (zh) * | 2005-12-29 | 2011-06-22 | 英特尔公司 | 虚拟转换后备缓冲器 |
WO2007115425A1 (en) | 2006-03-30 | 2007-10-18 | Intel Corporation | Method and apparatus for supporting heterogeneous virtualization |
US7685399B2 (en) * | 2007-01-07 | 2010-03-23 | International Business Machines Corporation | Method, system, and computer program products for data movement within processor storage |
US8156307B2 (en) * | 2007-08-20 | 2012-04-10 | Convey Computer | Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set |
US8122229B2 (en) * | 2007-09-12 | 2012-02-21 | Convey Computer | Dispatch mechanism for dispatching instructions from a host processor to a co-processor |
US8397241B2 (en) * | 2008-11-13 | 2013-03-12 | Intel Corporation | Language level support for shared virtual memory |
US9032101B1 (en) * | 2008-12-10 | 2015-05-12 | Nvidia Corporation | Chipset support for binding and migrating hardware devices among heterogeneous processing units |
US8719543B2 (en) * | 2009-12-29 | 2014-05-06 | Advanced Micro Devices, Inc. | Systems and methods implementing non-shared page tables for sharing memory resources managed by a main operating system with accelerator devices |
US8375392B2 (en) * | 2010-01-12 | 2013-02-12 | Nec Laboratories America, Inc. | Data aware scheduling on heterogeneous platforms |
KR101534037B1 (ko) * | 2010-09-24 | 2015-07-08 | 인텔 코포레이션 | 컴퓨팅 플랫폼의 이종 프로세서들 간의 공유 가상 메모리에서의 가상 함수들의 공유 |
US9697120B2 (en) * | 2012-05-09 | 2017-07-04 | Intel Corporation | Execution using multiple page tables |
-
2012
- 2012-05-09 US US13/997,642 patent/US9697120B2/en active Active
- 2012-05-09 WO PCT/US2012/037164 patent/WO2013169248A1/en active Application Filing
- 2012-05-09 EP EP17171776.2A patent/EP3242213A1/en not_active Ceased
- 2012-05-09 CN CN201710338065.0A patent/CN107273311B/zh active Active
- 2012-05-09 CN CN201280072498.1A patent/CN104335162B/zh active Active
- 2012-05-09 AU AU2012379689A patent/AU2012379689B2/en not_active Ceased
- 2012-05-09 EP EP12876530.2A patent/EP2847668B1/en active Active
-
2013
- 2013-04-15 TW TW102113265A patent/TWI524185B/zh active
-
2017
- 2017-04-25 US US15/496,929 patent/US10146687B2/en active Active
-
2018
- 2018-12-04 US US16/209,025 patent/US11119918B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11119918B2 (en) | 2021-09-14 |
EP2847668A1 (en) | 2015-03-18 |
TW201411350A (zh) | 2014-03-16 |
WO2013169248A1 (en) | 2013-11-14 |
CN104335162A (zh) | 2015-02-04 |
US10146687B2 (en) | 2018-12-04 |
CN104335162B (zh) | 2018-02-23 |
US20170228315A1 (en) | 2017-08-10 |
CN107273311A (zh) | 2017-10-20 |
EP2847668B1 (en) | 2022-02-09 |
AU2012379689B2 (en) | 2016-06-30 |
AU2012379689A1 (en) | 2014-11-06 |
US20140082253A1 (en) | 2014-03-20 |
CN107273311B (zh) | 2020-10-23 |
US9697120B2 (en) | 2017-07-04 |
EP2847668A4 (en) | 2015-12-09 |
US20190146915A1 (en) | 2019-05-16 |
EP3242213A1 (en) | 2017-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI524185B (zh) | 使用多重分頁表執行之技術 | |
US10318407B2 (en) | Allocating a debug instruction set based on the current operating state in a multi-instruction-set data processing apparatus | |
US9798487B2 (en) | Migrating pages of different sizes between heterogeneous processors | |
US10445243B2 (en) | Fault buffer for resolving page faults in unified virtual memory system | |
EP3230873B1 (en) | Computing method and apparatus with persistent memory | |
US10877793B2 (en) | Extending the base address register by modifying the number of read-only bits associated with a device to be presented to a guest operating system | |
JP2015135696A (ja) | ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供 | |
JP5778296B2 (ja) | 仮想計算機システム、仮想化機構、及びデータ管理方法 | |
KR20200107101A (ko) | 주소 변환 기능을 갖는 메모리 관리 유닛, 이를 포함하는 데이터 처리 구조 및 주소 변환 정보 생성 방법 | |
CN114765051A (zh) | 内存测试方法及装置、可读存储介质、电子设备 | |
TWI515564B (zh) | 管理統一虛擬記憶體的分頁狀態目錄 | |
TW201246068A (en) | Methods and systems for mapping a function pointer to the device code |