TWI471730B - 用以促進在異質平台中共享指標之方法及設備 - Google Patents
用以促進在異質平台中共享指標之方法及設備 Download PDFInfo
- Publication number
- TWI471730B TWI471730B TW100147153A TW100147153A TWI471730B TW I471730 B TWI471730 B TW I471730B TW 100147153 A TW100147153 A TW 100147153A TW 100147153 A TW100147153 A TW 100147153A TW I471730 B TWI471730 B TW I471730B
- Authority
- TW
- Taiwan
- Prior art keywords
- indicator
- processing core
- memory
- processing
- representation
- 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
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- 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
- 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
-
- 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
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Devices For Executing Special Programs (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
- Stored Programmes (AREA)
Description
本發明係關於共享指標,並且更明確地說,但不是限制於,促進在一異質平台中共享指標之方法及設備。
OpenCL(開放式電腦語言-Open Computing Language)是用以撰寫跨越異質平台執行之程式的架構,該等異質平台具有中央處理單元(CPU)、圖形處理單元(GPU)以及其他處理器。OpenCL是由一程式語言與一些擴展所構成,該程式語言是以C99標準之一子集為基礎,而該等擴展則是被使用在各種裝置之間通訊以及對於這些裝置撰寫資料-平行計算核心。OpenCL之一關鍵限制是其不允許以無縫方式共享在多數個異質裝置之間的複雜資料結構。
一般,一GPU之記憶體被分割成為一組區域或範圍。這些區域是由一結合列表以及一偏移量所參考。於此一設計中,因為存在多於一個的結合列表,故使一CPU指標轉化至一GPU指標需要解碼偏移量以及結合列表。
依據本發明之一實施例,係特地提出一種方法,其包括:在一第一處理核心以及一第二處理核心之間共享一記憶體位置之一指標,其中該記憶體位置存在於可藉由該第一以及該第二處理核心兩者存取之一共享記憶體區域。
本發明實施例之特點以及優點將自下面主題的詳細說明而成為明顯,於其中:第1圖展示依據本發明一實施例之處理器的方塊圖;第2圖展示依據本發明一實施例之樣本程式碼;第3圖展示依據本發明一實施例之共享指標的映圖;第4圖展示依據本發明一實施例之樣本程式碼;第5圖展示依據本發明一實施例之樣本程式碼;第6圖展示依據本發明一實施例之樣本程式碼;第7圖展示依據本發明一實施例之樣本程式碼;第8圖展示依據本發明一實施例之流程圖;以及第9圖展示依據本發明一實施例用以實作此處所揭示之方法的系統。
此處說明之本發明實施例經由範例被展示,並且不受附圖之限制。為了展示之簡明與清晰,於圖形中所展示之元件不必定得依尺度比例而繪畫。例如,為清楚起見,一些元件之尺寸可相對於其他元件而被放大。進一步地,合適處,參考號碼在圖形之間被重複以指示對應的或類似的元件。說明文中關於本發明之“一實施例”或“一個實施例”,意謂著有關該實施例所說明的一特定之特點、結構或特性被包含在本發明至少一實施例中。因此,在所有說明文中出現的詞組“於一實施例中”不必定得都關連於相同實施例。
本發明之實施例提供促進在異質平台中共享指標之方法以及設備。於本發明一實施例中,異質或非同質平台包含,但是不受限定於,中央處理核心或單元、圖形處理核心或單元、數位信號處理器、界面模組以及任何其他形式的處理核心。於本發明一實施例中,異質平台具有至少二個不同的處理核心。
於本發明一實施例中,一編譯器編碼程式碼產生機構或方法允許在異質平台的二個不同核心之間共享指標。例如,於本發明一實施例中,異質平台包括一中央處理單元(CPU)以及一圖形處理單元(GPU)。異質平台具有邏輯以促進對於一記憶體位置之指標由CPU以及GPU共享。於本發明一實施例中,藉由延伸C程式語言而程式規劃CPU與GPU之一新的方式被提供以允許有效地使用兩個裝置。這程式化模式支援一共享的虛擬記憶體(SVM)而在CPU以及GPU之間提供一個單一位址空間,因而指標可直接地給兩裝置共享。於本發明一實施例中,CPU指標可無縫地與GPU裝置共享軟體或硬體。
於本發明一實施例中,藉由共享異質平台中之指標,共享在異質平台中不同核心之間的資料或資訊可被簡化。例如,於本發明一實施例中,當異質平台使用指標為基礎之資料結構時,例如,鏈接的列表或樹型,異質平台中之不同核心可使用高階程式語言,例如,C、C++或OpenCL以使用在不同核心之間的共享指標而共享資料。
於本發明一實施例中,異質平台不需要使在一處理核心上的虛擬-至-實體映圖相同於另一處理核心者而共享指標。於本發明一實施例中,在異質平台上執行之編譯器產生適當地調整虛擬位址之程式碼,因而各核心是可參考相同的實體記憶體位置。所產生的程式碼包含,但是不受限定於,機器碼、中介表示(IR)程式碼以及任何其他形式之程式碼。
第1圖展示依據本發明一實施例之處理器105的方塊圖。處理器105展示具有一處理模組1 110以及一處理模組2 120的異質平台之一實施例。於本發明一實施例中,處理模組1 110具有處理核心1 112以及處理核心2 114。於本發明一實施例中,處理模組1 110具有多於二個處理核心。於本發明另一實施例中,處理模組1 110僅具有一個處理核心。
處理模組1 110具有允許與處理器105中的其他模組通訊之界面模組116。於本發明一實施例中,界面模組116依據,但是不限定於,英特爾快速通道互連(IntelQuickPath Interconnect)(QPI)通訊協定或任何其他通訊協定而操作。
處理模組2 120具有處理核心3 124以及允許與處理模組1 110通訊之界面模組122。於本發明一實施例中,處理模組1 110是中央處理單元並且處理模組2 120是圖形處理單元。於本發明另一實施例中,處理器105可具有其他型式的處理單元。
處理器105之展示是不欲受限定並且處理器105的其他組態也可被使用而不影響本發明之運作。例如,於本發明一實施例中,處理器105具有與處理模組1 110以及2 120耦合的第三處理模組。
第2圖展示依據本發明一實施例之樣本程式碼200。樣本程式碼200展示本發明一實施例,其中一指標在一CPU中被定義並且被傳送至一GPU。該GPU接收該指標並且使用該指標以供操作,例如,但是不受限定於,解關聯化操作、負載指令或操作、儲存指令或操作、指標算術操作以及其類似者。不管在CPU或GPU上之共享指標是否被解關聯化,該共享指標仍指示相同的實體記憶體位置。
樣本程式碼200展示以C語言被撰寫之程式碼而包含用以卸載資料或作業平行計算至GPU之函數。程式列202展示分配一陣列於一共享虛擬記憶體或位址空間中的一malloc程式庫呼叫。程式列204展示置放一資料-平行作業進入一佇列以供執行之一卸載函數呼叫。第一參數指定將被進行之重複次數,第二參數指定脈絡,並且第三參數指定卸載函數之函數指標。
於本發明一實施例中,CPU以及GPU具有對於一指標之不同表示。例如,於本發明一實施例中,比較至CPU時,在GPU上之編碼以及一指標之長度或位元數可以是不同的。於本發明一實施例中,一GPU中之指標可被表示作為具有偏移量之結合列表索引。該結合列表具有供用於GPU表面項目各者之基本記憶體位址並且在執行時偏移量被添加至這基本位址。於本發明一實施例中,為克服對於CPU以及GPU中之一指標的不同表示,異質平台具有邏輯以相似於CPU之方式保持GPU中之記憶體內的指標表示。於本發明一實施例中,利用該等指標所表示之虛擬位址數值可具有32、64、或任何其他適當的位元數目。
第3圖展示依據本發明一實施例之共享指標的映圖300。為清楚展示起見,於本發明一實施例中,映圖300展示在一CPU以及一GPU之間的一共享指標。虛擬位址空間302展示CPU之記憶體圖式並且GenX及時(JIT)圖304展示GPU之記憶體圖式。於本發明一實施例中,GenX JIT中介語言(IL)是用於英特爾(Intel)圖形處理器之中介表示語言。於本發明一實施例中,GenX JIT IL描述GPU記憶體模式以及程式指令。
CPU之虛擬位址空間302以及GPU之GenX JIT圖304是關聯於CPU以及GPU所可存取之共享記憶體區域。為展示清楚起見,於本發明一實施例中,虛擬位址空間302中之共享區域310展示一共享記憶體的特定虛擬記憶體映圖。虛擬位址空間302之開始位址利用記憶體位址0x0 312被展示。共享區域310具有一基本位址314以及指出或參考共享區域310之一特定記憶體位置的一指標p 316。
於本發明一實施例中,一執行時間常數c0.x 320在執行時被決定並且被儲存。執行時間常數c0.x 320代表共享區域310之基本位址314。於本發明一實施例中,一參數c0.y 322自一暫存器或任何儲存區域被裝載。參數c0.y 322代表共享區域320中之指標p 316的記憶體位址。於本發明一實施例中,執行時間常數c0.x 320以及參數c0.y 322作為整數被儲存。
於本發明一實施例中,執行時間常數c0.x 320被傳送至GPU作為一執行時間常數。於本發明一實施例中,參數c0.y 322自一暫存器被預先裝載。例如,於本發明一實施例中,異質平台具有一軟體驅動器,其將執行時間常數c0.x 320傳送至在GPU上執行之被編譯的程式碼並且c0.y 322自一暫存器被預先裝載。
於本發明一實施例中,GPU具有可被分割成為一個或多個區域或範圍之集合的一記憶體。於本發明一實施例中,該等一個或多個區域集合可以由結合列表以及偏移量所參考。記憶體區域u0 330展示在具有對於指標之偏移量的單一結合列表之一GPU中的一記憶體。GPU使用執行時間常數c0.x 320以及參數c0.y 322以決定在GenX JIT圖304中所對應的共享區域。例如,指標ptr0 334代表在GPU中之記憶體區域u0 330的開始位址並且其是關聯於CPU之共享區域310的基本位址314。
於本發明一實施例中,指標ptr1 332由指標ptr0 334以及執行時間常數c0.x 320被決定。例如,於本發明一實施例中,指標ptr1 332藉由自指標ptr0 334減去執行時間常數c0.x 320被決定。於本發明另一實施例中,指標ptr1 332藉由將指標ptr0 334加上執行時間常數c0.x 320的負數值而被決定。
於本發明一實施例中,指標ptr2 336之GPU表示可自ptr1 332以及ptr2 336之整數值經由一指標加法操作而被導出。例如,於一實施例中,ptr2 336藉由將指標ptr1 332與參數c0.y 322相加而被決定。
於本發明一實施例中,執行時間常數c0.x 320以及參數c0.y 322允許自指標p 316至指標ptr2 336的映射而不需要在CPU以及GPU兩者上常見之虛擬-對-實體的映射。
第4圖展示依據本發明一實施例之一樣本程式碼400。為展示清楚起見,第4圖將參考第3圖來討論。於GenX JIT IL中,一指標是關聯於,但是不受限定於,一資源、一GPU中之一記憶體區域、常數緩衝器、或線程群組共享記憶體。這些實體各具有其之獨有的結合列表項目。為了支援共享指標,GPU中之一單一記憶體區域被分配於程式中,該程式以GPU中之該記憶體區域為基礎使結合列表索引對於所有的指標是一常數。由於結合列表索引是常數,這允許更容易將一虛擬位址轉化成為一結合列表索引以及一偏移量。
於本發明一實施例中,所有CPU的指標被傳送至GPU上之核心程式碼作為指標-尺度整數。例如,於本發明一實施例中,如果指標原有尺度是32位元,則一個32位元整數自CPU被傳送至GPU。於本發明其他實施例中,指標原有尺度可以是64位元或任何其他適當的位元數。
於本發明一實施例中,各指標之偏移量自該等整數值被導出並且被應用至GPU中之單一記憶體區域。這允許GenX JIT IL中之等效GPU指標對於所有的CPU指標被得到。於本發明一實施例中,樣本程式碼400展示對於32位元之指標的GenX JIT IL程式碼範例。
程式列410展示GPU中一記憶體區域u0 330之宣告。於本發明一實施例中,軟體驅動器將記憶體區域u0 330貼連或關聯至由CPU以及GPU共享的記憶體區域。程式列412展示共享區域之基本位址314以及指標p 316的宣告。程式列414展示一線程識別(ID)之宣告。程式列416、418以及420分別地展示指標ptr0 334、ptr1 332以及ptr2 336之宣告。
程式列422展示被指定至記憶體區域u0 330的指標ptr0 334。程式列424展示具有包含指標ptr0 334與執行時間常數c0.x 320二個參數的指標ptr1 332之宣告。PADD函數相加第一參數,亦即,指標ptr0 334,以及第二參數,亦即,負的執行時間常數c0.x 320或-c0.x,以得到指標ptr1 332。
程式列426展示具有包含指標ptr1 332與參數c0.y 322二個參數的指標ptr2 336之宣告。PADD函數相加第一參數,亦即,指標ptr1 332,以及第二參數,亦即,參數c0.y 322,以得到指標ptr2 336。
樣本程式碼400展示本發明一實施例並且並不表示將受其限定。於本發明一實施例中,樣本程式碼400可利用一動態編譯器而被最佳化。例如,於本發明一實施例中,一動態編譯器知道記憶體區域u0 330之執行時間數值以及執行時間常數c0.x 320,程式列422以及424可被移除。
熟習本技術者將容易明白其他程式碼格式也可被使用而不影響本發明之運作並且這些其他的程式碼格式將不再被說明。於本發明另一實施例中,64位元指標也可被使用而不影響本發明之運作。
於本發明一實施例中,指標之共享是不受限定於編譯器後端。於本發明另一實施例中,指標之共享可如同在其他中介語言位準中之編譯器轉換而被進行。例如,於本發明一實施例中,指標之共享可使用自C或OpenCL程式碼產生OpenCL程式碼之源碼-對-源碼轉換被進行。於本發明另一實施例中,指標之共享可以低階虛擬機器IR(LLVMIR)位準被進行,亦即,自LLVMIR轉換至LLVMIR。
第5圖展示依據本發明一實施例之一樣本程式碼500。於本發明一實施例中,一整數儲存操作被使用以將一指標儲存至記憶體。於本發明一實施例中,取決於GPU指標在IL中是如何表示,可能需要一些調整以得到等於CPU虛擬位址而供用於一GPU指標之整數值。樣本程式碼500展示以C語言被撰寫之調整的實施例。
程式列510展示一鏈接列表節點的宣告。程式列520展示一鏈接列表節點脈絡的宣告。程式列530展示將在GPU上被執行之foo函數。程式列540展示一鏈接列表節點指標p之宣告。程式列550展示置放一資料-平行作業進入一佇列以及鏈接列表節點指標p的適當調整之主程式碼。熟習本技術者將容易明白樣本程式碼500之運作並且其將不再於此處被說明。
第6圖展示依據本發明一實施例之樣本程式碼600。為展示清楚起見,第6圖將參考第3、4以及5圖被討論。於本發明一實施例中,樣本程式碼600展示利用編譯器所產生的GenX JIT IL程式碼。程式列616展示具有自樣本程式碼500之線程索引所得到的索引i之參數i0.x。參數i0.x被改變成為位元組偏移量並且被加至指標ptr2 336以在程式列616中得到指標ptr3。
於本發明一實施例中,指標ptr3允許GPU儲存資料。例如,於程式列630中,GPU使用指標ptr3以儲存&p[i+1]數值。熟習本技術者將容易明白樣本程式碼500之運作並且其將不再於此處被說明。於數字400、500以及600所展示的樣本程式碼顯示被使用於編譯器後端之本發明實施例,但是並不表示將受其限定。於本發明另一實施例中,編譯器前端,例如,但不受限定於此,Clang使用C、C++、物件C、物件C++以及OpenCL源碼以產生LLVMIR。
例如,依據本發明一實施例,第7圖展示等效於樣本程式碼500中之鏈接列表而以標準OpenCL被撰寫之樣本程式碼700。於本發明一實施例中,樣本程式碼700展示一源碼對源碼轉換,其可被使用以實作一標準開放CL堆疊之頂部上的共享指標。熟習本技術者將容易明白樣本程式碼700之運作並且將不再於此處被說明。
於本發明一實施例中,異質平台具有使用不同的位址空間寬度或尺度之處理核心。例如,於本發明一實施例中,CPU具有一個64位元位址空間並且GPU具有一32位元位址空間。藉由以相同於CPU表示指標之方式而保持GPU中之記憶體內的指標表示,CPU上之64-位元應用可與僅支援32位元指標之一GPU共享虛擬記憶體。
第8圖展示依據本發明一實施例之流程圖800。為展示清楚起見,第8圖將參考第3圖被討論。於步驟810中,流程800決定第一處理核心中一共享記憶體區域之第一基本位址。例如,於本發明一實施例中,步驟810決定CPU虛擬位址空間302中之共享區域310的基本位址314。
於步驟820中,流程800決定第一處理核心中之第一指標的一記憶體位置。例如,於本發明一實施例中,步驟820決定CPU虛擬位址空間302中之指標p 316的記憶體位置。於本發明一實施例中,於步驟810中被決定之第一基本位址以及於步驟820中被決定之記憶體位置被儲存作為執行時間整數常數。於步驟810中被決定的第一基本位址以及於步驟820中被決定的記憶體位置成為可供用於第二處理核心,因而可映射或轉化其對應至第一處理核心中的第一指標之指標。
於步驟830中,流程800以第一基本位址為基礎決定第二處理核心中另一共享記憶體區域之開始位址。例如,於本發明一實施例中,步驟830使用第一基本位址決定GPU記憶體區域u0 330中之指標ptr1 332的記憶體位置。指標ptr0 334是第二處理核心所知的並且指標ptr1 332藉由自該指標ptr0 334減去第一基本位址被決定。於本發明另一實施例中,指標ptr1 332藉由相加指標ptr0 334與第一基本位址的一負數值被決定。
於步驟840中,流程800以第一指標之記憶體位置以及開始位址為基礎決定關聯於第一指標的一指標之對應的記憶體位置並且流程800結束。例如,於本發明一實施例中,步驟840使用第一指標之記憶體位置(亦即,c0.y 322)以及開始位址(亦即,指標ptr1 332)決定GPU記憶體區域u0 330中之指標ptr2 336的記憶體位置。指標ptr2 336藉由相加指標ptr1 332與參數c0.y 322被決定。於本發明另一實施例中,標準編譯器最佳化,例如,但是不受限定於,當可能時程式碼移動可被應用以提升在迴路之外的指標操作。
於本發明另一實施例中,如先前被說明,編譯器最佳化可選擇以GPU格式儲存指標而取代CPU格式。於本發明一實施例中,當指標以GPU格式被儲存時,對於任何裝載或儲存操作,是不需有轉換的。於本發明一實施例中,一GPU指標藉由進行反向指標操作被轉換為一CPU指標。例如,於第3圖中,指標ptr2 336可藉由進行反向指標操作被轉換為指標p 316。熟習本技術者將容易明白如何進行反向指標操作並且在此處將不再說明。
第9圖展示依據本發明一實施例實作此處揭示之方法的系統900。系統900包含,但是不受限定於,桌上型電腦、膝上型電腦電腦、網書型電腦、筆記型電腦、個人數位助理(PDA)、伺服器、工作站、行動電話、移動電腦裝置、網際網路器具或任何其他型式之電腦裝置。於另一實施例中,被使用以實作此處揭示之方法的系統900可以是晶片系統(SOC)之系統。
處理器910具有一處理模組1 912以執行系統900之指令。處理模組1 910包含,但是不受限定於,擷取指令之預取邏輯、解碼指令之解碼邏輯、執行指令之執行邏輯以及其類似者。處理器處理模組1 910具有快取記憶體(未被展示)以快取系統900之指令及/或資料。於本發明另一實施例中,快取記憶體包含,但是不受限定於,階級1、階級2以及階級3快取記憶體或在處理模組1 910內之任何其他組態的快取記憶體。
處理器910具有耦合一顯示裝置940之處理模組2 916。顯示裝置940包含,但是不受限定於,液晶顯示器(LCD)、陰極射線管(CRT)顯示器或任何其他形式之視覺顯示裝置。於本發明一實施例中,處理模組2 916進行圖形處理操作。處理模組2 916也可利用處理模組1 912執行指令或處理卸載至它的作業。
記憶體控制中樞(MCH) 914進行引動處理器910存取並且與包含依電性記憶體932及/或非依電性記憶體934之記憶體930通訊的功能。依電性記憶體932包含,但是不受限定於,同步動態隨機存取記憶體(SDRAM)、動態隨機存取記憶體(DRAM)、RAMBUS動態隨機存取記憶體(RDRAM)及/或任何其他型式之隨機存取記憶體裝置。非依電性記憶體934包含,但是不受限定於,NAND快閃記憶體,相位改變記憶體(PCM)、唯讀記憶體(ROM)、電氣可消除可程編唯讀記憶體(EEPROM)或任何其他型式之非依電性記憶體裝置。
記憶體930儲存資訊以及將被處理器910所執行之指令。記憶體930也可儲存當處理器910執行指令時之暫時變數或其他中間資訊。晶片組920經由點對點(PtP)界面917以及922與處理器910連接。晶片組920引動處理器910連接至系統900中的其他模組。於本發明一實施例中,界面917以及922依據一PtP通訊協定,例如,Intel快速通道互連(QPI)或其類似者而操作。
此外,晶片組920連接至互連各種模組974、980、982、984、以及986之一個或多個匯流排950以及960。如果匯流排速度或通訊協定中有錯配的話,則匯流排950以及960可經由匯流排橋972被互連在一起。晶片組920耦合,但是不受限定於,非依電性記憶體980、大量儲存裝置982、鍵盤/滑鼠984以及網路界面986。大量儲存裝置982包含,但是不受限定於,固態驅動器、硬碟驅動器、通用串列匯流排快閃記憶體驅動器或任何其他形式之電腦資料儲存媒體。網路界面986使用任何型式之習知的網路界面標準被實作,該網路界面標準包含,但是不受限制定於,以太界面、通用串列匯流排(USB)界面、週邊構件互連(PCI)快速界面、無線界面及/或任何其他適當型式的界面。無線界面依據下列通訊協定而操作,但是不受限定於,IEEE 802.11標準以及其之相關家族、家用栓AV(HPAV)、超寬頻(UWB)、藍芽、WiMax或任何型式之無線通訊協定。
雖然第9圖中展示之模組被說明如在系統900內之分別的區塊,利用這些區塊之一些被進行的功能可被整合在單一半導體電路內或可使用二個或更多個分別的積體電路被實作。此處揭示之方法可以硬體、軟體、韌體或其之任何其他組合被實作。雖然揭示主題之實施範例被說明,熟習有關技術者應明白,許多其他實作所揭示之主題的方法亦可被使用。於先前之說明中,所揭示之主題的各種論點已被說明。為說明之目的,特定數量、系統以及組態被設定,以便提供對主題之全面了解。但是,熟習本技術者應明白,這揭示主題之有關技術可被實施而不必該等特定細節。於其他實例中,習知的特點、構件或模組被省略、被簡化、被組合或被分隔而不使揭示之主題模糊。
此處所使用之專門名詞“可操作”,意謂著裝置、系統、協定等等,是可操作或當該裝置或系統是在離電狀態時是適用於其所需的功能之操作。所揭示主題之各種實施例可以硬體、韌體、軟體或其組合被實作,並且可藉由參考或關聯於程式碼被說明,例如,指令、函數、步驟、資料結構、邏輯、應用程式、設計表示或用於設計之模擬、仿效、及製作之格式,其等當利用一機器存取時將導致該機器進行作業、定義抽象資料型式或低階硬體脈絡、或產生一結果。
圖形中所展示之技術可使用在一個或多個電腦裝置(例如,一般用途之電腦或電腦裝置上)所儲存並且被執行之程式碼以及資料被實作。此等電腦裝置使用機器可讀取儲存媒體(例如,磁碟片、光碟片、隨機存取記憶體、唯讀記憶體、快閃記憶體裝置、相位-改變記憶體)以及機器可讀取通訊媒體(例如,電氣式、光學式、聽覺式或其他形式傳輸信號-例如,載波、紅外線信號、數位信號等等)而儲存並且傳輸(內部地以及利用網路與其他電腦裝置)程式碼以及資料。
雖然所揭示之主題已參考展示的實施例被說明,這說明不是有意作為限定之概念。熟習本技術者應明白,所展示之揭示主題的實施例以及其他實施例之各種修改,被認為是於所揭示之主題範疇之內。
105、910...處理器
110、912...處理模組1
112...處理核心1
114...處理核心2
116、122...界面模組
120、916...處理模組2
124...處理核心3
200、400、500、600、700...樣本程式碼
202-204、410-426、510-550、610-630、710-730...程式列
300...共享指標映圖
302...虛擬位址空間
304...GenX及時(JIT)圖
310...共享區域
312...記憶體位址0x0
314...共享區域基本位址
316...共享區域指標p
320...執行時間常數c0.x
322...記憶體位址參數c0.y
330...記憶體區域u0
332...指標ptr1
334...開始位址指標ptr0
336...指標ptr2
800...共享指標實施例流程
810-840...共享指標流程步驟
900...系統
914...記憶體控制中樞(MCH)
917、922...點對點(PtP)界面
920...晶片組
930...記憶體
932...依電性記憶體
934、980...非依電性記憶體
940...顯示裝置
950、960...匯流排
972...匯流排橋
974...I/O裝置
982...大量儲存裝置
984...鍵盤/滑鼠
986...網路界面
第1圖展示依據本發明一實施例之處理器的方塊圖;
第2圖展示依據本發明一實施例之樣本程式碼;
第3圖展示依據本發明一實施例之共享指標的映圖;
第4圖展示依據本發明一實施例之樣本程式碼;
第5圖展示依據本發明一實施例之樣本程式碼;
第6圖展示依據本發明一實施例之樣本程式碼;
第7圖展示依據本發明一實施例之樣本程式碼;
第8圖展示依據本發明一實施例之流程圖;以及
第9圖展示依據本發明一實施例用以實作此處所揭示之方法的系統。
105...處理器
110...處理模組1
112...處理核心1
114...處理核心2
116、122...界面模組
120...處理模組2
124...處理核心3
Claims (23)
- 一種用以促進在異質平台中共享指標之方法,其包括:將對於一記憶體位置之一指標從一第一處理核心傳送至一第二處理核心,其中該記憶體位置存在於可藉由該第一處理核心以及該第二處理核心兩者存取之一共享記憶體區域,其中:該第一處理核心與該第二處理核心係非同質的,具有不同指令集架構,傳送包括該第一處理核心以一第一格式定義該指標之一第一表示,該第二處理核心係經組態以不同於該第一格式之一第二格式將該指標重定義至一第二表示,以及該第二表示係基於一第一整數常數,該第一整數常數包括由該第一處理核心所決定的該記憶體位置之一基本記憶體位址,且亦基於一第二整數參數,該第二整數常數包括由該第一處理核心所決定之該指標的一記憶體位址之一數值。
- 如申請專利範圍第1項之方法,進一步包括下列步驟:藉由該第一處理核心決定該第一整數常數;並且藉由該第一處理核心決定該第二整數參數。
- 如申請專利範圍第2項之方法,其中該指標之該等第一及第二表示指示至一相同的實體記憶體位置。
- 如申請專利範圍第3項之方法,其中該指標之該第二表示係進一步至少部分地基於一第三指標,其至少部分地 基於該第二處理核心之一虛擬記憶體位置的另一基本記憶體位址以及該第一整數常數。
- 如申請專利範圍第4項之方法,其中該第二處理核心的該指標之該第二表示以及該第三指標是關聯於一結合列表。
- 如申請專利範圍第1項之方法,其中該第一處理核心是一中央處理單元(CPU)並且該第二處理核心是一圖形處理單元(GPU)。
- 如申請專利範圍第1項之方法,其中該等第一以及第二處理核心是至少部分地遵從開放式電腦語言(Open Computing Language)、低階虛擬機器(LLVM)中介語言(IL)、以及GenX JIT IL之一者。
- 一種用以促進在異質平台中共享指標之設備,其包括:複數個非同質處理核心,該等非同質處理核心具有不同指令集架構;耦合於該等複數個非同質處理核心各者之一記憶體;以及用以促進將對於該記憶體中之一共享區域的一位置之一指標從該等複數個非同質處理核心的一第一處理核心傳送至該等複數個非同質處理核心的一第二處理核心之邏輯,該位置可藉由該等複數個非同質處理核心之各者存取,其中:傳送包括該第一處理核心以一第一格式定義該指標之一第一表示, 該第二處理核心係經組態以不同於該第一格式之一第二格式將該指標重定義至一第二表示,以及該第二表示係基於一第一偏移量,該第一偏移量包括由該第一處理核心所決定的該記憶體位置之一基本記憶體位址,且亦基於一第二偏移量,該第二偏移量包括由該第一處理核心所決定之該指標的一記憶體位址之一數值。
- 如申請專利範圍第8項之設備,其中該等複數個非同質處理核心的該第一處理核心具有關聯於該共享區域之一第一虛擬映圖,並且其中該等複數個非同質處理核心的該第二處理核心具有關聯於該共享區域之一第二虛擬映圖。
- 如申請專利範圍第9項之設備,其中該指標是對於該第一虛擬映圖的一指標:該第一偏移量包括該第一虛擬映圖之一基本記憶體位址;並且該第二偏移量包括對於該第一虛擬映圖之該指標的一記憶體位址之一數值。
- 如申請專利範圍第10項之設備,其中該指標之該等第一及第二表示參考在該共享區域中一相同的實體記憶體位置。
- 如申請專利範圍第11項之設備,其中該指標之該第二表示係進一步至少部分地基於一第三指標之一定義,該第三指標至少部分地基於該第二虛擬映圖之另一基本記 憶體位址以及該第一偏移量之。
- 如申請專利範圍第12項之設備,其中該指標之該第二表示以及該第三指標是關聯於一結合列表。
- 如申請專利範圍第11項之設備,其中該等複數個非同質處理核心包括至少一中央處理單元(CPU)以及至少一圖形處理單元(GPU)。
- 如申請專利範圍第8項之設備,其中該等複數個非同質處理核心是至少部分地遵從開放式電腦語言(Open Computing Language)、低階虛擬機器(LLVM)中介語言(IL)、以及GenX JIT IL之一者。
- 一種具有指令被儲存於其上之非暫態機器可讀取儲存媒體,當該等指令被執行時,導致一處理器用以:將對於一記憶體位置之一指標從一第一處理核心傳送至一第二處理核心,其中該記憶體位置存在於可藉由該第一處理核心以及該第二處理核心兩者存取之一共享記憶體區域,其中:該第一處理核心與該第二處理核心係非同質的,具有不同指令集架構,傳送包括該第一處理核心以一第一格式定義該指標之一第一表示,該第二處理核心係經組態以不同於該第一格式之一第二格式將該指標重定義至一第二表示,以及該第二表示係基於一第一偏移量,該第一偏移 量包括由該第一處理核心所決定的該記憶體位置之一基本記憶體位址,且亦基於一第二偏移量,該第二偏移量包括由該第一處理核心所決定之該指標的一記憶體位址之一數值。
- 如申請專利範圍第16項之媒體,進一步具有指令被儲存於其上,當該等指令被執行時,導致一處理器用以:決定該第一偏移量;並且決定該第二偏移量。
- 如申請專利範圍第17項之媒體,其中該指標之該等第一及第二表示指示至一相同的實體記憶體位置。
- 如申請專利範圍第18項之媒體,其中該指標之該第二表示係進一步至少部分地基於一第三指標之一定義,該第三指標至少部分地基於該第二處理核心之一虛擬記憶體位置的另一基本記憶體位址以及該第一偏移量。
- 如申請專利範圍第19項之媒體,其中該第二處理核心之以該第二格式的該指標之該表示以及該第三指標是關聯於一結合列表。
- 如申請專利範圍第16項之媒體,其中該第一處理核心是一中央處理單元(CPU)並且該第二處理核心是一圖形處理單元(GPU)。
- 如申請專利範圍第16項之媒體,其中該等第一以及第二處理核心是至少部分地遵從公開電腦語言(Open Computing Language)、低階虛擬機器(LLVM)中介語言(IL)、以及GenX JIT IL之一者。
- 如申請專利範圍第16項之媒體,其中該指標是以適用於該第二處理核心之格式被儲存。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/074,779 US8566537B2 (en) | 2011-03-29 | 2011-03-29 | Method and apparatus to facilitate shared pointers in a heterogeneous platform |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201239633A TW201239633A (en) | 2012-10-01 |
TWI471730B true TWI471730B (zh) | 2015-02-01 |
Family
ID=46928842
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100147153A TWI471730B (zh) | 2011-03-29 | 2011-12-19 | 用以促進在異質平台中共享指標之方法及設備 |
Country Status (6)
Country | Link |
---|---|
US (3) | US8566537B2 (zh) |
EP (1) | EP2691852A4 (zh) |
KR (1) | KR101253012B1 (zh) |
CN (1) | CN102959504B (zh) |
TW (1) | TWI471730B (zh) |
WO (1) | WO2012134557A1 (zh) |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8667249B2 (en) * | 2004-12-22 | 2014-03-04 | Intel Corporation | Systems and methods exchanging data between processors through concurrent shared memory |
US20130113809A1 (en) * | 2011-11-07 | 2013-05-09 | Nvidia Corporation | Technique for inter-procedural memory address space optimization in gpu computing compiler |
US20130141443A1 (en) * | 2011-12-01 | 2013-06-06 | Michael L. Schmit | Software libraries for heterogeneous parallel processing platforms |
US9311250B2 (en) * | 2011-12-19 | 2016-04-12 | Intel Corporation | Techniques for memory de-duplication in a virtual system |
US9009419B2 (en) * | 2012-07-31 | 2015-04-14 | Advanced Micro Devices, Inc. | Shared memory space in a unified memory model |
US9405561B2 (en) * | 2012-08-08 | 2016-08-02 | Nvidia Corporation | Method and system for memory overlays for portable function pointers |
US9274839B2 (en) | 2012-09-27 | 2016-03-01 | Intel Corporation | Techniques for dynamic physical memory partitioning |
US9411715B2 (en) | 2012-12-12 | 2016-08-09 | Nvidia Corporation | System, method, and computer program product for optimizing the management of thread stack memory |
US20140232733A1 (en) * | 2013-02-19 | 2014-08-21 | Jason Caulkins | Graphics Processing Unit Pre-Caching |
US9311011B2 (en) | 2013-08-07 | 2016-04-12 | Qualcomm Incorporated | Dynamic address negotiation for shared memory regions in heterogenous multiprocessor systems |
US9881592B2 (en) | 2013-10-08 | 2018-01-30 | Nvidia Corporation | Hardware overlay assignment |
US10452306B1 (en) * | 2013-12-31 | 2019-10-22 | EMC IP Holding Company LLC | Method and apparatus for asymmetric raid |
US9886736B2 (en) * | 2014-01-20 | 2018-02-06 | Nvidia Corporation | Selectively killing trapped multi-process service clients sharing the same hardware context |
US10152312B2 (en) | 2014-01-21 | 2018-12-11 | Nvidia Corporation | Dynamic compiler parallelism techniques |
CN104866295B (zh) * | 2014-02-25 | 2018-03-06 | 华为技术有限公司 | OpenCL运行时***框架的设计方法及装置 |
US9779535B2 (en) | 2014-03-19 | 2017-10-03 | Microsoft Technology Licensing, Llc | Configuring resources used by a graphics processing unit |
US9766954B2 (en) | 2014-09-08 | 2017-09-19 | Microsoft Technology Licensing, Llc | Configuring resources used by a graphics processing unit |
US9740464B2 (en) | 2014-05-30 | 2017-08-22 | Apple Inc. | Unified intermediate representation |
US10346941B2 (en) | 2014-05-30 | 2019-07-09 | Apple Inc. | System and method for unified application programming interface and model |
US10430169B2 (en) | 2014-05-30 | 2019-10-01 | Apple Inc. | Language, function library, and compiler for graphical and non-graphical computation on a graphical processor unit |
CN104484266A (zh) * | 2014-11-07 | 2015-04-01 | 上海交通大学 | 一种锁使用模式自动化静态分析*** |
DE102016106939B4 (de) | 2015-04-17 | 2024-05-02 | Suunto Oy | Eingebettetes Rechengerät |
US9733978B2 (en) | 2015-08-27 | 2017-08-15 | Qualcomm Incorporated | Data management for multiple processing units using data transfer costs |
US9778961B2 (en) | 2015-09-14 | 2017-10-03 | Qualcomm Incorporated | Efficient scheduling of multi-versioned tasks |
US10360063B2 (en) | 2015-09-23 | 2019-07-23 | Qualcomm Incorporated | Proactive resource management for parallel work-stealing processing systems |
WO2017095367A1 (en) * | 2015-11-30 | 2017-06-08 | Hewlett Packard Enterprise Development Lp | Managing objects stored in memory |
US10235811B2 (en) | 2016-12-29 | 2019-03-19 | Intel Corporation | Replicating primitives across multiple viewports |
US10489881B2 (en) * | 2017-06-30 | 2019-11-26 | H3 Platform Inc. | Direct memory access for co-processor memory |
CN109726005B (zh) * | 2017-10-27 | 2023-02-28 | 伊姆西Ip控股有限责任公司 | 用于管理资源的方法、服务器***和计算机可读介质 |
US10866806B2 (en) * | 2017-11-14 | 2020-12-15 | Nvidia Corporation | Uniform register file for improved resource utilization |
FR3078176B1 (fr) | 2018-02-19 | 2020-02-28 | IFP Energies Nouvelles | Systeme et procede de prediction d'un phenomene physique et/ou chimique au moyen d'un segment de memoire partage |
US11275587B2 (en) | 2018-05-02 | 2022-03-15 | Micron Technology, Inc. | Static identifications in object-based memory access |
US10740220B2 (en) * | 2018-06-27 | 2020-08-11 | Microsoft Technology Licensing, Llc | Cache-based trace replay breakpoints using reserved tag field bits |
US10628910B2 (en) | 2018-09-24 | 2020-04-21 | Intel Corporation | Vertex shader with primitive replication |
US11544069B2 (en) * | 2018-10-25 | 2023-01-03 | Micron Technology, Inc. | Universal pointers for data exchange in a computer system having independent processors |
GB2599451B (en) * | 2020-09-30 | 2022-11-02 | Imagination Tech Ltd | Building and scheduling tasks for parallel processing |
Citations (4)
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 |
US6822654B1 (en) * | 2001-12-31 | 2004-11-23 | Apple Computer, Inc. | Memory controller chipset |
US20080109795A1 (en) * | 2006-11-02 | 2008-05-08 | Nvidia Corporation | C/c++ language extensions for general-purpose graphics processing unit |
US7787629B1 (en) * | 2007-09-06 | 2010-08-31 | Elcomsoft Co. Ltd. | Use of graphics processors as parallel math co-processors for password recovery |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5315707A (en) | 1992-01-10 | 1994-05-24 | Digital Equipment Corporation | Multiprocessor buffer system |
US7096252B1 (en) | 2000-10-05 | 2006-08-22 | Stmicroelectronics, Inc. | System and method for interfacing network station subsystems |
US7299242B2 (en) | 2001-01-12 | 2007-11-20 | Sun Microsystems, Inc. | Single-word lock-free reference counting |
US6728858B2 (en) * | 2001-03-30 | 2004-04-27 | Intel Corporation | Method and apparatus including heuristic for sharing TLB entries |
US7234111B2 (en) | 2001-09-28 | 2007-06-19 | Ntt Docomo, Inc. | Dynamic adaptation of GUI presentations to heterogeneous device platforms |
US7321958B2 (en) * | 2003-10-30 | 2008-01-22 | International Business Machines Corporation | System and method for sharing memory by heterogeneous processors |
US8904064B2 (en) * | 2008-10-24 | 2014-12-02 | International Business Machines Corporation | Managing an out-of-order asynchronous heterogeneous remote direct memory access (RDMA) message queue |
US8397241B2 (en) * | 2008-11-13 | 2013-03-12 | Intel Corporation | Language level support for shared virtual memory |
US8776088B2 (en) | 2009-03-30 | 2014-07-08 | Microsoft Corporation | Operating system distributed over heterogeneous platforms |
US20110161620A1 (en) * | 2009-12-29 | 2011-06-30 | Advanced Micro Devices, Inc. | Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices |
-
2011
- 2011-03-29 US US13/074,779 patent/US8566537B2/en not_active Expired - Fee Related
- 2011-12-09 WO PCT/US2011/064244 patent/WO2012134557A1/en active Application Filing
- 2011-12-09 CN CN201180016783.7A patent/CN102959504B/zh not_active Expired - Fee Related
- 2011-12-09 KR KR1020127022911A patent/KR101253012B1/ko not_active IP Right Cessation
- 2011-12-09 EP EP11862620.9A patent/EP2691852A4/en not_active Ceased
- 2011-12-19 TW TW100147153A patent/TWI471730B/zh not_active IP Right Cessation
-
2013
- 2013-09-06 US US14/020,616 patent/US8862831B2/en active Active
-
2014
- 2014-10-13 US US14/513,065 patent/US9606919B2/en active Active
Patent Citations (4)
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 |
US6822654B1 (en) * | 2001-12-31 | 2004-11-23 | Apple Computer, Inc. | Memory controller chipset |
US20080109795A1 (en) * | 2006-11-02 | 2008-05-08 | Nvidia Corporation | C/c++ language extensions for general-purpose graphics processing unit |
US7787629B1 (en) * | 2007-09-06 | 2010-08-31 | Elcomsoft Co. Ltd. | Use of graphics processors as parallel math co-processors for password recovery |
Also Published As
Publication number | Publication date |
---|---|
WO2012134557A1 (en) | 2012-10-04 |
CN102959504A (zh) | 2013-03-06 |
TW201239633A (en) | 2012-10-01 |
US20150186273A1 (en) | 2015-07-02 |
KR20120123127A (ko) | 2012-11-07 |
KR101253012B1 (ko) | 2013-04-16 |
US8566537B2 (en) | 2013-10-22 |
US9606919B2 (en) | 2017-03-28 |
US8862831B2 (en) | 2014-10-14 |
EP2691852A1 (en) | 2014-02-05 |
US20140071144A1 (en) | 2014-03-13 |
EP2691852A4 (en) | 2014-12-31 |
US20120254497A1 (en) | 2012-10-04 |
CN102959504B (zh) | 2014-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI471730B (zh) | 用以促進在異質平台中共享指標之方法及設備 | |
JP6124463B2 (ja) | 一方のアーキテクチャのコードモジュールが他方のアーキテクチャのライブラリモジュールを用いることを可能にするインターアーキテクチャ互換性モジュール | |
US8589613B2 (en) | Method and system to improve the operations of an integrated non-transparent bridge device | |
US9727471B2 (en) | Method and apparatus for stream buffer management instructions | |
KR101964350B1 (ko) | 다중 레지스터 메모리 액세스 명령어들, 프로세서들, 방법들 및 시스템들 | |
TW201905714A (zh) | 以輔助處理器記憶體進行儲存裝置的直接輸入輸出操作的計算系統操作方法、計算系統、車輛及電腦可讀媒體 | |
JP5973590B2 (ja) | キャッシュのプレローディングにgpuコントローラを使用するための機構 | |
JP5681782B2 (ja) | オン・ダイ・システム・ファブリック・ブロックの制御 | |
WO2018205117A1 (zh) | 一种多核***内存访问方法、相关装置、***及存储介质 | |
CN110647291A (zh) | 硬件辅助的页面调度机制 | |
TW201331753A (zh) | 用於圖形虛擬化之gpu加速的位址轉換技術 | |
EP3709159B1 (en) | Processing vectorized guest physical address translation instructions | |
CN113900966B (zh) | 一种基于Cache的访存方法及装置 | |
CN107250995B (zh) | 存储器管理设备 | |
TWI696949B (zh) | 直接記憶體存取方法、裝置、專用計算晶片及異構計算系統 | |
TW201246068A (en) | Methods and systems for mapping a function pointer to the device code | |
KR20220054389A (ko) | 프로세서 기반 디바이스에서의 페이지 테이블 엔트리에 대한 액세스 최적화 | |
US9588882B2 (en) | Non-volatile memory sector rotation | |
US8593472B1 (en) | System and method for accessing a frame buffer via a storage driver | |
CN115297169A (zh) | 数据处理方法、装置、电子设备及介质 | |
JP2009032150A (ja) | 半導体集積回路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |