TWI764966B - 用於控制矢量記憶體存取之資料處理裝置及方法 - Google Patents
用於控制矢量記憶體存取之資料處理裝置及方法 Download PDFInfo
- Publication number
- TWI764966B TWI764966B TW106144997A TW106144997A TWI764966B TW I764966 B TWI764966 B TW I764966B TW 106144997 A TW106144997 A TW 106144997A TW 106144997 A TW106144997 A TW 106144997A TW I764966 B TWI764966 B TW I764966B
- Authority
- TW
- Taiwan
- Prior art keywords
- vector
- elements
- flag information
- register
- flag
- Prior art date
Links
- 239000013598 vector Substances 0.000 title claims abstract description 468
- 238000012545 processing Methods 0.000 title claims abstract description 145
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000003860 storage Methods 0.000 claims abstract description 27
- 230000000737 periodic effect Effects 0.000 claims description 46
- 230000004044 response Effects 0.000 claims description 10
- 238000004458 analytical method Methods 0.000 claims description 6
- 230000002159 abnormal effect Effects 0.000 claims 1
- 230000007246 mechanism Effects 0.000 abstract description 14
- 239000000872 buffer Substances 0.000 description 40
- 230000004048 modification Effects 0.000 description 14
- 238000012986 modification Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 241000238876 Acari Species 0.000 description 5
- 238000013459 approach Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000000116 mitigating effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 238000003892 spreading Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/30181—Instruction operation extension or modification
-
- 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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
提供一種用於控制矢量記憶體存取之裝置及方法。裝置包含一組矢量暫存器及旗標設定電路系統,此旗標設定電路系統回應針對矢量暫存器之一者中的儲存產生之矢量包含滿足指定連續準則之複數個元素的決定,以產生與彼矢量暫存器關聯之旗標資訊。處理電路系統則用以執行矢量記憶體存取操作,以在由包含複數個位址元素之位址矢量運算元決定之位址處在記憶體中存取複數個資料值。在矢量暫存器組之指定矢量暫存器中提供位址矢量運算元,以便儲存在彼指定矢量暫存器中之複數個矢量元素形成複數個位址元素。處理電路系統經佈置以決定指定矢量暫存器是否具有與其關聯之旗標資訊,並且若有,則當決定用於存取複數個資料值所需之對記憶體的存取次數時使用彼旗標資訊。此提供一有效機制,用於允許在某些情況中使用對記憶體減少之存取次數實施收集或散佈類型記憶體存取操作,在此等情況中旗標資訊已針對關聯位址矢量運算元而產生。
Description
本技術係關於資料處理之領域。更具體而言,本技術係關於矢量指令之處理。
一些資料處理系統支援指令之源運算元或結果值為包含多個元素之矢量的矢量指令之處理。藉由回應於單指令來支援許多個不同元素之處理,可提高代碼密度並降低指令之提取及解碼之額外負擔。藉由將資料值加載進矢量運算元之各個元素中及使用單個矢量指令一次處理若干元素之資料值,可更有效地處理待處理之資料值陣列。
可執行之一個類型之矢量記憶體存取操作在由包含複數個位址元素之位址矢量運算元決定之位址處在記憶體中存取複數個資料值。此種操作提供許多靈活性,因為此等操作允許從任意記憶體位置存取資料值,其中每個資料值之位址源自於位址矢量運算元中之對應位址元素。當將來自記憶體之資料值加載進矢量暫存器時,此種記憶體存取操作經常稱為收集記憶體存取操作,因為此等操作用以收集來自複數個位址位置之資料值並將彼等資料值儲存進矢量暫存器內。類似地,當此種操作用以將來自矢量暫存器之資料值儲存進記憶體中時,此等操作經常稱為散佈記憶體存取操作,因為此等操作用以將來自矢量暫存器之資料值分佈至記憶體中之識別位址。
由於此種收集或散佈操作中涉及之位址可為任意的,所以此種操作之處理通常需要序列化各存取請求,以便執行一系列獨立的加載或儲存操作。若不這樣做,將會在硬體且因此面積及功率方面造成顯著之代價,並且將需要在關鍵時序路徑(亦即記憶體存取路徑)中執行額外處理。
期望提供用於處理收集或散佈操作而無此種額外硬體代價,並且對至記憶體之時序路徑無影響的改進機構。
在一些實例中,提供資料處理裝置,此資料處理裝置包含:一組矢量暫存器;旗標設定電路系統,回應於針對該組之矢量暫存器中的儲存產生的矢量包含滿足指定連續準則之複數個元素的決定,以產生與彼矢量暫存器關聯之旗標資訊;及處理電路系統,用以執行矢量記憶體存取操作以在由包含複數個位址元素之位址矢量運算元決定之位址處在記憶體中存取複數個資料值,該位址矢量運算元在該組之指定矢量暫存器中提供,以及儲存在該指定矢量暫存器中之複數個矢量元素形成該複數個位址元素;處理電路系統經佈置以決定該指定矢量暫存器是否具有與其關聯之旗標資訊,及當第一矢量暫存器具有與其關聯之旗標資訊時,在決定用以存取複數個資料值所需之對記憶體之存取次數時使用該旗標資訊。
其他實例提供一種在具有一組矢量暫存器之資料處理裝置中控制矢量記憶體存取的方法,此方法包含以下步驟:決定針對該組之矢量暫存器中的儲存產生之矢量是否包含滿足指定連續準則之複數個元素;回應於該矢量是包含滿足指定連續準則之複數個元素的決定,產生與該矢量暫存器關聯之旗標資訊;執行矢量記憶體存取操作以在由包含複數個位址元素之位址矢量運算元決定之位址處在記憶體中存取複數個資料值,該位址矢量運算元在該組之指定矢量暫存器中提供,以及儲存在該指定矢量暫存器中之複數個矢量元素形成該複數個位址元素;以及當執行記憶體存取操作時,決定該指定矢量暫存器是否具有與其關聯之旗標資訊,以及當第一矢量暫存器是具有與其關聯之旗標資訊時,在決定用於存取複數個資料值所需之對記憶體的存取次數時使用該旗標資訊。
又一些實例提供資料處理裝置,此資料處理裝置包含:一組矢量暫存器;旗標設定構件,用於回應於針對該組之矢量暫存器中的儲存產生的矢量包含滿足指定連續準則之複數個元素的決定,產生與彼矢量暫存器關聯之旗標資訊;及處理構件,用於執行矢量記憶體存取操作以在由包含複數個位址元素之位址矢量運算元決定之位址處在記憶體中存取複數個資料值,該位址矢量運算元在該組之指定矢量暫存器中提供,以及儲存在該指定矢量暫存器中之複數個矢量元素形成該複數個位址元素;處理構件用於決定該指定矢量暫存器是否具有與其關聯之旗標資訊,以及當第一矢量暫存器是具有與其關聯之旗標資訊時,在決定用以存取複數個資料值所需之對記憶體之存取次數時使用該旗標資訊。
在參考附圖論述實施例之前,提供了實施例之以下描述。
如上提及,通常證實有必要將與散佈或收集類型之記憶體存取操作關聯之各存取序列化,係歸因於用於根據此種操作之處理的位址可相對於彼此為任意的。在其中存取實際上為任意的情況下,此為合理且必要的。然而,發明者認識到存在日益增長之使用此種散佈或收集類型之記憶體存取操作的情況,但其中待存取之位址之至少一些實際上為連續的,且因此資料值之多者可經由對記憶體中之連續位址之單個存取而存取。然而,在矢量處理系統中,對記憶體之存取路徑經常為關鍵時序路徑,並且因此在此種情況中,在記憶體存取路徑內提供電路系統以在處理矢量記憶體存取操作時分析位址可導致時序問題或造成高昂之硬體代價。
所述實施例提供用於減輕此問題之機制。具體而言,提供資料處理裝置,此資料處理裝置包含一組矢量暫存器及旗標設定電路系統,此旗標設定電路系統回應於針對彼等矢量暫存器之一者中的儲存產生之矢量包含滿足指定連續準則之複數個元素的決定,以產生與彼矢量暫存器關聯之旗標資訊。資料處理裝置進一步具有處理電路系統,此處理電路系統用以執行矢量記憶體存取操作,以在由包含複數個位址元素之位址矢量運算元決定之位址處在記憶體中存取複數個資料值。在矢量暫存器組之指定矢量暫存器中提供位址矢量運算元,以便儲存在彼指定矢量暫存器中之複數個矢量元素形成複數個位址元素。處理電路系統經佈置以決定指定矢量暫存器是否具有與其關聯之旗標資訊。若有,則當執行矢量記憶體存取操作以決定用以存取複數個資料值所需之對記憶體的存取次數時藉由處理電路系統使用彼旗標資訊。
藉由此種方法,旗標設定電路系統可在離開關鍵路徑之時段中產生旗標資訊,並且具體而言,可在執行矢量記憶體存取操作之前產生旗標資訊。因此,在執行矢量記憶體存取操作時,處理電路系統僅僅能夠決定對於正論述之矢量暫存器存在還是不存在旗標資訊,並且若存在,則旗標資訊可用於可能地減少所需之對記憶體之存取次數。具體而言,若旗標資訊指示來源於位址元素之位址之一或多者實際上為連續的,則可能夠執行對彼等連續位址之單個存取,進而減少處理矢量記憶體存取操作所需之存取總次數,並由此增大效能。
在一個實施例中,在缺少與指定矢量暫存器關聯之該旗標資訊之情況下,處理電路系統經佈置以當決定用以存取複數個資料值所需之對記憶體之存取次數時將每個資料值視為在該記憶體中具有不連續位址。或者,在其他實施例中,裝置可以包括一或多個其他部件,此等部件可試圖在甚至不存在旗標資訊之情況下至少部分地最佳化存取。因此,使用旗標設定電路系統產生旗標資訊的所述實施例之技術可視情況與亦試圖最佳化對記憶體之存取的一或多個其他技術組合地使用。
旗標設定電路系統在查核複數個矢量元素時檢查之指定連續準則可採取各種形式。然而,在一個實施例中,指定連續準則需要矢量中之元素之至少一子集具有遵照定期進行序列之值,以及旗標資訊賦能處理電路系統決定矢量中之哪些元素具有遵照定期進行序列之值。
在一個實施例中,元素值之定期進行序列使得當彼等元素用作記憶體存取操作的位址元素時,連續記憶體位址將由彼等元素值之使用產生。
在一個實施例中,可以固定資料值存取之大小,但在其他實施例中記憶體存取操作可能夠用以存取各種不同大小之資料值。元素值是否遵照定期進行序列可因此取決於資料值之大小,此等資料值意圖使用彼等元素作為記憶體存取操作之位址元素而存取。
在一個此種實施例中,旗標資訊可以包含大小資訊,此大小資訊識別資料值大小,具有遵照定期進行序列之值的矢量中之元素在彼等元素用作矢量記憶體存取操作的位址元素時,將針對此資料值大小在記憶體中產生連續位址。
旗標資訊可採取各種形式,只要其賦能處理電路系統決定矢量中之哪些元素具有遵照定期進行序列之值。在一個實施例中,旗標資訊包含至少一個有效旗標,每個有效旗標與矢量之部分關聯,以及當在矢量之關聯部分內之元素具有遵照定期進行序列之值時設定每個有效旗標。因此,在旗標資訊內提供之有效旗標之數目可根據實施方式而變化,因此使得矢量內評定指定連續準則所用的粒度視情況變化。
關於在旗標資訊內提供的有效旗標之數目的決定可取決於與所考慮之資料處理裝置之特定實施方式相關的各種因素來做出。例如,可考慮到的一個因素為用於對記憶體存取之可用頻寬。例如,若矢量為128位元矢量,但對記憶體之存取路徑為64位元寬,則適於提供兩個有效旗標,每個與此矢量之每個64位元部分關聯。
在決定在旗標資訊內提供多個有效旗標之實施例中,若需要則旗標資訊可進一步識別,當矢量之多個相鄰部分具有有效旗標組時,在多個相鄰部分之間的定期進行序列中是否具有連續性。此例如可在其中記憶體存取頻寬為與每個有效旗標關聯之矢量的位元數的倍數之情況下有用。例如,若針對128位元矢量內之每個32位元部分提供單獨的有效旗標,並且記憶體存取頻寬為64位元,則知道是否亦佈置具有有效旗標組之兩個相鄰部分是有用的,從而指示彼等個別32位元部分具有元素值遵照定期進行序列的元素,使得在彼等兩個相鄰部分之間的定期進行序列中具有連續性。此可例如賦能使用來自彼等兩個部分之位址元素執行單個64位元連續存取。
然而,在一些實施例中,可決定僅需要單個有效旗標。具體而言,在彼情況下指定連續準則可能需要矢量中之全部元素皆具有遵照定期進行序列之值,並且當矢量中之全部元素皆具有遵照定期進行序列之值時旗標資訊包含有效旗標組。此種方法可減少維持旗標資訊所需之儲存量。
旗標資訊本身可以各種方式儲存。在一個實施例中,資料處理裝置進一步包含控制儲存器,在此控制儲存器中儲存旗標資訊以供處理電路系統參考。
在一些實施例中,可限制旗標資訊之使用,以便旗標設定電路系統僅考慮寫入一或多個指定暫存器中的矢量。在此種情況下,可預先決定旗標資訊之任一特定條目與哪個暫存器相關,因此不需要具體識別暫存器。然而,在一替代實施例中,旗標資訊可以包括暫存器識別符欄位,此暫存器識別符欄位的值指示與彼旗標資訊相關之矢量暫存器。藉由允許在旗標資訊內指定暫存器識別符欄位,此藉由允許旗標設定電路系統可能地考慮針對矢量暫存器組之矢量暫存器中的任一者中的儲存產生的矢量而增大靈活性。
儘管在一個實施例中控制儲存器可以在任一時間點處僅針對一個矢量儲存旗標資訊,但在一替代實施例中控制儲存器可具有多個條目以賦能同時維持多個矢量暫存器之旗標資訊。儘管此增大控制儲存器之大小要求,但藉由賦能維持更多旗標資訊而提高靈活性,因此可能增大在處理矢量記憶體存取操作時可實現記憶體存取效能之改進的可能性。
在一替代實施例中,除針對旗標資訊提供單個控制儲存器之外,每個矢量暫存器可以包括用以儲存彼矢量暫存器之旗標資訊的控制儲存器元件。此避免單獨地針對旗標資訊指定暫存器識別符的需要,並且可能允許同時針對矢量暫存器組中之每個矢量暫存器維持旗標資訊。在此種實施例中,取決於關於相對於連續準則單獨地考慮矢量之部分的數目的決定,每個控制儲存器元件可以儲存一或多個有效旗標。另外,若需要,每個控制儲存器元件可以擷取資料值大小資訊,如先前論述。
在一個實施例中,旗標設定電路系統經佈置以在指定事件發生之情況下使旗標資訊無效。指定事件可採取各種形式,但在一個實施例中被認為當異常事件發生,或者處理電路系統執行寫入至旗標資訊所關聯之矢量暫存器的操作時發生。
藉由佈置在此種情況發生時無效的旗標資訊,此意謂旗標資訊不一定在架構上可見,因此不需要圍繞異常來保存及復原。其亦意謂旗標可與在處理器核心內之其他很少使用之元件共用儲存器,因而提高效率。
存在各種不同事件,此等事件可經佈置以觸發旗標設定電路系統來分析針對矢量暫存器中之儲存產生的矢量以決定是否應針對彼矢量設定旗標資訊。例如,在一個實施例中,資料處理裝置進一步包含解碼器電路系統,此解碼器電路系統用以解碼指令以控制藉由處理電路系統執行之操作,解碼器電路系統回應於解碼已知類型之矢量產生指令將致使處理電路系統產生包含複數個元素之矢量,此複數個元素之值遵照定期進行序列,以產生控制信號以致使旗標設定電路系統產生與由處理電路系統產生之矢量關聯的旗標資訊。因此,對於某種類型之指令,其中知曉所產生之結果矢量將具有元素值遵照定期進行序列的元素,可僅觸發旗標設定電路系統以產生適宜之旗標資訊,而旗標設定電路系統不需要執行矢量之任何進一步分析。
作為另一實例,處理電路系統可經佈置回應於識別純量啟動值及換行控制資訊之矢量產生指令,以產生包含複數個元素之矢量,處理電路系統經佈置以產生矢量以便該複數個中之第一元素取決於純量啟動值,以及複數個元素之值遵照視需要不得不換行之定期進行序列,以保證每個值在由換行控制資訊決定之界限內。當產生矢量時,處理電路系統可經佈置以提供資訊至旗標設定電路系統以賦能旗標設定電路系統決定是否產生旗標資訊。
因此,當處理電路系統執行此種矢量產生指令時,決定任一換行是否為必須的將作為處理之部分,由此可將資訊輸出至旗標設定電路系統以指示任何此種換行位置,從而識別矢量之哪些部分含有遵照定期進行序列之元素。旗標設定電路系統隨後可使用此資訊決定是否產生旗標資訊,及此旗標資訊應採取的形式。因此,若例如旗標資訊含有單個旗標,此單個旗標僅在全部元素皆遵照定期進行序列時設定,則若換行點在產生矢量時出現,則將不設定旗標資訊,而若換行點不出現,則將設定旗標資訊。在其他實施例中,其中提供多個有效旗標,則旗標設定電路系統可決定是否應設定彼等有效旗標之各者,此取決於關於任何換行點之存在的資訊及換行點出現在矢量內的位置的資訊。
作為可如何使用旗標設定電路系統之另一實例,旗標設定電路系統本身可以包含比較電路系統,此比較電路系統用以分析針對矢量暫存器中之儲存產生的矢量之元素,以決定矢量中之元素之至少一子集是否具有遵照定期進行序列之值,以及用以根據彼分析產生旗標資訊。隨後可在不在關鍵時序路徑上之一時間點處調用旗標設定電路系統之比較電路系統,因此執行必要分析所花費之時間將不會影響此種關鍵時序路徑內之效能。此種分析可在產生之矢量儲存在矢量暫存器中之前執行,或者可在矢量已儲存在矢量暫存器之後執行。例如,旗標設定電路系統可使用可用處理時間來推測地分析矢量暫存器之內容且因此設定旗標資訊。
現將參考附圖描述具體實施例。
第1圖示意地圖示支援矢量指令之處理的資料處理裝置2的實例。應理解,此為便於說明之簡圖,並且實際上裝置可能具有為簡明起見未在第1圖中圖示之許多元件。裝置2包含處理電路系統4,此處理電路系統回應於藉由指令解碼器6解碼之指令執行資料處理。自記憶體系統8提取且藉由指令解碼器解碼程式指令以產生控制信號,此等控制信號控制處理電路系統4以由架構定義之方式處理指令。例如,解碼器6可以解譯解碼指令之操作碼及指令之任何額外控制欄位以產生控制信號,此等控制信號致使處理電路系統4啟動適宜硬體單元以執行諸如算術運算、加載/儲存操作或邏輯運算之操作。裝置具有一組純量暫存器10及一組矢量暫存器12。裝置亦可具有用於儲存控制資訊之其他暫存器(未圖示),此控制資訊用以配置處理電路系統之操作。回應於算術或邏輯指令,處理電路系統通常自暫存器10、暫存器12讀取源運算元且將指令之結果寫回至暫存器10、暫存器12。回應於加載/儲存指令,在暫存器10、暫存器12與記憶體系統8之間經由處理電路系統4內之加載/儲存單元18傳遞資料值。記憶體系統8可包括一或多個快取階層以及主記憶體。
純量暫存器組10包含用於儲存純量值的許多純量暫存器,此等純量值包含單個資料元素。藉由指令解碼器6及處理電路系統4支援之一些指令可為純量指令,此等純量指令處理自純量暫存器10讀取之純量運算元以產生寫回至純量暫存器之純量結果。
矢量暫存器組12包括許多矢量暫存器,每個矢量暫存器經佈置以儲存包含多個元素之矢量值。回應於矢量指令,指令解碼器6可控制處理電路系統4以對自矢量暫存器12之一者讀取的矢量運算元的個別元素執行矢量處理之許多路徑,以產生將寫入至純量暫存器10之純量結果或將寫入至矢量暫存器12之另一矢量結果。一些矢量指令可自一或多個純量運算元產生矢量結果,或者可對純量暫存器檔案中之純量運算元執行額外純量運算以及對自矢量暫存器檔案12讀取之矢量運算元執行矢量處理之路徑。因此,一些指令可為混合純量-矢量指令,針對此等指令,指令之一或多個源暫存器及目標地暫存器之至少一者為矢量暫存器12且一或多個源暫存器及目標地暫存器之另一者為純量暫存器10。
矢量指令亦可包括矢量加載/儲存指令,此等矢量加載/儲存指令致使資料值在矢量暫存器12與記憶體系統8中之位置之間傳遞。加載/儲存指令可以包括:連續加載/儲存指令,針對此等指令,記憶體中之位置對應於位址之連續範圍;或散佈/收集類型之矢量加載/儲存指令,此等指令指定許多離散位址且控制處理電路系統4以將來自彼等位址之各者的資料加載進矢量暫存器之個別元件中或用以將來自矢量暫存器之個別元件的資料儲存至離散位址。
處理電路系統4可以支援在不同資料元素大小之範圍中的矢量的處理。例如,128位元矢量暫存器12可被分割成十六個8位元資料元素、八個16位元資料元素、四個32位元資料元素或兩個64位元資料元素。控制暫存器可用以指定正在使用之當前資料元素大小,或替代地此可為待執行之給定矢量指令的參數。
處理電路系統4可以包括用於處理不同類別之指令的許多不同硬體區塊。例如,與記憶體系統8互動之加載/儲存指令可藉由專用加載/儲存單元18處理,而運算或邏輯指令可藉由算術邏輯單元(arithmetic logic unit; ALU)處理。ALU本身可以進一步分割成用於執行包括乘法之運算的乘法-累加單元(multiply-accumulate unit; MAC),及用於處理其他種類之ALU操作的另一單元。亦可提供浮點單元以用於處理浮點指令。不包括任何矢量處理之純純量指令相比於矢量指令亦可藉由單獨的硬體區塊來處理,或重複使用相同的硬體區塊。
如參考剩餘圖更詳細地論述,根據一個實施例,在處理電路系統4內提供矢量產生電路系統16,處理電路系統4經佈置以執行矢量產生指令所需之操作,此矢量產生指令包括在由裝置2執行之指令序列內。矢量產生電路系統16可包含處理電路系統4內之專用區塊,或可併入諸如ALU之其他電路區塊之一者內。
根據本文所述之一些實施例,可定義新類型之矢量產生指令,此矢量產生指令識別純量啟動值及換行控制資訊。當此種指令由指令解碼器6解碼時,將控制信號發送至處理電路系統4以致使矢量產生電路系統16產生包含複數個元素之矢量,其中彼產生之矢量隨後通常儲存在矢量暫存器12之一者內。矢量產生電路系統16經佈置以產生矢量,使得矢量中之第一個元素取決於純量啟動值,以及複數個元素之值隨後遵照視情況不得不換行之定期進行序列以保證每個值在由換行控制資訊決定之界限內。定期進行序列可為定期遞增序列或定期遞減序列,以及在一個實施例中矢量產生指令之不同變體針對遞增及遞減序列而指定。
元素之此種產生矢量可在各種情況中有用。然而,一個此種矢量非常有用的特定使用情況是作為先前提及之矢量收集/散佈加載/儲存指令的輸入運算元。具體而言,在一個實施例中,由矢量產生指令產生之矢量可用作偏移矢量,此偏移矢量提供為致使收集/散佈操作得以執行之此種矢量加載/儲存指令的輸入運算元。此種指令通常亦接收指定基底位址之純量輸入,以及偏移矢量則用以參考彼基底位址產生待在記憶體中存取之位址之各者。儘管此種矢量加載或儲存指令可用以存取記憶體內之任意位址組,但當使用由上述矢量產生指令產生之偏移矢量時,此賦能識別位址序列,此等位址駐留在記憶體內之循環緩衝器內。因此,此機制提供用於使用記憶體中之循環尋址方式的非常有效之技術,而不需要在記憶體存取路徑中添加額外電路系統,從而避免此種額外電路系統將引入路徑內的潛在效能影響。此在矢量處理系統中提供了顯著的益處,其中記憶體存取路徑經常為系統內之關鍵時序路徑。
如亦在第1圖中圖示,若需要則可提供節拍控制電路系統20以控制指令解碼器6及處理電路系統4之操作。具體而言,在一些實施例中,矢量指令之執行可分成稱為「節拍」之部分,其中每個節拍對應於預定大小之矢量部分的處理。如隨後參考第8圖及第9圖更詳細地論述,此可允許矢量指令之重疊執行,進而提高效能。
第2圖為示意地圖示可在上述類型之矢量產生指令內提供的欄位的圖表。具體而言,指令50可包括指定指令之操作碼的第一欄位52。此可用以識別指令為矢量產生指令,以及亦可用以識別指令之不同變體,諸如遞增或遞減變體。在一個特定實施例中,矢量產生指令之遞增變體稱為矢量增量及換行重複(vector increment and wrap duplicate; VIWDUP)指令,而遞減版本稱作矢量減量及換行重複(vector decrement and wrap duplicate; VDWDUP)指令。「重複」引用僅意欲識別針對矢量之每個元素決定之值源自於純量種子值,在此種情況下之每個元素之實際值為先前元素值之遞增或遞減版本,其中初始元素值源自於純量種子值。
在一個實施例中,在指令內提供大小資訊欄位53以識別矢量內之資料值的大小。具體而言,在處理電路系統允許在矢量內處理不同大小之資料值之情況中,則此種欄位可用以識別與當前指令相關之特定資料值大小。在替代性實施例中,此種大小資訊可並非必需,因為可以預先決定資料值大小。
目標地矢量暫存器欄位54識別藉由執行指令而產生之元素矢量待寫入到的矢量暫存器(例如,在第2圖中稱為暫存器Qd)。欄位55提供純量啟動值,在一個實施例中參考純量暫存器之一者(在第2圖之實例中此稱作純量暫存器Rn)識別此純量啟動值。
亦提供換行控制資訊欄位56以識別換行資訊,此換行資訊用以識別界限,亦即值之定期遞增序列或定期遞減序列將需要換行的點。在一個特定實施例中,換行控制資訊用以決定第一界限,並且預先決定第二界限。更具體而言,在一個實施例中第二界限假設為零值。在此等實施例中,換行控制資訊可例如提供在本文稱作緩衝器大小或「BUFSIZE」的大小資訊,並且假設預先決定第二界限,此賦能識別第一界限之值。換行控制資訊可指定為指令內之立即值,或可改為參考暫存器(純量暫存器10之一者或者矢量暫存器12之一者)識別。在一個實施例中,換行控制資訊藉由另一純量暫存器指定,以及在第2圖之實例中此稱作純量暫存器Rm。
在一個實施例中,經歷矢量處理之資料值可具有預定大小,但在替代性實施例中可改變資料值大小,使得當執行一些指令時資料值假設具有第一大小,而當執行其他指令時此等資料值假設具有不同大小。在支援不同資料值大小之實施例中,則矢量產生指令50可包括調整量欄位57,此調整量欄位可在一個實施例中指定為立即值,但可另外由暫存器之內容指定。當執行指令時,調整量將決定每個元素在定期進行序列內增加或減少的量。如前提及,在一個實施例中由矢量產生指令產生之矢量將用作後續矢量加載或儲存指令之位址偏移矢量,由此可考慮資料值之大小來設定調整量,此等資料值將藉由後續矢量加載或儲存指令存取。例如,在一個實施例中,若後續待存取之資料值為位元組大小資料值,則調整量將設定為1,若資料值為16位元實體,則設定為2,並且若資料值為32位元實體,則設定為4。
參考第3圖之特定實例更詳細地說明當執行矢量產生指令時產生元素矢量的方式。在此實例中,假設矢量產生指令為VIWDUP指令,亦即遞增變體。如在第3圖中圖示,邏輯緩衝器70經識別具有第二界限,此第二界限假設具有零值,及參考緩衝器大小80識別之第一界限。純量啟動值75識別用作啟動值之邏輯緩衝器內的特定點。在第3圖中圖示之實例中,緩衝器大小假設為16,亦即16位元組,以及假設矢量長度為128位元。僅為了便於說明,選擇相對較小之緩衝器大小,因為此有助於圖示針對第3圖中圖示之三個實體中之各者的操作之換行行為。實際上,緩衝器大小可明顯更大,使得當產生矢量之任何特定實例時降低換行發生之發生率。
如在實例一中圖示,假設調整量設定為一,亦即指示關聯資料值大小為8位元,以及純量啟動值設定為九,此導致在實例一中圖示之矢量的產生,此矢量含有十六個條目,每個針對8位元大小資料值之各者。可看出,矢量內之元素遵照定期遞增序列,但在其中值已增加至第一界限值之點處換行,在此點處序列歸零且隨後增大。
實例二圖示其中調整量設定為二,亦即識別關聯資料值為16位元大小的情況。假設在此情況下純量啟動值為十,以及此導致在第3圖中圖示之矢量的產生,此矢量具有8個元素,每個針對在128位元矢量內之16位元大小資料值的各者。同樣,換行點被認為發生在值已經增加至第一界限值,但隨後改為換行回到邏輯零值的地方。
實例三圖示其中調整量設定為四,指示資料值大小為32位元的實例。在此實例中,初始純量啟動值為八,以及此導致在第3圖中圖示之元素矢量的產生,其中在此矢量內具有四個元素,每個針對在128位元矢量內之32位元大小資料值的各者。此外,可見換行發生在適宜點處。
考慮記憶體中之循環緩衝器的規範,用以產生此種類型矢量的特定指令的使用提供許多靈活性。原則上,此種循環緩衝器可具有任何大小,並且在記憶體內之任意位置,但是實際上若需要則可界定在記憶體位址空間內重疊的多個緩衝器。
在一個實施例中,可在緩衝器大小及純量啟動值之規範上設置許多約束,以簡化實施矢量產生操作所需之電路系統。例如,在一個實施例中,可將緩衝器大小約束為調整量之倍數。另外,若需要,可將純量啟動值約束為調整量之倍數。此等兩個約束可被認為置於第3圖中圖示之三個實例中。藉由使用此種約束,用於偵測換行點所需之電路系統可在至少一些實施例中使用相等檢查電路系統而非需要偵測大於或少於條件之電路系統來實施。
當執行VIWDUP或者VDWDUP指令時實施的功能可圖示如下: VIWDUP.<size> Qd, Rn, Rm, #imm with imm restricted to {1,2,4,8} offset = Rn; // Rn指定當前偏移量 bufsize = Rm; // Rm指定以位元組為單位的緩衝器大小 for e = 0 ... N Qd[e] = offset; offset = offset + imm; if offset == bufsize → offset = 0; Rn = offset; VDWDUP.<size> Qd, Rn, Rm, #imm with imm restricted to {1,2,4,8} Offset = Rn; // Rn指定當前偏移量 bufsize = Rm; // Rm指定以位元組為單位的緩衝器大小 for e = 0 ... N Qd[e] = offset; if offset == 0 → offset = bufsize – imm; else → offset = offset – imm; Rn = offset;
上述功能參考第4圖之流程圖更詳細地論述。在步驟100,執行具有換行功能之矢量產生指令,隨後在步驟105讀取純量暫存器Rn以獲得初始偏移量,亦即純量啟動值。另外,在步驟110,讀取純量暫存器Rm以獲得緩衝器大小資訊。此後,在步驟115,變數「e」設定為等於零,隨後在步驟120將結果矢量暫存器內之第e個元素設定為等於當前偏移值。執行之後續步驟隨後取決於執行之矢量產生指令是遞增版本還是遞減版本。
若在步驟125處決定其為遞增版本,則在步驟130偏移量遞增了立即值,亦即調整量,隨後在步驟135決定偏移量現在是否等於緩衝器大小。若是,則在行進至步驟145之前在步驟140將偏移量重設為零,而若否,則處理直接行進至步驟145。在步驟145,決定e值是否已達到最大值,此取決於預定長度之矢量內之資料值的數目(由資料值大小決定)。若e尚未達到最大值,則在處理回到步驟120之前,e在步驟150遞增。
若在步驟125決定正執行之指令為遞減版本,則在步驟155決定偏移量當前是否等於零。若是,則在步驟160將偏移量調整至等於自緩衝器大小減去立即值的值。然而,若在步驟155不能決定等於零,則偏移量在步驟165遞減了立即值。在步驟160或步驟165之後,處理隨後行進至步驟145。
一旦在步驟145決定e已達到最大值,則將產生矢量之全部元素,並且因此結果矢量Qd將含有所需之複數個元素。處理隨後行進至步驟170,其中在一個實施例中更新暫存器Rn內之偏移值。步驟170為可選擇的,但若例如在環之主體內迭代地執行矢量產生指令則可為有用的,因為在下次迭代處暫存器Rn將已經含有用於下次迭代之適宜的啟動值。
作為第4圖中圖示之方法的替代方法,在一些實施例中可以在每次迭代期間更新純量暫存器Rn。因此,在此實施例中,方塊170可被認為駐留在自步驟145之「否」路徑內。在其中決定e等於最大值的最終迭代之後,處理隨後將按照「是」路徑,並且將按照第4圖中圖示之程序另外更新暫存器Rn之內容。
儘管在一個實施例中源暫存器Rm指定緩衝器大小,但在替代性實施例中藉由提供等於自緩衝器之大小減去立即值的值,源暫存器Rm可直接指定換行點值。在此種佈置中,VIWDUP指令之上述功能變為如下: VIWDUP.<size> Qd, Rn, Rm, #imm with imm restricted to {1,2,4,8} offset = Rn; // Rn指定當前偏移量 wrap = Rm; // Rm指定以位元組為單位的緩衝器大小 – imm for e = 0 ... N Qd[e] = offset; if offset == wrap → offset = 0; else offset = offset + imm; Rn = offset;
此方法可以可能地降低硬體要求,並且將賦能關於換行是否與偏移量之遞增並行執行的決定。
VDWDUP指令之對應功能如下: VDWDUP.<size> Qd, Rn, Rm, #imm with imm restricted to {1,2,4,8} offset = Rn; // Rn指定當前偏移量 wrap = Rm; // Rm指定以位元組為單位的緩衝器大小 – imm for e = 0 ... N Qd[e] = offset; if offset == 0 → offset = wrap; else → offset = offset – imm; Rn = offset;
第5圖圖示以上述方式產生之元素矢量隨後可如何用作矢量記憶體存取指令的輸入運算元。具體而言,在第5圖之實例中,假設矢量記憶體存取指令為矢量加載指令,此矢量加載指令經佈置以執行來自記憶體中由位址偏移矢量Qm指定之位置之資料值的收集。隨後將所得資料值儲存為結果矢量Qd內之元素。純量暫存器Rn在記憶體中含有基底位址,此與用以識別待存取之個別位址的偏移矢量組合。如矢量產生指令一樣,矢量存取指令可包括用以識別正處理之資料值的大小的大小欄位。
儘管此種矢量加載指令可用於自記憶體中之任意位址收集資料值,當將矢量源暫存器Qm設定為由執行VIWDUP或VDWDUP指令產生的矢量時,則應理解存取之位址事實上對應於記憶體內之循環緩衝器。因此,若我們考慮例如一情況,其中由先前VIWDUP指令產生之元素矢量圖示為第5圖中之元素200,亦即與先前論述之第3圖之實例3中的結果相同,其中矢量為128位元長度,及資料值為32位元資料值,則如在第5圖中圖示,循環緩衝器將在記憶體位址空間內存取,其中彼循環緩衝器之啟動位置取決於在暫存器Rn內提供的純量值。因此,若純量值具有第一值205,則循環緩衝器採取由元素210圖示之形式,而若在另一實例中純量值具有值215,則循環緩衝器由元素220圖示。因此,考慮循環緩衝器在記憶體位址空間內界定之情況,此方法提供許多靈活性。當使用偏移矢量200時,則將資料自相關循環緩衝器擷取且儲存在結果矢量暫存器Qd內以採取第5圖中圖示之形式225。
儘管如先前參考第4圖論述,當執行VIWDUP或者VDWDUP指令時執行的功能可結果迭代順序實施,其中在每次迭代中產生矢量之一個元素,但在一些實施例中矢量產生電路系統可經佈置以便賦能並行產生多個元素。
第6圖為圖示矢量產生電路系統之一個此種佈置的方塊圖。在此實例中,提供加法器電路系統250,在一個實施例中加法器電路系統250可以含有複數個單獨的加法器區塊,每個加法器區塊經佈置以產生輸出矢量的候選元素。隨後提供修改電路系統260,此修改電路系統具有對應於每個加法器區塊之單獨的修改區塊,每個修改區塊根據是否針對彼候選元素之值偵測換行條件來藉由對應加法器區塊來選擇性地修改候選元素。加法器電路系統接收純量啟動值250,及立即值之各種倍數。修改電路系統260接收換行控制資訊。
在一個實施例中,加法器電路系統250及關聯修改電路系統260兩者可以含有充足之區塊以賦能並行計算矢量之全部元素的值。或者,針對至少一些資料值大小,加法器電路系統及修改電路系統不具有充足之區塊以並行計算全部元素之值是可能的,但可作為兩次或更多次通過加法器電路系統及修改電路系統的結果來計算全部元素之值。
在第6圖中圖示之實例中,假設矢量具有M個元素,及加法器電路系統250及修改電路系統250可並行產生矢量之全部元素。
第7A圖圖示當處理VIWDUP指令(亦即指令之遞增版本)時使用的第6圖之矢量產生電路系統16的一個示例性形式。在此情況下加法器電路系統包含加法器區塊300、加法器區塊302、加法器區塊304、加法器區塊306之序列,每個加法器區塊具備立即值之關聯倍數,以及當前偏移量,亦即純量啟動值。應理解,所需之加法器區塊的數目(假設矢量之全部元素並行產生)取決於資料值大小。針對先前參考第3圖論述之三個實例,應清楚待產生之矢量具有四個元素、八個元素或者十六個元素,此取決於資料值大小(並且假設128位元之矢量長度),由此序列中之最終加法器306將接收對應於三倍立即值、七倍立即值或十五倍立即值之第二輸入。
在一個實施例中,可提供單個矢量產生電路,此矢量產生電路具有十六個加法器區塊及16個修改區塊,及在其中不需要全部區塊之情況下,可關閉某些區塊。因此,當產生具有四個元素之矢量時僅需要啟動區塊之四分之一,當產生具有八個元素之矢量時將需要啟動全部區塊之一半,以及當產生具有十六個元素之矢量時將啟動全部區塊。
隨後每個加法器區塊300將指定立即值之倍數添加至當前偏移量以產生候選元素,此轉遞為對修改電路系統260內之關聯比較區塊310、比較區塊312、比較區塊314、比較區塊316的一個輸入。對每個比較區塊之其他輸入在此示例性實施例中為緩衝器大小值。隨後每個比較區塊決定關聯加法器區塊之輸出大於還是等於緩衝器大小。另外,此計算值(在第7A圖中表示為「a-b」),此值等於自來源於關聯加法器區塊之輸入減去緩衝器大小。每個多工器電路320、多工器電路322、多工器電路324、多工器電路326隨後自關聯加法器區塊接收輸出及自關聯修改區塊接收「a-b」輸出,並且根據由比較區塊執行之比較的輸出來控制。因此,若決定加法器之輸出不大於或等於緩衝器大小,則自加法器之輸出從關聯多工器輸出,而若決定自加法器之輸出大於或等於緩衝器大小,則自修改區塊之輸出從多工器輸出,亦即對應於從由關聯加法器區塊輸出之值減去緩衝器大小的輸出。
在一個實施例中在第7B圖中圖示可用以執行VDWDUP指令所需之操作的電路系統之實例。此外,提供一系列加法器區塊330、加法器區塊332、加法器區塊334、加法器區塊336,並且此外此等接收當前偏移量作為一個輸入,及接收立即值之倍數作為其他輸入。然而,在此實例中接收之倍數為立即值之負數倍,從而導致加法器執行自當前偏移值減去立即值之彼倍數。自加法器區塊之輸出轉遞至修改電路系統上,以及另外執行信號亦轉遞至修改電路系統上。在此實例中,修改電路系統不需要包括比較區塊,但相反可包括進一步的加法器區塊340、加法器區塊342、加法器區塊344、加法器區塊346,此等加法器區塊接收自關聯加法器區塊330、加法器區塊332、加法器區塊334、加法器區塊336之輸出作為一個輸入及接收緩衝器大小資訊作為第二輸入。進一步的加法器區塊之各者隨後將緩衝器大小值添加至自加法器區塊之輸出且提供彼值作為關聯多工器350、多工器352、多工器354、多工器356之第二輸入,每個多工器的第一輸入自加法器電路系統250之加法器區塊330、加法器區塊332、加法器區塊334、加法器區塊336輸出。若自加法器區塊330、加法器區塊332、加法器區塊334、加法器區塊336之任一者的輸出為負值,則進位位元將指出此,並且此可用以相應地控制多工器,以便若進位位元指示負值,則多工器選擇自關聯修改電路區塊340、修改電路區塊342、修改電路區塊344、修改電路區塊346之輸出代替自加法器區塊330、加法器區塊332、加法器區塊334、加法器區塊336之原始輸出。
如自第7A圖及第7B圖之上述比較可見,當實施VDWDUP指令時使用之電路系統可顯著簡化,藉由使用來自加法器之進位信號,從而避免需要比較電路系統。第7C圖圖示當實施VIWDUP指令時可使用之電路系統的替代佈置,此亦賦能使用進位信號以避免比較電路。如在第7C圖中圖示,加法器區塊360、加法器區塊362、加法器區塊364、加法器區塊366之各者按照第7A圖之示例性電路系統接收當前偏移量及立即值之倍數,但另外接收「-BufSize」之第三輸入。因此,此有效地導致加法器在開始時自當前偏移量減去緩衝器大小,並且因此自加法器之一些輸出為負的是可能的,此經由進位位元信號指示。部件370、部件372、部件374、部件376對應於第7B圖之部件340、部件342、部件344、部件346。針對負的任意輸出,關聯多工器380、多工器382、多工器384、多工器386將選擇自部件370、部件372、部件374、部件376之調整輸出而不是自加法器區塊360、加法器區塊362、加法器區塊364、加法器區塊366之原始輸出。
因此,當採用第7C圖之電路系統時,可很有效地執行VIWDUP指令以並行產生矢量元素,並且不需要比較電路系統。藉由使用一列全加法器將三個輸入「減小」為兩個加數以輸入至進位傳播加法器,在加法器360、加法器362、加法器364、加法器366內可輕易地添加三個數字而不是兩個。
此外,應注意,同一電路系統可用以執行VDWDUP操作,僅僅將「-BufSize」輸入設定為零,並且佈置為減去而不是添加立即值之倍數。
在諸如數位信號處理(digital signal processing; DSP)之一些應用中,可存在大致等量之ALU及加載/儲存指令,並且諸如MAC之一些大區塊可能在大部分時間裡閒置。在矢量架構上,此種低效率可能會加劇,因為執行資源會隨著矢量路徑之數量而縮放,從而獲得更高效能。在較小處理器(例如單一問題的有序核心)上,完全縮小之矢量管線的面積額外花費可能是過大的。當更好地使用可用執行資源時用以最小化面積影響的一個方法為重疊執行指令,如第8圖圖示。在此實例中,三個矢量指令包括加載指令VLDR、乘法指令VMUL及移位指令VSHR,並且全部此等指令可同時執行,儘管在它們之間存在資料相依性。此是因為VMUL之元素1僅取決於Q1之元素1,而不是Q1暫存器之全部,所以可在VLDR之執行結束之前啟動VMUL之執行。藉由允許指令重疊,像乘法器此類的昂貴區塊可以在更多時間內保持活躍。
因此,可值得期待的是,賦能微架構實施以重疊執行矢量指令。然而,若架構假設存在定量之指令重疊,則若微架構實施事實上匹配由架構假設之指令重疊量,則此提供高效率,若按比例縮放至使用不同重疊或根本不重疊之不同微架構,則可導致問題。
相反,架構可支援不同重疊範圍,如在第9圖之實例中圖示。矢量指令之執行可分成稱為「節拍」之部分,其中每個節拍對應於預定大小之矢量之部分的處理。節拍為完全執行或根本不執行且無法部分地執行之矢量指令之原子部分。在一個節拍中處理之矢量部分之大小藉由架構界定且可為矢量之任意分數。在第9圖之實例中,節拍經定義為對應於四分之一矢量寬度之處理,以便每矢量指令存在四個節拍。顯而易見,此僅為一個實例且其他架構可使用不同數目之節拍,例如兩個或八個。對應於一個節拍之矢量部分可為等於、大於或小於正在處理之矢量之元素大小。因此,即使元素大小自實施方式至實施方式變化或在不同指令之間之執行時期變化,節拍仍為矢量處理之某個固定寬度。若在一個節拍中正處理之矢量部分包括多個元素,則可在個別元素之間之界限處停用進位信號以確保獨立地處理每個元素。若在一個節拍中處理之矢量部分對應於元素之僅部分及硬體不足以並行計算若干節拍,則在處理之一個節拍期間產生之進位輸出可作為進位輸入輸入至下一個處理節拍,以便兩個節拍之結果共同形成元素。
如在第9圖中圖示,處理電路4之不同微型架構實施方式可以在抽象架構時鐘之一個「滴答」中執行不同數量的節拍。此處,「滴答」對應於架構狀態前進之單位(例如,在簡單架構上,每個滴答可對應於更新與執行指令關聯之全部架構狀態一次,包括更新程式計數器以指向下一個指令)。熟習此項技術者應當理解,諸如佈置管線之已知微架構技術可意味著單個滴答可能需要多個時鐘週期來在硬體位準下執行,並且確實在硬體位準下之單個時鐘週期可以處理多個指令之多個部分。然而,該微架構技術對軟體不可見,因為滴答在架構位準下為原子級別。為了簡明起見,在本揭示案之進一步描述期間忽略此微架構。
如在第9圖之下部實例中圖示,藉由提供用於在一個滴答內並行處理全部節拍之充足硬體資源,一些實施方式可在相同滴答中計劃矢量指令之全部四個節拍。此可能適合於更高效能之實施方式。在此情況下,在架構位準處之指令之間不需要任何重疊,因為可在一個滴答中完成整個指令。
另一方面,面積更有效的實施方式可提供更狹小之處理單元,此可每次滴答僅處理兩個節拍,並如在第9圖之中間實例中圖示,指令執行可與第二矢量執行之第一及第二節拍重疊,與第一指令之第三或第四節拍並行執行,其中對處理電路系統內之不同執行單元執行彼等指令(例如,在第9圖中第一指令為在提供矢量產生電路系統之單元內執行的矢量增量及換行指令,以及第二指令為使用加載/儲存單元執行之加載指令)。
能量/面積更有效的實施方式可提供硬體單元,此硬體單元更狹小且可一次僅處理單個節拍,以及在此情況下每次滴答可處理一個節拍,其中例如藉由如在第9圖之頂部實例中圖示之兩個節拍重疊及交錯的指令執行。
應理解,第9圖中圖示之重疊僅為一些實例,及其他實施方式亦為可能的。例如,處理電路系統4之一些實施方式可在相同滴答聲中並行地支援多個指令之雙重發出,以便具有指令之更大通量。在此情況下,在一個週期內一起啟動之兩個或更多個矢量指令可具有與在下一個週期內啟動之兩個或更多個矢量指令重疊的一些節拍。
除了改變實施方式至實施方式之間的重疊量以按比例縮放至不同效能點之外,矢量指令之間的重疊量亦可在程式內之矢量指令之執行的不同實例之間的執行時期改變。因此,處理電路系統4及指令解碼器6可參考第1圖中圖示之節拍控制電路系統20,此節拍控制電路系統20用以控制相對上述指令執行給定指令的時序。此給與微型架構自由以在更難以實施之某些困難情況中選擇不重疊指令,或取決於指令可用之資源。例如,若存在需要相同資源之給定類型(例如,乘法累加)之背對背指令,以及全部可用MAC或ALU資源已經由另一指令使用,則可能不存在充足之自由資源以啟動執行下一個指令並且而非重疊,第二指令之發出可等到第一個完成。
因此,自第9圖之以上描述,可見關於如何執行矢量產生指令及關聯記憶體存取指令的很多靈活性,但此等可緊密耦合以便致使矢量記憶體存取指令相對較快地耗費藉由矢量產生指令產生的矢量。此可為有用的,因為矢量暫存器之數目通常為稀有資源,並且因此藉由不需要由保留在矢量暫存器內歷時持續期之矢量產生指令產生的矢量,此可釋放矢量暫存器資源。矢量產生指令本身之形式亦有助獲得此益處,因為不需要矢量運算元作為矢量產生指令之源運算元,而是矢量產生指令自立即值或者純量暫存器取其輸入。
在一些實施例中,選擇性地停用由矢量產生指令提供之換行功能是可能的,並且此參考第10圖之流程圖來舉例說明。具體而言,在步驟400執行矢量產生指令,及在步驟405決定純量暫存器Rm(亦即指定換行控制資訊之暫存器)是否設定為保留值。例如,一或多個純量暫存器不是用以指定此種換行控制資訊之有效純量暫存器,並且因此藉由將暫存器Rm設定為彼等暫存器之一者,此識別將停用換行功能。在一個特定實例中,此可藉由指定程式計數暫存器為暫存器Rm來完成。若暫存器Rm不指定保留值,則如步驟410指示,處理照常行進,例如實施第4圖之上述處理。然而,若暫存器Rm為保留值,則在步驟415停用換行,以及在步驟420處矢量產生電路系統使用偏移量及立即值(亦即調整量)產生值之遞增或遞減序列,但沒有任意換行約束。此在使用VIWDUP及VDWDUP指令(在換行停用變體中可稱作VIDUP及VDDUP指令)時可提供額外靈活性。
進一步效能及效率益處可藉由約束純量暫存器Rm及純量暫存器Rn之規範來實現。具體而言,若一個純量暫存器被約束在第一組純量暫存器內,第一組純量暫存器與從中選擇其他純量暫存器之純量暫存器群組不重疊,則使用純量暫存器檔案10之讀出存取電路系統同時存取兩個暫存器之內容是可能的,若暫存器不以此種方式約束,或者暫存器檔案分成兩個獨立組,則讀出存取電路系統具有比所需更少的讀取埠。此在第11圖中示意地圖示,其中兩個群組為偶數及奇數暫存器。因此,偶數暫存器R0 455、偶數暫存器R2 465等等之全部在一個群組內,以及奇數暫存器R1 460、奇數暫存器R3 470等等之全部在另一群組內。若純量啟動值被約束為由彼等群組之一者內的暫存器指定,儘管換行控制資訊由其他群組內之暫存器指定,則如第11圖中之讀出存取電路系統450圖示,使用自多工器475及多工器480之輸出以經由單個讀取埠存取奇數暫存器及偶數暫存器之兩者內容是可能的。此藉由在輸入至最終多工器485之前散佈彼等值來完成,若需要,最終多工器485仍然允許讀取單個暫存器輸出。
儘管在第11圖中圖示關於偶數暫存器群組及奇數暫存器群組之實例,但是更通常地相同益處可藉由將指定偏移之暫存器及指定緩衝器大小的暫存器約束在來自純量暫存器組之不重疊部分來實現。
以下為圖示可如何使用上述之提議指令以有效地允許循環記憶體之使用的代碼之示例性序列: MOV r8, #0 MOV r9, #0 MOV r10, #0 WLSTP.32 Ir, %[loops], looplEnd looplStart: VLDRW.32 q0, [%[srcCoeff]], 0x10 VIWDUP.32 q7, r10, %[circ buff size], 0x4 VLDRW.32 q1, [%[srcSamplesCircular], q7] VMLALZA.S32 r9, r8, q0, q1 LE lr, loop1Start loop1End:
前三個傳送指令用以將純量暫存器r8、純量暫存器r9及純量暫存器r10之內容初始化至邏輯零值,隨後WLSTP指令設置一個迴圈,從而將迴圈次數儲存進鏈路暫存器中。隨後VLDRW指令執行來自純量暫存器中指定之位址的資料之連續加載(指示為「srcCoeff」)且將產生之資料值儲存在矢量暫存器q0中,指令隨後亦遞增純量暫存器中之位址。VIWDUP指令隨後如先前論述地操作以產生儲存在矢量暫存器q7內之偏移矢量。因為資料值大小為32位元,所以立即值為四個。後續VLDRW指令則使用矢量暫存器q7之內容,及在源暫存器中指定之基底位址(稱為「srcSamplesCircular」)用以在記憶體中存取隨後儲存在矢量暫存器q1內之資料值。隨後執行矢量乘法累加運算,其中q0中之每個元素與q1中之對應元素相乘,隨後累加在保存在暫存器r8及暫存器r9內的純量值內。此過程經由多次迴圈迭代運算繼續,直到已經執行了所需之迴圈次數。
如先前論述,可執行之一個類型之矢量記憶體存取操作在由包含複數個位址元素之位址矢量運算元決定之位址處存取記憶體中的複數個資料值。儘管位址矢量運算元可以直接指定待存取之個別位址,但是通常位址矢量運算元指定偏移矢量,此與基底位址組合以識別待存取之位址。此種操作允許資料存取在任意記憶體位置中,且當將來自記憶體中之位址的資料加載進矢量之個別元素中時常稱為收集操作,或當將來自矢量之個別元素儲存至識別的位址位置時稱為散佈操作。
由於此種收集或散佈操作中涉及之位址可為任意的,所以此種操作之處理通常需要序列化各存取請求,使得執行一系列獨立的加載或儲存操作。在其中存取實際上為任意的情況下,此為合理且必要的。然而,發明者認識到存在日益增長之使用此種散佈或收集類型之記憶體存取操作的情況,但其中待存取之位址之至少一些實際上為連續的,且因此多個資料值可經由對記憶體中之連續位址之單個存取而存取。此種情況之一個特定實例為當使用前面描述之矢量增量及換行或矢量減量及換行指令來產生隨後在執行收集或散佈操作時使用的偏移矢量,因為位址將是連續的而不是在到達換行點之位置。
然而,在矢量處理系統中,對記憶體之存取路徑經常為關鍵時序路徑,並且因此在記憶體存取路徑內提供電路系統以在處理矢量記憶體存取操作時分析位址通常是不實際的。
如將參照剩餘附圖描述的,某些實施例可以提供用於減輕此問題之機制。第12圖示意性地圖示一個示例性實施例,此示例性實施例併入了意欲識別某些位址序列何時將為連續的部件,從而協助加載/儲存單元以減少在此種情況下所需的存取次數。如自第12圖與第1圖之比較可見,第12圖圖示裝置2',此裝置基本上為第1圖之裝置2,但具有一些額外部件。具體而言,處理電路系統4'包括在第1圖之處理電路系統4內提供之全部部件,但另外具有旗標設定電路系統500,旗標設定電路系統500可經佈置以在決定針對矢量暫存器12之一者中之儲存產生的矢量包含滿足指定連續準則之複數個元素時設定旗標資訊。由旗標設定電路系統產生之旗標資訊可儲存在各種位置中。例如,可與用於儲存旗標資訊之旗標設定電路系統關聯地提供旗標資訊儲存器505。或者,可藉由提供與每個矢量暫存器關聯之大量額外位元而將旗標資訊儲存器510有效地併入矢量暫存器檔案12內以擷取必要的旗標資訊。
若針對特定矢量暫存器,旗標設定電路系統500設定旗標資訊以識別彼矢量暫存器之至少一部分具有元素值滿足指定連續準則的元素,則當加載/儲存單元隨後使用參考彼暫存器指定之偏移矢量執行收集或散佈操作時,可使用旗標資訊以決定哪些位址元素為連續的,由此可能地減少用以執行收集或散佈操作所需之對記憶體系統8的存取次數。在不存在正設定之旗標資訊的情況下,則加載/儲存單元將以標準方式處理收集或散佈操作。此可包括需要加載/儲存單元18在識別不連續位址時處理每個位址元素,並因此針對每個位址元素執行單獨的存取。或者,可將一些其他部件提供在記憶體存取路徑內以試圖至少部分地最佳化存取。就提供此種額外電路系統而言,除了本文所述之旗標資訊機制之外,亦可以使用此方式。
旗標設定電路系統500試圖決定存在或者不存在之指定連續準則可採取各種形式,但在一個實施例中需要矢量中之元素的至少一子集具有遵照定期進行序列之值。隨後設定旗標資訊以便賦能處理電路系統以決定矢量中之哪些元素具有遵照定期進行序列之值。
第13A圖圖示根據一個實施例之可提供在旗標資訊儲存器505內之條目。在此實例中,提供多個條目,每個條目具有暫存器ID欄位515以識別條目相關之暫存器,以及包含一或多個有效旗標之有效旗標欄位517。在一個實施例中,單個有效旗標可與整個矢量關聯使用,並且將僅當矢量中之全部元素皆遵照定期進行序列時設定。或者,可在有效旗標欄位517內提供多個有效旗標,每個旗標與矢量之不同部分關聯且根據關聯部分是否含有遵照定期進行序列之元素而設定。若需要,可擷取額外資訊以識別定期進行序列是否在多個部分之間延伸。因此,例如,若存在關於矢量中之四個部分的四個有效旗標,及有效旗標指示部分2及部分3兩者含有遵照定期進行序列之元素,則旗標資訊可視需要另外擷取部分3中之定期進行序列是否為部分2中之定期進行序列的不間斷連續。
正尋找之定期進行序列可採取各種形式,但在一個實施例中,若彼等值用作記憶體存取操作之位址元素,則連續記憶體位址將由遵照定期進行序列之值產生。如前期論述,僅支援單個資料值大小,並由此定期進行序列將與識別關於彼資料值大小之連續位址的值相關。然而,在替代性實施例中,可以支援多個不同資料值大小,以及在彼情況下可在每個條目內提供大小欄位519以識別旗標資訊相關之資料值的大小。具體而言,應理解,值之序列可用以在資料值具有一個大小時表示連續位址,但若資料值具有不同大小則值之相同序列將不一定表示連續位址。
作為另一實例,系統支援多個資料值大小,但所述實施例之旗標設定機制僅關於特定大小之資料值實施是可能的。例如,可決定當正處理之資料值為位元組大小之資料值時實施旗標設定方法,但當資料值具有任何更大大小時不實施旗標設定方法。在此種情況下,大小資訊欄位519可並非必需。
類似地,旗標設定方法之使用限於一或多個特定矢量暫存器,及旗標資訊儲存器中之每個條目可與特定暫存器直接關聯是可能的。在彼事件中,可不一定提供暫存器識別符欄位515。
在又一替代實施例中,僅對於單個暫存器,可以保留旗標資訊,尤其為最終使用之矢量提供旗標資訊。在此種實施例中,若代碼以緊接在記憶體存取指令之前的指令產生可表示連續偏移的元素矢量的方式來構造,則此實施方式僅檢查相同的矢量用作記憶體存取指令之偏移暫存器且隨後因此讀取旗標資訊。此外,此避免了在旗標資訊內擷取暫存器識別符的任何特定需要。
第13B圖圖示與矢量暫存器檔案12之矢量暫存器組合提供的替代旗標資訊儲存器510之示例性佈置。對於每個矢量暫存器520,可提供對應有效旗標欄位522以儲存與彼暫存器關聯之一或多個有效旗標。若需要亦可提供大小資訊欄位524。在此種方法中,對於矢量暫存器檔案12中之每個矢量暫存器,可能同時保留有效旗標資訊。
第14圖為圖示當執行矢量記憶體存取操作時如何使用旗標資訊的流程圖。在步驟550,決定將要執行矢量記憶體存取操作。具體而言,在一個實施例中,在此點處加載/儲存單元18決定要執行矢量記憶體收集或散佈操作。對於固有地識別記憶體中之連續位址的其他類型之矢量加載或儲存指令,不需要旗標資訊,並且可以採取位址之已知連續特性的標準方式處理彼等存取。然而,如前提及,對於散佈或收集類型操作,此等可能為記憶體中之任意位址,但與用以提供位址偏移資訊之矢量暫存器關聯的旗標資訊之存在可賦能加載/儲存單元以決定位址元素之任一者是否事實上與連續位址相關,以及使用彼資訊以可能地減少所需的存取次數。
因此,在步驟555,決定旗標資訊是否與提供位址矢量運算元之矢量暫存器關聯,在一個實施例中此為隨後與基底位址組合以識別要存取之位址的位址偏移矢量。若旗標資訊與彼矢量暫存器關聯,則在步驟560,當決定存取資料值所需之對記憶體的存取次數時由加載/儲存單元18使用旗標資訊。然而,另外,處理行進至步驟565,在步驟565以標準方式執行收集或散佈操作以存取資料值。
第15A圖至第15C圖圖示偏移值的各種實例,此等偏移值經提供為對指定矢量收集操作之矢量加載指令的輸入。在此實例中,假定矢量加載指令將四個32位元資料值加載進128位元目標地暫存器Qd中,其中在源矢量暫存器Qm內提供偏移資訊,及在純量暫存器Rn中指定基底位址。在第15A圖中圖示之實例中,假定偏移矢量570提供值之定期遞增序列,此序列可用以產生四個32位元資料值的連續位址。亦在此實例中,假定旗標資訊572具有單個有效旗標,此有效旗標經設定以識別定期進行序列與整個矢量寬度相關。亦設定大小資訊欄位以識別假定資料大小為32位元,以及設定暫存器ID欄位以識別旗標資訊與暫存器Qm相關。由於矢量加載指令是以32位元量進行操作的,所以當參考旗標資訊時,決定大小資訊與源暫存器Qm相匹配,以及暫存器ID與源暫存器Qm相匹配。由於設定有效旗標,因此加載/儲存單元瞭解全部位址元素遵照定期進行序列,此在與基底位址組合時將導致識別記憶體中之連續位址。
加載/儲存單元18如何使用資訊將取決於包括可用記憶體存取頻寬之許多因素。例如,若支援64位元記憶體存取頻寬,則基於第15A圖中圖示之資訊,加載/儲存單元可執行兩個64位元存取,每個指向兩個連續位址,從而賦能藉由每次存取擷取兩個資料值。相反若支援128位元記憶體存取頻寬,則加載/儲存單元18可執行一個128位元存取,此指向四個連續位址以便經由單個存取擷取全部四個資料值。
第15B圖圖示第二個實例,其中旗標資訊在有效旗標欄位內具有兩個有效旗標,且因此旗標資訊採取元素574之特定示例性矢量的形式576。因此,在此實例中,若支援至少一64位元記憶體存取,則加載/儲存單元可發出單個存取以便擷取前兩個資料值。通常將需要單獨之存取以獲得第三個資料值及第四個資料值。
在設定兩個有效旗標之事件中,由於源矢量暫存器Qm之下半部分及上半部分皆含有遵照定期進行序列之元素,則視情況可以擷取一些額外資訊以識別是否在兩個半部分之間存在連續性。例如,若Qm保存元素20、元素16、元素4、元素0,則設定兩個有效旗標,但將不會設定此額外資訊,而若Qm保存值12、值8、值4、值0,則將設定兩個有效旗標,且另外將設定此另一旗標以識別兩個半部分之間的連續性。此在某些情況中可有用。例如,若記憶體存取路徑具有128位元之頻寬,則此額外資訊可用以決定是否需要發出兩個64位元連續存取,或是否可發出單個128位元連續存取。
第15C圖圖示又一實例,其中偏移之源矢量採取形式580,以及旗標資訊採取形式582。在此實例中,旗標資訊欄位不是簡單地含有一系列旗標,而是提供充足之資訊以識別元素之何者表示連續位址。在此實例中,矢量中之前三個元素具有所需之圖案,以及可在旗標欄位內擷取彼資訊。應理解此可以各種方式擷取。例如,可以識別連續性之起始元素及結束元素,或者可以識別連續序列之起始元素以及隨後連續之多個元素。
在一個實施例中,旗標設定電路系統500可經佈置以在一或多個指定事件發生之情況下使旗標資訊無效。具體而言,在如第16A圖圖示之一個實施例中,若在步驟600決定發生異常,則在步驟605使旗標資訊無效。因此,異常形成導致旗標資訊無效之指令事件的一者。
第16B圖圖示指定事件之另一實例,在此實例中,指定事件為當處理電路系統寫入至矢量暫存器時具有與其關聯之旗標資訊。鑒於寫入操作已經發生,旗標資訊不能再被認為是準確的,因此無效。在步驟610,決定當前指令是否寫入至矢量暫存器,並且若是,則在步驟615決定是否針對彼矢量暫存器儲存了有效旗標資訊。若是,則在步驟620使彼矢量暫存器之旗標資訊無效。此後在步驟625執行指令。若自步驟610或者步驟615遵照否路徑,則處理直接行進至步驟625以執行指令,並且保留任何旗標資訊。
藉由在發生此種事件時佈置將被無效的旗標資訊,此意謂旗標資訊不一定在架構上可見,因此不需要圍繞異常來保存及恢復。此簡化了旗標設定機制之實施方式。
存在可用以觸發旗標設定電路系統500以產生元素矢量之旗標資訊的許多機制。第17圖圖示一個示例性佈置,其中當執行前期描述之VIWDUP或VDWDUP指令之一者時觸發旗標設定電路系統。具體而言,若在步驟650決定執行此等指令之一者,則在步驟655,儘管矢量產生電路系統16執行彼指令,但其提供資訊至旗標設定電路系統500以識別在產生之矢量內是否發生換行,以及若是,識別在矢量內發生彼換行之位置。
在步驟660,旗標設定電路系統則分析彼資訊且因此設定相關暫存器之旗標資訊。具體而言,若不發生換行,則已知針對彼VIWDUP或VDWDUP指令識別之資料值大小,若矢量用作對後續收集或散佈操作之輸入,則元素矢量將表示與相同資料值大小有關之連續位址,並且因此可設定一或多個有效旗標。類似地,若存在換行點,則仍然可決定矢量內之哪些元素表示連續位址,以及因此可設定旗標資訊。在此種情況下,此將取決於正在產生之旗標資訊的特性及粒度,關於是否可以設定任何有效旗標來識別含有與連續位址有關的元素的矢量的至少一部分。
第18圖圖示可用以調用旗標設定電路系統500之另一機制,代替第17圖之方法,或者作為使用第17圖之方法的補充。在步驟665,決定是否有新指令需解碼,以及若有則解碼器電路系統在步驟670決定彼指令之執行是否產生元素具有遵照定期進行序列之值的矢量。例如,可能存在已知當執行時將產生定期進行序列的某些指令,彼可用以表示特定資料值大小之連續位址的位址偏移。若在步驟670作出此種決定,則在步驟675,解碼器電路系統將控制信號發送至旗標設定電路系統以致使旗標設定電路系統在隨後於處理電路系統4’內執行彼指令時設定相關矢量暫存器之旗標資訊。另外,在步驟680,產生控制信號以致使處理電路系統在處理回到步驟665之前執行指令所需之操作。若在步驟670決定不保證指令之執行將產生元素具有遵照定期進行序列之值的矢量,則處理直接行進至步驟680,繞過步驟675。
第19圖圖示可用以調用旗標設定電路系統之又一機制,代替第17圖及第18圖中論述之機制,或者作為第17圖及第18圖中論述之機制的補充。在此實例中,在步驟685決定是否自記憶體加載矢量。當決定矢量已經自記憶體加載進矢量暫存器之一者中時,則可在步驟690調用旗標設定電路系統內之比較電路系統以分析矢量之元素以識別元素之至少一子集是否具有遵照定期進行序列之值(此可針對各種不同的可能資料值大小來分析)。因此隨後由於藉由旗標設定電路系統執行之分析,可以設定旗標資訊。應理解,在第19圖中識別之比較運算可藉由不在對記憶體之關鍵存取路徑上的電路系統執行,以及在系統之操作中之適宜點處不會影響處理電路系統的效能。一旦產生旗標資訊,則若彼矢量隨後用作收集或散佈操作之位址偏移的輸入矢量,可參照旗標資訊以可能地減少處理收集或散佈操作所需之對記憶體的存取次數。
以下代碼序列圖示旗標設定機制可如何提高效能的實例: VIWDUP.8 q7, r0, r2, #1 // q0 = [0,1,2.,15] VLDRW.8 q1, [%[basePtr], q7]
VIWDUP指令之執行產生單調遞增的矢量值,僅在此換行之稀少情況下才會發生。在一個示例性實施方式中,旗標設定電路系統可每個字(亦即32位元)設定一個旗標,表明彼字內之全部元素單調遞增。當隨後執行矢量加載指令時,可以讀取此等旗標,並且不是正常處理收集載入,只要此等旗標指示連續元素,就可以發出連續載入。
第20圖圖示可使用之虛擬機實施方式。儘管前文描述之實施例以用於操作支援相關技術之特定處理硬體之裝置及方法方式實施本發明,但亦可能提供硬體裝置之所謂虛擬機實施方式。此等虛擬機實施方式在執行支援虛擬機程式730之主作業系統740之主處理器750上執行。通常,需要大功率處理器以提供在合理速度下執行之虛擬機實施方式,但此種方法在某些情況下為合理的,諸如當期望為了相容性或重複使用原因而執行另一處理器之本機代碼。虛擬機程式730提供虛擬硬體介面至客程式720,客程式720與原本由真實硬體提供之硬體介面相同,此真實硬體為由虛擬機程式730模型化之裝置。因此,可以使用虛擬機程式730自客程式720內執行包括對如上所述之記憶體存取之控制之程式指令,以模型化與虛擬機硬體之互動。客程式720可為裸金屬程式,或者可為以與主作業系統740執行虛擬機應用程式730相似之方式執行應用程式之客作業系統。亦應理解,存在不同類型之虛擬機,並在一些類型中虛擬機直接在主硬體750上執行而無需主作業系統740。
在本申請案中,使用用語「經配置...」意謂著裝置元件具有能夠執行所定義操作之配置。在此上下文中,「配置」意謂硬體或軟體之互連的佈置或方式。例如,裝置可具有提供定義操作之專用硬體,或處理器或其他處理裝置可以經程式化以執行功能。「經配置以」不暗示裝置元件需要以任何方式改變以便提供所定義之操作。
儘管本文已參考所附圖式詳細地描述本發明之說明性實施例,但應理解,本發明並不限於彼等精確實施例且熟習此項技術者可在不背離如隨附申請專利範圍所定義之本發明之範疇及精神之情況下在其中實施各種改變、添加及修改。例如,可以將從屬請求項之特徵與獨立請求項之特徵進行各種組合,而不背離本發明之範疇。
2‧‧‧資料處理裝置2'‧‧‧資料處理裝置4‧‧‧處理電路系統4'‧‧‧處理電路系統6‧‧‧指令解碼器8‧‧‧記憶體系統10‧‧‧純量暫存器12‧‧‧矢量暫存器16‧‧‧矢量產生電路系統18‧‧‧加載/儲存單元20‧‧‧節拍控制電路系統50‧‧‧矢量產生指令52‧‧‧第一欄位53‧‧‧大小資訊欄位54‧‧‧目標地矢量暫存器欄位55‧‧‧欄位56‧‧‧換行控制資訊欄位57‧‧‧調整量欄位70‧‧‧調整量欄位75‧‧‧純量啟動值80‧‧‧緩衝器大小100‧‧‧步驟105‧‧‧步驟110‧‧‧步驟115‧‧‧步驟120‧‧‧步驟125‧‧‧步驟130‧‧‧步驟135‧‧‧步驟140‧‧‧步驟145‧‧‧步驟150‧‧‧步驟155‧‧‧步驟160‧‧‧步驟165‧‧‧步驟170‧‧‧步驟200‧‧‧偏移量/元素205‧‧‧第一值210‧‧‧元素215‧‧‧值220‧‧‧元素225‧‧‧形式250‧‧‧加法器電路系統260‧‧‧修改電路系統300‧‧‧加法器區塊302‧‧‧加法器區塊304‧‧‧加法器區塊306‧‧‧加法器區塊310‧‧‧比較區塊312‧‧‧比較區塊314‧‧‧比較區塊316‧‧‧比較區塊320‧‧‧多工器電路322‧‧‧多工器電路324‧‧‧多工器電路326‧‧‧多工器電路330‧‧‧加法器區塊332‧‧‧加法器區塊334‧‧‧加法器區塊336‧‧‧加法器區塊340‧‧‧加法器區塊342‧‧‧加法器區塊344‧‧‧加法器區塊346‧‧‧加法器區塊350‧‧‧多工器352‧‧‧多工器354‧‧‧多工器356‧‧‧多工器360‧‧‧加法器區塊362‧‧‧加法器區塊364‧‧‧加法器區塊366‧‧‧加法器區塊370‧‧‧部件372‧‧‧部件374‧‧‧部件376‧‧‧部件380‧‧‧多工器382‧‧‧多工器384‧‧‧多工器386‧‧‧多工器400‧‧‧步驟405‧‧‧步驟410‧‧‧步驟415‧‧‧步驟420‧‧‧步驟450‧‧‧讀取存取電路系統455‧‧‧偶數暫存器460‧‧‧奇數暫存器465‧‧‧偶數暫存器470‧‧‧奇數暫存器475‧‧‧多工器480‧‧‧多工器485‧‧‧多工器500‧‧‧旗標設定電路系統505‧‧‧旗標資訊儲存器510‧‧‧旗標資訊儲存器515‧‧‧暫存器ID欄位517‧‧‧有效旗標欄位519‧‧‧大小資訊欄位520‧‧‧大小資訊欄位522‧‧‧有效旗標欄位524‧‧‧大小資訊欄位550‧‧‧步驟555‧‧‧步驟560‧‧‧步驟565‧‧‧步驟570‧‧‧偏移矢量572‧‧‧旗標資訊574‧‧‧元素576‧‧‧形式580‧‧‧形式582‧‧‧形式600‧‧‧步驟605‧‧‧步驟610‧‧‧步驟615‧‧‧步驟620‧‧‧步驟625‧‧‧步驟650‧‧‧步驟655‧‧‧步驟660‧‧‧步驟665‧‧‧步驟670‧‧‧步驟675‧‧‧步驟680‧‧‧步驟685‧‧‧步驟690‧‧‧步驟720‧‧‧客程式730‧‧‧虛擬機程式740‧‧‧虛擬機程式750‧‧‧主硬體
本發明之技術係僅以舉例方式參照其實施例來進一步描述,該等實施例係如附圖中所說明,圖中:
第1圖為根據一個實施例之裝置的方塊圖;
第2圖示意地圖示根據一個實施例之在矢量產生指令內提供之欄位;
第3圖示意地圖示根據一個實施例之可針對矢量產生指令之特定實例產生的元素之矢量;
第4圖為根據一個實施例之圖示當執行矢量產生指令時執行的處理的流程圖;
第5圖示意地圖示根據一個實施例之由矢量產生指令產生之矢量可以如何用作對矢量存取指令之輸入以識別記憶體位址空間內之循環緩衝器;
第6圖為根據一個實施例之更詳細地圖示第1圖之矢量產生電路系統的佈置的方塊圖;
第7A圖至第7C圖示意地圖示根據三個示例性實施例之第6圖之加法器電路系統及修改電路系統的佈置;
第8圖圖示矢量指令之重疊執行的實例;
第9圖圖示在不同處理器實施方式之間或在指令執行之不同實例之間之執行時期按比例縮放連續矢量指令之間的重疊量的三個實例;
第10圖為根據一個實施例之示意地圖示可以如何選擇性地停用矢量產生指令之換行功能的流程圖;
第11圖示意地圖示根據一個實施例之可以與一組純量暫存器關聯使用的讀出存取電路系統之佈置;
第12圖為根據另一實施例之裝置的方塊圖;
第13A圖及第13B圖圖示根據所述實施例之第12圖中圖示之旗標資訊儲存器之兩個示例性佈置;
第14圖為根據一個實施例之圖示當執行矢量記憶體存取操作時可以如何使用旗標資訊的流程圖;
第15A圖至第15C圖圖示可在所述實施例中使用之旗標資訊的不同示例性佈置;
第16A圖及第16B圖為根據一個實施例之指示可以致使旗標資訊無效之指定事件的流程圖;
第17圖至第19圖為根據所述實施例之圖示可用以填充旗標資訊之不同機制的流程圖;以及
第20圖圖示可使用的虛擬機實施方式。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
2'‧‧‧資料處理裝置
4'‧‧‧處理電路系統
6‧‧‧指令解碼器
8‧‧‧記憶體系統
10‧‧‧純量暫存器
12‧‧‧矢量暫存器
16‧‧‧矢量產生電路系統
18‧‧‧加載/儲存單元
20‧‧‧節拍控制
500‧‧‧旗標設定電路系統
505‧‧‧旗標資訊儲存器
510‧‧‧旗標資訊儲存器
Claims (18)
- 一種資料處理裝置,包含:一組矢量暫存器;旗標設定電路系統,回應針對該組之一矢量暫存器中的儲存產生的一矢量包含滿足指定連續準則之複數個元素的一決定,以產生與彼矢量暫存器關聯之旗標資訊;以及處理電路系統,用以執行一矢量記憶體存取操作,以在由包含複數個位址元素之一位址矢量運算元決定之位址處在記憶體中存取複數個資料值,該位址矢量運算元在該組之一指定矢量暫存器中提供,以及儲存在該指定矢量暫存器中之該複數個矢量元素形成該複數個位址元素;該處理電路系統經佈置以決定該指定矢量暫存器是否具有與其關聯之旗標資訊,以及當該指定矢量暫存器是具有與其關聯之旗標資源時,在決定用於存取該複數個資料值所需之對記憶體的一存取次數時使用該旗標資訊。
- 如請求項1所述之資料處理裝置,其中當該指定矢量暫存器具有與其關聯之旗標資訊時,該處理電路系統經佈置以經由對該記憶體中之連續位址之一單個存取而存取多個該等資料值。
- 如請求項2所述之資料處理裝置,其中在缺少與該指定矢量暫存器關聯之該旗標資訊之情況下,該處理電路系統經佈置以當決定用以存取該複數個資料值所需之對記憶體之該存取次數時將每個資料值視為在該記憶體中具有一不連續位址。
- 如請求項1所述之資料處理裝置,其中該等指定連續準則需要該矢量中之該等元素之至少一子集具有遵照一定期進行序列之值,以及該旗標資訊賦能該處理電路系統決定該矢量中之哪些元素具有遵照該定期進行序列之值。
- 如請求項4所述之資料處理裝置,其中該旗標資訊包含至少一個有效旗標,每個有效旗標與該矢量之一部分關聯,以及當在該矢量之該關聯部分內之該等元素具有遵照該定期進行序列之值時設定每個有效旗標。
- 如請求項5所述之資料處理裝置,其中該旗標資訊進一步識別,當該矢量之多個相鄰部分具有有效旗標組時,在該等多個相鄰部分之間之該定期進行序列中是否具有一連續性。
- 如請求項5所述之資料處理裝置,其中該等指定連續準則需要該矢量中之全部該等元素皆具有遵照該定期進行序列之值,以及當該矢量中之全部該等 元素皆具有遵照該定期進行序列之值時該旗標資訊包含一有效旗標組。
- 如請求項4所述之資料處理裝置,其中該旗標資訊包含大小資訊,該大小資訊識別一資料值大小,當彼等元素用作該矢量記憶體存取操作的該等位址元素時,具有遵照該定期進行序列之值的該矢量中之該元素將針對該資料值大小在記憶體中產生連續位址。
- 如請求項1所述之資料處理裝置,進一步包含一控制儲存器,在該控制儲存器中儲存該旗標資訊以供該處理電路系統參考。
- 如請求項9所述之資料處理裝置,其中該旗標資訊包含一暫存器識別符欄位,該暫存器識別符欄位的值指示彼旗標資訊相關之該矢量暫存器。
- 如請求項9所述之資料處理裝置,其中該控制儲存器具有多個條目以賦能維持多個矢量暫存器之旗標資訊。
- 如請求項1所述之資料處理裝置,其中每個矢量暫存器包括用於彼矢量暫存器之該旗標資訊之儲存的一控制儲存器元件。
- 如請求項1所述之資料處理裝置,其中該旗標設定電路系統經佈置以在一指定事件發生時使該旗標資訊無效。
- 如請求項13所述之資料處理裝置,其中該指定事件被認為當以下之至少一者發生時發生:-一異常事件發生;-該處理電路系統執行寫入至該旗標資訊所關聯之該矢量暫存器之一操作。
- 如請求項1所述之資料處理裝置,進一步包含解碼器電路系統,該解碼器電路系統用以解碼指令以控制藉由該處理電路系統執行之該等操作,該解碼器電路系統回應於解碼一已知類型之一矢量產生指令將致使該處理電路系統產生包含複數個元素之一矢量,該複數個元素之值遵照一定期進行序列,以產生控制信號以致使該旗標設定電路系統產生與由該處理電路系統產生之該矢量關聯的該旗標資訊。
- 如請求項1所述之資料處理裝置,其中:回應於識別一純量啟動值及換行控制資訊之一矢量產生指令,該處理電路系統經佈置以產生包含複數個元素之一矢量,該處理電路系統經佈置以產生該矢量以便該複數個中之該第一元素取決於該純量啟動值,以及該複數個元素之該等值遵照視需要不得不換行之一定期進行序列,以保證每個值在由該換行控制資訊決定之界限內;以及當產生該矢量時,該處理電路系統經佈置以提供資 訊至該旗標設定電路系統以賦能該旗標設定電路系統決定是否產生該旗標資訊。
- 如請求項1所述之資料處理裝置,其中該旗標設定電路系統包含比較電路系統,該比較電路系統用以分析針對一矢量暫存器中之儲存產生的一矢量之該等元素以決定該矢量中之該等元素之至少一子集是否具有遵照一定期進行序列之值,以及用以根據彼分析產生該旗標資訊。
- 一種在具有一組矢量暫存器之一資料處理裝置中控制矢量記憶體存取的方法,包含以下步驟:決定針對該組之一矢量暫存器中的儲存產生之一矢量是否包含滿足指定連續準則之複數個元素;回應於決定該矢量是包含滿足該等指定連續準則之複數個元素,產生與該矢量暫存器關聯之旗標資訊;執行一矢量記憶體存取操作以在由包含複數個位址元素之一位址矢量運算元決定之位址處在記憶體中存取複數個資料值,該位址矢量運算元在該組之一指定矢量暫存器中提供,以及儲存在該指定矢量暫存器中之該複數個矢量元素形成該複數個位址元素;以及當執行該記憶體存取操作時,決定該指定矢量暫存器是否具有與其關聯之旗標資訊,以及當該指定矢量暫存器是具有與其關聯之旗標資訊時,在決定用於存 取該複數個資料值所需之對記憶體的一存取次數時使用該旗標資訊。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP16206294.7 | 2016-12-22 | ||
EP16206294.7A EP3340037B1 (en) | 2016-12-22 | 2016-12-22 | A data processing apparatus and method for controlling vector memory accesses |
??16206294.7 | 2016-12-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201830234A TW201830234A (zh) | 2018-08-16 |
TWI764966B true TWI764966B (zh) | 2022-05-21 |
Family
ID=57629389
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106144997A TWI764966B (zh) | 2016-12-22 | 2017-12-21 | 用於控制矢量記憶體存取之資料處理裝置及方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10303399B2 (zh) |
EP (1) | EP3340037B1 (zh) |
CN (1) | CN108319559B (zh) |
TW (1) | TWI764966B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10623222B2 (en) * | 2018-08-30 | 2020-04-14 | Xilinx, Inc. | Vectorized peak detection for signal processing |
CN110058884B (zh) * | 2019-03-15 | 2021-06-01 | 佛山市顺德区中山大学研究院 | 用于计算型存储指令集运算的优化方法、系统及存储介质 |
US10970070B2 (en) * | 2019-03-29 | 2021-04-06 | Arm Limited | Processing of iterative operation |
CN117083594A (zh) * | 2021-04-27 | 2023-11-17 | 微芯片技术股份有限公司 | 用于在矢量处理器中进行去同步化执行的方法和设备 |
US11656987B2 (en) * | 2021-10-18 | 2023-05-23 | Dell Products L.P. | Dynamic chunk size adjustment for cache-aware load balancing |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI301712B (zh) * | 2005-10-17 | 2008-10-01 | Inventec Corp | |
US20130326160A1 (en) * | 2012-06-02 | 2013-12-05 | Zeev Sperber | Gather using index array and finite state machine |
US20150032929A1 (en) * | 2013-07-26 | 2015-01-29 | Ziv Zamsky | Circuitry for a computing system, lsu arrangement and memory arrangement as well as computing system |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7376812B1 (en) * | 2002-05-13 | 2008-05-20 | Tensilica, Inc. | Vector co-processor for configurable and extensible processor architecture |
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 |
EP2075696A3 (en) * | 2007-05-10 | 2010-01-27 | Texas Instruments Incorporated | Interrupt- related circuits, systems and processes |
US9557995B2 (en) * | 2014-02-07 | 2017-01-31 | Arm Limited | Data processing apparatus and method for performing segmented operations |
US9875214B2 (en) * | 2015-07-31 | 2018-01-23 | Arm Limited | Apparatus and method for transferring a plurality of data structures between memory and a plurality of vector registers |
-
2016
- 2016-12-22 EP EP16206294.7A patent/EP3340037B1/en active Active
-
2017
- 2017-12-07 US US15/834,434 patent/US10303399B2/en active Active
- 2017-12-18 CN CN201711364484.8A patent/CN108319559B/zh active Active
- 2017-12-21 TW TW106144997A patent/TWI764966B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI301712B (zh) * | 2005-10-17 | 2008-10-01 | Inventec Corp | |
US20130326160A1 (en) * | 2012-06-02 | 2013-12-05 | Zeev Sperber | Gather using index array and finite state machine |
US20150032929A1 (en) * | 2013-07-26 | 2015-01-29 | Ziv Zamsky | Circuitry for a computing system, lsu arrangement and memory arrangement as well as computing system |
Also Published As
Publication number | Publication date |
---|---|
US20180181347A1 (en) | 2018-06-28 |
US10303399B2 (en) | 2019-05-28 |
CN108319559A (zh) | 2018-07-24 |
EP3340037B1 (en) | 2019-08-28 |
CN108319559B (zh) | 2023-03-10 |
TW201830234A (zh) | 2018-08-16 |
EP3340037A1 (en) | 2018-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI764966B (zh) | 用於控制矢量記憶體存取之資料處理裝置及方法 | |
US11188330B2 (en) | Vector multiply-add instruction | |
US20090106537A1 (en) | Processor supporting vector mode execution | |
JP2002333978A (ja) | Vliw型プロセッサ | |
JP2012103959A (ja) | ベクトル処理回路、命令発行制御方法、及びプロセッサシステム | |
US20230367598A1 (en) | Vector maximum and minimum with indexing | |
TWI770079B (zh) | 向量產生指令 | |
US20230359385A1 (en) | Quick clearing of registers | |
US8055883B2 (en) | Pipe scheduling for pipelines based on destination register number | |
JP2874351B2 (ja) | 並列パイプライン命令処理装置 | |
KR100974401B1 (ko) | 주소 레지스터의 내용을 스와핑하기 위한 방법 및 장치 | |
US20200371793A1 (en) | Vector store using bit-reversed order | |
US11900112B2 (en) | Vector reverse | |
US20240020119A1 (en) | Vector processor with extended vector registers | |
JP2861234B2 (ja) | 命令処理装置 | |
JP3743155B2 (ja) | パイプライン制御型計算機 |