TW201239633A - Method and apparatus to facilitate shared pointers in a heterogeneous platform - Google Patents

Method and apparatus to facilitate shared pointers in a heterogeneous platform Download PDF

Info

Publication number
TW201239633A
TW201239633A TW100147153A TW100147153A TW201239633A TW 201239633 A TW201239633 A TW 201239633A TW 100147153 A TW100147153 A TW 100147153A TW 100147153 A TW100147153 A TW 100147153A TW 201239633 A TW201239633 A TW 201239633A
Authority
TW
Taiwan
Prior art keywords
indicator
memory
processing core
location
processing
Prior art date
Application number
TW100147153A
Other languages
English (en)
Other versions
TWI471730B (zh
Inventor
Yang Ni
Rajkishore Barik
Ali-Reza Adl-Tabatabai
Tatiana Shpeisman
Jayanth N Rao
Ben J Ashbaugh
Tomasz Janczak
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 TW201239633A publication Critical patent/TW201239633A/zh
Application granted granted Critical
Publication of TWI471730B publication Critical patent/TWI471730B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Description

201239633 六、發明說明: L 明戶斤屬4軒々員j 發明領域 本發明係關於共享指標,並且更明確地說,但不是限 制於,促進在一異質平台中共享指標之方法及設備。 t ^tT Jt 發明背景
OpenCL(開放式電腦語言-Open Computing Language) 是用以撰寫跨越異質平台執行之程式的架構,該等異質平 台具有中央處理單元(CPU)、圖形處理單元(GPU)以及其他 處理器。OpenCL是由一程式語言與一些擴展所構成,該程 式語言是以C99標準之一子集為基礎,而該等擴展則是被使 用在各種裝置之間通訊以及對於這些裝置撰寫資料-平行 計算核心。OpenCL之一關鍵限制是其不允許以無縫方式共 享在多數個異質裝置之間的複雜資料結構。 一般,一GPU之記憶體被分割成為一組區域或範圍。 這些區域是由一結合列表以及一偏移量所參考。於此一設 計中’因為存在多於一個的結合列表,故使一 CPU指標轉 化至一 G.PU指標需要解碼偏移量以及結合列表。 t 明内】 依據本發明之一實施例,係特地提出一種方法,其包 括:在一第一處理核心以及一第二處理核心之間共享一記 憶體位置之一指標,其中該記憶體位置存在於可藉由該第 一以及該第二處理核心兩者存取之一共享記憶體區域。 3 201239633 圖式簡單說明 本發明實施例之特點以及優點將自下面主題的詳細說 明而成為明顯,於其中: 第1圖展示依據本發明一實施例之處理器的方塊圖; 第2圖展示依據本發明一實施例之樣本程式碼; 第3圖展示依據本發明一實施例之共享指標的映圖; 第4圖展示依據本發明一實施例之樣本程式碼; 第5圖展示依據本發明一實施例之樣本程式碼; 第6圖展示依據本發明一實施例之樣本程式碼; 第7圖展示依據本發明一實施例之樣本程式碼; 第8圖展示依據本發明一實施例之流程圖;以及 第9圖展示依據本發明一實施例用以實作此處所揭示 之方法的系統。 C:實施方式3 詳細說明 此處說明之本發明實施例經由範例被展示,並且不受 附圖之限制。為了展示之簡明與清晰,於圖形中所展示之 元件不必定得依尺度比例而繪晝。例如,為清楚起見,一 些元件之尺寸可相對於其他元件而被放大。進一步地,合 適處,參考號碼在圖形之間被重複以指示對應的或類似的 元件。說明文中關於本發明之“一實施例”或“一個實施 例”,意謂著有關該實施例所說明的一特定之特點、結構或 特性被包含在本發明至少一實施例中。因此,在所有說明 文中出現的詞組“於一實施例中”不必定得都關連於相同實 201239633 施例。 本發明之實施例提供促進在異質平台中共享指標之方 法以及設備。於本發明一實施例中,異質或非同質平台包 含,但是不受限定於,中央處理核心或單元、圖形處理核 心或單元、數位信號處理器、界面模組以及任何其他形式 的處理核心。於本發明一實施例中,異質平台具有至少二 個不同的處理核心。 於本發明一實施例中,一編譯器編碼程式碼產生機構 或方法允許在異質平台的二個不同核心之間共享指標。例 如,於本發明一實施例中,異質平台包括一中央處理單元 (CPU)以及一圖形處理單元(GPU)。異質平台具有邏輯以促 進對於一記憶體位置之指標由CPU以及GPU共享。於本發 明一實施例中,藉由延伸C程式語言而程式規劃CPU與GPU 之一新的方式被提供以允許有效地使用兩個裝置。這程式 化模式支援一共享的虛擬記憶體(SVM)而在CPU以及GPU 之間提供一個單一位址空間,因而指標可直接地給兩裝置 共享。於本發明一實施例中,CPU指標可無縫地與GPU裝 置共享軟體或硬體。 於本發明一實施例中,藉由共享異質平台中之指標, 共享在異質平台中不同核心之間的資料或資訊可被簡化。 例如,於本發明一實施例中,當異質平台使用指標為基礎 之資料結構時,例如,鏈接的列表或樹型,異質平台中之 不同核心可使用高階程式語言,例如,C、C++或OpenCL 以使用在不同核心之間的共享指標而共享資料。 201239633 於本發明一實施例中,異質平台不需要使在一處理核 心上的虛擬-至-實體映圖相同於另一處理核心者而共享指 標。於本發明一實施例中,在異質平台上執行之編譯器產 生適當地調整虛擬位址之程式碼’因而各核心是可參考相 同的實體記憶體位置^所產生的程式碼包含,但是不受限 疋於,機器碼、中介表示(IR)程式碼以及任何其他形式之程 式碼。 第1圖展示依據本發明一實施例之處理器1 〇5的方塊 圖。處理器105展示具有一處理模組1 110以及一處理模組2 120的異質平台之一實施例。於本發明一實施例中,處理模 組1 110具有處理核心1 II2以及處理核心2 1M。於本發明一 實施例中,處理模組1 110具有多於二個處理核心。於本發 明另一實施例中’處理模組1 110僅具有一個處理核心。 處理模組1 110具有允許與處理器105中的其他模組通 訊之界面模組116。於本發明一實施例中,界面模組116依 據,但是不限定於,英特爾快速通道互連 IntercormectXQPI)通訊協定或任何其他通訊協定而操作。 處理模組2 Π0具有處理核心3 124以及允許與處理模 組1 110通訊之界面模組122。於本發明一實施例中,處理模 組1 110是中央處理單元並且處理模組2 12〇是圖形處理單 元。於本發明另一實施例中,處理器1〇5可具有其他型式的 處理單元。 處理器105之展示是不欲受限定並且處理器1〇5的其他 組態也可被使用而不影響本發明之運作。例如,於本發明 201239633 一實施例中,處理器105具有與處理模組i 11〇以及2 i2〇耦 合的第三處理模組。 第2圖展示依據本發明一實施例之樣本程式碼細。樣 本程式碼200屐示本發明一實施例,其中—指標在一 cpu中 破=義並讀傳送至-GPU。該GPU接收標並且使用 该指標以供操作,例如,但是不受限定於,解關聯化操作、 負載指令或操作、儲存指令或操作、指標算術操作以及其 類似者。*管在CPU或GPU上之共享指標是否被解關聯 化,該共享指標仍指示相同的實體記憶體位置。 樣本程式碼200展示以C語言被撰寫之程式碼而包含用 =卸載資料或作業平行計算至Gpu之函數。程式列2〇2展示 分配-陣列於—共享虛擬記憶體或位址空間中的一讀〇 c 弋庫呼叫。程式列2〇4展示置放一資料_平行作業進入一 仵列以供執行之-卸載函數呼叫。第—參數指定將被進行 之重複次數,第二參數指定脈絡,並且第三參數指定卸載 函數之函數指標。 於本發明-實施例中,CPU以及Gpu具有對於一指標 之不同表示。例如,於本發明一實施例中,比較至CPU時, 在GPU上之編碼以及一指標之長度或位元數可以是不同 的。於本發明-實施例中,一Gpu中之指標可被表示作為 具有偏移量之結合列表“。織合列表具有㈣於Gpu 表面項目各者之基本記憶體位址並且在執行時偏移量被添 加至這基本位址。於本發明—實施财,為克服對於cpu 以及GPU巾之-指標的不同表示,異質平台具有邏輯以相 201239633 似於CPU之方式保持GPU中之記憶體内的指標表示。於本 發明一實施例十,利用該等指標所表示之虛擬位址數值可 具有32、64、或任何其他適當的位元數目。 第3圖展示依據本發明一實施例之共享指標的映圖 300。為清楚展示起見,於本發明一實施例中,映圖3〇〇展 示在一CPU以及一Gpu之間的一共享指標。虛擬位址空間 302展示CPU之記憶體圖式並且Genx及時(jit)圖304展示 GPU之記憶體圖式。於本發明一實施例中,Genx jit中介 語言(IL)是用於英特爾圖形處理器之中介表示語 言。於本發明—實施例中,GenX JIT IL描述GPU記憶體模 式以及程式指令。 CPU之虛擬位址空間3〇2以及Gpu之GenX JIT圖304是 關聯於CPU以及GPU所可存取之共享記憶體區域。為展示 清楚起見,於本發明一實施例中,虛擬位址空間3〇2中之共 旱區域310展示一共享記憶體的特定虛擬記憶體映圖。虛擬 位址空間302之開始位址利用記憶體位址〇χ〇 3丨2被展示。 共享區域310具有—基本位址314以及指出或參考共享區域 310之一特定記憶體位置的一指標ρ 310。 於本發明一實施例中,一執行時間常數cO.x 320在執行 時被决定並且被儲存。執行時間常數X 32〇代表共享區域 0之基本位址314。於本發明一實施例中,一參數y ^ ,暫存器或任何儲存區域被裝載。參數c〇.y 322代表共享 區域320中之指標p 316的記憶體位址。於本發明一實施例 中執订時間常數c〇 χ 32〇以及參數c〇 丫 η2作為整數被儲存。
S 8 201239633 於本發明一實施例中,執行時間常數c0 x 32〇被傳送至 GPU作為一執行時間常數。於本發明—實施例中,參數c〇 y 322自一暫存器被預先裝載。例如,於本發明一實施例中, 異質平台具有一軟體驅動器,其將執行時間常數c〇x32〇傳 送至在GPU上執行之被編澤的程式媽並且y 322自一暫 存器被預先裝載。 於本發明一實施例中,GPU具有可被分割成為一個或 多個區域或範圍之集合的一記憶體。於本發明一實施例 中’該等一個或多個區域集合可以由結合列表以及偏移量 所參考。記憶體區域u0 330展示在具有對於指標之偏移量 的單一結合列表之一 GPU中的一記憶體。gpu使用執行時 間常數c0_x 320以及參數cO.y 322以決定在GenX JIT圖304 中所對應的共享區域。例如,指標ptr〇 334代表在GPU中之 記憶體區域u0 330的開始位址並且其是關聯於cpu之共享 區域310的基本位址314。 於本發明一實施例中,指標ptrl 332由指標ptr〇 334以 及執行時間常數cO.x 320被決定。例如,於本發明一實施例 中,指標ptrl 332藉由自指標ptr〇 334減去執行時間常數c〇.x 320被決定。於本發明另一實施例中’指標ptrl 332藉由將指 標ptrO 334加上執行時間常數c0.x 32〇的負數值而被決定。 於本發明一實施例中,指標ptr2 336之GPU表示可自 ptrl 332以及ptr2 336之整數值經由一指標加法操作而被導 出。例如’於一實施例中,ptr2 336藉由將指標ptrl 332與 參數cO.y 322相加而被決定。 201239633 於本發明一實施例中,執行時間常數cO.x 320以及參數 〇0.丫 322允許自指標?316至指標口化2 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中一記憶體區域u〇 330之宣告。於 本發明一實施例中,軟體驅動器將記憶體區域u0 330貼連
S 10 201239633 或關聯至由CPU以及GPU共享的記憶體區域。程式列412展 不共享區域之基本位址314以及指標p 316的宣告。程式列 414展示—線程識別(ID)之宣告。程式列416、418以及42〇 分別地展示指標ptrO 334、ptrl 332以及ptr2 336之宣告。 程式列422展示被指定至記憶體區域u〇 330的指標ptr〇 334 ° 式列424展示具有包含指標ptrO 334與執行時間常數 C〇’X 320二個參數的指標ptrl 332之宣告。PADD函數相加第 一參數’亦即,指標ptr0 334 ’以及第二參數,亦即,負的 執行時間常數cO.x 320或-c0_x,以得到指標ptrl 332。 心式列426展示具有包含指標ptrl 332與參數c〇.y 322 —個參數的指標ptr2 336之宣告。PADD函數相加第一參 數’亦即,指標ptrl 332,以及第二參數,亦即,參數c〇y 322 ’以得到指標ptr2 336。 樣本程式碼400展示本發明一實施例並且並不表示將 文其限定。於本發明一實施例中,樣本程式碼400可利用一 動態編譯器而被最佳化。例如,於本發明一實施例中,一 動態編譯器知道記憶體區域u〇 330之執行時間數值以及執 行時間常數c〇.x 320,程式列422以及424可被移除。 熟習本技術者將容易明白其他程式碼格式也可被使用 而不影響本發明之運作並且這些其他的程式碼格式將不再 被說明。於本發明另一實施例中,64位元指標也可被使用 而不影響本發明之運作。 於本發明一實施例中,指標之共享是不受限定於編譯 器後端。於本發明另一實施例中,指標之共享可如同在其 11 201239633 他中介語言位準中之編譯器轉換而被進行。例如,於本發 明一實施例中,指標之共享可使用自C或OpenCL程式碼產 生OpenCL程式碼之源碼-對-源碼轉換被進行。於本發明另 一實施例中,指標之共享可以低階虛擬機器IR (LLVMIR) 位準被進行,亦即,自LLVMIR轉換至LLVMIR。 第5圖展示依據本發明一實施例之一樣本程式碼 500。於本發明一實施例中,一整數儲存操作被使用以將一 指標儲存至記憶體。於本發明一實施例中,取決於GPU指 標在IL中是如何表示’可能需要一些調整以得到等於cpu 虛擬位址而供用於一GPU指標之整數值。樣本程式碼5〇〇展 示以C語言被撰寫之調整的實施例。 程式列510展示一鏈接列表節點的宣告。程式列wo展 示一鏈接列表節點脈絡的宣告。程式列530展示將在GPU上 被執行之f〇〇函數》程式列540展示一鏈接列表節點指標p之 宣告。程式列550展示置放一資料-平行作業進入一佇列以 及鏈接列表節點指標P的適當調整之主程式碼。熟習本技術 者將容易明白樣本程式碼500之運作並且其將不再於此處 被說明。 第6圖展不依據本發明一實施例之樣本程式碼6〇〇。為 展示清楚起見,第6圖將參考第3、4以及5圖被討論。於本 發明一實施例中,樣本程式碼600展示利用編譯器所產生的 GenX JIT IL程式碼。程式列616展示具有自樣本程式碼5〇〇 之線程索引所得到的索引i之參數i0.x。參數i〇 χ被改變成為 位元組偏移量並且被加至指標ptr2 336以在程式列616中得
S 12 201239633 到指標ptr3。 於本發明一實施例中,指標ptr3允許GPU儲存資料。例 如,於程式列630中,GPU使用指標ptr3以儲存&p[i+l]數 值。熟習本技術者將容易明白樣本程式碼500之運作並且其 將不再於此處被說明。於數字400、500以及600所展示的樣 本程式碼顯示被使用於編譯器後端之本發明實施例,但是 並不表示將受其限定。於本發明另一實施例中,編譯器前 端’例如’但不受限定於此,Clang使用C、C++、物件c、 物件C++以及〇penCL源碼以產生LLVMIR。 例如,依據本發明一實施例,第7圖展示等效於樣本程 式碼500中之鏈接列表而以標準〇penCL被撰寫之樣本程式 崎700。於本發明一實施例中,樣本程式碼700展示一源碼 對源碼轉換,其可被使用以實作一標準開放CL堆疊之頂部 上的共享指標。熟習本技術者將容易明白樣本程式碼700之 運作並且將不再於此處被說明。 於本發明一實施例中’異質平台具有使用不同的位址 空間寬度或尺度之處理核心。例如’於本發明一實施例中, CPU具有一個64位元位址空間並且GPU具有一 32位元位址 空間。藉由以相同於CPU表示指標之方式而保持GPU中之 記憶體内的指標表示,CPU上之64-位元應用可與僅支援32 位元指標之一 GPU共享虛擬記憶體。 第8圖展示依據本發明一實施例之流程圖8〇〇 ^為展示 清楚起見’第8圖將參考第3圖被討論。於步驟81〇中,流程 8〇〇決定第一處理核心中一共享記憶體區域之第一基本位 13 201239633 址。例如,於本發明-實施例中,步驟810決定cpu虛擬位 址空間302中之共享區域310的基本位址314。 於步驟820中,流程800決定第一處理核心中之第一指標 的一記憶體位置。例如,於本發明一實施例中,步驟82〇決 定CPU虛擬位址空間302中之指標p316的記憶體位置。於本 發明一實施例中,於步驟810中被決定之第一基本位址以及 於步驟820中被決定之記憶體位置被儲存作為執行時間整數 常數。於步驟810中被決疋的第一基本位址以及於步驟Μ。 中被決定的記憶體位置成為可供用於第二處理核心,因而可 映射或轉化其對應至第一處理核心中的第一指標之指標。 於步驟830中,流程800以第一基本位址為基礎決定第 二處理核心中另一共享記憶體區域之開始位址。例如,於 本發明一實施例中,步驟830使用第一基本位址決定gpu記 憶體區域u0 330中之指標ptrl 332的記憶體位置。指標ptr〇 334是第二處理核心所知的並且指標ptrl 332藉由自該指標 ptrO 334減去第一基本位址被決定。於本發明另一實施例 中,指標ptrl 332藉由相加指標ptrO 334與第一基本位址的 一負數值被決定。 於步驟840中,流程800以第一指標之記憶體位置以及 開始位址為基礎決定關聯於第一指標的一指標之對應的記 憶體位置並且流程800結束。例如,於本發明一實施例中, 步驟840使用第一指標之記憶體位置(亦即,c〇.y 322)以及開 始位址(亦即,指標ptrl 332)決定GPU記憶體區域u0 330中 之指標ptr2 336的記憶體位置。指標ptr2 336藉由相加指標
S 14 201239633
Ptrl 332與參數c0.y 322被決定。於本發明另—實施例中, 標準編釋ϋ最佳化,例如,但是β限定於,當可能時程 式碼移動可被應用以提升在迴路之外的指標操作。 於本發明另一實施例中,如先前被說明,編譯器最佳 化可選擇以GPU格式儲存指標而取代cpu格式。於本發明 一實施例中’當指標以GPU格式被儲存時,對於任何裝載 或儲存操作,是不需有轉換的。於本發明—實施例中,一 GKJ指標藉由進行反向指標操作被轉換為一cpu指標。例 如’於第3圖巾’指標ptr2 336可藉由進行反向指標操作被 轉換為指標P 316。熟習本技術者將容易明白如何進行反向 指標操作並且在此處將不再說明。 第9圖展示依據本發明一實施例實作此處揭示之方法 的系統900。系統900包含,但是不受限定於,桌上型電腦、 膝上型電腦電腦、網書型電腦、筆記型電腦、個人數位助 理(PDA)、伺服器、工作站、行動電話、移動電腦裝置、網 際網路器具或任何其他型式之電腦裝置。於另一實施例 中’被使用以貫作此處揭示之方法的系統9〇〇可以是晶片系 統(SOC)之系統。 處理器910具有一處理模組1 912以執行系統9〇〇之指 令。處理模組1 910包含,但是不受限定於,裸取指令之預 取邏輯、解碼指令之解碼邏輯、執行指令之執行邏輯以及 其類似者。處理器處理模組丨910具有快取記憶體(未被展示) 以快取系統900之指令及/或資料。於本發明另一實施例 中,快取記憶體包含,但是不受限定於,階級丨、階級2以 15 201239633 及階級3快取記憶體或在處理模組丨91〇内之任何其他組態 的快取記憶體。 處理器910具有1¾合一顯*裝置94〇之處理模組2 6 ”’、員示裝置940包含,但是不受限定於,液晶顯示器 (LCD)、陰極射線管(CRT)顯示器或任何其他形式之視覺顯 示裝置。於本發明-實施例中,處理模組2916進行圖形處 理操作。處理模組2 916也可利用處理模組1912執行指令或 處理卸載至它的作業。 記憶體控制中樞(MCH) 914進行引動處理器91〇存取並 且與包含依電性記憶體932及/或非依電性記憶體934之記憶 體930通訊的功能。依電性記憶體932包含,但是不受限定 於,同步動態隨機存取記憶體(SDRAM)、動態隨機存取記 憶體(DRAM)、RAMBUS動態隨機存取記憶體(RDRAM)及/ 或任何其他型式之隨機存取記憶體裝置。非依電性記憶體 934包含,但是不受限定於,NAND快閃記憶體,相位改變 記憶體(PCM)、唯讀記憶體(R〇M)、電氣可消除可程編唯讀 記憶體(EEPROM)或任何其他型式之非依電性記憶體裝置。 記憶體930儲存資訊以及將被處理器91〇所執行之指 令。記憶體930也可儲存當處理器910執行指令時之暫時變 數或其他中間資訊。晶片組920經由點對點(PtP)界面917以 及922與處理器910連接。晶片組920引動處理器910連接至 系統900中的其他模組。於本發明一實施例中,界面917以 及922依據一PtP通訊協定,例如,intei®快速通道互連(qpi) 或其類似者而操作。 201239633 此外’晶片組920連接至互連各種模組974、980、982、 984、以及986之一個或多個匯流排950以及960。如果匯流 排速度或通訊協定中有錯配的話,則匯流排950以及960可 經由匯流排橋972被互連在一起。晶片組92〇耗合,但是不 受限定於,非依電性記憶體980、大量儲存裝置982、鍵盤/ 滑鼠984以及網路界面986。大量儲存裝置982包含,但是不 受限定於,固態驅動器、硬碟驅動器、通用串列匯流排快 閃§己憶體驅動或任何其他形式之電腦資料儲存媒體。網 路界面986使祕何型式之習知_路界面標準被實作,該 網路界面^準包含,但是不受限制定於,以太界面、通用 串列匯流排(USB)界面、週邊構件互連(pci)快速界面、無 線界面及/或任何其他騎料的界面。鱗界面依據下列 通减疋吨作’但是不受限定於,ieee觀.11標準以及 其之相關家族、家祕AV(_)、超寬頻_)、藍芽、 WlMax或任㈣叙無料訊協定。 雖然第9圖中展示之模組被說明如在系統_内之分別 2塊’利化些區塊之__些被進行的功能可被整合在單 i f路内或可使用二個或更多個分朗積體電路被 ^乍。此處揭示之方法可以硬體、軟體、㈣或其之任何 作。雖_示主題之實施範例被說明,熟習 有關技術者應明白,許多其 、貫作所揭示之主題的方法亦 可被使用。於先前之說明中, Q ^ W竭不之主題的各種論點已 被說明。為說明之目的,特定 y上 疋數垔、系統以及組態被設定, 以便提供對主題之全面了解。 醉彳一疋’熟習本技術者應明白, 17 201239633 這揭示主題之有關技術可被實施而不必該等特定細節。於 其他實例中,習知的特點、構件或模組被省略、被簡化、 被組合或被分隔而不使揭示之主題模糊。 此處所使用之專門名詞“可操作”,意謂著裝置、系統、 協疋等等’ 7C可操作或當該裝置或系統是在離電狀態時是 適用於其所需的功能之操作。所揭示主題之各種實施例可 以硬體、㈣、軟體或其組合被實作,並且可藉由參考或 關聯於程式碼被說明,例如,指令、函數、步驟、資料結構、 邏輯、應用程式、設計表示或用於設計之贿、仿效、及製 作之格式’其等當彻—機II存取時將導致該機器進行作 業、定義抽象資料型式或低階硬體脈絡、或產生一結果。 圖形中所展示之技術可使用在一個或多個電腦裝置 (例如’一般用途之電腦或電腦裝置上)所儲存並且被執行之 程式碼以及資料被實作。此等電腦裝置使用機器可讀取儲 存媒體(例如,磁碟片、光碟片、隨機存取記憶體、唯讀記 憶體、快閃記憶體裝置、相位_改變記憶體)以及機器可讀取 通訊媒體(例如,電氣式、光學式、聽覺式或其他形式傳輸 信號-例如,載波、紅外線信號、數位信號等等)而儲存並 且傳輸(内部地以及利用網路與其他電腦裝置)程式碼以及 資料。 雖然所揭示之主題已參考展示的實施例被說明,這說 明不是有意作為限定之概念。熟習本技術者應明白,所展 不之揭示主題的實施例以及其他實施例之各種修改,被認 為疋於所揭不之主題範轉之内。
S 18 201239633 【圖武簡單說明】 第1圖展示依據本發明一實施例之處理器的方塊圖; 第2圖展示依據本發明一實施例之樣本程式碼; 第3圖展示依據本發明一實施例之共享指標的映圖; 第4圖展示依據本發明一實施例之樣本程式碼; 第5圖展示依據本發明一實施例之樣本程式碼; 第6圖展示依據本發明一實施例之樣本程式碼; 第7圖展示依據本發明一實施例之樣本程式碼; 第8圖展示依據本發明一實施例之流程圖;以及 第9圖展示依據本發明一實施例用以實作此處所揭示 之方法的系統。 【主要元件符號說明】 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及時(ΠΤ)圖 310…共享區域 312.. .記憶體位址0x0 19 201239633 314.. .共享區域基本位址 316.. .共享區域指標p 320.. .執行時間常數cO.x 322.. .記憶體位址參數cO.y 330.. .記憶體區域u0 332.··指標ptrl
334.. .開始位址指標ptrO 336.. .指標 ptr2 800.. .共享指標實施例流程 810-840...共享指標流程步驟 900.. .系統 914.. .記憶體控制中枢(MCH) 917、922…點對點(PtP)界面 920.. .晶片組 930.. .記憶體 932.. .依電性記憶體 934、980...非依電性記憶體 940.. .顯示裝置 950、960...匯流排 972.. .匯流排橋 974.. .1.O 裝置 982.. .大量儲存裝置 984.. .鍵盤/滑鼠 986.. .網路界面
S 20

Claims (1)

  1. 201239633 七、申請專利範圍: ι 一種方法,其包括: 在一第一處理核心以及一第二處理核心之間共享 。己憶體位置之一指標,其中該記憶體位置存在於可藉 由該第一以及該第二處理核心兩者存取之一共享記憶 體區域。 2. 如申請專利範圍第丨項之方法,進—步包括下列步驟: 藉由該第一處理核心定義對於該記憶體位置之指標; 藉由該第—處理核^決定包括該記憶體位置之一 基本记憶體位址的—第一整數常數;並且 藉由泫第一處理核心決定包括對於該記憶體位置 之指標的一記憶體位址之一數值的一第二整數參數。 3. 如申請專利範圍第1之方法,其中在該第—處理核心以 及β亥第_處理核心之間共享該記憶體位置之指標包括: 藉由該第二處理核心至少部分地以該第一整數常 數以及该第二整數參數為基礎而定義__第二指標,其中 對於該記憶體位置之指標以及該第二指標指示至一相 同的實體記憶體位置。 4. 如申請專利範圍第3項之方法,其中藉由該第二處理核 〜至J部分地以該第—整數常數以及該第二整數參數 為基礎而疋義―第二指標包括下列步驟: 至少部分地以該第二處理核心之一虛擬記憶體位 置的另-基本記憶體位址以及該第一整數常數為基礎 而定義一第三指標;並且 21 201239633 至少部分地以該第三指標以及該第二整數參數為 基礎而定義該第二指標。 .如申响專利範圍第1項之方法,其中該第一處理核心是 —中央處理單元(CPU)並且該第二處理核心是一圖形處 理單元(GPU)。 6·如申請專利範圍第4項之方法,其中該第二處理核心之 該第二指標以及該第三指標是關聯於一結合列表。 如申明專利範圍第1項之方法,其中該等第—以及第二 處理核〜是至少部分地遵從開放式電腦語言(Open Computmg Language)、低階虛擬機器(LLVM)中介語言 (IL)、以及〇enX JIT IL之一者。 8· —種設備,其包括: 複數個非同質處理核心; 輕合於該等複數個非同質處理核心各者之一記憶 體;以及 藉由。亥等複數個非同質處理核心以促進對於該記 憶體中之-共享區域的一位置之一指標共享之邏輯。 9.如申請專利範圍第8項之設備’其中該等複數個非同質 j理核心之-第__處理核心具有關聯於該共享區域之 第虛擬映圖’並且其中該等複數個非同質處理核心 之第一處理核心具有關聯於該共享區域之-第二虛 擬映圖。 10·如申請專利範圍第9項之設備,其中該邏輯是進一步進 行下列步驟: S 22 201239633 決定對於該第一虛擬映圖之一第一指標; 決定包括該第—虛擬映圖之一基本記憶體位址的 —第一偏移量;並且 決定包括對於該第一虛擬映圖之該第一指標的一 S己憶體位址之一數值的一第二偏移量。 11.如申明專利範圍第8項之設備’其中藉由該等複數個非 同質處理核心以促進對於該記憶體中之一共享區域的 —位置之一指標共享之該邏輯是用於: 至少部分地以該等第一以及第二偏移量為基礎而 疋義對於該第二虛擬映圖之一第二指標,其中該第一指 t以及a玄第一指標參考在該共享區域中一相同的實體 記憶體位置。 12·如申請專利範圍第叫之設備,其中至少部分地以該等 第一以及第二偏移量為基礎而定義對於該第二虛擬映 圖之第二指標之該邏輯是用於: 至少部分地以該第二虛擬映圖之另一基本記憶體 位址以及該第-偏移f為基礎而定義—第三指標;並且 至少部分地以該第三指;f票以及該第二偏移量為基 礎而定義該第二指標。 申叫專利範圍第11項之設備,其中該等複數個非同質 處理核•。包括至少—中央處理單元(CPU)以及至少一圖 形處理單元(GPU)。 14.如申請專利㈣第12項之設備,其中該第二指標以及該 第二指標是關聯於一結合列表。 23 201239633 15. 如申請專利範圍第8項之設備,其中該等複數個非同質 處理核心是至少部分地遵從開放式電腦語言(Open Computing Language)、低階虛擬機器(LLVM)中介語言 (IL)、以及GenX JIT IL之一者。 16. —種具有指令被儲存於其上之機器可讀取儲存媒體,當 該等指令被執行時,導致一處理器進行下面的方法: 在一第一處理核心以及一第二處理核心之間共享 一記憶體位置之一指標,其中該記憶體位置存在於可藉 由該第一以及該第二處理核心兩者存取之一共享記憶 體區域。 17. 如申請專利範圍第16項之媒體,進一步包括: 藉由該第一處理核心定義對於該記憶體位置之指標; 藉由該第一處理核心決定包括該記憶體位置之一 基本記憶體位址的一第一偏移量;並且 藉由該第一處理核心決定包括對於該記憶體位置 之指標的一記憶體位址之一數值的一第二偏移量。 18. 如申請專利範圍第16項之媒體,其中在該第一處理核心以 及該第二處理核心之間共享該記憶體位置之指標包括: 藉由該第二處理核心至少部分地以該等第一以及 第二偏移量為基礎而定義一第二指標,其中對於該記憶 體位置之指標以及該第二指標指示至一相同的實體記 憶體位置。 19. 如申請專利範圍第18項之媒體,其中藉由該第二處理核 心至少部分地以該等第一以及第二偏移量為基礎而定 S 24 201239633 義一第二指標包括: 至少部分地以該第二處理核心之一虛擬記憶體位 置的另一基本記憶體位址以及該第一偏移量為基礎而 定義一第三指標;並且 至少部分地以該第三指標以及該第二偏移量為基 礎而定義該第二指標。 20. 如申請專利範圍第16項之媒體,其中該第一處理核心是 一中央處理單元(CPU)並且該第二處理核心是一圖形處 理單元(GPU)。 21. 如申請專利範圍第19項之媒體,其中該第二處理核心之 該第二指標以及該第三指標是關聯於一結合列表。 22. 如申請專利範圍第16項之媒體,其中該等第一以及第二 處理核心是至少部分地遵從公開電腦語言(Open Computing Language)、低階虛擬機器(LLVM)中介語言 (IL)、以及 GenX JITIL之一者。 23. 如申請專利範圍第16項之媒體,其中該指標是以適用於 該第二處理核心之格式被儲存。 25
TW100147153A 2011-03-29 2011-12-19 用以促進在異質平台中共享指標之方法及設備 TWI471730B (zh)

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 true TW201239633A (en) 2012-10-01
TWI471730B 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)

* Cited by examiner, † Cited by third party
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
US9009686B2 (en) * 2011-11-07 2015-04-14 Nvidia Corporation Algorithm for 64-bit address mode optimization
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
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
US10346941B2 (en) 2014-05-30 2019-07-09 Apple Inc. System and method for unified application programming interface and model
CN104484266A (zh) * 2014-11-07 2015-04-01 上海交通大学 一种锁使用模式自动化静态分析系统
DE102016106939A1 (de) 2015-04-17 2016-10-20 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

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5315707A (en) 1992-01-10 1994-05-24 Digital Equipment Corporation Multiprocessor buffer system
US6289432B1 (en) * 1998-03-25 2001-09-11 International Business Machines Corporation Sharing segments of storage by enabling the sharing of page tables
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
US6822654B1 (en) * 2001-12-31 2004-11-23 Apple Computer, Inc. Memory controller chipset
US7321958B2 (en) * 2003-10-30 2008-01-22 International Business Machines Corporation System and method for sharing memory by heterogeneous processors
US20080109795A1 (en) * 2006-11-02 2008-05-08 Nvidia Corporation C/c++ language extensions for general-purpose graphics processing unit
US7929707B1 (en) * 2007-09-06 2011-04-19 Elcomsoft Co. Ltd. Use of graphics processors as parallel math co-processors for password recovery
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
US8531471B2 (en) * 2008-11-13 2013-09-10 Intel Corporation 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

Also Published As

Publication number Publication date
EP2691852A1 (en) 2014-02-05
US20140071144A1 (en) 2014-03-13
CN102959504A (zh) 2013-03-06
KR20120123127A (ko) 2012-11-07
CN102959504B (zh) 2014-12-03
WO2012134557A1 (en) 2012-10-04
US9606919B2 (en) 2017-03-28
US8862831B2 (en) 2014-10-14
US20150186273A1 (en) 2015-07-02
US20120254497A1 (en) 2012-10-04
TWI471730B (zh) 2015-02-01
US8566537B2 (en) 2013-10-22
KR101253012B1 (ko) 2013-04-16
EP2691852A4 (en) 2014-12-31

Similar Documents

Publication Publication Date Title
TW201239633A (en) Method and apparatus to facilitate shared pointers in a heterogeneous platform
TWI530793B (zh) 用以改善整體非通透橋接裝置之操作的方法與系統
CN110647291A (zh) 硬件辅助的页面调度机制
CN107111484B (zh) 四维莫顿坐标转换处理器、方法、系统和指令
US10635447B2 (en) Scatter reduction instruction
JP2013515983A (ja) 仮想化環境においてi/o処理を行う方法および装置
JP2017062845A (ja) 方法及び装置
CN113900966B (zh) 一种基于Cache的访存方法及装置
CN113272889A (zh) 基于用户活动调整显示刷新率
TW201640331A (zh) 用於向量索引載入和儲存之方法和設備
JP6998991B2 (ja) 情報処理用方法及び装置
CN113474745A (zh) 在处理器中执行软扼制和硬扼制
TW201643695A (zh) 用於執行向量位元反轉和交叉的方法和設備
TW201732544A (zh) 聚合分散指令
CN110321166A (zh) 处理器中的基于一致性操作的分支预测
TWI478053B (zh) 用於將函式指標映對到裝置碼的方法和系統
US20210240609A1 (en) Reservation architecture for overcommitted memory
CN111752745A (zh) 对码字中相邻两位错误的检测
CN115048326A (zh) 用于管理总线通信协议的选择
CN113656331A (zh) 基于高低位的确定访问地址的方法和装置
JP5794133B2 (ja) データ処理装置、変換装置、データ処理システム、変換方法、および変換プログラム
CN115297169B (zh) 数据处理方法、装置、电子设备及介质
JP5753603B2 (ja) データ要素内のビットをゼロ化するためのシステム、装置、および方法
CN116303210A (zh) 用于计算机处理器的寄存器接口
JP5662567B2 (ja) 圧縮コードの高速実行のための装置、方法、コンピューティングシステム、プログラム

Legal Events

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