TWI901441B - 向量處理電路與向量處理方法 - Google Patents
向量處理電路與向量處理方法Info
- Publication number
- TWI901441B TWI901441B TW113144113A TW113144113A TWI901441B TW I901441 B TWI901441 B TW I901441B TW 113144113 A TW113144113 A TW 113144113A TW 113144113 A TW113144113 A TW 113144113A TW I901441 B TWI901441 B TW I901441B
- Authority
- TW
- Taiwan
- Prior art keywords
- circuit
- reduction instruction
- instruction
- computation
- reduction
- Prior art date
Links
Landscapes
- Advance Control (AREA)
Abstract
本揭露提供向量處理電路和向量處理方法。向量處理電路包括指令佇列、多個計算電路和控制電路。指令佇列包括第一縮減指令和第二縮減指令。計算電路具有多個管線階段。控制電路電性連接至指令佇列和計算電路。計算電路在多個時脈中交替產生第一縮減指令和第二縮減指令的結果。
Description
本揭露是關於向量處理電路和向量處理方法,特別是用於對向量執行縮減運算的電路和方法。
在向量處理中,縮減運算(reduction operation)是一種經常使用的運算,通過特定計算(如加法、乘法、邏輯運算等)將向量中的多個元素縮減為單一結果。然而,縮減運算的執行順序對最終結果有顯著影響,尤其是在浮點計算中,不同的計算順序可能導致精度損失或結果差異。這種順序依賴性對多核心或多執行緒環境中的平行處理帶來挑戰,因為不同執行緒可能以不同順序存取和處理資料。由於縮減運算常見於科學計算、機器學習和訊號處理等領域,加速這些運算以提高整體系統性能已成為一個重要議題。
本揭露提出一種以交錯方式執行縮減指令的向量處理電路和向量處理方法。
本揭露的實施例提供一種向量處理電路,包括指令佇列、多個計算電路和控制電路。指令佇列包括第一縮減指令和第二縮減指令。計算電路具有多個管線階段。控制電路電連接到指令佇列和計算電路。計算電路在多個時脈中交替產生第一縮減指令和第二縮減指令的結果。
在一些實施例中,計算電路依序產生第一縮減指令的暫時結果、第二縮減指令的暫時結果、第一縮減指令的最終結果和第二縮減指令的最終結果。
在一些實施例中,計算電路包括第一計算電路和第二計算電路。第一計算電路產生第一縮減指令和第二縮減指令的暫時結果和最終結果。第二計算電路產生第一縮減指令和第二縮減指令的暫時結果。
在一些實施例中,控制電路包括:電連接到第二計算電路的來源運算元;以及電連接到來源運算元、第一計算電路和第二計算電路的選擇電路。
在一些實施例中,選擇電路包括一個多工器。此多工器的輸入端連接到來源運算元和第二計算電路。多工器的輸出端連接到第一計算電路。
在一些實施例中,第一縮減指令和第二縮減指令是浮點縮減指令。上述的管線階段包括移位階段。
在一些實施例中,第一縮減指令和第二縮減指令是浮點縮減求和指令。管線階段包括正規化階段。
從另一方面來看,本揭露的實施例提供了由向量處理電路執行的向量處理方法。該向量處理方法包括:將第一縮減指令和第二縮減指令儲存在指令佇列中;以及由多個計算電路在多個時脈中交替產生第一縮減指令和第二縮減指令的結果,其中計算電路具有多個管線階段。
在一些實施例中,交替產生第一縮減指令和第二縮減指令結果的步驟包括:依序產生第一縮減指令的暫時結果、第二縮減指令的暫時結果、第一縮減指令的最終結果,以及第二縮減指令的最終結果。
在一些實施例中,計算電路包括第一計算電路和第二計算電路。向量處理方法包括:由第一計算電路產生第一縮減指令和第二縮減指令的暫時結果和最終結果;以及由第二計算電路產生第一和第二縮減指令的暫時結果。
為了使本揭露的上述特徵和優點更加明顯和易於理解,以下結合附圖提供詳細解釋的實例。
本揭露的一些實施例現在將參照附圖詳細描述。當相同的元件符號出現在不同的圖中時,將被視為相同或相似的元件。這些實施例只是揭露的一部分,並未揭露揭露的所有可能實施例。更準確地說,這些實施例是本發明專利申請範圍內系統和方法的範例。
關於本文件中使用的「第一」、「第二」等,它們並不特別表示順序或序列。它們僅用於區分以相同技術術語描述的元件或操作。
圖1是根據一實施例說明電子裝置的部分方塊圖。參考圖1,電子裝置100可為智慧型手機、各種形式的電腦,或具有計算能力的各種電子裝置。電子裝置100包括中央處理器(central preprocess unit,CPU)集群110、匯流排150、記憶體160和周邊設備170。CPU集群110通過匯流排150與記憶體160和周邊設備170電性連接。周邊設備170可為鍵盤、滑鼠、麥克風、通訊裝置、顯示裝置等,但本發明不限於這些。CPU集群110包括一個或多個核心,圖1中繪示了核心120和核心130,但本發明不限制核心的數量。CPU集群110還包括共享快取140,其與核心120和核心130電性連接。核心120包括私有快取121,核心130包括私有快取131,私有快取121和私有快取131與共享快取140電性連接。本文提出的向量處理電路位於核心120和/或核心130中。
圖2是根據一實施例說明核心的方塊圖。參考圖2,以核心120為例進行說明。核心120包括多個向量處理電路211~213、資料快取220、指令快取230、指令單元240和向量暫存器檔250。從共享快取140獲得的資料儲存在資料快取220中,而從共享快取140獲得的指令儲存在指令快取230中。這些指令也提供給指令單元240,用於解碼指令並確定指令的執行順序。在此實施例中繪示了三個向量處理電路211~213,但本發明不限制核心中向量處理電路的數量。向量暫存器檔250包括多個向量暫存器251~253,每個暫存器用於儲存一個向量。在圖2中,每個向量包括8個元素e0~e7,但本發明不限制向量中元素的數量,也不限制每個元素包含的位元數。以下揭露的技術可應用於任何長度的向量,並可應用於任何數量的元素。
以向量處理電路211為例,向量處理電路211包括向量指令佇列260(也稱為指令佇列)、來源運算元271~272、目標運算元273和多個計算電路(如計算電路280)。向量指令佇列260用於儲存多個縮減指令261~263。縮減指令261~263可為浮點縮減指令、浮點縮減求和(floating-point reduction sum)指令、浮點縮減最大值(floating-point reduction max)指令等。
圖11是根據一實施例說明指令261~263的方塊圖。指令261包括操作碼1110、目標運算元索引1111和兩個來源運算元索引1112和1113。來源和目標運算元索引是向量暫存器檔250的向量暫存器251~253的索引。以下表格1列出一些可能的指令及其對應的操作,當執行縮減指令時會執行相關的操作。記號v0[0]指向量暫存器251的e0,v31[7]指向量暫存器253的e7,依此類推。當執行表格1中的加法指令時,v31[0]儲存v0[0]+v1[0]的結果,v31[1]儲存v0[1]+v1[1]的結果,依此類推。同樣地,當執行表格1中的減法指令時,v31[0]儲存v0[0]-v1[0]的結果,v31[1]儲存v0[1]-v1[1]的結果,依此類推。加法或減法指令的來源運算元是兩個向量,目標運算元也是一個向量。縮減指令的來源運算元是一個向量,目標運算元是一個純量元素。對於表格1中的縮減求和指令,v31[0]保存v0[0]+v0[1]+v0[2]+v0[3]+v0[4]+v0[5]+v0[6]+v0[7]的結果。
表格1
| 操作碼 | 目標索引 | 來源索引1 | 來源索引2 | 操作 |
| add | v31 | v0 | v1 | v31[0] = v0[0] + v1[0] v31[1] = v0[1] + v1[1] … v31[1] = v0[7] + v1[7] |
| sub | v31 | v9 | v1 | v31[0] = v0[0] - v1[0] v31[1] = v0[1] - v1[1] … v31[1] = v0[7] - v1[7] |
| 縮減求和 | v31 | v0 | n.a. | v31[0] = v0[0] + v0[1] + v0[2] + v0[3] + v0[4] + v0[5] + v0[6] + v0[7] |
來源運算元271~272保存指令的輸入值。在執行指令時,向量處理電路260根據指令的來源運算元索引1112~1113從向量暫存器檔250提取來源運算元271~272。例如,在執行表格1中的加法指令時,來源運算元271保存v0[0]、v0[1]、...、v0[7]的值,而來源運算元272保存v1[0]、v1[1]、...、v1[7]的值。
目標運算元273保存指令的最終結果。在執行指令時,向量處理電路260根據目標運算元索引1111將目標運算元寫回向量暫存器檔250。例如,在執行表格1中的加法指令時,目標運算元273保存v0[0]+v1[0]、v0[1]+v1[1]、...、v0[7]+v1[7]的結果。
計算電路280根據指令的操作碼1110從來源運算元產生目標運算元。計算電路280被配置為根據指令的操作碼執行加法、減法、乘法、除法、最大值、各種邏輯運算等。計算電路280包括多個管線階段,以交錯方式執行縮減指令,同時維持正確的執行順序。此外,多個計算電路280中的一些計算電路可能被重複使用。以下將說明幾個實施例。
[第一實施例]
在第一實施例中,縮減指令被配置為執行縮減求和,因此計算電路280被配置為執行加法。圖3是說明根據第一實施例的計算電路中多個管線階段的示意圖。在圖3的實施例中,浮點加法被分為三個階段,對應於管線階段F1~F3,分別被配置為執行移位、加法和正規化。管線階段F1~F3也分別稱為移位階段、加法階段和正規化階段。
具體來說,管線階段F1包括暫存器311、312和位移器313。暫存器311儲存第一運算元,而暫存器312儲存第二運算元。第一運算元和第二運算元分別屬於向量中的兩個元素,這兩個元素都是浮點數。浮點數的位元個數可能是16、32、64或其他值,在本發明中不受限制。位移器313根據兩個運算元的指數移位小數部分。例如,在IEEE 754標準中,32位元浮點數包括1個位元用於正負號、8個位元用於指數、和23個位元用於小數部分。假設第一運算元的值為「3.5」,表示為1.11₂ × 2¹;第二運算元的值為「0.5」,表示為1.0₂ × 2⁻¹。為了執行加法,指數必須相同,所以「0.5」的小數部分可以被移位表示為0.01₂ × 2¹。此外,第一運算元不需要移位。
管線階段F2包括暫存器321、322和加法器323。暫存器321儲存第一運算元,表示為1.11₂ × 2¹,而暫存器322儲存移位後的第二運算元,表示為0.01₂ × 2¹。接下來,加法器323對兩個運算元的小數部分執行加法,而指數保持不變。加法後的結果表示為10.00₂ × 2¹。
管線階段F3包括暫存器331和正規化電路332。暫存器331儲存來自加法器323的計算結果,表示為10.00₂ × 2¹。正規化電路332對計算結果進行正規化。在本實施例中,正規化後的結果表示為1.00₂ × 2²。在本實施例中,浮點加法被用作說明,但計算電路280也可用於整數加法。本發明不限於上述例子。
圖4是根據第一實施例說明向量處理電路的部分電路圖。在圖4的實施例中繪示了一個向量處理電路400,其可應用於圖2中的向量處理電路211~213。向量處理電路400包括向量指令佇列260(也稱為指令佇列)、來源運算元410、選擇電路420、計算電路P0~P3和目標運算元430。來源運算元410和選擇電路420統稱為控制電路440。控制電路440電性連接至指令佇列260和計算電路P0~P3。
來源運算元410從向量暫存器檔250中提取,並包括多個元素e0~e7。選擇電路420電性連接至來源運算元410,選擇電路420包括多工器421~424。計算電路P0、P1電性連接至選擇電路420,而計算電路P2、P3電性連接至選擇電路420和來源運算元410。
計算電路P2、P3的計算結果傳輸到選擇電路420,且計算電路P0、P1的計算結果也回饋到選擇電路420。選擇電路420為計算電路P0、P1選擇適當的資料。向量縮減求和在多次迭代中完成。每次迭代在多個時脈中產生縮減指令的結果。第一次迭代從來源運算元產生暫時結果,最後一次迭代從暫時結果產生最終結果。暫時結果由多個元素組成,而最終結果是一個純量元素。不同迭代的結果無法在一個時脈中產生,這是由於資料相依性。在這些迭代中,由計算電路P0~P3產生的暫時結果從右向左傳遞,且左側的計算電路被重複使用。具體來說,在第一次迭代中,選擇電路420將元素e0~e3傳輸到計算電路P0、P1,而計算電路P2、P3接收元素e4~e7;在第二次迭代中,選擇電路420將計算電路P2、P3產生的暫時結果傳輸到計算電路P1,選擇電路420也將計算電路P0、P1產生的暫時結果傳輸到計算電路P0。在第三次迭代中,選擇電路420將計算電路P0、P1產生的暫時結果傳輸到計算電路P0。最後,計算電路P0產生縮減求和的結果,該結果儲存在目標運算元430中。
從另一個角度來看,在第一次迭代中,計算電路P0產生暫時結果temp1=e0+e1,計算電路P1產生暫時結果temp2=e2+e3,計算電路P2產生暫時結果temp3=e4+e5,且計算電路P3產生暫時結果temp4=e6+e7。在第二次迭代中,計算電路P1產生暫時結果temp6=temp3+temp4,且計算電路P0產生暫時結果temp5=temp1+temp2。在第三次迭代中,計算電路P0產生最終結果(即final=temp5+temp6),該最終結果被寫入目標運算元430。在此實施例中,一個向量包括8個元素,因此需要次迭代。如果向量包括更多元素,則需要更多次迭代來完成一個縮減指令。
此外,每個計算電路P0~P3包括多個管線階段(如圖3所示)。這些管線階段以交錯方式執行多個縮減指令。換句話說,多個指令的暫時結果以交替順序產生。例如,計算電路P0~P3在多個時脈中交替產生第一縮減指令和第二縮減指令的結果。
以下將結合多工器421~424的操作和管線設計進行說明。首先,每個多工器421~424的輸出端電性連接至計算電路P0、P1之一。具體來說,多工器421、422的輸出端電性連接至計算電路P0,且多工器423、424的輸出端電性連接至計算電路P1。多工器421~424的第一輸入端(右側)電性連接至來源運算元410。多工器421、422的第二輸入端(左側)分別電性連接至計算電路P0、P1,而多工器423、424的第二輸入端(左側)分別電性連接至計算電路P2、P3。
圖5是根據第一實施例說明在每個時脈中哪個管線階段處理哪個元素的表格。參考圖4和圖5,表格500的列(row)分別對應11個時脈,且24行(column)分別對應3個指令中的24個元素。
在第一個時脈中,多工器421~424將屬於第一縮減指令的元素e0~e3從來源運算元410傳輸到計算電路P0、P1,其中元素e0、e1在計算電路P0的管線階段F1處理(在表格500中寫為P0@F1,以此類推),元素e2、e3在計算電路P1的管線階段F1處理。此外,第一縮減指令的元素e4、e5在計算電路P2的管線階段F1處理,第一縮減指令的元素e6、e7在計算電路P3的管線階段F1處理。換句話說,計算電路P0~P3的管線階段F1執行第一縮減指令。
在第二個時脈中,多工器421~424將屬於第二縮減指令的元素e0~e3從來源運算元410傳輸到計算電路P0、P1,其中管線階段F1執行第二縮減指令。此外,管線階段F2執行第一縮減指令。例如,計算電路P0的第二管線階段F2將元素e0、e1相加;計算電路P1的第二管線階段F2將元素e2、e3相加;計算電路P2的第二管線階段F2將元素e4、e5相加;計算電路P3的第二管線階段F2將元素e6、e7相加。換句話說,在第二個時脈中,管線階段F2執行第一縮減指令,而管線階段F1執行第二縮減指令。
在第三個時脈中,多工器421~424將屬於第三縮減指令的元素e0~e3從來源運算元410傳輸到計算電路P0、P1,其中管線階段F1執行第三縮減指令。換句話說,在第三個時脈中,管線階段F3執行第一縮減指令,而管線階段F2執行第二縮減指令,且管線階段F1執行第三縮減指令。從另一個角度來看,計算電路P0~P3中的第一管線階段F1分別在前三個時脈中執行第一縮減指令、第二縮減指令和第三縮減指令。
在第四個時脈中,多工器421、422將計算電路P0、P1產生的暫時結果temp1、temp2傳輸到計算電路P0;多工器423、424將計算電路P2、P3產生的暫時結果temp3、temp4傳輸到計算電路P1。計算電路P0的第一管線階段F1處理暫時結果temp1、temp2(對應元素e0~e3),而計算電路P1的第一管線階段F1處理暫時結果temp3、temp4(對應元素e4~e7)。此外,計算電路P0~P3的第三管線階段F3執行第二縮減指令,且計算電路P0~P3的第二管線階段F2執行第三縮減指令。第五個時脈和第六個時脈遵循相同的模式。
從另一個角度來看,在第四個時脈中,計算電路P0、P1中的管線階段F1處理對應第一縮減指令的暫時結果temp1~temp4。然而,在第五個時脈中,計算電路P0、P1中的管線階段F1處理對應第二縮減指令的暫時結果temp1~temp4。一個管線階段在不同時脈中處理不同的縮減指令,因此符合交錯設計。
在第七個時脈中,多工器421、422將計算電路P0、P1產生的暫時結果temp5、temp6傳輸到計算電路P0,其中管線階段F1處理它們。具體來說,計算電路P0的計算結果(e0+e1+e2+e3)被回饋到計算電路P0的輸入,而計算電路P1的計算結果(e4+e5+e6+e7)也被傳輸到計算電路P0的輸入。此外,計算電路P0~P3的第三管線階段F3執行第二縮減指令,且計算電路P0~P3的第二管線階段F2執行第三縮減指令。第八到第十一個時脈遵循相同的模式。
從圖5可以清楚看出,管線階段F1~F3以交錯方式執行3個縮減指令。計算電路P0~P3依序產生第一縮減指令的暫時結果(例如temp1~temp4)、第二縮減指令的暫時結果(例如temp1~temp4)、第一縮減指令的最終結果,以及第二縮減指令的最終結果。在一些實施例中,第1到第3個時脈稱為對應第一縮減指令的第一次迭代,第4到第6個時脈稱為對應第一縮減指令的第二次迭代,第7到第9個時脈稱為對應第一縮減指令的第三次迭代。同樣地,第2到第4個時脈稱為對應第二縮減指令的第一次迭代,第5到第7個時脈稱為對應第二縮減指令的第二次迭代,第8到第10個時脈稱為對應第二縮減指令的第三次迭代。
請注意,計算電路P0被使用多次。計算電路P0產生第一縮減指令和第二縮減指令的暫時結果(例如temp1和temp6)和最終結果。計算電路P1~P3產生第一縮減指令和第二縮減指令的暫時結果(例如temp2~5)。
從另一個角度來看,在此解釋計算電路P0的操作。圖6說明根據第一個實施例在計算電路P0中每個管線階段的計算圖表。請參考圖3、圖4和圖6。表格600僅描述多工器421、422和計算電路P0的操作。
在第一個時脈之前,多工器421從來源運算元410選擇屬於第一縮減指令的元素,多工器422也從來源運算元410選擇屬於第一縮減指令的元素。
在第一個時脈中,管線階段F1中的兩個暫存器311、312分別儲存第一縮減指令的元素e0、e1。同時,多工器421從來源運算元410選擇屬於第二縮減指令的元素,多工器422也從來源運算元410選擇屬於第二縮減指令的元素。
在第二個時脈中,管線階段F2中的暫存器321、322分別儲存第一縮減指令的元素e0、e1。管線階段F1中的兩個暫存器311、312分別用於儲存第二縮減指令的元素e0、e1。管線階段F2執行第一縮減指令,而管線階段F1執行第二縮減指令。同時,多工器421從來源運算元410選擇屬於第三縮減指令的元素,多工器422也從來源運算元410選擇屬於第三縮減指令的元素。
在第三個時脈中,管線階段F3中的暫存器331儲存對應於第一縮減指令的兩個元素e0、e1的總和。管線階段F3執行第一縮減指令,管線階段F2執行第二縮減指令,管線階段F1執行第三縮減指令。計算電路P0的輸出是暫時結果(temp1)。同時,多工器421選擇由計算電路P0產生的暫時結果temp1,多工器422選擇由計算電路P1產生的暫時結果temp2。第4和第5個時脈遵循類似的模式。
在第六個時脈中,管線階段F3產生兩個暫時結果temp1和temp2的總和。管線階段F3執行第一縮減指令,管線階段F2執行第二縮減指令,管線階段F1執行第三縮減指令。多工器421選擇由計算電路P0產生的暫時結果temp5,多工器422選擇由計算電路P1產生的暫時結果temp6。後續時脈遵循類似的模式。
[第二實施例]
在第二實施例中,縮減指令被配置為執行縮減最大值運算。第二實施例中的向量處理電路與第一實施例類似(如圖4所示),差異在於每個計算電路P0~P3執行最大值計算。圖7是根據第二實施例說明計算電路中多個管線階段的電路圖。參考圖7,計算電路700可應用於圖4中的計算電路P0~P3。計算電路700包括管線階段F1和F2,分別用於執行移位和比較。具體來說,管線階段F1包括暫存器711、712和位移器720。暫存器711用於儲存第一運算元,暫存器712用於儲存第二運算元。暫存器711、712電性連接至位移器720,位移器720用於根據兩個運算元的指數移位其小數,使兩個運算元的指數相同。
管線階段F2包括暫存器731~734、比較器740和多工器750。暫存器731用於儲存移位後的第一運算元,暫存器732用於儲存移位後的第二運算元,暫存器733用於儲存原始的第一運算元,暫存器734用於儲存原始的第二運算元。比較器740電性連接至暫存器731、732,用於比較兩個移位後的運算元以產生比較結果,該結果指示哪個運算元比較大。這個比較結果也傳輸到多工器750。多工器750也電性連接至暫存器733、734,並根據比較結果選擇較大的運算元作為輸出。
參考圖4和圖7,在第一迭代中,多工器421~424將元素e0~e3從來源運算元410傳輸到計算電路P0、P1,而計算電路P2、P3從來源運算元410獲取元素e4~e7。計算電路P0產生暫時結果temp1=max(e0,e1),計算電路P1產生暫時結果temp2=max(e2,e3),計算電路P2產生暫時結果temp3=max(e4,e5),計算電路P3產生暫時結果temp4=max(e6,e7)。
在第二迭代中,多工器421、422將計算電路P0、P1產生的暫時結果temp1、temp2回饋到計算電路P0,而多工器423、424將計算電路P2、P3產生的暫時結果temp3、temp4傳輸到計算電路P1。計算電路P0產生暫時結果temp5=max(temp1,temp2),計算電路P1產生暫時結果temp6=max(temp3,temp4)。
在第三迭代中,多工器421、422將計算電路P0、P1產生的暫時結果temp5、temp6回饋到計算電路P0。計算電路P0產生最終結果(即final=max(temp5,temp6)),並將此最終結果寫入目標運算元430。
在第二實施例中,每個計算電路包括兩個管線階段,因此每次迭代包含兩個時脈。與第一實施例類似,在第二實施例中管線階段也以交錯方式執行多個縮減指令。此外,當管線階段F1執行某個縮減指令時,管線階段F2執行另一個縮減指令。
[第三實施例]
在第三實施例中,一個向量包含16個元素,縮減指令被配置為執行縮減求和。圖8是根據第三實施例說明向量處理電路的示意圖。參考圖8,向量處理電路800包括向量指令佇列810(也稱為指令佇列)、來源運算元820、選擇電路830、計算電路P0~P7和目標運算元840。來源運算元820和選擇電路統稱為控制電路,此控制電路電性連接至指令佇列810和計算電路P0~P7。選擇電路830包括多工器831~838。其中,計算電路P0~P3電性連接至選擇電路830,而計算電路P4~P7電性連接至選擇電路830和來源運算元820。多工器831~838的第一輸入端電性連接至來源運算元820。多工器838的第二輸入端電性連接至計算電路P7。多工器837的第二輸入端電性連接至計算電路P6。多工器836的第二輸入端電性連接至計算電路P5。多工器835的第二輸入端電性連接至計算電路P4。多工器834的第二輸入端電性連接至計算電路P3。多工器833的第二輸入端電性連接至計算電路P2。多工器832的第二輸入端電性連接至計算電路P1。多工器831的第二輸入端電性連接至計算電路P0。
在第一迭代中,多工器831~838從來源運算元820傳輸元素e0~e7到計算電路P0~P3,而計算電路P4~P7從來源運算元820獲取元素e8~e15。計算電路P0產生暫時結果temp1=e0+e1,計算電路P1產生暫時結果temp2=e2+e3,計算電路P2產生暫時結果temp3=e4+e5,計算電路P3產生暫時結果temp4=e6+e7,計算電路P4產生暫時結果temp5=e8+e9,計算電路P5產生暫時結果temp6=e10+e11,計算電路P6產生暫時結果temp7=e12+e13,計算電路P7產生暫時結果temp8=e14+e15。
在第二迭代中,多工器837和838傳輸由計算電路P6和P7產生的暫時結果temp7和temp8到計算電路P3。多工器835和836傳輸由計算電路P4和P5產生的暫時結果temp5和temp6到計算電路P2。多工器833和834傳輸由計算電路P2和P3產生的暫時結果temp3和temp4到計算電路P1。多工器831和832傳輸由計算電路P0和P1產生的暫時結果temp1和temp2到計算電路P0。計算電路P0產生暫時結果temp9=temp1+temp2,計算電路P1產生暫時結果temp10=temp3+temp4,計算電路P2產生暫時結果temp11=temp5+temp6,計算電路P3產生暫時結果temp12=temp7+temp8。
在第三迭代中,多工器833和834傳輸由計算電路P2和P3產生的暫時結果temp11和temp12到計算電路P1,多工器831和832傳輸由計算電路P0和P1產生的暫時結果temp9和temp10到計算電路P0。計算電路P0產生暫時結果temp13=temp9+temp10,計算電路P1產生暫時結果temp14=temp11+temp12。
在第四迭代中,多工器831和832傳輸由計算電路P0和P1產生的暫時結果temp13和temp14到計算電路P0。計算電路P0產生最終結果(即final=temp13+temp14),並傳輸此最終結果到目標運算元840。
類似於第一和第二實施例,第三實施例也以交錯方式執行多個縮減指令。圖9是說明根據第三實施例在每個時脈中哪個管線階段處理哪個元素的表格。參考圖9中的表格900,在此實施例中,第1到第3時脈也可稱為第一迭代,第4到第6時脈可稱為第二迭代,第7到第9時脈可稱為第三迭代,第10到第12時脈可稱為第四迭代。為簡化起見,表格900未繪示其他縮減指令,但所屬技術領域中具有通常知識者可根據圖5理解其他縮減指令的相關計算。
在此實施例中,一個向量包括16個元素,因此需要次迭代。雖然需要更多迭代,但由於採用交錯設計,向量處理電路的處理量仍然得到改善。
[第四實施例]
在第四實施例中,一個向量包括16個元素,縮減指令被配置為執行縮減最大值運算。在第四實施例中,向量處理電路類似於第三實施例(如圖8所示),差異在於計算電路P0~P7被配置為執行最大值運算(如圖7所示)。
在第一迭代中,多工器831~838從來源運算元820傳輸元素e0~e7到計算電路P0~P3,而計算電路P4~P7從來源運算元820獲取元素e8~e15。計算電路P0產生暫時結果temp1=max(e0, e1),計算電路P1產生暫時結果temp2=max(e2,e3),計算電路P2產生暫時結果temp3=max(e4,e5),計算電路P3產生暫時結果temp4=max(e6,e7),計算電路P4產生暫時結果temp5=max(e8,e9),計算電路P5產生暫時結果temp6=max(e10,11),計算電路P6產生暫時結果temp7=max(e12,e13),計算電路P7產生暫時結果temp8=max(e14,e15)。
在第二迭代中,多工器837和838傳輸由計算電路P6和P7產生的暫時結果temp7和temp8到計算電路P3。多工器835和836傳輸由計算電路P4和P5產生的暫時結果temp5和temp6到計算電路P2。多工器833和834傳輸由計算電路P2和P3產生的暫時結果temp3和temp4到計算電路P1。多工器831和832傳輸由計算電路P0和P1產生的暫時結果temp1和temp2到計算電路P0。計算電路P0產生暫時結果temp9=max(temp1,temp2),計算電路P1產生暫時結果temp10=max(temp3,temp4),計算電路P2產生暫時結果temp11=max(temp5,temp6),計算電路P3產生暫時結果temp12=max(temp7,temp8)。
在第三迭代中,多工器833和834傳輸由計算電路P2和P3產生的暫時結果temp11和temp12到計算電路P1,多工器831和832傳輸由計算電路P0和P1產生的暫時結果temp9和temp10到計算電路P0。計算電路P0產生暫時結果temp13=max(temp9,temp10),計算電路P1產生暫時結果temp14=max(temp11,temp12)。
在第四次迭代中,多工器831和832傳輸由計算電路P0和P1產生的暫時結果temp13和temp14到計算電路P0。計算電路P0產生最終結果(即final=max(temp13,temp14)),並將此最終結果傳輸到目標運算元840。
圖10是根據第四實施例說明在每個時脈中哪個管線階段處理哪個元素的表格。參考圖10,為簡單起見,表格1000僅說明一個縮減指令的元素。在此實施例中,第1至第2時脈稱為第一迭代,第3至第4時脈稱為第二迭代,第5至第6時脈稱為第三迭代,第7至第8時脈稱為第四迭代。與第一至第三實施例類似,在第四實施例中管線階段也以交錯方式執行多個縮減指令。例如,當管線階段F1執行一個縮減指令時,管線階段F2執行另一個縮減指令。
在一些實施例中,上述向量處理電路也可以實現在核心外的元件中,例如在圖形處理單元、張量處理單元(tensor processing unit, TPU)、神經處理單元(neural processing unit, NPU)等中。或者,在一些實施例中,向量處理電路也可以實現在電子裝置中,如顯示卡、顯示器等。
[第五實施例]
圖12是根據一實施例說明向量處理方法的流程圖。參考圖12,在步驟1201中,將第一縮減指令和第二縮減指令儲存在指令佇列中。在步驟1202中,多個計算電路在多個時脈中交替產生第一縮減指令和第二縮減指令的結果。計算電路具有多個管線階段。圖12的方法可應用於第一至第四實施例。
在上述提出的向量處理電路和向量處理方法中,由於在每個計算電路中實現了多個管線階段,這些管線階段以交錯方式執行多個縮減指令,可能會增加整體吞吐量(throughput)。另一方面,多個計算電路被重複使用,這可降低電路成本。
雖然本發明已通過上述實施例揭露,但並非意圖限制本發明。所屬技術領域中具有通常知識者可以在不脫離本發明的精神和範圍的情況下進行細微修改和改進。因此,本發明的保護範圍應由所附權利要求來定義。
100:電子裝置
110:中央處理器集群
120,130:核心
121,131:私有快取
140:共享快取
150:匯流排
160:記憶體
170:周邊設備
211~213,260,400,800:向量處理電路
220:資料快取
230:指令快取
240:指令單元
250:向量暫存器檔
251~253:向量暫存器
260,810:指令佇列
261~263:指令
271,272,410,820:來源運算元
273,430,840:目標運算元
280,700,P0~P7:計算電路
311,312,321,322,331,711,712,731~734:暫存器
313,720:位移器
323:加法器
332:正規化電路
F1~F3:管線階段
420,830:選擇電路
421~424,750,831~838:多工器
440:控制電路
e0~e15:元素
500,600,900,1000:表格
740:比較器
1110:操作碼
1111:目標運算元索引
1112,1113:來源運算元索引
1201,1202:步驟
圖1是根據一實施例說明電子裝置的部分方塊圖。
圖2是根據一實施例說明核心的方塊圖。
圖3是根據第一實施例說明計算電路中多個管線階段的示意圖。
圖4是根據第一實施例說明向量處理電路的部分電路圖。
圖5是根據第一實施例說明每個時脈中哪個管線階段處理哪個元素的表格。
圖6是根據第一實施例說明計算電路P0中每個管線階段的計算的示意圖。
圖7是根據第二實施例說明計算電路中多個管線階段的電路示意圖。
圖8是根據第三實施例說明向量處理電路的示意圖。
圖9是根據第三實施例說明每個時脈中哪個管線階段處理哪個元素的表格。
圖10是根據第四實施例說明每個時脈中哪個管線階段處理哪個元素的表格。
圖11是根據一實施例說明指令的圖表。
圖12是根據一實施例說明向量處理方法的流程圖。
250:向量暫存器檔
260:指令佇列
261~263:指令
400:向量處理電路
410:來源運算元
420:選擇電路
421~424:多工器
430:目標運算元
440:控制電路
e0~e7:元素
P0~P3:計算電路
Claims (12)
- 一種向量處理電路,包括: 一指令佇列,其中該指令佇列包括第一縮減指令和第二縮減指令, 多個計算電路,其中該些計算電路具有多個管線階段;以及 一控制電路,其中該控制電路電性連接至該指令佇列和該多個計算電路, 其中該多個計算電路在多個時脈交替產生該第一縮減指令和該第二縮減指令的結果。
- 如請求項1所述的向量處理電路,其中該多個計算電路依序產生該第一縮減指令的暫時結果、該第二縮減指令的暫時結果、該第一縮減指令的最終結果,以及該第二縮減指令的最終結果。
- 如請求項2所述的向量處理電路,其中該多個計算電路包括一第一計算電路和一第二計算電路, 其中該第一計算電路產生該第一縮減指令和該第二縮減指令的一暫時結果和該最終結果, 其中該第二計算電路產生該第一縮減指令和該第二縮減指令的一暫時結果。
- 如請求項3所述的向量處理電路,其中該控制電路包括: 一來源運算元,電性連接至該第二計算電路;以及 一選擇電路,電性連接至該來源運算元、該第一計算電路和該第二計算電路。
- 如請求項4所述的向量處理電路,其中該選擇電路包括一多工器, 其中該多工器的多個輸入端連接至該來源運算元和該第二計算電路, 其中該多工器的一輸出端連接至該第一計算電路。
- 如請求項1所述的向量處理電路,其中該第一縮減指令和該第二縮減指令是浮點縮減指令, 其中該些管線階段包括一移位階段。
- 如請求項1所述的向量處理電路,其中該第一縮減指令和該第二縮減指令是浮點縮減求和指令, 其中該些管線階段包括一正規化階段。
- 一種向量處理方法,由一向量處理電路執行,該向量處理方法包括: 將一第一縮減指令和一第二縮減指令儲存在一指令佇列中;以及 由多個計算電路在多個時脈中交替產生該第一縮減指令和該第二縮減指令的結果,其中該些計算電路具有多個管線階段。
- 如請求項8所述的向量處理方法,其中交替產生該第一縮減指令和該第二縮減指令的結果的步驟包括: 依序產生該第一縮減指令的暫時結果、該第二縮減指令的暫時結果、該第一縮減指令的最終結果,以及該第二縮減指令的最終結果。
- 如請求項9所述的向量處理方法,其中該多個計算電路包括第一計算電路和第二計算電路,且該向量處理方法包括: 由該第一計算電路產生該第一縮減指令和該第二縮減指令的一暫時結果和該最終結果;以及 由該第二計算電路產生該第一縮減指令和該第二縮減指令的一暫時結果。
- 如請求項8所述的向量處理方法,其中該第一縮減指令和該第二縮減指令是浮點縮減指令, 其中該管線階段包括移位階段。
- 如請求項8所述的向量處理方法,其中該第一縮減指令和該第二縮減指令是浮點縮減求和指令, 其中該些管線階段包括正規化階段。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202418939572A | 2024-11-07 | 2024-11-07 | |
| US18/939,572 | 2024-11-07 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| TWI901441B true TWI901441B (zh) | 2025-10-11 |
Family
ID=98263798
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW113144113A TWI901441B (zh) | 2024-11-07 | 2024-11-15 | 向量處理電路與向量處理方法 |
Country Status (1)
| Country | Link |
|---|---|
| TW (1) | TWI901441B (zh) |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TW201723810A (zh) * | 2015-12-15 | 2017-07-01 | 英特爾公司 | 用於部分縮減操作之指令及邏輯 |
| TW201732563A (zh) * | 2015-12-24 | 2017-09-16 | 英特爾股份有限公司 | 分散縮減指令 |
| US20210303305A1 (en) * | 2020-03-31 | 2021-09-30 | Andes Technology Corporation | Processor having latency shifter and controlling method using the same |
| US20240004662A1 (en) * | 2022-07-02 | 2024-01-04 | Intel Corporation | Instructions and support for horizontal reductions |
| TW202416229A (zh) * | 2020-07-30 | 2024-04-16 | 美商蘋果公司 | 用以偵測射線與圖形基元之間的相交的設備及方法,以及非暫時性電腦可讀儲存媒體 |
-
2024
- 2024-11-15 TW TW113144113A patent/TWI901441B/zh active
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TW201723810A (zh) * | 2015-12-15 | 2017-07-01 | 英特爾公司 | 用於部分縮減操作之指令及邏輯 |
| TW201732563A (zh) * | 2015-12-24 | 2017-09-16 | 英特爾股份有限公司 | 分散縮減指令 |
| US20210303305A1 (en) * | 2020-03-31 | 2021-09-30 | Andes Technology Corporation | Processor having latency shifter and controlling method using the same |
| TW202416229A (zh) * | 2020-07-30 | 2024-04-16 | 美商蘋果公司 | 用以偵測射線與圖形基元之間的相交的設備及方法,以及非暫時性電腦可讀儲存媒體 |
| US20240004662A1 (en) * | 2022-07-02 | 2024-01-04 | Intel Corporation | Instructions and support for horizontal reductions |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN107077416B (zh) | 用于以选择性舍入模式进行向量处理的装置和方法 | |
| KR102413832B1 (ko) | 벡터 곱셈 덧셈 명령 | |
| KR102447636B1 (ko) | 부동 소수점 수를 누산하기 위한 산술 연산을 수행하는 장치 및 방법 | |
| Warren | Hacker's delight | |
| JP3605181B2 (ja) | 掛け算累算命令を使用したデータ処理 | |
| US20060149804A1 (en) | Multiply-sum dot product instruction with mask and splat | |
| WO2015114305A1 (en) | A data processing apparatus and method for executing a vector scan instruction | |
| US10579338B2 (en) | Apparatus and method for processing input operand values | |
| CN111433741A (zh) | 向量带进位加法指令 | |
| TWI822952B (zh) | 迭代運算的處理 | |
| US10459688B1 (en) | Encoding special value in anchored-data element | |
| CN114265575A (zh) | 浮点数处理方法、装置、电子设备及存储介质 | |
| GB2600915A (en) | Floating point number format | |
| TWI901441B (zh) | 向量處理電路與向量處理方法 | |
| CN114661355B (zh) | Risc架构处理器的寄存器架构、寄存器组及risc架构处理器 | |
| US20090083507A1 (en) | Shift-add mechanism | |
| US20200249942A1 (en) | Anchored data element conversion | |
| US10838718B2 (en) | Processing device, arithmetic unit, and control method of processing device | |
| JP2003241960A (ja) | プロセッサ、該プロセッサにおける演算命令処理方法及び演算制御方法 | |
| US8041927B2 (en) | Processor apparatus and method of processing multiple data by single instructions | |
| TWI807927B (zh) | 具有向量歸約方法與元素歸約方法的向量處理器 | |
| US11789701B2 (en) | Controlling carry-save adders in multiplication | |
| US20030037088A1 (en) | Speed of execution of a conditional subtract instruction and increasing the range of operands over which the instruction would be performed correctly | |
| JPH11102353A (ja) | 浮動小数点積和演算器 | |
| Ardaya-Lieb | Floating-Point Units: Capabilities of Current Architectures and Approaches for Future Developments |