TW202403544A - 向量擷取及合併指令 - Google Patents
向量擷取及合併指令 Download PDFInfo
- Publication number
- TW202403544A TW202403544A TW112123363A TW112123363A TW202403544A TW 202403544 A TW202403544 A TW 202403544A TW 112123363 A TW112123363 A TW 112123363A TW 112123363 A TW112123363 A TW 112123363A TW 202403544 A TW202403544 A TW 202403544A
- Authority
- TW
- Taiwan
- Prior art keywords
- register
- vector
- bits
- vector register
- source vector
- Prior art date
Links
- 239000013598 vector Substances 0.000 title claims abstract description 680
- 238000012545 processing Methods 0.000 claims abstract description 316
- 238000000034 method Methods 0.000 claims abstract description 61
- 230000004044 response Effects 0.000 claims abstract description 44
- 241000238876 Acari Species 0.000 claims description 65
- 230000008569 process Effects 0.000 claims description 45
- 238000012546 transfer Methods 0.000 claims description 35
- 230000015654 memory Effects 0.000 claims description 30
- 238000004519 manufacturing process Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 9
- 238000005516 engineering process Methods 0.000 description 27
- 238000013461 design Methods 0.000 description 8
- 230000006399 behavior Effects 0.000 description 5
- 239000004065 semiconductor Substances 0.000 description 5
- 238000012938 design process Methods 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000135 prohibitive effect 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/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/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
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)
Abstract
提供一種設備、方法、及媒體。該設備包含解碼器電路系統,其用以回應於一向量擷取及合併指令而產生控制信號,該向量擷取及合併指令指定一控制參數、一第一向量暫存器、一第二向量暫存器、及一目的地向量暫存器。該設備包含處理電路系統,其回應於該等控制信號而執行複數處理節拍,各節拍包含對應於至少第一向量暫存器及目的地向量暫存器的一部分的處理。針對一第K節拍,該處理包含:從該第一向量暫存器之一第K部分擷取由該控制參數指定的位元,將該等位元與進一步位元串接,並將結果儲存於該目的地暫存器之該第K部分中。對於一第一部分,該等進一步位元係從該第二向量暫存器之一第一部分所擷取,否則係從該第一向量暫存器之一第(K-1)部分所擷取。
Description
本技術係關於一種設備、一種操作一設備之方法、及一種用以儲存用於製造設備之電腦可讀碼的電腦可讀媒體。
一些資料處理系統支援向量指令之處理,其中源運算元或指令之結果值係包含多個部分的向量。藉由回應於單一指令而支援向量之若干相異部分的處理,可改良程式碼密度,且減少指令之提取及解碼的負擔。有時,所欲的是向量指令係在向量之部分彼此相依的情況下執行。
根據一些組態,提供一種設備,其包含:
複數個向量暫存器;
解碼器電路系統,其回應於一向量擷取及合併指令而產生控制信號,該向量擷取及合併指令指定一控制參數,且將一第一源向量暫存器、一第二源向量暫存器、及一目的地向量暫存器指定作為該複數個向量暫存器之指定暫存器;及
處理電路系統,其回應於該等控制信號而執行複數個處理節拍,各節拍包含對應於至少該第一源向量暫存器及該目的地向量暫存器之一部分的組合處理,其中該處理電路系統經組態以設定指示該向量擷取及合併指令之哪些節拍已完成的節拍狀態資訊,並抑制由該節拍狀態資訊指示為已完成的該向量及合併指令之完成的節拍,
其中對應於該等指定暫存器之各者的一第K部分的一第K節拍之該組合處理包含:
從該第一源向量暫存器之該第K部分擷取如由該控制參數指定的位元,將經擷取的該等位元與一或多個進一步位元串接,並將該串接之一結果儲存於該目的地暫存器之該第K部分中;
當該第K部分不是該等指定暫存器之一最後部分時,進位未儲存於該目的地暫存器中的該第一源向量暫存器之該第K部分中之至少一個位元,以在該複數個節拍之一第(K+1)節拍中處理;
對於該等指定暫存器之一第一部分,該一或多個進一步位元係從該第二源向量暫存器之一第一部分所擷取;及
對於除了該等指定暫存器之該第一部分以外的各部分,該一或多個進一步位元係從該第一源向量暫存器之一第(K+1)部分所進位。
根據一些組態,提供一種操作一設備之方法,該設備包含複數個向量暫存器、解碼器電路系統、及處理電路系統,該方法包含:
使用該解碼器電路系統且回應於一向量擷取及合併指令而產生控制信號,該向量擷取及合併指令指定一控制參數,且將一第一源向量暫存器、一第二源向量暫存器、及一目的地向量暫存器指定作為該複數個向量暫存器之指定暫存器;及
使用該處理電路系統且回應於該等控制信號而執行複數個處理節拍,各節拍包含對應於至少該第一源向量暫存器及該目的地向量暫存器之一部分的組合處理,設定指示該向量擷取及合併指令之哪些節拍已完成的節拍狀態資訊,並抑制由該節拍狀態資訊指示為已完成的該向量及合併指令之完成的節拍,
其中對應於該等指定暫存器之各者的一第K部分的一第K節拍之該組合處理包含:
從該第一源向量暫存器之該第K部分擷取由該控制參數指定的位元,將經擷取的該等位元與一或多個進一步位元串接,並將該串接之一結果儲存於該目的地暫存器之該第K部分中;
當該第K部分不是該等指定暫存器之一最後部分時,進位未儲存於該目的地暫存器中的該第一源向量暫存器之該第K部分中之至少一個位元,以在該複數個節拍之一第(K+1)節拍中處理;
對於該等指定暫存器之一第一部分,該一或多個進一步位元係從該第二源向量暫存器之一第一部分所擷取;及
對於除了該等指定暫存器之該第一部分以外的各部分,該一或多個進一步位元係從該第一源向量暫存器之一第(K+1)部分所進位
根據一些組態,提供一種用以儲存用於製造一設備之電腦可讀碼的電腦可讀媒體,該設備包含:
複數個向量暫存器;
解碼器電路系統,其回應於一向量擷取及合併指令而產生控制信號,該向量擷取及合併指令指定一控制參數,且將一第一源向量暫存器、一第二源向量暫存器、及一目的地向量暫存器指定作為該複數個向量暫存器之指定暫存器;及
處理電路系統,其回應於該等控制信號而執行複數個處理節拍,各節拍包含對應於至少該第一源向量暫存器及該目的地向量暫存器之一部分的組合處理,其中該處理電路系統經組態以設定指示該向量擷取及合併指令之哪些節拍已完成的節拍狀態資訊,並抑制由該節拍狀態資訊指示為已完成的該向量及合併指令之完成的節拍,
其中對應於該等指定暫存器之各者的一第K部分的一第K節拍之該組合處理包含:
從該第一源向量暫存器之該第K部分擷取由該控制參數指定的位元,將經擷取的該等位元與一或多個進一步位元串接,並將該串接之一結果儲存於該目的地暫存器之該第K部分中;
當該第K部分不是該等指定暫存器之一最後部分時,進位未儲存於該目的地暫存器中的該第一源向量暫存器之該第K部分中之至少一個位元,以在該複數個節拍之一第(K+1)節拍中處理;
對於該等指定暫存器之一第一部分,該一或多個進一步位元係從該第二源向量暫存器之一第一部分所擷取;及
對於除了該等指定暫存器之該第一部分以外的各部分,該一或多個進一步位元係從該第一源向量暫存器之一第(K+1)部分所進位。
在一些組態中,該電腦可讀媒體是一非暫時性電腦可讀媒體。
根據一些組態,提供一種電腦程式,其用於控制一主機資料處理設備以提供一指令執行環境,該電腦程式包含:
暫存器邏輯,其包含複數個向量暫存器;
解碼器邏輯,其回應於一向量擷取及合併指令而產生控制信號,該向量擷取及合併指令指定一控制參數,且將一第一源向量暫存器、一第二源向量暫存器、及一目的地向量暫存器指定作為該複數個向量暫存器之指定暫存器;及
處理邏輯,其回應於該等控制信號而執行複數個處理節拍,各節拍包含對應於至少該第一源向量暫存器及該目的地向量暫存器之一部分的組合處理,其中該處理邏輯經組態以設定指示該向量擷取及合併指令之哪些節拍已完成的節拍狀態資訊,並抑制由該節拍狀態資訊指示為已完成的該向量及合併指令之完成的節拍,
其中對應於該等指定暫存器之各者的一第K部分的一第K節拍之該組合處理包含:
從該第一源向量暫存器之該第K部分擷取由該控制參數指定的位元,將經擷取的該等位元與一或多個進一步位元串接,並將該串接之一結果儲存於該目的地暫存器之該第K部分中;
當該第K部分不是該等指定暫存器之一最後部分時,進位未儲存於該目的地暫存器中的該第一源向量暫存器之該第K部分中之至少一個位元,以在該複數個節拍之一第(K+1)節拍中處理;
對於該等指定暫存器之一第一部分,該一或多個進一步位元係從該第二源向量暫存器之一第一部分所擷取;及
對於除了該等指定暫存器之該第一部分以外的各部分,該一或多個進一步位元係從該第一源向量暫存器之一第(K+1)部分所進位。
在一些組態中,該電腦程式係紀錄於一非暫時性電腦可讀媒體上。
根據一給定指令集架構編寫的軟體可在具有不同硬體實施方案的一系列不同資料處理設備上執行。只要一給定指令集在執行時給出該架構所預期的結果,則具體實施方案得以自由地使用可達成符合此架構的任何方式來變化其微結構設計。例如,對於一些應用而言,能源效率可能比效能更重要,且因此經提供用於執行來自指令集架構的指令的處理電路系統之微架構設計可經設計以即使在犧牲效能的情況下亦盡可能消耗最少能源。其他應用可能將效能視為比能源效率更重要的標準,且因此可包括更複雜的硬體結構,其實現較大的指令通量,但其可能消耗更多功率。因此,可係所欲的是設計指令集架構,使得其支援橫跨一系列不同能源或效能點的擴縮。
在一些組態中,提供一種設備,其包含:複數個向量暫存器;及解碼器電路系統,其回應於一向量擷取及合併指令而產生控制信號。該向量擷取及合併指令指定一控制參數,且將一第一源向量暫存器、一第二源向量暫存器、及一目的地向量暫存器指定作為該複數個向量暫存器之指定暫存器。該設備亦包含處理電路系統,其回應於該等控制信號而執行複數個處理節拍。各節拍包含對應於至少該第一源向量暫存器及該目的地向量暫存器之一部分的組合處理。該處理電路系統經組態以設定指示該向量擷取及合併指令之哪些節拍已完成的節拍狀態資訊,並抑制由該節拍狀態資訊指示為已完成的該向量及合併指令之完成的節拍。對應於該等指定暫存器之各者的一第K部分的一第K節拍之該組合處理包含:從該第一源向量暫存器之該第K部分擷取如由該控制參數指定的位元,將經擷取的該等位元與一或多個進一步位元串接,並將該串接之一結果儲存於該目的地暫存器之該第K部分中。該第K部分之該組合處理包含:當該第K部分不是該等指定暫存器之一最後部分時,進位未儲存於該目的地暫存器中的該第一源向量暫存器之該第K部分中之至少一個位元,以在該複數個節拍之一第(K+1)節拍中處理。對於該等指定暫存器之一第一部分,該一或多個進一步位元係從該第二源向量暫存器之一第一部分所擷取,且對於除了該等指定暫存器之該第一部分以外的各部分,該一或多個進一步位元係從該第一源向量暫存器之一第(K+1)部分所進位。
此配置實現支援向量指令的一微架構,以更有效率地擴縮至不同效能及能源點。藉由提供追蹤二或更多個向量指令之完成節拍的節拍狀態資訊,此給予特定微架構實施方案的自由度,以變化不同向量指令之執行所重疊的量,使得可行的是不同向量指令之各別節拍彼此平行地執行,同時仍追蹤各部分執行指令的進度。一些微架構實施方案可選擇完全不重疊各別向量指令之執行,使得一個向量指令之所有節拍在下一指令開始之前完成。其他微架構可交錯連續向量指令之執行,使得第二向量指令之節拍的第一子集係與來自第一向量指令之節拍的第二子集平行地執行。
向量擷取及合併指令係藉由解碼器電路系統解譯的一指令集架構之指令。指令集架構形成可由程式設計人員或編譯器使用的完整指令集,以指示處理電路系統執行操作。如所討論,只要處理電路系統符合指令集架構,則微架構之實際實施方案(亦即,構成處理電路系統的電路及邏輯區塊之實體配置)可隨實施方案而變化。一些微架構實施方案可平行地處理向量之部分之所有者,而其他實施方案可一次處理向量之一或多個部分。一些向量指令可自身充分地適用於此彈性。例如,支援二個源向量之複數個元素的逐元素相加的向量指令可分成各自對應於向量之一元素的複數純量相加。然而,資料在不同元素之間或不同部分之間傳播的指令(其可包含向量之複數元素)(亦即,不同部分彼此相依的指令)可能無法輕易地調適成微架構實施方案之此彈性。
向量擷取及合併指令係一個此類指令。在向量擷取及合併指令中,來自第一源向量暫存器的一或多個位元與來自第二源向量暫存器的一或多個位元串接。本發明人已了解,可藉由提供處理電路系統來實施提供此微架構彈性的一向量擷取及合併指令,該處理電路系統經配置以使用平行或交錯的方式處理一或多個節拍(其對應於各指定向量暫存器之一或多個部分)且在處理節拍之間進位至少一個位元(亦即,從一部分至另一部分)。因此,處理電路系統不將各節拍視為真正獨立於各其他節拍。替代地,特定資訊可從一個經處理節拍傳播至另一經處理節拍。具體而言,向量擷取及合併指令將一控制參數及複數個向量暫存器指定作為輸入。該複數個向量暫存器包括一第一源向量暫存器、一第二源向量暫存器、及一目的地向量暫存器。該控制參數指示在各處理節拍期間從該第一源向量暫存器待擷取的一位元數目,且可在指令中經明確地指定為傳遞至解碼器電路系統的一參數,或可在指令中經隱含地指示為具有一固定值。例如,指令集架構可定義一或多個向量擷取及合併指令,其之各者隱含地定義一固定控制參數。控制參數可係一指示值,且因此可間接指定待擷取的該位元數目。
以此方式定義的組合處理導致來自第一節拍(第一部分)的位元傳播,其中第二源向量暫存器之一或多個進一步位元與從第一源向量暫存器擷取的一或多個位元(如由控制參數指定)串接。來自第一節拍(K=1)之第一源向量暫存器的位元接著經進位(傳播)至第二節拍(K=2),且在後續節拍中於處理後續節拍的時間下與第一源向量暫存器之一或多個位元串接。接著,藉由將第K節拍之一或多個位元進位至第(K+1)節拍來重複該程序。該進位係在當第K部分並非指定暫存器之該最後部分時產生。在一些組態中,指定向量暫存器之該最後部分不產生進位。在一些替代組態中,產生第一源向量暫存器之該最後部分之至少一個位元的進位。將理解,節拍的排序可獨立於向量暫存器內的位元的排序。在一個組態中,第一節拍(K=1)可對應於向量暫存器之最低有效位元集合,且該最後節拍可對應於向量暫存器之最高有效位元集合。然而,在一些替代性組態中,第一節拍(K=1)可對應於向量暫存器之最高有效位元集合,且該最後節拍可對應於向量暫存器之最低有效位元集合。
以此方式,該設備提供處理電路系統,該處理電路實現微架構實施方案可針對其變化的一向量擷取及合併指令,同時仍允許符合指令集架構,從而導致可基於功率限制及電路大小需求而調適的一彈性實施方案。
在一些組態中,該解碼器電路系統係回應於指定一純量暫存器的該向量擷取及合併指令;該複數個節拍包含目前執行的一或多個節拍之一子集,其中目前執行的節拍之該子集排除完成的節拍;且該處理電路系統回應於該等控制信號而將至少一個進位資料項儲存於該純量暫存器中,該至少一個進位資料項包含在目前執行的一或多個節拍之該子集與該複數個節拍之一或多個節拍的一進一步子集之間待進位的一或多個位元。目前執行的節拍之該子集包含該複數個節拍之一或多個節拍,且排除該複數個節拍之至少一個節拍之一進一步子集。在此類組態中,該純量暫存器用以在目前執行的節拍之該子集與一或多個節拍之該一或多個進一步子集之間進位該至少一個進位資料項。該純量暫存器可經明確地指定為複數個純量暫存器之一者,例如,指定為該向量擷取及合併指令中的一參數。替代地,該處理電路系統可包含經隱含地定義於該向量擷取及合併指令中的特定進位暫存器。
該進位暫存器可用以將該進位資料傳播至目前執行的節拍之該子集中,或傳播離開目前執行的節拍之該一個子集。在一些組態中,針對目前執行的一或多個節拍之該集合的一第一節拍,且在執行該向量擷取及合併指令之前該節拍狀態資訊指示該至少一個節拍待抑制時,該處理電路系統回應於該等控制信號而從該純量暫存器取得該一或多個進一步位元。一或多個處理節拍之該等子集係以將一或多個資訊位元從節拍之一第一子集傳播至節拍之一下一子集的順序來執行。在執行期間,該處理電路系統讀取該控制資訊以判定哪些節拍包含目前執行的一或多個節拍之該子集之該第一節拍。當一或多個處理節拍先前已執行時,該控制資訊指示此等一或多個節拍待抑制。因此,該處理電路系統能夠推斷進位資料在該純量暫存器中係可用的,並從該向量暫存器中的該進位資料擷取該一或多個進一步位元。
包含在該進位資料中的資料可採用各種形式。在一些組態中,待進位的該一或多個位元包含該第一源向量暫存器之一部分的所有位元;且從該純量暫存器取得該一或多個進一步位元包含從該純量暫存器取得一最後位元子集。因此,無論是從該純量暫存器或從該第二源向量暫存器進行擷取,該一或多個進一步位元的擷取皆遵循相同的模式,這導致一較簡單的實施方案,從而導致一簡化的實施方案。在一些組態中,待進位的該一或多個位元包含來自儲存至該純量暫存器中之暫時的位元定位之一集合的該第一源向量暫存器之一部分的M個位元之一最後集合;且從該純量暫存器取得該一或多個進一步位元包含從該純量暫存器之暫時的位元定位之該集合取得位元。因此,較少位元需要在該純量暫存器中進位。在一些組態中,該最後位元子集係一最高有效位元子集,其導致資料從一第(K-1)部分之一最高有效位元傳播至向量暫存器之一第K部分。在替代實施方案中,資料可在相反方向上傳播,且在此類組態中,該最後位元子集係一最低有效位元子集。
在一些組態中,串接經擷取的該等位元包含將經擷取的該等位元儲存於該目的地暫存器之該第K部分的連續的位元定位之一第一集合中,且將該一或多個進一步位元儲存於該目的地暫存器之該第K部分的連續的位元定位之一第二集合中。在一些組態中,位元定位之該第一子集與位元定位之該第二子集的聯集包含該目的地暫存器之該第K部分的所有位元定位。在一些組態中,連續的位元定位之該第一集合及連續的位元定位之該第二集合係非重疊的位元定位。因此,該目的地暫存器之第K部分中的所有位元定位係定義為該一或多個進一步位元之一者或經擷取的該等位元之一者。
連續的位元定位之該第一集合及位元定位之該第二集合的排序可取決於實施方案。在一些組態中,連續的位元定位之該第一集合係該目的地暫存器之該第K部分的位元定位之一最高有效集合,且連續的位元定位之該第二集合係該目的地暫存器之該第K部分的位元定位之一最低有效集合。替代地,該等指定向量之處理的順序可反轉。因此,在一些組態中,連續的位元定位之該第一集合係該目的地暫存器之該第K部分的位元定位之一最低有效集合,且連續的位元定位之該第二集合係該目的地暫存器之該第K部分的位元定位之一最高有效集合。
在一些組態中,經擷取的該等位元係從該第一源向量暫存器之該第K部分的連續的位元定位所擷取。連續的該等位元定位係由該控制參數所指定,且可例如基於第一位元定位及第二位元定位、或基於第一位元定位及待擷取的一位元數目而定義。
在一些組態中,連續的該等位元定位係該第一源向量暫存器之該第K部分的連續的位元定位之一最低有效集合。在此類組態中,該控制參數僅需要指定待擷取的連續的一位元定位數目。待擷取的連續的該位元定位數目可經指定為一立即值,或經包含在向量擷取及合併指令中指定的一暫存器內。在替代組態中,連續的該等位元定位係該第一源向量暫存器之該第K部分的連續的位元定位之一最高有效集合。在一些組態中,可僅支援可行的待擷取的連續的該位元定位數目之子集。例如,一些組態可僅支援長度為8、16、或24位元的連續位元定位。因此,在此類組態中,該控制參數可藉由選擇所支援長度之一者而間接指定待擷取的連續的該位元定位數目。此類組態減少表示該控制參數所需的位元數目。
在一些組態中,該等指定暫存器之各者的各部分係一N位元部分;該控制參數指示指定一位元數目的一移位距離M;該一或多個進一步位元包含M個位元;且來自該第一源向量暫存器之該第K部分的經擷取的該等位元包含N減M個位元。因此,該向量擷取及合併指令將來自該第二源向量暫存器之該第一部分的M個位元與該第一源向量暫存器之該第一部分的N減M個位元組合,以形成該目的地暫存器之第一部分。此外,該向量擷取及合併指令將來自該第一源向量暫存器之第(K-1)部分的M個位元與該第一源向量暫存器之第K部分的N減M個位元組合。換言之,該第一源向量暫存器之各部分的M個位元經移位以儲存於該目的地向量暫存器之下一部分中。
對於該等指定暫存器之該第一部分,可以各種方式選擇該一或多個進一步元素。在一些組態中,各N位元部分經劃分成複數個元素;該移位距離對應於元素之一整數數目;且對於該等指定暫存器之該第一部分,該一或多個進一步位元包含該第二源向量暫存器之該第一部分之一最高有效元素子集。因此,該移位及合併指令採用與該第一源向量暫存器之位元串接的該第二源向量暫存器之該最高有效子集,以產生所得的向量暫存器。
替代地,在一些組態中,各N位元部分經劃分成複數個元素;該移位距離對應於元素之一整數數目;且對於該等指定暫存器之該第一部分,該一或多個進一步位元包含排除一最低有效元素的該第二源向量暫存器之該第一部分之一最低有效元素子集。存在一些使用情況,其中可係有利的是重複地施加該向量擷取及合併指令以依序地產生經移位一位元數目(或一元素數目)的移位向量。例如,當實施一有限脈衝回應濾波器時,可能需要依序地產生從該序列中的一先前向量經移位單一元素的向量。該向量擷取及合併指令允許一系列移位向量藉由採用一初始向量(例如,該第二源向量暫存器)並產生經移位一個元素的一系列向量而產生。在此類情況下,可使用一先前目的地暫存器作為第二源向量暫存器,而非保留第一源向量暫存器及第二源向量暫存器。在此情況下,待包含在該一或多個進一步位元中的必要位元之位置已遠離該最高有效位元而經移位一或多個位元定位。因此,在該指定暫存器之該第一部分的情況下,藉由將排除一最低有效元素的一最低有效元素子集選擇為該一或多個進一步位元,該向量擷取及合併指令可針對該第二源向量暫存器包含一前述向量擷取及合併指令之結果的情況來調適。在一些組態中,元素寬度可由該向量擷取及合併指令之寬度參數來控制。在一些組態中,控制參數可指示要擷取哪些位元、及元素寬度兩者。在此類組態中,在僅支援有限數目之元素寬度與待從其擷取的位元之數目及定位之組合的情況下,減少編碼參數所需的位元數目。
在一些組態中,目的地向量暫存器係第二源向量暫存器,而非為針對第一源向量暫存器、第二源向量暫存器、及目的地向量暫存器之各者分別指定向量暫存器。重新利用第二源向量暫存器作為目的地暫存器減少暫存器需求,並減少向量擷取及合併指令所需的編碼空間。
如所討論,向量擷取及合併指令可使用能夠在一給定循環中執行複數個處理節拍之一或多者的硬體來彈性地實施。在一些組態中,該處理電路系統經組態以平行地處理該複數個節拍之至少兩者。提供此處理電路系統的硬體可僅足以處理該至少兩個節拍,且該處理電路系統可經組態以處理相鄰指令之節拍,其平行於處理該複數個節拍之該至少兩者。替代地,該處理電路系統可足以平行地處理該複數個節拍之所有節拍。
在一些組態中,該處理電路系統包含不足以用於平行地執行該給定向量指令之該複數個節拍之所有者的硬體。因此,該處理電路系統可在完成一給定向量指令之節拍的第一子集之後執行第二子集。取決於處理器實施方案,第一子集及第二子集可包含單一節拍,或可包含多個節拍。
在一些組態中,該處理電路系統經組態以平行地處理該給定向量指令之該複數個節拍之所有者。具有此硬體的處理電路系統仍可產生並使用如上文所指定的節拍狀態資訊,但節拍狀態資訊通常將指示不存在完成的節拍。因此,藉由定義節拍狀態資訊,架構可支援一系列不同實施方案。
在一些組態中,該解碼器電路系統回應於在程式計數器順序中相鄰於該向量擷取及合併指令的一記憶體資料傳輸指令而產生資料傳輸控制信號,該記憶體資料傳輸指令指定一記憶體位址及該複數個向量暫存器之一傳輸暫存器;該設備進一步包含資料控制電路系統,其回應於該等資料傳輸控制信號而執行複數個記憶體資料傳輸處理節拍,各節拍包含執行至該傳輸暫存器之一對應部分的資料傳輸,並設定指示該資料傳輸指令之哪些節拍已完成的節拍狀態資訊,並抑制由該節拍狀態資訊指示為已完成的該記憶體資料傳輸指令之完成的節拍;且該設備經組態以在該傳輸暫存器係該等指定暫存器之一者時執行對應於該傳輸暫存器之部分之一第一子集的該複數個記憶體資料傳輸處理節拍之一第一子集,其平行於該處理電路系統回應於該向量擷取及合併指令而執行對應於該傳輸暫存器之部分之一第二子集的該複數個處理節拍之一第二子集。節拍之該第一子集及節拍之該第二拍子集可各自包含相同數目之節拍,或不同數目之節拍。例如,在一些組態中,該設備可具備足以針對複數部分(對應於複數資料傳輸處理節拍)執行一記憶體資料傳輸操作的硬體,但僅具有足以針對該向量擷取及合併指令執行單一處理節拍的硬體。替代地,該設備可具備針對該等部分之一半執行記憶體資料傳輸操作的足夠硬體,且具有足以針對向量長度之該等部分之一半執行針對該向量擷取及合併指令之處理節拍的硬體。在此等情形之各者中,用於複數個處理節拍之第一子集與複數個處理節拍之第二子集之間的資料及硬體不存在重疊。因此,可藉由提供能夠平行化節拍之第一子集合及節拍之第二子集的處理設備而達成較大的指令通量。
在一些組態中,該控制參數在該向量擷取及合併指令中經指定為一立即值。在一些替代組態中,該控制參數可指定為該控制參數經定義的暫存器。
在一些組態中,該等指定暫存器之該第一部分係該等指定暫存器之一最低有效部分,且該等指定暫存器之該最後部分係該等指定暫存器之一最高有效部分。在替代組態中,該等指定暫存器之該第一部分係該等指定暫存器之一最高有效部分,且該等指定暫存器之該最後部分係該等指定暫存器之一最低有效部分。以此方式,處理設備可具備電路系統,該電路系統藉由將從第二源向量暫存器擷取的一或多個進一步位元從最低有效端或最高有效端移位至目的地暫存器中而執行向量擷取及合併指令。
本文所描述之概念可體現於用於製造體現所描述之概念的設備的電腦可讀碼中。例如,電腦可讀碼可在半導體設計及製造程序之一或多個階段中使用,該半導體設計及製造程序包括電子設計自動化(electronic design automation, EDA)階段,以製造一積體電路,其包含實現概念之設備。上述電腦可讀碼可另外或替代地促成實現本文所述之概念之設備的定義、模型化、模擬、驗證及/或測試。
例如,用於製造實現本文所述之概念的設備之電腦可讀碼可以定義代表該等概念之硬體描述語言(HDL)的碼實施。例如,碼可定義用於定義實現概念的設備之一或多個邏輯電路的暫存器轉移層(register-transfer-level, RTL)抽象概念。碼可定義代表一或多個邏輯電路的HDL,其以Verilog、System Verilog、Chisel或VHDL(超高速積體電路硬體描述語言)以及諸如FIRRTL的中間表示實現設備。電腦可讀碼可使用系統級模型化語言提供實現概念之定義,諸如系統C及系統Verilog或可藉由電腦解譯以促成概念的模擬、功能及/或正式驗證及測試之概念的其他行為表示。
另外或替代地,電腦可讀碼可定義實現本文所描述之概念的積體電路組件的低階描述,諸如一或多個接線對照表或積體電路佈局定義,包括諸如GDSII之表示。積體電路組件之一或多個接線對照表或其他電腦可讀表示可藉由施加一或多個邏輯合成程序至RTL表示以產生用於製造實現本發明之設備的定義來產生。替代地或額外地,一或多個邏輯合成程序可從電腦可讀碼產生一位元流,該位元流被載入至一場可程式化閘陣列(FPGA)中以組態FPGA以實現所描述之概念。FPGA可部署用於積體電路中之製造之前的驗證及測試概念的目的,或FPGA可直接部署於產品中。
電腦可讀碼可包含用於製造設備之碼表示之混合,例如包括RTL表示、接線對照表表示、或用於半導體設計及製造程序以製造實現本發明之設備的另一電腦可讀定義之一或多者之混合。替代地或額外地,概念可定義在半導體設計及製造程序中使用以製造設備之電腦可讀定義與一旦製造由所定義設備執行的電腦可讀碼定義指令的組合。
此類電腦可讀碼可設置於任何已知暫時性電腦可讀媒體(諸如,網路上之有線或無線傳輸碼)或非暫時性電腦可讀媒體(諸如,半導體、磁碟或光碟)中。使用電腦可讀碼製造的積體電路可包含組件,諸如中央處理單元、圖形處理單元、神經處理單元、數位信號處理器或單獨或共同實現概念的其他組件之一或多者。
現將參考附圖描述本發明之特定組態。
圖1示意地繪示支援向量指令之處理之資料處理設備2的一實例。將理解,此係易於解釋之簡化圖,且實際上,設備可具有圖1中為了簡潔而未圖示的許多元件。設備2包含用於回應於由指令解碼器6解碼的指令而實行資料處理的處理電路系統4。程式指令經提取自記憶體系統8並由指令解碼器予以解碼以產生控制信號,該等控制信號控制處理電路系統4以按架構所定義的方式處理指令。例如,解碼器6可解譯經解碼指令之運算碼及該等指令之任何額外控制欄位以產生控制信號,該等控制信號致使處理電路系統4啟動適當的硬體單元以執行作業,諸如算術運算、載入/儲存作業、或邏輯運算。該設備具有一組暫存器10,其用於儲存待由處理電路系統4處理的資料值及用於組態該處理電路系統之操作的控制資訊。回應於算術或邏輯指令,處理電路系統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之處理的若干控制暫存器。例如,此等可包括:程式計數器暫存器16,其用於儲存指示對應於正處理之目前執行點的指令之位址的一程式計數器位址;鏈路暫存器18,其用於儲存在處置一函數調用之後待將處理導向至其的一返回位址;堆疊指標暫存器20,其指示在記憶體系統8內的一堆疊資料結構之位置;及節拍狀態暫存器22,其用於儲存節拍狀態資訊,其將在下文更詳細地描述。將理解,此等僅係可儲存之控制資訊類型中之一些者,且實際上,架構之一給定指令集可儲存如由該架構所定義的許多其他控制參數。例如,控制暫存器可指定向量暫存器的整體寬度,或可指定用於向量處理之一給定情況的目前資料元素大小。
處理電路系統4可包括用於處理不同級別指令的若干相異硬體區塊。例如,與記憶體系統8互動的載入/儲存指令可由一專用的載入/儲存單元處理,而算術或邏輯指令可由一算術邏輯單元(ALU)處理。ALU本身可進一步分割成一乘法累加單元(MAC)及一進一步單元,該乘法累加單元用於執行涉及乘法的運算,該進一步的單元用於處理其他種類的ALU運算。亦可提供一浮點單元,其用於處置浮點指令。與向量指令相比,不涉及任何向量處理之純粹的純量指令亦可由一分開的硬體區塊處置,或重複使用相同的硬體區塊。
在一些應用(諸如數位信號處理(DSP))中,可有數目大略相等的ALU及載入/儲存指令,且因此一些大區塊(諸如MAC)可保持閒置持續顯著時間量。此無效率在向量架構上可惡化,因為執行資源係隨向量通道的數目擴縮以達成較高效能。在較小處理器(例如單一週期/指令發送(single issue)、循序(in-order)的核心)上,完全橫向擴展之向量管線的面積附加負擔可係禁止的。一種最小化面積衝擊同時更好地使用可用執行資源的方法係使指令之執行重疊,如圖2所示者。在此實例中,三個向量指令包括載入指令VLDR、乘法指令VMUL、及移位指令VSHR,且即使所有這些指令之間存在資料相依性,其等仍可同時執行。此係因為VMUL的元件1僅相依於Q1的元件1,而非Q1暫存器的整體,所以執行VMUL可在完成執行VLDR之前開始。藉由允許指令重疊,昂貴的區塊(如乘法器)可有更多時間保持作用中。
因此,可係所欲的是致能微架構實施方案以使向量指令的執行重疊。然而,若架構假設有固定量的指令重疊,則雖然此在微架構實施方案實際上匹配架構所假設的重疊指令量時可提供高效率,若擴縮至使用不同重疊或完全不重疊的不同微架構則會導致問題。
替代地,架構可支援如圖3之實例所示的一系列不同重疊。向量指令的執行係劃分成稱為「節拍」的部分,其中各節拍對應於具有預定大小之一部分向量的處理。節拍係向量指令的原子部分,其不是被完全執行,便是完全不執行,且無法被部分地執行。一個節拍中所處理之向量部分的大小係由架構所定義,並可係向量的任意分額。在圖3之實例中,一節拍係定義為處理對應於向量寬度的四分之一,使得每一向量指令有四個節拍。清楚地,此僅係一個實例,且其他架構可使用不同的節拍數(例如,二或八)。對應於一個節拍之向量部分的大小可係相同於、大於、或小於經處理之向量的資料元素大小。因此,即使元素大小隨實施方案而變化或在不同指令之間的運行時間下而變化,節拍仍係向量處理之某一固定寬度。若一個節拍中所處理的向量部分包括多個資料元素,則在各別元素之間的邊界處可停用進位信號以確保獨立地處理各元素。若一個節拍中所處理的向量部分對應於元素之僅一部分,且硬體不足以平行地計算若干節拍,則一個處理節拍期間所產生之進位輸出可作為進位輸入而輸入至接續的處理節拍,使得兩個節拍的結果共同形成資料元素。
如圖3所示,處理電路4之不同的微架構實施方案在抽象架構時脈的一個「滴答(tick)」中可執行不同的節拍數。此處,「滴答」對應於架構狀態前進的單位(例如,在簡單架構上,各滴答可對應於更新所有與執行指令相關聯之架構狀態的情況,包括更新程式計數器以指向下一指令)。所屬技術領域中具有通常知識者將理解,已知的微架構技術(諸如管道化)可意指單一滴答可需要多個時脈循環以在硬體層級下執行,且實際上硬體層級下的單一時脈循環可處理多個指令的多個部分。然而,此微架構技術對於軟體係不可見的,因為滴答在架構層級下係原子的。為了簡潔起見,在本揭露的進一步描述期間忽略微架構。
如圖3之下部實例所示,一些實施方案可藉由提供用於在一個滴答內平行地處理所有節拍之足夠的硬體資源而將一向量指令的所有四個節拍排程在相同滴答中。此可適於較高效能的實施方案。在此情況下,架構層級下不需要指令之間的任何重疊,因為整個指令可在一個滴答中完成。
另一方面,更具面積效率的實施方案可提供每一滴答僅可處理兩個節拍之較窄的處理單元,且如圖3之中間實例所示,指令執行可與與第一指令之第三或第四節拍平行地實行之第二向量指令的第一節拍及第二節拍重疊,其中彼等指令係在處理電路系統內於不同執行單元上執行(例如,在圖3中,第一指令係使用載入/儲存單元執行的載入指令,且第二指令係使用MAC執行的乘法累加指令)。
又有更具能源/面積效率的實施方案可提供較窄的硬體單元,且一次僅可處理單一節拍,且在此情況下,每一滴答可處理一個節拍,其中指令執行如圖3之頂部實例所示般重疊並交錯一個節拍(此係與以上圖2所示之實例相同)。
將理解,圖3所示之重疊僅係一些實例,且其他實施方案亦係可行的。例如,處理電路系統4的一些實施方案可支援多個指令在相同滴答中平行地雙發,使得有較大的指令流通量。在此情況下,在一個循環中共同開始的二或更多個向量指令可具有與在下一循環中開始之二或更多個向量指令重疊的一些節拍。
除了隨實施方案而變化重疊量以擴縮至不同的效能點以外,向量指令之間的重疊量亦可在一程式內之向量指令的不同執行情況之間的運行時間下改變。因此,處理電路系統4可具備如圖1所示之節拍控制電路系統30,其用於控制相對於先前指令執行一給定指令的時序。此給予微架構在某些更難以實施的邊角情況下或依據指令可用的資源選擇不重疊指令的自由度。例如,若有需要相同資源之給定類型(例如,乘法累加)的背對背指令且所有可用的MAC或ALU資源均已由另一指令使用,則可沒有足夠的自由資源開始執行下一指令,且因此,比起重疊,第二指令的發出可等待至完成第一者為止。
雖然允許一系列不同執行向量指令可允許橫跨一系列效能點更有效率地使用硬體資源,但其對於例外、或除錯事件、或觸發目前執行緒之暫停的其他事件的處置可導致一些複雜性。例如,在圖2所示之實例中,若在第四滴答上發生例外,則暫存器檔案會含有來自若干指令的部分更新。一種處置此的方式會係將部分更新視為在若發生例外時可復原的推測狀態,但此可增加所需的硬體量,因為其可能必須緩衝用於將資料向外儲存至記憶體系統8的儲存請求直到其等被撥出為止,且必須在硬體中提供額外暫存器以用於追蹤推測狀態。另一方法會係完全停用在一向量指令中途所採用的例外,並延遲採用該例外直到最早的未完成指令已完成為止,但增加例外處置潛時可係非所欲的,且在例外係一精確錯誤的情況下此行為可能破壞與該錯誤相關聯的架構保證。
替代地,如圖4所示,節拍狀態暫存器22可用以記錄一節拍狀態值,該節拍狀態值追蹤哪些相鄰指令群組的節拍在例外、除錯事件、或導致目前緒之暫停的其他事件之時間點下已完成。藉由將執行的重疊本質曝露至架構,此可幫助減少微架構複雜性並增加功率及面積效率。
在圖4之實例中,節拍狀態資訊追蹤三個向量指令A、B、C之群組的完成節拍,其中指令A對應於最早的未完成向量指令,指令B係在指令A之後的下一向量指令,且指令C係在指令B之後的下一向量指令。符號Ax係指指令A的第x節拍,其中對於4個節拍向量實施方案而言,x係介於1與4之間,例如A2係指令A的第二節拍。雖然圖4顯示使用節拍狀態資訊追蹤三個指令的實例,但在允許更大數目之指令在一給定點下部分完成的其他實例中,節拍狀態資訊可追蹤更大數目之指令。例如,若支援雙發,則可係所欲的是指示多於3個指令的節拍進度。節拍狀態欄位之各值經分配至完成節拍之給定組合。例如,節拍狀態值0011指示指令A的第一節拍及第二節拍以及指令B的第一節拍完成。節拍狀態資訊之具體編碼值至各別指令群組之具體節拍集合的具體映射係任意的,且可變化。在此實例中,節拍狀態值0000指示不存在未完成指令,且因此沒有未完成指令的完成節拍。此可在例如當處理器已執行一純量指令時發生。
圖5顯示在暫停目前執行緒之時間點下記錄的節拍狀態資訊之一些實例。在圖5之頂部實例中,使用每一滴答一個節拍來執行向量指令,且在第四滴答上發生一除錯事件或例外。因此,在此點處,指令A的前三個節拍、指令B的前兩個節拍、及指令C的第一節拍已完成,但節拍A4、B3、C2、D1仍待執行。因此,節拍狀態資訊將具有值0111,其根據圖4之實例指示節拍A1、A2、A3、B1、B2、及C1已完成。
類似地,在圖5之實例的底部中,正執行的指令係使得指令B及C無法重疊(例如,因為其等需要使用相同硬體單元),且因此這次在除錯事件或例外的時間當下,指令C及D尚未開始。這次發生在滴答四的例外將觸發節拍狀態資訊0110的記錄,該節拍狀態資訊指示節拍A1、A2、A3、B1、及B2已完成,但C1則否。
類似地,使用圖3之每一滴答兩個節拍的實例,若例外發生在滴答2上,則將僅有節拍A1及A2已完成,且節拍狀態值將係0010。應注意,雖然節拍狀態資訊的值0001及0010指示在例外的時間當下僅有一個指令A部分完成,但節拍狀態資訊仍指示多個指令群組的哪些節拍已完成,因為其識別下兩個指令B、C的節拍皆尚未完成。
使用圖3之每一滴答四個節拍的實例,無論例外係發生在何時,節拍狀態值將係0000,因為在例外的時間當下將不存在部分完成的指令,這係由於各指令會在一個滴答內完成。
當一除錯事件或例外發生時,將返回位址設定成程式計數器16的目前值,其表示最早的未完成指令之位址。因此,在圖5之實例兩者中,返回位址將係設定成指令A之位址。返回位址可儲存在各種地方,包括相對於堆疊指標暫存器之值的一堆疊上的位置處,或在一返回位址暫存器中。
如圖6所示,此使處理器能夠回應於一從事件返回(return-from-event)請求(例如,在從除錯模式或例外處置器返回時)而從基於返回位址及節拍狀態暫存器22中的節拍狀態資訊所判定之一點恢復處理。在除錯事件之情況下,可由除錯器作出從事件返回請求,或者在例外事件之情況下,可由例外處置器作出從事件返回請求。在從事件返回請求之後,提取待處理之指令從由返回位址所指示之位址恢復,該位址在此情況下中對應於指令A。接下來,則係指令B、C、及D(此實例對應於圖5之頂部實例)。然而,對於在該返回之後的前幾個循環,由節拍狀態資訊指示為已完成的任何節拍受到抑制。處理器可藉由完全防止對應的處理操作被執行(例如,抑制加載或儲存資料的請求、或停用ALU或MAC)來抑制此等節拍。替代地,該操作仍可在ALU操作之情況下執行,但處理器可能抑制操作結果之寫入(亦即,抑制目的地向量暫存器之一部分的更新),使得其不影響暫存器狀態。當一達到第四滴答時,管線已達到先前發生除錯事件或例外的點,且處理正常地繼續。因此,對於在一例外返回之後的前幾個循環,處理器可不執行任何有用的工作,且基本上僅重新提取在發生原先例外或除錯事件時之進行中的(in flight)多個指令。然而,由於對於一些應用而言,例外返回潛時經常不重要,故此可係減少在採用例外的時間當下之延遲的良好權衡,且此亦幫助減少在例外發生時需要儲存的架構狀態量,因為其不必推測性地儲存未完成指令的結果。此方法亦實現例外係由向量指令之節拍引起的精確錯誤的處置。
在一些情況下,指示多個指令群組之完成節拍的節拍狀態資訊可回應於除錯事件或例外發生而設定。然而,在一些實施方案中,可能更容易的是,無論是否已發生例外,每次一有指令完成時便更新節拍狀態暫存器,使得若例外發生在隨後的滴答中,則節拍狀態暫存器22已指示指令群組的已完成節拍。
雖然圖4顯示節拍狀態資訊的一個實例編碼,但另一可行性係將節拍狀態資訊提供為包含位元數目的位元圖,該等位元各自對應於指令A、B、C等之群組之一者的一個節拍,其中若對應的節拍已完成,則將各位元設定成一,且若對應的節拍未完成,則設定成零(或反之亦然)。然而,實際上,由於若較早的節拍尚未完成,則一給定指令之後續節拍無法完成,因此不需要為每一節拍提供位元,且可更有效率的是將一較小位元欄位的某些編碼分配至完成節拍之特定組合,如圖4之實例。
圖7示意地繪示根據本技術之各種組態配置之設備30的細節。具體而言,設備30具備解碼器電路系統38、處理電路系統40、及一組暫存器32。暫存器32包含一或多個純量暫存器34、及一或多個向量暫存器36。解碼器電路系統經配置以接收指令(例如,基於由程式員及編譯器所產生的程式碼),且基於一指令集架構而解譯指令。具體而言,解碼器電路系統經配置以解譯一向量擷取及合併指令,該向量擷取及合併指令指定第一源向量暫存器44、第二源向量暫存器46、目的地暫存器54、及控制參數43。在接收到該向量擷取及合併指令時,解碼器電路系統產生控制信號以致使處理電路系統40執行向量擷取及合併處理。處理電路系統40回應於控制信號而藉由執行複數個處理節拍之一或多個節拍48來執行向量擷取及合併處理。各處理節拍對應於至少第一源向量暫存器44及目的地向量暫存器54之各者的一部分。處理電路系統40經配置以執行對應於第一源向量暫存器44之一或多個部分48、第二源向量暫存器之一或多個部分49的一或多個處理節拍,以產生待儲存於目的地向量暫存器50中的一或多個部分50。處理電路系統40經配置以針對複數個處理節拍之第K處理節拍而從第一源向量暫存器之第K部分48擷取一或多個位元,並將彼等位元與一或多個進一步位元串接。在第K節拍係複數個節拍之第一節拍的情況下,該一或多個進一步位元係從第二源向量暫存器之第一部分(第K部分,K=1)49所擷取。在第K節拍係除了第一節拍(K>1)以外之節拍的情況下,該一或多個進一步位元係從對應於第一源向量暫存器44之第(K-1)部分的第(K-1)節拍進位的進位位元52。此外,處理電路系統經配置以在第K節拍不是複數個節拍之最後節拍的情況下將一或多個位元輸出為待使用在第(K+1)處理節拍中的進位資料。
圖8示意地繪示根據本技術之一些組態配置之處理設備60的細節。具體而言,處理設備60具備暫存器62、解碼器電路系統68、處理電路系統70、及資料控制電路系統72。暫存器62包含複數個純量暫存器64及複數個向量暫存器66。解碼器電路系統68經配置以回應於形成指令集架構之部分的指令而產生控制信號。控制信號經傳遞(路由)至處理電路系統70及資料控制電路系統72。處理電路系統70經配置以回應於一向量擷取及合併指令而執行複數個處理節拍。處理電路系統之細節與圖7所提及的處理電路系統40之細節相同。資料控制電路系統72回應於資料控制信號(其等藉由解碼器電路系統68回應於一資料傳輸指令而產生)而執行複數個記憶體傳輸處理節拍。針對一給定滴答,設備60經配置以執行複數個節拍,該複數個節拍包含由資料控制電路系統72所執行的複數個記憶體傳輸處理節拍之一第一子集、及回應於由處理電路系統70所執行的向量擷取及合併指令的複數個組合處理節拍之一第二子集。設備60經配置以執行複數個節拍之第一子集及複數個節拍之第二子集,同時參考相同向量暫存器72之非重疊部分。
圖9示意地繪示根據本技術之一些組態之向量擷取及合併指令的細節。向量擷取及合併指令指定第一源向量暫存器、第二源向量暫存器、目的地向量暫存器、及控制參數M。在所繪示之實例中,處理電路系統執行二個處理節拍,各自對應於第一源向量暫存器、第二源向量暫存器、及目的地暫存器之N位元部分。第一源向量暫存器包含第一N位元部分82。第一N位元部分82包含最高有效M個位元84及最低有效N-M個位元86。處理電路系統經配置以針對對應於第一源向量暫存器之第一部分82、第二源向量暫存器之第一部分88、及目的地向量暫存器之第一部分102的第一處理節拍來擷取第一源向量暫存器之第一部分82的N-M個位元86,並將所擷取之N-M個位元與M個位元(一或多個進一步位元)90串接,該等M個位元係從第二源向量暫存器之第一部分88所擷取。特定地,將從第一源向量暫存器之第一部分82擷取的N-M個位元86儲存為目的地向量暫存器之第一部分102的最高有效N-M個位元98。將從第二源向量暫存器之第一部分88擷取的M個位元90儲存為目的地向量暫存器之第一部分102的最低有效M個位元100。處理電路系統進一步經組態以將第一源向量暫存器之第一部分82的最高有效M個位元84進位作為進位位元96。進位位元可係在平行執行的處理節拍之間進位的進位位元或係輸出至一純量暫存器的進位位元,該純量暫存器經配置以在非平行執行的處理節拍之間進位位元。在第二處理節拍中,將從第一源向量暫存器之第一部分82進位的M個位元96儲存為目的地暫存器之第二部分的最低有效M個位元94。在第二處理節拍期間,處理電路系統經配置以擷取第一源向量暫存器之第二N位元部分80的最低有效N-M個位元95,並將第一源向量暫存器之第二部分80的N-M個位元95儲存為目的地向量暫存器之第二部分104的最高有效N-M個位元92。以此方式,處理電路系統支援橫跨複數個節拍的向量擷取及合併指令。在此實例中,控制參數指示在部分(一或多個進一步位元)之間進位的M個位元84之數目。在其他實例中,控制參數可指示從第一源向量暫存器之第一部分86擷取並儲存於目的地向量暫存器之第一部分中的位元數目。
圖10至圖12示意地繪示根據本技術之各種組態的從第二源向量暫存器之第一部分所擷取的位元。向量擷取及合併指令之具體使用情況係產生未對準至32位元邊界的向量。具體而言,一些設備經配置以加載對準至32位元邊界之資料。因此,相對直接的是產生經移位32位元之資料值的一向量。然而,僅使用一加載指令產生未與32位元邊界對準的資料可能係不可行的,或者可能招致效能損失,使得使用對準的加載可能係較佳的。產生未與32位元邊界對準的資料的一個方法需要執行一移位。
圖10示意地繪示儲存於指定暫存器中之資料係16位元資料的情況。所繪示之第一源向量暫存器分成四個節拍,各自包含四個位元組(32位元)。儲存於第一源向量暫存器及第二源向量暫存器中的資料對應於相同資料集之不同部分。儲存於第二源向量暫存器中的資料已從加載至第一源向量暫存器中的資料偏移32個位元。對於16位元資料,根據前述使用情況,所欲的是產生經移位16個位元的一向量。在此一情況中,從第二源向量暫存器擷取的一或多個進一步位元係第二源向量暫存器之第一部分的位元組2及3(位元16至31)。從第二源向量暫存器之所繪示部分擷取此等位元與儲存於第一源向量暫存器中的經移位資料的組合導致在目的地向量暫存器中產生未對準至32位元邊界的資料。
圖11示意地繪示將需要被擷取以便針對8位元資料執行此一移位的第二源向量暫存器之部分。具體而言,為了產生與32位元邊界未對準24個位元的一組資料,在第一處理節拍中擷取第二源向量暫存器之位元組1、2、及3作為一或多個進一步位元。為了產生與32位元邊界未對準16個位元的一組資料,在第一處理節拍中擷取第二源向量暫存器之位元組2及3作為一或多個進一步位元。為了產生與32位元邊界未對準8個位元的一組資料,在第一處理節拍中擷取第二向量暫存器之位元組3作為一或多個進一步位元。以此方式,可行的是產生具有未對準至32位元邊界的資料元素之一系列向量。
圖12示意地繪示在目的地資料向量係第二源資料向量的情況下將需要被擷取以便針對8位元資料執行此一移位的第二源向量暫存器之部分。在所繪示之實例中,施加三個向量擷取及合併指令之序列。向量擷取及合併指令之各者將藉由其等將第一源向量暫存器移位的不同位元數目指定為控制參數。如圖10之實例中,儲存於第二源向量暫存器中的資料已從加載至第一源向量暫存器中的資料偏移32個位元。在所繪示之實例中,從第二源向量暫存器擷取的一或多個進一步位元包含排除一最低有效位元組的第二源向量暫存器之第一部分的最低有效位元組集合。在第一向量擷取及合併指令中,24個位元(3個位元組)之移位係定義為控制參數。因此,從第二源向量暫存器擷取的位元組係位元組3、2、及1。此等在複數個處理節拍期間係藉由處理電路系統來串接,以產生與32位元邊界未對準24個位元之值的一向量,作為針對第一向量擷取及合併指令之目的地向量暫存器的內容。在第二向量擷取及合併指令中,16個位元(2個位元組)之移位係定義為控制參數,且第一向量擷取及合併指令之目的地向量暫存器係用作第二源向量暫存器。因此,從第二指令之第二源向量暫存器擷取的位元組係位元組3及2。此等在複數個處理節拍期間係藉由處理電路系統來串接,以產生與32位元邊界未對準16個位元之值的一向量,作為針對第二向量擷取及合併指令之目的地向量暫存器的內容。在第三向量擷取及合併指令中,8個位元(1個位元組)之移位係定義為控制參數,且第二向量擷取及合併指令之目的地向量暫存器係用作第二源向量暫存器。因此,從第二源向量暫存器擷取的位元組係位元組3。此位元組在複數個處理節拍期間係藉由處理電路系統來串接,以產生與32位元邊界未對準8個位元之值的一向量,作為針對第三向量擷取及合併指令之目的地向量暫存器的內容。
圖13至圖17示意地繪示由處理電路系統回應於向量擷取及合併指令而實行的操作序列。出於說明性目的,已針對向量擷取及合併指令欲產生未對準至32位元邊界的向量的使用情況來選擇向量暫存器之元素。所屬技術領域中具有通常知識者將顯而易見的是,此使用情況實例純粹係出於說明性目的而選擇,且本文所述之技術不需要第一源向量暫存器與第二源向量暫存器之內容之間存在任何關係。具體而言,將顯而易見的是,對於本文所述之一般向量擷取及合併指令而言,儲存於第一源向量暫存器中的向量可係任何從記憶體加載或例如因一或多個其他操作而產生的任何第一向量。類似地,儲存於第二源向量暫存器中的第二源向量可係任何第二向量,且在一些使用情況中,程式員可選擇第一向量及第二向量,使得存在於第一源向量暫存器及第二源向量暫存器中的元素之間存在一些重疊。在其他使用情況中,程式員可選擇第一源向量及第二源向量,使得存在於第一源向量暫存器及第二源向量暫存器中的元素之間不存在重疊。
圖13示意地繪示由處理電路系統回應於向量擷取及合併指令而實行的操作序列,該向量擷取及合併指令指定第一源向量暫存器110、第二源向量暫存器112、目的地暫存器114、純量暫存器、及控制資訊。第一源向量暫存器110、第二源向量暫存器112、及目的地暫存器114之各者經配置為在複數個處理節拍中待處理的複數個部分。在所繪示之實例中,處理電路系統經配置以針對一給定滴答執行單一處理節拍。該等部分之各者包含兩個元素,且控制資訊指定對應於單一元素的移位待執行。僅出於例示性目的,第一源向量暫存器及第二源向量暫存器係128位元向量暫存器,且經繪示為含有一組編號資料項。具體而言,第一源向量暫存器含有資料項9下至資料項2,且第二源向量暫存器含有資料項7向下至資料項0。因此,第一源向量暫存器及第二源向量暫存器含有從記憶體中之位址加載之對準至32位元邊界的16位元資料項。在第一處理節拍中,處理電路系統擷取第一源向量暫存器之第一部分110(D)的最低有效元素(資料項2)。第一源向量暫存器之第一部分110(D)的經擷取最低有效元素與第二源向量暫存器之第一部分112(D)的最高有效元素(資料項1)串接,且將串接之結果儲存為目的地向量暫存器之第一部分114(D)。在第一處理節拍期間,擷取第一源向量暫存器之第一部分110(D)的最高有效元素(資料項3)作為進位資料116,並儲存為純量暫存器中的最高有效元素。在第二處理節拍期間,處理電路系統擷取第一源向量暫存器之第二部分110(C)的最低有效元素(資料項4)。第一源向量暫存器之第二部分110(C)的經擷取最低有效元素與儲存於純量暫存器之最高有效元素(資料項3)中的進位資料116串接,且將串接之結果儲存於目的地向量暫存器之第二部分114(C)中。在第二處理節拍期間,處理電路系統亦擷取第一源向量暫存器之第二部分110(C)的最高有效元素(資料項5)作為待儲存為純量暫存器中之最高有效元素的進位資料118。在第三處理節拍期間,處理電路系統擷取第一源向量暫存器之第三部分110(B)的最低有效元素(資料項6)。第一源向量暫存器之第三部分110(B)的經擷取最低有效元素與儲存於純量暫存器之最高有效元素(資料項5)中的進位資料118串接,且將串接之結果儲存於目的地向量暫存器之第三部分114(B)中。在第三處理節拍期間,處理電路系統亦擷取第一源向量暫存器之第三部分110(B)的最高有效元素(資料項7)作為待儲存為純量暫存器中之最高有效元素的進位資料120。在第四處理節拍期間,處理電路系統擷取第一源向量暫存器之第四部分110(A)的最低有效元素(資料項8)。第一源向量暫存器之第四部分110(C)的經擷取最低有效元素與儲存於純量暫存器之最高有效元素(資料項7)中的進位資料120串接,且將串接之結果儲存於目的地向量暫存器之第四(最後)部分114(A)中。在一些替代組態中,在第四處理節拍期間,處理電路系統亦擷取第一源向量暫存器之第四部分110(A)的最高有效元素作為待儲存為純量暫存器中之最高有效元素的進位資料。此進位資料在執行向量擷取及合併指令之後維持儲存於純量暫存器中。純量暫存器之未使用元素(如圖13所示之最低有效元素)中的值係任意的。在一些實例中,此元素可設定成虛置值,諸如零。在其他實例中,其可設定成來自第一源向量暫存器之目前部分的相鄰元素之值。
圖14示意地繪示由處理電路系統回應於向量擷取及合併指令而實行的操作序列,該向量擷取及合併指令指定第一源向量暫存器140、第二源向量暫存器142、目的地暫存器144、純量暫存器、及控制資訊。如圖13中,第一源向量暫存器及第二源向量暫存器之各者含有從一記憶體區域擷取之對準至32位元邊界的資料項。相較於圖13,儲存於第一源向量暫存器及第二源向量暫存器之元素中的資料項之各者係8位元資料項。第一源向量暫存器140、第二源向量暫存器142、及目的地暫存器144之各者經配置為在複數個處理節拍中待處理的複數個部分。在所繪示之實例中,處理電路系統經配置以針對一給定滴答執行單一處理節拍。該等部分之各者包含四個元素,且控制資訊指定對應於兩個元素的移位待執行。在第一處理節拍中,處理電路系統擷取第一源向量暫存器之第一部分140(D)的兩個最低有效元素(資料項5及4)。第一源向量暫存器之第一部分140(D)的經擷取兩個最低有效元素與第二源向量暫存器之第一部分142(D)的兩個最高有效元素(資料項3及2)串接,且將串接之結果儲存為目的地向量暫存器之第一部分144(D)。在第一處理節拍期間,擷取第一源向量暫存器之第一部分140(D)(資料項7下至資料項4)作為儲存於純量暫存器中的進位資料146。在第二處理節拍期間,處理電路系統擷取第一源向量暫存器之第二部分140(C)的兩個最低有效元素(資料項9及8)。第一源向量暫存器之第二部分140(C)的經擷取兩個最低有效元素與儲存於純量暫存器的進位資料146之兩個最高有效元素(資料項7及6)串接,且將串接之結果儲存於目的地向量暫存器之第二部分144(C)中。在第二處理節拍期間,處理電路系統亦擷取第一源向量暫存器之第二部分140(C)(資料項11下至資料項8)作為待儲存於純量暫存器中的進位資料148。在第三處理節拍期間,處理電路系統擷取第一源向量暫存器之第三部分140(B)的兩個最低有效元素(資料項13及12)。第一源向量暫存器之第三部分140(B)的經擷取兩個最低有效元素與儲存於純量暫存器中的進位資料148之兩個最高有效元素(項11及10)中的串接,且將串接之結果儲存於目的地向量暫存器之第三部分144(B)中。在第三處理節拍期間,處理電路系統亦擷取第一源向量暫存器之第三部分140(B)(項15下至項12)作為待儲存於純量暫存器中的進位資料150。在第四處理節拍期間,處理電路系統擷取第一源向量暫存器之第四部分140(A)的兩個最低有效元素(資料項17及16)。第一源向量暫存器之第四部分140(A)的經擷取兩個最低有效元素與儲存於純量暫存器中的進位資料150之兩個最高有效元素(資料項15及14)串接,且將串接之結果儲存於目的地向量暫存器之第四(最後)部分144(A)中。在一些替代組態中,在第四處理節拍期間,處理電路系統亦擷取第一源向量暫存器之第四部分140(A)作為待儲存於純量暫存器中的進位資料。此進位資料在執行向量擷取及合併指令之後維持儲存於純量暫存器中。
圖15示意地繪示根據替代性實施方案之由處理電路系統回應於向量擷取及合併指令而實行的操作序列。圖15與圖14的不同之處在於,對於第一處理節拍、第二處理節拍、及第三處理節拍之各者,從第一源向量暫存器160之對應部分擷取的資料(待儲存為純量暫存器中的進位資料)係該對應部分的兩個最高有效元素,並經儲存為純量暫存器的兩個最低有效元素。具體而言,不同於關於圖14所述者的操作如下:在第一處理節拍中,處理電路系統擷取第一源向量暫存器之第一部分160(D)的兩個最高有效元素(資料項7及6),以儲存為純量暫存器之兩個最低有效元素中的進位資料166。在第二處理節拍中,一或多個進一步資料位元係從純量暫存器之兩個最低有效元素所擷取,且處理電路系統擷取第一源向量暫存器之第二部分160(C)的兩個最高有效元素(資料項11及10),以儲存為純量暫存器之兩個最低有效元素中的進位資料168。在第三處理節拍中,一或多個進一步資料位元係從純量暫存器之兩個最低有效元素所擷取,且處理電路系統擷取第一源向量暫存器之第三部分160(B)的兩個最高有效元素(資料項15及14),以儲存為純量暫存器之兩個最低有效元素中的進位資料170。在第四處理節拍中,一或多個進一步資料位元係從純量暫存器之兩個最低有效元素所擷取。將理解,純量暫存器中的進位資料之定位係任意的,且雖然圖14及15顯示兩個可能性,但其他組態亦係可行的。
圖16示意地繪示由處理電路系統回應於向量擷取及合併指令而實行的操作序列,該向量擷取及合併指令指定第一源向量暫存器180、第二源向量暫存器182、目的地暫存器184、純量暫存器、及控制資訊。第一源向量暫存器180、第二源向量暫存器182、及目的地暫存器184之各者經配置為在複數個處理節拍中待處理的複數個部分。圖16與圖15及圖14的不同之處在於,處理電路系統具備能夠針對一給定滴答執行複數個處理節拍之兩個節拍的硬體。換言之,該等節拍之兩者係平行地執行。第一源向量暫存器180及第二源向量暫存器182的部分之各者包含四個8位元元素,且控制資訊指定對應於兩個元素的移位待執行。回應於第一滴答,處理電路系統執行對應於第一源向量暫存器180之兩個最低有效部分180(C)、180(D)的第一處理節拍及第二處理節拍。處理電路系統經配置以從第二源向量暫存器之最低有效部分182(D)擷取兩個最高有效元素(資料項3及2)作為一或多個進一步位元。一或多個進一步位元係與第一源向量暫存器之最低有效部分180(D)的兩個最低有效元素(資料項5及4)串接。將串接之結果儲存至目的地向量暫存器之最低有效部分184(D)。第一源向量暫存器之最低有效部分180(D)的兩個最高有效元素(資料項7及6)經進位以在第二節拍中使用。因為第二節拍係與第一節拍平行地執行(在相同的滴答中),第一源向量暫存器之最低有效部分180(D)的兩個最高有效元素(資料項7及6)係在不需要純量暫存器的情況下進位。因此,在相同的滴答中,作為第二處理節拍之部分,第一源向量暫存器之最低有效部分180(D)的兩個最高有效元素(資料項7及6)經進位作為與第一源向量暫存器之第二部分180(C)的兩個最低有效元素(資料項9及8)待串接的一或多個進一步位元。將串接之結果儲存至目的地向量暫存器之第二部分184(C)。處理電路系統亦經配置以將來自第一源向量暫存器之第二部分180(C)的兩個最高有效元素(資料項11及10)儲存至純量暫存器188之兩個最低有效元素,以被進位以用於下一滴答期間的處理。處理電路系統亦經配置以回應於向量擷取及合併指令而設定狀態資訊,該狀態資訊指示針對待實行的第一處理節拍及第二處理節拍而已完成處理。
在第二處理節拍期間,處理電路系統可從狀態資訊判定第一處理節拍及第二處理節拍的處理完成。因此,處理電路系統開始從對應於第一源向量暫存器之第三部分180(B)的第三節拍的處理。處理電路系統從第一源向量暫存器之第三部分180(B)擷取兩個最低有效元素(資料項13及12),並將此等元素與一或多個進一步位元串接。因為處理電路系統可判定正在處理的節拍不包含第一節拍(最低有效部分),因此一或多個進一步位元係從純量暫存器188擷取。具體而言,一或多個進一步位元包含純量暫存器188之兩個最低有效元素(資料項11及10),其等經擷取並與第一源向量暫存器之第三部分180(B)的兩個最低有效元素(資料項13及12)串接,且將串接之結果儲存於目的地暫存器之第三部分184(B)中。處理電路系統亦經配置以擷取第一源向量暫存器之第三部分180(B)的兩個最高有效元素(資料項15及14)以進位至第四節拍。因為處理電路系統能夠在一給定滴答執行兩個處理節拍,因此節拍3及4係平行地執行,且經進位資料不需要儲存於純量暫存器188中。而是,第一源向量暫存器之第三部分180(B)的兩個最高有效元素(資料項15及14)經進位作為在第四節拍中待使用的一或多個進一步位元。在第四節拍期間,第一源向量暫存器之第四(最高有效)部分180(A)的兩個最低有效元素(資料項17及16)經擷取,並與來自第一源向量暫存器之第三部分的經進位的一或多個進一步位元串接。將串接之結果儲存於目的地向量暫存器之第四部分(最高有效部分)184(A)。
在一些替代組態中,在第四處理節拍期間,處理電路系統亦擷取第一源向量暫存器之第四部分180(A)作為待儲存於純量暫存器188中的進位資料。此進位資料在執行(可能)待用作一進一步指令之部分的向量擷取及合併指令之後維持儲存於純量暫存器188中。
圖17示意地繪示一替代性組態,其中操作序列係由處理電路系統回應於向量擷取及合併指令而實行,該向量擷取及合併指令指定第一源向量暫存器240、第二源向量暫存器242、目的地暫存器244、純量暫存器、及控制資訊。圖17與圖14至圖16的不同之處在於,該擷取及合併指令已反轉。具體而言,向量擷取及合併指令係從指定暫存器之最高有效部分實行,而非從源向量暫存器之最低有效部分實行。在所繪示之實例中,處理電路系統經配置以針對一給定滴答執行單一處理節拍。該等部分之各者包含四個元素,且控制資訊指定對應於一個元素的移位待執行。在第一處理節拍(在此情況下,對應於指定暫存器之最高有效部分)中,處理電路系統擷取第一源向量暫存器之第一部分(最高有效部分)240(A)的三個最高有效元素(資料項15下至資料項13)。第一源向量暫存器之第一部分240(A)的經擷取三個最高有效元素與第二源向量暫存器之第一部分(最高有效部分)242(A)的最低有效元素(資料項16)串接,且將串接之結果儲存為目的地向量暫存器之第一部分244(A)。在第一處理節拍期間,擷取第一源向量暫存器之第一部分240(A)(資料項15下至資料項12)作為進位資料246並儲存於純量暫存器中。在第二處理節拍期間,處理電路系統擷取第一源向量暫存器之第二部分240(B)的三個最高有效元素(資料項11下至資料項9)。第一源向量暫存器之第二部分240(B)的經擷取三個最高有效元素與儲存於純量暫存器的進位資料246之最低有效元素(資料項12)串接,且將串接之結果儲存於目的地向量暫存器之第二部分244(B)中。在第二處理節拍期間,處理電路系統亦進位第一源向量暫存器之第二部分240(B)(資料項11下至資料項8)作為待儲存於純量暫存器中的進位資料248。在第三處理節拍期間,處理電路系統擷取第一源向量暫存器之第三部分240(C)的三個最高有效元素(資料項7下至資料項5)。第一源向量暫存器之第三部分240(C)的經擷取三個最高有效元素與儲存於純量暫存器中的進位資料248之最低有效元素(資料項8)串接,且將串接之結果儲存於目的地向量暫存器之第三部分244(C)中。在第三處理節拍期間,處理電路系統亦擷取第一源向量暫存器之第三部分240(C)(資料項7下至資料項4)作為待儲存於純量暫存器中的進位資料250。在第四處理節拍中,處理電路系統擷取第一源向量暫存器之第四部分(最低有效部分)210(D)的三個最高有效元素(資料項3下至資料項1)。第一源向量暫存器之第四部分210(D)的經擷取三個最高有效元素與儲存於純量暫存器中的進位資料250之最低有效元素(資料項4)串接,且將串接之結果儲存於目的地向量暫存器之第四(最低有效)部分244(D)中。在一些替代組態中,在第四處理節拍期間,處理電路系統亦擷取第一源向量暫存器之第四部分240(D)作為待儲存於純量暫存器中的進位資料。此進位資料在執行向量擷取及合併指令之後維持儲存於純量暫存器中。如先前圖式所示,在純量暫存器內待進位的資料元素之定位、及在純量暫存器中的未使用元素之值係任意的。例如,其他組態之各種組合係可行的,例如,儲存元素以在純量暫存器之最高有效元素中進位,及將未使用元素設定成零。
圖18示意地繪示由處理電路系統回應於向量擷取及合併指令而實行的步驟序列。流程開始於步驟S170,其中判定指定第一源向量暫存器、第二源向量暫存器、目的地向量暫存器、及控制參數的向量擷取及合併指令是否已由解碼器電路系統接收。若否,則流程保持在步驟S170。在步驟S170,若判定解碼器電路系統已接收向量擷取及合併指令,則解碼器電路系統基於向量擷取及合併指令產生控制信號。接著,流程進行至步驟S172,其中基於控制信號,將一值K基於狀態資訊而設定。若狀態資訊指示尚未進行處理節拍,則將K設定成指示第一處理節拍。另一方面,若狀態資訊指示複數個節拍之第一或多個節拍已完成,則將K設定成指示複數個節拍之第一未完成節拍。接著,流程進行至步驟S174,其中處理電路系統從第一源向量暫存器之第K部分擷取由控制參數指定的位元。接著,流程進行至步驟S176,其中判定K是否指示該部分係第一部分。若是,則流程進行至步驟S178,其中處理電路系統從第二源向量暫存器之第一部分擷取一或多個進一步位元(如由控制參數所指示)。接著,流程進行至步驟S182。另一方面,若在步驟S176判定K指示第K部分不是第一部分,則流程進行至步驟S180,其中獲得一或多個進一步位元作為從第一源向量暫存器之第(K-1)部分進位的一或多個進一步位元。例如,若處理電路系統具備足夠硬體以執行每一滴答多於1個節拍,則該進位在處理電路系統內可係內部進位。替代地,進位資料可從純量暫存器擷取,其中一或多個進一步位元已儲存為向量擷取及合併指令之先前節拍的部分。接著,流程進行至步驟S182。在步驟S182,將經擷取的一或多個位元與一或多個進一步位元串接。接著,流程進行至步驟S184,其中將串接之結果儲存於目的地暫存器之第K部分。接著,流程進行至步驟S186,其中判定該第K部分是否係第一源向量暫存器之最後部分。若是,則流程返回至步驟S170。若在步驟S186,判定該第K部分不是最後部分,則流程進行至步驟S188,其中進位尚未儲存於目的地暫存器中的第一源向量暫存器之第K部分中之至少一個位元,以在第(K+1)節拍中處理。例如,若處理電路系統具備足夠硬體以執行每一滴答多個(複數)處理節拍,則該進位在處理電路系統內可係內部進位。替代地,該進位可藉由將第一源向量暫存器之第K部分中之至少一個位元儲存至在向量擷取及合併指令中指定的一純量暫存器來執行。接著,流程進行至步驟S190,其中K經增量,且流程返回至步驟S174。
儘管圖18之步驟序列已藉由依序地增量K來描述,但在提供足以執行每一滴答複數處理節拍的硬體的情況下,對應於在相同滴答內執行之各節拍(K之各值)的步驟係平行地執行。例如,若節拍K及K+1係平行地執行,則步驟S174將包含從第一源向量暫存器之第K部分擷取由控制參數指定的位元,其平行於針對第一源向量暫存器之第(K+1)部分擷取由控制參數指定的位元。K及第(K+1)節拍之各者的一或多個進一步位元將接著平行地擷取。可能地,若K指示第K部分係第一部分,則第K部分之一或多個進一步位元將從第二源向量暫存器擷取,其平行於第(K+1)部分之一或多個進一步位從第一源向量暫存器之第K部分擷取。串接步驟S182將針對第K及第(K+1)部分平行地執行,且針對第K及第(K+1)部分的儲存步驟S184將平行地執行。在步驟S186關於K是否對應於最後部分的判定將會基於正受處理的K之最高部分(最高有效部分)而作出,且若基於此判定而流程將繼續至步驟S188,則該進位將會係從第(K+1)部分擷取以用於後續滴答中的處理。所屬技術領域中具有通常知識者應理解,取決於硬體提供之細節,可平行地執行任何數目之處理節拍。
圖19示意地繪示根據本技術之各種組態的包含用於製造資料處理設備之電腦可讀碼的非暫時性電腦可讀媒體。基於儲存在非暫時性電腦可讀媒體1000上的電腦可讀碼1002進行製造。電腦可讀碼可在半導體設計及製造程序之一或多個階段中使用,該半導體設計及製造程序包括電子設計自動化(EDA)階段,以製造一積體電路,其包含實現概念之設備。製造程序涉及將電腦可讀碼1002直接施加至一或多個可程式化硬體單元,諸如場可程式化閘陣列(FPGA),以組態FPGA實現上文所描述之組態,或促進設備的製造實施為一或多個積體電路,或以其他方式實現上文所述之組態。舉實例而言,所製造設計1004包含設備30,該設備具有暫存器32、解碼器電路系統38、及處理電路系統40,如關於圖7所述。然而,所製造設計可對應於能夠如關於圖9至圖18所述般地實施向量擷取及合併指令的在圖1、圖7、及圖8中所闡述之電路之任一者。
圖20繪示可使用的模擬器實施方案。雖然先前所述之實例以用於操作支援所關注技術的特定處理硬體之設備及方法來實施本發明,但亦可能根據本文所述之實例提供一指令執行環境,其係透過使用電腦程式實施。此類電腦程式常稱為模擬器,因為其等提供硬體架構之基於軟體的實施方案。模擬器電腦程式的種類包括仿真器、虛擬機、模型、及二進制轉譯器(包括動態二進制轉譯器)。一般而言,模擬器實施方案可在可選地運行主機作業系統510、支援模擬器程式505的主機處理器515上運行。在一些配置中,在硬體與所提供的指令執行環境及/或相同的主機處理器上提供的多個相異指令執行環境之間可有多層模擬。歷史上,已需要強大的處理器來提供模擬器實施方案,其以合理速度執行,但此種方法在某些情況下可係有正當理由的,諸如當因為相容性或再使用原因此需要執行另一處理器原生的程式碼時。例如,模擬器實施方案可提供具有不為主機處理器硬體所支援之額外功能性的指令執行環境,或提供一般與不同的硬體架構相關聯的指令執行環境。模擬的綜述係於「Some Efficient Architecture Simulation Techniques」(Robert Bedichek, Winter 1990 USENIX Conference,第53至63頁)中給出。
在先前已參照特定硬體架構或特徵描述實施的情況下,在模擬實施方案中,等效功能性可藉由合適的軟體架構或特徵提供。例如,可在模擬實施方案中將特定電路系統提供作為電腦程式邏輯。類似地,記憶體硬體(諸如暫存器或快取)可在模擬實施方案中提供作為軟體資料結構。在先前描述的實例中提及的硬體元素的一或多者存在於主機硬體上的配置中,一些模擬實施方案可(在適當處)利用主機硬體。
模擬器程式505可儲存在電腦可讀儲存媒體(其可係非暫時性媒體)上,並提供虛擬硬體介面(指令執行環境)給目標碼500(其可包括應用程式、作業系統、及超管理器),該虛擬硬體介面與藉由模擬器程式505模型化之硬體架構的硬體介面相同。因此,目標碼500的程式指令可在指令執行環境內使用模擬器程式505執行,使得實際上不具有上文所討論之設備30之硬體特徵的主機電腦515可仿真該等特徵。模擬器程式可包括:暫存器邏輯532,其用以仿真暫存器32的行為;解碼器電路系統邏輯538,其用以仿真解碼器電路系統38的行為;及處理邏輯540,其用以仿真處理電路系統40的行為。此外,模擬器程式可包括邏輯,以實施能夠如關於圖9至圖18所述般地實施向量擷取及合併指令的在圖1、圖7、及圖8中所闡述之電路之任一者。因此,本文所述之技術在圖20的實例中可藉由模擬器程式505以軟體執行。
整體上簡而言之,提供一種設備、方法、及媒體。該設備包含解碼器電路系統,其用以回應於一向量擷取及合併指令而產生控制信號,該向量擷取及合併指令指定一控制參數、一第一向量暫存器、一第二向量暫存器、及一目的地向量暫存器。該設備包含處理電路系統,其回應於該等控制信號而執行複數處理節拍,各節拍包含對應於至少第一向量暫存器及目的地向量暫存器的一部分的處理。針對一第K節拍,該處理包含:從該第一向量暫存器之一第K部分擷取由該控制參數指定的位元,將該等位元與進一步位元串接,並將結果儲存於該目的地暫存器之該第K部分中。對於一第一部分,該等進一步位元係從該第二向量暫存器之一第一部分所擷取,否則係從該第一向量暫存器之一第(K-1)部分所擷取。
在本申請案中,用語「經組態以...(configured to...)」係用以意指一設備的一元件具有能夠實行該經定義作業的一組態。在此上下文中,「組態(configuration)」意指硬體或軟體之互連的配置或方式。例如,該設備可具有專用硬體,其提供經定義的作業,或者一處理器或其他處理裝置可經程式化以執行該功能。「經組態以(configured to)」並不意味著設備元件需要以任何方式改變以提供所定義的作業。
雖然本文中已參照附圖詳細描述說明性組態,但應明白,本發明不限於該等精確組態,且所屬技術領域中具有通常知識者可實行各種變化、新增與修改於其中,而不脫離如隨附申請專利範圍所定義的本發明之範圍與精神。例如,可用獨立項的特徵在不脫離本發明之範疇的情況下作出與附屬項之特徵的各種組合。
2:資料處理設備;設備
4:處理電路系統;處理電路
6:指令解碼器;解碼器
8:記憶體系統
10:暫存器;暫存器庫
12:純量暫存器檔案;純量暫存器
14:向量暫存器檔案;向量暫存器
16:程式計數器暫存器;程式計數器
18:鏈路暫存器
20:堆疊指標暫存器
22:節拍狀態暫存器
30:節拍控制電路系統;設備
32:暫存器
34:純量暫存器
36:向量暫存器
38:解碼器電路系統
40:處理電路系統
43:控制參數
44:第一源向量暫存器
46:第二源向量暫存器
48:節拍;部分
49:部分
50:部分
52:進位位元
54:目的地暫存器;目的地向量暫存器
60:處理設備;設備
62:暫存器
64:純量暫存器
66:向量暫存器
68:解碼器電路系統
70:處理電路系統
72:資料控制電路系統;向量暫存器
80:第一源向量暫存器之第二N位元部分;第一源向量暫存器之第二部分
82:第一N位元部分;第一源向量暫存器之第一部分
84:最高有效M個位元;M個位元
86:最低有效N-M個位元;N-M個位元
88:第二源向量暫存器之第一部分
90:M個位元
92:最高有效N-M個位元
94:最低有效M個位元
95:最低有效N-M個位元;N-M個位元
96:進位位元;M個位元
98:最高有效N-M個位元
100:最低有效M個位元
102:目的地向量暫存器之第一部分
104:目的地向量暫存器之第二部分
110:第一源向量暫存器
110(A):第一源向量暫存器之第四部分
110(B):第一源向量暫存器之第三部分
110(C):第一源向量暫存器之第二部分
110(D):第一源向量暫存器之第一部分
112:第二源向量暫存器
112(D):第二源向量暫存器之第一部分
114:目的地暫存器
114(A):目的地向量暫存器之第四(最後)部分
114(B):目的地向量暫存器之第三部分
114(C):目的地向量暫存器之第二部分
114(D):目的地向量暫存器之第一部分
116:進位資料
118:進位資料
120:進位資料
140:第一源向量暫存器
140(A):第一源向量暫存器之第四部分
140(B):第一源向量暫存器之第三部分
140(C):第一源向量暫存器之第二部分
140(D):第一源向量暫存器之第一部分
142:第二源向量暫存器
142(D):第二源向量暫存器之第一部分
144:目的地暫存器
144(A):目的地向量暫存器之第四(最後)部分
144(B):目的地向量暫存器之第三部分
144(C):目的地向量暫存器之第二部分
144(D):目的地向量暫存器之第一部分
146:進位資料
148:進位資料
150:進位資料
160:第一源向量暫存器
160(B):第一源向量暫存器之第三部分
160(C):第一源向量暫存器之第二部分
160(D):第一源向量暫存器之第一部分
166:進位資料
168:進位資料
170:進位資料
180:第一源向量暫存器
180(A):第一源向量暫存器之第四(最高有效)部分
180(B):第一源向量暫存器之第三部分
180(C):第一源向量暫存器之最低有效部分;第一源向量暫存器之第二部分
180(D):第一源向量暫存器之最低有效部分
182:第二源向量暫存器
182(D):第二源向量暫存器之最低有效部分
184:目的地暫存器
184(A):目的地向量暫存器之第四部分(最高有效部分)
184(B):目的地暫存器之第三部分
184(C):目的地向量暫存器之第二部分
184(D):目的地向量暫存器之最低有效部分
188:純量暫存器
240:第一源向量暫存器
240(A):第一源向量暫存器之第一部分
240(B):第一源向量暫存器之第二部分
240(C):第一源向量暫存器之第三部分
240(D):第一源向量暫存器之第四部分
242:第二源向量暫存器
242(A):第二源向量暫存器之第一部分(最高有效部分)
244:目的地暫存器
244(A):目的地向量暫存器之第一部分
244(B):目的地向量暫存器之第二部分
244(C):目的地向量暫存器之第三部分
244(D):目的地向量暫存器之第四(最低有效)部分
246:進位資料
248:進位資料
250:進位資料
500:目標碼
505:模擬器程式
510:主機作業系統
515:主機處理器;主機電腦
532:暫存器邏輯
538:解碼器電路系統邏輯
540:處理邏輯
1000:非暫時性電腦可讀媒體
1002:電腦可讀碼
1004:所製造設計
A:向量指令;指令
A1:節拍
A2:節拍;指令A的第二節拍
A3:節拍
A4:節拍
B:向量指令;指令
B1:節拍
B2:節拍
B3:節拍
C:向量指令;指令
C1:節拍
C2:節拍
D:指令
D1:節拍
M:移位距離;控制參數
S170:步驟
S172:步驟
S174:步驟
S176:步驟
S178:步驟
S180:步驟
S182:步驟
S184:步驟
S186:步驟
S188:步驟
S190:步驟
VLDR:載入指令
VMUL:乘法指令
VSHR:移位指令
本技術將僅藉由實例、參照如附圖中所繪示之其組態來進一步說明,其中:
〔圖1〕示意地繪示根據本技術之各種組態的支援向量指令之處理的資料處理設備;
〔圖2〕示意地繪示根據本技術之各種組態的向量指令之重疊執行的實例;
〔圖3〕示意地繪示根據本技術之各種組態的在不同的處理器實施方案之間或在不同的指令執行情況之間的運行時間下擴縮連續的向量指令之間的重疊量之三個實例;
〔圖4〕示意地繪示根據本技術之各種組態的用於指示多個向量指令之區塊的哪些節拍已完成的節拍狀態資訊之實例編碼;
〔圖5〕示意地繪示根據本技術之各種組態的在除錯事件或例外發生時記錄節拍狀態資訊的兩個實例;
〔圖6〕示意地繪示根據本技術之各種組態的在從除錯事件或例外返回之後使用節拍狀態資訊以恢復處理的實例;
〔圖7〕示意地繪示根據本技術之各種組態的資料處理設備;
〔圖8〕示意地繪示根據本技術之各種組態的資料處理設備;
〔圖9〕示意地繪示根據本技術之各種組態的向量擷取及合併指令之實例;
〔圖10〕示意地繪示根據本技術之各種組態的向量擷取及合併指令之實例;
〔圖11〕示意地繪示根據本技術之各種組態的向量擷取及合併指令之實例;
〔圖12〕示意地繪示根據本技術之各種組態的向量擷取及合併指令之實例;
〔圖13〕示意地繪示根據本技術之各種組態的向量擷取及合併指令之實例;
〔圖14〕示意地繪示根據本技術之各種組態的向量擷取及合併指令之實例;
〔圖15〕示意地繪示根據本技術之各種組態的向量擷取及合併指令之實例;
〔圖16〕示意地繪示根據本技術之各種組態的向量擷取及合併指令之實例;
〔圖17〕示意地繪示根據本技術之各種組態的向量擷取及合併指令之實例;
〔圖18〕示意地繪示根據本技術之各種組態的藉由設備實行的一系列步驟;
〔圖19〕示意地繪示根據本技術之各種組態的設備;及
〔圖20〕示意地繪示可根據一些實例組態使用的模擬器。
180(A):第一源向量暫存器之第四(最高有效)部分
180(B):第一源向量暫存器之第三部分
180(C):第一源向量暫存器之最低有效部分;第一源向量暫存器之第二部分
180(D):第一源向量暫存器之最低有效部分
182(D):第二源向量暫存器之最低有效部分
184(A):目的地向量暫存器之第四部分(最高有效部分)
184(B):目的地暫存器之第三部分
184(C):目的地向量暫存器之第二部分
184(D):目的地向量暫存器之最低有效部分
188:純量暫存器
Claims (24)
- 一種設備,其包含: 複數個向量暫存器; 解碼器電路系統,其回應於一向量擷取及合併指令而產生控制信號,該向量擷取及合併指令指定一控制參數,且將一第一源向量暫存器、一第二源向量暫存器、及一目的地向量暫存器指定作為該複數個向量暫存器之指定暫存器;及 處理電路系統,其回應於該等控制信號而執行複數個處理節拍,各節拍包含對應於至少該第一源向量暫存器及該目的地向量暫存器之一部分的組合處理,其中該處理電路系統經組態以設定指示該向量擷取及合併指令之哪些節拍已完成的節拍狀態資訊,並抑制由該節拍狀態資訊指示為已完成的該向量及合併指令之完成的節拍, 其中對應於該等指定暫存器之各者的一第K部分的一第K節拍之該組合處理包含: 從該第一源向量暫存器之該第K部分擷取如由該控制參數指定的位元,將經擷取的該等位元與一或多個進一步位元串接,並將該串接之一結果儲存於該目的地暫存器之該第K部分中; 當該第K部分不是該等指定暫存器之一最後部分時,進位未儲存於該目的地暫存器中的該第一源向量暫存器之該第K部分中之至少一個位元,以在該複數個節拍之一第(K+1)節拍中處理; 對於該等指定暫存器之一第一部分,該一或多個進一步位元係從該第二源向量暫存器之一第一部分所擷取;及 對於除了該等指定暫存器之該第一部分以外的各部分,該一或多個進一步位元係從該第一源向量暫存器之一第(K+1)部分所進位。
- 如請求項1之設備,其中: 該解碼器電路系統係回應於指定一純量暫存器的該向量擷取及合併指令; 該複數個節拍包含目前執行的一或多個節拍之一子集,其中目前執行的節拍之該子集排除完成的節拍;及 該處理電路系統回應於該等控制信號而將至少一個進位資料項儲存於該純量暫存器中,該至少一個進位資料項包含在目前執行的一或多個節拍之該子集與該複數個節拍之一或多個節拍的一進一步子集之間待進位的一或多個位元。
- 如請求項2之設備,其中針對目前執行的一或多個節拍之該集合的一第一節拍,且在執行該向量擷取及合併指令之前該節拍狀態資訊指示至少一個節拍待抑制時,該處理電路系統回應於該等控制信號而從該純量暫存器取得該一或多個進一步位元。
- 如請求項3之設備,其中: 待進位的該一或多個位元包含該第一源向量暫存器之一部分的所有位元;及 從該純量暫存器取得該一或多個進一步位元包含從該純量暫存器取得一最後位元子集。
- 如請求項3之設備,其中: 待進位的該一或多個位元包含來自儲存至該純量暫存器中之暫時的位元定位之一集合的該第一源向量暫存器之一部分的M個位元之一最後集合;及 從該純量暫存器取得該一或多個進一步位元包含從該純量暫存器之暫時的位元定位之該集合取得位元。
- 如前述請求項中任一項之設備,其中串接經擷取的該等位元包含將經擷取的該等位元儲存於該目的地暫存器之該第K部分的連續的位元定位之一第一集合中,且將該一或多個進一步位元儲存於該目的地暫存器之該第K部分的連續的位元定位之一第二集合中。
- 如請求項6之設備,其中連續的位元定位之該第一集合及連續的位元定位之該第二集合係非重疊的位元定位。
- 如請求項6或請求項7之設備,其中連續的位元定位之該第一集合係該目的地暫存器之該第K部分的位元定位之一最高有效集合,且連續的位元定位之該第二集合係該目的地暫存器之該第K部分的位元定位之一最低有效集合。
- 如請求項6或請求項7之設備,其中連續的位元定位之該第一集合係該目的地暫存器之該第K部分的位元定位之一最低有效集合,且連續的位元定位之該第二集合係該目的地暫存器之該第K部分的位元定位之一最高有效集合。
- 如前述請求項中任一項之設備,其中經擷取的該等位元係從該第一源向量暫存器之該第K部分的連續的位元定位所擷取。
- 如請求項10之設備,其中連續的該等位元定位係該第一源向量暫存器之該第K部分的連續的位元定位之一最低有效集合。
- 如前述請求項中任一項中任一項之設備,其中: 該等指定暫存器之各者的各部分係一N位元部分; 該控制參數指示指定一位元數目的一移位距離M; 該一或多個進一步位元包含M個位元;及 來自該第一源向量暫存器之該第K部分的經擷取的該等位元包含N減M個位元。
- 如請求項12之設備,其中: 各N位元部分經劃分成複數個元素; 該移位距離對應於元素之一整數數目;及 對於該等指定暫存器之該第一部分,該一或多個進一步位元包含排除一最低有效元素的該第二源向量暫存器之該第一部分之一最低有效元素子集。
- 如請求項12之設備,其中: 各N位元部分經劃分成複數個元素; 該移位距離對應於元素之一整數數目;及 對於該等指定暫存器之該第一部分,該一或多個進一步位元包含該第二源向量暫存器之該第一部分之一最高有效元素子集。
- 如前述請求項中任一項之設備,其中該目的地向量暫存器係該第二源向量暫存器。
- 如前述請求項中任一項之設備,其中該處理電路系統經組態以平行地處理該複數個節拍之至少兩者。
- 如前述請求項中任一項之設備,其中該處理電路系統包含不足以用於平行地執行該給定向量指令之該複數個節拍之所有者的硬體。
- 如請求項1至16中任一項之設備,其中該處理電路系統經組態以平行地處理該給定向量指令之該複數個節拍之所有者。
- 如前述請求項中任一項之設備,其中: 該解碼器電路系統回應於在程式計數器順序中相鄰於該向量擷取及合併指令的一記憶體資料傳輸指令而產生資料傳輸控制信號,該記憶體資料傳輸指令指定一記憶體位址及該複數個向量暫存器之一傳輸暫存器; 該設備進一步包含資料控制電路系統,其回應於該等資料傳輸控制信號而執行複數個記憶體資料傳輸處理節拍,各節拍包含執行至該傳輸暫存器之一對應部分的資料傳輸,並設定指示該資料傳輸指令之哪些節拍已完成的節拍狀態資訊,並抑制由該節拍狀態資訊指示為已完成的該記憶體資料傳輸指令之完成的節拍;及 該設備經組態以在該傳輸暫存器係該等指定暫存器之一者時執行對應於該傳輸暫存器之部分之一第一子集的該複數個記憶體資料傳輸處理節拍之一第一子集,其平行於該處理電路系統回應於該向量擷取及合併指令而執行對應於該傳輸暫存器之部分之一第二子集的該複數個處理節拍之一第二子集。
- 如前述請求項中任一項之設備,其中該控制參數在該向量擷取及合併指令中經指定為一立即值。
- 如前述請求項中任一項之設備,其中該等指定暫存器之該第一部分係該等指定暫存器之一最低有效部分,且該等指定暫存器之該最後部分係該等指定暫存器之一最高有效部分。
- 一種操作一設備之方法,該設備包含複數個向量暫存器、解碼器電路系統、及處理電路系統,該方法包含: 使用該解碼器電路系統且回應於一向量擷取及合併指令而產生控制信號,該向量擷取及合併指令指定一控制參數,且將一第一源向量暫存器、一第二源向量暫存器、及一目的地向量暫存器指定作為該複數個向量暫存器之指定暫存器;及 使用該處理電路系統且回應於該等控制信號而執行複數個處理節拍,各節拍包含對應於至少該第一源向量暫存器及該目的地向量暫存器之一部分的組合處理,設定指示該向量擷取及合併指令之哪些節拍已完成的節拍狀態資訊,並抑制由該節拍狀態資訊指示為已完成的該向量及合併指令之完成的節拍, 其中對應於該等指定暫存器之各者的一第K部分的一第K節拍之該組合處理包含: 從該第一源向量暫存器之該第K部分擷取由該控制參數指定的位元,將經擷取的該等位元與一或多個進一步位元串接,並將該串接之一結果儲存於該目的地暫存器之該第K部分中; 當該第K部分不是該等指定暫存器之一最後部分時,進位未儲存於該目的地暫存器中的該第一源向量暫存器之該第K部分中之至少一個位元,以在該複數個節拍之一第(K+1)節拍中處理; 對於該等指定暫存器之一第一部分,該一或多個進一步位元係從該第二源向量暫存器之一第一部分所擷取;及 對於除了該等指定暫存器之該第一部分以外的各部分,該一或多個進一步位元係從該第一源向量暫存器之一第(K+1)部分所進位
- 一種用以儲存用於製造一設備之電腦可讀碼的電腦可讀媒體,該設備包含: 複數個向量暫存器; 解碼器電路系統,其回應於一向量擷取及合併指令而產生控制信號,該向量擷取及合併指令指定一控制參數,且將一第一源向量暫存器、一第二源向量暫存器、及一目的地向量暫存器指定作為該複數個向量暫存器之指定暫存器;及 處理電路系統,其回應於該等控制信號而執行複數個處理節拍,各節拍包含對應於至少該第一源向量暫存器及該目的地向量暫存器之一部分的組合處理,其中該處理電路系統經組態以設定指示該向量擷取及合併指令之哪些節拍已完成的節拍狀態資訊,並抑制由該節拍狀態資訊指示為已完成的該向量及合併指令之完成的節拍, 其中對應於該等指定暫存器之各者的一第K部分的一第K節拍之該組合處理包含: 從該第一源向量暫存器之該第K部分擷取由該控制參數指定的位元,將經擷取的該等位元與一或多個進一步位元串接,並將該串接之一結果儲存於該目的地暫存器之該第K部分中; 當該第K部分不是該等指定暫存器之一最後部分時,進位未儲存於該目的地暫存器中的該第一源向量暫存器之該第K部分中之至少一個位元,以在該複數個節拍之一第(K+1)節拍中處理; 對於該等指定暫存器之一第一部分,該一或多個進一步位元係從該第二源向量暫存器之一第一部分所擷取;及 對於除了該等指定暫存器之該第一部分以外的各部分,該一或多個進一步位元係從該第一源向量暫存器之一第(K+1)部分所進位。
- 一種電腦程式,其用於控制一主機資料處理設備以提供一指令執行環境,該電腦程式包含: 暫存器邏輯,其包含複數個向量暫存器; 解碼器邏輯,其回應於一向量擷取及合併指令而產生控制信號,該向量擷取及合併指令指定一控制參數,且將一第一源向量暫存器、一第二源向量暫存器、及一目的地向量暫存器指定作為該複數個向量暫存器之指定暫存器;及 處理邏輯,其回應於該等控制信號而執行複數個處理節拍,各節拍包含對應於至少該第一源向量暫存器及該目的地向量暫存器之一部分的組合處理,其中該處理邏輯經組態以設定指示該向量擷取及合併指令之哪些節拍已完成的節拍狀態資訊,並抑制由該節拍狀態資訊指示為已完成的該向量及合併指令之完成的節拍, 其中對應於該等指定暫存器之各者的一第K部分的一第K節拍之該組合處理包含: 從該第一源向量暫存器之該第K部分擷取由該控制參數指定的位元,將經擷取的該等位元與一或多個進一步位元串接,並將該串接之一結果儲存於該目的地暫存器之該第K部分中; 當該第K部分不是該等指定暫存器之一最後部分時,進位未儲存於該目的地暫存器中的該第一源向量暫存器之該第K部分中之至少一個位元,以在該複數個節拍之一第(K+1)節拍中處理; 對於該等指定暫存器之一第一部分,該一或多個進一步位元係從該第二源向量暫存器之一第一部分所擷取;及 對於除了該等指定暫存器之該第一部分以外的各部分,該一或多個進一步位元係從該第一源向量暫存器之一第(K+1)部分所進位。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2209637.4A GB2620381B (en) | 2022-06-30 | 2022-06-30 | Vector extract and merge instruction |
GB2209637.4 | 2022-06-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202403544A true TW202403544A (zh) | 2024-01-16 |
Family
ID=82802470
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW112123363A TW202403544A (zh) | 2022-06-30 | 2023-06-21 | 向量擷取及合併指令 |
Country Status (3)
Country | Link |
---|---|
GB (1) | GB2620381B (zh) |
TW (1) | TW202403544A (zh) |
WO (1) | WO2024003526A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118012506B (zh) * | 2024-04-08 | 2024-06-07 | 龙芯中科技术股份有限公司 | 二进制翻译优化方法、装置、电子设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7818356B2 (en) * | 2001-10-29 | 2010-10-19 | Intel Corporation | Bitstream buffer manipulation with a SIMD merge instruction |
US7685212B2 (en) * | 2001-10-29 | 2010-03-23 | Intel Corporation | Fast full search motion estimation with SIMD merge instruction |
GB2548601B (en) * | 2016-03-23 | 2019-02-13 | Advanced Risc Mach Ltd | Processing vector instructions |
-
2022
- 2022-06-30 GB GB2209637.4A patent/GB2620381B/en active Active
-
2023
- 2023-06-14 WO PCT/GB2023/051544 patent/WO2024003526A1/en unknown
- 2023-06-21 TW TW112123363A patent/TW202403544A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
GB202209637D0 (en) | 2022-08-17 |
GB2620381A (en) | 2024-01-10 |
WO2024003526A1 (en) | 2024-01-04 |
GB2620381B (en) | 2024-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102549680B1 (ko) | 벡터 계산 유닛 | |
US20230195458A1 (en) | Instruction set architecture for a vector computational unit | |
US11269638B2 (en) | Exposing valid byte lanes as vector predicates to CPU | |
US9965275B2 (en) | Element size increasing instruction | |
CN108319559B (zh) | 用于控制矢量内存存取的数据处理装置及方法 | |
US20230385063A1 (en) | Streaming engine with early exit from loop levels supporting early exit loops and irregular loops | |
US11921636B2 (en) | Streaming engine with flexible streaming engine template supporting differing number of nested loops with corresponding loop counts and loop offsets | |
US9740488B2 (en) | Processors operable to allow flexible instruction alignment | |
TW202403544A (zh) | 向量擷取及合併指令 | |
US11714641B2 (en) | Vector generating instruction for generating a vector comprising a sequence of elements that wraps as required | |
US20230004391A1 (en) | Streaming engine with stream metadata saving for context switching | |
US12019561B2 (en) | Pseudo-first in, first out (FIFO) tag line replacement | |
WO2023148467A1 (en) | Technique for performing memory access operations | |
KR20240140968A (ko) | 메모리 액세스 동작을 수행하기 위한 기술 |