TWI728068B - 複數乘法指令 - Google Patents
複數乘法指令 Download PDFInfo
- Publication number
- TWI728068B TWI728068B TW106108495A TW106108495A TWI728068B TW I728068 B TWI728068 B TW I728068B TW 106108495 A TW106108495 A TW 106108495A TW 106108495 A TW106108495 A TW 106108495A TW I728068 B TWI728068 B TW I728068B
- Authority
- TW
- Taiwan
- Prior art keywords
- vector
- instruction
- product
- complex multiplication
- real
- Prior art date
Links
- 239000013598 vector Substances 0.000 claims abstract description 367
- 238000012545 processing Methods 0.000 claims description 160
- 230000004044 response Effects 0.000 claims description 55
- 230000036961 partial effect Effects 0.000 claims description 34
- 238000004590 computer program Methods 0.000 claims description 4
- 238000003672 processing method Methods 0.000 claims description 2
- 230000026676 system process Effects 0.000 claims 1
- 238000000034 method Methods 0.000 description 29
- 230000008569 process Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 6
- 230000001343 mnemonic effect Effects 0.000 description 6
- 238000009825 accumulation Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 5
- 238000012360 testing method Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 239000002131 composite material Substances 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 230000001629 suppression Effects 0.000 description 2
- 241000238876 Acari Species 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000002401 inhibitory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000017105 transposition Effects 0.000 description 1
Images
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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic 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/30098—Register arrangements
- G06F9/30141—Implementation provisions of register files, e.g. ports
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本案提供第一形式複數乘法指令及第二形式複數乘法指令以在包含多個資料元件之第一運算元向量及第二運算元向量上運算,該等多個資料元件包括表示複數之實部之至少一個實資料元件及表示該複數之虛部之至少一個虛元件。第一形式指令及第二形式指令之一個指向目的地向量之至少一個實元件而另一個指向至少一個虛元件。藉由執行每個指令之一個,形式(a+ib)*(c+id)之複數乘法可使用相對少指令來計算,並利用僅兩個向量暫存器讀取埠,賦能DSP演算法,諸如更有效地使用相對低功率硬體實施方式來計算FFT。
Description
本發明技術係關於資料處理之技術領域。
一些資料處理應用涉及處理具有實部及虛部之複數,即,形式a+ib之數,其中i表示-1之平方根(有時-1之平方根亦可表示為「j」,但本文中將使用「i」)。複數算術可尤其有用於數位信號處理(digital signal processing; DSP)應用,例如用於計算快速傅裡葉變換(Fast Fourier Transforms; FFT)。一些DSP演算法可需要形式r=(a+ib)*(c+id)之多次乘法,所以處理器處理複數乘法之方式可為影響效能之因素。
至少一些實例提供一種資料處理裝置,其包含: 處理電路系統,用以執行資料處理;以及 指令解碼器,用以解碼指令以控制處理電路系統來執行資料處理; 其中指令解碼器經配置以解碼複數乘法指令以控制處理電路系統以在第一運算元向量及第二運算元向量上執行部分複數乘法運算以將目的地向量之至少一個目標元件設置為取決於增加或減去第一乘積及第二乘積之結果的值,該第一運算元向量及第二運算元向量及該目的地向量每一者包含複數個資料元件,該複數個資料元件包括表示複數之實部之至少一個實元件及表示複數之虛部之至少一個虛元件; 回應於複數乘法指令之第一形式,該指令解碼器經配置以控制該處理電路系統以使用包含該第一運算元向量之實元件與該第二運算元向量之對應實元件之乘積的第一乘積,及包含該第一運算元向量之虛元件與該第二運算元向量之對應虛元件之乘積的第二乘積,執行該部分複數乘法運算; 回應於該複數乘法指令之第二形式,該指令解碼器經配置以控制該處理電路系統以使用包含該第一運算元向量之實元件與該第二運算元向量之虛元件之乘積的該第一乘積,及包含該第一運算元向量之虛元件與該第二運算元向量之實元件之乘積的該第二乘積,執行該部分複數乘法運算; 回應於該複數乘法指令之第一形式及第二形式之一個,該指令解碼器經配置以控制該處理電路系統以使用包含該目的地向量之至少一個實元件之該至少一個目標元件執行該部分複數乘法運算; 回應於該複數乘法指令之第一形式及第二形式之另一個,該指令解碼器經配置以控制該處理電路系統以使用包含該目的地向量之至少一個虛元件之該至少一個目標元件執行該部分複數乘法運算;以及 回應於該複數乘法指令之第一形式及第二形式之至少一個,該指令解碼器經配置以控制該處理電路系統以抑制該目的地向量之至少一個元件而非該至少一個目標元件之更新。
至少一些實例提供一種資料處理裝置,其包含: 用於執行資料處理之手段;以及 用於解碼指令之手段,以控制該用於執行資料處理之手段以執行該資料處理; 其中該用於解碼之手段經配置以解碼複數乘法指令以控制該用於執行資料處理之手段以在第一運算元向量及第二運算元向量上執行部分複數乘法運算,以將目的地向量之至少一個目標元件設置為取決於增加或減去第一乘積及第二乘積之結果的值,該第一運算元向量及第二運算元向量及該目的地向量每一者包含複數個資料元件,該複數個資料元件包括表示複數之實部之至少一個實元件及表示複數之虛部之至少一個虛元件; 回應於該複數乘法指令之第一形式,該用於解碼之手段經配置以控制該用於執行資料處理之手段以使用包含該第一運算元向量之實元件與該第二運算元向量之對應實元件之乘積的該第一乘積,及包含該第一運算元向量之虛元件與該第二運算元向量之對應虛元件之乘積的該第二乘積,執行該部分複數乘法運算; 回應於該複數乘法指令之第二形式,該用於解碼之手段經配置以控制該用於執行資料處理之手段以使用包含該第一運算元向量之實元件與該第二運算元向量之虛元件之乘積的第一乘積,及包含該第一運算元向量之虛元件與該第二運算元向量之實元件之乘積的第二乘積,執行該部分複數乘法運算; 回應於該複數乘法指令之該第一形式及第二形式之一個,該用於解碼之手段經配置以控制該用於執行資料處理之手段以使用包含目的地向量之至少一個實元件之該至少一個目標元件執行該部分複數乘法運算; 回應於該複數乘法指令之第一形式及第二形式之另一個,該用於解碼之手段經配置以控制該用於執行資料處理之手段以使用包含目的地向量之至少一個虛元件之至少一個目標元件執行該部分複數乘法運算;以及 回應於該複數乘法指令之第一形式及第二形式之至少一個,該用於解碼之手段經配置以控制該用於執行資料處理之手段以抑制該目的地向量之至少一個元件而非該至少一個目標元件之更新。
至少一些實例提供一種資料處理方法,其包含以下步驟: 解碼複數乘法指令以控制處理電路系統以在第一運算元向量及第二運算元向量上執行部分複數乘法運算以將目的地向量之至少一個目標元件設置為取決於增加或減去第一乘積及第二乘積之結果的值,該第一運算元向量及第二運算元向量及該目的地向量每一者包含複數個資料元件,該複數個資料元件包括表示複數之實部之至少一個實元件及表示複數之虛部之至少一個虛元件; 其中回應於該複數乘法指令之第一形式,使用包含該第一運算元向量之實元件與該第二運算元向量之對應實元件之乘積的第一乘積,及包含該第一運算元向量之虛元件與該第二運算元向量之對應虛元件之乘積的第二乘積,執行該部分複數乘法運算; 回應於該複數乘法指令之第二形式,使用包含該第一運算元向量之實元件與該第二運算元向量之虛元件之乘積的第一乘積,及包含該第一運算元向量之虛元件與該第二運算元向量之實元件之乘積的第二乘積,執行該部分複數乘法運算; 回應於該複數乘法指令之第一形式及第二形式之一個,使用包含該目的地向量之至少一個實元件之該至少一個目標元件執行該部分複數乘法運算; 回應於該複數乘法指令之第一形式及第二形式之另一個,使用包含該目的地向量之至少一個虛元件之該至少一個目標元件執行該部分複數乘法運算;以及 回應於該複數乘法指令之第一形式及第二形式之至少一個,抑制該目的地向量之至少一個元件而非該至少一個目標元件之更新。
至少一些實例提供包含程式指令之虛擬機電腦程式,該程式指令控制主資料處理裝置以提供對應於上述論述之裝置的指令執行環境。
亦可提供儲存虛擬機電腦程式之電腦可讀儲存媒體。儲存媒體可為非暫時性儲存媒體。
資料處理裝置具有指令解碼器,該指令解碼器支援解碼複數乘法指令以控制處理電路系統以在第一運算元向量及第二運算元向量上執行部分複數乘法運算以將目的地向量之至少一個目標元件設置為取決於增加或減去第一乘積及第二乘積之結果的值。第一運算元向量及第二運算元向量及目的地向量每一者包含多個資料元件,該等多個資料元件包括表示複數之實部之至少一個實元件及表示複數之虛部之至少一個虛元件。
提供了兩種形式之複數乘法指令。兩種形式將目的地向量之至少一個目標元件設置為取決於增加或減去第一乘積及第二乘積之結果的值。對於第一形式複數乘法指令,指令解碼器控制處理電路系統以使用包含第一運算元向量之實元件與該第二運算元向量之對應實元件之乘積的第一乘積,及包含第一運算元向量之虛元件與該第二運算元向量之對應虛元件之乘積的第二乘積執行該部分的複數乘法運算。對於第二形式複數乘法指令,第一乘積包含第一運算元向量之實元件與第二運算元向量之虛元件的乘積,及第二乘積包含第一運算元向量之虛元件與第二運算元向量之實元件的乘積。第一形式及第二形式之複數乘法指令之一個具有包含目的地向量之至少一個實元件之目標元件,而另一個指向目的地向量之至少一個虛元件。第一形式及第二形式之複數乘法指令之至少一個抑制目的地向量之至少一個元件而非至少一個目標元件之更新。
此方法具有一些優勢。首先,與僅支援常規向量乘法指令之系統相比,提供專用複數乘法指令,其中複數之實部及虛部藉由向量之各別元件表示,可提升效能並減小暫存器壓力,因為此允許使用較少指令計算形式(a+ib)(c+id)之乘法,並且在將它們累加進最終結果之前,無需分配暫時地儲存乘法之個別項(例如,ac、ibc、iad、-bd)之許多向量暫存器。此減小之暫存器壓力可為相對低功率實施方式中之重要因素,因為此舉減少了溢出及填充記憶體之需要,從而明顯地改進效能。此外,提供第一形式及第二形式之複數乘法指令,其中之一個指向目的地之實元件而另一個指向虛元件,賦能使用僅兩個指令及兩個向量暫存器讀取埠計算完整複數乘法結果。免去實施第三個暫存器讀取埠之需要可在相對低功率實施方式中提供明顯電路面積及功率節省。
為了簡寫,用於第一形式/第二形式指令之各別第一乘積及第二乘積將在下文稱為: · R*R-第一形式指令之第一乘積,對應於第一運算元向量之實元件與第二運算元向量之實元件之乘積。 · I*I-第一形式指令之第二乘積,對應於第一運算元向量之虛元件與第二運算元向量之虛元件之乘積。 · R*I-第二形式指令之第一乘積,對應於第一運算元向量之實元件與第二運算元向量之虛元件之乘積。 · I*R-第二形式指令之第二乘積,對應於第一運算元向量之虛元件與第二運算元向量之實元件之乘積。
第一形式複數乘法指令與第二形式複數乘法指令可以任何方式區分,例如藉由使用不同作業碼,或藉由在指令編碼中提供另一參數以指定指令是否具有第一形式或第二形式。
向量分成實元件及虛元件之特定方式為可為給定處理器實施方式任意選擇之實施方式選擇。應注意,儲存在向量之實元件或虛元件中之數值本身不需要識別彼等元件是為複數之實部還是虛部。向量元件可簡單地儲存表示多個1(用於實元件)或多個i(用於虛元件)之數值。然而,處理電路系統之硬體可包含電路互連以自向量內之適宜位置讀取實元件/虛元件並根據上述論述之各乘積組合實元件/虛元件,且根據指令是具有第一形式還是第二形式填充目的地之實元件或虛元件。因此,元件是否為實元件/虛元件可根據在計算乘積之處理電路系統中提供之硬體互連而非儲存在向量本身中之值來反映。當使用複數乘法指令寫入或編輯程式時,可由程式員或編譯員使用表示複數之實部及虛部的適宜值填充輸入運算元的實元件及虛元件,並適當地解釋目的地向量中之結果。因此,術語「實」及「虛」可認為是第一子集合元件及第二子集合元件之簡單標籤。
處理電路系統可支援一個向量內之不同資料元件大小。例如,128位元向量可分成兩個64位元資料元件、四個32位元資料元件、八個16位元資料元件或十六個8位元資料元件。處理電路系統可基於與複數乘法指令關聯之參數決定資料元件之數目,其可在指令編碼中經指定為立即值或指示含有參數之暫存器之值。參數可指示資料元件之數目、或資料元件之寬度(每元件之位元數目)、或允許待決定之資料元件之數目的任意其它值。
因此,在複數乘法指令在僅包含兩個元件之向量上運算之情況下,向量可僅具有一個實元件及一個虛元件。在其他執行情況下,向量可具有多餘兩個資料元件,及在此情況下存在在向量中排列實元件/虛元件之不同方式。這對於在向量內交錯的實元件/虛元件尤其有用。例如,實元件可為偶數編號元件且虛元件可為奇數編號元件,或反之亦然。藉由交錯實元件及虛元件,可使硬體設計更有效,因為用於形成藉由第一形式及第二形式之複數乘法指令增加或減去之各別乘積的乘法可限制於處於相同向量路徑內或僅跨入緊鄰向量路徑中,而非需要跨兩個或兩個以上向量路徑之更長跨路徑信號路徑。
當輸入向量中存在兩個或兩個以上實元件及兩個或兩個以上虛元件時,複數乘法指令可觸發處理電路系統以設置目的地向量之兩個或兩個以上目標元件,其中每個目標元件對應於第一乘積/第二乘積之和/差,該第一乘積/第二乘積使用第一運算元向量之各別實元件/虛元件對及第二運算元向量之各別實元件/虛元件對來計算。例如,在交錯實元件/虛元件之情況下,兩個相鄰元件(一個實元件及一個虛元件)之每個路徑可基於處理第一運算元向量/第二運算元向量中之對應路徑中之實元件及虛元件的結果來設定目標元件(實元件或者虛元件)。
如上所述,第一形式及第二形式之複數乘法指令之一個指向目的地向量之實元件而另一個指向虛元件,其中第一形式計算R*R及I*I之總和及差而第二形式計算R*I及I*R之總和及差。完全複數乘法將通常需要計算R*R、I*I、R*I及I*R之每一者之一個,所以藉由執行指定相同源暫存器及指向相同目的地暫存器,包括每一種形式之一個指令的一對指令,可執行完全複數乘法運算以產生包含實部及虛部兩者之複數結果。執行兩種形式之複數乘法指令之順序並不特別重要,因為不管怎樣皆要計算複數之兩個部分。然而,第二個執行之第一形式及第二形式之複數乘法指令之一個可抑制目的地向量之至少一個元件而非其設定之目標元件的更新,以避免改寫上述複數乘法指令之結果。因此,第一形式及第二形式之複數乘法指令之至少一個可觸發處理電路系統以抑制目的地向量之至少一個非目標元件而非目標元件之更新。若僅第一形式及第二形式之指令之一個導致此種抑制更新,則此可迫使程式員或編譯員確保在用於計算相同複數乘積之不同部分之第一形式/第二形式之複數乘法指令對內,抑制更新非目標元件之形式第二個執行。然而,若第一形式及第二形式之複數乘法指令兩者觸發處理電路系統以抑制非目標元件之更新,以便程式員/編譯員自由地以任意順序編碼第一形式/第二形式之指令,如此則可提供更大靈活性。
一些實例可支援向量操作之預測,其中處理電路系統回應於預測資訊以控制屏蔽與目的地向量之某一部分關聯之操作。例如此可有用於對實施if-then類型條件操作。存在提供預測之許多方式。例如,一些系統可支援可在向量指令之前執行之預測指令以評估比較條件之結果並設定述詞資訊,該述詞資訊基於比較之結果指定向量之哪些部分應被屏蔽。此外,一些系統可提供若干可寫入之通用述詞暫存器以便設置述詞資訊以屏蔽其他指令之一些向量路徑,在此情況下待預測之向量指令可具有指示哪些述詞暫存器預測指令之參數。另一方法為,用於在執行向量化循環時,當到達循環之最終迭代時,當待由循環處理之資料元件之總數不是向量長度之整數倍時,支援部分地預測向量之一些路徑的系統。
不管怎樣執行預測,對於抑制目的地向量之非目標元件之更新的複數乘法指令形式,此抑制可發生,而不管該預測指示是否識別目的地向量中的對應於非目標元件之部分為待屏蔽之部分。當預測可回應於複數乘法指令影響目標元件是否實際上更新時,抑制更新之非目標元件回應於複數乘法指令不更新,即使預測指示識別目的地向量之對應部分應不被屏蔽。
可提供複數乘法指令之許多變體。該等變體之每一個可具有如上所述之第一形式及第二形式兩者,其中該第一形式及第二形式分別指向實元件及虛元件之一個或另一個。
舉例而言,指令解碼器可支援加變體,其中將第一乘積及第二乘積相加以產生設置為目標元件之值,以且可支援減變體,其中減去第一乘積及第二乘積。此對於允許執行形式(a+ib)(c+id)之標準複數乘法及形式(a-ib)(c+id)之複共軛乘法兩者很有用。例如,可使用第一形式之減變體複數乘法指令及第二形式之加變體複數乘法指令實施標準複數乘法。可使用第一形式之加變體複數乘法指令及第二形式之減變體複數乘法指令實施複共軛乘法運算。複數乘法指令之加變體及減變體可藉由具有不同作業碼或藉由它們的指令編碼之另一參數來區分。
指令解碼器亦可支援複數乘法指令之第一(非換位)版本及第二(換位)版本,其根據第一形式及第二形式之哪個指向實元件及哪個指向目的地向量之虛元件而不同。
對於非換位版本,第一形式指向目的地向量之至少一個實元件及第二形式指向至少一個虛元件。因此,第一形式將一或多個實元件設置為對應於R*R及I*I之總和或差之值,且第二形式將一或多個虛元件設置為對應於R*I及I*R之總和或差之值。此允許計算形式(a±ib)*(c+id)之習知複數乘法。
另一方面,對於換位版本,第一形式指向至少一個虛元件,且第二形式指向目的地向量之至少一個實元件。因此,第一形式將一或多個虛元件設置為對應於R*R及I*I之總和或差之值,且第二形式將一或多個實元件設置為對應於R*I及I*R之總和或差之值。此允許計算形式±i*(a±ib)*(c+id)之乘法,其中兩個複數乘以額外因數±i。此舉可適用於一些DSP演算法,因為其不再需要換位向量之實元件/虛元件以將複數乘法結果乘以±i之另一指令。
在一些實施方式中,指令解碼器可僅實施第一(非換位)版本或第二(換位)版本,而其他實施方式可具有支援第一版本及第二版本兩者之指令解碼器。
複數乘法指令之其他變體可包括整數或定點變體,其中使用整數/定點算術計算乘積及總和/差,且可包括浮點變體,其中根據浮點算術計算乘積及總和/差。對於浮點變體,第一運算元向量/第二運算元向量及目的地向量之每個元件可以給定浮點形式表示,例如如由IEEE定義之雙精度、單精度半精度浮點。在一些情況下,可對應於不同浮點形式提供指令之不同變量。
亦可存在不同形式之指令,相比於目的地向量,該等指令形式根據第一運算元向量及第二運算元向量中之資料元件之相對大小而不同。元件加寬變體可作用於具有J位元資料元件之第一運算元向量及第二運算元向量以產生具有較寬K位元資料元件(例如,K可為2*J)之目的地向量。因為產生第一乘積/第二乘積之乘法將產生較寬資料值,此方法可允許乘積之增加的精度保留在最終結果中。實務中,產生J位元值之兩個乘積及加上或減去該乘積將通常產生(2J+1)位元值,因此若此減少至K位元(2J位元)值,則可需要藉由丟棄一位元之一些截斷。一個方法可為,選擇中間值之最高有效K位元,並丟棄最低有效位元。然而,2J+1位元(K+1位元)中間值之最高有效位元將幾乎始終為冗餘位元,因為第一乘積及第二乘積之總和或差將僅當相乘之原始值全都具有它們的最大可能量時僅溢出至最高位元。因此,另一種方法可為,丟棄中間值之頂部位元及選擇最低有效K位元為截斷結果,此允許保留最低有效位元,該最低有效位元更可能為保留精度提供有用資訊。
亦可提供複數乘法指令之元件大小保持變體,其中目的地向量具有與第一運算元向量及第二運算元向量之J位元資料元件相同大小之J位元資料元件。此外,可能需要對應於增加或減去第一乘積及第二乘積之結果之中間值的一些截斷。此外,截斷可使用中間值之最高有效J位元,或忽略頂部位元及選擇下一個最高有效J位元,因為頂部位元可能為冗餘位元。
當執行截斷時,簡單地丟棄低於選定J位元之位元可在複數乘法序列之結果中產生偏差,因為其趨向有系統地減小結果之量值。為降低該偏差,當截斷中間值時,選定J位元可基於中間值之至少一個低於選定J位元的有效位元來四捨五入(例如藉由在選定J位元之前將最高有效丟棄位元之位元值增加至對應於選定J位元之最低有效位元之中間值的位元位置,以有效地將截斷值四捨五入至可使用J位元表示之2J+1中間結果之最接近值)。
一些系統可支援並行處理整個向量指令,其中並行產生每個結果向量元件。然而,對於一些更低功率實施方式,可能不存在充足硬體以並行計算目的地向量之所有元件。在一些實施方式中,回應於給定向量指令,處理電路系統可執行多個處理節拍,每個節拍對應於向量值之一部分,且該處理電路系統可支援第一向量指令及第二向量指令之重複執行,其中第二向量指令之節拍之第一子集合與第一向量指令之節拍之第二子集合並行執行。節拍可對應於向量之某一固定大小之部分,其可獨立於資料元件大小。重疊執行多個向量指令之可允許硬體資源之更大利用率。執行之重疊特性可對諸如在系統上運行之異常處理程式之軟體,或對除錯器可見。該重疊執行亦可用於上述論述之形式之複數乘法指令。
第1圖示意地圖示支援向量指令之處理之資料處理裝置2的實例。應理解,為便於說明此為簡圖,並且實際上該裝置可能具有為簡明起見未在第1圖中圖示之許多元件。裝置2包含用於回應於藉由指令解碼器6解碼之指令而執行資料處理的處理電路系統4。程式指令自記憶體系統8中擷取並藉由指令解碼器解碼以產生控制處理電路系統4之控制訊號,處理電路系統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。在循環計數器16示為專用控制暫存器時,其他實例可使用通用純量暫存器12之一個來追蹤向量化循環之進展。
用於執行複數算術之指令(其中在向量暫存器中交錯之複數之實部與虛部),可提升效能並減小暫存器壓力。在僅具有相對少向量暫存器之實施方式中(例如一些硬體系統可能僅提供8個向量暫存器),暫存器壓力可能為總體處理器效能中之重要因素,因為若無充足暫存器以容納待處理之所有值,則此可需要用於將暫存器內容溢出記憶體及稍後將值讀回至暫存器檔案之額外加載/儲存操作。在例如具有8個向量暫存器之系統中,在指令解碼器中無複數算術支援之情況下,標準向量乘法指令將僅允許無暫存器溢出而實施之數基2FFT,但在利用複數算術支援之情況下,可無暫存器溢出而實施數基4FFT。結果,藉由增加複數算術指令來產生之總體加速在Q31 FFT上可高達56%。
然而,實施複數乘法指令之特定方式可影響效能、電路面積及功耗。第2圖圖示根據替換方法使用複數乘法指令之對比實例。如在第2圖之頂部圖示,兩個複數a+ib與c+id相乘需要四次乘法以產生乘積項ac、ibc、iad、-bd,因此使用一個向量指令實施複數乘法通常是不可行的。在第2圖中圖示之方法中,首先執行VMOV指令以將累加向量暫存器Q0清零。隨後,執行兩個複數乘法向量指令,每一個將累加暫存器Q0及兩個輸入運算元向量Q1、Q2用作輸入。向量暫存器Q0、Q1、Q2之每一個具有其分配為表示複數之實部之實元件(R)的偶數編號元件0、偶數編號元件2,且具有其分配為表示複數之虛部之虛元件(I)的其奇數編號元件1、奇數編號元件3。鄰接實元件/虛元件對0、1及2、3每一個表示不同複數,例如向量Q1之元件0、元件1表示複數a0+ib0,且向量Q1之元件2、元件3表示不同複數a1+ib1。類似地,Q2暫存器表示與暫存器Q1之對應內容相乘之對應複數c0+id0及複數c1+id1。第一複數乘法指令VCMLA計算在第2圖之頂部圖示之前兩個項ac、項ibc之總和,並且將其結果累加入累加暫存器Q0。類似地,第二複數乘法指令計算在第2圖中圖示之第三個項iad與第四個項-bd之總和,並且將該等項累加入累加暫存器Q0。在最終累加值中,每對鄰接實元件/虛元件表示對應於藉由Q1、Q2之對應部分表示之複數之乘積的複值。
在更大規模實施方式中,此方法可具有一些優勢,因為例如此方法可對無序處理器更高效。然而,在更低功率實施方式中,存在一些劣勢。首先,需要額外指令來將累加暫存器Q0清零,降低了記憶體中之代碼密度並降低了效能。此外,每個向量乘法指令需要三個輸入向量(累加暫存器Q0及兩個輸入向量Q1、Q2之舊值),因為它們將它們的結果累加進累加暫存器Q0中。因此,需要第三個向量暫存器讀取埠。在相對小規模實施方式中可能不存在需要多餘兩個向量讀取埠之其他指令,所以為僅一個類型指令增加第三個暫存器讀取埠之面積及功率成本可能是理由不充足。
此可藉由使用在第3圖圖示之形式之指令來避免。如在第3圖之頂部之求和中圖示,可重構複數乘法以便結果之實部藉由一個指令來計算且虛部藉由另一指令來計算。提供了第一形式及第二形式之指令,其中之一個指向目的地向量之實元件而另一個指向虛元件。在每對鄰接向量路徑中,第一形式指令(在下文實例中藉由無「X」之指令助記符來指示)產生第一乘積ac(R*R)及第二乘積bd(I*I),增加或減去第一乘積及第二乘積、以及將結果寫入對應目標元件(在此實例中為實元件)。另一方面,對於每對鄰接向量路徑,第二形式指令(藉由具有「X」之指令助記符來指示)產生第一乘積ad(R*I)及第二乘積bc(I*R)、增加或減去第一乘積及第二乘積、以及將結果寫至對應目標元件(在此實例中為虛元件)。因為每個指令寫入一半元件,在執行了兩種形式之指令之後寫入整個暫存器,從而避免首先清零暫存器。另外因為每種形式指令之目標元件含有所有所需乘積,不需要累加至前一結果中,因此可免去對第三個暫存器讀取埠及清除累加之額外指令的需要。
提供了指令之加變體及減變體。對於加變體(藉由助記符VMMLAD或VMMLADX指示),加上第一乘積/第二乘積以形成對應目標元件。對於減變體(藉由助記符VMMLSD或VMMLSDX指示),減去第一乘積/第二乘積以形成對應目標元件。因此,在第3圖中執行第一形式之減變體指令(VMMLSD),以將暫存器Q0之元件0(實元件)設置為表示暫存器Q1、Q2之對應部分中值a0+ib0與c0+id0之複合乘積之實部的值a0c0-b0d0,及以類似方式將暫存器Q0之元件2(實元件)設置為值a1c1-b1d1。亦執行第二形式VMMLADX之加變體指令以將暫存器Q0之元件1(虛元件)設置為表示暫存器Q1、暫存器Q2中之值a0+ib0與c0+id0之複合乘積之虛部的值a0d0+b0c0,及以類似方式將暫存器Q0之元件3(虛元件)設置為值a1d1+b1c1。
或者,如第4圖中圖示,藉由執行第一形式之加變體指令(VMMLAD)及第二形式之減變體指令(VMMLSDX),可計算形式r=(a-ib)(c+id)之複共軛乘法。因此,第一形式基於R*R與I*I乘積之總和指向目的地向量Q0之實元件,且第二形式基於R*I與I*R乘積之差指向虛元件。
在第3圖及第4圖之兩個實例中,指令具有第一版本(使用無「T」之指令助記符指示之非換位版本),其中第一形式指令指向目的地暫存器Q0之實元件及第二形式指向虛元件。
然而,如第5圖圖示亦可提供該等指令之第二版本,其中第一形式指令指向虛元件及第二形式指向實元件。第二版本為藉由包括「T」之指令助記符指示之換位版本。因此,此次基於R*I及I*R乘積設置目的地Q0之實元件,並基於R*R及I*I乘積設置虛元件。如第5圖圖示,此有助於評估形式±i*(a+ib)*(c+id)之計算。其他方面,在第5圖中之操作類似於第3圖及第4圖中之操作。
回應於第一形式/第二形式之複數乘法指令之一個或兩個,指令解碼器6控制處理電路系統4以抑制非目標元件之更新,以避免改寫較早指令之結果。若僅第一形式/第二形式之一個觸發此種抑制非目標元件之更新,則在一對指令中該指令應第二個執行。然而,若兩種形式抑制非目標元件之更新,則以任一順序執行該對指令。
第3圖至第5圖圖示實例,其中實元件為具有偶數編號位置0、偶數編號位置2之元件,且虛元件為奇數編號元件1、奇數編號元件3。然而,如第6圖所示,實元件及虛元件亦可相反,即虛元件對應於偶數編號元件,而實元件對應於奇數編號。如第6圖之上兩個實例圖示,其可適用於交錯實元件及虛元件以便在第3圖至第5圖中圖示之所有乘法保留在鄰接向量路徑對內而不需要跨兩個或兩個以上路徑之乘法。然而,如第6圖之底部實例圖示,亦可能以不同方式排列實元件及虛元件。
在上述圖示之指令類型適合於計算複數乘法運算之結果的同時,它們亦可用於其他目的。在實元件適合於表示複數之實部,且虛元件適合於表示虛部的同時,程式員可能能夠找到用於相同指令之另一用途。例如,執行在第4圖圖示之複數乘法指令之加變體可為將相鄰路徑之乘積之總和累加至目的地之單個元件的相對簡單方式,因此一些程式員可選擇亦使用用於實數之一些處理的此類指令。因此,指令並不單獨限於使用複數算術。
在第3圖至第5圖之實例中,指令保持資料元件之大小,所以目的地Q0具有與輸入運算元Q1、Q2相同大小之資料元件。然而,若使用了整數/定點算術且資料元件每一者包含J個位元,J位元元件之兩個乘積之總和具有2J+1個位元,因此執行截斷以產生寫入至給定目標元件之J位元值。第7圖圖示執行截斷之第一方法。在此情況下,選擇2J+1位元中間結果[2J:0]之上J個位元[2J:J+1]以寫入至目標元件,及為減少偏差,該結果可藉由在執行截斷之前將下一個最高有效位元位置[J]中之位元值1增加至中間結果來四捨五入並將J位元結果寫入目標元件。應理解亦可執行其他形式之四捨五入。
第8圖圖示截斷之替換方法,其忽略中間結果之最高有效位元,且相反當執行截斷時選擇中間結果之下J個最高有效位元[2J-1:J],並基於下一個最高有效位[J-1]來四捨五入選定位元。此可經常允許更大之精度,因為2J+1位元中間結果之最高有效位元[2J]常常為冗餘位元,僅若原始輸入元件全部具有最大可能的正或負量值則才將使用該位元。因此,位元[J]更可能含有比位元[2J]「感興趣」之結果,因此可能在最終結果中較佳保留該位元。使用此方法,因為從不使用最高有效位元[2J],所以並不需要藉由硬體來明確地計算該位元(例如,該硬體可能僅具有用於決定2J+1位元中間結果之底部2J個位元之電路系統)。為確保(2J+1)位元中間結果之最高有效位元總為冗餘位元(以便藉由忽略最高有效位元而不損失資訊),指令集架構可需要程式員或編譯員在執行複數乘法之前將全部輸入值除以2(因此免去原本需要最高有效位元之極端量值),隨後一旦已產生複數乘法之結果,即將結果乘以4以給出相同數字結果,就好像已計算中間結果之最高有效位元一樣。
儘管在第7圖及第8圖圖示僅使用位於截斷之切除點下方一個位置之一個較低有效位元執行四捨五入的實例,但亦可能使用考慮更多數量較低有效位元之四捨五入方法。詳言之,對於指令之浮點變體,可根據已知浮點四捨五入方法考慮附加位元。
如第9圖所示,亦可能提供指令之元件加寬變體,其產生目的地向量Q0,其中該等元件為輸入運算元Q1、Q2之元件之寬度的兩倍。在此情況下,僅一半輸入元件可影響結果。複數乘法指令可指定目的地是否應使用運算元向量Q1、Q2之元件之上半部或下半部來計算(例如,在第9圖中指令作用於運算元向量之下半部)。對於元件加寬變體,形成2J位元較寬資料元件之2J+1位元中間值之截斷可如第10圖所示(類似於第7圖)藉由選定最高有效2J個位元[2J:1],或如第11圖所示(類似於第8圖)藉由忽略最高有效位元及選擇最低有效2J個位元[2J-1:0]來進行。
上述論述之實例圖示輸入向量每一者包含4個資料元件(交錯的2個實元件及2個虛元件),但應理解指令亦可使用不同數目之元件執行。
如在第12圖中所示,複數乘法指令可以藉由向量預測指令(VPT指令)前面之指令來進行預測,該向量預測指令比較兩個輸入向量QA、QB之各別元件以決定它們是否滿足一些測試條件,並且根據每個比較之結果設置向量述詞暫存器(vector predicate register; VPR)22。VPR22在藉由處理電路系統4支援之最小元件大小之粒度下包括一定數量個述詞旗標,其每一者對應於向量暫存器之一部分。例如,對於128位元向量暫存器(其中最小元件大小為8個位元),可提供16個述詞旗標,其每一者對應於向量暫存器之8位元塊。
在此實例中,測試條件為Qa之給定元件是否大於或等於Qb之對應元件,但測試條件之其他實例包括大於等於,小於,小於等於,等於或不等於。在此實例中,測試條件在路徑0、路徑1及路徑3中通過,但在路徑2中未通過。因此,回應於VPT指令,處理電路系統4在VPR 22的對應於路徑2之部分中設置述詞旗標為0,及在VPR的對應於路徑0、路徑1、路徑3之其他部分中設置述詞旗標為1。由於在此實例中VPT指令之元件大小為32個位元(大於8個位元之最小元件大小),故4個相鄰述詞旗標之塊經設置為對應於每個各別路徑之0或1。在此實例中,述詞旗標0指示應屏蔽向量運算之對應部分,而1指示不應屏蔽對應部分,但其他實例可使用相反的映射。
當複數乘法指令隨後在VPT指令之後執行時,若VPR將對應述詞旗標設為0,則處理電路系統4屏蔽與目的地向量之給定部分關聯之操作。在此實例中,因為在VPR的對應於目的地向量之元件4/5之部分中的述詞旗標為0,故該等元件回應於任一複數乘法指令不更新。因此,第一形式複數乘法指令VMMLSD不更新目的地向量Q0之元件4,儘管其為此指令原本所通常指向之實元件,因為VPR之對應部分為0。更新其他實元件0、實元件2及實元件6,因為它們對應於VPR 22中等於1的述詞位元。類似地,第二形式指令不更新元件5,因為其亦藉由VPR而屏蔽,但仍然寫入虛元件1、虛元件3、虛元件7。對於兩種形式複數乘法指令,抑制非目標元件更新,而不管VPR中之對應值是1還是0。
存在許多方式可以在VPR具有述詞位元0時屏蔽與暫存器之給定部分關聯之操作。例如,屏蔽可藉由將目的地之對應部分清零,保留在目的地之彼部分中儲存之前值,或藉由抑制與該部分關聯之操作執行(例如不執行自記憶體之加載、用於彼路徑之乘法、加法或減法)來實施。在一些實施方式中,回應於述詞資訊而屏蔽對目的地暫存器之一些部分之更新而提供的硬體可再用於回應於複數乘法指令來抑制非目標元件之更新。然而,與預測不同,非目標元件之此種屏蔽將回應於複數乘法指令而發生,而不管VPR 22之對應部分之內容如何。
第13圖圖示預測之另一實例。向量指令之常見用途為在向量化循環中,其中某一序列之操作需要應用在儲存在記憶體中之陣列之每個元件。每高位準代碼中之元件迭代一次的循環可編譯成包含具有較少迭代之循環的向量化代碼,每個循環個將元件塊加載進向量暫存器中,使用一連串向量指令處理元件,且將處理之每個路徑之結果儲存回至記憶體。因此,循環之每次迭代可處理對應於一個向量暫存器中之資料元件之數目的元件塊。若待處理之陣列中之元件的總數為NE且一個向量NV中之資料元件之數目(等於向量寬度VW除以資料元件大小ES),則整個陣列可處理最少NE/NV次迭代。然而,往往元件NE之總數可能不為一個向量中元件NV之數目之整數倍,因此在循環之最終迭代中,並非向量之所有元件將使用待處理之值填充。若允許未填充路徑中之處理無屏蔽進行,則此舉可引起錯誤。例如,超出陣列之末尾之記憶體位址空間可能尚未映射在頁表中,所以若對於在處理陣列之末尾的最終迭代中「未使用」路徑之一個執行加載/儲存操作,則相鄰於陣列存在記憶體存取故障或資料損壞。
因此,期望在循環之最終迭代中屏蔽未使用路徑中之操作。如第1圖所示,處理電路系統4可具備用於控制賦能還是屏蔽給定向量話循環之哪些路徑的循環預測電路系統90。在啟動向量化循環時,可將循環計數器16設定為指定在循環中待處理之元件NE之總數的值。例如,循環啟動指令可指定元件之數目。在循環之每次迭代結束時,自循環計數器16減去一個向量NV中之元件之數目以計算待處理之剩餘元件之數目NE保留
。在啟動給定循環迭代時,若NE保留
<NV,則循環預測電路系統90控制處理電路系統4以屏蔽與向量處理之上NV-NE保留
路徑關聯之操作,例如藉由本身抑制向量處理之路徑(例如阻止發出加載/儲存要求)及/或停止寫入在屏蔽路徑中處理之結果來屏蔽。
因此,若當循環預測電路系統90已決定應屏蔽一些路徑時迭代執行複數乘法指令,則目標元件(取決於指令形式及版本之實元件或虛元件)將不在彼等屏蔽路徑中更新。例如,在第13圖中循環預測電路系統90決定應屏蔽向量之路徑2及路徑3,所以VMMLSD指令僅更新非屏蔽路徑中之元件0(實元件),且並不更新屏蔽路徑中之元件2(實元件)。非屏蔽路徑1中之非目標元件(實例中之虛元件)仍不由複數乘法指令更新,不管任意路徑是否由循環預測電路系統90預測如何。
上文實例圖示在向量之每個路徑中並行發生之操作,但此並不重要。
處理電路系統4可包括用於處理不同類別之指令之許多不同硬體塊。例如,與記憶體系統8互相作用之加載/儲存指令可由專用加載/儲存單元來處理,而算術或邏輯指令可由算術邏輯單元(arithmetic logic unit; ALU)204來處理。ALU本身可進一步分成用於在涉及乘法之運算中執行之乘法-累加單元(multiply-accumulate unit; MAC),以及用於處理其他種類之ALU操作之另一單元。亦可提供浮點單元以處理浮點指令。相比於向量指令,不涉及任一向量處理之純的純量指令亦可藉由單獨硬體塊處理,或再使用相同硬體塊。
在諸如數位信號處理(digital signal processing; DSP)之一些應用中,可存在大略等量之ALU及加載/儲存指令,且因此諸如MAC之一些大塊可在大量時間內保持空閒。此低效可在向量架構上惡化,因為執行資源隨著向量路徑數量而定標以獲得更高效能。在更小處理器(例如,單問題,順序核心)上可禁止完全超出向量管線之面積開銷。當更好地使用可用執行資源時最小化面積影響之一個方法為重疊執行指令,如第14圖所示。在此實例中,三個向量指令包括加載指令VLDR、乘法指令VMUL及移位指令VSHR,並且所有該等指令可在同一時間執行,儘管它們之間存在資料依賴性。這是因為VMUL之元件1僅取決於Q1之元件1,並非整個Q1暫存器,所以VMUL之執行可在VLDR之執行已經結束之前開始。藉由允許重疊指令,昂貴之塊如乘法器可更多的時間保持活動。
因此,可期望賦能微架構實施以重疊執行向量指令。然而,若架構假定存在固定量之指令重疊,則若微架構實施實際上匹配由架構假定之指令重疊之數量,此舉提供高效率,但是若定標至使用不同重疊或根本不重疊之不同微架構,則可引起問題。
相反,架構可支援如第15圖之實例圖示之一定範圍的不同重疊。向量指令之執行分成稱為「節拍」之多個部分,其中每個節拍對應於預定大小之向量部分之處理。節拍為完全執行或根本不執行且不能部分地執行之向量指令之原子部分。在一個節拍中處理之向量部分之大小藉由架構界定且可為向量之任意分數。在第15圖之實例中,節拍經定義為對應於四分之一向量寬度之處理,以便每向量指令存在四個節拍。顯而易見,此僅為一個實例且其他架構可使用不同數目之節拍,例如兩個或八個。對應於一個節拍之向量之部分可為等於、大於或小於正在處理之向量之資料元件大小。因此,即使元件大小自實施方式至實施方式變化或在不同指令之間之運行時間下變化,節拍仍為向量處理之某個固定寬度。若在一個節拍中正處理之向量部分包括多個資料元件,則可在各別元件之間之界限處停用進位信號以確保每個元件獨立地處理。若在一個節拍中處理之向量之部分對應於元件之僅部分且硬體不不足以並行計算一些節拍,則在處理之一個節拍期間產生之進位輸出可作為進位輸入被輸入至下一個處理節拍,以便兩個節拍之結果共同形成資料元件。
如第15圖所示,處理電路系統4之不同微架構實施方式可在抽象架構時鐘之一個「滴答」中執行不同數量的節拍。這裡,「滴答」對應於架構狀態前進之單位(例如,在簡單架構上,每個滴答可對應於更新與執行指令關聯之所有架構狀態一次,包括更新程式計數器以指向下一個指令)。熟習此項技術者應當理解,諸如佈置管線之已知微架構技術可意味著單個滴答可能需要多個時鐘循環來在硬體位準下執行,並且實際上在硬體位準下之單個時鐘循環可以處理多個指令之多個部分。然而,該微架構技術對軟體不可見,因為滴答在架構位準下為原子級別。為了簡明起見,在本揭示案之進一步描述期間忽略該微架構。
如第15圖之下側實例圖示,一些實施方式可藉由提供用於處理在一個滴答內並行之所有節拍之充足硬體資源以在相同滴答內安排向量指令之所有四個節拍。此可適合於更高效能實施方式。在此情況下,在架構位準下在指令之間不需要任何重疊,因為整個指令可在一個滴答下完成。
另一方面,更大面積有效實施方式可提供每滴答僅能處理兩個節拍之更狹小處理單元,且如第15圖之中間實例中所示,指令執行可重疊與第一指令之第三個節拍或第四個節拍並行進行之第二向量指令之第一個節拍及第二個節拍,其中彼等指令對處理電路系統內之不同執行單元執行(例如,在第15圖中第一指令為使用加載/儲存單元執行之加載指令及第二指令為使用MAC執行之相乘累加指令)。
能量/面積更高效實施方式可提供更窄之硬體單元,並且每次僅能處理單個節拍,並且在此情況下,每滴答可以處理一個節拍,其中指令執行藉由如第15圖之頂部實例所示(這與在上文第14圖所示之實例相同)之一個節拍來重疊並交錯。
應理解,在第15圖所示之重疊僅為一些實例,且其他實施方式亦是可能的。例如,處理電路系統4之一些實施方式可支援在相同滴答中多個指令並行雙重發出,以便存在更大輸出量之指令。在此情況下,在一個循環中一起開始之兩個或兩個以上向量指令可具有與在下一個循環中開始之兩個或兩個以上向量指令重疊之一些節拍。
除了改變自實施方式至實施方式以定標至不同效能點之重疊量,向量指令之間的重疊量亦可在程式內之向量指令之執行的不同次之間的運行時間下改變。因此,處理電路系統4可具備用於控制相對於上述指令執行給定指令之時序之電路系統。此賦予微架構選擇某些角落情況中不重疊指令之自由,該等指令更難實施或取決於可用於指令之資源。例如,若存在需要相同資源並且所有可用MAC或ALU資源已被另一指令使用之給定類型(例如,相乘累加)之背對背指令,則可能沒有足夠空閒資源來開始執行下一條指令,因此第二條指令之發出可以等待直到第一條指令完成而非重疊。
如第16圖所示,若存在中間純量指令,則亦可防止在兩個向量指令之間之重疊。這是因為純量指令可取決於向量指令之最後節拍之結果,且第二向量指令可取決於其所有節拍中之純量結果,所避免與純量指令重疊向量指令更安全。
該重疊執行亦可用於上述論述之複數乘法指令。因此,用於複數乘法指令之各別處理節拍可以全部並行地或者在多個架構滴答上順序地,與其他指令重疊地發生。
然而,若允許重疊執行,則指令集架構指定程式員不應將同一向量暫存器指定為目的地暫存器與複數乘法指令(例如VMMLSD Q0、Q0、Q1而非VMMLSD Q0、Q1、Q2)之運算元暫存器之一個兩者。在資料元件大小等於更大之節拍大小之1節拍/滴答實施方式中,則將同一暫存器Q0指定為來源及目的地兩者可出現不確定性結果,因為在後來節拍中所需之源值尚未自源暫存器/目的地暫存器讀取之前,其可在一個節拍中產生改寫之通用源暫存器/目的地暫存器Q0之給定元件。此在2或4節拍/滴答實施方式中不是一個問題,或者若資料元件大小小於1節拍/滴答實施方式之節拍大小,因為在此情況下將並行讀取向量之相鄰元件中之實部/虛部。然而,編寫待執行之代碼的程式員可能不知曉什麼特定微架構實施已用於給定系統,因此在1節拍/滴答實施方式中執行存在風險。
一種解決方案可以是對於1節拍/滴答實施方式添加一些附加電路系統來偵測目的地暫存器與一個源暫存器相同之情況,並且若如此可觸發錯誤或重新映射指令所引用之暫存器,例如藉由將輸入之一個暫時複製至不同暫存器。然而,實際上,該額外電路系統之開銷不可能是合理的。實際上,複數乘法指令將經常用於使用如上所示之相同輸入暫存器及目的地暫存器之第一形式/第二形式指令對,因此程式員極不可能選擇指定與源暫存器之一個相同之目的地暫存器,因為此舉將引起該對之第一指令改寫第二指令所需之輸入運算元。因此,實際上程式員不可能將同一暫存器指定為該等類型指令之來源/目的地兩者,因此增加防止此情況之專門電路系統之開銷不合理。相反,指令集架構可簡單地指定若程式員不使用同一暫存器作為該等複數乘法指令之來源/目的地兩者,則無法確保結果為正確的。此可藉由免去處理罕見情況之支出費用來提供更大面積及功率效率硬體實施方式。
第17圖為圖示執行複數乘法指令之方法之流程圖。在步驟50處,擷取待執行之下一個指令以解碼及指令解碼器決定該指令之類型。若指令不為複數乘法指令,則指令解碼器控制處理電路系統以執行適宜此類型指令之操作。當遇到複數乘法指令時,則在步驟52處指令解碼器決定指令具有第一形式還是第二形式。此外,在步驟54處,指令解碼器決定指令具有第一版本還是第二版本。若指令具有第一形式及第一版本,則在步驟56處,目標元件為目的地之至少一個實元件,而若指令具有第一形式及第二版本,則在步驟58處,目標元件為至少一個虛元件。此外,對於第一形式指令,在步驟60處,指令解碼器產生控制處理電路系統4之控制資訊以產生對應於向量Q1之實元件與向量Q2之實元件的乘積之第一乘積,及對應於Q1之虛元件與Q2之對應虛元件的乘積之第二乘積。
另一方面,若指令具有第二形式,則在步驟62處,指令解碼器再次決定指令具有第一版本還是第二版本。若指令具有第一版本,則在步驟64處,目標元件經決定為至少一個虛元件,而若指令具有第二版本,則在步驟66處,目標經決定為至少一個實元件。在步驟68處,指令解碼器6產生控制處理電路系統4之控制訊號以產生對應於Q1實元件與Q2虛元件之乘積之第一乘積,及為Q1虛元件與Q2實元件之乘積之第二乘積。
發出指令以執行,及對於輸入向量Q1、Q2之實元件/虛元件之每對產生在步驟60、步驟68中定義之乘積,並且在步驟70處,增加或減去對應第一乘積及第二乘積(取決於指令為加變體還是減變體)。在步驟72處,將取決於加法或減法之結果之值寫入不由預測屏蔽之每個目標元件。若有必要將位元之數目減少至目的地向量之資料元件大小,則執行加法/減法之結果之四捨五入及截斷。在步驟74處,處理電路系統抑制不由彼指令指向之至少一個非目標元件之更新,不管是否為彼元件規定任何預測。
應理解,源向量暫存器之Q1及Q2之選擇是任意的且使用哪些暫存器可藉由架構硬連接。或者,在其他實施例中複數乘法指令可含有指示哪些暫存器含有源向量值之參數。類似地,目的地暫存器Q0可硬連接或可藉由複數乘法指令之參數選定。
第18圖圖示了可使用之虛擬機實施方式。儘管前文描述之實施例根據用於操作支援相關技術之特定處理硬體之裝置及方法實施本發明,但亦可能提供硬體裝置之所謂虛擬機實施方式。該等虛擬機實施方式在運行支援虛擬機器程式130之主作業系統140之主處理器150上運行。通常,需要大功率處理器以提供在合理速度下執行之虛擬機實施方式,但該方法在某些情況下為合理的,諸如當期望為了相容性或重新使用原因而運行另一處理器之本端代碼。虛擬機程式130提供虛擬硬體介面至客程式120,客程式120與原本由真實硬體提供之硬體介面相同,該真實硬體為由虛擬機程式130模型化之裝置。因此,可以使用虛擬機程式130自客程式120內執行包括對如上所述之記憶體存取之控制的程式指令,以模型化其與虛擬機硬體之交互作用。客程式120可為裸金屬程式,或者其可為以與主OS140運行虛擬機應用130相似之方式運行應用之客作業系統。亦應理解,存在不同類型之虛擬機,並在一些類型中存在直接在主硬體150上運行之虛擬機而無需主作業系統140。
在本申請案中,使用單詞「配置...」意謂裝置元件具有能夠執行所定義操作之結構。在上下文中,「配置」意謂硬體或軟體之互連之排列或方式。例如,裝置可具有提供定義操作之專用硬體,或處理器或其他處理元件可經程式化以執行功能。「經配置以」不表示裝置元件需要以任何方式改變以便提供所定義之操作。
儘管本文已參考所附圖式詳細地描述本發明之說明性實施例,但應理解,本發明並不限於彼等精確實施例且熟習此項技術者可在不背離如隨附申請專利範圍所定義之本發明之範疇及精神的情況下在其中實施各種改變及修改。
2‧‧‧資料處理裝置4‧‧‧處理電路系統6‧‧‧解碼器8‧‧‧記憶體系統10‧‧‧暫存器12‧‧‧純量暫存器檔案14‧‧‧向量暫存器檔案16‧‧‧循環計數器18‧‧‧元件大小暫存器20‧‧‧向量寬度暫存器22‧‧‧向量述詞暫存器50‧‧‧步驟52‧‧‧步驟54‧‧‧步驟56‧‧‧步驟58‧‧‧步驟60‧‧‧步驟62‧‧‧步驟64‧‧‧步驟66‧‧‧步驟68‧‧‧步驟70‧‧‧步驟72‧‧‧步驟74‧‧‧步驟90‧‧‧循環預測電路系統120‧‧‧客程式130‧‧‧虛擬機程式140‧‧‧主OS150‧‧‧主硬體
從以下結合附圖閱讀之實例之描述中,本技術的另外態樣、特徵及優點將顯而易見,其中:
第1圖示意地圖示支援執行向量指令之資料處理裝置之實例;
第2圖為圖示用於使用向量指令使兩個複數相乘之替換方法之對比實例;
第3圖圖示使用第一形式複數乘法指令及第二形式複數乘法指令使兩個複數相乘之實例;
第4圖圖示使用第一形式指令及第二形式指令計算複共軛乘法之實例;
第5圖示意地圖示第一形式複數乘法指令及第二形式複數乘法指令之第二版本;
第6圖圖示分配表示複數之實部或虛部的向量之實元件及虛元件的不同實例;
第7圖及第8圖圖示執行截斷以產生目的地向量之目標元件之不同方式;
第9圖圖示複數乘法指令之元件加寬變體;
第10圖及第11圖圖示回應於指令之元件加寬變體執行截斷之兩個替換方式;
第12圖示意地圖示藉由在向量指令之前加上向量述語指令來控制向量指令之預測的實例;
第13圖示意地圖示在處理向量化循環期間控制預測之實例;
第14圖至第16圖圖示重疊向量指令之各別執行節拍之實例;
第17圖為圖示處理複數乘法指令之方法之流程圖;以及
第18圖圖示可使用之虛擬機實施方式。
一些特定實例將在下文論述。應理解,本發明不限於該等特定實例。
無
(請換頁單獨記載) 無
Claims (22)
- 一種資料處理裝置,其包含: 處理電路系統,用以執行資料處理;以及 一指令解碼器,用以解碼指令以控制該處理電路系統來執行該資料處理; 其中該指令解碼器經配置以解碼一複數乘法指令以控制該處理電路系統在第一運算元向量及第二運算元向量上執行一部分複數乘法運算以將一目的地向量之至少一個目標元件設置為一值,該值取決於增加或減去一第一乘積及一第二乘積之一結果,該第一運算元向量及第二運算元向量及該目的地向量每一者包含複數個資料元件,該複數個資料元件包括表示一複數之一實部之至少一個實元件及表示一複數之一虛部之至少一個虛元件; 回應於該複數乘法指令之一第一形式,該指令解碼器經配置以控制該處理電路系統以使用包含該第一運算元向量之一實元件與該第二運算元向量之一對應實元件之一乘積的該第一乘積,及包含該第一運算元向量之一虛元件與該第二運算元向量之一對應虛元件之一乘積的該第二乘積,執行該部分複數乘法運算; 回應於該複數乘法指令之一第二形式,該指令解碼器經配置以控制該處理電路系統以使用包含該第一運算元向量之一實元件與該第二運算元向量之一虛元件之一乘積的該第一乘積,及包含該第一運算元向量之一虛元件與該第二運算元向量之一實元件之一乘積的該第二乘積,執行該部分複數乘法運算; 回應於該複數乘法指令之該第一形式及第二形式之一個,該指令解碼器經配置以控制該處理電路系統以使用包含該目的地向量之至少一個實元件之該至少一個目標元件執行該部分複數乘法運算; 回應於該複數乘法指令之該第一形式及第二形式之另一個,該指令解碼器經配置以控制該處理電路系統以使用包含該目的地向量之至少一個虛元件之該至少一個目標元件執行該部分複數乘法運算;以及 回應於該複數乘法指令之該第一形式及第二形式之至少一個,該指令解碼器經配置以控制該處理電路系統以抑制該目的地向量之至少一個元件而非該至少一個目標元件之更新。
- 如請求項1所述之資料處理裝置,其中回應於包含多於兩個資料元件之該第一運算元向量及第二運算元向量之一複數乘法指令,該指令解碼器經配置以控制該處理電路系統以處理該第一運算元向量及第二運算元向量,該第一運算元向量及第二運算元向量每一個包含與複數個虛元件交錯之複數個實元件。
- 如請求項2所述之資料處理裝置,其中該處理電路系統經配置以回應於與該複數乘法指令關聯之一參數來決定該第一運算元向量及第二運算元向量中之實元件及虛元件之數目,且該參數為以下各者之一者: 一立即值,指示該實元件及該虛元件之該數目; 一立即值,指示該實元件及該虛元件之一寬度; 一值,指示含有一值之一暫存器,該值指示該實元件及該虛元件之該數目;以及 一值,指示含有一值之一暫存器,該值指示該實元件及該虛元件之該寬度。
- 如前述請求項中任一項所述之資料處理裝置,其中該處理電路系統經配置以回應於識別該給定部分為待屏蔽之一部分之一預測指示來屏蔽與該目的地向量之一給定部分關聯之一操作。
- 如請求項4所述之資料處理裝置,其中回應於該複數乘法指令之該第一形式及該第二形式之該至少一個,該指令解碼器經配置以控制該處理電路系統以抑制該目的地向量之該至少一個元件而非該至少一個目標元件之更新,不論該預測指示是否識別該目的地向量的對應於該至少一個元件之一部分為待屏蔽之一部分。
- 如請求項1所述之資料處理裝置,其中回應於該複數乘法指令之一加變體,該指令解碼器經配置以控制該處理電路系統以將該至少一個目標元件設置為一值,該值取決於增加該第一乘積及該第二乘積之一結果;以及 回應於該複數乘法指令之一減變體,該指令解碼器經配置以控制該處理電路系統以將該至少一個目標元件設置為一值,該值取決於減去該第一乘積及該第二乘積之一結果。
- 如請求項1所述之資料處理裝置,其中回應於該複數乘法指令之一第一版本,該指令解碼器經配置以控制該處理電路系統以使用該至少一個目標元件執行該部分複數乘法運算,該至少一個目標元件包含: 當該複數乘法指令具有該第一形式時,該目的地向量之至少一個實元件;以及 當該複數乘法指令具有該第二形式時,該目的地向量之至少一個虛元件。
- 如請求項1所述之資料處理裝置,其中回應於該複數乘法指令之一第二版本,該指令解碼器經配置以控制該處理電路系統以使用該至少一個目標元件執行該部分複數乘法運算,該至少一個目標元件包含: 當該複數乘法指令具有該第一形式時,該目的地向量之至少一個虛元件;以及 當該複數乘法指令具有該第二形式時,該目的地向量之至少一個實元件。
- 如請求項1所述之資料處理裝置,其中回應於該複數乘法指令之一元件加寬變體,該指令解碼器經配置以控制該處理電路系統以在包含J位元資料元件之該第一運算元向量及第二運算元向量上執行該部分乘法運算,以產生包含K位元資料元件之該目的地向量,其中K>J。
- 如請求項9所述之資料處理裝置,其中K=2J,並回應於該複數乘法指令之該元件加寬變體,該指令解碼器經配置以將該目的地向量之該至少一個目標元件之每一者設置為以下各者之一個: 對應於增加或減去該第一乘積及該第二乘積之一K+1位元值之一最高有效K個位元;以及 該K+1位元值之最低有效K個位元。
- 如請求項1所述之資料處理裝置,其中回應於該複數乘法指令之一元件大小保持變體,該指令解碼器經配置以控制該處理電路系統以在包含J位元資料元件之該第一運算元向量及第二運算元向量上執行該部分乘法運算以產生包含J位元資料元件之該目的地向量。
- 如請求項11所述之資料處理裝置,其中回應於該複數乘法指令之該元件大小保持變體,該指令解碼器經配置以控制該處理電路系統以將該目的地向量之該至少一個目標元件之每一個設置為包含一中間值之一截斷之一J位元值,該中間值對應於增加或減去該第一乘積及該第二乘積之一結果。
- 如請求項12所述之資料處理裝置,其中回應於該複數乘法指令之該元件大小保持變體,該指令解碼器經配置以控制該處理電路系統以執行該截斷,該截斷包含選擇該中間值之J位元並根據比該選定J位元更無效之該中間值之至少一個位元來四捨五入該等選定J位元。
- 如請求項12所述之資料處理裝置,其中該中間值包含2J+1個位元且該截斷包含選擇該(2J+1)位元值之一最高有效J個位元。
- 如請求項12所述之資料處理裝置,其中該中間值包含2J+1個位元[2J:0],且該截斷包含選擇該(2J+1)位元值之位元[2J-1:J]。
- 如請求項1所述之資料處理裝置,其中回應於該複數乘法指令之一整數或定點變體,該指令解碼器經配置以控制該處理電路系統以執行該部分複數乘法運算以使用整數或定點算術產生該至少一個目標元件。
- 如請求項1所述之資料處理裝置,其中回應於該複數乘法指令之一浮點變體,該指令解碼器經配置以控制該處理電路系統以執行該部分乘法運算以使用浮點算術產生該至少一個目標元件。
- 如請求項1所述之資料處理裝置,其中回應於一向量指令,該處理電路系統經配置以執行複數個處理節拍,每個節拍包含對應於一向量值之一部分之處理;以及 該處理電路系統經配置以支援第一向量指令及第二向量指令之重疊執行,其中該第二向量指令之節拍之一第一子集合與該第一向量指令之節拍之一第二子集合並行執行。
- 一種資料處理裝置,其包含: 用於執行資料處理之手段;以及 用於解碼指令之手段,以控制該用於執行資料處理之手段以執行該資料處理; 其中該用於解碼之該手段經配置以解碼一複數乘法指令以控制該用於執行資料處理之該手段以在第一運算元向量及第二運算元向量上執行一部分複數乘法運算以將一目的地向量之至少一個目標元件設置為一值,該值取決於增加或減去一第一乘積及一第二乘積之一結果,該第一運算元向量及第二運算元向量每一者包含複數個資料元件,該複數個資料元件包括表示一複數之一實部之至少一個實元件及表示一複數之一虛部之至少一個虛元件; 回應於該複數乘法指令之一第一形式,該用於解碼之手段經配置以控制該用於執行資料處理之手段以執行該部分複數乘法運算,該部分複數乘法運算具有包含該第一運算元向量之一實元件與該第二運算元向量之一對應實元件之一乘積的該第一乘積,及包含該第一運算元向量之一虛元件與該第二運算元向量之一對應虛元件之一乘積的該第二乘積; 回應於該複數乘法指令之一第二形式,該用於解碼之手段經配置以控制該用於執行資料處理之手段以使用包含該第一運算元向量之一實元件與該第二運算元向量之一虛元件之一乘積的該第一乘積,及包含該第一運算元向量之一虛元件與該第二運算元向量之一實元件之一乘積的該第二乘積執行該部分複數乘法運算; 回應於該複數乘法指令之該第一形式及第二形式之一個,該用於解碼之手段經配置以控制該用於執行資料處理之手段以使用包含該目的地向量之至少一個實元件之該至少一個目標元件執行該部分複數乘法運算; 回應於該複數乘法指令之該第一形式及第二形式之另一個,該用於解碼之手段經配置以控制該用於執行資料處理之手段以使用包含該目的地向量之至少一個虛元件之該至少一個目標元件執行該部分複數乘法運算;以及 回應於該複數乘法指令之該第一形式及第二形式之至少一個,該用於解碼之手段經配置以控制該用於執行資料處理之手段以抑制該目的地向量之至少一個元件而非該至少一個目標元件之更新。
- 一種資料處理方法,其包含以下步驟: 解碼一複數乘法指令以控制處理電路系統以在第一運算元向量及第二運算元向量上執行一部分複數乘法運算以將一目的地向量之至少一個目標元件設置為一值,該值取決於增加或減去一第一乘積及一第二乘積之一結果,該第一運算元向量及第二運算元向量及該目的地向量每一者包含複數個資料元件,該複數個資料元件包括表示一複數之一實部之至少一個實元件及表示一複數之一虛部之至少一個虛元件; 其中回應於該複數乘法指令之一第一形式,使用包含該第一運算元向量之一實元件與該第二運算元向量之一對應實元件之一乘積的該第一乘積,及包含該第一運算元向量之一虛元件與該第二運算元向量之一對應虛元件之一乘積的該第二乘積,執行該部分複數乘法運算; 回應於該複數乘法指令之一第二形式,使用包含該第一運算元向量之一實元件與該第二運算元向量之一虛元件之一乘積的該第一乘積,及包含該第一運算元向量之一虛元件與該第二運算元向量之一實元件之一乘積的該第二乘積,執行該部分的複數乘法運算; 回應於該複數乘法指令之該第一形式及第二形式之一個,使用包含該目的地向量之至少一個實元件之該至少一個目標元件執行該部分複數乘法運算; 回應於該複數乘法指令之該第一形式及第二形式之另一個,使用包含該目的地向量之至少一個虛元件之該至少一個目標元件執行該部分複數乘法運算;以及 回應於該複數乘法指令之該第一形式及第二形式之至少一個,抑制該目的地向量之至少一個元件而非該至少一個目標元件之更新。
- 一種虛擬機電腦程式,包含程式指令以控制一主資料處理裝置以提供對應於如請求項1至18中任一項所述之裝置的一指令執行環境。
- 一種電腦可讀取儲存媒體,其儲存如請求項21所述之該虛擬機電腦程式。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1605557.6A GB2548908B (en) | 2016-04-01 | 2016-04-01 | Complex multiply instruction |
GB1605557.6 | 2016-04-01 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201737075A TW201737075A (zh) | 2017-10-16 |
TWI728068B true TWI728068B (zh) | 2021-05-21 |
Family
ID=58108685
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106108495A TWI728068B (zh) | 2016-04-01 | 2017-03-15 | 複數乘法指令 |
Country Status (9)
Country | Link |
---|---|
US (1) | US10628155B2 (zh) |
EP (1) | EP3436928B1 (zh) |
JP (1) | JP2019511056A (zh) |
KR (1) | KR20180132085A (zh) |
CN (1) | CN108885550B (zh) |
GB (1) | GB2548908B (zh) |
IL (1) | IL261429B (zh) |
TW (1) | TWI728068B (zh) |
WO (1) | WO2017168118A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2564696B (en) * | 2017-07-20 | 2020-02-05 | Advanced Risc Mach Ltd | Register-based complex number processing |
CN107894966A (zh) * | 2017-12-11 | 2018-04-10 | 上海齐网网络科技有限公司 | 一种基于流水线的块浮点模式下的fft处理器引擎原型 |
EP3499362B1 (en) * | 2017-12-13 | 2022-11-30 | ARM Limited | Vector add-with-carry instruction |
US10732929B2 (en) * | 2018-01-09 | 2020-08-04 | Samsung Electronics Co., Ltd. | Computing accelerator using a lookup table |
JP7159696B2 (ja) * | 2018-08-28 | 2022-10-25 | 富士通株式会社 | 情報処理装置,並列計算機システムおよび制御方法 |
US11789734B2 (en) * | 2018-08-30 | 2023-10-17 | Advanced Micro Devices, Inc. | Padded vectorization with compile time known masks |
JPWO2020066375A1 (ja) * | 2018-09-25 | 2021-08-30 | 日本電気株式会社 | 情報処理装置、情報処理方法、プログラム |
US11823052B2 (en) * | 2019-10-11 | 2023-11-21 | Qualcomm Incorporated | Configurable MAC for neural network applications |
CN117093268B (zh) * | 2023-10-19 | 2024-01-30 | 超睿科技(长沙)有限公司 | 一种向量处理方法、系统、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002037259A1 (en) | 2000-11-01 | 2002-05-10 | Bops, Inc. | Methods and apparatus for efficient complex long multiplication and covariance matrix implementation |
US20050193185A1 (en) * | 2003-10-02 | 2005-09-01 | Broadcom Corporation | Processor execution unit for complex operations |
US20090055455A1 (en) * | 2007-08-22 | 2009-02-26 | Nec Electronics Corporation | Microprocessor |
TWI470543B (zh) * | 2011-12-19 | 2015-01-21 | Intel Corp | 用於多精度算術之單一指令多重資料(simd)整數乘法累加指令 |
EP2851786A1 (en) * | 2013-09-23 | 2015-03-25 | Telefonaktiebolaget L M Ericsson (publ) | Instruction class for digital signal processors |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05233682A (ja) * | 1992-02-21 | 1993-09-10 | Matsushita Electric Ind Co Ltd | ディジタル信号処理装置 |
EP1102163A3 (en) * | 1999-11-15 | 2005-06-29 | Texas Instruments Incorporated | Microprocessor with improved instruction set architecture |
US20040073773A1 (en) * | 2002-02-06 | 2004-04-15 | Victor Demjanenko | Vector processor architecture and methods performed therein |
US6801459B2 (en) * | 2002-03-22 | 2004-10-05 | Intel Corporation | Obtaining data mask mapping information |
US7392368B2 (en) * | 2002-08-09 | 2008-06-24 | Marvell International Ltd. | Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements |
US7689641B2 (en) * | 2003-06-30 | 2010-03-30 | Intel Corporation | SIMD integer multiply high with round and shift |
US7793072B2 (en) * | 2003-10-31 | 2010-09-07 | International Business Machines Corporation | Vector execution unit to process a vector instruction by executing a first operation on a first set of operands and a second operation on a second set of operands |
US8200945B2 (en) * | 2003-11-07 | 2012-06-12 | International Business Machines Corporation | Vector unit in a processor enabled to replicate data on a first portion of a data bus to primary and secondary registers |
AU2005269896A1 (en) * | 2004-07-08 | 2006-02-09 | Asocs Ltd. | A method of and apparatus for implementing fast orthogonal transforms of variable size |
US8423979B2 (en) * | 2006-10-12 | 2013-04-16 | International Business Machines Corporation | Code generation for complex arithmetic reduction for architectures lacking cross data-path support |
JP2009075676A (ja) * | 2007-09-18 | 2009-04-09 | Nec Electronics Corp | マイクロプロセッサ |
GB2464292A (en) * | 2008-10-08 | 2010-04-14 | Advanced Risc Mach Ltd | SIMD processor circuit for performing iterative SIMD multiply-accumulate operations |
US8650240B2 (en) * | 2009-08-17 | 2014-02-11 | International Business Machines Corporation | Complex matrix multiplication operations with data pre-conditioning in a high performance computing architecture |
GB2474901B (en) * | 2009-10-30 | 2015-01-07 | Advanced Risc Mach Ltd | Apparatus and method for performing multiply-accumulate operations |
US20120166511A1 (en) * | 2010-12-22 | 2012-06-28 | Hiremath Chetan D | System, apparatus, and method for improved efficiency of execution in signal processing algorithms |
KR20120077164A (ko) * | 2010-12-30 | 2012-07-10 | 삼성전자주식회사 | Simd 구조를 사용하는 복소수 연산을 위한 사용하는 장치 및 방법 |
JP2015219823A (ja) * | 2014-05-20 | 2015-12-07 | 富士通株式会社 | プロセッサ |
US9785565B2 (en) * | 2014-06-30 | 2017-10-10 | Microunity Systems Engineering, Inc. | System and methods for expandably wide processor instructions |
-
2016
- 2016-04-01 GB GB1605557.6A patent/GB2548908B/en active Active
-
2017
- 2017-02-22 EP EP17706880.6A patent/EP3436928B1/en active Active
- 2017-02-22 US US16/081,147 patent/US10628155B2/en active Active
- 2017-02-22 CN CN201780019471.9A patent/CN108885550B/zh active Active
- 2017-02-22 JP JP2018549815A patent/JP2019511056A/ja active Pending
- 2017-02-22 WO PCT/GB2017/050443 patent/WO2017168118A1/en active Application Filing
- 2017-02-22 KR KR1020187030693A patent/KR20180132085A/ko unknown
- 2017-03-15 TW TW106108495A patent/TWI728068B/zh active
-
2018
- 2018-08-28 IL IL261429A patent/IL261429B/en active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002037259A1 (en) | 2000-11-01 | 2002-05-10 | Bops, Inc. | Methods and apparatus for efficient complex long multiplication and covariance matrix implementation |
US20050193185A1 (en) * | 2003-10-02 | 2005-09-01 | Broadcom Corporation | Processor execution unit for complex operations |
US20090055455A1 (en) * | 2007-08-22 | 2009-02-26 | Nec Electronics Corporation | Microprocessor |
TWI470543B (zh) * | 2011-12-19 | 2015-01-21 | Intel Corp | 用於多精度算術之單一指令多重資料(simd)整數乘法累加指令 |
EP2851786A1 (en) * | 2013-09-23 | 2015-03-25 | Telefonaktiebolaget L M Ericsson (publ) | Instruction class for digital signal processors |
Also Published As
Publication number | Publication date |
---|---|
KR20180132085A (ko) | 2018-12-11 |
CN108885550B (zh) | 2023-03-03 |
IL261429B (en) | 2020-10-29 |
GB2548908A (en) | 2017-10-04 |
EP3436928B1 (en) | 2020-05-27 |
IL261429A (en) | 2018-10-31 |
WO2017168118A1 (en) | 2017-10-05 |
EP3436928A1 (en) | 2019-02-06 |
US10628155B2 (en) | 2020-04-21 |
TW201737075A (zh) | 2017-10-16 |
US20190310847A1 (en) | 2019-10-10 |
JP2019511056A (ja) | 2019-04-18 |
GB2548908B (en) | 2019-01-30 |
CN108885550A (zh) | 2018-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI728068B (zh) | 複數乘法指令 | |
KR102413832B1 (ko) | 벡터 곱셈 덧셈 명령 | |
TWI494851B (zh) | 用於推測式述詞指令之功能單元、處理器及方法 | |
KR101417597B1 (ko) | 제로 프레디케이트 브랜치 예측실패에 대한 브랜치 예측실패 거동 억제 | |
KR101511837B1 (ko) | 벡터 분할 루프들의 성능 향상 | |
KR102628985B1 (ko) | 벡터 데이터 전송 명령어 | |
EP2951682B1 (en) | Hardware and software solutions to divergent branches in a parallel pipeline | |
US20130024670A1 (en) | Processing vectors using wrapping multiply and divide instructions in the macroscalar architecture | |
TW201737067A (zh) | 向量預測指令 | |
US20140359253A1 (en) | Increasing macroscalar instruction level parallelism | |
TWI740851B (zh) | 用於向量負載指示之資料處理設備、方法及電腦程式 | |
US11106465B2 (en) | Vector add-with-carry instruction | |
CN110073332B (zh) | 数据处理装置和方法 | |
US8583904B2 (en) | Processing vectors using wrapping negation instructions in the macroscalar architecture | |
GB2274527A (en) | Microprocessor | |
US20130024655A1 (en) | Processing vectors using wrapping increment and decrement instructions in the macroscalar architecture | |
Cray | Vector Processors |