TW201246068A - Methods and systems for mapping a function pointer to the device code - Google Patents

Methods and systems for mapping a function pointer to the device code Download PDF

Info

Publication number
TW201246068A
TW201246068A TW101112794A TW101112794A TW201246068A TW 201246068 A TW201246068 A TW 201246068A TW 101112794 A TW101112794 A TW 101112794A TW 101112794 A TW101112794 A TW 101112794A TW 201246068 A TW201246068 A TW 201246068A
Authority
TW
Taiwan
Prior art keywords
code
processing device
function
introduction
processing
Prior art date
Application number
TW101112794A
Other languages
English (en)
Other versions
TWI478053B (zh
Inventor
Yang Ni
Ali-Reza Adl-Tabatabai
Tatiana Shpeisman
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 TW201246068A publication Critical patent/TW201246068A/zh
Application granted granted Critical
Publication of TWI478053B publication Critical patent/TWI478053B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Description

201246068 六、發明說明: c發明戶斤屬之技術々真域】 發明領域 本發明之實施例係有關碼之編譯的領域,更特別係有 關針對要在異質裝置上執行所做的編譯。
L· ^tr 'J 發明背景 現代的電腦系統可具有大範圍的各式各樣的組態。電 腦系統的-個重要部件是處理器’亦被稱為是中央處理單 元(central processing unit, CPU )。虚神扭私 ^ 处理益執行來自於軟體 程式的指令,這是-種被稱為是「運行」此程式的處理程 序。雖然典型上’所有的處理㈣執行這種基本任務,伸 係有種類繁多的不同處理裝置(例如,圖形處理器)可從 許多不同製造商處購得。這些不同處理敦置,特別是來自 於不同製造商的那些,係具有不⑽Μ設計(亦=為處 理器「架構」),並且因此係、以不同方式操作。雖然在兩個 不同處理裝置上運行-個程式所得到的結果應該是一樣 的,但處理裝置獲得此結果的方式及其速度典型上是有所 差異的。 對於要被執行於異質處理裝置上的應用程式之研發仍 然是-項具有挑戰性的任務。編譯器可呈現具有可執行格 式(例如,胖二進制)的一個編程模型,然而,其卻需要 對鏈接器/載入器作特定改變來產生碼。 C發明内容】 201246068 發明概要 依據本發明之一實施例,係特地提出一種方法,其包含 下列步驟:識別可由二或更多個處理裝置執行的一第一函 式;產生包括一第一碼和一第二碼的一第一多個碼,其中 該第一碼對應於一第一處理裝置,且該第二碼對應於一第 二處理裝置,該第二處理裝置在架構上與該第一處理裝置 不同,以及將S玄第一碼儲存在一個位元組字_中,使得該 第二碼在該第一函式將由該第二處理裝置執行時是可檢索 的。 依據本發明之一實施例,係特地提出一種包含有電腦可 讀儲存媒體的製造物品,該電腦可讀儲存媒體包括有將指 V儲存在内之純’該等指令在由—個㈣取料會致使 該機器進行包含下列步_—財法:朗可由二或更多 個處理裝置執行的一第一函式;產生包括一第一碼和一第 二碼的-第-多個碼’纟中該第—碼對應於—第_處理裝 置’且該第二碼對應於—第二處縣置,該第二處理裝置 在架構上與該第—處理裝置不同;以及將該第二碼儲存、在 -個位元組字串中,使得該第二碼在該第—函式將由該第 一處理裝置執行時是可檢索的。 只奶π货'将地提出一種用於執行程式 的系統,其包含:-第—處理裝置;—第二處理裝置;以 及記憶體,用以儲存—個程式,該程式包括可由該第-處 理裝置和該第二處理裝置在運行時間中執行的—第一函 式,其中該第-函式與—個導言相關聯,該導言含有一第 201246068 一運算元和一第二運算元,其中該第一運算元是一個獨特 碼型樣,且該第二運算元是一個指標,該指標支援對一個 碼之檢索以供用於在該第二處理單元上執行該第一函式。 圖式簡單說明 從下面所提供的詳細說明中、以及從針對本發明之各 種實施例的隨附圖式中,將能更完整地瞭解本發明的數個 實施例,然而,不應由於這些隨附圖式而將本發明限制於 這些特定實施例中,這些隨附圖式只是為作說明和理解所 用。 第1圖是依據本發明之一實施例的一個運算系統。 第2A圖是一個處理程序的一個實施例之流程圖,用以 進行程式編譯和將函式指標映對至裝置碼。 第2B圖是一個處理程序的一個實施例之流程圖,用以 執行可執行於數個異質處理裝置上的一個函式。 第3圖例示配合本發明之一實施例使用的一個電腦系 統。 第4圖例示配合本發明之一實施例使用的一個點對點 電腦系統。 I:實施方式3 較佳實施例之詳細說明 介紹數種用於將函式指標映對至裝置碼的方法。在一 個實施例中,一種方法包括識別可由處理裝置執行的一個 帶註函式。此方法包括產生碼,此碼包括對應於第一處理 裝置的第一碼及對應於第二處理裝置的第二碼。此第二處 201246068 理裝置在架構上與第一處理裝置不同。此方法進一步包括 將第二碼儲存在一個位元組字串中,使得第二碼在此帶註 函式將由第二處理裝置執行時是可檢索的。 在後文之說明中,係陳述許多細節,以提供對本發明 之數個實施例的更為通盤的解說。然而,對於熟於此技者 而言,會可明顯看出,本發明的數個實施例係可在不具有 這些特定細節的情況下實行。在一些其他事例中,係以方 塊圖形式而非詳細地示出習知的結構和裝置,以避免對本 發明之實施例造成混淆。 下文中之詳細說明的一些部份係以演算法和在一個電 腦記憶體内之資料位元上之操作的符號表示型態來陳述。 這些演算法描述及在資料位元上的操作是熟於資料處理技 藝者所用以藉最有效地將其作品之實質内容傳達給其他熟 於此技藝者知悉的媒介。於此,且一般而言,一個演算法 被認為是由數個步驟組成的導向一個所欲結果的一個自相 容序列。這些步驟是要求對物理量作實體操控的步驟。雖 然並非必然,但通常這些量係採取能夠被儲存、轉移、組 合、比較和做其他操控的電氣式或磁性訊號的形式。將這 些信號指涉為位元、數值、元件、符號、文字、詞語、數 字或其他諸如此類者,已經多次被證明是很便利的,主要 是因為普遍使用的緣故。 然而,應謹記在心,所有的這些和其他類似的詞語係 要與適當的物理量相關聯,並且只是被施加到這些量上的 便利標籤而已。除非於下文之論述中有明確地特別陳述其 201246068 他情況,否則應可識出,在 理」或「運算亦「<狄 王文中,使用像是「處 諸如此類的」或如」或其他 子運算穿置”曰"個電腦系統或其他類似電 中的:=和將在此電梅系統之暫存器和記憶體 =為物理(電子)量之f料轉換成被 馮在此專電腦系統 體、發ma 或其他此類資訊儲存 k或顯示裝置中之物理|1仙次』丨、 理程序。 物^的其他資料)的動作和處 =發_數個實施例亦錢於用於進行本文中之操作 赤:曰。—些設備可係針對所需要的目的而被特別建構, S疋’其可包含有一個一般用途電腦,此 可被_性作動、或由儲存在此電腦中的一個電:: 這樣的4固電月植式可係儲存在一個電腦可讀儲存媒 體中’例如但^受限於’任何麵的磁碟,包錄式磁碟、 光學碟片、CD-ROM、DVD-ROM、和磁光碟、唯讀記憶體 (read-only memory,ROM)、隨機存取記憶體(rand〇m access memory, RAM)、EPROM、EEPROM、NVRAM、磁 性或光學卡、或任何類型的適於儲存電子指令並各輛接至 一個電腦系統匯流排之媒體。 於本文中所呈現的演算法和顯示晝面並不固有地與任 何特定電腦或其他設備有關。係可配合依據本文中之教示 的程式而使用各種一般用途系統’或者是,可證明建構更 為特化的用於執行所需方法步驟的設備是很便利的。在下 文之說明中會出現對各式各樣的這些系統而言所需的結 201246068 構。此外,本發明的數個實施例並沒有配合任何特定程式 設計語言來說明。會可識出,係可使用各式各樣的程式設 計語言來實施如於本文中所說明的本發明之教示。 一個機器可讀媒體包括任何用於儲存或發送為機器 (例如,電腦)可讀之形式之資訊的機構。例如,一個機 器可讀媒體包括唯讀記憶體(「ROM」);隨機存取記憶體 (「RAM」);磁碟儲存媒體;光學儲存媒體;快閃記憶體裝 置等等。 於本文中所敘述的方法和設備是用於將函式指標映對 至裝置碼。此方法和設備主要是相關於多核心處理器電腦 系統而作論述。然而,此用於映對函式指標之方法並不如 此受限,因為係可將其實施在任何積體電路裝置或系統(例 如手機、個人數位助理、嵌入式控制器、行動平臺、桌上 型平臺、和伺服器平臺)中或配合任何積體電路裝置或系 統實施,以及連同其他資源(例如硬體/軟體緒)實施。 簡介 介紹數種用於將函式指標映對至裝置碼的方法。在一 個實施例中,一種方法包括識別可由處理裝置執行的一個 帶註函式。此方法包括產生碼,此碼包括對應於第一處理 裝置的第一碼及對應於第二處理裝置的第二碼。此第二處 理裝置在架構上與第一處理裝置不同。此方法進一步包括 將第二碼儲存在一個位元組字串中,使得第二碼在此帶註 函式將由第二處理裝置執行時是可檢索的。 第1圖是依據本發明之一實施例的一個運算系統。許多 201246068 有關部件’例如匯流排和週邊設備’並未被示出,以避免 混淆本發明。請參考第1圖,電腦系統1〇2包含中央處理單 元(CPU) 106、處理裝置1〇7、記憶體1〇8、碼1〇4、編譯 器110、碼最佳化器112和目標碼114。 在一個實施例中,處理裝置1〇7係與CPU 106 —起整合 在一個晶片中。在一個實施例中,處理裝置107和CPU 106 是離散的裝置。在一個實施例中,處理裝置1〇7亦是可操作 來支援來自CPU 106的一些處理工作量的一個處理裝置。在 一個實施例中,處理裝置107包括數個處理裝置(例如,一 個處理器、一個圖形處理、數個數位信號處理單元、和一 個微控制器)。 在一個實施例中’處理裝置107是一個光學裝置。CPU 106將一個程式編譯’以由具有二或更多個異質處理裝置的 另一個電腦系統執行。在一個實施例中,處理裝置107在架 構上與CPU 106不同。因此’用於在處理裝置1〇7上執行的 碼與用於在CPU 106上執行的碼不同。 在一個實施例中,電腦系統1〇2是由一個程式設計師或 軟體研發員使用,以創造碼104。在一個實施例中’碼1〇4 包含以高階電腦語言(包括物件導向和其他語言,例如 FORTRAN、java、C++等等)表示的程式敘述。電腦系統 102包括一或多個處理器106和記憶體1〇8,記憶體108中的 程式被CPU 106載入和執行。記憶體1〇8包括編譯器110,用 以將碼104翻譯成可執行目標碼114。編譯器110包括由CPU 106執行的碼最佳化器112。 201246068 在一個貫施例中,編譯器Π〇針對被對在複數個目標裝 置上之執行作標註的函式進行碼之產生。編譯器丨職得能 夠將CPU側的函式指標映對至針對不為cpu (例如處理 裝置107)的另-個處理裝置所產生的碼。—個cpu側函式 指標是在只基於CPU 1〇6作執行時,用在正規碼(reguUr code)中的一個函式指標。在—個實施例中,對函式指標 的映對使得提供應用程式編程界面( programming interface,API )的編程模型能夠取用cpu側函 式指標並在另一個非CPU裝置上執行此函式。 在一個實施例中,編譯器110檢測/識別被標註為可能 在一或多個處理裝置(例如,一個GPU)上執行的—個函 式。例如,視排程和負載平衡因數而定,一個帶註函式因 而係可執行於CPU 106或一或多個處理裝置上。 在一個實施例中,針對CPU執行所產生的碼於本文中 被稱為是CPU二進制、CPU可執行、或CPU碼。在—個實施 例中,針對其他處理裝置所產生的碼於本文中被稱為是裝 置二進制或裝置碼。例如,針對一個GPU而產生的碼於本 文中被稱為是GPU二進制或GPU碼。 在一個實施例中’針對各個帶註函式,編譯器11〇產生 一個裝置碼,並將此裝置碼儲存為在一個陣列中的一個位 元組字串。編譯器110在編譯當中增添此陣列。此陣列對使 用者而言是不可見的。在一個實施例中,此陣列被如下定 義.「static char deviceCode〈module—suffix〉」,其中 module一suffix是由編譯器n 〇產生的一個特定模組(編譯單 10 ⑧ 201246068 元)尾綴。 在一個實施例中,針對一個模組之所有帶註函式的碼 被儲存在-個陣列中^這些碼是由—個特殊位元組序列所 定界。編譯器110如常產生供用於CPU執行的碼(CPU二進 制)。除了這個,針對各個帶註函式,編譯器uo還產生一 個導έ (於本文中亦稱為pr〇i〇g。例如,針對一個帶註函式 「foo」,所產生的碼係如下示於表1中。 foo_$GENx: mov [Reserved-Location], <p〇inter to the device code array> foo:..... 表1碼範例 在一個實施例中,標籤f00 (即,第1圖中的f〇〇 13 i ) 指出針對函式「foo」所產生的一個正規CPU碼的開端。 foo_$GENX (請見第1圖中的121 )指出針對函式「f〇〇」所 產生的導言’因為此函式已針對於異質處理裝置上之執行 而被標註。 在一個實施例中,例如,此導言的第一部分是一個「移 動(move)」指令(請見第1圖中之122)。第二個運算元是 指向在裝置碼陣列中的針對此函式「f00」之裝置碼(例如, GPU碼)之開端的一個指標(請見第1圖中之124)。 在一個實施例中,此導言的第一個運算元(請見第丄圖 中之123 )(其亦被稱為「終點」)是一個受保留記憶體位 置。例如’在運行時間中,CPU 106接收到要被傳遞以在其 201246068 他裝置上執行的一個函式指標,CPU 1〇6以一個偏移量減少 此函式指標。在一個實施例中,此偏移量等於導言之長度。 在一個實施例中,CPU 106檢測/檢查此導言中的獨特 碼型樣。由於使用者不能取用(使用者看不見)受保留位 置,故在此導言中的「移動指令」是獨特的。例如,若CPU 106在運行時間中發現此獨特碼型樣,則cPu 1〇6擷取第二 個運算元並使用第二個運算元作為一個指標,以從裝置碼 陣列中檢索此函式之裝置碼。 在一個實施例中,在針對一個函式檢索裝置碼之後, 此裝置碼被傳送到一個裝置驅動器,以供在處理裝置丨〇7 (例如,一個GPU)上執行。 在一個實施例中,編譯器106是與至非同步使用者階任 務排程程式館(例如’英特爾建緒方塊(Intd Thread
Building Blocks, TBB)之C基礎(C-based)異質CPU-GPU 編程延伸連同使用。在另一個實施例中,編譯器〗〇6是與 OpenMP延伸或其他並行編程模型連同使用,以供用於將運 算卸載至另一個處理裝置。 在一個實施例中,例如,此異質編程模型提供一個函 式:「offload(func,env,num_iterati〇ns)」,其使得函式 (「func」)能夠在一個處理裝置(例如,gpu )上執行,但 並不保證此函式會是在此處理裝置上被執行。在運行時間 中,一個運算系統動態地決定是否要在此處理裝置或Cpu 106上執行此函式。在一個實施例中,例如,一個運算系統 基於GPU之負載、或此函式是否適於執行於此gpu上、或 12 (S) 201246068 前述二者’而判定是否要在此GPU上執行。 實施射,編譯器脳產生有效#&指標至 U置碼之映對的碼。在—個實施例中,所產生的裝置 =,規資料節中。裝置驅動器能夠剖析和綱 的裝置碼。並不需要對鏈接器/載入器作 得能夠在非CPU處理裝置上作執行。 文反术便 於上文中所述的方法和設備主要是有關於GPU而論 述。然而,這些方法和設備並孙此受限,㈣係可將其 實施在任城《置(包括_處理器、數⑽號處理單 元、微控制器'或前述各項之任何組合)中或配合任何處 理裝置實施。 在一個實施例中,電腦系統102包含一個電腦工作站、 膝Μ㈣'桌上型_'伺服器、大型電腦或任何其他 適於發展碼刚的運算裝置。在—個實施例中,cpu 106包 含-或多辦核理單元。記憶體⑽包含練式載入到内 的一或多個記憶體裝置。 第2A圖疋-個處理程序的—個實施例的流程圖,用以 進行程式編譯和將函式純映對至裝置碼。此處理程序是 由處理邏輯進行’此處理邏輯可包含硬體(電路、專用邏 輯等等)、軟體(例如運行於—般用途電腦系統或專用機器 上的軟體)、或硬體與軟體之組合。在一個實施射,此處 理程序是連同-個編譯器(例如’關於P圖之編譯器11〇) 而進行。在-個實施例中,此處理程序是由關於第4圖之電 腦系統進行。 13 201246068 請參考第2A圖,在一個實施例中,處理邏輯從識別帶 註函式開始(處理程序方塊601)。此帶註函式可被執行在 一個CPU或其他非CPU裝置(例如,GPU)上。在一個實 施例中’處理邏輯識別可由二或更多個處理裝置執行的一 個帶註函式。此帶註函式可由數個異質裝置執行,而無須 對鏈接器和載入器作修改。處理邏輯產生一個導言,此導 言係用於在運行時間中將函式指標映對至裝置碼。 在一個實施例中,處理邏輯產生供用於不同處理裝置 的二或更多個碼(處理程序方塊6〇2 )。處理邏輯產生多個 碼’包括一個CPU碼和一個非CPU裝置碼。此裝置碼係用 於在架構上與CPU不同的其他處理裝置上之執行。 在一個實施例中,處理邏輯產生一個導言,其包括一 第一運算元,這是一個獨特的型樣,用以指出第二運算元 在此導言中之存在。在—個實施例中,此第二運算元是一 個指標’指向儲存在裝置碼陣列中的一個位元組字串。此 位元組字串會在運行時間中被檢索,並被傳送至處理裝置 以作在此處理裝置上之執行。在一個實施例中,此裝置碼 是在無使用者涉入下產生。 在一個實施例中,處理邏輯如於上文中所述地將裝置 碼儲存在一個位元組字串中(處理程序方塊603 )。例如, 此位元組Μ被儲存在包括由—觸特位元㈣列所定界 之其他位元組字串的一個陣列中。 在-個實施例中,多個裝置碼在編譯時間中被產生。 此帶註函式在編譯時間巾並不與特定目標裝置㈣。用來 14 (S) 201246068 執行此帶註函式的處理裝置是在運行時間中被判定。 第2B圖是一個處理程序的一個實施例之流程圖,用以 執行可執行於數個異質處理裝置上的一個函式。此處理程 序是由處理邏輯進行,此處理邏輯可包含硬體(電路、專 用邏輯等等)、軟體(例如運行於一般用途電腦系統或專用 機器上的軟體)、或硬體與軟體之組合。在一個實施例中, 此處理程序是連同一個電腦(例如,關於第1圖之電腦系統) 而進行。在一個實施例中,此處理程序是由關於第4圖之電 腦系統進行。 請參考第2B圖,在一個實施例中,處理邏輯從接收與 一個函式相關聯的一個函式指標開始,此函式可執行於二 或更多個異質處理裝置上。 在一個實施例中,處理邏輯以一個偏移量減少一個函 式指標值。例如,此偏移量等於導言之長度。處理邏輯基 於經減少的函式指標值而檢索此函式之導言(處理程序方 塊 611 )。 在一個實施例中,處理邏輯檢測一個獨特碼形樣(處 理程序方塊612)。處理邏輯讀取導言並識別在此導言中的 獨特碼型樣。處理邏輯基於此導言的第二運算元而從一個 陣列中檢索裝置碼。此導言之第二運算元是一個指標,指 向儲存在一個陣列中的裝置碼。 在一個實施例中,處理邏輯基於導言中的一個指標而 檢索針對此處理裝置的一個裝置碼(處理程序方塊613)。 處理邏輯將此裝置碼傳送至對應處理裝置驅動器。此函式 15 201246068 因而藉由使用此裝置碼而被執行於處理裝置上。 本發明的數個實施例係可被實施在各式各樣的電子裝 置和邏輯電財。此外,包括有本發明之實施例的裝置或‘ 電路係可被包括在各式各樣的電⑽、統巾。本翻的'實施 例亦可被包括在其他電腦系統拓樸和架構中。 例如’第3圖例示出用於配合本發明的—個實施例而使 用的一個電腦系統。處理器705從第1級(leveU,Ll)快取 記憶體706、第2級(level 2, L2)快取記憶體71〇和主記憶 體715取用資料。在本發明的其他數個實施例中,快取記憶 體706可為一個多級快取記憶體包含一個u快取,連同其他 記憶體,例如在一個電腦系統記憶體階層中的—個匕2快 取,並且快取記憶體710為接下來的較低級快取記憶體,例 如L3快取或更多的多級快取。此外,在其他數個實施例中, 此電腦系統可使快取記憶體7丨〇作為對多於一個處理器核 心的一個共享快取。 處理器705可具有任何數量的處理核心。然而,本發明 的其他數個實施例可係實施在此系統的其他裝置内,或是 以硬體、軟體或硬體和軟體的某種組合分散在此系統各處。 在一個實施例中’圖形控制器708係與處理器705—起 整合在一個晶片中。在其他數個實施例中,圖形控制器7〇8 和處理器705是離散的裝置。在一個實施例中,圖形控制器 708亦為可操作來支援來自於處理器705的一些處理工作負 載的一個處理裝置《在一個實施例中,圖形控制器7〇8包括 一個處理裝置(例如’一個處理器、一個圖形處理器、數 201246068 個數位信號處理單元、和一個微控制器)。 主記憶體715可係實施在各種記憶源中,例如動態隨機 存取 §己憶體(dynamic random-access memory, DRAM)、硬 碟驅動器(hard disk drive,HDD) 720、基於NVRAM技術 的固態硬碟725、或經由網路介面730或經由含有各種儲存 裝置和技術之無線介面7 40的位在此電腦系統遠端的一個 記憶源。快取記憶體可係位在處理器内抑或是在處理器附 近,例如在處理器之本地匯流排707上。此外,快取記憶體 可含有相對較快的記憶體胞元,例如六電晶體 (six-transistor,6T)胞元,或其他具有約略相等或更快之 存取速度的記憶體胞元。 然而’本發明的其他數個實施例係可存在於第3圖之系 統内的其他電路、邏輯單元或裝置中。此外,本發明的其 他數個實施例係可分散在例示於第3圖中的數個電路、邏輯 單元或裝置當中。 同樣地’本發明之至少一個實施例係可實施在一個點 對點電腦系統中。例如,第4圖示出被配置成一種點對點 (point-to-point,PtP)組態的一個電腦系統。尤其是,第4 圖示出一個系統’當中’處理器、記憶體、和輸入/輸出裝 置係藉由多個點對點介面互連。 第4圖之系統可亦包括數個處理器,其中只有兩個處理 器870、880被示出以求簡明。處理器87〇、880可各包括有 一個本地記憶體控制器集線器(memory controller hub, MCH) 81卜82卜用以與記憶體85〇、851連接。處理器870、 17 201246068 880可利用ptp介面電路、822經由一個點對點(ptP)介 面853交換資料。處理器870、880可利用點對點介面電路 813、823、860、861經由個別PtP介面830、831與一個晶片 組890交換資料》晶片組890可亦經由一個高效能圖形介面 862而與一個高效能圖形電路852交換資料。本發明的數個 實施例可係耦接至電腦匯流排(834或835),或在晶片組89〇 内’或在資料儲存體875内,或在第4圖之記憶體85〇内。 然而,本發明的其他數個實施例係可存在於第5圖之系 統内的其他電路、邏輯單元或裝置中。此外,本發明的數 個其他實施例係可分散在例示於第4圖中的數個電路、邏輯 單元或裝置當中。 本發明並不受限於所說明的這些實施例,而係可藉由 落於後附巾4專利範H之精神與範射的修改體與變異體 實打。例如,應可識出,本發明係可應用於對於所有類型 的半導體積體電路(integrated circuit,1C)晶片之使用。這 些1C晶片的範例包括但不受限於,處理器、控制器、晶片 、.且牛可規劃邏輯(I車歹丨!( pr〇grammable 1〇扣阶吵, PLA)'記憶體晶片、網路晶片、或其他諸如此類者。此外, 應可識出’可&已給出示範大小/模型/數值/範圍’雖然本 發明的實施例並不受限於那些。隨著製造技術 (例如,微 影術)與時俱進,係預期有更小尺寸的裝置能夠被製造出 來。 有鑑於在已閱讀前面這些說明之後,對熟於此技者而 。本發明的❹變異體和修改體將無疑地會變得报明 18 201246068 ^ /應瞭解,以例示方式所示出和說明的任何特定實 二、無'己圖要被認為是具有限制性。因此,對各種實 J &肩知的指涉並非意欲要限制申請專利範圍之範疇, 月长項本身僅載述被認為是對本發明為必要之特徵。 【圖武簡單説明】 第1圖疋依據本發明之-實施例的一個運算系統。
〇 A 、—。、圖是—個處理程序的—個實施例之流程圖,用以 進盯程式編譯和將函式指標映對至裝置碼。 — 圖疋—個處理程序的—個實施例之流程圖,用以 執盯可執行於數個異質處理裝置上的-個函式。 第圖例示配合本發明之一實施例使用的一個電腦系 統。 第4圖例示配合本發明之一實施例使用的一個點對點 電腦系統。 【主要元件符號說明 601〜613...處理程序方塊 705、 870、880...處理器 706、 710·.·快取記憶體 707· .·匯流排 708…圖形控制器 715…主記憶體 720…硬碟驅動器(hdd) 725…固,%;硬碟 730…網路介面 102…系統 104…碼 106.. .中央處理單元(CPU) 107…處理裝置 108…記憶體 110.. .編譯器 112·.·碼最佳化器 114…目標碼 131.. .f〇〇 19 201246068 740...無線介面 810、 820...處理器核心 811、 821…記憶體控制器集線 器(MCH) 812、 813、822、823、860、 861...點對點(PtP)介面 電路 830、831、853…點對點(PtP) 介面 834、835...電腦匯流排 850、851...記憶體 852.. .高效能圖形電路 862.. .高效能圖形介面 863…介面(I/F) 870.. .匯流排橋 871…輸入/輸出(I/O)裝置 872…音訊輸入/輸出(I/O) 873.. .鍵盤/滑鼠 874.. .通訊裝置 875.. .資料儲存體 876. ··碼 890.. .晶片組
20

Claims (1)

  1. 201246068 七、申請專利範圍: 1. 一種方法,其包含下列步驟: 識別可由二或更多個處理裝置執行的一第一函式; 產生包括一第一碼和一第二碼的一第—多個碼,其 中該第一碼對應於一第一處理裝置,且該第二碼對應於 一第二處理裝置’該第二處理裝置在架構上與該第一處 理裝置不同;以及 將該第二碼儲存在一個位元組字串中,使得該第二 碼在該第一函式將由該第二處理裝置執行時是可檢索 的。 2. 如申請專利範圍第丨項之方法,其中產生該第二碼之步 驟進一步包含: 產生一個導δ,該導言包括一第一運算元,該第一 運算元為指出在該導言中之一第二運算元之存在的一 個獨特型樣。 3. 如申請專利範圍第旧之方法,其中產找第二碼之步 驟進一步包含: ;產生-個導言,該導言包括一第二運算元作為指向 該位元組字串的一個指標,其中該位元組字串將會在運 订時間被檢索並會被傳送至該第二處理裝置以供在該 第二處理裝置上執行所用。 4·如申請專利範圍第旧之方法,其中該第—處理裝置是 個中央處理單凡(CPU),且該第二處理裝置是—個 非CPU處理裝置。 21 201246068 5. 如申請專利範圍第# 存在-個陣列中,哕 / 〃该位元組字串被儲 定界的其他位元組Γ串括由—個獨特位元組序列所 6. 如申請專利範圍第i項之 產生/、進步包含下列步驟: ., ° °〆導吕係用於在該第—函式被 ::==r ㈠一 7. ::=_項之方法,其_-函式可由數 異錄置執订而無須對鏈接器或載人器作修改。 8. 如申請專利範圍第!項 用者涉入下產生。 其中碼是在無使 9·如申請專利範圍第旧之方法,其中該等第_多個碼是 在編譯時間巾產生,該第_函式在科㈣並不與 -個特定目標裝置相關聯,其中用於執行該第_函式的 處理裝置是在運行時間中被判定。 10· —種包含有電腦可讀儲存媒體的製造物品,該電腦可讀 儲存媒體包括有將指令儲存在内之資料,該等指令在由 一個機器取用時會致使該機器進行包含下列步驟的— 個方法: 識別可由二或更多個處理裝置執行的—第一函式; 產生包括一第一碼和一第二碼的一第—多個碼,其 中該第一碼對應於一第一處理裝置,且該第二碼對應於 一第二處理裝置,該第二處理裝置在架構上與該第一處 理裝置不同;以及
    22 2〇1246〇68 將該第二碼儲存在一個位元組字串中,使得該第二 碼在該第一函式將由該第二處理裝置執行時是可檢索 11. 如申請專利範圍第10項之物品’其中產生該第二碼之步 驟進一步包含: 產生一個導言,該導言包括一第一運算元,該第一 運算元為指出在該導言中之一第二運算元之存在的一 個獨特型樣。 12. 如申請專利範圍第1〇項之物品,其中產生該第二碼之步 驟進一步包含: 產生一個導言,該導言包括一第二運算元作為指向 該位元組字串的一個指標,其中該位元組字串將會在運 行時間被檢索並會被傳送至該第二處理裝置以供在該 第二處理裝置上執行所用。 步包含 如申請專利範圍第1G項之物&,其中該方法進一 下列步驟: 產生一個導言,
    —種用於執行程;切錢,其包含·· ’其包含: 一第一處理裝置; 一第二處理裝置;以及 ,以及
    二處理裝置在運行時間t執行的— 23 201246068 第函式,其中該第一函式與一個導言相關聯,該導言 ^有-第—運算元和一第二運算元其中該第—運算元 :一個獨特碼型樣,且該第二運算元是一個指標,該指 標支援對—個碼之檢索以供用於在該第二處理單元上 執行该第一函式。 15. 如申請專利範圍第14項之緒,其中該第—處理裝置和 該第二處理裝置在架構上不同,其中在運行時間中於不 同的處理j置上執行該第一函式所使用的將會是不同 的碼。 16. 如申請專利範圍第_之系統,其中該系統可操作來進 行下列步驟: 以該導言之長度來減少一個函式指標值; 讀取該導言,並識別該導言中之該獨特媽型樣·,以 及 基於該導言之該第二運算元而檢索該碼。 24 ⑧
TW101112794A 2011-04-22 2012-04-11 用於將函式指標映對到裝置碼的方法和系統 TWI478053B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/092,500 US8949777B2 (en) 2011-04-22 2011-04-22 Methods and systems for mapping a function pointer to the device code

Publications (2)

Publication Number Publication Date
TW201246068A true TW201246068A (en) 2012-11-16
TWI478053B TWI478053B (zh) 2015-03-21

Family

ID=47022258

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101112794A TWI478053B (zh) 2011-04-22 2012-04-11 用於將函式指標映對到裝置碼的方法和系統

Country Status (3)

Country Link
US (1) US8949777B2 (zh)
TW (1) TWI478053B (zh)
WO (1) WO2012145154A2 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11003464B2 (en) * 2012-04-19 2021-05-11 Microsoft Technology Licensing, Llc Control flow integrity enforcement at scale
US9329875B2 (en) * 2014-04-28 2016-05-03 International Business Machines Corporation Global entry point and local entry point for callee function
US9894185B2 (en) * 2014-12-16 2018-02-13 Software Ag System and method for condition-based application logic shifting between a client and a server
US11467812B2 (en) 2019-11-22 2022-10-11 Advanced Micro Devices, Inc. Compiler operations for heterogeneous code objects
US11256522B2 (en) * 2019-11-22 2022-02-22 Advanced Micro Devices, Inc. Loader and runtime operations for heterogeneous code objects
CN110740443A (zh) * 2019-12-05 2020-01-31 上海新微技术研发中心有限公司 用于低速率无线通信快速ota的无线通信装置

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8127121B2 (en) * 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US7111290B1 (en) * 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US6662356B1 (en) * 1999-06-30 2003-12-09 Microsoft Corporation Application program interface for transforming heterogeneous programs
US6754887B1 (en) * 1999-10-22 2004-06-22 International Business Machines Corporation Methods for implementing virtual bases with fixed offsets in object oriented applications
US6738967B1 (en) * 2000-03-14 2004-05-18 Microsoft Corporation Compiling for multiple virtual machines targeting different processor architectures
US20030088860A1 (en) * 2001-11-02 2003-05-08 Fu-Hwa Wang Compiler annotation for binary translation tools
JP3958662B2 (ja) * 2002-09-25 2007-08-15 松下電器産業株式会社 プロセッサ
US7243333B2 (en) 2002-10-24 2007-07-10 International Business Machines Corporation Method and apparatus for creating and executing integrated executables in a heterogeneous architecture
US7103881B2 (en) * 2002-12-10 2006-09-05 Intel Corporation Virtual machine to provide compiled code to processing elements embodied on a processor device
US20080127146A1 (en) * 2006-09-06 2008-05-29 Shih-Wei Liao System and method for generating object code for map-reduce idioms in multiprocessor systems
GB2443277B (en) * 2006-10-24 2011-05-18 Advanced Risc Mach Ltd Performing diagnostics operations upon an asymmetric multiprocessor apparatus
US8245206B2 (en) * 2006-12-18 2012-08-14 Oracle International Corporation System and method for efficient string concatenation in a virtual machine environment
US7941791B2 (en) 2007-04-13 2011-05-10 Perry Wang Programming environment for heterogeneous processor resource integration
US8024710B2 (en) * 2007-04-27 2011-09-20 Microsoft Corporation Unwinding unwindable code
US8531471B2 (en) 2008-11-13 2013-09-10 Intel Corporation Shared virtual memory
US8209664B2 (en) * 2009-03-18 2012-06-26 Microsoft Corporation High level programming extensions for distributed data parallel processing
US9354944B2 (en) 2009-07-27 2016-05-31 Advanced Micro Devices, Inc. Mapping processing logic having data-parallel threads across processors
US8719839B2 (en) * 2009-10-30 2014-05-06 Intel Corporation Two way communication support for heterogenous processors of a computer platform
CN103109286B (zh) * 2010-09-24 2016-08-24 英特尔公司 计算平台的异质处理器之间的共享虚拟存储器中的虚函数共享

Also Published As

Publication number Publication date
TWI478053B (zh) 2015-03-21
WO2012145154A3 (en) 2013-01-24
US20120272210A1 (en) 2012-10-25
WO2012145154A2 (en) 2012-10-26
US8949777B2 (en) 2015-02-03

Similar Documents

Publication Publication Date Title
US11221762B2 (en) Common platform for one-level memory architecture and two-level memory architecture
JP7284199B2 (ja) アルゴリズム整合、機能無効化、または性能制限による後方互換性
TWI644208B (zh) 藉由對硬體資源之限制實現的向後相容性
TWI550412B (zh) 在具有異質處理器之電腦平台中執行之方法和電腦平台
TWI567646B (zh) 容許一架構之編碼模組使用另一架構之程式庫模組的架構間相容性模組
US9424009B2 (en) Handling pointers in program code in a system that supports multiple address spaces
TWI733760B (zh) 記憶體複製指令、處理器、方法及系統
JP2015503161A (ja) ヘテロジニアス並列処理プラットフォームのためのソフトウェアライブラリ
TW201246068A (en) Methods and systems for mapping a function pointer to the device code
US20100161911A1 (en) Method and apparatus for mpi program optimization
TWI524185B (zh) 使用多重分頁表執行之技術
TW200931264A (en) Dynamic logical data channel assignment using channel bitmap
TW201337557A (zh) 索引化頁面位址之轉譯以降低在虛擬化環境中記憶體使用量的技術
KR20140039073A (ko) 기점 가상 머신으로부터 목적지 가상 머신으로의 동작 전송
US8935475B2 (en) Cache management for memory operations
CN105474183A (zh) 存储器管理
US20110276786A1 (en) Shared Prefetching to Reduce Execution Skew in Multi-Threaded Systems
US9323539B2 (en) Constructing persistent file system from scattered persistent regions
CN115114186A (zh) 用于多核架构的近数据加速的技术
BR102016012096A2 (pt) Hardware apparatus to improve performance of state dependent computers
TW202225978A (zh) 用於具有大的碼覆蓋區的工作負載的動態共享快取劃分
TWI512611B (zh) 執行緒層級推測中之動態資料同步化技術
KR102644951B1 (ko) 산술 논리 장치 레지스터 시퀀싱
JP2012113518A (ja) コンパイラ装置、コード生成方法、及びプログラム

Legal Events

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