TWI428833B - 多執行緒處理器及其指令執行及同步方法及其電腦程式產品 - Google Patents
多執行緒處理器及其指令執行及同步方法及其電腦程式產品 Download PDFInfo
- Publication number
- TWI428833B TWI428833B TW99138628A TW99138628A TWI428833B TW I428833 B TWI428833 B TW I428833B TW 99138628 A TW99138628 A TW 99138628A TW 99138628 A TW99138628 A TW 99138628A TW I428833 B TWI428833 B TW I428833B
- Authority
- TW
- Taiwan
- Prior art keywords
- count value
- instruction
- instructions
- sequence
- thread
- Prior art date
Links
Landscapes
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Description
本發明係有關於一種指令執行與同步的方法及相關之系統,且特別有關於一種多執行緒處理器的指令執行與同步的方法及相關之系統。
近年來,隨著電腦技術的提升以及處理器技術的演進,具有多執行緒(multi-thread)的處理器也開始廣泛的使用。多執行緒係指從軟體或者硬體上實現多個執行緒並行執行的技術。具有多執行緒的處理/電腦系統因有硬體支援而能夠在同一時間執行多於一個執行緒,進而提升整體處理效能。
一般來說,目前對於多執行緒的並行執行僅採用基本的順序執行來對每個執行緒進行單獨控制,或者採用在指令中標識的方法來達到多指令並行處理的效果。在指令中標識的方法中需要為每條指令均配置一預測暫存器,例如可以為每條指令加上一位元的資料,由編譯器(compiler)將其標識為1或0來決定是否跳過上述條指令。如此一來,需要複雜的控制邏輯,除了對編譯器造成較大的負擔,也會增加硬體的複雜度。
有鑑於此,本發明提供一種多執行緒處理器的指令執行與同步的方法與裝置。
本發明實施例之一種多執行緒處理器之指令執行及同步方法。其中,多執行緒處理器內運行多執行緒且多執行緒可同時執行一指令序列。方法包括下列步驟。首先,接收一原始碼或一目的碼。接著,編譯原始碼或目的碼,產生指令序列,其中指令序列中之所有函數之指令係依據一調用順序進行排序。之後,提供每一執行緒一計數值,每一計數值指向指令序列中之一指令。最後,依據多執行緒之計數值,決定一主控計數值,致使每一執行緒同步執行指令序列中主控計數值所指向之指令。
本發明實施例之一種多執行緒處理器,至少包括多個邏輯單元,其中每一邏輯單元內運行多執行緒中之其中一執行緒且每一執行緒可同時執行一指令序列。其中,每一邏輯單元具有一計數值,每一計數值指向指令序列中之一指令。多執行緒處理器更包括一比較單元,係依據邏輯單元之計數值,決定一主控計數值,致使每一邏輯單元同步執行指令序列中主控計數值所指向之指令。
本發明上述方法可以透過程式碼方式而存在。當程式碼被機器載入並執行時,上述機器就會變成用於實行本發明之裝置。
為使本發明之上述目的、特徵與優點能更明顯易懂,下文特舉實施例,並配合所附圖示,詳細說明如下。
第1圖顯示依據本發明實施例之多執行緒(multi-thread)處理器。依據本發明實施例之多執行緒處理器100至少包括多個邏輯單元122(例如運算邏輯單元(ALU)),其中每一邏輯單元122內運行多執行緒中的其中一執行緒(thread),且這些執行緒可同時執行同一指令序列(instruction sequence)。其中,每一邏輯單元122具有一計數值124,每一計數值124指向該指令序列中的一指令。具體來說,一邏輯單元的計數值124指向的指令係為其該邏輯單元內運行之執行緒下一個將執行的指令。於一實施例中,可為每個邏輯單元122配置一個暫存器或程式計數器(program counter)來儲存其計數值。此外,多執行緒處理器100的每個邏輯單元122可更配置一個暫存器(又稱狀態暫存器)126,用以儲存指令的執行結果。注意的是,雖然第1圖僅標示了4個邏輯單元122,但並非用以限定本發明僅止於此。換句話說,邏輯單元122的個數可隨著實際需求增加或減少。
多執行緒處理器100更包括一比較單元120,其可依據所有邏輯單元122的所有計數值124,決定一主控計數值128,致使每一邏輯單元122同步執行指令序列中的主控計數值128所指向的指令。於一實施例中,該指令序列存儲於一指令緩衝器(instruction cache)130中,每一邏輯單元122均依據主控計數值128從指令緩衝器130中取出主控計數值128所指向的一指令,並同步執行該指令。於另一實施例中,比較單元120可找出所有邏輯單元122的所有計數值124中之一最小計數值,並設定主控計數值128為該最小計數值。注意的是,雖然第1圖標示了計數值124與主控計數值128係儲存於多執行緒處理器100內部,但並非用以限定本發明僅止於此。換句話說,計數值124與主控計數值128可隨著實際需求儲存於多執行緒處理器100內部或其外部。
於一些實施例中,在每一邏輯單元122同步執行指令序列中的主控計數值128所指向的指令以後,邏輯單元122比較其計數值124與主控計數值128,並依據比較的結果,判斷是否要將執行的結果寫回其對應的暫存器126。若一邏輯單元122的計數值124與主控計數值128相同時,邏輯單元122將指令的執行結果寫入其暫存器126中。若計數值124與主控計數值128不相同時,邏輯單元122則忽略此指令之此執行結果或寫入一無效(USELESS)標記至其暫存器126中。換句話說,當某一邏輯單元122的計數值124與主控計數值128不相同時,邏輯單元122便不會將儲存結果寫回其暫存器126中。
於一些實施例中,多執行緒處理器100可更提供每一邏輯單元一個旗標,並且可依據每個邏輯單元122的計數值與主控計數值的比較結果來設定(例如將旗標設為1)或清除旗標設定(例如將旗標設為0)。其中,當一邏輯單元122之計數值124與主控計數值128相同時,其旗標係被設定,而當邏輯單元122之計數值124與主控計數值128不相同時,其旗標係被清除。之後,再利用旗標來判斷是否要將執行的結果寫回其對應的暫存器126。
於一些實施例中,當所有邏輯單元122內運行的多個執行緒在上述的原則下(舉例而言,設定主控計數值128為所有計數值124中之一最小計數值)同步執行相同指令時,為了保證指令序列之所有指令都可以被執行到,該多執行緒處理器100之編譯器(compiler)在編譯該指令序列的原始碼或目的碼,產生該指令序列時,應保證該指令序列具有一指令執行順序。於一實施例中,該編譯器以該多執行緒處理器100之一驅動程式(driver)的形式實現。於另一實施例中,多執行緒處理器100可包括一圖形處理器(Graphic Processing Unit,GPU),但不限於此。當多執行緒處理器100係為一GPU時,該指令序列又可稱為著色器之程式碼(shader code)。
編譯器係將指令序列中的所有函數依據一調用順序進行排序,致使指令序列中每一被調用的函數(亦即子函數)的指令可位於對應的一調用函數(亦即母函數)的指令之前面。關於如何將指令序列中的所有函數依據一調用順序進行排序的說明請參見第2圖。第2圖顯示依據本發明實施例之一示範的程式碼之原始碼。如第2圖所示,原始碼200中包括函數A-E,且函數A中調用了函數B,C,D,而函數D中則進一步調用函數E。由於函數D調用了函數E,因此函數E的指令於排序時會放在D的前面。類似地,函數B,C,D被函數A所調用,因此,函數B,C,D的指令於排序時會放在A的前面。因此,於本實施例中,函數A-E的調用順序係為(E,B,C,D,A)。
接下來請參見第3A圖與第3B圖。第3A圖係顯示依據本發明實施例之一示範的C語言原始碼,第3B圖係顯示第3A圖的C語言原始碼經編譯器編譯后所產生的指令序列。於第3B圖中,行號表示執行的順序,程式碼表示編譯後的結果,而註解則用以說明上述指令所執行的動作,其中行號愈小的指令會愈早被執行。如第3B圖所示,指令序列300包含了行號1-22的指令。參見第3A圖,因為CallFunction函數係被Main函數所調用,因此,CallFunction函數的指令於指令序列300中係位於其對應的調用函數Main的指令的前面。換句話說,於指令序列300中,CallFunction函數的指令(即第3A圖中行號2-3的指令)的行號係小於Main函數(即第3A圖中行號4-22的指令)的指令的行號。一般來說,指令序列300包括一主函數(即第3A圖中的Main函數),並且主函數係設於指令序列300的最末端,以符合前述依據函數的調用順序進行排序的原則。
於執行時,多執行緒處理器100將依據指令序列300的行號順序依序執行指令。由於該指令序列300中每一被調用之函數之指令係位於對應之一調用函數之指令之前面,保證了多執行緒處理器100之多個邏輯單元122內運行的多個執行緒同時執行所有計數值124中最小計數值指向的指令時,指令序列300中所有函數之的指令都可以被執行到。當然,指令序列300指令執行順序也可以按其它排序方式(例如每一被調用之函數之指令係位於對應之一調用函數之指令之后面,而多執行緒處理器100將依據指令序列300的行號逆序依序執行指令),相應地,比較單元120應找出所有邏輯單元122的所有計數值124中之一最大計數值,並設定主控計數值128為該最大計數值。
相應多執行緒處理器之指令執行及同步方法將於後進行說明。
第4圖顯示依據本發明實施例之多執行緒處理器之指令執行及同步方法之流程圖。請同時參考第1圖、第3A圖、第3B圖與第4圖進行說明。舉例來說,多執行緒處理器100可包括一圖形處理器(Graphic Processing Unit,GPU),但不限於此。其中,多執行緒處理器100內運行多執行緒且多個執行緒可同時執行一指令序列(例如第3B圖所示的指令序列300)。首先,如步驟S402,多執行緒處理器100之編譯器接收一原始碼(例如第3A圖所示)或一目的碼,並如步驟S404,編譯原始碼或目的碼,產生指令序列(例如第3B圖所示的指令序列300)。於此步驟中,當接收到一原始碼時,編譯器係先將原始碼進行編譯,再對編譯的結果依據一調用順序進行排序,例如,使得指令序列中每一個被調用之函數的指令均安排在對應的一調用函數的指令的前面,也就是說,編譯器會依據函數的調用順序,由高至低(主函數為最高層,主函數直接調用的層次為次高層,依此類推),將指令序列中的指令在該指令緩衝器130或其它指令緩衝器(未繪示)中依照下到上(亦即:主函數係設置於指令序列的最末端,主函數直接調用的函數次之,依此類推)的順序排放指令。舉例來說,如第3A圖與第3B圖所示,因為CallFunction函數係被Main函數所調用,因此,CallFunction函數的指令(即第3A圖中行號2-3的指令)於指令序列300中係位於其對應的調用函數Main的指令(即第3A圖中行號4-22的指令)的前面。
當指令序列300產生之後,此指令序列300將被儲存於指令緩衝器130內,等待被多執行緒處理器100執行。
其後,當欲執行此指令序列時,如步驟S406,多執行緒處理器100提供每一個執行緒一個計數值124,每一個計數值124指向指令序列300中的一指令。具體來說,每個計數值124係用以記錄其對應的邏輯單元122中的執行緒下一條應該執行的指令的位置(例如:指令行號)。接著,如步驟S408,多執行緒處理器100可以依據所有多執行緒的計數值124,決定一主控計數值128,並使得每一個執行緒同步執行指令序列300中主控計數值128所指向的上述指令。於一些實施例中,多執行緒處理器100決定主控計數值128的方法係先找出所有計數值124中的一最小計數值,再設定主控計數值128為此最小計數值。
於決定主控計數值128之後,多執行緒處理器100可由指令緩衝器130中找出主控計數值128所對應的指令,並分別發送此指令至所有執行緒中執行。因此,所有執行緒將同步執行此一指令,並且產生對應此指令的執行結果。
於一些實施例中,多執行緒處理器100可比較每一執行緒的計數值124與主控計數值128,並依據比較的結果,判斷是否要將執行的結果寫回其對應的暫存器126。若一執行緒的計數值124與主控計數值128相同時,多執行緒處理器100將指令的執行結果寫入至此執行緒所對應的邏輯單元122的暫存器126中。若執行緒的計數值124與主控計數值128不相同時,多執行緒處理器100則忽略此指令之此執行結果或寫入一無效(USELESS)標記至執行緒所對應的邏輯單元122的暫存器126中。換句話說,當某一執行緒的計數值124與主控計數值128不相同時,多執行緒處理器100便不會將儲存結果寫回上述執行緒對應的邏輯單元122的暫存器126中。
於一些實施例中,多執行緒處理器100可更提供每一執行緒一個旗標,並且可依據每個執行緒的計數值與主控計數值的比較結果來設定(例如將旗標設為1)或清除旗標設定(例如將旗標設為0)。其中,當一執行緒之計數值124與主控計數值128相同時,其旗標係被設定,而當執行緒之計數值124與主控計數值128不相同時,其旗標係被清除。之後,再利用旗標來判斷是否要將執行的結果寫回其對應的暫存器126。
以下列舉一實施例,用以輔助說明依據本發明之指令執行及同步方法細節,但本發明並不限於此。第5圖係顯示依據本發明實施例之一示範的計數值與暫存器內容的變化情形,用以說明本案之多執行緒處理器之指令執行及同步方法之實作方式。請同時參考第1圖、第3B圖、第4圖與第5圖進行說明。於本實施例中,假設多執行緒處理器100之4個邏輯單元122同時有4個執行緒A、B、C與D正在執行第3B圖的指令序列300且執行緒A、B、C與D的變數a的初始值分別為1、2、3、0。如第5圖所示,PC_A、PC_B、PC_C以及PC_D係分別表示4個執行緒A、B、C與D所對應的計數值,PC表示主控計數值,而A_status、B_status、C_status以及D_status係分別表示4個執行緒A、B、C與D所對應的暫存器所儲存的內容。舉例來說,於標號510的行中,PC_A、PC_B、PC_C以及PC_D均為1,此時主控計數值PC為1,表示4個執行緒A-D均執行行號1的指令”JMP 4”,因此A_status、B_status、C_status以及D_status所儲存的內容均為”JMP 4”。於第5圖的標號520的行中,PC_A、PC_B以及PC_C均為15,PC_D為13,此時主控計數值PC被設定為PC_A、PC_B、PC_C及PC_D中之最小值,即13,表示4個執行緒A-D均執行行號13的指令”JMP 2”。然而,由於只有PC_D的值與PC的值相同,因此,D_status所儲存的內容為”JMP 2”。此時,因PC_A、PC_B以及PC_C均與PC的值不相同,因此,A_status、B_status以及C_status中將不儲存執行結果或儲存的內容均為無效(”Useless”)。
類似地,於第5圖的標號530的行中,PC_A、PC_B以及PC_C均為15,PC_D為22,此時主控計數值PC被設定為PC_A、PC_B、PC_C及PC_D中之最小值,即15,表示4個執行緒A-D均執行行號15的指令”a<5?”。然而,由於PC_A、PC_B以及PC_C的值與PC的值相同,因此,A_status、B_status以及C_statu所儲存的內容為”a<5?”。此時,因PC_D與PC的值不相同,因此,D_status中將不儲存執行結果或儲存的內容為”Useless”。
於第5圖的標號540的這些行中,PC_A、PC_B以及PC_C均為15,PC_D為2,此時主控計數值PC被設定為PC_A、PC_B、PC_C及PC_D中之最小值,即2,表示4個執行緒A-D均執行行號2的指令”a++”(即執行被Main函數調用的CallFunction函數)。由於CallFunction函數的行號小於Main函數,因此CallFunction函數之指令才能在最小行號優先的指令選取原則下被執行到。
第6圖顯示依據本發明實施例之多執行緒處理器之指令執行及同步系統。多執行緒處理器之指令執行及同步系統600可執行多執行緒處理器100之指令執行及同步方法,其中多執行緒處理器100內運行多個執行緒且上述多執行緒可同時執行同一指令序列,多執行緒處理器之指令執行及同步系統600包括:第一程式碼610,用以得到如第3A圖所示的原始碼或目的碼,於一實施例中,第一程式碼610以該系統之應用程式層之一應用程式實現;第二程式碼620,用以編譯第一程式碼610得到的原始碼或目的碼,產生如第3B圖所示的指令序列300,其中於指令序列300中每一被調用之函數係位於對應之一調用函數之前面,於一實施例中,第二程式碼620以該系統之驅動程式層之多執行緒處理器100之一驅動程式實現;第三程式碼630,提供每一執行緒一計數值,每一計數值指向指令序列300中之一指令,依據每一執行緒之計數值,決定一主控計數值,致使每一執行緒同步執行指令序列中主控計數值所指向之指令,於一實施例中,第三程式碼630以該系統之硬體層之多執行緒處理器100的硬體代碼實現。
因此,透過本案之多執行緒處理器之指令執行及同步方法與系統,利用對編譯結果的特定排序方式以及對執行中的執行緒的最小行號優先的指令選取原則,可以直接跳掉所有執行緒均不用執行的函數段(例如第5圖的標號550的這些行,使得4個執行緒A-D均跳過行號9和10的指令),得到較高的執行效率。此外,由於本案之多執行緒處理器之指令執行及同步方法係採用最小行號原則來決定所有執行緒要執行的下一個指令,因此無需特定的控制器來對指令排序,可大大簡化硬體結構。並且,所有執行緒都同步執行指令序列中的相同指令,這樣便於完成需要所有執行緒同步執行的工作。再者,本案之多執行緒處理器之指令執行及同步方法除了可用在圖形處理器上之外,也可用在其他具多執行緒的系統架構中,例如採用圖形處理器作為處理單元的協同處理器架構中或x86平台的處理器的通用計算中。
本發明之方法,或特定型態或其部份,可以以程式碼的型態存在。程式碼可以包含於實體媒體,如軟碟、光碟片、硬碟、或是任何其他機器可讀取(如電腦可讀取)儲存媒體,亦或不限於外在形式之電腦程式產品,其中,當程式碼被機器,如電腦載入且執行時,此機器變成用以參與本發明之裝置。程式碼也可以透過一些傳送媒體,如電線或電纜、光纖、或是任何傳輸型態進行傳送,其中,當程式碼被機器,如電腦接收、載入且執行時,此機器變成用以參與本發明之裝置。當在一般用途處理單元實作時,程式碼結合處理單元提供一操作類似於應用特定邏輯電路之獨特裝置。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何熟悉此項技藝者,在不脫離本發明之精神和範圍內,當可做些許更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100...多執行緒處理器
120...比較單元
122...邏輯單元
124...計數值
126...暫存器
128...主控計數值
130...指令緩衝器
300...指令序列
S402-S408...步驟
第1圖顯示依據本發明實施例之多重指令處理器。
第2圖顯示依據本發明實施例之一示範的虛擬程式碼。
第3A圖係顯示依據本發明實施例之一示範的C語言原始碼。
第3B圖係顯示第3A圖的C語言原始碼所對應的一指令序列。
第4圖係顯示依據本發明實施例之多執行緒處理器之指令執行及同步方法之流程圖。
第5圖係顯示依據本發明實施例之一示範的計數值與暫存器內容的變化情形,用以說明本案之多執行緒處理器之指令執行及同步方法之實作方式。
第6圖顯示依據本發明實施例之多執行緒處理器之指令執行及同步系統。
S402-S408...步驟
Claims (14)
- 一種多執行緒處理器(multi-thread processor)之指令執行及同步方法,其中上述多執行緒處理器內運行多個執行緒且上述執行緒可同時執行一指令序列,包括下列步驟:接收一原始碼或一目的碼;編譯上述原始碼或上述目的碼,產生上述指令序列,其中上述指令序列中之所有函數之指令係依據一調用順序進行排序;提供每一上述執行緒一計數值,每一上述計數值指向上述指令序列中之一指令;以及依據每一上述執行緒之上述計數值,決定一主控計數值,致使每一上述執行緒同步執行上述指令序列中上述主控計數值所指向之上述指令。
- 如申請專利範圍第1項所述之指令執行及同步方法,更包括:比較一執行緒之上述計數值與上述主控計數值;以及若上述執行緒之上述計數值與上述主控計數值相同時,將上述指令之一執行結果寫入至上述執行緒所對應之一暫存器中。
- 如申請專利範圍第2項所述之指令執行及同步方法,更包括:若上述執行緒之上述計數值與上述主控計數值不相同時,忽略上述指令之上述執行結果或寫入一無效(USELESS)標記至上述執行緒所對應之上述暫存器中。
- 如申請專利範圍第1項所述之指令執行及同步方 法,其中上述依據上述計數值,決定上述主控計數值之步驟更包括:找出上述計數值中之一最小計數值;以及設定上述主控計數值為上述最小計數值。
- 如申請專利範圍第4項所述之指令執行及同步方法,其中上述指令序列之指令進行排序後,於上述指令序列中每一被調用之函數之指令係位於對應之一調用函數之指令之前面。
- 一種多執行緒處理器,包括:多個邏輯單元,其中每一上述邏輯單元內運行多個執行緒中之其中一執行緒且上述執行緒可同時執行一指令序列,其中每一上述邏輯單元具有一計數值,每一上述計數值指向上述指令序列中之一指令;以及一比較單元,係依據上述邏輯單元之上述計數值,決定一主控計數值,致使每一上述邏輯單元同步執行上述指令序列中上述主控計數值所指向之上述指令。
- 如申請專利範圍第6項所述之處理器,其中每一邏輯單元更包括一暫存器,並且一邏輯單元比較其計數值與上述主控計數值,若上述邏輯單元之上述計數值與上述主控計數值相同時,將上述指令對應之一執行結果寫入至上述邏輯單元之上述暫存器中。
- 如申請專利範圍第7項所述之處理器,其中若上述邏輯單元之上述計數值與上述主控計數值不相同時,上述邏輯單元忽略上述指令之上述執行結果或寫入一無效(Useless)標記至上述邏輯單元之上述暫存器中。
- 如申請專利範圍第7項所述之處理器,其中每一上述邏輯單元更具有一旗標,並且上述邏輯單元係依據其計數值與上述主控計數值之比較結果,設定或清除上述旗標,其中當上述邏輯單元之上述計數值與上述主控計數值相同時,上述邏輯單元設定上述旗標,而當上述邏輯單元之上述計數值與上述主控計數值不相同時,上述邏輯單元清除上述旗標。
- 如申請專利範圍第6項所述之處理器,其中上述比較單元係找出上述計數值中之一最小計數值,並設定上述主控計數值為上述最小計數值。
- 如申請專利範圍第10項所述之處理器,其中上述指令序列中每一被調用之函數之指令係位於對應之一調用函數之指令之前面。
- 如申請專利範圍第6項所述之處理器,更包括一指令緩衝器,並且上述邏輯單元係由上述指令緩衝器中找出上述主控計數值所對應之上述指令,並分別發送上述指令至上述邏輯單元中執行。
- 如申請專利範圍第6所述之處理器,其中上述多執行緒處理器包括一圖形處理器(Graphic Processing Unit,GPU)。
- 一種電腦程式產品,其係被一機器載入以執行一多執行緒處理器之指令執行及同步方法,其中上述多執行緒處理器內運行多個執行緒且上述多執行緒可同時執行一指令序列,上述電腦程式產品包括:一第一程式碼,用以得到一原始碼或一目的碼;一第二程式碼,用以編譯上述原始碼或上述目的碼,產生上述指令序列,其中於上述指令序列中每一被調用之函數係位於對應之一調用函數之前面;一第三程式碼,提供每一上述執行緒一計數值,每一上述計數值指向上述指令序列中之一指令,依據每一上述執行緒之上述計數值,決定一主控計數值,致使每一上述執行緒同步執行上述指令序列中上述主控計數值所指向之上述指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW99138628A TWI428833B (zh) | 2010-11-10 | 2010-11-10 | 多執行緒處理器及其指令執行及同步方法及其電腦程式產品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW99138628A TWI428833B (zh) | 2010-11-10 | 2010-11-10 | 多執行緒處理器及其指令執行及同步方法及其電腦程式產品 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201220202A TW201220202A (en) | 2012-05-16 |
TWI428833B true TWI428833B (zh) | 2014-03-01 |
Family
ID=46553091
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW99138628A TWI428833B (zh) | 2010-11-10 | 2010-11-10 | 多執行緒處理器及其指令執行及同步方法及其電腦程式產品 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI428833B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10474458B2 (en) | 2017-04-28 | 2019-11-12 | Intel Corporation | Instructions and logic to perform floating-point and integer operations for machine learning |
-
2010
- 2010-11-10 TW TW99138628A patent/TWI428833B/zh active
Also Published As
Publication number | Publication date |
---|---|
TW201220202A (en) | 2012-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102253426B1 (ko) | Gpu 다이버전스 배리어 | |
US9424038B2 (en) | Compiler-controlled region scheduling for SIMD execution of threads | |
KR102333341B1 (ko) | 마이크로프로세서 시스템에서의 예외 처리 | |
US8332854B2 (en) | Virtualized thread scheduling for hardware thread optimization based on hardware resource parameter summaries of instruction blocks in execution groups | |
US10067768B2 (en) | Execution of divergent threads using a convergence barrier | |
TWI529620B (zh) | 推理執行和回復 | |
KR101559090B1 (ko) | 이종 코어를 위한 자동 커널 마이그레이션 | |
US9891949B2 (en) | System and method for runtime scheduling of GPU tasks | |
KR20140015631A (ko) | 그래픽 프로세싱 유닛에서의 메모리 공유 | |
US10268519B2 (en) | Scheduling method and processing device for thread groups execution in a computing system | |
CN110308982B (zh) | 一种共享内存复用方法及装置 | |
US10013290B2 (en) | System and method for synchronizing threads in a divergent region of code | |
KR101941832B1 (ko) | 그래픽스 프로세싱 유닛들에 대한 셰이더들에서의 균일한 프레디케이트들 | |
JP2021034020A (ja) | ワークロードのスタティックマッピングの順不同にパイプライン化された実行を可能にする方法及び装置 | |
US8838941B2 (en) | Multi-thread processors and methods for instruction execution and synchronization therein and computer program products thereof | |
CN114610394B (zh) | 指令调度的方法、处理电路和电子设备 | |
US10289418B2 (en) | Cooperative thread array granularity context switch during trap handling | |
WO2020181670A1 (en) | Control flow optimization in graphics processing unit | |
JP4420055B2 (ja) | マルチスレッドプロセッサ及びそれに用いるスレッド間同期操作方法 | |
CN108021563B (zh) | 一种指令间数据依赖的检测方法和装置 | |
TWI428833B (zh) | 多執行緒處理器及其指令執行及同步方法及其電腦程式產品 | |
KR100837400B1 (ko) | 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치 | |
JP5238876B2 (ja) | 情報処理装置及び情報処理方法 | |
US20230236878A1 (en) | Efficiently launching tasks on a processor | |
JP2023552789A (ja) | 算術論理演算ユニット用のソフトウェアベースの命令スコアボード |