TW201737067A - 向量預測指令 - Google Patents
向量預測指令 Download PDFInfo
- Publication number
- TW201737067A TW201737067A TW106109491A TW106109491A TW201737067A TW 201737067 A TW201737067 A TW 201737067A TW 106109491 A TW106109491 A TW 106109491A TW 106109491 A TW106109491 A TW 106109491A TW 201737067 A TW201737067 A TW 201737067A
- Authority
- TW
- Taiwan
- Prior art keywords
- vector
- instruction
- instructions
- processing
- given
- Prior art date
Links
- 239000013598 vector Substances 0.000 title claims abstract description 481
- 238000012545 processing Methods 0.000 claims abstract description 190
- 230000004044 response Effects 0.000 claims abstract description 48
- 238000012360 testing method Methods 0.000 claims abstract description 43
- 238000000034 method Methods 0.000 claims description 50
- 230000008569 process Effects 0.000 claims description 27
- 230000000873 masking effect Effects 0.000 claims description 20
- 230000007704 transition Effects 0.000 claims description 15
- 230000001419 dependent effect Effects 0.000 claims description 7
- 241000238876 Acari Species 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 4
- 238000003672 processing method Methods 0.000 claims description 2
- 230000008859 change Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 229920000208 temperature-responsive polymer Polymers 0.000 description 5
- 230000006399 behavior Effects 0.000 description 3
- 101100311460 Schizosaccharomyces pombe (strain 972 / ATCC 24843) sum2 gene Proteins 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 102100036822 Ankyrin repeat and KH domain-containing protein 1 Human genes 0.000 description 1
- 101000928335 Homo sapiens Ankyrin repeat and KH domain-containing protein 1 Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一種裝置包含處理電路系統4及指令解碼器6,指令解碼器6支援對向量值之各別資料元件執行處理之多個路徑的向量指令。回應於向量預測指令,指令解碼器6控制處理電路系統4基於每個用於決定對應元件通過還是未通過測試條件之多個元件比較運算之結果而設置控制資訊。該控制資訊控制在向量預測指令之後的預定數量之後繼向量指令之處理。藉由向量預測指令硬連接或識別該預定數量。對於該等後繼向量指令之一個,基於藉由對應資料元件之控制資訊指示之結果屏蔽向量處理之給定路徑之給定部分的操作。
Description
本發明技術係關於資料處理之領域。更具體而言,本發明技術係關於向量指令之處理。
一些資料處理系統支援向量指令之處理,針對該等向量指令,指令之源運算元或結果值為包含多個資料元件之向量。藉由回應於單指令來支援多個不同資料元件之處理,可改進代碼密度並減小指令之擷取及解碼之負擔。藉由將資料值載入向量運算元之各個元件中及使用單個向量指令一次處理資料值之若干元件,可更有效地處理要處理之資料值陣列。
至少一些實例提供一種裝置,該裝置包括: 處理電路系統,用以執行資料處理;以及 指令解碼器,用以解碼向量指令以控制處理電路系統執行對應於向量值之各別資料元件的向量處理之複數個路徑; 其中回應於向量預測指令,該指令解碼器經配置以控制該處理電路系統根據每個用於決定目標向量值之對應資料元件通過還是未通過測試條件之複數個元件比較運算而設置控制資訊,該控制資訊用於控制在一連串要處理之指令內的該向量預測指令後之一預定數量之後繼向量指令的處理,其中該預定數量藉由該向量預測指令硬連接或識別;以及 回應於該預定數量之後繼向量指令之一個,該指令解碼器經配置以控制該處理電路系統根據該元件比較運算之一結果決定是否屏蔽與向量處理之給定路徑之給定部分關聯的操作,該元件比較運算藉由對應於該給定部分之該目標向量值之資料元件的控制資訊來指示; 其中回應於至少一種類型之向量指令,該指令解碼器經配置以控制該處理電路系統獨立於向量處理之該複數個路徑執行額外操作;以及 該處理電路系統經配置以當該預定數量之後繼向量指令之一個為該至少一種類型之向量指令之一個時獨立於該控制資訊執行該額外操作。
至少一些實例提供一種裝置,該裝置包括: 用於執行資料處理之構件;以及 用以解碼向量指令之構件以控制處理電路系統執行對應於向量值之各別資料元件的向量處理之複數個路徑; 其中回應於向量預測指令,該用於解碼之構件經配置以控制該用於執行資料處理之構件根據每個用於決定目標向量值之對應資料元件通過還是未通過測試條件之複數個元件比較運算而設置控制資訊,該控制資訊用於控制在要處理之一連串指令內的該向量預測指令後之預定數量之後繼向量指令的處理,其中該預定數量藉由該向量預測指令硬連接或識別;以及 回應於該預定數量之後繼向量指令之一個,該用於解碼之構件經配置以控制該用於處理之構件根據該元件比較運算之一結果決定是否屏蔽與向量處理之給定路徑之給定部分關聯的操作,該元件比較運算藉由對應於該給定部分之該目標向量值之資料元件的控制資訊來指示; 其中回應於至少一種類型之向量指令,該用於解碼之構件經配置以控制該用於執行資料處理之構件獨立於向量處理之複數個路徑執行額外操作;以及 該用於執行資料處理之構件經配置以當該預定數量之後繼向量指令之一個為該至少一種類型之向量指令之一個時獨立於該控制資訊執行額外操作。
至少一些實例提供一種用於處理向量指令之資料處理方法,該等向量指令用於控制處理電路系統執行對應於向量值之各別資料元件的向量處理之複數個路徑,該方法包含以下步驟: 解碼向量預測指令以控制處理電路系統根據每個用於決定目標向量值之對應資料元件通過還是未通過測試條件的複數個元件比較運算而設置控制資訊,該控制資訊用於控制在要處理之一連串指令內的該向量預測指令後之預定數量之後繼向量指令的處理,其中該預定數量藉由該向量預測指令硬連接或識別;以及 回應於該預定數量之後繼向量指令之一個,解碼該後繼向量指令以控制該處理電路系統根據該元件比較運算之一結果決定是否屏蔽與向量處理之給定路徑之給定部分關聯的操作,該元件比較運算藉由對應於該給定部分之該目標向量值之資料元件的控制資訊來指示; 其中當該預定數量之後繼向量指令之一個為該處理電路系統獨立於向量處理之該複數個路徑執行額外操作之一種類型之向量指令時,控制該處理電路系統獨立於該控制資訊來執行該額外操作。
至少一些實例提供包含程式指令之虛擬機電腦程式以控制主機資料處理裝置以提供對應於上文論述之裝置的指令執行環境。
亦可提供儲存虛擬機電腦程式之電腦可讀儲存媒體。儲存媒體可為非暫時性儲存媒體。
將在下文論述一些特定實例。應理解,本發明不限於該等精確實例。
在一些程式應用中,可能需要向量處理之資料依賴控制流程,其中根據對應於彼等路徑之目標向量之元件值將某些向量操作僅應用至向量處理之選定路徑。因此,提供用於比較目標向量之元件與測試條件之指令支援,且選擇是否基於目標向量之對應元件之比較結果來屏蔽與向量之一些部分關聯之操作可能很有用。
這麼做之一個方法為,在硬體中提供多個述詞暫存器之組,可藉由比較指令將元件比較之結果寫入其中,在可藉由後繼指令引用其以控制用於後繼指令之向量處理之一些路徑的預測。然而,此方法之問題為,述詞暫存器組增加電路面積及暫存器檔案之功耗,其對功率效率為最重要準則之一的相對簡單之處理器至關重要,以及此亦增加當處理異常時保存或恢復之暫存器狀態之數目,從而可增加處理器之複雜性。又,指令集中之編碼空間可能非常寶貴,且此方法大體需要將預測暫存器欄位增加至每種類型之向量指令,所以將會增加所需之指令編碼寬度,從而增加快取、擷取、解碼及處理指令時功耗。
相反,處理電路系統可具備支援向量預測指令之解碼的指令解碼器,該向量預測指令專用於控制許多後繼向量指令之預測。回應於向量預測指令,解碼器控制處理電路系統根據每個用於決定目標向量值之對應資料元件通過還是未通過測試條件之許多元件比較運算而設置控制資訊,該控制資訊用於控制在要處理之一連串指令內的向量預測指令後之預定數量之後繼向量指令的處理。回應於後繼向量指令之一個,指令解碼器控制處理電路系統以基於處理電路系統回應於向量預測指令設置之控制資訊來決定是否屏蔽與向量處理之給定路徑之給定部分關聯的操作。屏蔽給定路徑之給定部分係根據元件比較運算之結果來決定,該元件比較運算藉由對應於該給定部分之目標向量值之資料元件的控制資訊來指示。
因此,藉由提供專用向量預測指令,該專用向量預測指令基於元件比較運算設置控制資訊並控制用於預定數量之後繼向量指令的向量處理之部分之選擇性屏蔽,後繼指令不一定在其等編碼中指定述詞暫存器說明符。後繼向量指令之編碼可完全相同,猶如並未預測後繼向量指令一樣。因此,完全相同指令若在向量預測指令之後,則可觸發不同於相同指令不在向量預測指令之後的行為的處理器行為。藉由分配特殊向量預測指令(例如,使用不同的作業碼),此舉避免增加編碼空間通常非常重要之後繼向量指令之指令編碼大小。此方法亦簡化異常處理,因為不需要保存或恢復多個述詞暫存器狀態集,且避免對在硬體中提供多個述詞暫存器的需要。
在一些實例中,可硬連接藉由向量預測指令影響之預定數量之後繼向量指令,以便總存在根據控制資訊控制的固定量之後繼向量指令。例如,在一些實例中可硬連接的預定數目為一,以便當遇到向量預測指令時,根據控制資訊控制緊隨其後之後繼向量指令,但此後的指令則獨立於該控制資訊來處理。
然而,在其他實例中,可藉由向量預測指令識別該預定數量。因此,向量預測指令可指定控制參數,該控制參數識別應根據控制資訊而控制多少後繼向量指令。例如,架構可支援藉由向量預測指令指定之可變數目之後繼向量指令,最多達到某最大數目之指令。例如,最大數目可為四個或八個指令。藉由賦能藉由單個向量預測指令預測之多個指令,相比於利用不同向量預測指令個別地預測不同指令,此提高代碼密度並減小擷取/解碼負擔。
第1圖示意地圖示支援向量指令之處理之資料處理裝置2的實例。應理解,此為便於說明之簡圖,並且實務上該裝置可能具有為簡明起見未在第1圖中圖示之許多元件。裝置2包含用於回應於藉由指令解碼器6解碼之指令而執行資料處理的處理電路系統4。程式指令自記憶體系統8中擷取並藉由指令解碼器解碼以產生控制信號,該等控制信號控制處理電路系統4以該架構界定之方式處理指令。例如,解碼器6可解釋經解碼指令之作業碼及指令之任意額外控制欄位以產生控制信號,該等控制信號引起處理電路系統4起動適合硬體單元來執行諸如算術運算、載入/儲存操作或邏輯運算之操作。該裝置具有用於儲存由處理電路系統4處理之資料值及用於配置處理電路系統之操作之控制資訊的一組暫存器10。回應於算術或邏輯指令,處理電路系統4自暫存器10讀取運算元並將指令之結果寫回至暫存器10。回應於載入/儲存指令,資料值經由處理邏輯在暫存器10與記憶體系統8之間傳輸。記憶體系統8可包括一或多階快取記憶體以及主記憶體。
暫存器10包括純量暫存器檔案12,其包含用於儲存包含單個資料元件之純量值之一定數量純量暫存器。指令解碼器6及處理電路系統4支援之一些指令為純量指令,該等純量指令處理自純量暫存器12讀取之純量運算元以產生回寫至純量暫存器之純量結果。
暫存器10亦包括向量暫存器檔案14,其包括各自用於儲存包括多個資料元件之向量值之一定數量向量暫存器。回應於向量指令,指令解碼器6控制處理電路系統4以對自向量暫存器14之一讀取的向量運算元之各別元件執行向量處理之多個路徑,以產生寫入至純量暫存器12之純量結果或寫入至向量暫存器14之另一向量結果。一些向量指令可自一或多個純量運算元產生向量結果,或可對在純量暫存器檔案中之純量運算元執行額外純量運算以及對自向量暫存器檔案14讀取之向量運算元執行向量處理之路徑。因此,一些指令可為混合-純量-向量指令,其中一或多個源暫存器及指令之目的地暫存器之至少一個為向量暫存器14及一或多個源暫存器及目的地暫存器之另一個為純量暫存器12。向量指令亦可包括引起資料值在向量暫存器14與記憶體系統8中之位置之間傳輸的向量載入/儲存指令。載入/儲存指令可包括記憶體中之位置對應於連續之位址範圍的連續向量載入/儲存指令,或散射/集合類型向量載入/儲存指令,其指定一定數量個不同位址並控制處理電路系統4將來自彼等位址之每個之資料載入向量暫存器之各別元件中或將來自向量暫存器之各別元件的資料儲存至離散位址中。
處理電路系統4可支援具有一定範圍不同資料元件大小之向量之處理。例如,128位元向量暫存器14可經分隔成例如十六個8位元資料元件、八個16位元資料元件、四個32位元資料元件或兩個64位元資料元件。暫存器組10內之控制暫存器可指定正使用之當前資料元件大小,或替代地此可為要執行之給定向量指令之參數。
暫存器組10亦包括用於儲存控制處理電路系統4之操作之控制資訊的暫存器。控制暫存器可包括暫存器,諸如用於指示對應於當前執行點之指令之位址的程式計數暫存器、指示在當處理異常時保存/恢復暫存器狀態之堆疊資料結構之記憶體系統8中位置之位址的堆疊指標暫存器、及用於儲存在函數之執行後處理分叉進入之函數返回位址的鏈路暫存器。為簡明起見該等未在第1圖中圖示。
如在第1圖圖示,暫存器亦包括用於追蹤向量化迴圈之進展之迴圈計數器16、用於儲存指示當前正處理之向量中每個資料元件中之位元數目的參數的元件大小暫存器18、用於儲存指示一個向量暫存器中之位元總數之參數的向量寬度暫存器20及用於控制向量操作之預測的向量述詞暫存器22。該等將在下文更詳細地描述。在一些實例中,在製造裝置期間根據在給定裝置之向量暫存器14中實施之特定向量寬度來硬連接向量寬度暫存器20。或者,若向量暫存器檔案14支援具有不同向量寬度之不同配置,則向量寬度暫存器20可經程式化以指示正使用之當前寬度。類似地,若特定元件大小總用於給定裝置則元件大小暫存器18可硬連接,或若裝置支援使用不同資料元件大小之向量之處理則元件大小暫存器18可變。在一些實例中,例如若每個向量指令指定用於該指令之元件大小,則可省去元件大小暫存器18。儘管迴圈計數器16示為專用控制暫存器,但其他實例可使用通用純量暫存器12之一個來追蹤向量化迴圈之進展。
第2圖圖示用於控制預定數量之後繼向量指令之預測的向量預測指令(VPT指令)的實例。向量預測指令指定包括以下各者之多個欄位: · 作業碼30,識別此指令為VPT指令; · 元件大小欄位32,指定藉由VPT指令處理的目標向量之資料元件之大小; · 條件欄位34,指定藉由向量預測指令應用之測試條件。例如,可指定測試條件為EQ(等於)、NE(不等於)、GT(大於)、GE(大於或等於)、LT(小於)、LE(小於或等於)之一個; · 屏蔽欄位36,指定用於控制多少後繼向量指令藉由向量預測指令來預測之屏蔽值。屏蔽欄位亦可識別後繼向量指令之至少一個應作為then條件向量指令(「T指令」)還是else條件向量指令(「E指定」)來處理。對於T指令,若藉由VPT指令測試之目標向量之對應元件未通過其測試條件,則屏蔽對向量之給定部分之操作。對於E指令,若藉由VPT指令測試之目標向量之對應元件通過其測試條件,則屏蔽對向量之給定部分之操作。 · 目標向量暫存器欄位38,指定向量暫存器Qa,該向量暫存器Qa儲存逐個元件應用測試條件的目標向量值; · 比較值欄位40,指定與目標向量比較之參考值;以及 · 組合旗標欄位41,其指定向量述詞暫存器22中之述詞條件是否應設置為比較運算之結果以決定目標向量之每個元件是否滿足測試條件,或向量述詞暫存器22中之預測條件是否應設置為與在向量述詞暫存器22中之預測條件之前值組合的比較運算之結果。
應理解,第2圖僅圖示VPT指令之可能編碼的實例。將指令編碼之哪些特定位元分配至每個欄位為特定實施方式之任意設計選擇。
VPT指令觸發各自對應於目標向量之元件之各別一個的一系列元件比較運算。可提供不同形式VPT指令(藉由不同作業碼或藉由識別比較類型之指令之另一欄位來識別),其各自提供不同類型之比較: · 對於向量比較VPT指令,比較值欄位40指定儲存另一向量值之第二向量暫存器Qb,且每個元件比較運算比較在暫存器Qa中之目標向量之給定元件與在暫存器Qb中之另一向量之對應元件。 · 對於純量比較VPT指令,比較值欄位40指定儲存純量值之純量暫存器,且元件比較之每個比較暫存器Qa中之目標向量之對應元件與暫存器Rb中之相同純量值。 · 對於常數比較VPT指令,每個元件比較比較暫存器Qa中之目標向量之對應資料元件與預定常數。該常數可識別為比較值欄位40中之立即值,或可為從識別常數比較VPT指令之作業碼中隱含之預定值(例如0)。
第3圖示意地圖示回應於VPT指令而執行之操作之實例。在此實例中,VPT指令具有向量比較形式,因此第二暫存器欄位40指定向量暫存器Qb。在此情況下,條件欄位34指定GT條件,因此回應於VPT指令,指令解碼器6產生控制信號,該等控制信號控制處理電路系統4執行多個元件比較運算,其中每個元件比較運算比較向量Qa及向量Qb之對應資料元件Qai、對應資料元件Qbi以決定向量Qa之元件Qai是否大於向量Qb之對應元件Qbi(其中在此實例中i在0與3之間)。回應於VPT指令,處理電路系統4設置向量述詞暫存器(vector predicate register; VPR)22之控制資訊,指示每個元件比較運算之結果。在此實例中,對於路徑0、路徑1及路徑3,向量Qa中之對應元件大於向量Qb中之對應元件,因此通過了測試條件。另一方面,對於路徑2,Qa2≤Qb2,因此未通過GT測試條件。
當執行在VPT指令後之預定數量之後繼向量指令的一個(諸如在第3圖之實例中圖示之向量乘加(vector multiply add; VMLA)指令)時,處理電路系統4讀取設置在VPR22中之控制資訊,並基於比較運算之結果控制是否屏蔽與向量處理之給定路徑之給定部分關聯的操作,該比較運算之結果藉由VPT指令比較之目標向量之對應元件的控制資訊來指示。在此實例中,VMLA指令之資料元件大小與VPT指令之資料元件大小相同,因此VMLA指令之處理之每個路徑對應於VPT指令之單個元件並根據對應元件比較運算之結果來屏蔽或不屏蔽VPT指令之單個元件。因此,對於路徑0、路徑1及路徑3,VMLA指令乘以向量Qa、向量Qc之對應元件並將該等乘法之乘積累加至純量暫存器Rn中。因為在路徑2中未通過測試條件,因此屏蔽與此路徑關聯之操作,因此乘積Qa2*Qc2並不影響純量暫存器Rn中之值。
屏蔽路徑2中之操作可以不同方式執行。例如,可完全地抑制在路徑2中元件之乘法。或者,可仍然執行乘法,但抑制將其結果加至目的地暫存器中。大體上,以任何方式執行屏蔽可確保向量之屏蔽部分之向量處理不影響指令之結果。例如,賦能信號可提供至向量之每個部分,其控制該部分之結果是否寫入目的地暫存器中。
儘管第3圖圖示藉由在前的VPT指令來預測單指令之實例,但VPT指令可預測多個後繼指令(最多達到某最大數)且屏蔽欄位36可指定多少指令應根據控制資訊而受控制。將在下文更詳細地論述此內容。
第4圖圖示使用VPT指令之第二實例。此次VPT指令為純量比較VPT指令,因此比較目標向量Qa之資料元件之每個與來自暫存器Rn之相同純量值。此次所應用之測試條件為GE及其在路徑0中通過且在路徑1及路徑3中未通過。在此實例中後繼向量指令為向量處理之每個路徑包含儲存操作的向量儲存(VSTR)指令,該儲存操作用以將向量運算元Qa之對應元件儲存至記憶體中基於純量暫存器Rn中之指標位址來計算之位置中。然而,因為VPT指令未通過路徑1至路徑3之測試條件,在此情況下僅執行路徑0之儲存操作,而屏蔽路徑1至路徑3之儲存操作(因此,不將路徑1至路徑3中之元件之儲存請求發至記憶體系統8)。
不同於第3圖中之實例,對於第4圖中之儲存指令,指令解碼器6解碼儲存指令以控制處理電路系統4以執行獨立於向量處理之路徑之額外指標更新操作,另外還執行對應於向量處理本身之各別路徑之儲存操作(一些儲存操作可在計算用於儲存之位址之前更新指標,而之後其他形式可更新該指標)。不管使用指標之儲存前增量還是儲存後增量,不管VPT指令通過還是未通過每個路徑中之各別測試條件,可執行第4圖之底部圖示之指標更新操作以將立即值加至純量暫存器Rn。亦即,指標資料操作可為獨立於藉由VPT指令設置之控制資訊而執行之額外操作。因此,不管VPT指令之結果如何,總是進行指標更新操作。預測影響用於後繼指令之向量處理之路徑,但獨立於向量處理之路徑之後繼指令的一個所觸發之另一非向量操作,諸如純量暫存器更新,不受路徑屏蔽影響。即使VPT指令導致屏蔽給定向量指令之所有路徑,亦執行該額外非向量操作。
上文論述之VPT指令可用於賦能具有資料依賴控制流程之迴圈之向量化。具有包含資料依賴操作之迴圈之高階程式代碼的實例顯示如下: for (int i = 0; i < LEN; i++) { if (data[i] >= THRESHOLD) { data[i] = 0; } }
因此,存在要處理之長度LEN的元件之陣列資料[],且對於陣列之每個元件資料[i],元件將與閾值比較及若元件小於閾值則設置為0。在純的純量指令之情況下,陣列之每個元件將需要要執行若干指令(一個載入來自記憶體中之資料,一個將其與閾值比較,而另一個在資料值小於閾值時將0值寫回至記憶體中)。
當使用向量指令將此編譯進組合程式碼中時,可提供以下序列: VMOV Q7, #0 DLSTP.32 LR, R4, loopEnd // R4 = LEN loopStart: VLDR.32 Q0, [R2] // R2 = 資料指標 VPT.32 GE, Q0, R0 // R0 = THRESHOLD VSTR.32 Q7, [R2], #16 // 基於VPI的VSTR之路徑預測 DLE loopStart loopEnd:
因此,執行迴圈,其中迴圈之每次迭代包括用於處理陣列之多個元件之向量指令。加載指令VLDR將來自記憶體中之陣列的資料值塊載入向量暫存器Q0中。VPT指令比較該等元件之每個與暫存器R0中之純量閾值,並基於每個元件比較之結果設置控制資訊。逐個元件地預測後繼儲存指令VSTR,以便其僅將值#0儲存至陣列中VPT指令決定前資料值大於或等於閾值之元件。注意,藉由允許進行儲存指令VSTR之指標更新,即使VPT指令屏蔽全部路徑(如上文第4圖論述),此亦賦能增加資料指標R2以便迴圈之下一次迭代將存取來自記憶體中之陣列之下一個資料塊。因此,此類VPT預測對支援向量化迴圈很有用。
此方法避免對儲存指令本身的需要,該儲存指令包括在其識別應使用哪些述詞資訊之編碼中之資訊,且避免對提供專用述詞暫存器組的需要,該專用述詞暫存器組可由特定向量指令來引用。反之,在組合程式碼中之VPT指令之後的多個指令僅假定為受VPT指令之影響而不管其等編碼如何。此舉亦藉由減少要保存及恢復之狀態之數目來簡化異常處理。
第5圖至第7圖圖示藉由在其前面加上VPT指令來控制向量操作之執行的三個另外實例。在第3圖及第4圖之實例中,VPT指令之資料元件大小與要預測之後繼向量指令之資料元件大小相同,但此不重要,且第5圖至第7圖圖示元件大小不同之三個實例。在第5圖之實例中,VPT指令指定小於基於預測控制之後繼向量加法(VADD)指令之資料元件大小。在此情況下VPT指令可導致設置控制資訊,該控制資訊在16位元元件之粒度下指定通過還是未通過測試條件之結果,但由VPT指令預測之後繼向量加法指令可增加兩個輸入向量之各別32位元元件以提供如圖所示之總和0、總和1、總和2、總和3的各個總和結果。
如第5圖圖示,在一個方法中,由VPT設置之控制資訊可包含對向量暫存器之對應部分設置之一連串賦能位元45(亦稱為「述詞位元」),其中每個賦能位元45指示映射至向量暫存器之對應部分之元件的元件比較運算對VPT指令通過還是未通過。因此,第5圖中圖示之VPT指令產生將對對應於通過測試條件之16位元路徑之部分設置等於「1」的賦能位元,及對未通過測試條件之其他路徑設置等於「0」的賦能位元。在此實例中,賦能位元45各自對應於目標向量之8位元部分。因此,若VPT指令之資料元件大小大於8位元(例如在此實例中之16位元),則根據目標向量之對應元件通過還是未通過測試條件將多個鄰接賦能位元塊45設置為相同值(1或0)。
當執行後繼VADD指令時,若對應於該部分之賦能位元為VPR22中之0,則抑制目的地暫存器Qr之給定部分之寫入。因此,若VADD指令之資料元件大小大於VPT指令之資料元件,則此可導致僅將VADD指令之路徑之結果的部分寫入目的地暫存器Qr中(例如,查看第5圖中之路徑2,其中僅將路徑的結果sum2之較低部分寫入目的地暫存器Qr中,因為在由VPT指令測試之向量之對應部分中,元件E4通過測試條件但元件E5未通過)。因此,若由於元件大小不匹配賦能位元僅部分地對給定路徑設置,則並非路徑結果之所有位元可輸出至目的地暫存器。
或者,如第7圖圖示,另一種方法為基於對應於該路徑之賦能位元之一個而控制之每個路徑之屏蔽,以便僅可總體上屏蔽或不屏蔽路徑。例如,在路徑2中將總和值sum2寫入至暫存器Qr可依賴於對應於彼路徑之最低有效賦能位元47(例如,在此情況下不屏蔽路徑2,因為VPT指令之目標向量之對應部分中之最低元件E4通過其測試條件,而不管元件E5是否未通過)。此方法可對諸如載入/儲存指令之一些類型之向量指令更佳,該等指令中執行資料字之僅部分之載入/儲存是不當的或不實際的。
一些系統可用在控制暫存器中或在指定應使用哪個選項之VPT指令之編碼中所設置的可程式化參數來支援第5圖及第7圖中圖示之兩種方法。其他硬體實施例可支援第5圖或第7圖中圖示之技術之一者或另一者。實務上,第5圖中圖示之方法在硬體中實施可較容易,因為在向量之給定部分與用於控制屏蔽彼部分之特定賦能位元45之間存在固定映射,而不管用於後繼向量指令之特定資料元件大小如何。
如第6圖圖示,後繼向量指令亦可能具有小於VPT指令之資料元件大小。在此情況下,對應於在VPT指令中測試之目標向量之相同資料元件的全部位元組賦能位元45經設置為相同值,1或者0,且這根據對應元件比較之結果來控制後繼向量指令中之更小資料元件組屏蔽還是不屏蔽。
因此,總而言之,在VPT指令之元件與在後繼向量指令中處理之元件之間可存在一對一、一對多或多對一映射。屏蔽在後繼指令中處理之全部路徑不重要,因為如第5圖圖示當兩個指令之資料元件中存在大小不匹配時亦可能僅部分地抑制給定路徑之部分。大體上,對於後繼向量指令,控制資訊根據對經受VPT指令之目標向量中之對應元件執行的元件比較運算之結果來控制是否屏蔽給定路徑之給定部分。
同時,如第5圖圖示,對於怎樣屏蔽在資料元件之給定部分中之操作存在不同選項。如路徑0所示,一個選項為,將對其作屏蔽操作之目的地暫存器之部分設置為預定值。或者,目的地暫存器之被屏蔽部分可保持其等的前值以便在非屏蔽路徑中之加法指令之新結果與先前在被屏蔽路徑中之相同目的地暫存器中儲存之舊值合併。因此,有時VPT指令可指定(經由其作業碼或單獨控制參數)使用合併還是清零預測。或者,被預測之指令(例如,在第5圖至第7圖之實例中之VADD)可指示應該應用合併還是清零預測,這再次可經由作業碼或單獨控制參數來進行。
用於屏蔽之另一種選項為,一起去能執行對於向量之被屏蔽部分之向量操作,例如以抑制對於向量路徑之給定部分執行之算術運算。
第8圖圖示控制資訊回應於VPT指令在VPR22中儲存之實例。VPR22包括用於指示各別元件比較運算之結果之述詞欄位50,及用於根據該述詞欄位來控制哪些後繼向量指令要處理之一或多個屏蔽欄位52。在此實例中,存在用於支援如下文論述之向量指令之重疊執行的多個屏蔽欄位52,但可能使用僅單個屏蔽欄位52來實施VPR22。
述詞欄位50可指定如上文所提及之賦能位元45。每個賦能位元對應向量暫存器塊,該向量暫存器塊對應於系統支援之最小元件大小。例如,若向量寬度為128位元且所支援之最小元件大小為8位元,則述詞暫存器可包括各自對應於向量之8位元塊(一個位元組)之16位元組賦能位元。在以下實例中,若允許用於向量之對應8位元向量塊之對應操作,則將位元組賦能位元設置為1,且若屏蔽該操作,則將位元組賦能位元設置為0。應理解,其他系統可相反解釋賦能位元,並當對應賦能位元為1時屏蔽操作。
注意,因為可能轉變用於處理如下文實例中圖示的T/E指令之述詞欄位50之位元,述詞欄位50並不總明確地指示由VPT指令執行之元件比較之實際結果(其可當處理E指令時指示相反結果)。在替代實施例中,若保持識別元件比較運算之實際結果的資訊很重要,則可在指示賦能位元「1」還是賦能位元「0」應該觸發向量之對應部分之向量操作屏蔽之VPR22中提供額外then/else位元。此可允許支援在VPT後之「then」指令塊及「else」指令塊而無需翻轉述詞欄位50之狀態。then/else位元將隨後控制當自VPR暫存器讀出其等以控制屏蔽時使用未改變還是轉變之述詞欄位50。
屏蔽欄位52基於述詞欄位50之內容來追蹤多少剩餘向量指令要屏蔽。當執行VPT指令時,將每個屏蔽欄位52設置為如第9圖之表格中圖示來編碼之初值。用於給定VPT指令之初始屏蔽值可藉由VPT指令本身之屏蔽欄位36來指定,或可藉由一些邏輯電路系統自VPT指令中編碼之其他資訊來導出。然而,直接編碼指令中之初始屏蔽值可能最簡單。不同VPT指令語法VPT、VPTT、VPTE、VPTTTE等用於簡化對哪些後繼指令受VPT指令影響之理解,其中要預測的最多四個後繼指令I0、I1、I2、I3之圖案藉由在VPT指令語法之結尾之字母T及E之集合來指示。此處,「T」表示在向量中對應於未通過其測試條件之元件之部分中應用屏蔽的「then條件」指令,而「E」表示在向量中對應於通過其測試條件之元件之部分中應用屏蔽的「else條件」指令。
4位元屏蔽值識別待藉由可在1與4之間的VPT指令來預測之後繼向量指令之數目。要預測之後繼向量指令之數目由在屏蔽值中之最小有效「1」位元之位元位置來表示。若最低有效「1」位元處於最高有效位元(0b1000),則僅預測一個後繼指令I0。若最低有效「1」位元處於第二個最高有效位元(0bx100,其中x為0或者1),則預測兩個後繼指令I0及I1。若最低有效「1」位元處於第三個最高有效位元(0bxx10),則預測三個後繼指令I0、I1及I1。若最低有效「1」位元處於最低有效位元(0bxxx1),則預測所有四個後繼指令 I0、I1、I2、I3。
在VPT指令之後之第一個指令I0總視為T指令。在要預測之後繼向量指令之數目多餘1之編碼中,上文圖示之「x」位元值(在最低有效「1」位元與屏蔽值之最高有效末端之間的位元位置處)指示要預測之T指令及E指令之圖案。大體上,在最低有效1位元與屏蔽之頂端之間的此屏蔽部分中等於1之每個位元值指示,在狀態中存在自T指令至E指令之變化,或反之亦然。例如,屏蔽編碼0b0001指示所有四個後繼指令I0-I3為T,因為在上三個位元中不存在「1」位元,因此沒有後繼指令改變相對於先前指令之T/E狀態。另一方面,例如屏蔽編碼0b0110表示三個後繼指令I0-I2分別預測為T、T、E,因為第一個「0」指示I1為與I0(兩個T)相同之T/E狀態,而下一個位元「1」指示I2為與I1相反之T/E狀態,即I2為E指令。類似地,屏蔽位元之其他圖案可以第9圖中圖示之方式來解譯。
第10圖至第12圖圖示怎樣將屏蔽值設置為初值賦能根據正確的預測結果及T及E指令之所需圖案來處理之後繼指令的三個實例。
向量指令之執行分成稱為「節拍」之多個部分,其中每個節拍對應於預定大小之向量段之處理。節拍為完全執行或根本不執行且不能部分地執行之向量指令之原子部分。在一個節拍中處理之向量段之大小藉由架構界定且可為向量之任意分數。在第10圖至第12圖之實例中,節拍經定義為對應於四分之一向量寬度之處理,以便每向量指令存在四個節拍。顯而易見,此僅為一個實例且其他實例可使用不同數目之節拍,例如兩個或八個。對應於一個節拍之向量段可為等於、大於或小於正在處理之向量之資料元件大小。因此,即使元件大小在實施方式之間變化或在不同指令之間之運行時間下變化,節拍仍為向量處理之某個固定寬度。若在一個節拍中正處理之向量段包括多個資料元件,則可在各別元件之間之界限處去能進位信號以確保獨立地處理每個元件。若在一個節拍中處理之向量段對應於元件之僅部分及硬體不足以並列計算若干節拍,則在處理之一個節拍期間產生之進位輸出可作為進位輸入而輸入至下一個處理節拍,以便兩個節拍之結果共同形成資料元件。
處理電路系統4之不同硬體實施方式可在抽象架構時鐘之一個「滴答」中執行不同數量的節拍。這裡,「滴答」對應於架構狀態前進之單位(例如,在簡單架構上,每個滴答可對應於更新與執行指令關聯之所有架構狀態一次,包括更新程式計數器以指向下一個指令)。熟習此項技術者應當理解,諸如佈置管線之已知微架構技術可意味著單個滴答可能需要多個時鐘循環來在硬體位準下執行,並且確實在硬體位準下之單個時鐘循環可以處理多個指令之多個部分。然而,該微架構技術對軟體不可見,因為滴答在架構階層下為原子級。為了簡明起見,在本揭示案之進一步描述期間忽略該微架構。
如第10圖圖示,一些處理電路系統4可具有充足硬體以並行執行給定向量指令之所有節拍,以便在每個滴答中執行四個節拍。這意謂在架構位準下重疊執行不同指令不是必需的,因為全部指令可在一個滴答中完成。如第10圖圖示,當存在包括向量預測指令及許多後繼指令I0至I4之向量指令序列時,一個指令之處理在結束前一個指令後才開始。
第10圖之下部圖示當控制指令序列時在VPR22中設置之控制資訊的實例。第1列至第5列圖示分別在滴答1至滴答5結束時設置之VPR控制資訊(即,用於分別控制在滴答2至滴答6中之指令I0至指令I4之處理的控制資訊)。在此實例中,VPT指令指定為VPTTTE,所以回應於VPT指令根據第9圖中圖示之編碼將屏蔽值0011寫入VPR22之屏蔽欄位52之每個中。VPT指令在此實例中指定32位元之資料元件大小,因此VPT指令之處理之每個節拍觸發32位元元件之對應元件比較(在此實例中,資料元件大小匹配在一個節拍中處理之處理單元,但此並不重要)。VPT指令之目標向量之路徑0及路徑3未通過其等測試條件,而路徑1及路徑2通過,因此設置VPR22之述詞欄位50,對應於路徑1及路徑2之位元組賦能位元等於「1」且對應於路徑0及路徑3之位元組賦能位元等於「0」。
當處理後繼向量指令時,若屏蔽欄位為非零,則基於在欄位50中之述詞位元應用預測。若屏蔽欄位具有全部設置為「0」之位元,則不應用預測。因此,在滴答1結束時屏蔽欄位已設置為0011,因此在滴答2中後繼向量指令I0基於述詞暫存器50中之位元組述詞位元來預測,且屏蔽與述詞位元為0之向量部分關聯之操作。指令I0為T指令,因為屏蔽正應用在VPT指令未通過測試條件之向量部分中。
當在滴答2結束時自指令I0切換至指令I1時,屏蔽欄位之每個左移了一個位元位置以產生如第10圖之第2列中圖示之已更新屏蔽值。在此點處移出屏蔽欄位之頂部位元具有位元值0,因此不轉變述詞欄位50並保持原樣,以便指令I1亦視為T指令。再次,因為在滴答3期間屏蔽欄位為非零,基於述詞欄位50選擇性地屏蔽指令I1。
在滴答3與滴答4之間,當自指令I1切換至指令I2時,屏蔽欄位再次左移了一個位元位置且又移出屏蔽之頂部位元為0,因此不存在述詞欄位之轉變。因此,指令I2亦視為T指令。第10圖之第3列圖示用於指令i2之VPR值。
然而,當指令I2切換至指令I3時,屏蔽欄位之左移導致位元值1移出該屏蔽,且這觸發述詞欄位50之轉變以便如第10圖之第4列中圖示「1」及「0」翻轉值。第4列圖示用於滴答5中之指令I3的控制資訊。因為述詞位元已翻轉,則I3為E指令,因為其屏蔽將應用在原始VPT指令通過測試條件之向量之部分中,並且此次將不屏蔽原始VPT指令未通過其測試條件之向量之部分。這與將指令I1-I3指示為如原始VPT指令指定之TTE的一致。
最終,當在滴答5結束時自指令I3切換至指令I4時,再次對每個屏蔽欄位應用左移且這導致將移出屏蔽之最後「1」位元,以便屏蔽值現在全變成0。這意謂獨立於述詞欄位50之內容處理在滴答6中要處理之隨後指令I4,以便其不以VPT指令之結果為前提。因此,吾人可以看到,藉由將屏蔽值設置為定位最低有效「1」位元之值,以便其可在預定數量之後繼指令之後移出屏蔽,這控制多少指令受述詞值影響,該述詞值回應於VPT指令來設置。在此情況下,「1」放置在屏蔽之最低有效位元處,因此移出需要四個後繼移位,所以這意謂四個後繼指令I0至I3藉由VPT指令來預測。
注意,因為在滴答5結束時移出之頂部屏蔽欄位為「1」,應用另一種轉變以翻轉為滴答6作好準備之述詞欄位50中之位元,儘管當屏蔽變成全0時,述詞位元不管怎樣都不會影響指令I4之結果。首先,這使得硬體更簡單,因為當移出之頂部位元為1時述詞欄位之位元可簡單地轉變(不需要額外電路系統以當屏蔽欄位變成全0時偵測特殊情況並在此情況下抑制該轉變)。此外,在VPT指令塊結束時轉換述詞位元可用於將預測位元50設置為數個值,該等值可隨後藉由VPT指令之「AND」形式來用以評估測試條件之更複雜組合,如下文根據第13圖所論述。
第10圖圖示將屏蔽欄位52之每個設置為同一值並當處理每個向量指令之適當節拍時讀取的實例。當在執行不同向量指令之間不存在重疊時,替代方法將為僅將VPT指令寫入屏蔽欄位之一個(例如,屏蔽欄位0)且當預測後繼指令時向量處理之每個節拍引用同一屏蔽欄位。若處理器僅支援第10圖中圖示之形式之非重疊執行,則提供僅單個屏蔽欄位是足夠的。或者另一種方法在此種情況下將為,僅實施與單屏蔽欄位(MASK0)關聯之資料儲存器,但將該屏蔽欄位之值複製至全部其他屏蔽欄位。此方法會提供處理電路系統之一致視圖至軟體,而不管重疊指令還是不重疊指令。若處理器實施該複製流程,則其通常忽略寫入複本屏蔽欄位MASK1至MASK3。
然而,在更小、更能量高效之處理器中,可能不存在充足之硬體資源以並行處理給定向量指令之全部節拍。例如,向量處理單元之寬度可能更狹小,例如為總向量暫存器之一半寬度,且在此情況下給定向量指令之處理將需要架構時鐘之兩個滴答,一個用於處理頭兩個節拍而另一個用於處理次兩個節拍,如第11圖圖示。儘管在該情況下仍然執行無任何重疊之向量指令是可能的,以便第一個一旦完成就開始第二個指令,但這可導致可用硬體資源之低效使用。在使用向量指令之應用中,存在不同類型之向量指令之相對均勻混合相對常見,諸如一方面與記憶體系統8互相作用之載入/儲存指令及另一方面諸如乘法之算術指令。若處理在載入/儲存指令與乘法指令之間交替,則當相對昂貴硬體塊之一(諸如乘法累加單元或載入/儲存單元)保持未使用時無重疊地執行指令可導致相對長之時段,從而降低效能且消耗更多功率。
如第11圖圖示,若處理可重疊不同向量指令之執行則可獲得資源之更高效利用,以便第二向量指令之節拍之第一子集與第一指令之節拍之第二子集並行執行。在第11圖之實例中,指令I0之節拍0及節拍1與VPT指令之節拍2及節拍3並行執行,且指令I0/I1及指令I1/I2以類似方式重疊。儘管此重疊執行並不總是可能的(例如,在指令之間可能存在依賴性,或若兩個連續指令需要同一硬體單元,則第二個指令可能需要等到第一個指令完成),在許多情況下使用不同硬體單元之向量指令可在不同路徑之間不具有任何依賴性,因為許多向量操作大部分處在同一路徑內。例如,儘管給定向量指令I1之路徑0可取決於先前指令I0之路徑0之結果,但I1之路徑0不可能取決於I0之路徑1、路徑2、路徑3,因此一旦I0之路徑0完成則可開始I1之路徑0(且其他連續向量指令之情況類似)。藉由以第11圖中圖示之方式重疊執行指令之一些節拍,可改進給定硬體單元之使用百分比以提高處理效能。此舉亦可有助於藉由減少諸如乘法累加單元之相對昂貴硬體塊必須保持工作的時間來節省功率。
第11圖圖示當以此方式重疊執行時設置在VPT指令之VPR22中之控制資訊的實例。第11圖之第1列至第4列圖示分別在滴答1至滴答4結束時設置之VPR的內容(即,用於控制分別在滴答2至滴答5中處理之節拍之操作的VPR內容)。在給定指令之節拍0及節拍1期間設置/讀取之屏蔽欄位0及屏蔽欄位1,且在給定指令之節拍2及節拍3期間設置/讀取屏蔽欄位2及屏蔽欄位3。類似地,述詞欄位對應於節拍分別有效地分成零及一個或兩個及三個。
在滴答1中,執行VPT指令之節拍0及節拍1。這次指定VPT指令為VPTT,VPTT指示在VPT指令後之兩個後繼指令要預測且將其等兩者視為then指令(T)。因此,VPT指令之節拍0/節拍1根據第9圖之編碼控制將屏蔽值0100寫入屏蔽欄位0/1。屏蔽欄位2及屏蔽欄位3保持其等的前值,若不存在最新之VPT指令該等前值通常為0000。這次,元件大小為16位元位元,即一個節拍之一半,因此節拍0及節拍1一起對16位元元件執行四次元件比較運算,且將該等元件比較之結果寫入述詞欄位50之下半部中。因為在向量之8位元塊之粒度下來指定述詞位元,所以每16位元元件比較運算中存在兩個位元,因此根據在每個元件中比較之結果來將位元對設置為0或1。
在滴答2中,基於在述詞欄位50之更低塊中之述詞值來控制向量指令I0之頭兩個節拍,因為屏蔽欄位0及屏蔽欄位1為非零。I0為T指令,因為不存在述詞欄位之下半部之翻轉,因為其已由VPT指令設置。此外,在滴答2期間,亦執行VPT指令之節拍2及節拍3,且這導致對目標向量之上四個16位元元件執行另一元件比較。處理電路系統4設置述詞欄位之上半部以指定指示每個元件比較之結果的位元組述詞位元。再次,因為將VPT指令指定為VPTT,在屏蔽欄位2及屏蔽欄位3中將初始屏蔽值設置為0100。因為在滴答2期間VPT指令已寫入屏蔽欄位2及屏蔽欄位3,在滴答2結束時不再左移該等屏蔽欄位。然而,在滴答2結束時,將屏蔽欄位0、屏蔽欄位1左移一個位元位置以產生用於控制後繼指令I1之節拍0及節拍1之屏蔽(因為VPT指令並不在此滴答中更新該等欄位)。在此階段移出屏蔽欄位0、屏蔽欄位1之位元等於0,因此不存在述詞欄位之下半部之轉變。因此,在滴答3開始時,VPR22如第11圖之第2列圖示。
在滴答3中,所有屏蔽欄位為非零的。指令I1之節拍0及節拍1基於屏蔽欄位0及屏蔽欄位1來控制並基於述詞欄位50之下半部來預測,且指令I0之節拍2及節拍3基於屏蔽欄位2及屏蔽欄位3來控制並基於述詞欄位50之上半部來預測。
在滴答3結束時,將所有屏蔽欄位左移一個位元位置。對於屏蔽欄位2/3,此導致在滴答2結束時屏蔽欄位0/1發生相同轉移,且再次移出之位元為零,因此不存在述詞欄位50之上半部之翻轉。然而,對於屏蔽欄位0/1,現在左移導致正移出該屏蔽欄位之最後「1」位元值及該等屏蔽欄位為全零,其意謂在滴答4期間指令I2之節拍0及節拍1將獨立於述詞來執行。此為正確的處理,因為VPTT指令應僅影響下兩個向量指令,因此I2將不會依賴於預測。因為移出屏蔽欄位0及屏蔽欄位1之頂部位元為「1」,述詞欄位50之下半部在滴答3與滴答4之間變換時轉變。然而,屏蔽欄位2及屏蔽欄位3在滴答4中仍為非零的(查看第11圖之第3列),因此在滴答4期間執行之指令I1之節拍2及節拍3仍依賴於述詞欄位50之上半部分。
最後,在滴答4結束時對每個屏蔽欄位應用另一種左移,且這導致屏蔽欄位2/3亦變成全零,以便在滴答5期間獨立於預測值50來執行指令I2之節拍2及節拍3。此外,因為移出屏蔽欄位2及屏蔽欄位3之頂部位元為「1」,述詞欄位50之上半部在滴答4與滴答5之間變換時轉變。
概括言之,藉由屏蔽欄位及對應正執行之向量指令之節拍的述詞欄位之部分來獨立地控制後繼向量指令之每個節拍之處理。類似地,述詞欄位之部分是否在滴答結束時轉變,取決於移出對應於該部分之屏蔽欄位之位元為1還是0。
第12圖圖示在連續指令之間執行更大程度之重疊的另一實例。處理電路系統4可具有每滴答僅支援一個處理節拍之處理硬體,因此給定向量指令之處理可能需要延續四個滴答。在維持硬體單元之更高使用之情況下,其中在其等執行中可交錯可能的不同向量指令以便第二指令之節拍0與如第12圖之頂部之圖表圖示的前面指令之節拍1並行啟動。
在此情況下,給定指令之節拍0至節拍3各自從屏蔽欄位0至屏蔽欄位3之對應一個設置或讀取,且述詞欄位50亦分成四等分,其中每四分之一在VPT指令之處理之對應節拍之後來設置。第12圖之第1列至第7列圖示分別在滴答1至滴答7結束時VPR 22的內容(即,用於控制分別在滴答2至滴答8中執行之處理之節拍的控制資訊)。這次VPT指令指定為VPTEE,且資料元件大小為8位元,因此每個節拍對應四個元件且述詞欄位50之每個位元組述詞位元獨立於其他位元,根據由VPT指令指定之目標向量之對應8位元元件的元件比較之結果來設置。
在滴答1中,執行VPT指令之節拍0並將屏蔽欄位0設置為1010以指示VPTEE指令。根據對應元件比較之結果將述詞位元寫入述詞欄位50之下四分之一中。
在滴答2中,在第12圖之第1列中圖示之VPR內容用於處理指令I0之節拍零以便其基於在述詞欄位50之下四分之一中的述詞位元來預測。此外在滴答2中,執行VPT指令之節拍1且其將初值1010寫入屏蔽欄位1並基於對應元件比較之結果來更新述詞欄位之第二個四分之一中的述詞位元。在滴答2結束時不存在屏蔽欄位0之左移,且當移出之屏蔽欄位之頂部位元為「1」時,存在述詞欄位之下四分之一的轉變以便在滴答3開始時,VPR 22之內容如第12圖之第2列中圖示。因為翻轉了述詞欄位之下四分之一,這意謂在滴答3期間,指令I1之節拍0表示「else」指令,因為在對應VPT指令通過測試條件之部分之向量的部分中將屏蔽其操作。
類似地,如在第12圖之剩餘列中圖示,當執行VPT指令之不同節拍時,基於對應元件比較之結果填充述詞欄位50之對應部分且每個連續屏蔽欄位在連續滴答中設置為初值。在每次滴答結束時,將所有屏蔽欄位左移一個位元位置,且存在任一屏蔽欄位之述詞欄位之對應部分的轉變,在任一屏蔽欄位中移出之位元等於「1」。最後,每個屏蔽欄位變成全零,一旦全部「1」位元已移出,這對於不同屏蔽欄位就會交錯,以便給定屏蔽欄位在滴答之時間中將變成全零,在該滴答之時間中應處理指令I3之對應節拍(因為I3為獨立於該述詞處理之第一指令)。類似地,交錯述詞欄位之各個等分之轉變以匹配對應TEE指令I0、指令I1、指令I2之交錯執行。
概括言之,藉由提供多個屏蔽欄位,為微架構設計者提供靈活性,能根據功率預算及可用電路面積及在給定應用之效能及能量效率之間權衡來實施不同的硬體設計。高效能系統可使用第10圖之方法以允許並行處理所有節拍,而更低功率系統可使用在第11圖或第12圖中之方法。藉由定義架構中之多個屏蔽欄位,這避免限制應提供什麼特定形式之執行資源,其賦能架構跨一定範圍之功率及效能點而得以使用。
儘管第9圖至第12圖圖示屏蔽欄位編碼,其使用最低有效「1」位元之位元位置以指示由VPT指令預測之剩餘指令之數目,並每次處理另一指令左移屏蔽欄位,在其他實施例中,可以相反方式編碼屏蔽欄位,其中設置為「1」的最高有效位元表示剩餘指令之數目,並且回應於每個後繼指令應用右移。此外,除了使用識別要預測之指令之數目的「1」位元,並當移出「1」時觸發述詞欄位50之轉變,此操作可使用等於「0」之位元來進行。因此,更通常待由VPT指令預測之預定數量之指令可藉由離屏蔽欄位之給定端的最遠位元之位元位置來表示,該屏蔽欄位之給定端具有預定位元值(其中預定位元值為「0」或者「1」),並回應於每個後繼向量指令,屏蔽欄位可向給定端移動一個位元位置。若移出之位元具有預定位元值,則轉變對應於彼屏蔽欄位之述詞欄位之至少一部分。
此外,使用等於1或0之最低/最高有效位元之位元位置預測之剩餘向量指令之數目並不是必需的。儘管此技術有用,因為其賦能使用屏蔽欄位之剩餘位元相對有效地編碼T/E指令之圖案,但其他技術可用於指示怎樣處理後繼向量指令。例如,屏蔽欄位50可簡單地指定指示要預測之剩餘向量指令之數目的二進位數值,該二進位數值回應於VPT指令設置為預定數,隨後在每個後繼指令之後遞減直到其達到零,在達到零時將獨立於述詞欄位50來處理下一個向量指令。T/E指令之圖案可由與指示要預測之剩餘指令數目之值分開的欄位來指示,而非使用如第9圖圖示之單個編碼值。
當發生異常事件時可將VPR22之內容保存至堆疊,並在異常之處理之後,所保存之VPR值可自堆疊恢復至VPR,以便處理可自由異常打斷之點繼續。此避免了在異常返回之後VPT指令之重複處理的需要。
在第10圖至第12圖圖示之實例圖示在VPT指令後之後來指令之每一個為向量指令的情況。然而,有時後來指令之一個可為純量指令或一些其他類型之非向量指令。在此情況下,純量或非向量指令可獨立於VPR之內容操作以便獨立於向量預測來執行其功能。然而,純量指令之執行可仍然觸發轉移VPR22之屏蔽欄位,以倒數要處理之另一個剩餘指令。因此,儘管VPT指令指定若VPT指令為向量指令則預測預定數量之後繼指令槽,但實際上並非所有槽為向量指令。或者,當遇到非向量指令時可能不移動屏蔽暫存器,在此情況下,由VPT指令實際上影響之向量指令之數目將不取決於是否存在任何中間非向量指令。
又,有時程式員或編寫員可在一個VPT指令後追加後繼指令塊內原本由第一VPT指令來預測之另一VPT指令。在此情況下,第二VPT指令可重設VPR22之對應屏蔽欄位為初始屏蔽值,從而有效地重新啟動計算在VPT塊中之剩餘指令之數目。因此,包括第二向量預測指令亦可中斷VPT塊並停止由早先VPT指令預測全部指令。實務上,若程式員或編寫員意圖包括在第一指令後不久之第二VPT指令,則其等將正常地編碼第一VPT指令以便其VPT塊在第二個出現之前結束,例如藉由選擇屏蔽初值以便在預測之後存在較少指令。
指令解碼器可支援如下之VPT指令之一些變體: · VPT:上文論述之基本VPT指令,其控制處理電路系統4以獨立於由控制資訊指示之任一前預測結果,根據對目標向量執行元件比較運算之結果設置VPR 22中之控制資訊。因此,VPT指令重設述詞欄位50為由對應元件比較運算決定之賦能位元值45。此外VPT指令以上文論述之方式設置屏蔽欄位52以控制根據述詞欄位50控制哪些後繼向量指令。 · VPTA:VPT指令之AND形式,對於該形式,由回應於VPT指令執行之元件比較運算導致之賦能位元45與在述詞欄位50中之對應位元及寫入至述詞欄位50之結果相加。以與VPT指令相同之方式設置屏蔽欄位52。因此,當在VPTA指令之後執行後繼向量指令之一個時,向量操作之屏蔽不僅取決於由VPTA指令執行之比較,亦取決於用於設置述詞欄位50之上述比較之結果。 · VCMP:比較指令,其觸發對目標向量之多個元件比較運算及設置述詞欄位50以指示比較之結果(獨立於藉由控制資訊指示之任一前預測結果),但其不設置屏蔽欄位52或者將屏蔽欄位52設置為全零,因此不導致根據預測而控制後繼向量指令。 · VCMPA:VCMP指令之AND形式,對於該形式,由對目標向量執行元件比較運算導致之賦能位元45可與上述由述詞欄位50指示之對應位元、及寫入述詞欄位50(類似於VPTA指令)之AND之結果相加,但其不設置屏蔽欄位52或者將屏蔽欄位52設置為全零,因此不導致根據述詞而控制後繼向量指令。
除非另有說明,否則對上文描述中之VPT指令之引用亦適用於VPTA。上文展示之VCMP及VCMPA指令每個指示是否未通過測試條件之比較產生一個布林結果,而非多位元條件碼,該碼指示可用於條件狀態範圍之條件狀態。在由VCMP或VCMPA執行之元件比較之寬度大於單位元組的情況下,應理解每次比較產生之單個布林結果可儲存在多個位元組述詞位元中,其中述詞欄位50內具有相同值。VCMP指令僅留下屏蔽欄位52還是將其等清零,可在一些實施方式之硬體中固定,或可根據由VCMP指令指定之參數來選擇。在一些實施例中,VCMP及VCMPA指令可作為分別具有設置為0之屏蔽欄位之VPT及VPTA指令來實施,使得預測之後繼指令之預定數量為0(因此不需要單獨作業碼以指示VCMP及VCMPA指令)。
藉由支援彼等指令變體,此舉允許可不藉由使用指令序列建立之單指令評估的更複雜的邏輯條件。例如: 高階代碼: for (int i = 0; i < LEN; i++) { if ((data[i] < THRESHOLD) && (data[i] > -THRESHOLD)) { data[i] = 0; } } 組合程式碼: VMOV Q7, #0 RSB R1, R0, #0 // R0 = THRESHOLD, R1 = -THRESHOLD DLSTP.16 LR, R4, loopEnd // R4 = LEN loopStart: VLDR.16 Q0, [R2], #2 // R2 = 資料指標 VCMP.16 LT, Q0, R0 VPTA.16 GT, Q0, R1 // 與以上LT比較組合GT比較 VSTR.16 Q7, [R2]!, #2 // 基於以上VPI之VSTR的路徑預測 DLE loopStart loopEnd:
第13圖圖示回應於控制後繼VSTR指令之操作之VCMP及VPTA指令而設置位元組述詞位元45的實例。因此,在此實例中VCMP指令使用LT條件(對應於高階代碼中之「data[i]<THRESHOLD」)比較目標向量Q0之每個資料元件與純量閾值R0,並設置VPR22之述詞欄位50中之述詞位元45以指示比較之結果。後繼VPTA指令基於GT條件(對應於高階代碼中之「data[i]>-THRESHOLD」)將該等賦能位元與目標向量Q0與暫存器R1之對應元件比較之結果相加,以便最終結果為滿足該等準則之兩者之彼等元件(在此實例中向量Q0之元件2、元件4及元件5),賦能位元為1。隨後後繼儲存指令VSTR屏蔽與賦能位元為0之路徑關聯之儲存操作。在此實例中,儲存指令為緊接的向量儲存指令,其中每個非屏蔽儲存操作之位址藉由增加暫存器R2中之基本位址至n此增量值(inc)來計算,其中n為相關路徑之資料元件位置(例如,路徑2中之儲存值堆積儲存至R2+2*inc)。應理解,其他實例可使用非緊接的(散射)儲存指令,其中每個非屏蔽儲存操作使用目標位址,該目標位址基於在向量暫存器之一個中指定之位址向量之對應元件來決定。
儘管VPT及VCMP指令之AND形式在上文論述過,但定義其他類型之指令亦是可能的,對於該其他類型之指令,控制資訊經設置以指示目標向量值之給定資料元件之述詞結果,其依賴於該複數個元件比較運算之對應一個之結果及由該控制資訊指示之前述詞結果。例如,上述述詞結果及新元件比較之述詞結果可藉由諸如OR、NAND、XOR等之其他邏輯運算來組合。
如上文提及,當第10圖及第12圖中圖示之技術與當移出對應屏蔽欄位52之頂部位元為「1」時轉變之述詞欄位50之相關部分之位元一起使用時,此產生當到達VPT塊之結尾時轉變之述詞位元(因為移出屏蔽之最後「1」位元以將屏蔽欄位對下一個滴答留下全0)。儘管當不預測下一個指令時轉變述詞位元看似無意義,但此舉可對設置後繼VPTA或VCMPA指令之適宜預測條件很有用。例如,考慮以下指令: VPTA AL, Qa, Qb VNOP.
VPTA指令藉由與其相加而將其結果與述詞旗標之前值組合。此舉實際上不會改變述詞值,因為測試條件指定為AL(總是滿足),所以前述詞旗標全部與「1」相加。VNOP指令為VPT塊中之僅有指令且為不會正常觸發至資料暫存器狀態之任何改變的非操作(no-op; no operation)指令。然而,因為當移出屏蔽之最高有效位元為1時硬體轉變述詞位元50,所以VPTA及VNOP指令之作用為轉變VPR22中之述詞條件而無任何其他副作用。因此,此提供了對VPR22之述詞欄位評估「NOT」邏輯運算之方式。帝莫根定律允許以AND及NOT之組合方式表示任何基於「OR」之條件,所以與AND形式VPTA及VCMPA指令之提供一起在VPT塊之末端之轉變行為意謂可評估任何複雜鏈條件以控制後繼指令塊之預測。
在上文之實例中,VPT/VPTA指令控制處理電路系統4以對目標向量之各別元件執行元件比較運算。然而,這不是必需的並且在一些實例方式中向量預測指令可基於藉由先前指令(諸如上文所論述之VCMP或VCMPA指令)執行之比較來設置控制資訊來控制預定數量之後繼向量指令之處理。因此,回應於向量預測指令本身進行元件比較運算不是必需的。然而,實務上,回應於單指令,執行元件比較及設置用於控制後繼向量指令之控制資訊兩者更有效,因為其減少了需要執行之指令之數目、降低了在記憶體中儲存程式、快取要執行之指令、擷取及解碼指令之負擔。
如第14圖圖示,在VPT指令之後應用之預測可能不為正使用之預測之僅有形式。如上文所提及,向量指令之常見用途為在向量化迴圈中,其中某一序列之操作需要應用於在儲存在記憶體中之陣列80之每個元件a0、a1等。每高階代碼中之元件迭代一次的迴圈可編寫成包含具有較少迭代之迴圈的向量代碼,每個迴圈將塊元件載入向量暫存器中,使用一連串向量指令處理元件,並將處理之每個路徑之結果儲存回至記憶體。因此,每次迭代可處理對應於一個向量暫存器中之資料元件之數目的塊元件。若要處理之陣列中之元件的總數為NE及一個向量NV中之資料元件之數目(等於向量寬度VW除以資料元件大小ES),則整個陣列可處理最少NE/NV次迭代。然而,往往元件NE之總數可能不為一個向量中元件NV之數目之整數倍,因此在迴圈之最終迭代中,並非向量之所有元件都將被填充要處理之實際值。若允許未填充路徑中之處理無屏蔽進行,則此舉可引起錯誤。例如,超出陣列80之末尾之記憶體位址空間可能尚未映射在頁表中,所以若對於在處理陣列之末尾的最終迭代中之「未使用」路徑之一個執行載入/儲存操作,則相鄰於陣列存在記憶體存取故障或資料損壞。
因此,期望在迴圈之最終迭代中屏蔽未使用路徑中之操作。如第1圖圖示,處理電路系統4可具備用於控制賦能還是屏蔽給定向量化迴圈之哪些路徑的迴圈預測電路系統90。在啟動向量化迴圈時,將迴圈計數器16設定為指定在迴圈中要處理之元件總數NE的值。例如,迴圈啟動指令可指定元件之數目(例如查看上文實例中之迴圈啟動指令DLSTP哪個引用儲存陣列長度LEN之暫存器R4)。在迴圈之每次迭代結束時,自迴圈計數器16減去一個向量NV中之元件之數目以計算要處理之剩餘元件之數目NErem
。在啟動給定迴圈迭代時,若NErem
<NV,則迴圈預測電路系統90控制處理電路系統4以屏蔽與向量處理之上NV-NErem
路徑關聯之操作,例如藉由本身抑制向量處理之路徑(例如阻止發出載入/儲存請求)及/或去能在屏蔽路徑中寫入處理之結果來屏蔽。
若當迴圈預測電路系統90已決定應屏蔽一些路徑時在迭代中執行VPT或VPTA指令,則不管VPT指令之結果如何,屏蔽用於VPT指令之後之後繼向量指令之彼等路徑。例如,由迴圈預測電路系統90提供之控制信號可與自VPR 22中預測賦能位元產生之任何屏蔽控制信號相加,以決定是否應屏蔽總體特定路徑。另一方面,對於由迴圈預測電路系統90來屏蔽而不需要之其他路徑,由VPT/VPTA指令設置之述詞位元控制是否以上述相同之方式來屏蔽與彼等路徑之部分關聯之操作。
第15圖圖示處理向量預測之方法。在步驟100中,指令解碼器6決定要解碼之指令是否為向量預測指令。若否,則根據相關指令之功能解碼指令。當遇到向量預測指令時,在步驟102,指令解碼器6產生控制信號以控制處理電路系統根據對由向量預測指令指定之目標向量值之各別元件來執行之該元件比較運算,將控制資訊設置為VPR 22。在步驟104,指令解碼器6控制處理電路系統以處理預定數量之後繼指令,其中屏蔽與給定路徑之部分之給定部分關聯的操作,該給定路徑根據由在向量述詞指令後之控制資訊指示之目標向量之對應元件的對應元件比較運算之結果來控制。
第16圖圖示了可使用之虛擬機實施方式。儘管前文描述之實施例以用於操作支援相關技術之特定處理硬體之裝置及方法方式實施本發明,但亦可能提供硬體裝置之所謂虛擬機實施方式。該等虛擬機實施例在運行支援虛擬機程式130之主作業系統140之主處理器150上運行。通常,需要大功率處理器以提供在合理速度下執行之虛擬機實施方式,但該方法在某些情況下為合理的,諸如當期望為了相容性或重新使用原因而運行另一處理器之本端代碼。虛擬機程式130提供虛擬硬體介面至客程式120,客程式120與原本由真實硬體提供之硬體介面相同,該真實硬體為由虛擬機程式130模型化之裝置。因此,可以使用虛擬機程式130自客程式120內執行包括對如上所述的記憶體存取之控制之程式指令,以模型化其與虛擬機硬體之互動。客程式120可為裸金屬程式,或者其可為以與主OS 140運行虛擬機應用130相似之方式運行應用之客作業系統。亦應理解,存在不同類型之虛擬機,並在一些類型中存在直接在主硬體150上運行之虛擬機而無需主作業系統140。
在本申請案中,使用用語「經配置...」意謂裝置元件具有能夠執行所定義操作之結構。在此上下文中,「配置」意謂硬體或軟體之互連之排列或方式。例如,裝置可具有提供定義操作之專用硬體,或處理器或其他處理元件可經程式化以執行功能。「經配置以」不暗示裝置元件需要以任何方式改變以便提供所定義之操作。
儘管本文已參考所附圖式詳細地描述本發明之說明性實施例,但應理解,本發明並不限於彼等精確實施例且熟習此項技術者可在不背離如隨附申請專利範圍所定義之本發明之範疇及精神之情況下在其中實施各種改變及修改。
2‧‧‧資料處理裝置
4‧‧‧處理電路系統
6‧‧‧指令解碼器
8‧‧‧記憶體系統
10‧‧‧暫存器
12‧‧‧純量暫存器檔案
14‧‧‧向量暫存器檔案
16‧‧‧迴圈計數器
18‧‧‧元件大小暫存器
20‧‧‧向量寬度暫存器
22‧‧‧向量述詞暫存器
30‧‧‧作業碼
32‧‧‧元件大小欄位
34‧‧‧條件欄位
36‧‧‧屏蔽欄位
38‧‧‧目標向量暫存器欄位
40‧‧‧比較值欄位
41‧‧‧組合旗標欄位
45‧‧‧賦能位元
47‧‧‧最低有效賦能位元
50‧‧‧述詞欄位/述詞位元
52‧‧‧屏蔽欄位
80‧‧‧陣列
90‧‧‧迴圈預測電路系統
100‧‧‧步驟
102‧‧‧步驟
104‧‧‧步驟
120‧‧‧客程式
130‧‧‧虛擬機程式
140‧‧‧主OS
150‧‧‧主硬體
4‧‧‧處理電路系統
6‧‧‧指令解碼器
8‧‧‧記憶體系統
10‧‧‧暫存器
12‧‧‧純量暫存器檔案
14‧‧‧向量暫存器檔案
16‧‧‧迴圈計數器
18‧‧‧元件大小暫存器
20‧‧‧向量寬度暫存器
22‧‧‧向量述詞暫存器
30‧‧‧作業碼
32‧‧‧元件大小欄位
34‧‧‧條件欄位
36‧‧‧屏蔽欄位
38‧‧‧目標向量暫存器欄位
40‧‧‧比較值欄位
41‧‧‧組合旗標欄位
45‧‧‧賦能位元
47‧‧‧最低有效賦能位元
50‧‧‧述詞欄位/述詞位元
52‧‧‧屏蔽欄位
80‧‧‧陣列
90‧‧‧迴圈預測電路系統
100‧‧‧步驟
102‧‧‧步驟
104‧‧‧步驟
120‧‧‧客程式
130‧‧‧虛擬機程式
140‧‧‧主OS
150‧‧‧主硬體
從以下結合附圖閱讀之實例之描述中,本技術的另外態樣、特徵及優點將顯而易見,其中:
第1圖示意地圖示了支援向量指令執行之資料處理裝置的實例;
第2圖圖示向量預測指令之編碼的實例;
第3圖圖示使用向量預測指令以控制回應於後繼向量指令而執行的處理之路徑之部分的屏蔽的實例;
第4圖圖示獨立於向量預測指令之結果回應後繼向量指令而執行更新位址指標之額外操作的實例;
第5圖至第7圖圖示在執行向量預測指令後屏蔽後繼向量指令之向量操作之部分的實例;
第8圖圖示回應於控制預定數量之後繼指令之操作的向量預測指令而設置之控制資訊的實例;
第9圖為圖示用於控制多少後繼向量指令由預測指令影響之屏蔽欄位之不同編碼的表格;
第10圖至第12圖圖示使用多個屏蔽欄位以支援連續向量指令執行之間的不同數量之重疊的三個實例;
第13圖圖示基於涉及多次比較之更複雜條件之評估來預測的實例;
第14圖圖示根據在向量指令之迴圈中處理的資料元件之數目來屏蔽向量處理之路徑的實例;
第15圖圖示處理向量預測指令之方法;以及
第16圖圖示可使用之虛擬機實施方式。
無
(請換頁單獨記載) 無
30‧‧‧作業碼
32‧‧‧元件大小欄位
34‧‧‧條件欄位
36‧‧‧屏蔽欄位
38‧‧‧目標向量暫存器欄位
Claims (25)
- 一種裝置,其包含: 處理電路系統,用以執行資料處理;以及 一指令解碼器,用以解碼一向量指令以控制該處理電路系統執行對應於一向量值之各別資料元件的向量處理之複數個路徑; 其中回應於一向量預測指令,該指令解碼器經配置以控制該處理電路系統根據每個用於決定一目標向量值之一對應資料元件通過還是未通過一測試條件之複數個元件比較運算來設置控制資訊,該控制資訊用於控制在一連串要處理之指令內的該向量預測指令後之一預定數量之後繼向量指令的處理,其中該預定數量藉由該向量預測指令硬連接或識別;以及 回應於該預定數量之後繼向量指令之一個,該指令解碼器經配置以控制該處理電路系統根據該元件比較運算之一結果決定是否屏蔽與向量處理之一給定路徑之一給定部分關聯的一操作,該元件比較運算藉由對應於該給定部分之該目標向量值之一資料元件的該控制資訊來指示; 其中回應於至少一種類型之向量指令,該指令解碼器經配置以控制該處理電路系統獨立於向量處理之該複數個路徑執行一額外操作;以及 該處理電路系統經配置以當該預定數量之後繼向量指令之一個為該至少一種類型之向量指令之一個時獨立於該控制資訊執行該額外操作。
- 如請求項1所述之裝置,其中回應於該向量預測指令,該指令解碼器經配置以控制該處理電路系統執行該複數個元件比較運算。
- 如請求項2所述之裝置,其中該指令解碼器經配置以支援以下各者之至少一個: 一向量比較向量預測指令,針對該指令,每個元件比較運算依賴於該目標向量值之該對應資料元件與一另一向量值之一對應元件之一比較,該另一向量值保存在由該向量預測指令指定之一暫存器中; 一純量比較向量預測指令,針對該指令,每個元件比較運算依賴於該目標向量值之該對應資料元件與一純量值之一比較,該純量值保存在由該純量預測指令指定之一暫存器中;以及 一常數比較向量預測指令,針對該指令,每一個元件比較運算依賴於該目標向量值之該對應資料元件與一預定常數之一比較。
- 如請求項1所述之裝置,其中對於該預定數量之後繼向量指令之至少一個,該向量預測指令識別後繼向量指令為一then條件向量指令還是一else條件向量指令; 對於識別為一then條件向量指令之該後繼向量指令之一個,該處理電路系統經配置以當對應於該給定部分之該目標向量值之該資料元件未通過該測試條件時屏蔽與向量處理之該給定路徑之該給定部分關聯的該操作;以及 對於識別為一else條件向量指令之該後繼向量指令之一個,該處理電路系統經配置以當對應於該給定部分之該目標向量值之該資料元件通過該測試條件時屏蔽與向量處理之該給定路徑之該給定部分關聯的該操作。
- 如請求項1所述之裝置,其包含用以儲存該控制資訊之一述詞暫存器,其中回應於根據該控制資訊來控制之處理的該預定數量之後繼向量指令之一個,對於至少一些類型之後繼向量指令,該處理電路系統經配置以自該相同述詞暫存器讀取該控制資訊而不管該後繼向量指令之一編碼如何。
- 如請求項1所述之裝置,其中該控制資訊包含複數個位元旗標,每個位元旗標對應於該目標向量值之一各別部分並指示包含該目標向量值之該部分之一資料元件通過還是未通過該測試條件。
- 如請求項1所述之裝置,其中該控制資訊包含: 一述詞欄位,指示該複數個元件比較運算之一結果;以及 一屏蔽欄位,用於根據該述詞欄位來控制哪些後繼向量指令要處理。
- 如請求項7所述之裝置,其中回應於該向量預測指令,該指令解碼器經配置以控制該處理電路系統將該屏蔽欄位設置為一初值,其中該預定數量藉由離該屏蔽欄位之一給定端的最遠位元之該位元位置來表示,該最遠位元具有一預定位元值。
- 如請求項8所述之裝置,其中在該初值中,在該屏蔽欄位之該最遠位元與該給定端之間之位元具有指示該後繼向量指令是否為以下之位元值: 一then條件向量指令,針對該指令,該處理電路系統經配置以當對應於該給定部分之該目標向量值之該資料元件未通過該測試條件時屏蔽與向量處理之該給定路徑之該給定部分關聯的該操作;或 一else條件向量指令,針對該指令,該處理電路系統經配置以當對應於該給定部分之該目標向量值之該資料元件通過該測試條件時屏蔽與向量處理之該給定路徑之該給定部分關聯的該操作。
- 如請求項8所述之裝置,其中回應於該預定數量之後繼向量指令之一個,該處理電路系統經配置以將該屏蔽欄位向該屏蔽欄位之該給定端移動一個位元位置。
- 如請求項10所述之裝置,其中該處理電路系統經配置以當移出該屏蔽欄位之一位元具有一預定位元值時轉變該述詞欄位之至少一部分之位元。
- 如請求項7所述之裝置,其中回應於一給定向量指令,該處理電路系統經配置以執行每個對應於一向量值之一區段之複數個處理節拍;以及 該控制資訊包含每個對應於該預定數量之後繼向量指令的處理之一各別節拍的複數個屏蔽欄位。
- 如請求項12所述之裝置,其中該處理電路系統經配置以支援第一向量指令與第二向量指令之重疊執行,其中該第二向量指令之節拍之一第一子集與該第一向量指令之節拍之一第二子集並行執行。
- 如請求項13所述之裝置,其中當處理該向量預測指令之節拍之該第一子集或該預定數量之後繼向量指令之一個時,該處理電路系統經配置以使用該複數個屏蔽欄位之一第一屏蔽欄位;以及 當處理該向量預測指令之節拍之該第二子集或該預定數量之後繼向量指令之一個時,該處理電路系統經配置以使用該複數個屏蔽欄位之一第二屏蔽欄位。
- 如請求項1所述之裝置,其中該處理電路系統包含迴圈預測電路系統以根據由向量指令之一迴圈處理的資料元件之一數目及每向量值之資料元件之一數目來決定是否應在該迴圈之一給定迭代期間屏蔽向量處理之任何路徑;以及 回應於該預定數量之後繼向量指令之一個,該指令解碼器經配置以控制該處理電路系統以當該迴圈預測電路系統決定應屏蔽該給定路徑時,獨立於回應於該向量預測指令而設置之該控制資訊,屏蔽與向量處理之該給定路徑之該給定部分關聯的該操作。
- 如請求項1所述之裝置,其中回應於一第一類型向量預測指令,該指令解碼器經配置以控制該處理電路系統獨立於由該控制資訊指示之一前述詞結果,根據該複數個元件比較運算之一結果來設置該控制資訊。
- 如請求項1所述之裝置,其中回應於一第二類型向量預測指令,該指令解碼器經配置以控制該處理電路系統以設置該控制資訊以指示該目標向量值之一給定資料元件之一述詞結果,該目標向量值依賴於該複數個元件比較運算之一對應一個之一結果及由該控制資訊指示之一前述詞結果;以及 在該第二類型向量預測指令之一個之後,回應於該預定數量之後繼向量指令之一個,該指令解碼器經配置以控制該處理電路系統根據由對應於該給定部分之該目標向量值之一資料元件之該控制資訊指示的該述詞結果來控制是否屏蔽與向量處理之該給定路徑之該給定部分關聯的一操作。
- 如請求項1所述之裝置,其中該指令解碼器經配置以解碼一向量比較指令以產生控制信號以控制該處理電路系統根據以下各者之一個設置該控制資訊: 複數個元件比較運算,其各自用於決定一目標向量值之一對應資料元件通過還是未通過一測試條件;或 該控制資訊及複數個元件比較運算之一前值,該複數個元件比較運算各自用於決定一目標向量值之一對應資料元件通過還是未通過一測試條件。
- 如請求項1所述之裝置,其中該處理電路系統經配置以藉由以下各者之一者屏蔽與向量處理之該給定路徑之該給定部分關聯的該操作: 抑制對應於該給定路徑之該給定部分的一目的地向量暫存器之一部分之更新; 設置對應於該給定路徑之該給定部分的該目的地向量暫存器之一部分之一預定值;以及 抑制該給定路徑之該向量處理。
- 如請求項1所述之裝置,其中回應於該預定數量之後繼向量指令之一個,該處理電路系統經配置以分別為一給定路徑之每部分決定是否根據該控制資訊來屏蔽與向量處理之該給定路徑之該部分關聯的該操作,該控制資訊係為對應於彼部分之該目標向量值之一資料元件而指示。
- 如請求項1所述之裝置,其中回應於該預定數量之後繼向量指令之一個,該處理電路系統經配置以決定是否根據該控制資訊來屏蔽與向量處理之一給定路徑整體關聯之一操作,該控制資訊係為對應於該給定路徑之該目標向量值之一個資料元件而指示。
- 一種裝置,其包含: 用於執行資料處理之構件;以及 用以解碼一向量指令以控制該處理電路系統執行對應於一向量值之各別資料元件的向量處理之複數個路徑之構件; 其中回應於一向量預測指令,該用於解碼之構件經配置以控制該用於執行資料處理之構件以根據每個決定一目標向量值之一對應資料元件通過還是未通過一測試條件之複數個元件比較運算來設置控制資訊,該控制資訊用於控制在要處理之一連串指令內的該向量預測指令後之一預定數量之後繼向量指令的處理,其中該預定數量藉由該向量預測指令硬連接或識別;以及 回應於該預定數量之後繼向量指令之一個,該用於解碼之構件經配置以控制該用於處理之構件根據該元件比較運算之一結果決定是否屏蔽與向量處理之一給定路徑之一給定部分關聯的一操作,該元件比較運算藉由對應於該給定部分之該目標向量值之一資料元件的該控制資訊來指示; 其中回應於至少一種類型之向量指令,該用於解碼之構件經配置以控制該用於執行資料處理之構件獨立於向量處理之該複數個路徑而執行一額外操作;以及 該用於執行資料處理之構件經配置以當該預定數量之後繼向量指令之一個為該至少一種類型之向量指令之一個時獨立於該控制資訊執行該額外操作。
- 一種用於處理向量指令之資料處理方法,該等向量指令用於控制處理電路系統執行對應於一向量值之各別資料元件的向量處理之複數個路徑,該方法包含以下步驟: 解碼一向量預測指令以控制該處理電路系統根據每個用於決定一目標向量值之一對應資料元件通過還是未通過一測試條件的複數個元件比較運算來設置控制資訊,該控制資訊用於控制在要處理之一連串指令內的該向量預測指令後之一預定數量之後繼向量指令的處理,其中該預定數量藉由該向量預測指令硬連接或識別;以及 回應於該預定數量之後繼向量指令之一個,解碼該後繼向量指令以控制該處理電路系統以根據該元件比較運算之一結果決定是否屏蔽與向量處理之一給定路徑之一給定部分關聯的一操作,該元件比較運算藉由對應於該給定部分之該目標向量值之一資料元件的該控制資訊來指示; 其中當該預定數量之後繼向量指令之一個為該處理電路系統獨立於向量處理之該複數個路徑執行一額外操作的一種類型之向量指令時,控制該處理電路系統獨立於該控制資訊來執行該額外操作。
- 一種虛擬機電腦程式,包含程式指令以控制一主資料處理裝置以為對應於如請求項1至21中任一項所述之裝置提供一指令執行環境。
- 一種電腦可讀取儲存媒體,其儲存如請求項24所述之該虛擬機電腦程式。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1604943.9 | 2016-03-23 | ||
GB1604943.9A GB2548600B (en) | 2016-03-23 | 2016-03-23 | Vector predication instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201737067A true TW201737067A (zh) | 2017-10-16 |
TWI746530B TWI746530B (zh) | 2021-11-21 |
Family
ID=55968773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106109491A TWI746530B (zh) | 2016-03-23 | 2017-03-22 | 向量預測指令 |
Country Status (9)
Country | Link |
---|---|
US (1) | US10782972B2 (zh) |
EP (1) | EP3433722B1 (zh) |
JP (1) | JP7002462B2 (zh) |
KR (1) | KR102379899B1 (zh) |
CN (1) | CN108780395B (zh) |
GB (1) | GB2548600B (zh) |
IL (1) | IL261311B (zh) |
TW (1) | TWI746530B (zh) |
WO (1) | WO2017163024A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI791694B (zh) * | 2017-12-13 | 2023-02-11 | 英商Arm股份有限公司 | 向量帶進位加法指令 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107315563B (zh) * | 2016-04-26 | 2020-08-07 | 中科寒武纪科技股份有限公司 | 一种用于执行向量比较运算的装置和方法 |
GB2558955B (en) * | 2017-01-24 | 2020-12-23 | Advanced Risc Mach Ltd | An apparatus and method for generating and processing a trace stream indicative of execution of predicated vector memory access instructions |
WO2018182445A1 (en) * | 2017-03-31 | 2018-10-04 | Intel Corporation | Method and apparatus for converting scatter control elements to gather control elements used to sort vector data elements |
US11087067B2 (en) * | 2020-01-06 | 2021-08-10 | quadric.io, Inc. | Systems and methods for implementing tile-level predication within a machine perception and dense algorithm integrated circuit |
US11301252B2 (en) * | 2020-01-15 | 2022-04-12 | Arm Limited | Executing mutually exclusive vector instructions according to a vector predicate instruction |
CN113726474A (zh) * | 2020-05-26 | 2021-11-30 | 索尼公司 | 物联网中的操作电子设备、管理电子设备和通信方法 |
GB2599652B (en) * | 2020-10-06 | 2023-01-18 | Advanced Risc Mach Ltd | Masked-vector-comparison instruction |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4949250A (en) * | 1988-03-18 | 1990-08-14 | Digital Equipment Corporation | Method and apparatus for executing instructions for a vector processing system |
JPH06274529A (ja) * | 1993-03-18 | 1994-09-30 | Kofu Nippon Denki Kk | ベクトル処理装置 |
US6959378B2 (en) * | 2000-11-06 | 2005-10-25 | Broadcom Corporation | Reconfigurable processing system and method |
US7017032B2 (en) * | 2001-06-11 | 2006-03-21 | Broadcom Corporation | Setting execution conditions |
US7051180B2 (en) * | 2002-01-09 | 2006-05-23 | International Business Machines Corporation | Masterless building block binding to partitions using identifiers and indicators |
US6988187B2 (en) * | 2002-03-21 | 2006-01-17 | Sony Computer Entertainment Inc. | Counting instructions to skip in superscaler processor |
US20080016320A1 (en) * | 2006-06-27 | 2008-01-17 | Amitabh Menon | Vector Predicates for Sub-Word Parallel Operations |
US7676647B2 (en) * | 2006-08-18 | 2010-03-09 | Qualcomm Incorporated | System and method of processing data using scalar/vector instructions |
GB2470782B (en) * | 2009-06-05 | 2014-10-22 | Advanced Risc Mach Ltd | A data processing apparatus and method for handling vector instructions |
CN107102844B (zh) * | 2011-12-23 | 2021-06-08 | 英特尔公司 | 超级乘加(超级madd)指令 |
US9268569B2 (en) * | 2012-02-24 | 2016-02-23 | Apple Inc. | Branch misprediction behavior suppression on zero predicate branch mispredict |
US10095516B2 (en) * | 2012-06-29 | 2018-10-09 | Intel Corporation | Vector multiplication with accumulation in large register space |
US9298456B2 (en) * | 2012-08-21 | 2016-03-29 | Apple Inc. | Mechanism for performing speculative predicated instructions |
US9632781B2 (en) * | 2013-02-26 | 2017-04-25 | Qualcomm Incorporated | Vector register addressing and functions based on a scalar register data value |
US9792121B2 (en) | 2013-05-21 | 2017-10-17 | Via Technologies, Inc. | Microprocessor that fuses if-then instructions |
US10628156B2 (en) * | 2013-07-09 | 2020-04-21 | Texas Instruments Incorporated | Vector SIMD VLIW data path architecture |
US9519479B2 (en) * | 2013-11-18 | 2016-12-13 | Globalfoundries Inc. | Techniques for increasing vector processing utilization and efficiency through vector lane predication prediction |
US9557995B2 (en) * | 2014-02-07 | 2017-01-31 | Arm Limited | Data processing apparatus and method for performing segmented operations |
US9766888B2 (en) * | 2014-03-28 | 2017-09-19 | Intel Corporation | Processor instruction to store indexes of source data elements in positions representing a sorted order of the source data elements |
US20150277904A1 (en) * | 2014-03-28 | 2015-10-01 | Roger Espasa | Method and apparatus for performing a plurality of multiplication operations |
JP6274529B2 (ja) | 2015-02-09 | 2018-02-07 | 富士フイルム株式会社 | 有機半導体素子及びその製造方法、有機半導体膜形成用組成物、並びに、有機半導体膜の製造方法 |
-
2016
- 2016-03-23 GB GB1604943.9A patent/GB2548600B/en active Active
-
2017
- 2017-03-17 WO PCT/GB2017/050737 patent/WO2017163024A1/en active Application Filing
- 2017-03-17 EP EP17713061.4A patent/EP3433722B1/en active Active
- 2017-03-17 CN CN201780017670.6A patent/CN108780395B/zh active Active
- 2017-03-17 JP JP2018548423A patent/JP7002462B2/ja active Active
- 2017-03-17 KR KR1020187029667A patent/KR102379899B1/ko active IP Right Grant
- 2017-03-17 US US16/079,241 patent/US10782972B2/en active Active
- 2017-03-22 TW TW106109491A patent/TWI746530B/zh active
-
2018
- 2018-08-22 IL IL261311A patent/IL261311B/en active IP Right Grant
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI791694B (zh) * | 2017-12-13 | 2023-02-11 | 英商Arm股份有限公司 | 向量帶進位加法指令 |
Also Published As
Publication number | Publication date |
---|---|
JP7002462B2 (ja) | 2022-01-20 |
KR20180126520A (ko) | 2018-11-27 |
IL261311B (en) | 2020-09-30 |
GB2548600B (en) | 2018-05-09 |
US10782972B2 (en) | 2020-09-22 |
GB2548600A (en) | 2017-09-27 |
IL261311A (en) | 2018-10-31 |
EP3433722A1 (en) | 2019-01-30 |
TWI746530B (zh) | 2021-11-21 |
GB201604943D0 (en) | 2016-05-04 |
KR102379899B1 (ko) | 2022-03-31 |
CN108780395B (zh) | 2023-02-28 |
EP3433722B1 (en) | 2019-12-04 |
WO2017163024A1 (en) | 2017-09-28 |
US20190050226A1 (en) | 2019-02-14 |
JP2019509573A (ja) | 2019-04-04 |
CN108780395A (zh) | 2018-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI746530B (zh) | 向量預測指令 | |
KR102413832B1 (ko) | 벡터 곱셈 덧셈 명령 | |
EP2569694B1 (en) | Conditional compare instruction | |
TWI728068B (zh) | 複數乘法指令 | |
JP2019517060A (ja) | ベクトル演算を実行する際にアドレス衝突を管理するための装置及び方法 | |
JP2020502669A (ja) | ベクトル生成命令 | |
TW201928656A (zh) | 向量帶進位加法指令 | |
TW201734769A (zh) | 處理向量指令 | |
WO2023148467A1 (en) | Technique for performing memory access operations | |
JP2023008753A (ja) | 命令列生成プログラム、命令列生成方法、及び情報処理装置 | |
WO2021035006A1 (en) | Simd controller and simd predication scheme |