TWI550412B - 在具有異質處理器之電腦平台中執行之方法和電腦平台 - Google Patents
在具有異質處理器之電腦平台中執行之方法和電腦平台 Download PDFInfo
- Publication number
- TWI550412B TWI550412B TW103122260A TW103122260A TWI550412B TW I550412 B TWI550412 B TW I550412B TW 103122260 A TW103122260 A TW 103122260A TW 103122260 A TW103122260 A TW 103122260A TW I550412 B TWI550412 B TW I550412B
- Authority
- TW
- Taiwan
- Prior art keywords
- processor
- version
- memory
- cpu
- shared
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- 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/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/10—Requirements analysis; Specification techniques
-
- 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/451—Execution arrangements for user interfaces
-
- 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Multimedia (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
- Storage Device Security (AREA)
Description
本發明係有關介於電腦平台的異質處理器間之虛擬記憶體為基的多重版本的資料之共享。
電腦系統可包含支援諸如中央處理單元(CPU)及圖形處理單元(GPU)的異質處理器及對稱和不對稱處理器的平台。單一版本的資料可位在與CPU-GPU平台之第一側(如CPU)關聯的第一記憶體中。可允許第二側(GPU側)引動位在與CPU-GPU平台之第一側(CPU側)關聯的第一記憶體中之該單一版本資料。並且,可不允許第一側以引動位在第二側(GPU側)上之第二記憶體中的該單一版本資料。由於單一版本資料可儲存在不同位址空間中,現有的通訊機制僅允許異質處理器(CPU及GPU)間的單向通訊來引動單一版本資料。
100‧‧‧平台
110‧‧‧中央處理單元
112‧‧‧操作系統
115‧‧‧CPU私有空間
118‧‧‧CPU編譯器
130‧‧‧共享的虛擬記憶體(或多重版本共享記憶體)
131‧‧‧物件
132‧‧‧共享多重版本資料
137‧‧‧先前版本頁PVP
138‧‧‧目前版本頁CVP
139‧‧‧已更新版本頁UVP
180‧‧‧圖形處理單元
182‧‧‧操作系統
185‧‧‧GPU私有空間
188‧‧‧GPU編譯器
511‧‧‧Diff-1欄位
512‧‧‧版本號欄位
520‧‧‧diff列表
521‧‧‧Diff-2欄位
522‧‧‧版本號欄位
530‧‧‧合併產生器
540‧‧‧頁「i」
550‧‧‧孿生頁
570‧‧‧差異產生器
581‧‧‧Diff-3欄位
582‧‧‧版本識別符欄位
600‧‧‧電腦系統
602‧‧‧一般目的處理器
603‧‧‧CPU傳統編譯器
604‧‧‧CPU鏈接器/載入器
605‧‧‧圖形處理單元
606‧‧‧GPU專屬編譯器
607‧‧‧GPU鏈接器/載入器
620‧‧‧CPU私有記憶體
625‧‧‧機器可讀取儲存媒體
630‧‧‧邏輯
630‧‧‧私有GPU記憶體
640‧‧‧顯示器
650‧‧‧共享記憶體
660‧‧‧I/O裝置
在附圖中舉例而非限制性繪示在此所述之本發明。為了清楚簡單的說明,圖中繪示的元件不一定按照比例繪製。例如,為了清楚相較於其他元件放大了某些元件的尺寸。此外,在認為適當之處,於圖中重複參考標示以指示相應或同功的元件。
第1圖繪示根據一實施例的可支援在諸如CPU及GPU的異質處理器之間的虛擬記憶體為基之多重版本資料之共享的平台100。
第2圖為一流程圖,其繪示由平台100根據一實施例所執行之一操作。
第3圖為一流程圖,其繪示由平台100之生產者及消費者根據一實施例所執行的一操作以支援在諸如CPU及GPU的異質處理器之間的虛擬記憶體為基之多重版本資料之共享。
第4圖為一流程圖,其繪示由生產者根據一實施例所執行之一操作以追蹤共享虛擬記憶體空間中之已更新記憶體頁。
第5圖為一線圖,其繪示由平台100的生產者根據第一實施例所執行的一「diff」操作以提可供消費者獲取的多重版本資料。
第6圖繪示根據一實施例的一電腦系統,其可包括一平台,其可支援在平台的異質處理器之間的虛擬記憶體為基之多重版本資料的共享。
下列說明描述技術以在電腦平台之異質處理器(例如,CPU及GPU)之間共享虛擬記憶體為基的多重版本資料。在下列說明中,提出多種特定細節,如邏輯實行、資源分割、或共享、或複製實行、系統構件之種類及相互關係、及邏輯分割或整合選擇以提供本發明之較詳盡的了解。然而,熟悉此技藝人士應理解到可在無這類特定細節下施行本發明。在其他例子中,並未詳細顯示控制結構、閘位準電路、及完整軟體指令序列以不混淆本發明。熟悉此技藝人士,藉由所包括之說明,將能夠實行適當的功能而不進行過多的實驗。
說明書中對於「一實施例」、「實施例」、「示範實施例」的參照指示所述的實施例可包括特定特徵、結構或特性,但每一實施例不一定包括該特定特徵、結構、或特性。此外,這類片語不一定參照相同實施例。另外,當連同一實施例說明特定特徵、結構、或特性時,連同無論是否明確描述之其他實施例作用這種特徵、結構、或特性應是在熟悉此技藝人士的知識內。
可在硬體、韌體、軟體、或上述任何組合中實行本發明之實施例。本發明之實施例亦可實行成儲存在機器可讀取媒體上的指令,其可由一或更多處理器讀取並執行。機器可讀取儲存媒體可包括以機器(如運算裝置)可讀取的形式來儲存或傳送資訊的任何機制。
例如,機器可讀取儲存媒體可包括唯讀記憶體
(ROM)、隨機存取記憶體(RAM)、磁碟儲存媒體、光學儲存媒體、快閃記憶體裝置、信號的電性及光學形式。此外,韌體、軟體、常式、及指令可在此描述成執行某些動作。然而,應理解到這種說明僅為了方便且這種動作事實上為運算裝置、處理器、控制器、及執行韌體、軟體、常式、及指令的其他裝置之結果。
在一實施例中,電腦平台可支援一或更多技術以在異質處理器(如CPU與GPU)之間共享虛擬記憶體為基的多重版本資料。在一實施例中,共享的記憶體語義可提供基元,如使由CPU或GPU的儲存「邏輯確定(logically commit)」至共享的記憶體之釋放操作,以及使CPU或GPU記憶體與共享的記憶體「保持邏輯同步(logically sync up)」的獲取操作。
在一實施例中,釋放操作可追蹤共享記憶體中之已被更新(或修改)的頁。在一實施例中,可執行頁的先前版本及目前版本之diff操作,且可將diff操作的結果及關聯的新版本號儲存到分開的記憶體區域中。在一實施例中,欲允許已更新(或已修改或髒)頁的追蹤,共享的虛擬記憶體頁可在釋放時設定成「寫入保護」模式,其亦造成在寫入頁的同時創造出在處置器中之捕捉。在一實施例中,處置器可用來創造頁的備用複本(孿生頁)。在一實施例中,可使用輔助貯存來標記位置(或特定位元)以指示該頁已被更新或髒。因此,針對在生產者(像是例如CPU)上釋放並在消費者(像是例如GPU)上獲取的資料結構,
僅轉移每一版本之被修改的位元組。雖消費者在特定版本號上執行獲取操作,可合併儲存的diff到消費者的私有位址空間中。在一實施例中,可藉由異質處理器的實體私有記憶體空間或由異質處理器所共享的實體共享記憶體來支援共享的虛擬記憶體。
在第1圖中繪示在諸如CPU及GPU的異質處理器之間提供共享的多重版本資料的平台100之一實施例。在一實施例中,平台100可包含中央處理單元(CPU)110、與CPU 110關聯之操作系統(OS)112、CPU私有空間115、CPU編譯器118、共享的虛擬記憶體(或多重版本共享記憶體)130、圖形處理單元(GPU)180、與GPU 180關聯之操作系統(OS)182、GPU私有空間185、及GPU編譯器188。在一實施例中,OS 112可管理CPU 110和CPU私有空間115、GPU 180和GPU私有空間185的資源。在一實施例中,欲支援共享虛擬記憶體130,CPU私有空間115及GPU私有空間185可包含多重版本資料的多個複本。在一實施例中,欲保持記憶體一致性,元資料(如物件131)可用來同步化儲存在CPU私有空間115及GPU私有空間185中的複本。在其他實施例中,多重版本資料可儲存在實體共享記憶體中,如(下述第6圖的)共享記憶體650。
在一實施例中,CPU編譯器118及GPU編譯器188可分別耦合至CPU 110及GPU 180,或還可遠端設置在其他平台或電腦系統上。與CPU 110關聯之編譯器118可產
生CPU 110的編譯碼,且與GPU 180關聯之編譯器188可產生GPU 180的編譯碼。
在一實施例中,CPU編譯器118及GPU編譯器188可藉由以高階語言(如物件導向語言)編譯使用者所提供之物件的一或更多成員函數來產生編譯碼。在一實施例中,編譯器118及188可導致物件131,其可包含共享多重版本資料132,被生產者的共享虛擬記憶體130支援並被消費者從共享虛擬記憶體130獲取。在一實施例中,由共享虛擬記憶體130所支援的物件131可包含共享多重版本資料132及一或更多成員函數,如虛擬函數VF 133-A至133-K及非虛擬函數NVF 136-A至136-L。在一實施例中,可由共享的物件131之成員函數(如VF 133及NVF 136)提供CPU 110與GPU 180之間的通訊。
在第2圖之流程圖中繪示平台100之操作以支援共享虛擬記憶體為基的多重版本資料的一實施例。在區塊210中,CPU 110(生產者)可創造諸如共享多重版本資料132的多重版本資料,其可在共享虛擬記憶體130支援。在一實施例中,CPU 110可使用VersionDataCommit(版本資料確認)程序來創造共享多重版本資料132。在一實施例中,CPU 110可運算新版本號。在一實施例中,可藉由增加目前版本號(CuVerNo)來產生新版本號。在一實施例中,新版本號可等於(CuVerNo+1)。
在一實施例中,若更新由目前版本號所辨別的目前頁,則CPU 110可判斷先前版本頁及目前版本頁之間的差
異內容(diff)。在一實施例中,CPU 110可建構diff節點(或已更新版本節點),其可包括差異內容及新版本號。在一實施例中,CPU 110可將diff節點插入diff列表中。在一實施例中,共享多重版本資料132可包含頁,其包括先前版本頁、目前版本頁、及已更新版本記憶體頁。在一實施例中,對目前版本頁的更新可創造出已更新版本記憶體頁。在一實施例中,可由生產者(CPU 110)創造並由消費者(GPU 180)存取共享多重版本資料132。
在區塊250中,可允許消費者(GPU 180)以獲取由共享虛擬記憶體130所支援的共享多重版本資料132。在一實施例中,GPU 180可使用VersionDataAcquire(版本資料獲取)程序來獲取或存取由共享虛擬記憶體130所支援的共享多重版本資料132。在一實施例中,GPU 180可擷取目前版本頁的diff列表並合併先前版本頁與目前版本頁的內容。在一實施例中,合併操作可從一起始頁開始,並且可將從起始頁的版本至VersionDataAcquire操作指明的版本號的diff列表之所有節點合併到起始頁中。在一實施例中,可將從包括起始頁的先前版本頁合併至目前版本頁之內容合併到已更新版本記憶體頁中,其可由GPU 180獲取或存取。
在第3圖之流程圖中繪示生產者及消費者執行功能以支援在共享記憶體中所儲存的多重版本資料之共享的一實施例。在區塊310中,CPU 110(共享多重版本資料物件131之生產者)可追蹤共享虛擬記憶體130中的已更新
(或已修改)的版本記憶體頁。
在區塊320中,CPU 110可對先前版本頁及目前版本頁執行diff操作以產生已更新版本記憶體頁。在一實施例中,CPU 110可藉由對先前版本頁PVP 137(版本號=V1)及目前版本頁CVP 138(版本號=V2)執行「diff」操作來產生已更新版本頁UVP 139(版本號=V3)。在一實施例中,CPU 110可提供與UVP 139關聯的新版本號(V3)。
在區塊340中,CPU 110邏輯儲存diff操作的結果(亦即UVP 139及新版本號V3)於共享(或虛擬)記憶體區域中,其可實體儲存在例如CPU私有空間115中。在區塊360中,CPU 110可允許由GPU 180獲取每一版本之已修改的位元組。在一實施例中,CPU 110可釋放已修改的位元組及關聯的版本號,使GPU 180可使用上述的VersionDataAcquire程序來獲取已修改的位元組。
在第4圖之流程圖中繪示生產者追蹤共享虛擬記憶體130中之已更新(或已修改)的頁的一實施例。在區塊410中,CPU 110(生產者)可在釋放時以「寫入保護」模式來共享已更新版本記憶體頁。在一實施例中,以「寫入保護」模式共享已更新版本記憶體頁的結果為可在寫入已更新版本記憶體頁的同時產生在處置器中之捕捉。
在區塊450中,CPU 110可在處置器中創造已更新版本記憶體頁的備用複本。在一實施例中,欲允許諸如UVP 139的已更新(或已修改或髒)頁的追蹤,CPU 110可將
UVP 139設定成「寫入保護」模式。在一實施例中,CPU 110可使用處置器來創造UVP 139的備用複本(孿生頁)。
在區塊480中,CPU 110可標記輔助貯存以指示已更新版本記憶體頁可能已被修改(或髒)。在一實施例中,標記輔助貯存可允許CPU 110記住該已更新版本記憶體頁為髒的。在一實施例中,CPU 110可標記輔助貯存中之位置(或特定位元)(例如PCI孔徑面積)以指示UVP 139為已更新或已修改或髒的頁。
在第5圖中描繪CPU 110執行diff操作作為釋放操作的至少一部分及GPU 180執行獲取操作的一實施例。在一實施例中,CPU 110可執行VersionDataCommit()函數(釋放操作的一部分)以邏輯確認已更新版本記憶體頁至共享虛擬記憶體130。在一實施例中,消費者(GPU 180)可存取或獲取版本號等於V2之頁「i」540的資料。在一實施例中,在執行GetDataRelease()(取得資料釋放)函數的同時,CPU 110可對頁「i」540及孿生頁550(其可為頁「i」的更新版本)執行由差異產生器570所表現的diff操作。在一實施例中,頁「i」540可代表目前版本頁之未修改版本且孿生頁550可代表頁「i」540之已更新(或已修改)版本。
在一實施例中,可將由差異產生器570所產生之結果,其可僅包括已修改的位元組,儲存在Diff-3欄位581中。在一實施例中,diff欄位581可包含Diff-3,因為
GPU 180正獲取使用直到版本2(V2)的多重版本資料所產生之版本-3資料。在一實施例中,可將諸如V3的新版本號儲存在版本識別符欄位582中。在一實施例中,可將在版本識別符欄位582中之Diff-3欄位581及關聯的新版本(=V3)插入diff列表中。
在一實施例中,在執行VersionDataAcquire()程序的同時,GPU 180可擷取頁「i」540上至版本V2的diff列表。在一實施例中,頁「i」540上至版本V2的diff列表520可包括Diff-1欄位511和等於V1的關聯版本號欄位512及Diff-2欄位521和等於V2的關聯版本號欄位522。在一實施例中,GPU180可將等於V1的關聯版本號欄位502的起始頁501與diff列表520合併。在一實施例中,可由合併產生器530表現合併操作。在一實施例中,可將合併產生器530所得的輸出與頁「i」540的內容合併。
在一實施例中,可在眾多編程領域(如遊戲應用)中使用共享多重版本資料結構。在一實施例中,對共享多重版本資料的更新可邏輯創造出新版本的資料而不招致連貫性訊務。除了最佳化連貫性訊務,使用共享多重版本資料可避免耗時的操作,例如作為至共享記憶體的指標之資料的整列化及非整列化在CPU及GPU側的不同實體位址空間中可能有意義。
並且,這一類的方式可簡化在CPU 110與GPU 180之間的管線資料。在一實施例中,使用者可不維持並實行
管線操作,其通常為錯誤的來源。在一實施例中,包括CPU-GPU平台的共享虛擬記憶體系統可提供可編程性的支援並可將多重版本的結構延伸到共享記憶體系統。在一實施例中,下述的共享多重版本資料技術可用於離散及整合的GPU組態兩者中,故統一跨不同GPU組態間之API的編程。
在第6圖中繪示包含支援共享虛擬記憶體中所儲存的多重版本資料之共享的異質處理器之電腦系統600的一實施例。參照第6圖,電腦系統600可包括一般目的處理器(或CPU)602(其包括單指令多資料(SIMD)處理器)及圖形處理單元(GPU)605。CPU 602,在一實施例中,除了執行各種其他工作或儲存一系列的指令外,可執行增進操作以在機器可讀取儲存媒體625中提供增進操作。然而,亦可將該系列的指令儲存在CPU私有記憶體620中或任何其他適當的儲存媒體中。在一實施例中,CPU 602可與CPU傳統編譯器603及CPU鏈接器/載入器604關聯。在一實施例中,GPU 605可與GPU專屬編譯器606及GPU鏈接器/載入器607關聯。
雖在第6圖中繪示分開的圖形處理器單元GPU 605,在一些實施例中,處理器602可用來執行增進操作,作為另一實例。操作電腦系統600的處理器602可為耦合至邏輯630之一或更多處理器核心。邏輯630可耦合至一或更多I/O裝置660,其可提供界面給電腦系統600。邏輯630,例如,在一實施例中,可為晶片組邏輯。邏輯630
耦合至記憶體620,其可為任何類型的貯存,包括光學、磁性、或半導體貯存。圖形處理器單元605透過訊框緩衝器耦合至顯示器640。
在一實施例中,CPU 602(在此,生產者)及GPU 605(在此,消費者)可支援儲存在共享記憶體650中之多重版本資料結構的共享。在一實施例中,如上述,CPU 602可支援如VersionDataRelease()之程序或函數,以創造共享多重版本資料並在共享記憶體650中儲存這類資料。在其他實施例中,可將共享多重版本資料儲存在私有CPU記憶體620中,還有私有GPU記憶體630中。在一實施例中,如上述,GPU 605(消費者)可支援如VersionDataAcquire()的程序或函數以獲取共享多重版本資料。
可在各種硬體架構中實行在此所述之圖形處理技術。例如,圖形功能可整合到晶片組內。替代地,可使用分開的圖形處理器。作為又一實施例,可藉由一般目的處理器(包括多核心處理器)實行圖形功能,或實行為儲存在機器可讀取媒體中之一組軟體指令。
100‧‧‧平台
110‧‧‧中央處理單元
112‧‧‧操作系統
115‧‧‧CPU私有空間
118‧‧‧CPU編譯器
130‧‧‧共享的虛擬記憶體(或多重版本共享記憶體)
131‧‧‧物件
132‧‧‧共享多重版本資料
137‧‧‧先前版本頁PVP
138‧‧‧目前版本頁CVP
139‧‧‧已更新版本頁UVP
180‧‧‧圖形處理單元
182‧‧‧操作系統
185‧‧‧GPU私有空間
188‧‧‧GPU編譯器
133-A、133-K‧‧‧虛擬函數VF
136-A、136-L‧‧‧非虛擬函數NVF
Claims (8)
- 一種平台,包含:包括用以作為生產者的第一處理器以及用以作為消費者的第二處理器的複數個異質處理器;可被該第一處理器和該第二處理器兩者存取的共享實體記憶體,其中該平台能夠將該共享實體記憶體映射至可被該第一處理器和該第二處理器兩者存取的共享虛擬記憶體,其中,基於共享記憶體語義,該第一處理器和該第二處理器係用以同步化記憶體操作,其為基於釋放操作而經由該第一處理器將已編譯的物件儲存至該共享虛擬記憶體,以及基於獲取操作而經由該第二處理器從該共享虛擬記憶體獲取該已編譯的物件。
- 如申請專利範圍第1項所述之平台,其中該第一處理器包含中央處理單元。
- 如申請專利範圍第1項所述之平台,其中該第一處理器包含具有多重處理器核心的中央處理單元。
- 如申請專利範圍第1項所述之平台,其中該第二處理器包含圖形處理單元。
- 如申請專利範圍第1項所述之平台,其中該第二處理器包含具有多重處理器核心的圖形處理單元。
- 如申請專利範圍第1項所述之平台,更包含:第三處理器,其中該共享實體記憶體及該共享虛擬記憶體可被該第三處理器存取。
- 如申請專利範圍第1項所述之平台,更包含:與該第一處理器相關的私有記憶體空間。
- 如申請專利範圍第1項所述之平台,更包含:與該第一處理器相關的第一私有記憶體空間;以及與該第二處理器相關的第二私有記憶體空間。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/643,803 US8868848B2 (en) | 2009-12-21 | 2009-12-21 | Sharing virtual memory-based multi-version data between the heterogenous processors of a computer platform |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201512856A TW201512856A (zh) | 2015-04-01 |
TWI550412B true TWI550412B (zh) | 2016-09-21 |
Family
ID=43531604
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103122260A TWI550412B (zh) | 2009-12-21 | 2010-11-09 | 在具有異質處理器之電腦平台中執行之方法和電腦平台 |
TW099138519A TWI451270B (zh) | 2009-12-21 | 2010-11-09 | 在具有異質處理器之電腦平台中執行之方法和電腦平台 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW099138519A TWI451270B (zh) | 2009-12-21 | 2010-11-09 | 在具有異質處理器之電腦平台中執行之方法和電腦平台 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8868848B2 (zh) |
KR (1) | KR101240092B1 (zh) |
CN (1) | CN102103567B (zh) |
DE (1) | DE102010051477B4 (zh) |
GB (1) | GB2476360B (zh) |
TW (2) | TWI550412B (zh) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9331869B2 (en) * | 2010-03-04 | 2016-05-03 | Nvidia Corporation | Input/output request packet handling techniques by a device specific kernel mode driver |
US9633407B2 (en) * | 2011-07-29 | 2017-04-25 | Intel Corporation | CPU/GPU synchronization mechanism |
CN102323917B (zh) * | 2011-09-06 | 2013-05-15 | 中国人民解放军国防科学技术大学 | 一种基于共享内存实现多进程共享gpu的方法 |
CN103946824B (zh) | 2011-11-22 | 2016-08-24 | 英特尔公司 | 一种用于非易失性随机访问存储器的访问控制方法、装置及系统 |
KR101355105B1 (ko) * | 2012-01-03 | 2014-01-23 | 서울대학교산학협력단 | 캐시 일관성 보장을 위한 공유 가상 메모리 관리 장치 |
US9009419B2 (en) * | 2012-07-31 | 2015-04-14 | Advanced Micro Devices, Inc. | Shared memory space in a unified memory model |
US9378572B2 (en) | 2012-08-17 | 2016-06-28 | Intel Corporation | Shared virtual memory |
US9373182B2 (en) | 2012-08-17 | 2016-06-21 | Intel Corporation | Memory sharing via a unified memory architecture |
CN103020149B (zh) * | 2012-11-22 | 2016-01-20 | 用友网络科技股份有限公司 | 共享数据更新装置和共享数据更新方法 |
US10437591B2 (en) * | 2013-02-26 | 2019-10-08 | Qualcomm Incorporated | Executing an operating system on processors having different instruction set architectures |
JP2014200075A (ja) * | 2013-03-15 | 2014-10-23 | 株式会社リコー | コンピュータシステム、配信制御システム、配信制御方法、及びプログラム |
US9460481B2 (en) * | 2013-03-25 | 2016-10-04 | Vmware, Inc. | Systems and methods for processing desktop graphics for remote display |
CN104111897B (zh) * | 2013-04-16 | 2017-06-13 | 华为技术有限公司 | 一种数据处理方法、装置及计算机系统 |
US20150170317A1 (en) * | 2013-12-18 | 2015-06-18 | Eric C. Samson | Load Balancing for Consumer-Producer and Concurrent Workloads |
US9372752B2 (en) * | 2013-12-27 | 2016-06-21 | Intel Corporation | Assisted coherent shared memory |
KR102114245B1 (ko) | 2014-04-10 | 2020-06-05 | 삼성전자 주식회사 | 그래픽스 상태 관리 장치 및 방법 |
US9563571B2 (en) | 2014-04-25 | 2017-02-07 | Apple Inc. | Intelligent GPU memory pre-fetching and GPU translation lookaside buffer management |
US9507726B2 (en) | 2014-04-25 | 2016-11-29 | Apple Inc. | GPU shared virtual memory working set management |
CN104281636B (zh) * | 2014-05-05 | 2017-09-08 | 神华集团有限责任公司 | 海量报表数据并发分布式处理方法 |
US9342384B1 (en) * | 2014-12-18 | 2016-05-17 | Intel Corporation | Function callback mechanism between a central processing unit (CPU) and an auxiliary processor |
US10019373B2 (en) | 2014-12-19 | 2018-07-10 | Mediatek Inc. | Memory management method for supporting shared virtual memories with hybrid page table utilization and related machine readable medium |
GB2537420B (en) * | 2015-04-17 | 2018-11-28 | Suunto Oy | Embedded computing device comprising processing units interfaced with a shared information space |
DE102016106939B4 (de) | 2015-04-17 | 2024-05-02 | Suunto Oy | Eingebettetes Rechengerät |
CN105022716A (zh) * | 2015-06-24 | 2015-11-04 | 浪潮电子信息产业股份有限公司 | 一种多数据链路的gpu服务器 |
CN105159610B (zh) * | 2015-09-01 | 2018-03-09 | 浪潮(北京)电子信息产业有限公司 | 大规模数据处理系统及方法 |
US10489881B2 (en) * | 2017-06-30 | 2019-11-26 | H3 Platform Inc. | Direct memory access for co-processor memory |
US11436143B2 (en) * | 2017-12-22 | 2022-09-06 | Alibaba Group Holding Limited | Unified memory organization for neural network processors |
CN109308196B (zh) * | 2018-08-22 | 2020-04-14 | 腾讯科技(深圳)有限公司 | 一种多机型设备复用方法、装置及存储介质 |
KR102158877B1 (ko) * | 2018-12-17 | 2020-09-23 | 성균관대학교 산학협력단 | 그래픽 프로세싱 유닛 상에서 작업을 프로세싱하기 위한 시스템 및 방법 |
US11693837B2 (en) * | 2020-09-18 | 2023-07-04 | Databricks, Inc. | Model ML registry and model serving |
US11782835B2 (en) * | 2020-11-30 | 2023-10-10 | Electronics And Telecommunications Research Institute | Host apparatus, heterogeneous system architecture device, and heterogeneous system based on unified virtual memory |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7287034B2 (en) * | 2003-05-08 | 2007-10-23 | Oracle International Corporation | On-demand multi-version data dictionary to support distributed applications |
US20080256330A1 (en) * | 2007-04-13 | 2008-10-16 | Perry Wang | Programming environment for heterogeneous processor resource integration |
TW200931905A (en) * | 2007-10-31 | 2009-07-16 | Qualcomm Inc | Multiplexing and transmission of multiple data streams in a wireless multi-carrier communication system |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5745906A (en) * | 1995-11-14 | 1998-04-28 | Deltatech Research, Inc. | Method and apparatus for merging delta streams to reconstruct a computer file |
US6341339B1 (en) | 1998-03-26 | 2002-01-22 | Compaq Computer Corporation | Apparatus and method for maintaining data coherence within a cluster of symmetric multiprocessors |
US6457021B1 (en) | 1998-08-18 | 2002-09-24 | Microsoft Corporation | In-memory database system |
US6574749B1 (en) | 1999-10-29 | 2003-06-03 | Nortel Networks Limited | Reliable distributed shared memory |
US7437662B1 (en) * | 2001-06-15 | 2008-10-14 | Oracle International Corporation | Representing deltas between XML versions using XSLT |
US20050071578A1 (en) | 2003-09-25 | 2005-03-31 | International Business Machines Corporation | System and method for manipulating data with a plurality of processors |
US7921419B2 (en) * | 2004-05-12 | 2011-04-05 | Oracle International Corporation | Method and mechanism for managing incompatible changes in a distributed system |
US7818513B2 (en) | 2004-08-10 | 2010-10-19 | Oracle America, Inc. | Coordinating accesses to shared objects using transactional memory mechanisms and non-transactional software mechanisms |
US20060112226A1 (en) | 2004-11-19 | 2006-05-25 | Hady Frank T | Heterogeneous processors sharing a common cache |
US20070088766A1 (en) * | 2005-10-17 | 2007-04-19 | Oracle International Corporation | Method and system for capturing and storing multiple versions of data item definitions |
US7516301B1 (en) * | 2005-12-16 | 2009-04-07 | Nvidia Corporation | Multiprocessor computing systems with heterogeneous processors |
US7404056B1 (en) * | 2005-12-07 | 2008-07-22 | Nvidia Corporation | Virtual copying scheme for creating multiple versions of state information |
GB0606012D0 (en) * | 2006-03-25 | 2006-05-03 | Zenopia Ltd | Data storage |
US7542977B2 (en) | 2006-06-29 | 2009-06-02 | Intel Corporation | Transactional memory with automatic object versioning |
US8154554B1 (en) * | 2006-07-28 | 2012-04-10 | Nvidia Corporation | Unified assembly instruction set for graphics processing |
US20080109795A1 (en) * | 2006-11-02 | 2008-05-08 | Nvidia Corporation | C/c++ language extensions for general-purpose graphics processing unit |
JP2008158811A (ja) | 2006-12-22 | 2008-07-10 | Toshiba Corp | 情報処理装置および情報処理方法 |
US7996359B2 (en) * | 2008-06-16 | 2011-08-09 | International Business Machines Corporation | Managing multi-node multi-version systems |
US8531471B2 (en) | 2008-11-13 | 2013-09-10 | Intel Corporation | Shared virtual memory |
-
2009
- 2009-12-21 US US12/643,803 patent/US8868848B2/en active Active
-
2010
- 2010-11-09 TW TW103122260A patent/TWI550412B/zh active
- 2010-11-09 TW TW099138519A patent/TWI451270B/zh active
- 2010-11-15 DE DE102010051477.2A patent/DE102010051477B4/de active Active
- 2010-12-07 GB GB1020733.0A patent/GB2476360B/en active Active
- 2010-12-20 CN CN201010601559.1A patent/CN102103567B/zh active Active
- 2010-12-21 KR KR1020100131675A patent/KR101240092B1/ko active IP Right Grant
-
2014
- 2014-10-01 US US14/503,596 patent/US9710396B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7287034B2 (en) * | 2003-05-08 | 2007-10-23 | Oracle International Corporation | On-demand multi-version data dictionary to support distributed applications |
US20080256330A1 (en) * | 2007-04-13 | 2008-10-16 | Perry Wang | Programming environment for heterogeneous processor resource integration |
TW200931905A (en) * | 2007-10-31 | 2009-07-16 | Qualcomm Inc | Multiplexing and transmission of multiple data streams in a wireless multi-carrier communication system |
Also Published As
Publication number | Publication date |
---|---|
CN102103567B (zh) | 2014-06-04 |
TW201512856A (zh) | 2015-04-01 |
KR20110073339A (ko) | 2011-06-29 |
US8868848B2 (en) | 2014-10-21 |
US20110153957A1 (en) | 2011-06-23 |
DE102010051477B4 (de) | 2023-08-03 |
GB2476360A (en) | 2011-06-22 |
GB2476360B (en) | 2012-10-31 |
GB201020733D0 (en) | 2011-01-19 |
KR101240092B1 (ko) | 2013-03-06 |
US9710396B2 (en) | 2017-07-18 |
TWI451270B (zh) | 2014-09-01 |
US20150019825A1 (en) | 2015-01-15 |
CN102103567A (zh) | 2011-06-22 |
DE102010051477A1 (de) | 2011-06-22 |
TW201140334A (en) | 2011-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI550412B (zh) | 在具有異質處理器之電腦平台中執行之方法和電腦平台 | |
US10074206B1 (en) | Network-optimized graphics library for virtualized graphics processing | |
US7568189B2 (en) | Code translation and pipeline optimization | |
JP5939524B2 (ja) | サブバッファオブジェクト | |
CN110008009B (zh) | 在运行时绑定常量以提高资源利用率 | |
US8756590B2 (en) | Binding data parallel device source code | |
JP5957006B2 (ja) | 拡張可能なデータ並列セマンティクス | |
CN102696023A (zh) | 用于访问并行存储器空间的统一寻址和指令 | |
CN102971727B (zh) | 在软件分布式共享存储器系统中记录脏信息 | |
KR102540775B1 (ko) | 병렬 광선 테스트를 갖는 광선 교차 회로 | |
US8935475B2 (en) | Cache management for memory operations | |
CN109964244B (zh) | 用于图形处理的本地图像块 | |
TW201516864A (zh) | 多執行緒圖形處理單元管線 | |
TW201246068A (en) | Methods and systems for mapping a function pointer to the device code | |
BR102021004500A2 (pt) | Aparelho de processamento de gráficos e sistema | |
KR102668120B1 (ko) | 병렬 광선 테스트를 갖는 광선 교차 회로 | |
US9542192B1 (en) | Tokenized streams for concurrent execution between asymmetric multiprocessors | |
WO2007131089A2 (en) | Code translation and pipeline optimization | |
KR101737785B1 (ko) | 프로그램 컴파일 장치 및 프로그램 컴파일 방법 | |
KR20240078413A (ko) | 병렬 광선 테스트를 갖는 광선 교차 회로 | |
Chung | HSA Runtime |