TW201917710A - 在資料處理設備中的向量交插 - Google Patents
在資料處理設備中的向量交插 Download PDFInfo
- Publication number
- TW201917710A TW201917710A TW107122737A TW107122737A TW201917710A TW 201917710 A TW201917710 A TW 201917710A TW 107122737 A TW107122737 A TW 107122737A TW 107122737 A TW107122737 A TW 107122737A TW 201917710 A TW201917710 A TW 201917710A
- Authority
- TW
- Taiwan
- Prior art keywords
- vector
- input data
- data
- data items
- source register
- Prior art date
Links
- 239000013598 vector Substances 0.000 title claims abstract description 201
- 238000012545 processing Methods 0.000 title claims abstract description 176
- 238000000034 method Methods 0.000 claims abstract description 41
- 230000001419 dependent effect Effects 0.000 claims abstract description 7
- 230000008569 process Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 13
- 239000000284 extract Substances 0.000 claims description 12
- 230000000717 retained effect Effects 0.000 claims 1
- 238000005516 engineering process Methods 0.000 description 18
- 230000004044 response Effects 0.000 description 4
- 238000007792 addition Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000001066 destructive effect Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
- 238000012546 transfer Methods 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/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/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
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 Physics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
- Error Detection And Correction (AREA)
Abstract
本發明揭示在資料處理設備中之向量交插技術,該等向量交插技術包含設備、指令、操作該等設備之方法,及模擬器實施方式。向量交插指令指定第一源暫存器、第二源暫存器及目的地暫存器。第一組輸入資料項目係自該第一源暫存器提取,且第二組輸入資料項目係自該第二源暫存器提取。資料處理運算對自該第一及第二組輸入資料項目所取得之所選擇輸入資料項目對執行以產生一組結果資料項目,該組結果資料項目作為結果資料向量儲存於該目的地暫存器中。第一源暫存器相依性結果資料項目儲存於目的地資料向量中的第一組交替位置中,且第二源暫存器相依性結果資料項目儲存於該目的地資料向量中的第二組交替位置中。
Description
本揭示案係關於一種資料處理設備。更特定言之,本揭示案係關於資料處理設備可實行之向量處理運算。
在對一組輸入資料項目執行資料處理運算之資料處理設備中,較大的處理效率及輸送量在輸入資料項目可用向量化方式處理的情況下得到,其中跨越向量之寬度的資料項目群組並行地經受相同資料處理,而非例如採取此等資料項目將一個接一個地處理之順序處理方法。然而,若切實可行之資料處理設備將在無過度複雜性的情況下提供,則將資料處理施加至來自源暫存器之輸入資料項目且將結果儲存於目的地暫存器中的向量化方法可對可執行之資料處理的種類及形成彼等資料處理運算之運算元的輸入資料項目之組合強加某些限制,此情形可將向量化方法的優點呈現為不值得的。
在一個示例實施例中,存在一種設備,該設備包含:指令解碼器電路系統,該指令解碼器電路系統用以對指令進行解碼;及資料處理電路系統,該資料處理電路系統用以將藉由該等指令所指定之向量處理運算選擇性地施加至輸入資料向量,該等輸入資料向量在該等輸入資料向量中之相應位置處包含複數個輸入資料項目,其中該指令解碼器電路系統回應於指定第一源暫存器、第二源暫存器及目的地暫存器之向量交插指令,以產生控制信號來控制該資料處理電路系統實行向量交插處理以:自該第一源暫存器提取第一組輸入資料項目;自該第二源暫存器提取第二組輸入資料項目;對自該第一及第二組輸入資料項目所取得之至少所選擇輸入資料項目對執行資料處理運算,以產生一組結果資料項目;及將該組結果資料項目作為結果資料向量儲存於該目的地暫存器中,其中具有第一源暫存器內容相依性之第一源暫存器相依性結果資料項目儲存於目的地資料向量中的第一組交替位置中,且其中具有第二源暫存器內容相依性之第二源暫存器相依性結果資料項目儲存於該目的地資料向量中的第二組交替位置中。
在另一示例實施例中,存在一種操作資料處理設備之方法,該方法包含以下步驟:對指令進行解碼;將藉由該等指令所指定之向量處理運算選擇性地施加至輸入資料向量,該等輸入資料向量在該等輸入資料向量中之相應位置處包含複數個輸入資料項目;回應於指定該設備之第一源暫存器、第二源暫存器及目的地暫存器的向量交插指令而產生控制信號來控制該設備之資料處理電路系統實行向量交插處理,該向量交插處理包含:自該第一源暫存器提取第一組輸入資料項目;自該第二源暫存器提取第二組輸入資料項目;對自該第一及第二組輸入資料項目所取得之至少所選擇輸入資料項目對執行資料處理運算,以產生一組結果資料項目;及將該組結果資料項目作為結果資料向量儲存於該目的地暫存器中,其中具有第一源暫存器內容相依性之第一源暫存器相依性結果資料項目儲存於目的地資料向量中的第一組交替位置中,且其中具有第二源暫存器內容相依性之第二源暫存器相依性結果資料項目儲存於該目的地資料向量中的第二組交替位置中。
在另一示例實施例中,存在一種設備,該設備包含:用於對指令進行解碼之構件;用於將藉由該等指令所指定之向量處理運算選擇性地施加至輸入資料向量的構件,該等輸入資料向量在該等輸入資料向量中之相應位置處包含複數個輸入資料項目;用於回應於指定該設備之第一源暫存器、第二源暫存器及目的地暫存器的向量交插指令而產生控制信號來控制該設備之資料處理電路系統實行向量交插處理的構件,該向量交插處理包含:用於自該第一源暫存器提取第一組輸入資料項目之構件;用於自該第二源暫存器提取第二組輸入資料項目之構件;用於對自該第一及第二組輸入資料項目所取得之至少所選擇輸入資料項目對執行資料處理運算以產生一組結果資料項目的構件;及用於將該組結果資料項目作為結果資料向量儲存於該目的地暫存器中之構件,其中具有第一源暫存器內容相依性之第一源暫存器相依性結果資料項目儲存於目的地資料向量中的第一組交替位置中,且其中具有第二源暫存器內容相依性之第二源暫存器相依性結果資料項目儲存於該目的地資料向量中的第二組交替位置中。
在另一示例實施例中,存在一種用於控制主機資料處理設備提供指令執行環境之電腦程式,該電腦程式包含:指令解碼程式邏輯,該指令解碼程式邏輯用以對指令進行解碼;及資料處理程式邏輯,該資料處理程式邏輯用以將藉由該等指令所指定之向量處理運算選擇性地施加至輸入資料向量結構,該等輸入資料向量結構在該等輸入資料向量結構中之相應位置處包含複數個輸入資料項目,其中該指令解碼程式邏輯回應於指定第一源資料結構、第二源資料結構及目的地資料結構之向量交插指令,以產生控制信號來控制該資料處理程式邏輯實行向量交插處理以:自該第一源資料結構提取第一組輸入資料項目;自該第二源資料結構提取第二組輸入資料項目;對自該第一及第二組輸入資料項目所取得之至少所選擇輸入資料項目對執行資料處理運算,以產生一組結果資料項目;及將該組結果資料項目作為結果資料向量結構儲存於該目的地資料結構中,其中具有第一源資料結構內容相依性之第一源資料結構相依性結果資料項目儲存於目的地資料向量結構中的第一組交替位置中,且其中具有第二源資料結構內容相依性之第二源資料結構相依性結果資料項目儲存於該目的地資料向量結構中的第二組交替位置中。
在另一示例實施例中,存在一種電腦可讀取儲存媒體,該電腦可讀取儲存媒體以非暫時性型式儲存上文所提及之電腦程式。
至少一些實施例提供一種設備,該設備包含:指令解碼器電路系統,該指令解碼器電路系統用以對指令進行解碼;及資料處理電路系統,該資料處理電路系統用以將藉由該等指令所指定之向量處理運算選擇性地施加至輸入資料向量,該等輸入資料向量在該等輸入資料向量中之相應位置處包含複數個輸入資料項目,其中該指令解碼器電路系統回應於指定第一源暫存器、第二源暫存器及目的地暫存器之向量交插指令,以產生控制信號來控制該資料處理電路系統實行向量交插處理以:自該第一源暫存器提取第一組輸入資料項目;自該第二源暫存器提取第二組輸入資料項目;對自該第一及第二組輸入資料項目所取得之至少所選擇輸入資料項目對執行資料處理運算,以產生一組結果資料項目;及將該組結果資料項目作為結果資料向量儲存於該目的地暫存器中,其中具有第一源暫存器內容相依性之第一源暫存器相依性結果資料項目儲存於目的地資料向量中的第一組交替位置中,且其中具有第二源暫存器內容相依性之第二源暫存器相依性結果資料項目儲存於該目的地資料向量中的第二組交替位置中。
當前技術認識到,在必要硬體中之處理效率及較小複雜性係在向量處理方法中得到,在該向量處理方法處存在經處理之輸入資料項目與所產生之結果資料項目的共同定位。舉例而言,此共同定位係在處理巷道(processing lane)(獨立資料處理在該等處理巷道內發生)經良好界定且良好約束的實施方式中達成。換言之,此情形意謂:需要集合資料處理運算之所需運算元且將所得資料項目傳送至目的地暫存器中之所需位置的硬體之複雜性係受限的。在此上下文中,當前技術已發現提供向量交插指令係有用的,該向量交插指令一方面使所選擇輸入資料項目對自提取自第一及第二源暫存器之第一及第二組輸入資料項目取得,且另一方面使結果資料項目取決於其源暫存器相依性而儲存於目的地暫存器中,使得第一源暫存器相依性結果資料項目儲存於目的地暫存器中之交替位置中而且第二源暫存器相依性結果資料項目亦儲存於目的地暫存器中的交替位置中。此組態在輸入資料項目之特定配對中啟用有用靈活度,該等配對經定義且在結果資料項目所寫入至的目的地暫存器中之交替位置上為輪流的。的確,當前技術不限於嚴格輸入資料項目對,原因在於資料處理運算除核心對之外亦可具有一或多個額外運算元。然而,此方法仍提供在向量化資料處理中所涉及之相關元素的上文所提及之共同定位,從而避免在必須提供之支援硬體中的過度複雜性,但仍使有用資料處理能夠實行,針對該有用資料處理,另外的相關聯資料處理運算(例如,置換或輪換內容)係不需要的。經實施之向量化資料處理之有用效率及輸送量因此得以支援。
如上文所提及,所選擇資料項目對可以多種有用方式定義,但在一些實施例中,自第一及第二組輸入資料項目所取得之所選擇輸入資料項目對包含:由第一源暫存器中之鄰近輸入資料項目對形成的第一組輸入資料項目對;及由第二源暫存器中之鄰近輸入資料項目對形成的第二組輸入資料項目對。因此,多對鄰近元素(輸入資料項目)係自第一及第二源暫存器兩者取得,從而意謂資料處理之此等輸入資料項目運算元經有用地共置,但此外自該等輸入資料項目運算元所產生之結果資料項目與目的地暫存器中的其他項目交插,因此最大化目的地暫存器利用率(由於目的地暫存器經完全「包裝」)進一步支援正實行之向量化資料處理的效率及輸送量。
確保目的地暫存器之此完全利用率的一種方式為將得自第一源暫存器內容之結果資料項目與得自第二源暫存器內容的結果資料項目交插,且因此在一些實施例中,目的地資料向量中之第一組交替位置與目的地資料向量中的第二組交替位置交替。在一些實施例中,第一組交替位置為目的地資料向量中的偶數數目組之位置,且第二組交替位置為目的地資料向量中的奇數數目組之位置。或者在其他實施例中,第一組交替位置為目的地資料向量中的奇數數目組之位置,且第二組交替位置為目的地資料向量中的偶數數目組之位置。
然而,所選擇輸入資料對可在其他實施例中不同地定義,且在一些實施例中,自第一及第二組輸入資料項目所取得之所選擇輸入資料項目對包含對角線輸入資料項目對,該等對角線輸入資料項目對由第一源暫存器中之交替輸入資料項目與第二源暫存器中的交替輸入資料項目配對而形成。換言之,在此等實施例中,輸入資料項目對橫跨第一及第二源暫存器,原因在於該對中之一個輸入資料項目來自第一源暫存器,而該對中的另一輸入資料項目來自第二源暫存器。此外,此配對在如下意義上為「對角線的」:自第一源暫存器所取得之輸入資料項目相對於自第二源暫存器所取得的輸入資料項目處於第一源暫存器中之偏移位置處,此偏移為一個資料項目位置。因此,來自第一源暫存器之交替輸入資料項目與第二源暫存器中的自鄰近資料項目位置所取得之交替輸入資料項目配對。各種資料處理脈絡可得益於此「對角線輸入資料項目對」方法,如關於隨後之其一些實例將變得更清楚。
因此,在所有結果資料項目係取決於第一源暫存器及第二源暫存器兩者之一些實施例中,藉由第一源暫存器相依性結果資料項目及第二源暫存器相依性結果資料項目所定義之該等組係相同的,且因此在一些實施例中,第一源暫存器相依性結果資料項目及第二源暫存器相依性結果資料項目為同一組結果資料項目,且第一組交替位置及第二組交替位置為目的地資料向量中的同一組交替位置。因此,在結果資料項目儲存於目的地資料向量中之位置方面,在此等實施例中,此情形因此意謂上文所提及的第一組交替位置及第二組交替位置為目的地資料向量中之同一組交替位置。
因此,在此等實施例中,此情形意謂另外一組交替位置(亦即,結果資料項目並未儲存至其中之交替位置)係可利用的以藉由其他資料項目佔據。此等交替位置可取決於何種交替位置對於正執行之特定向量化資料處理有益而以各種方式選擇,但在一些實施例中,第一組交替位置及第二組交替位置與一組先前資料項目保留於目的地資料向量中的另外一組位置交替,其中該組先前資料項目在資料處理電路系統開始向量交插處理之前存在於目的地資料向量中的該另外組位置中。換言之,在目的地資料向量中存在未藉由向量交插處理改變(保持未修正)之一組先前資料項目。
將認識到,取決於要求,目的地資料向量中之第一及第二組位置可在一些實施例中經選擇,使得第一組位置為目的地資料向量中的偶數數目組之位置且該另外組位置為目的地資料向量中的奇數數目組。或者在其他實施例中,第一組位置為目的地資料向量中的奇數數目組之位置,且該另外組位置為目的地資料向量中的偶數數目組之位置。
同樣地,亦將認識到,自第一及第二源暫存器所提取之交替輸入資料項目具有與其相關聯的等效選擇,且因此在一些實施例中,第一源暫存器中之交替輸入資料項目係自第一源暫存器中的偶數數目組之位置提取,且第二源暫存器中之交替輸入資料項目係自第二源暫存器中的奇數數目組之位置提取。或者在其他實施例中,第一源暫存器中之交替輸入資料項目係自第一源暫存器中的奇數數目組之位置提取,且第二源暫存器中之交替輸入資料項目係自第二源暫存器中的偶數數目組之位置提取。
對輸入資料項目所執行之特定資料處理運算可採取多種形式,但在各種實施例中,資料處理運算為算術運算、邏輯運算或移位運算。可選擇任何此運算,該運算經合適地配置來遵守將要實行之向量化資料處理之向量化「巷道」的約束。
在一些實施例中,在向量交插指令中所指定之目的地暫存器為相異於第一及第二源暫存器的暫存器,但在一些實施例中,在向量交插指令中所指定之目的地暫存器為第一源暫存器及第二源暫存器中的一者。此情形因此提供可採取之至少部分地「破壞性」方法,其中該源暫存器之資料項目中的至少一些資料項目係藉由將該組結果資料項目儲存至此暫存器中而覆寫。
當前技術將可配置性之另外態樣提供至回應於向量交插指令而實行的向量化資料處理,原因在於在一些實施例中,向量交插指令進一步指定包含預測位元之預測值,該等預測位元對應於輸入資料向量中的相應位置,且資料處理電路系統進一步回應於預測值中之取消設定預測位元來以禁止第一組輸入資料項目及第二組輸入資料項目中對應於取消設定預測位元的輸入資料項目涉及向量交插處理。因此,另外特定控制可因此施加至藉由設定或取消設定預測值中之某些預測位元的有效機制進行之處理。此預測值可以數種方式在向量交插指令中指定,作為交插指令自身內之即時值抑或藉由指示將發現預測值之儲存位置的向量交插指令,該儲存位置例如為另外暫存器。
對當前技術之另一靈活度在實施例中得以提供,在該等實施例中,向量交插指令進一步指定第一組輸入資料項目之第一資料項目大小、第二組輸入資料項目之第二資料項目大小,及該組結果資料項目的結果資料項目大小。此方法不僅僅為一般有用的,以便能夠控制自第一及第二源暫存器所提取之特定輸入資料項目,且控制儲存至目的地暫存器中之結果資料項目的特定格式,但可在設法藉由指定將適當地遵守向量化巷道之資料大小而維持彼等巷道內之處理的上下文中發現特定適用性。
此情形可例如包含縮窄結果資料項目,但相反地亦可包含允許結果資料項目之加寬(相對於輸入資料項目),因此例如使不損失精確度之「無進位」乘法能夠實行,亦即,該乘法保留計算中的所有資訊,該資訊在某些上下文中(例如在密碼學中)可為重要的。
因此,在一些實施例中,第一資料項目大小及第二組輸入資料項目之第二資料項目大小小於該組結果資料項目的結果資料項目大小。或者在其他實施例中,第一資料項目大小及第二組輸入資料項目之第二資料項目大小大於該組結果資料項目的結果資料項目大小。
至少一些實施例提供一種操作資料處理設備之方法,該方法包含以下步驟:對指令進行解碼;將藉由該等指令所指定之向量處理運算選擇性地施加至輸入資料向量,該等輸入資料向量在該等輸入資料向量中之相應位置處包含複數個輸入資料項目;回應於指定該設備之第一源暫存器、第二源暫存器及目的地暫存器的向量交插指令而產生控制信號來控制該設備之資料處理電路系統實行向量交插處理,該向量交插處理包含:自該第一源暫存器提取第一組輸入資料項目;自該第二源暫存器提取第二組輸入資料項目;對自該第一及第二組輸入資料項目所取得之至少所選擇輸入資料項目對執行資料處理運算,以產生一組結果資料項目;及將該組結果資料項目作為結果資料向量儲存於該目的地暫存器中,其中具有第一源暫存器內容相依性之第一源暫存器相依性結果資料項目儲存於目的地資料向量中的第一組交替位置中,且其中具有第二源暫存器內容相依性之第二源暫存器相依性結果資料項目儲存於該目的地資料向量中的第二組交替位置中。
至少一些實施例提供一種設備,該設備包含:用於對指令進行解碼之構件;用於將藉由該等指令所指定之向量處理運算選擇性地施加至輸入資料向量的構件,該等輸入資料向量在該等輸入資料向量中之相應位置處包含複數個輸入資料項目;用於回應於指定該設備之第一源暫存器、第二源暫存器及目的地暫存器的向量交插指令而產生控制信號來控制該設備之資料處理電路系統實行向量交插處理的構件,該向量交插處理包含:用於自該第一源暫存器提取第一組輸入資料項目之構件;用於自該第二源暫存器提取第二組輸入資料項目之構件;用於對自該第一及第二組輸入資料項目所取得之至少所選擇輸入資料項目對執行資料處理運算以產生一組結果資料項目的構件;及用於將該組結果資料項目作為結果資料向量儲存於該目的地暫存器中之構件,其中具有第一源暫存器內容相依性之第一源暫存器相依性結果資料項目儲存於目的地資料向量中的第一組交替位置中,且其中具有第二源暫存器內容相依性之第二源暫存器相依性結果資料項目儲存於該目的地資料向量中的第二組交替位置中。
至少一些實施例提供一種用於控制主機資料處理設備提供指令執行環境之電腦程式,該電腦程式包含:指令解碼程式邏輯,該指令解碼程式邏輯用以對指令進行解碼;及資料處理程式邏輯,該資料處理程式邏輯用以將藉由該等指令所指定之向量處理運算選擇性地施加至輸入資料向量結構,該等輸入資料向量結構在該等輸入資料向量結構中之相應位置處包含複數個輸入資料項目,其中該指令解碼程式邏輯回應於指定第一源資料結構、第二源資料結構及目的地資料結構之向量交插指令,以產生控制信號來控制該資料處理程式邏輯實行向量交插處理以:自該第一源資料結構提取第一組輸入資料項目;自該第二源資料結構提取第二組輸入資料項目;對自該第一及第二組輸入資料項目所取得之至少所選擇輸入資料項目對執行資料處理運算,以產生一組結果資料項目;及將該組結果資料項目作為結果資料向量結構儲存於該目的地資料結構中,其中具有第一源資料結構內容相依性之第一源資料結構相依性結果資料項目儲存於目的地資料向量結構中的第一組交替位置中,且其中具有第二源資料結構內容相依性之第二源資料結構相依性結果資料項目儲存於該目的地資料向量結構中的第二組交替位置中。
至少一些實施例提供一種電腦可讀取儲存媒體,該電腦可讀取儲存媒體以非暫時性型式儲存上文所提及之電腦程式。
現參看諸圖描述一些特定實施例。
第1圖示意性地示出可體現當前技術之各種實例的資料處理設備10。該設備包含資料處理電路系統12,資料處理電路系統12回應於其執行之指令序列對資料項目執行資料處理運算。此等指令係自資料處理設備已存取之記憶體14提取,且以一般熟習此項技術者將熟悉的方式,擷取電路系統16為此目的得以提供。此外,藉由擷取電路系統16所提取之指令傳遞至指令解碼器電路系統18,指令解碼器電路系統18產生控制信號,該等控制信號經佈置來控制處理電路系統12以及一組暫存器20及載入/儲存單元22之組態及操作的各種態樣。大體而言,資料處理電路系統12可以管線式型式佈置,而其詳情並不與當前技術相關。一般熟習此項技術者將熟悉第1圖表示之一般組態,且該組態之進一步詳細描述僅為簡要的目的而隨其施配。如在第1圖中可見,暫存器20各自包含用於多個資料元素之儲存件,使得處理電路系統可將資料處理運算施加至經指定暫存器內的經指定資料元素,抑或可將資料處理運算施加至經指定暫存器內之經指定群組的資料元素(「向量」)。特定言之,所示出之資料處理設備與向量化資料處理運算相對於保持於暫存器20中之資料元素的執行相關,且特定地與向量交插指令之執行相關,該資料處理設備之進一步解釋將在下文參考一些特定實施例更詳細地跟隨。藉由資料處理電路系統12在指令之執行中所需的資料值,及由於彼等資料處理指令所產生的資料值,藉由載入/儲存單元22寫入至記憶體14及自記憶體14讀取。亦注意,大體而言,第1圖中之記憶體14作為電腦可讀取儲存媒體之實例可見,在該電腦可讀取儲存媒體上可儲存有當前技術之指令,通常作為處理電路系統接著執行之預定義指令序列(「程式」)的部分。然而,處理電路系統可自多種不同來源存取此程式,諸如在RAM中、在ROM中、經由網路介面等等。本揭示案描述處理電路系統12可執行的各種新穎指令及接下來提供此等指令之本質之進一步解釋的諸圖、資料處理電路系統中之變化以便支援彼等指令的執行,等等。
第2A圖示意性地示出在一個實施例中之暫存器及資料處理電路系統。在此實例中,源暫存器30(來源0)及源暫存器32(來源1),以及目的地暫存器34得以圖示。此組三個暫存器係在向量交插指令中指定,該向量交插指令使所示出之處理(藉由實現組件之間的適當連接)得以實行。如所示,輸入資料元素對係自第一及第二源暫存器中之鄰近位置提取,此等暫存器將運算元提供至在相應「運算」(OP)電路系統36、38、40及42中對每一輸入資料元素對實行的資料處理運算。藉由資料處理電路系統之此等項目所實行的特定運算可採取多種形式,但如第2B圖中所示藉由該等三個暫存器之相應位置中對應於第2A圖中所示之處理的資料項目之示例內容,在此實例中,運算為互斥OR。然而,在其他實例中,運算可為任何種類之算術運算(例如,加法、乘法等)、邏輯運算(例如,AND、OR等)或移位運算(左或右,及藉由任何合適數目個位元位置)。如藉由自資料運算電路系統導向目的地暫存器34之結果資料路徑所示,藉由此處理所產生的結果資料項目取決於輸入資料對所來自於之源暫存器而儲存於目的地暫存器中的交替位置中。因此,在所示實例中,來自源暫存器30之結果資料項目儲存於奇數數目之位置1及3中,而得自源暫存器32的結果資料項目儲存於偶數數目之位置0及2中。應瞭解,此情形可回應於不同地配置之向量交插指令而不同地提供,使得此等奇數及偶數位置得以顛倒。最終注意,第2A圖及第2B圖中之暫存器中的每一者經示出為圖示兩對資料輸入值自每一源暫存器取得且四個結果資料項目經寫入至目的地暫存器中,但朝向該圖之左手側的線延伸部示出,在此向量化資料處理上下文中,所示出處理之進一步迭代可跨越所提供設備之向量處理性能的寬度來提供。
第3A圖示意性地示出在類似於第2A圖及第2B圖中所示之實施例的實施例中之資料處理電路系統及暫存器。第一源暫存器40及第二源暫存器42(源暫存器0及1)以及目的地暫存器44得以圖示。用以實行所需資料處理運算(「OP」)46、48、50及52之資料處理電路系統亦得以圖示。在此實例中,如藉由第3B圖中所給出之示例內容所示出,運算為乘法。如之前,此運算可按需要為任何所選算術、邏輯或移位運算。區分第3A圖及第2A圖為如下事實:第3A圖示出「加寬」運算之執行,其中自每一源暫存器所提取之每一資料項目的大小為儲存於目的地暫存器中之每一所得結果資料值之大小的一半。此處,實例經給出為輸入資料項目為雙倍(d)且結果資料項目為四倍(q)。此情形為二進位浮點格式,雙倍輸入資料項目為各自64位元值,而四倍值為各自128位元值。此情形使所示之示例資料處理(亦指代第3B圖之示例內容)能夠被實行,其中此實例中之運算為乘法,且因此此方法使不損失資訊的加寬無進位乘法能夠被實行。注意,亦在第3A圖之特定實例中,雙倍係自源暫存器中之每一128位元資料項目的下半部取得,此在觸發此資料處理之向量交插指令中為可指定的。相反實例亦可被提供,其中資料項目之上半部可被取得。在一個實例中,指令係以兩個形式提供以支援此情形,「T」形式(其將使上半部內容得以使用)及「B」形式(其將使下半部內容得以使用)。的確,當前技術提供向量交插指令,其中資料項目之大小在此等格式中跨越寬範圍為可指定的,該等格式例如8位元位元組、16位元半部、32位元單倍、64位元雙倍及128位元四倍。隨著此等源暫存器及資料處理電路系統之容量增加的進一步延伸當然係可能的。亦注意,在第3A圖及第3B圖之實例給出加寬資料處理運算的情況下,相反性能亦被提供,其中針對合適之資料處理運算,較窄的結果資料項目係自較寬的源暫存器輸入資料項目產生。
第4A圖圖示另一實例,其中僅兩個暫存器得以使用,第一源暫存器60及亦為目的地暫存器之第二源暫存器62。換言之,藉由運算電路系統64、66、68及70之資料處理所產生的結果資料值儲存回至源暫存器62中。因此,此實例可據稱為「破壞性的」,原因在於第二源暫存器62之內容在一旦結果資料項目已覆寫其時丟失。針對此設立之示例內容在第4B圖中給出,圖示來源0之內容,且在資料處理之前及之後均圖示來源1的內容。在此實例中,資料處理為XOR運算,但如在上文所述之其他實例中,此按需要可為任何多種算術、邏輯或移位運算。
第5A圖示意性地示出另外示例實施例。在此實例中,源暫存器80及82以及目的地暫存器84得以圖示。另外,在此實例中,述詞值86亦得以圖示。此述詞值可作為即時值在指令中指定,否則可藉由其在資料處理設備中之儲存位置指定,例如在另一暫存器中。述詞值對資料處理之影響在第5A圖中可見,原因在於在述詞值的位元位置與資料處理之巷道之間存在對應性。因此,在述詞值之兩個位元經設定(1)且兩個位元經取消設定(0)之情況下,此情形有效地在適當時接通或斷開藉由資料處理電路系統項目88、90、92、94、96、98、100及102所執行的處理。特定而言,在所示實例中,無處理藉由項目90、94、98及102執行,而88、92、96及100如上文參看第2A圖、第3A圖及第4A圖所述而操作。在第5A圖中所示之實例中,如第5B圖中所示出,處理為XOR運算,但如之前,任何算術、邏輯或移位運算可等效地執行。實際上,因此,目的地暫存器之內容僅在自有效資料處理電路系統(OP單元)接收結果資料項目的彼等位置中修改,在第5A圖中,目的地暫存器中之未修正位置為有陰影線的。第5B圖圖示在資料處理之前及之後兩者的目的地暫存器之內容,從而證明某些位置的內容並未改變。
第6圖示意性地示出採取了對於輸入資料項目之配對的不同方法之另外示例組態。源暫存器110及112以及目的地暫存器114得以圖示。在此實例中,該等對橫跨兩個源暫存器,亦即,一個輸入運算元資料項目係自第一源暫存器取得,而另一輸入運算元資料項目係自另一源暫存器取得。因此,在第6圖之實例中,資料項目A0及A2係自第一源暫存器取得且分別與來自第二源暫存器之資料項目B1及B3配對。此等暫存器將輸入提供至資料處理電路系統114及116,資料處理電路系統114及116如做標籤可見執行XOR運算(如在先前實例中,此運算可以各種方式定義)。藉由資料處理電路系統之此等兩個項目所產生的結果資料項目儲存於目的地暫存器114中之兩個位置中,該等位置與目的地暫存器114中的第二組位置交插,該第二組位置藉由所實行之資料處理保持不變。關於第6圖中之實例,應瞭解,來自第一源暫存器之提供輸入資料項目的偶數數目之位置及第二源暫存器中之提供輸入資料項目的奇數數目之位置的選擇可顛倒,亦即,奇數數目之項目來自第一源暫存器且偶數數目之項目來自第二源暫存器。類似地,將結果資料項目寫入至之偶數數目之位置的選擇可替代地選擇為在目的地暫存器中具有不變之資料項目的該組奇數數目之位置,接著當然佔據偶數數目之位置。藉由給定指令中之合適旗標抑或藉由針對每一版本之單獨定義的指令支援所有此等置換的指令可得以提供。
第7圖及第8圖現示出且描述當前技術在用於多項式乘法之上下文中時的一個示例實施例。此處,當前技術尤其提供指定互斥OR運算之向量交插指令,且此外此互斥OR運算係以兩種格式提供,該等兩種格式在第8圖之實例中稱為EORBT及EORTB,其中後兩個字母B及T指代「底部」及「頂部」,即給定資料項目之下半部及上半部,該等半部指示應處置此等運算的方式,如下文將更詳細地解釋。此等特定指令有益於加快多項式乘法(在伽羅畢域中)。此外,此實例為無進位乘法中之一者。因此,以第7圖中所示之一些定義開始,採取卡拉楚巴方法以使得: {X1, X0} * {Y1, Y0} = H_128{P1, P0^
P1^
Q1^
R1}, L_128{Q1 ^ P0 ^ Q0 ^ R0, Q0} 其中: {P1, P0} = X1 * Y1 {Q1, Q0} = X0 * Y0 {R1, R0} = (X0 ^ X1) * (Y0 ^ Y1) 此外,使向量zX及zY得以定義: zX = {…..X1, X0}且zY = {…..Y1, Y0} 以下指令序列(使用上文所提及之EORTB及EORBT指令)可接著用以實行所需計算。 PMULLB zl.q, zY.d, zX.d //z1 = {.....Q1, Q0} PMULLT z2.q, zY.d, zX.d //z2 = {.....Pl, P0} EORBT zX.q, zX.d, zX.d EORBT zY.q, zY.d, zY.d PMULLB z3.q, zX.d, zY.d //z3 = {.....Rl, R0} EOR z3.d, z3.d, z2.d EOR z3.d, z3.d, zl.d //z3 = {.....Pl ^ Ql ^ Rl, P0 ^ Q0 ^ R0} EORTB zl.q, zl.d, z3.d EORBT z2.q, z2.d, z3.d
因此注意,每一128位元寬乘法之256位元結果在暫存器z1與z2之間分離,其中z1含有底部128位元且z2含有頂部128位元。此情形可例如在最小向量長度為128位元之實施方式中有效地工作,且因此此示例指令(程式碼)序列可針對此系統內之任何給定向量長度工作。第8圖隨著此等指令經實行以產生此等相應底部128位元(其最終導致暫存器z1)及頂部128位元(其最終導致暫存器z2)而圖示暫存器zX、zY、z1、z2及z3之相應資料項目的內容。
第9圖圖示在當前技術之向量交插指令藉由設備遇到時在一個實施例之方法中所採取的步驟之序列。流程可被認為在步驟200處開始,其中對藉由指令解碼器電路系統所接收之指令序列中的下一指令進行解碼。接著在步驟202處判定此指令是否為向量交插指令。若該指令並非向量交插指令,則流程經由步驟204而進行,在步驟204處,在適當時處理此其他種類指令(本描述並不與其他類型之指令相關)。然而,若在步驟202處發現此指令為向量交插指令,則流程進行至步驟206,在步驟206處自第一源暫存器提取輸入資料項目,且進行至步驟208,在步驟208處自第二源暫存器提取輸入資料項目。將瞭解,在閱讀先前諸圖之描述後發現,步驟206及208無需按順序實行,且的確將通常並行地實行,但在第9圖中為簡單性起見僅僅以此順序型式示出。在步驟210處,使用如藉由向量交插指令所定義之輸入資料項目對實行藉由此向量交插指令所定義的資料處理運算,且在步驟212處,根據所遇到之向量交插指令的特定類型在適當時將結果資料項目儲存至目的地暫存器中之交替位置中。流程接著返回至步驟200。
第10圖圖示在另一實施例之方法中所採取的步驟之序列,從而給出可遇到不同類型之向量交插指令的實施例之進一步細節。流程在步驟220處開始,在步驟220處對藉由指令解碼器電路系統所接收之下一指令進行解碼。若發現此指令並非(在步驟222處)向量交插指令,則流程經由步驟224進行,在步驟224處在適當時處理此其他類型之指令(又,此指令在本揭示案中並非相關的)。當此指令為向量交插指令時,流程進行至步驟224,在步驟224處判定此指令為「成對」抑或「對角線」樣式之向量交插指令。在此指令為成對向量交插指令之情況下,則流程進行至步驟226,在步驟226處自第一源暫存器提取第一組資料項目對且自第二源暫存器提取第二組資料項目對(如在指令中指定)。接著在步驟228處,使此等對經受藉由指令所指定之所需資料處理運算。接著在步驟230處,將第一對資料項目之結果儲存至目的地暫存器中的奇數位置,而將來自第二組資料項目對之結果儲存至目的地暫存器中的偶數位置。如在步驟230中之括號中所示,可顛倒奇數及偶數之此選擇(例如,藉由成對指令的兩個變體)。流程接著返回至步驟220。返回至考慮步驟224,若此指令替代地為對角線向量交插指令,則流程自步驟224進行至步驟232,在步驟232處提取來自第一及第二源暫存器中之對角鄰近位置的輸入資料項目對,且在步驟234處使此等輸入資料項目對經受藉由向量交插指令所定義的資料處理運算。接著在步驟236處,將資料處理運算之結果儲存至目的地暫存器中之奇數位置,而偶數位置保持未修正(不變)。第10圖之步驟236中的加括號詞「偶數」及「奇數」指示,奇數及偶數之此選擇可顛倒(例如,藉由對角線指令的兩個變體)。流程接著返回至步驟220。
第11圖示出可使用之模擬器實施方式。儘管較早描述之實施例依據用於操作支援相關技術之特定處理硬體的設備及方法實施本發明,提供經由電腦程式之使用所實施的根據本文所述之實施例的指令執行環境亦為可能的。此等電腦程式常常稱為模擬器,正如該等電腦程式提供硬體架構之基於軟體的實施方式。多種多樣之模擬器電腦程式包括仿真器、虛擬機、模型,及包括動態二進位轉譯器之二進位轉譯器。通常,模擬器實施方式可在支援模擬器程式710之主機處理器730上運行,主機處理器730可選地運行主機作業系統720。在一些佈置中,在硬體與所提供之指令執行環境,及/或同一主機處理器上所提供的多個相異之指令執行環境之間可存在多個模擬層。歷史上,已需要強大的處理器來提供在合理速度下執行之模擬器實施方式,但此方法可在某些情況下被證明正當,諸如當需要為了相容性或再用原因而運行對於另一處理器為原生的代碼時。舉例而言,模擬器實施方式可向指令執行環境提供並不藉由主機處理器硬體支援之額外功能性,或提供通常與不同硬體架構相關聯的指令執行環境。模擬之概述係在「Some Efficient Architecture Simulation Techniques」, Robert Bedichek, Winter 1990 USENIX Conference,第53至63頁中給出。
就實施例先前已參考特定硬體構造或特徵描述而言,在經模擬實施例中,等效功能性可藉由合適的軟體構造或特徵來提供。舉例而言,特定電路系統可在經模擬實施例中實施為電腦程式邏輯。類似地,諸如暫存器或快取記憶體之記憶體硬體可在經模擬實施例中實施為軟體資料結構。在先前描述之實施例中所參考的硬體元件中之一或多者存在於主機硬體(例如,主機處理器730)上的佈置中,一些經模擬實施例可在合適之情況下利用主機硬體。
模擬器程式710可儲存於電腦可讀取儲存媒體(該電腦可讀取儲存媒體可為非暫時性媒體)上,且提供對目標程式碼700(其可包括應用程式、作業系統及超管理器)之程式介面(指令執行環境),該程式介面與正藉由模擬器程式710模型化之硬體架構的應用程式介面相同。因此,目標程式碼700之程式指令,包括上文所述之向量交插指令,可使用模擬器程式710自指令執行環境內執行,使得並非實際上具有上文所論述之設備2之硬體特徵的主機電腦730可模仿此等特徵。
在簡要的總體概述中,揭示了在資料處理設備中之向量交插技術,該等向量交插技術包含設備、指令、操作該等設備之方法,及虛擬機實施方式。向量交插指令指定第一源暫存器、第二源暫存器及目的地暫存器。第一組輸入資料項目係自該第一源暫存器提取,且第二組輸入資料項目係自該第二源暫存器提取。資料處理運算對自該第一及第二組輸入資料項目所取得之所選擇輸入資料項目對執行以產生一組結果資料項目,該組結果資料項目作為結果資料向量儲存於該目的地暫存器中。第一源暫存器相依性結果資料項目儲存於目的地資料向量中的第一組交替位置中,且第二源暫存器相依性結果資料項目儲存於該目的地資料向量中的第二組交替位置中。
在本申請案中,詞語「經配置來」用以意謂設備之元件具有能夠實行所定義操作的組態。在此上下文中,「組態」意謂硬體或軟體之互連的佈置或方式。舉例而言,設備可具有提供所定義操作之專用硬體,或處理器或其他處理裝置可經程式化來執行功能。「經配置來」並不暗示:設備元件需要以任何方式改變以便提供所定義操作。
儘管已在本文中參看隨附圖式詳細地描述了說明性實施例,但應理解,本發明不限於彼等精確實施例,且在不脫離如藉由所附申請專利範圍界定的本發明之範疇及精神之情況下,各種改變、添加及修改可在本發明中藉由熟習此項技術者實現。舉例而言,在不脫離本發明之範疇的情況下,附屬請求項之特徵的各種組合可與獨立請求項之特徵一起進行。
10‧‧‧資料處理設備
12‧‧‧資料處理電路系統
14‧‧‧記憶體
16‧‧‧擷取電路系統
18‧‧‧指令解碼器電路系統
20‧‧‧暫存器
22‧‧‧載入/儲存單元
30‧‧‧源暫存器
32‧‧‧源暫存器
34‧‧‧目的地暫存器
36‧‧‧「運算」(OP)電路系統
38‧‧‧「運算」(OP)電路系統
40‧‧‧「運算」(OP)電路系統/第一源暫存器
42‧‧‧「運算」(OP)電路系統/第二源暫存器
44‧‧‧目的地暫存器
46‧‧‧資料處理運算(「OP」)
48‧‧‧資料處理運算(「OP」)
50‧‧‧資料處理運算(「OP」)
52‧‧‧資料處理運算(「OP」)
60‧‧‧第一源暫存器
62‧‧‧第二源暫存器
64‧‧‧運算電路系統
66‧‧‧運算電路系統
68‧‧‧運算電路系統
70‧‧‧運算電路系統
80‧‧‧源暫存器
82‧‧‧源暫存器
84‧‧‧目的地暫存器
86‧‧‧述詞值
88‧‧‧資料處理電路系統項目
90‧‧‧資料處理電路系統項目
92‧‧‧資料處理電路系統項目
94‧‧‧資料處理電路系統項目
96‧‧‧資料處理電路系統項目
98‧‧‧資料處理電路系統項目
100‧‧‧資料處理電路系統項目
102‧‧‧資料處理電路系統項目
110‧‧‧源暫存器
112‧‧‧源暫存器
114‧‧‧目的地暫存器/資料處理電路系統
116‧‧‧資料處理電路系統
200‧‧‧步驟
202‧‧‧步驟
204‧‧‧步驟
206‧‧‧步驟
208‧‧‧步驟
210‧‧‧步驟
212‧‧‧步驟
220‧‧‧步驟
222‧‧‧步驟
224‧‧‧步驟
226‧‧‧步驟
228‧‧‧步驟
230‧‧‧步驟
232‧‧‧步驟
234‧‧‧步驟
236‧‧‧步驟
700‧‧‧目標程式碼
710‧‧‧模擬器程式
720‧‧‧主機作業系統
730‧‧‧主機處理器/主機電腦
僅藉由實例,將參考如在隨附圖式中說明之當前技術的實施例來進一步描述當前技術,其中:
第1圖示意性地示出可體現當前技術之各種實例的資料處理設備;
第2A圖示意性地示出資料處理電路系統對自兩個源暫存器中之每一者所取得的元素對執行資料處理,且以交插方式將此等元素對寫入至目的地暫存器中;
第2B圖圖示用於第2A圖之實例中的暫存器之元素的示例內容;
第3A圖示意性地示出資料處理電路系統對自第一及第二源暫存器所取得之資料元素對執行資料處理運算且以交插方式將來自每一源暫存器的結果寫入至目的地暫存器中,其中寫入至目的地暫存器中之元素的資料大小可經指定;
第3B圖圖示第3A圖之實例中之元素的示例內容;
第4A圖示意性地示出在源暫存器中之一者亦提供目的地暫存器的實例中之資料處理電路系統;
第4B圖圖示第4A圖之實例中的示例內容;
第5A圖圖示在指令指定用以選擇性地啟用/停用某些處理之述詞(predicate)值的一個實例中之資料處理電路系統及暫存器;
第5B圖給出第5A圖之實例中的暫存器之元素的示例內容及對應述詞值;
第6圖示意性地示出在將要經受資料處理運算之輸入資料項目對係自第一及第二源暫存器之對角鄰近元素取得的一個實例中之資料處理電路系統;
第7圖圖示用於多項式乘法之示例資料處理脈絡(data processing context)的一些定義,其中當前技術之一些指令得以使用;
第8圖圖示第7圖之多項式乘法實例的步進式暫存器內容,其中示例指令序列藉由當前技術提供以實行此多項式乘法;
第9圖為一個實施例之方法中的步驟之序列;
第10圖為在一個實施例之方法中採取的步驟之序列;及
第11圖示意性地示出在一個實施例中的提供模擬器實施方式之系統的組件。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
Claims (22)
- 一種設備,該設備包含: 指令解碼器電路系統,該指令解碼器電路系統用以對指令進行解碼;及資料處理電路系統,該資料處理電路系統用以將藉由該等指令所指定之向量處理運算選擇性地施加至輸入資料向量,該等輸入資料向量在該等輸入資料向量中之相應位置處包含複數個輸入資料項目,其中該指令解碼器電路系統回應於指定一第一源暫存器、一第二源暫存器及一目的地暫存器之一向量交插指令,以產生控制信號來控制該資料處理電路系統實行一向量交插處理以:自該第一源暫存器提取一第一組輸入資料項目;自該第二源暫存器提取一第二組輸入資料項目;對自該第一及第二組輸入資料項目所取得之至少所選擇輸入資料項目對執行一資料處理運算,以產生一組結果資料項目;及將該組結果資料項目作為一結果資料向量儲存於該目的地暫存器中,其中具有一第一源暫存器內容相依性之第一源暫存器相依性結果資料項目儲存於該目的地資料向量中的一第一組交替位置中,且其中具有一第二源暫存器內容相依性之第二源暫存器相依性結果資料項目儲存於該目的地資料向量中的一第二組交替位置中。
- 如請求項1所述之設備,其中自該第一及第二組輸入資料項目所取得之該等所選擇輸入資料項目對包含: 一第一組輸入資料項目對,該第一組輸入資料項目對由該第一源暫存器中之鄰近對的輸入資料項目形成;及一第二組輸入資料項目對,該第二組輸入資料項目對由該第二源暫存器中之鄰近對的輸入資料項目形成。
- 如請求項2所述之設備,其中該目的地資料向量中之該第一組交替位置與該目的地資料向量中的該第二組交替位置交替。
- 如請求項3所述之設備,其中該第一組交替位置為該目的地資料向量中之一偶數數目組之位置,且該第二組交替位置為該目的地資料向量中的一奇數數目組之位置。
- 如請求項3所述之設備,其中該第一組交替位置為該目的地資料向量中之一奇數數目組之位置,且該第二組交替位置為該目的地資料向量中的一偶數數目組之位置。
- 如請求項1所述之設備,其中自該第一及第二組輸入資料項目所取得之該等所選擇輸入資料項目對包含對角線輸入資料項目對,該等對角線輸入資料項目對由與該第二源暫存器中之交替輸入資料項目配對的在該第一源暫存器中之交替輸入資料項目形成。
- 如請求項6所述之設備,其中該等第一源暫存器相依性結果資料項目及該等第二源暫存器相依性結果資料項目為一同一組結果資料項目,且該第一組交替位置及該第二組交替位置為該目的地資料向量中之一同一組交替位置。
- 如請求項6所述之設備,其中該第一組交替位置及該第二組交替位置與一組先前資料項目保留於該目的地資料向量中之另外一組位置交替,其中該組先前資料項目在該資料處理電路系統開始該向量交插處理之前存在於該目的地資料向量中的該另外組位置中。
- 如請求項8所述之設備,其中該第一組位置為該目的地資料向量中之一偶數數目組之位置,且該另外組位置為該目的地資料向量中的一奇數數目組之位置。
- 如請求項8所述之設備,其中該第一組位置為該目的地資料向量中之一奇數數目組之位置,且該另外組位置為該目的地資料向量中的一偶數數目組之位置。
- 如請求項6所述之設備,其中該第一源暫存器中之該等交替輸入資料項目係自該第一源暫存器中的一偶數數目組之位置提取,且該第二源暫存器中之該等交替輸入資料項目係自該第二源暫存器中的一奇數數目組之位置提取。
- 如請求項6所述之設備,其中該第一源暫存器中之該等交替輸入資料項目係自該第一源暫存器中的一奇數數目組之位置提取,且該第二源暫存器中之該等交替輸入資料項目係自該第二源暫存器中的一偶數數目組之位置提取。
- 如請求項1所述之設備,其中該資料處理運算為一算術運算、一邏輯運算或一移位運算。
- 如請求項1所述之設備,其中在該向量交插指令中所指定之該目的地暫存器為該第一源暫存器及該第二源暫存器中的一者。
- 如請求項1所述之設備,其中該向量交插指令進一步指定包含預測位元之一預測值,該等預測位元對應於該等輸入資料向量中之該等相應位置,且該資料處理電路系統進一步回應於該預測值中之一取消設定預測位元以禁止該第一組輸入資料項目及該第二組輸入資料項目中對應於該取消設定預測位元的輸入資料項目涉及於該向量交插處理中。
- 如請求項1所述之設備,其中該向量交插指令進一步指定該第一組輸入資料項目之一第一資料項目大小、該第二組輸入資料項目之一第二資料項目大小,及該組結果資料項目的一結果資料項目大小。
- 如請求項16所述之設備,其中該第一資料項目大小及該第二組輸入資料項目之該第二資料項目大小小於該組結果資料項目的該結果資料項目大小。
- 如請求項16所述之設備,其中該第一資料項目大小及該第二組輸入資料項目之該第二資料項目大小大於該組結果資料項目的該結果資料項目大小。
- 一種操作一資料處理設備之方法,該方法包含以下該等步驟: 對指令進行解碼;將藉由該等指令所指定之向量處理運算選擇性地施加至輸入資料向量,該等輸入資料向量在該等輸入資料向量中之相應位置處包含複數個輸入資料項目;回應於指定該設備之一第一源暫存器、一第二源暫存器及一目的地暫存器的一向量交插指令而產生控制信號來控制該設備之資料處理電路系統實行一向量交插處理,該向量交插處理包含:自該第一源暫存器提取一第一組輸入資料項目;自該第二源暫存器提取一第二組輸入資料項目;對自該第一及第二組輸入資料項目所取得之至少所選擇輸入資料項目對執行一資料處理運算,以產生一組結果資料項目;及將該組結果資料項目作為一結果資料向量儲存於該目的地暫存器中,其中具有一第一源暫存器內容相依性之第一源暫存器相依性結果資料項目儲存於該目的地資料向量中的一第一組交替位置中,且其中具有一第二源暫存器內容相依性之第二源暫存器相依性結果資料項目儲存於該目的地資料向量中的一第二組交替位置中。
- 一種設備,該設備包含: 用於對指令進行解碼之構件;用於將藉由該等指令所指定之向量處理運算選擇性地施加至輸入資料向量的構件,該等輸入資料向量在該等輸入資料向量中之相應位置處包含複數個輸入資料項目;用於回應於指定該設備之一第一源暫存器、一第二源暫存器及一目的地暫存器的一向量交插指令而產生控制信號來控制該設備之資料處理電路系統實行一向量交插處理的構件,該向量交插處理包含:用於自該第一源暫存器提取一第一組輸入資料項目之構件;用於自該第二源暫存器提取一第二組輸入資料項目之構件;用於對自該第一及第二組輸入資料項目所取得之至少所選擇輸入資料項目對執行一資料處理運算以產生一組結果資料項目的構件;及用於將該組結果資料項目作為一結果資料向量儲存於該目的地暫存器中之構件,其中具有一第一源暫存器內容相依性之第一源暫存器相依性結果資料項目儲存於該目的地資料向量中的一第一組交替位置中,且其中具有一第二源暫存器內容相依性之第二源暫存器相依性結果資料項目儲存於該目的地資料向量中的一第二組交替位置中。
- 一種用於控制一主機資料處理設備提供一指令執行環境之電腦程式,該電腦程式包含: 指令解碼程式邏輯,該指令解碼程式邏輯用以對指令進行解碼;及資料處理程式邏輯,該資料處理程式邏輯用以將藉由該等指令所指定之向量處理運算選擇性地施加至輸入資料向量結構,該等輸入資料向量結構在該等輸入資料向量結構中之相應位置處包含複數個輸入資料項目,其中該指令解碼程式邏輯回應於指定一第一源資料結構、一第二源資料結構及一目的地資料結構之一向量交插指令,以產生控制信號來控制該資料處理程式邏輯實行一向量交插處理以:自該第一源資料結構提取一第一組輸入資料項目;自該第二源資料結構提取一第二組輸入資料項目;對自該第一及第二組輸入資料項目所取得之至少所選擇輸入資料項目對執行一資料處理運算,以產生一組結果資料項目;及將該組結果資料項目作為一結果資料向量結構儲存於該目的地資料結構中,其中具有一第一源資料結構內容相依性之第一源資料結構相依性結果資料項目儲存於該目的地資料向量結構中的一第一組交替位置中,且其中具有一第二源資料結構內容相依性之第二源資料結構相依性結果資料項目儲存於該目的地資料向量結構中的一第二組交替位置中。
- 一種電腦可讀取儲存媒體,該電腦可讀取儲存媒體以一非暫時性型式儲存如請求項24所述之電腦程式。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1711707.8A GB2564853B (en) | 2017-07-20 | 2017-07-20 | Vector interleaving in a data processing apparatus |
GB1711707.8 | 2017-07-20 | ||
??1711707.8 | 2017-07-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201917710A true TW201917710A (zh) | 2019-05-01 |
TWI766056B TWI766056B (zh) | 2022-06-01 |
Family
ID=59771758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107122737A TWI766056B (zh) | 2017-07-20 | 2018-07-02 | 用於資料處理的方法、設備、電腦程式及電腦可讀取儲存媒體 |
Country Status (9)
Country | Link |
---|---|
US (1) | US11093243B2 (zh) |
EP (1) | EP3655852B1 (zh) |
JP (1) | JP7186212B2 (zh) |
KR (1) | KR102591988B1 (zh) |
CN (1) | CN110914801B (zh) |
GB (1) | GB2564853B (zh) |
IL (1) | IL271636B2 (zh) |
TW (1) | TWI766056B (zh) |
WO (1) | WO2019016508A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11449336B2 (en) * | 2019-05-24 | 2022-09-20 | Texas Instmments Incorporated | Method of storing register data elements to interleave with data elements of a different register, a processor thereof, and a system thereof |
US20240004648A1 (en) * | 2022-07-02 | 2024-01-04 | Intel Corporation | Vector unpack based on selection information |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7301541B2 (en) * | 1995-08-16 | 2007-11-27 | Microunity Systems Engineering, Inc. | Programmable processor and method with wide operations |
US5845112A (en) * | 1997-03-06 | 1998-12-01 | Samsung Electronics Co., Ltd. | Method for performing dead-zone quantization in a single processor instruction |
US6418529B1 (en) * | 1998-03-31 | 2002-07-09 | Intel Corporation | Apparatus and method for performing intra-add operation |
US6211892B1 (en) * | 1998-03-31 | 2001-04-03 | Intel Corporation | System and method for performing an intra-add operation |
US6115812A (en) * | 1998-04-01 | 2000-09-05 | Intel Corporation | Method and apparatus for efficient vertical SIMD computations |
US6324638B1 (en) * | 1999-03-31 | 2001-11-27 | International Business Machines Corporation | Processor having vector processing capability and method for executing a vector instruction in a processor |
US7624138B2 (en) * | 2001-10-29 | 2009-11-24 | Intel Corporation | Method and apparatus for efficient integer transform |
US20030167460A1 (en) * | 2002-02-26 | 2003-09-04 | Desai Vipul Anil | Processor instruction set simulation power estimation method |
US9146738B2 (en) * | 2002-03-30 | 2015-09-29 | Hewlett-Packard Development Company, L.P. | Interleaving bits of multiple instruction results in a single destination register |
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 |
GB2409065B (en) * | 2003-12-09 | 2006-10-25 | Advanced Risc Mach Ltd | Multiplexing operations in SIMD processing |
US9557994B2 (en) * | 2004-07-13 | 2017-01-31 | Arm Limited | Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number |
US7933405B2 (en) * | 2005-04-08 | 2011-04-26 | Icera Inc. | Data access and permute unit |
US7555514B2 (en) * | 2006-02-13 | 2009-06-30 | Atmel Corportation | Packed add-subtract operation in a microprocessor |
US8255446B2 (en) * | 2006-12-12 | 2012-08-28 | Arm Limited | Apparatus and method for performing rearrangement and arithmetic operations on data |
JP2009048532A (ja) * | 2007-08-22 | 2009-03-05 | Nec Electronics Corp | マイクロプロセッサ |
US8078836B2 (en) * | 2007-12-30 | 2011-12-13 | Intel Corporation | Vector shuffle instructions operating on multiple lanes each having a plurality of data elements using a common set of per-lane control bits |
GB2484654B (en) * | 2010-10-12 | 2013-10-09 | Advanced Risc Mach Ltd | Conditional selection of data elements |
EP3805921B1 (en) * | 2011-04-01 | 2023-09-06 | INTEL Corporation | Vector friendly instruction format and execution thereof |
US9021233B2 (en) * | 2011-09-28 | 2015-04-28 | Arm Limited | Interleaving data accesses issued in response to vector access instructions |
CN103999037B (zh) * | 2011-12-23 | 2020-03-06 | 英特尔公司 | 用于响应于单个指令来执行横向相加或相减的系统、装置和方法 |
US9459865B2 (en) * | 2011-12-23 | 2016-10-04 | Intel Corporation | Systems, apparatuses, and methods for performing a butterfly horizontal and cross add or substract in response to a single instruction |
US9477467B2 (en) * | 2013-03-30 | 2016-10-25 | Intel Corporation | Processors, methods, and systems to implement partial register accesses with masked full register accesses |
US10013253B2 (en) * | 2014-12-23 | 2018-07-03 | Intel Corporation | Method and apparatus for performing a vector bit reversal |
US9785437B2 (en) * | 2014-12-23 | 2017-10-10 | Intel Corporation | Method and apparatus for performing a vector bit reversal and crossing |
US10001995B2 (en) * | 2015-06-02 | 2018-06-19 | Intel Corporation | Packed data alignment plus compute instructions, processors, methods, and systems |
GB2540939B (en) * | 2015-07-31 | 2019-01-23 | Advanced Risc Mach Ltd | An apparatus and method for performing a splice operation |
CN105335247B (zh) * | 2015-09-24 | 2018-04-20 | 中国航天科技集团公司第九研究院第七七一研究所 | 高可靠系统芯片中Cache的容错结构及其容错方法 |
-
2017
- 2017-07-20 GB GB1711707.8A patent/GB2564853B/en active Active
-
2018
- 2018-07-02 JP JP2020501160A patent/JP7186212B2/ja active Active
- 2018-07-02 TW TW107122737A patent/TWI766056B/zh active
- 2018-07-02 IL IL271636A patent/IL271636B2/en unknown
- 2018-07-02 CN CN201880046751.3A patent/CN110914801B/zh active Active
- 2018-07-02 EP EP18739625.4A patent/EP3655852B1/en active Active
- 2018-07-02 WO PCT/GB2018/051854 patent/WO2019016508A1/en unknown
- 2018-07-02 US US16/630,622 patent/US11093243B2/en active Active
- 2018-07-02 KR KR1020207003377A patent/KR102591988B1/ko active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
EP3655852A1 (en) | 2020-05-27 |
WO2019016508A1 (en) | 2019-01-24 |
IL271636A (en) | 2020-02-27 |
KR20200028965A (ko) | 2020-03-17 |
IL271636B1 (en) | 2023-07-01 |
EP3655852B1 (en) | 2023-09-13 |
IL271636B2 (en) | 2023-11-01 |
US20210026629A1 (en) | 2021-01-28 |
JP7186212B2 (ja) | 2022-12-08 |
GB201711707D0 (en) | 2017-09-06 |
GB2564853A (en) | 2019-01-30 |
US11093243B2 (en) | 2021-08-17 |
KR102591988B1 (ko) | 2023-10-20 |
TWI766056B (zh) | 2022-06-01 |
JP2020527797A (ja) | 2020-09-10 |
CN110914801A (zh) | 2020-03-24 |
CN110914801B (zh) | 2023-10-24 |
GB2564853B (en) | 2021-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2020527778A (ja) | レジスタ・ベースの行列乗算 | |
JP7253492B2 (ja) | データ処理装置における乗累算 | |
JP7148526B2 (ja) | データ処理装置におけるベクトルによる要素演算 | |
US11003447B2 (en) | Vector arithmetic and logical instructions performing operations on different first and second data element widths from corresponding first and second vector registers | |
TW201908757A (zh) | 測試向量元素內部的位元值 | |
JP7324754B2 (ja) | ベクトル・キャリー付き加算命令 | |
TWI766056B (zh) | 用於資料處理的方法、設備、電腦程式及電腦可讀取儲存媒體 | |
TWI773783B (zh) | 用於基於暫存器的複數處理的設備、方法、積體電路、電腦程式及電腦可讀取儲存媒體 | |
KR102688393B1 (ko) | 벡터 술어 요약 생성 | |
TW202340947A (zh) | 用於處置儲存在陣列儲存器中之資料元素之技術 | |
WO2023148467A1 (en) | Technique for performing memory access operations | |
TW202340948A (zh) | 用於處置儲存在陣列儲存器中之資料元素之技術 | |
TW202349232A (zh) | 用於執行外積操作之技術 |