TWI478053B - 用於將函式指標映對到裝置碼的方法和系統 - Google Patents
用於將函式指標映對到裝置碼的方法和系統 Download PDFInfo
- Publication number
- TWI478053B TWI478053B TW101112794A TW101112794A TWI478053B TW I478053 B TWI478053 B TW I478053B TW 101112794 A TW101112794 A TW 101112794A TW 101112794 A TW101112794 A TW 101112794A TW I478053 B TWI478053 B TW I478053B
- Authority
- TW
- Taiwan
- Prior art keywords
- code
- processing device
- function
- introduction
- processing
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/52—Binary 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
本發明之實施例係有關碼之編譯的領域,更特別係有關針對要在異質裝置上執行所做的編譯。
現代的電腦系統可具有大範圍的各式各樣的組態。電腦系統的一個重要部件是處理器,亦被稱為是中央處理單元(central processing unit,CPU)。處理器執行來自於軟體程式的指令,這是一種被稱為是「運行」此程式的處理程序。雖然典型上,所有的處理器都執行這種基本任務,但係有種類繁多的不同處理裝置(例如,圖形處理器)可從許多不同製造商處購得。這些不同處理裝置,特別是來自於不同製造商的那些,係具有不同的內部設計(亦稱為處理器「架構」),並且因此係以不同方式操作。雖然在兩個不同處理裝置上運行一個程式所得到的結果應該是一樣的,但處理裝置獲得此結果的方式及其速度典型上是有所差異的。
對於要被執行於異質處理裝置上的應用程式之研發仍然是一項具有挑戰性的任務。編譯器可呈現具有可執行格式(例如,胖二進制)的一個編程模型,然而,其卻需要對鏈接器/載入器作特定改變來產生碼。
依據本發明之一實施例,係特地提出一種方法,其包含下列步驟:識別可由二或更多個處理裝置執行的一第一函式;產生包括一第一碼和一第二碼的一第一多個碼,其中該第一碼對應於一第一處理裝置,且該第二碼對應於一第二處理裝置,該第二處理裝置在架構上與該第一處理裝置不同;以及將該第二碼儲存在一個位元組字串中,使得該第二碼在該第一函式將由該第二處理裝置執行時是可檢索的。
依據本發明之一實施例,係特地提出一種包含有電腦可讀儲存媒體的製造物品,該電腦可讀儲存媒體包括有將指令儲存在內之資料,該等指令在由一個機器取用時會致使該機器進行包含下列步驟的一個方法:識別可由二或更多個處理裝置執行的一第一函式;產生包括一第一碼和一第二碼的一第一多個碼,其中該第一碼對應於一第一處理裝置,且該第二碼對應於一第二處理裝置,該第二處理裝置在架構上與該第一處理裝置不同;以及將該第二碼儲存在一個位元組字串中,使得該第二碼在該第一函式將由該第二處理裝置執行時是可檢索的。
依據本發明之一實施例,係特地提出一種用於執行程式的系統,其包含:一第一處理裝置;一第二處理裝置;以及記憶體,用以儲存一個程式,該程式包括可由該第一處理裝置和該第二處理裝置在運行時間中執行的一第一函式,其中該第一函式與一個導言相關聯,該導言含有一第
一運算元和一第二運算元,其中該第一運算元是一個獨特碼型樣,且該第二運算元是一個指標,該指標支援對一個碼之檢索以供用於在該第二處理單元上執行該第一函式。
從下面所提供的詳細說明中、以及從針對本發明之各種實施例的隨附圖式中,將能更完整地瞭解本發明的數個實施例,然而,不應由於這些隨附圖式而將本發明限制於這些特定實施例中,這些隨附圖式只是為作說明和理解所用。
第1圖是依據本發明之一實施例的一個運算系統。
第2A圖是一個處理程序的一個實施例之流程圖,用以進行程式編譯和將函式指標映對至裝置碼。
第2B圖是一個處理程序的一個實施例之流程圖,用以執行可執行於數個異質處理裝置上的一個函式。
第3圖例示配合本發明之一實施例使用的一個電腦系統。
第4圖例示配合本發明之一實施例使用的一個點對點電腦系統。
介紹數種用於將函式指標映對至裝置碼的方法。在一個實施例中,一種方法包括識別可由處理裝置執行的一個帶註函式。此方法包括產生碼,此碼包括對應於第一處理裝置的第一碼及對應於第二處理裝置的第二碼。此第二處
理裝置在架構上與第一處理裝置不同。此方法進一步包括將第二碼儲存在一個位元組字串中,使得第二碼在此帶註函式將由第二處理裝置執行時是可檢索的。
在後文之說明中,係陳述許多細節,以提供對本發明之數個實施例的更為通盤的解說。然而,對於熟於此技者而言,會可明顯看出,本發明的數個實施例係可在不具有這些特定細節的情況下實行。在一些其他事例中,係以方塊圖形式而非詳細地示出習知的結構和裝置,以避免對本發明之實施例造成混淆。
下文中之詳細說明的一些部份係以演算法和在一個電腦記憶體內之資料位元上之操作的符號表示型態來陳述。這些演算法描述及在資料位元上的操作是熟於資料處理技藝者所用以藉最有效地將其作品之實質內容傳達給其他熟於此技藝者知悉的媒介。於此,且一般而言,一個演算法被認為是由數個步驟組成的導向一個所欲結果的一個自相容序列。這些步驟是要求對物理量作實體操控的步驟。雖然並非必然,但通常這些量係採取能夠被儲存、轉移、組合、比較和做其他操控的電氣式或磁性訊號的形式。將這些信號指涉為位元、數值、元件、符號、文字、詞語、數字或其他諸如此類者,已經多次被證明是很便利的,主要是因為普遍使用的緣故。
然而,應謹記在心,所有的這些和其他類似的詞語係要與適當的物理量相關聯,並且只是被施加到這些量上的便利標籤而已。除非於下文之論述中有明確地特別陳述其
他情況,否則應可識出,在本說明全文中,使用像是「處理」或「運算」或「計算」或「判定」或「顯示」或其他諸如此類的詞語之論述係指涉一個電腦系統或其他類似電子運算裝置(其操控和將在此電腦系統之暫存器和記憶體中的被表示為物理(電子)量之資料轉換成被類似地表示為在此等電腦系統記憶體或暫存器或其他此類資訊儲存體、發送或顯示裝置中之物理量的其他資料)的動作和處理程序。
本發明的數個實施例亦有關於用於進行本文中之操作的設備。一些設備可係針對所需要的目的而被特別建構,或者是,其可包含有一個一般用途電腦,此一般用途電腦可被選擇性作動、或由儲存在此電腦中的一個電腦系統組配。這樣的一個電腦程式可係儲存在一個電腦可讀儲存媒體中,例如但不受限於,任何類型的磁碟,包括軟式磁碟、光學碟片、CD-ROM、DVD-ROM、和磁光碟、唯讀記憶體(read-only memory,ROM)、隨機存取記憶體(random access memory,RAM)、EPROM、EEPROM、NVRAM、磁性或光學卡、或任何類型的適於儲存電子指令並各耦接至一個電腦系統匯流排之媒體。
於本文中所呈現的演算法和顯示畫面並不固有地與任何特定電腦或其他設備有關。係可配合依據本文中之教示的程式而使用各種一般用途系統,或者是,可證明建構更為特化的用於執行所需方法步驟的設備是很便利的。在下文之說明中會出現對各式各樣的這些系統而言所需的結
構。此外,本發明的數個實施例並沒有配合任何特定程式設計語言來說明。會可識出,係可使用各式各樣的程式設計語言來實施如於本文中所說明的本發明之教示。
一個機器可讀媒體包括任何用於儲存或發送為機器(例如,電腦)可讀之形式之資訊的機構。例如,一個機器可讀媒體包括唯讀記憶體(「ROM」);隨機存取記憶體(「RAM」);磁碟儲存媒體;光學儲存媒體;快閃記憶體裝置等等。
於本文中所敘述的方法和設備是用於將函式指標映對至裝置碼。此方法和設備主要是相關於多核心處理器電腦系統而作論述。然而,此用於映對函式指標之方法並不如此受限,因為係可將其實施在任何積體電路裝置或系統(例如手機、個人數位助理、嵌入式控制器、行動平臺、桌上型平臺、和伺服器平臺)中或配合任何積體電路裝置或系統實施,以及連同其他資源(例如硬體/軟體緒)實施。
介紹數種用於將函式指標映對至裝置碼的方法。在一個實施例中,一種方法包括識別可由處理裝置執行的一個帶註函式。此方法包括產生碼,此碼包括對應於第一處理裝置的第一碼及對應於第二處理裝置的第二碼。此第二處理裝置在架構上與第一處理裝置不同。此方法進一步包括將第二碼儲存在一個位元組字串中,使得第二碼在此帶註函式將由第二處理裝置執行時是可檢索的。
第1圖是依據本發明之一實施例的一個運算系統。許多
有關部件,例如匯流排和週邊設備,並未被示出,以避免混淆本發明。請參考第1圖,電腦系統102包含中央處理單元(CPU)106、處理裝置107、記憶體108、碼104、編譯器110、碼最佳化器112和目標碼114。
在一個實施例中,處理裝置107係與CPU 106一起整合在一個晶片中。在一個實施例中,處理裝置107和CPU 106是離散的裝置。在一個實施例中,處理裝置107亦是可操作來支援來自CPU 106的一些處理工作量的一個處理裝置。在一個實施例中,處理裝置107包括數個處理裝置(例如,一個處理器、一個圖形處理、數個數位信號處理單元、和一個微控制器)。
在一個實施例中,處理裝置107是一個光學裝置。CPU106將一個程式編譯,以由具有二或更多個異質處理裝置的另一個電腦系統執行。在一個實施例中,處理裝置107在架構上與CPU 106不同。因此,用於在處理裝置107上執行的碼與用於在CPU 106上執行的碼不同。
在一個實施例中,電腦系統102是由一個程式設計師或軟體研發員使用,以創造碼104。在一個實施例中,碼104包含以高階電腦語言(包括物件導向和其他語言,例如FORTRAN、Java、C++等等)表示的程式敘述。電腦系統102包括一或多個處理器106和記憶體108,記憶體108中的程式被CPU 106載入和執行。記憶體108包括編譯器110,用以將碼104翻譯成可執行目標碼114。編譯器110包括由CPU106執行的碼最佳化器112。
在一個實施例中,編譯器110針對被對在複數個目標裝置上之執行作標註的函式進行碼之產生。編譯器110使得能夠將CPU側的函式指標映對至針對不為CPU(例如,處理裝置107)的另一個處理裝置所產生的碼。一個CPU側函式指標是在只基於CPU 106作執行時,用在正規碼(regular code)中的一個函式指標。在一個實施例中,對函式指標的映對使得提供應用程式編程界面(application programming interface,API)的編程模型能夠取用CPU側函式指標並在另一個非CPU裝置上執行此函式。
在一個實施例中,編譯器110檢測/識別被標註為可能在一或多個處理裝置(例如,一個GPU)上執行的一個函式。例如,視排程和負載平衡因數而定,一個帶註函式因而係可執行於CPU 106或一或多個處理裝置上。
在一個實施例中,針對CPU執行所產生的碼於本文中被稱為是CPU二進制、CPU可執行、或CPU碼。在一個實施例中,針對其他處理裝置所產生的碼於本文中被稱為是裝置二進制或裝置碼。例如,針對一個GPU而產生的碼於本文中被稱為是GPU二進制或GPU碼。
在一個實施例中,針對各個帶註函式,編譯器110產生一個裝置碼,並將此裝置碼儲存為在一個陣列中的一個位元組字串。編譯器110在編譯當中增添此陣列。此陣列對使用者而言是不可見的。在一個實施例中,此陣列被如下定義:「static char deviceCode<module_suffix>」,其中module_suffix是由編譯器110產生的一個特定模組(編譯單
元)尾綴。
在一個實施例中,針對一個模組之所有帶註函式的碼被儲存在一個陣列中。這些碼是由一個特殊位元組序列所定界。編譯器110如常產生供用於CPU執行的碼(CPU二進制)。除了這個,針對各個帶註函式,編譯器110還產生一個導言(於本文中亦稱為prolog。例如,針對一個帶註函式「foo」,所產生的碼係如下示於表1中。
在一個實施例中,標籤foo(即,第1圖中的foo 131)指出針對函式「foo」所產生的一個正規CPU碼的開端。foo_$GENX(請見第1圖中的121)指出針對函式「foo」所產生的導言,因為此函式已針對於異質處理裝置上之執行而被標註。
在一個實施例中,例如,此導言的第一部分是一個「移動(move)」指令(請見第1圖中之122)。第二個運算元是指向在裝置碼陣列中的針對此函式「foo」之裝置碼(例如,GPU碼)之開端的一個指標(請見第1圖中之124)。
在一個實施例中,此導言的第一個運算元(請見第1圖中之123)(其亦被稱為「終點」)是一個受保留記憶體位置。例如,在運行時間中,CPU 106接收到要被傳遞以在其
他裝置上執行的一個函式指標,CPU 106以一個偏移量減少此函式指標。在一個實施例中,此偏移量等於導言之長度。
在一個實施例中,CPU 106檢測/檢查此導言中的獨特碼型樣。由於使用者不能取用(使用者看不見)受保留位置,故在此導言中的「移動指令」是獨特的。例如,若CPU 106在運行時間中發現此獨特碼型樣,則CPU 106擷取第二個運算元並使用第二個運算元作為一個指標,以從裝置碼陣列中檢索此函式之裝置碼。
在一個實施例中,在針對一個函式檢索裝置碼之後,此裝置碼被傳送到一個裝置驅動器,以供在處理裝置107(例如,一個GPU)上執行。
在一個實施例中,編譯器106是與至非同步使用者階任務排程程式館(例如,英特爾建緒方塊(Intel Thread Building Blocks,TBB)之C基礎(C-based)異質CPU-GPU編程延伸連同使用。在另一個實施例中,編譯器106是與OpenMP延伸或其他並行編程模型連同使用,以供用於將運算卸載至另一個處理裝置。
在一個實施例中,例如,此異質編程模型提供一個函式:「offload(func,env,num_iterations)」,其使得函式(「func」)能夠在一個處理裝置(例如,GPU)上執行,但並不保證此函式會是在此處理裝置上被執行。在運行時間中,一個運算系統動態地決定是否要在此處理裝置或CPU 106上執行此函式。在一個實施例中,例如,一個運算系統基於GPU之負載、或此函式是否適於執行於此GPU上、或
前述二者,而判定是否要在此GPU上執行。
在一個實施例中,編譯器106產生有效支援函式指標至對應裝置碼之映對的碼。在一個實施例中,所產生的裝置碼是儲存在正規資料節中。裝置驅動器能夠剖析和執行所產生的裝置碼。並不需要對鏈接器/載入器作任何改變來使得能夠在非CPU處理裝置上作執行。
於上文中所述的方法和設備主要是有關於GPU而論述。然而,這些方法和設備並不如此受限,因為係可將其實施在任何處理裝置(包括圖形處理器、數位信號處理單元、微控制器、或前述各項之任何組合)中或配合任何處理裝置實施。
在一個實施例中,電腦系統102包含一個電腦工作站、膝上型電腦、桌上型電腦、伺服器、大型電腦或任何其他適於發展碼104的運算裝置。在一個實施例中,CPU 106包含一或多個中央處理單元。記憶體108包含將程式載入到內的一或多個記憶體裝置。
第2A圖是一個處理程序的一個實施例的流程圖,用以進行程式編譯和將函式指標映對至裝置碼。此處理程序是由處理邏輯進行,此處理邏輯可包含硬體(電路、專用邏輯等等)、軟體(例如運行於一般用途電腦系統或專用機器上的軟體)、或硬體與軟體之組合。在一個實施例中,此處理程序是連同一個編譯器(例如,關於第1圖之編譯器110)而進行。在一個實施例中,此處理程序是由關於第4圖之電腦系統進行。
請參考第2A圖,在一個實施例中,處理邏輯從識別帶註函式開始(處理程序方塊601)。此帶註函式可被執行在一個CPU或其他非CPU裝置(例如,GPU)上。在一個實施例中,處理邏輯識別可由二或更多個處理裝置執行的一個帶註函式。此帶註函式可由數個異質裝置執行,而無須對鏈接器和載入器作修改。處理邏輯產生一個導言,此導言係用於在運行時間中將函式指標映對至裝置碼。
在一個實施例中,處理邏輯產生供用於不同處理裝置的二或更多個碼(處理程序方塊602)。處理邏輯產生多個碼,包括一個CPU碼和一個非CPU裝置碼。此裝置碼係用於在架構上與CPU不同的其他處理裝置上之執行。
在一個實施例中,處理邏輯產生一個導言,其包括一第一運算元,這是一個獨特的型樣,用以指出第二運算元在此導言中之存在。在一個實施例中,此第二運算元是一個指標,指向儲存在裝置碼陣列中的一個位元組字串。此位元組字串會在運行時間中被檢索,並被傳送至處理裝置以作在此處理裝置上之執行。在一個實施例中,此裝置碼是在無使用者涉入下產生。
在一個實施例中,處理邏輯如於上文中所述地將裝置碼儲存在一個位元組字串中(處理程序方塊603)。例如,此位元組字串被儲存在包括由一個獨特位元組序列所定界之其他位元組字串的一個陣列中。
在一個實施例中,多個裝置碼在編譯時間中被產生。此帶註函式在編譯時間中並不與特定目標裝置關聯。用來
執行此帶註函式的處理裝置是在運行時間中被判定。
第2B圖是一個處理程序的一個實施例之流程圖,用以執行可執行於數個異質處理裝置上的一個函式。此處理程序是由處理邏輯進行,此處理邏輯可包含硬體(電路、專用邏輯等等)、軟體(例如運行於一般用途電腦系統或專用機器上的軟體)、或硬體與軟體之組合。在一個實施例中,此處理程序是連同一個電腦(例如,關於第1圖之電腦系統)而進行。在一個實施例中,此處理程序是由關於第4圖之電腦系統進行。
請參考第2B圖,在一個實施例中,處理邏輯從接收與一個函式相關聯的一個函式指標開始,此函式可執行於二或更多個異質處理裝置上。
在一個實施例中,處理邏輯以一個偏移量減少一個函式指標值。例如,此偏移量等於導言之長度。處理邏輯基於經減少的函式指標值而檢索此函式之導言(處理程序方塊611)。
在一個實施例中,處理邏輯檢測一個獨特碼形樣(處理程序方塊612)。處理邏輯讀取導言並識別在此導言中的獨特碼型樣。處理邏輯基於此導言的第二運算元而從一個陣列中檢索裝置碼。此導言之第二運算元是一個指標,指向儲存在一個陣列中的裝置碼。
在一個實施例中,處理邏輯基於導言中的一個指標而檢索針對此處理裝置的一個裝置碼(處理程序方塊613)。處理邏輯將此裝置碼傳送至對應處理裝置驅動器。此函式
因而藉由使用此裝置碼而被執行於處理裝置上。
本發明的數個實施例係可被實施在各式各樣的電子裝置和邏輯電路中。此外,包括有本發明之實施例的裝置或電路係可被包括在各式各樣的電腦系統中。本發明的實施例亦可被包括在其他電腦系統拓樸和架構中。
例如,第3圖例示出用於配合本發明的一個實施例而使用的一個電腦系統。處理器705從第1級(level 1,L1)快取記憶體706、第2級(level 2,L2)快取記憶體710和主記憶體715取用資料。在本發明的其他數個實施例中,快取記憶體706可為一個多級快取記憶體包含一個L1快取,連同其他記憶體,例如在一個電腦系統記憶體階層中的一個L2快取,並且快取記憶體710為接下來的較低級快取記憶體,例如L3快取或更多的多級快取。此外,在其他數個實施例中,此電腦系統可使快取記憶體710作為對多於一個處理器核心的一個共享快取。
處理器705可具有任何數量的處理核心。然而,本發明的其他數個實施例可係實施在此系統的其他裝置內,或是以硬體、軟體或硬體和軟體的某種組合分散在此系統各處。
在一個實施例中,圖形控制器708係與處理器705一起整合在一個晶片中。在其他數個實施例中,圖形控制器708和處理器705是離散的裝置。在一個實施例中,圖形控制器708亦為可操作來支援來自於處理器705的一些處理工作負載的一個處理裝置。在一個實施例中,圖形控制器708包括一個處理裝置(例如,一個處理器、一個圖形處理器、數
個數位信號處理單元、和一個微控制器)。
主記憶體715可係實施在各種記憶源中,例如動態隨機存取記憶體(dynamic random-access memory,DRAM)、硬碟驅動器(hard disk drive,HDD)720、基於NVRAM技術的固態硬碟725、或經由網路介面730或經由含有各種儲存裝置和技術之無線介面740的位在此電腦系統遠端的一個記憶源。快取記憶體可係位在處理器內抑或是在處理器附近,例如在處理器之本地匯流排707上。此外,快取記憶體可含有相對較快的記憶體胞元,例如六電晶體(six-transistor,6T)胞元,或其他具有約略相等或更快之存取速度的記憶體胞元。
然而,本發明的其他數個實施例係可存在於第3圖之系統內的其他電路、邏輯單元或裝置中。此外,本發明的其他數個實施例係可分散在例示於第3圖中的數個電路、邏輯單元或裝置當中。
同樣地,本發明之至少一個實施例係可實施在一個點對點電腦系統中。例如,第4圖示出被配置成一種點對點(point-to-point,PtP)組態的一個電腦系統。尤其是,第4圖示出一個系統,當中,處理器、記憶體、和輸入/輸出裝置係藉由多個點對點介面互連。
第4圖之系統可亦包括數個處理器,其中只有兩個處理器870、880被示出以求簡明。處理器870、880可各包括有一個本地記憶體控制器集線器(memory controller hub,MCH)811、821,用以與記憶體850、851連接。處理器870、
880可利用PtP介面電路812、822經由一個點對點(PtP)介面853交換資料。處理器870、880可利用點對點介面電路813、823、860、861經由個別PtP介面830、831與一個晶片組890交換資料。晶片組890可亦經由一個高效能圖形介面862而與一個高效能圖形電路852交換資料。本發明的數個實施例可係耦接至電腦匯流排(834或835),或在晶片組890內,或在資料儲存體875內,或在第4圖之記憶體850內。
然而,本發明的其他數個實施例係可存在於第5圖之系統內的其他電路、邏輯單元或裝置中。此外,本發明的數個其他實施例係可分散在例示於第4圖中的數個電路、邏輯單元或裝置當中。
本發明並不受限於所說明的這些實施例,而係可藉由落於後附申請專利範圍之精神與範疇中的修改體與變異體實行。例如,應可識出,本發明係可應用於對於所有類型的半導體積體電路(integrated circuit,IC)晶片之使用。這些IC晶片的範例包括但不受限於,處理器、控制器、晶片組部件、可規劃邏輯陣列(programmable logic arrays,PLA)、記憶體晶片、網路晶片、或其他諸如此類者。此外,應可識出,可能已給出示範大小/模型/數值/範圍,雖然本發明的實施例並不受限於那些。隨著製造技術(例如,微影術)與時俱進,係預期有更小尺寸的裝置能夠被製造出來。
有鑑於在已閱讀前面這些說明之後,對熟於此技者而言,本發明的許多變異體和修改體將無疑地會變得很明
顯,故,應瞭解,以例示方式所示出和說明的任何特定實施例係絕無意圖要被認為是具有限制性。因此,對各種實施例之細節的指涉並非意欲要限制申請專利範圍之範疇,那些請求項本身僅載述被認為是對本發明為必要之特徵。
102‧‧‧系統
104‧‧‧碼
106‧‧‧中央處理單元(CPU)
107‧‧‧處理裝置
108‧‧‧記憶體
110‧‧‧編譯器
112‧‧‧碼最佳化器
114‧‧‧目標碼
131‧‧‧foo
601~613‧‧‧處理程序方塊
705、870、880‧‧‧處理器
706、710‧‧‧快取記憶體
707‧‧‧匯流排
708‧‧‧圖形控制器
715‧‧‧主記憶體
720‧‧‧硬碟驅動器(HDD)
725‧‧‧固態硬碟
730‧‧‧網路介面
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‧‧‧晶片組
第1圖是依據本發明之一實施例的一個運算系統。
第2A圖是一個處理程序的一個實施例之流程圖,用以進行程式編譯和將函式指標映對至裝置碼。
第2B圖是一個處理程序的一個實施例之流程圖,用以執行可執行於數個異質處理裝置上的一個函式。
第3圖例示配合本發明之一實施例使用的一個電腦系統。
第4圖例示配合本發明之一實施例使用的一個點對點電腦系統。
601~603‧‧‧處理程序方塊
Claims (16)
- 一種函式處理方法,其包含下列步驟:識別可由二或更多個處理裝置執行的一第一函式;產生包括一第一碼和一第二碼的多個碼,其中該第一碼對應於一第一處理裝置,且該第二碼對應於一第二處理裝置,該第二處理裝置在架構上與該第一處理裝置不同;以及將該第二碼儲存在一個位元組字串中,使得該第二碼在該第一函式將由該第二處理裝置執行時是可檢索的。
- 如申請專利範圍第1項之方法,其中,產生該第二碼之步驟進一步包含:產生一個導言,該導言包括一第一運算元,該第一運算元為指出該導言之一第二運算元之存在的一個獨特型樣。
- 如申請專利範圍第1項之方法,其中,產生該第二碼之步驟進一步包含:產生一個導言,該導言包括一第二運算元作為指向該位元組字串的一個指標,其中,該位元組字串將會在運行時間中被檢索、並會被傳送至該第二處理裝置以供用於在該第二處理裝置上之執行。
- 如申請專利範圍第1項之方法,其中,該第一處理裝置是一個中央處理單元(CPU),且該第二處理裝置是一個非CPU處理裝置。
- 如申請專利範圍第1項之方法,其中,該位元組字串是被儲存在一個陣列中,該陣列包括由一個獨特位元組序列定界的其他位元組字串。
- 如申請專利範圍第1項之方法,其進一步包含下列步驟:產生一個導言,該導言係用於在該第一函式被排程為要由該第二處理裝置執行時,在運行時間中將一個函式指標映對至該第二碼。
- 如申請專利範圍第1項之方法,其中,該第一函式可由數個異質裝置執行而無須對鏈接器和載入器作修改。
- 如申請專利範圍第1項之方法,其中,該第二碼是在無使用者涉入下產生。
- 如申請專利範圍第1項之方法,其中,該等多個碼是在編譯時間中產生,該第一函式在該編譯時間中並不與特定目標裝置相關聯,要用來執行該第一函式的處理裝置是在運行時間中被判定。
- 一種包含電腦可讀儲存媒體的製造物品,該電腦可讀儲存媒體含有儲存有指令的資料,該等指令在受機器取用時會致使該機器進行包含下列步驟的方法:識別可由二或更多個處理裝置執行的一第一函式;產生包括一第一碼和一第二碼的多個碼,其中該第一碼對應於一第一處理裝置,且該第二碼對應於一第二處理裝置,該第二處理裝置在架構上與該第一處理裝置不同;以及將該第二碼儲存在一個位元組字串中,使得該第二 碼在該第一函式將由該第二處理裝置執行時是可檢索的。
- 如申請專利範圍第10項之物品,其中,產生該第二碼之步驟進一步包含:產生一個導言,該導言包括一第一運算元,該第一運算元為指出該導言之一第二運算元之存在的一個獨特型樣。
- 如申請專利範圍第10項之物品,其中,產生該第二碼之步驟進一步包含:產生一個導言,該導言包括一第二運算元作為指向該位元組字串的一個指標,其中,該位元組字串將會在運行時間中被檢索、並會被傳送至該第二處理裝置以供用於在該第二處理裝置上之執行。
- 如申請專利範圍第10項之物品,其中,該方法進一步包含下列步驟:產生一個導言,該導言係用於在該第一函式被排程為要由該第二處理裝置執行時,在運行時間中將一個函式指標映對至該第二碼。
- 一種用於執行程式的系統,其包含:一第一處理裝置;一第二處理裝置;以及記憶體,用以儲存一個程式,該程式包括可由該第一處理裝置和該第二處理裝置在運行時間中執行的一第一函式,該第一函式與一個導言相關聯,該導言含有 一第一運算元和一第二運算元,其中該第一運算元是一個獨特碼型樣,且該第二運算元是一個指標,該指標支援對一個碼之檢索以供用於在該第二處理單元上執行該第一函式。
- 如申請專利範圍第14項之系統,其中,該第一處理裝置和該第二處理裝置在架構上不同,並且其中,在運行時間中於不同的處理裝置上執行該第一函式所使用的將會是不同的碼。
- 如申請專利範圍第14項之系統,其中,該系統可操作來進行下列步驟:以該導言之長度來對一個函式指標值進行減量;讀取該導言,並識別該導言中之該獨特碼型樣;以及基於該導言之該第二運算元而檢索該碼。
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 TW201246068A (en) | 2012-11-16 |
TWI478053B true 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)
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 |
US11256522B2 (en) * | 2019-11-22 | 2022-02-22 | Advanced Micro Devices, Inc. | Loader and runtime operations for heterogeneous code objects |
US11467812B2 (en) | 2019-11-22 | 2022-10-11 | Advanced Micro Devices, Inc. | Compiler operations for heterogeneous code objects |
CN110740443A (zh) * | 2019-12-05 | 2020-01-31 | 上海新微技术研发中心有限公司 | 用于低速率无线通信快速ota的无线通信装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080114937A1 (en) * | 2006-10-24 | 2008-05-15 | Arm Limited | Mapping a computer program to an asymmetric multiprocessing apparatus |
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 |
US20080270990A1 (en) * | 2007-04-27 | 2008-10-30 | Microsoft Corporation | Unwinding unwindable code |
TW200945190A (en) * | 2002-09-25 | 2009-11-01 | Panasonic Corp | Processor |
US20110022817A1 (en) * | 2009-07-27 | 2011-01-27 | Advanced Micro Devices, Inc. | Mapping Processing Logic Having Data-Parallel Threads Across Processors |
Family Cites Families (14)
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 |
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 |
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 |
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 |
EP2494454A4 (en) * | 2009-10-30 | 2013-05-15 | Intel Corp | TWO-WAY COMMUNICATION SUPPORT FOR HETEROGENIC PROCESSORS ENERGY COMPUTER PLATFORM |
KR101534037B1 (ko) * | 2010-09-24 | 2015-07-08 | 인텔 코포레이션 | 컴퓨팅 플랫폼의 이종 프로세서들 간의 공유 가상 메모리에서의 가상 함수들의 공유 |
-
2011
- 2011-04-22 US US13/092,500 patent/US8949777B2/en active Active
-
2012
- 2012-04-02 WO PCT/US2012/031855 patent/WO2012145154A2/en active Application Filing
- 2012-04-11 TW TW101112794A patent/TWI478053B/zh not_active IP Right Cessation
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200945190A (en) * | 2002-09-25 | 2009-11-01 | Panasonic Corp | Processor |
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 |
US20080114937A1 (en) * | 2006-10-24 | 2008-05-15 | Arm Limited | Mapping a computer program to an asymmetric multiprocessing apparatus |
US20080270990A1 (en) * | 2007-04-27 | 2008-10-30 | Microsoft Corporation | Unwinding unwindable code |
US20110022817A1 (en) * | 2009-07-27 | 2011-01-27 | Advanced Micro Devices, Inc. | Mapping Processing Logic Having Data-Parallel Threads Across Processors |
Also Published As
Publication number | Publication date |
---|---|
TW201246068A (en) | 2012-11-16 |
WO2012145154A3 (en) | 2013-01-24 |
US8949777B2 (en) | 2015-02-03 |
US20120272210A1 (en) | 2012-10-25 |
WO2012145154A2 (en) | 2012-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7284199B2 (ja) | アルゴリズム整合、機能無効化、または性能制限による後方互換性 | |
JP6949857B2 (ja) | タイミングを中断させるモードにおけるソフトウェアの後方互換性テスト | |
TWI478053B (zh) | 用於將函式指標映對到裝置碼的方法和系統 | |
TWI644208B (zh) | 藉由對硬體資源之限制實現的向後相容性 | |
TWI567646B (zh) | 容許一架構之編碼模組使用另一架構之程式庫模組的架構間相容性模組 | |
US8327109B2 (en) | GPU support for garbage collection | |
TWI451270B (zh) | 在具有異質處理器之電腦平台中執行之方法和電腦平台 | |
JP5939524B2 (ja) | サブバッファオブジェクト | |
TWI471730B (zh) | 用以促進在異質平台中共享指標之方法及設備 | |
US20110231616A1 (en) | Data processing method and system | |
US8990786B2 (en) | Program optimizing apparatus, program optimizing method, and program optimizing article of manufacture | |
US9619298B2 (en) | Scheduling computing tasks for multi-processor systems based on resource requirements | |
EP3066560B1 (en) | A data processing apparatus and method for scheduling sets of threads on parallel processing lanes | |
TWI714903B (zh) | 多處理器裝置及用於操作多處理器系統之方法 | |
TWI733760B (zh) | 記憶體複製指令、處理器、方法及系統 | |
US10318261B2 (en) | Execution of complex recursive algorithms | |
TW201903602A (zh) | 圖形處理單元及處理圖形應用程式的方法 | |
US20080244221A1 (en) | Exposing system topology to the execution environment | |
JP6253706B2 (ja) | ハードウェア装置 | |
US20150324133A1 (en) | Systems and methods facilitating multi-word atomic operation support for system on chip environments | |
JP6020428B2 (ja) | ベクトルレジスタリネーミング制御方式、ベクトルプロセッサ、及びベクトルレジスタリネーミング制御方法 | |
TWI512611B (zh) | 執行緒層級推測中之動態資料同步化技術 | |
US20240111694A1 (en) | Node identification allocation in a multi-tile system with multiple derivatives | |
US20220405151A1 (en) | On-Chip Hardware Semaphore Array Supporting Multiple Conditionals | |
Dai et al. | Component-based multi-threading support of the multi-core mobile software |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |