TWI716425B - 用於執行疊接操作的裝置和方法 - Google Patents
用於執行疊接操作的裝置和方法 Download PDFInfo
- Publication number
- TWI716425B TWI716425B TW105124012A TW105124012A TWI716425B TW I716425 B TWI716425 B TW I716425B TW 105124012 A TW105124012 A TW 105124012A TW 105124012 A TW105124012 A TW 105124012A TW I716425 B TWI716425 B TW I716425B
- Authority
- TW
- Taiwan
- Prior art keywords
- vector
- data
- data element
- register
- control
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 16
- 239000013598 vector Substances 0.000 claims abstract description 357
- 238000012545 processing Methods 0.000 claims abstract description 43
- 230000000873 masking effect Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/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/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- 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/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本案介紹用以執行疊接操作的設備及方法,該設備具有一組向量暫存器及一或更多個控制暫存器。處理電路系統經排列以執行指令序列,該序列包括辨識至少一第一向量暫存器及至少一個控制暫存器的疊接指令。第一向量暫存器儲存資料元件中具有向量長度的第一向量,且至少一個控制暫存器儲存獨立於向量長度而辨識佔據資料元件之第一向量內的順序資料元件位置的一或更多個資料元件。處理電路系統可回應於疊接指令的執行以從第一向量中提取由至少一個控制暫存器中之控制資料辨識的每一資料元件,且在資料元件之結果向量內輸出提取的資料元件,該結果向量亦包含來自第二向量的資料元件。由於至少一個控制暫存器中之控制資料不參考向量長度而辨識待提取的資料元件,因此此舉提供可在第一向量內選擇待提取資料元件的方式之較大靈活性。
Description
本技術係關於執行疊接操作的裝置及方法。
在現代資料處理系統中,能夠執行疊接操作以便提取第一向量內某一數目之連續資料元件,然後在結果向量內將彼等提取資料元件隨來自第二向量的資料元件一起輸出是十分實用的。將需要提供執行該等疊接操作的一高效及靈活方式。
在第一示例性配置中,提供一種設備,該設備包括:一組向量暫存器;一或更多個控制暫存器;及執行指令序列的處理電路系統,該指令序列包括辨識至少第一向量暫存器及至少一個控制暫存器的疊接指令,該第一向量暫存器儲存資料元件中具有一向量長度的第一向量,且該至少一個控制暫存器儲存控制資料,該控制資料獨立於該向量長度而辨識佔據資料元件之第一向量內的順序資料元件位置的一或更多個資料元件;該處理電路系統可回應於疊接指令的執行以從第一向量中提取至少一個控制暫存器中的控制資料所辨識的每一資料元件,且在資料元件之結果向量內輸出提取的資料元件,該結果向量亦包含來自第二向量的資料元件。
在又一示例性配方法中,提供一種在具有一組向量暫存器及一或更多個控制暫存器的設備內執行疊接操作的方法,該方法包括:執行辨識至少一第一向量暫存器及至少一個控制暫存器的疊接指令,該第一向量暫存器儲存資料元件中具有一向量長度的第一向量,且該至少一個控制暫存器儲存控制資料,該控制資料獨立於該向量長度而辨識佔據資料元件之第一向量內的順序資料元件位置的一或更多個資料元件;疊接指令的該執行包括:從第一向量中提取至少一個控制暫存器中的控制資料所辨識的每一資料元件;及在資料元件之結果向量內輸出提取的資料元件,該結果向量亦包含來自第二向量的資料元件。
在又一示例性配置中,提供一種設備,該設備包括:一組向量暫存器手段;一或更多個控制暫存器手段;執行指令序列的處理手段,該指令序列包括辨識至少一第一向量暫存器手段及至少一個控制暫存器手段的疊接指令,該第一向量暫存器手段用於儲存資料元件中具有一向量長度的第一向量,且該至少一個控制暫存器手段用於儲存控制資料,該控制資料獨立於向量長度而辨識佔據資料元件之第一向量內的順序資料元件位置的一或更多個資料元件;該處理手段可回應於疊接指令的執行,用於從第一向量中提取至少一個控制暫存器手段中的控制資料所辨識的每一資料元件,及用於在資料元件之結果向量內輸出提取的資料元件,該結果向量亦包含來自第二向量的資料元件。
在一替代性配置中,提供儲存在非暫時性電腦可讀取儲存媒體中的一電腦程式,該電腦程式在被資料處理設備執行時提供虛擬機,該虛擬機提供對應於上文提及之第一示例性配置的設備之指令執行環境。
在參考附圖論述實施例之前,提供下列實施例描述。
在一個實施例中,提供具有一組向量暫存器及一或更多個控制暫存器的設備。設備內的處理電路系統經排列以執行指令序列,該序列包括辨識至少一第一向量暫存器及至少一個控制暫存器的疊接指令。第一向量暫存器儲存資料元件中具有一向量長度的第一向量,且至少一個控制暫存器儲存獨立於向量長度而辨識佔據資料元件之第一向量內的順序資料元件位置的一或更多個資料元件。當執行疊接指令時,處理電路系統從第一向量提取由至少一個控制暫存器中之控制資料辨識的每一資料元件,然後在資料元件之結果向量內輸出提取的資料元件,該結果向量亦包含來自第二向量的資料元件。可預定第二向量,或可由疊接指令規定第二向量。
本案中,片語「有效資料元件」亦將用以將控制資料所辨識的資料元件視作從第一向量提取的資料元件。
由於至少一個控制暫存器中之控制資料不參考向量長度而辨識有效資料元件,因此此舉提供可在第一向量內選擇有效資料元件的方式之較大靈活性。特定而言,在執行疊接指令所定義的疊接操作時,可選擇佔據第一向量內的順序資料元件位置的任意有效資料元件序列。
藉由此種方法,可規定有效資料元件的邊界,無需依靠對向量長度的任何認識。因而,疊接指令可用於各種不同設備內,即使在一個該種設備對向量進行操作而該等向量的長度不同於另一設備操作的向量時亦如此。因而可見,上述實施例的疊接指令是向量長度不可知的,且因此允許程式設計師使用該種疊接指令以將來自第一向量及第二向量的部分以向量長度不可知的方式疊接在一起。
在一個實施例中,資料元件大小可能是隱含的。然而,在一替代性實施例中,該種資訊可編碼在疊接指令內,由此僅舉例而言可辨識資料元件大小為8、16、32或64位元。
在一個實施例中,處理電路系統經排列以在結果向量的順序資料元件位置內輸出提取的資料元件,該等位置自結果向量第一末端開始。在該種排列中,來自第二向量的資料元件將隨後佔據未被自第一向量中提取的資料元件佔據的剩餘資料元件位置。
在一個實施例中,疊接指令進一步辨識儲存資料元件之第二向量的第二向量暫存器。處理電路系統隨後可回應於疊接指令的執行以在結果向量中未被提取的資料元件佔據的每一資料元件位置處包括來自資料元件之第二向量的資料元件。
可以各種方式選擇來自第二向量的被選定以包括在結果向量內的資料元件。然而,在一個實施例中,處理電路系統經排列以在結果向量內包括從資料元件之第二向量的第一端開始的順序資料元件。
設備內一或更多個控制暫存器可採取各種形式,但在一個實施例中則包括至少一個述詞暫存器,每一述詞暫存器用以在資料元件之向量內的每一資料元件位置儲存述詞資料。述詞暫存器內的述詞資料由此規定布爾向量(即真/假)條件,其中關連資料元件向量內的每一資料元件與彼等布爾條件中之一者相關連。儘管在一個實施例中,述詞資料內的述詞條件項數目與由該述詞資料控制的關連向量中資料元件數目之間可能存在1:1關係,但此並非必需,且在替代性實施例中,單項述詞資料可提供應用於多個資料元件的條件。此外,儘管在一個實施例中,述詞資料內的每一述詞項採用單個位元形式,但不要求每一述詞項都僅由單個位元來規定。
在控制暫存器包括至少一個述詞暫存器的該種實施例中,疊接指令中辨識的至少一個控制暫存器可包括一個該種述詞暫存器,該處理電路系統可回應於疊接指令的執行以根據述詞資料決定將從第一向量中提取的每一資料元件。
藉由使用此種述詞暫存器,有可能僅藉由使用單個暫存器便可規定每一有效資料元件。此舉由此針對辨識有效資料元件而提供尤其高效的編碼。亦常出現此情況:系統內提供的述詞暫存器少於純量暫存器(純量暫存器可替代地用以規定控制資料以辨識有效資料元件),此舉進一步改良指令內編碼效率,因為需要指令內的較少位元來辨識述詞暫存器。另外,由於述詞資料的性質,可確保辨識的有效資料元件絕不能跨過向量末端,由此自動地避免需要檢查諸如範圍外索引之條件。
述詞資料可以各種方式排列,但在一個實施例中則提供用以決定將從資料元件之第一向量中提取的資料元件的位置及長度資訊。由於可藉由使用述詞資料而規定有效資料元件的靈活方式,故有可能將有效資料元件的開始位置辨識為向量暫存器內的任何資料元件位置,且此外,有效資料元件數目可為向量內的任何所需數目。
在本案中,當執行疊接操作時辨識的有效資料元件序列將稱為疊接分段。藉由使用疊接指令規定的述詞控制疊接操作,疊接指令可用於向量長度不可知碼中,同時保證疊接分段絕不能跨過向量末端。
有數個方式可用以由述詞資料規定位置及長度資訊。在一個實施例中,述詞資料辨識第一提取資料元件位置及最末提取資料元件位置,且處理電路系統將第一提取資料元件位置與最末提取資料元件位置之間的資料元件序列決定為待提取的資料元件。考慮其中述詞資料內每一述詞項都是單個位元的一示例性實施例,則第一提取資料元件位置可藉由設定為第一值(例如邏輯1值)的第一述詞位元辨識,而最末提取資料元件位置可藉由設定為該第一值的最末述詞位元辨識。可忽略任何中間述詞位元的值。
儘管在一個實施例中,在疊接指令執行期間辨識有效資料元件所需的控制資料可參考述詞暫存器而規定,但在一替代性實施例中,可使用不同的控制暫存器。特定而言,在一個實施例中,一或更多個控制暫存器可包括用於儲存資料值的一或更多個純量暫存器。在該種實施例中,疊接指令中辨識的至少一個控制暫存器可包括至少一個純量暫存器,該處理電路系統可回應於疊接指令的執行而在決定將從第一向量提取的每一資料元件時,使用每一辨識的純量暫存器中之資料值。
有數種方式可用以使該等純量暫存器可用以提供所需控制資料。在一個實施例中,疊接指令辨識第一純量暫存器及第二純量暫存器,該等純量暫存器儲存的資料值提供用以決定將從資料元件之第一向量提取的一或更多個資料元件的位置及長度資訊。
例如,在一個實施例中,第一純量暫存器及第二純量暫存器中儲存的資料值辨識第一提取資料元件位置及最末提取資料元件位置,而處理電路系統將第一提取資料元件位置與最末提取資料元件位置之間的資料元件序列決定為待提取的資料元件。在一替代性實施例,純量暫存器中之一者可用以辨識開始位置,且另一純量暫存器可提供純量值,該純量值辨識將作為自該位置開始的有效資料元件而納入的資料元件的數目。
在又一替代性實施例中,疊接指令中辨識的至少一個控制暫存器可包括述詞暫存器及純量暫存器,辨識的純量暫存器中之資料值與辨識的述詞暫存器中之述詞資料結合使用,以決定將從資料元件之第一向量提取的一或更多個資料元件。例如,純量暫存器或述詞暫存器中任一者可用以辨識開始位置,而另一者則用以指示結束位置或提供可指示將被納入的有效資料元件數目的長度資訊,該等有效資料元件將自辨識到的開始位置開始。
在疊接指令規定第一向量暫存器及第二向量暫存器兩者的實施例中,第一向量暫存器及第二向量暫存器有可能在一個實施例中皆被辨識為同一向量暫存器。藉由該種方法,有可能使用疊接指令以執行旋轉操作,以便改變資料元件在向量內出現的次序。
在一個實施例中,由疊接指令規定的第一向量暫存器(及實際上為第二向量暫存器,如規定)自身可為述詞暫存器,該述詞暫存器用以儲存定位在資料元件之向量內的每一資料元件的述詞資料。因此,該等疊接指令可能並非僅用以對資料元件的向量運算元進行操作,而亦對述詞向量進行操作,在此情況下,所規定的控制暫存器(自身可為述詞暫存器)所辨識的控制資料辨識將針對規定的述詞向量內的述詞資料項而執行的疊接。在由疊接指令辨識的第一向量暫存器自身是述詞暫存器的一個該種實施例中,第一向量暫存器內的每一資料元件可包括單個位元,該單個位元表示一項述詞資料。
在一個示例性使用情況下,處理電路系統可經排列以在由疊接指令辨識出的至少一個控制暫存器中的每一疊代控制資料中之複數個疊代的每一疊代中執行疊接指令,該疊接指令辨識將從資料元件之第一向量提取的一或更多個資料元件,該等資料元件不同於在經辨識以用於先前疊代期間進行提取的一或更多個資料元件。藉由該種方法,有可能以使用一系列疊接指令對規定的述詞運算元高效地實施滑動窗操作。
用以執行疊接指令的處理電路系統可採取各種形式,但在一個實施例中則包括向量排列電路系統。
向量排列電路系統可採取各種形式,但在一個實施例中則包括第一移位電路系統以對資料元件之第一向量執行第一移位操作,且包括第二移位電路系統以對資料元件之第二向量執行第二移位操作,且包括組合電路系統以利用由第一移位電路系統及第二移位電路系統輸出的向量產生結果向量。另外,分析電路系統用以分析至少一個控制暫存器中之控制資料以便決定將從資料元件之第一向量提取的一或更多個資料元件,並依據該分析發出控制信號以控制第一移位電路系統及第二移位電路系統的操作。由此,可依據規定的控制暫存器提供的控制資料而控制第一移位電路及第二移位電路的操作,以便對第一向量及第二向量執行適當移位操作,以便產生隨後可由組合電路系統組合的修正向量。在一個實施例中,對第一向量執行的移位將與對第二向量執行的移位方向相反。
組合電路系統可採取各種形式,但在一個實施例中則經排列以對兩個提供的輸入向量執行邏輯或(OR)操作,該等輸入向量來源於第一移位電路及第二移位電路的輸出。
在一個實施例中,向量排列電路系統進一步包括第一遮罩電路系統以對由第一移位電路系統輸出的向量執行第一遮罩操作,以便產生第一遮蔽向量,且包括第二遮罩電路系統以對由第二移位電路系統輸出的向量執行第二遮罩操作,以便產生第二遮蔽向量,且包括組合電路系統經排列以藉由組合第一遮蔽向量及第二遮蔽向量而產生結果向量。
由此,可見在一個實施例中,實施疊接指令所定義之疊接操作的所需操作可藉由使用移位及或操作而輕鬆執行(視情況按需利用額外的遮蔽操作),且可並行執行移位操作。
儘管如此,並非必須以此方式構造向量排列電路系統,且實際上可為向量排列電路系統提供各種其他配置。在一個示例性排列中,向量排列電路系統可包括可程式化縱橫電路系統,以利用資料元件之第一向量及資料元件之第二向量產生結果向量,且包括分析電路系統以分析至少一個控制暫存器以便決定將從資料元件之第一向量提取的一或更多個資料元件,並依據該分析而發出控制信號以控制可程式化縱橫電路系統的操作。因此,在該種實施例中,縱橫電路系統可在分析電路系統控制下按需配置,以便執行來自第一向量的已辨識有效資料元件與來自第二向量的具有所需數目之資料元件的所需疊接。在一些實施例中,有可能重新使用設備內已提供的縱橫電路系統用於其他用途。
現將藉由參考圖式而描述特定實施例。
第1圖是一系統方塊圖,在該系統中可使用所述實施例的技術。在第1圖圖示的實例中,系統採用管線式處理器形式。指令由擷取電路系統10擷取自指令快取記憶體15(該指令快取記憶體通常經由一或更多個其他級別的快取記憶體耦接至記憶體55,如2級快取記憶體50),指令從指令快取記憶體15穿過解碼電路系統20,該解碼電路系統解碼每一指令以便產生適當的控制信號,以用於控制管線式處理器內的下游執行資源,以執行指令所需操作。形成解碼指令的控制信號被傳遞至發出階段電路系統25以用於發出至管線式處理器內的一或更多個執行管線30、35、40、80。
發出階段電路系統25可存取暫存器60,在該暫存器中可儲存操作所需的資料值。特定而言,用於向量操作的源運算元可儲存在向量暫存器65內,而用於純量操作的源運算元可儲存在純量暫存器75中。另外,一或更多個述詞可儲存在述詞暫存器70中,以用作在執行某些向量操作時被處理的向量運算元的資料元件的控制資訊。此外,如後文中參考第9A圖至第9D圖所論述,純量暫存器中一或更多者亦可用以儲存資料值,該等資料值用以推導該種控制資訊,以供某些向量操作的執行期間使用。
該等源運算元及任何關連控制資訊可經由路徑47而路由至發出階段電路系統內,以便其可隨同辨識待執行之操作的控制信號而被調度至適當的執行單元,以實施每一解碼指令。第1圖中圖示的各種執行單元30、35、40、80假定為用於對述詞運算元執行操作的向量處理單元,但如若希望處理由設備支援的任何純量操作,則可提供獨立執行單元(未圖示)。
考慮各種向量操作,算術操作例如可連同所需源運算元(及任何控制資訊,如述詞)被發送至算術邏輯單元(arithmetic logic unit; ALU) 30,以便賦能對彼等源運算元的待執行算術邏輯操作,結果值通常輸出作為目的運算元以用於儲存在向量暫存器65中之規定暫存器中。
除ALU 30之外,可提供其他執行單元35,例如浮點單元(floating point unit;FPU),該單元回應於解碼浮點指令而用於執行浮點操作,且向量排列單元80用於對述詞運算元執行某些排列操作。此外,載入/儲存單元(load/store unit;LSU)40用於執行載入操作,以便將來自記憶體55(經由資料快取記憶體45及任何中間的其他級別快取記憶體,如2級快取記憶體)的資料值載入暫存器組60內的規定暫存器內,及用於執行儲存操作以便將來自彼等暫存器的資料值儲存回記憶體55。
第1圖所示系統可為依序處理系統,在該系統中依照程式次序執行指令序列,或者可為無序系統,從而允許各種指令的執行序列得以重新定序,以便設法改良效能。熟習該項技術者將理解,在無序系統中,將提供額外結構(第1圖中未明確圖示),例如暫存器重命名電路系統,以將指令所規定的架構暫存器映射至來自暫存器排內實體暫存器池中之實體暫存器(該實體暫存器池通常大於架構暫存器數目),由此使某些危害能夠被移除,從而有利於無序處理的更多使用。另外,通常將提供重新定序緩衝器以跟蹤無序執行,並允許各種指令的執行結果以原始程式次序提交。
在所述實施例中,第1圖的電路系統經排列以對儲存在向量暫存器65中之向量運算元執行向量操作,在該等暫存器中,向量運算元包括複數個資料元件。對於對該述詞運算元執行的某些向量操作而言(如算術操作),可並行(或疊代地)向述詞運算元內多個資料元件應用所需操作。述詞資訊可用以辨識向量內哪些資料元件是特定向量操作的有效資料元件,且由此即為將對其應用操作的資料元件。
在一個實施例中,由第1圖的電路系統執行之指令序列可包括至少一個疊接指令。每一疊接指令將辨識向量暫存器65內的至少一第一向量暫存器及至少一個控制暫存器。控制暫存器可採取述詞暫存器70中之一者之形式,或如下文將論述,可改為由純量暫存器75中之一或更多者規定,或由述詞暫存器與純量暫存器之組合來規定。當該種疊接指令被解碼電路系統20解碼時,發出階段電路系統25將隨後向向量排列單元80發出適當的控制信號,以使得所需操作得以執行,以便實施該疊接指令所需的疊接操作。特定而言,至少一個控制暫存器規定的控制資料用以辨識由疊接指令規定的、佔據資料元件之第一向量內的順序資料元件位置的一或更多個有效資料元件。控制資料以某種方式組織,以使得該控制資料獨立於向量長度而辨識有效資料元件,並由此可不參考向量長度而辨識彼等有效資料元件。辨識第一向量內的有效資料元件之後,向量排列單元從第一向
量提取彼等有效資料元件,且在結果向量內將其輸出,而結果向量中剩餘的資料元件位置由來自第二向量的資料元件充填。可預定第二向量,或可替代地由疊接指令規定第二向量。
第2圖圖示疊接指令的一示例性形式及執行的所得操作。特定而言,疊接指令規定向量暫存器65內的兩個向量源暫存器100、105,並規定述詞暫存器70內的述詞暫存器110。此述詞暫存器被稱為Psp暫存器以表示該述詞暫存器內容包含疊接控制資料。述詞資料的一示例性形式在第2圖中圖示。特定而言,在此實施例中,邏輯1值在述詞資料內的第一次出現與最後出現用以辨識疊接分段115。在一個實施例中,彼等兩個邏輯1值之間的中間述詞值並不重要,且可為邏輯1或邏輯0值。
第一邏輯1值與最末邏輯1值可由此被視作辨識關連的第一源向量100內的第一有效資料元件與最末有效資料元件位置。因此,在此實例中,自右側起為資料元件位置編號,可見,第2圖中述詞暫存器110內述詞的特定實例將資料元件位置2與4辨識為第一有效資料元件及最末有效資料元件的資料元件位置。因此,向量排列單元將從第一向量100中之位置2、3及4提取資料元件,並在規定目的向量暫存器120內的預定位置處將其輸出。在此實施例中,假定提取值用以佔據資料元件位置125,該等位置自目的向量暫存器120中最低有
效資料元件位置開始,但將理解,該等提取值可替代地佔據不同位置,例如在一替代性實施例中,目的向量內的某些數目的最高有效位元位置。目的向量暫存器120內的剩餘資料元件位置130隨後由向量排列單元充填來自第二源向量暫存器105的資料元件,該等位置自第二源向量暫存器中的資料元件位置0開始。因此如第2圖圖示,來自向量排列單元80的目的向量暫存器120採取形式「mlkjiedc」。
從第2圖將可見,辨識有效資料元件所需的位置及長度資訊獨立於向量長度而被規定,且因此可利用述詞而決定,無需瞭解向量長度。可從源向量暫存器中之任何位置及以任何長度執行疊接,且特定而言,疊接無需對齊至向量一端。
在一個實施例中,向量長度(即每一向量中之資料元件數目)及資料元件大小可為隱式的。然而,在一替代性實施例中,該種資訊可編碼在指令內。例如,指令編碼可包括辨識資料元件大小(例如8、16、32或64位元)的資訊,隨後利用指令中引用的向量暫存器大小及規定的資料元件大小決定向量長度。
此外,在第2圖的實例中,範圍外索引條件的邊界情況得以自動處理,因為述詞暫存器及源向量暫存器具有相同元素數目,並由此,在此形式中,指令無法產生範圍外索引異常。
此外,該種疊接指令可以一般程式庫碼來使用,因為述詞可根據可存取的向量長度,或根據程式設計師或演算法需要而動態構造。在述詞由此規定的情況下,疊接指令可用以以向量長度不可知的方式提取及連接不同向量暫存器的部分,該兩個部分的位置及長度由規定述詞暫存器中之述詞資料控制。
儘管在第2圖實例中,第一源向量及第二源向量包含保存在向量暫存器65內的資料元件向量,但在一替代性實施例中,彼等第一向量暫存器及第二向量暫存器可實際上規定述詞暫存器組70內的述詞暫存器,如第3圖中示意地圖示。在此實例中,每一源向量表示述詞項的向量,如兩個源述詞暫存器140、145所示。隨後,疊接述詞暫存器150如先前一樣提供述詞,該述詞用以辨識疊接分段155,該分段辨識第一源暫存器140內的有效資料元件。因而,彼等辨識的有效資料元件(在此實例中,每一資料元件是單個位元值)在目的述詞暫存器160中之部分165中輸出,剩餘部分170充填來自第二源暫存器145的資料元件,該等部分自第二源暫存器的資料元件位置0開始。
亦如第4圖所示,疊接指令可用於藉由規定與第一向量暫存器及第二向量暫存器相同的暫存器175而執行旋轉。在此實例中,疊接述詞180辨識疊接分段,該分段包含源暫存器175內的某一數量的最高有效資料元件位置。該等資料元件由此移至結果暫存器185中之最低有效資料元件位置,剩餘的資料元件位置充填源暫存器內容,該等位置自最低有效資料元件位置開始。
在疊接指令執行期間用以執行上述疊接操作的向量排列單元80可採取各種形式。一個示例性排列在第5圖中圖示,其中向量排列單元包括兩個移位/旋轉電路塊215、220,每一電路塊與向量源暫存器200、205中之一者關連,亦包括關連遮罩電路225、230,及組合電路系統235,以組合來自兩個遮罩電路的輸出,在此實例中,組合電路系統採取邏輯或電路235之形式。來自或電路系統235的輸出隨後儲存在目的暫存器245中。向量排列單元80亦包括述詞分析電路系統240,該電路系統接收由疊接述詞暫存器210規定的述詞資料。特定而言,述詞資料經分析以便辨識疊接分段,且此舉用以產生適當的控制信號以用於移位/旋轉電路220。特定而言,使得移位/旋轉電路系統220執行充足右移,以將由疊接分段辨識的有效資料元件移入數個資料元件位置,該等位置自最低有效資料元件位置開始。相反,移位/旋轉電路系統215經排列以執行充足左移,以將第二源暫存器中某一數目的最低有效資料元件移至結果向量之剩餘資料元件位置中。
述詞分析電路系統240亦產生控制信號以用於兩個遮罩電路225、230,以便保證來自兩個移位/旋轉電路250、220的輸出中任何非所需資料元件被設定為預定值,例如在第5圖所示實施例中全部設定為零,其
中組合電路系統採取或電路系統235之形式。然後,或電路系統對遮罩電路的輸出執行邏輯或操作,以便產生要儲存在結果向量暫存器245中之結果向量。
第6圖圖示第5圖的電路系統如何用以執行上文參考第2圖論述的操作。特定而言,述詞分析電路系統240使得移位/旋轉電路系統220執行右移兩個資料元件位置,此是根據疊接述詞暫存器210中規定的述詞中的前導零數目而決定的。相反,移位/旋轉電路系統215執行左移三個位置,此舉根據述詞中疊接分段的長度而決定。來自移位/旋轉電路215、220的輸出在第6圖中圖示。字母「x」指示位於彼等資料元件位置的資料元件的「不關心」狀態。特定而言,不管彼等資料元件值為何,彼等資料元件值將由關連遮罩電路225、230遮蔽。
述詞分析電路系統240向遮罩電路系統230發送控制信號,以使得設定右側三個遮罩位元,由此使資料元件「edc」從遮罩電路系統輸出,而其他所有資料元件設定為邏輯0至值。應注意,第6圖中遮罩電路系統的輸出處指示的零值不是單個位元值,但每一零指示對應資料元件的全部零值,此通常可多於單個位元。例如,在一個實施例中,向量內每一資料元件的長度是一個位元組。利用疊接分段大小而決定呈向遮罩電路系統230的控制信號,該疊接分段大小由述詞分析電路系統240利用述詞暫存器210中之述詞資料而決定,在此實例中,疊接分段具有三個資料元件的長度。
產生遮罩電路系統230之遮罩控制信號後,述詞分析電路系統隨後產生遮罩電路系統225之適當控制信號,以使得由遮罩電路系統225實施的遮蔽與遮罩電路系統230應用的遮蔽相逆。因而,來自遮罩電路系統225的輸出如第6圖所示。或電路系統235隨後對兩個輸入向量執行邏輯或操作,以便產生第6圖中目的暫存器245內顯示的輸出向量「mlkjiedc」。
藉由上述內容,將理解,所需向量排列電路系統可藉由使用移位、遮罩及或電路塊而高效地構造而成,且可並行執行移位操作(實際上遮罩操作亦可)。然而,向量排列單元可改為採用數個替代方式。第7圖中圖示一個特定實例,其中向量排列單元80包括可程式化網路,亦稱為縱橫260,該網路之操作由述詞分析電路系統270基於對述詞暫存器210所提供之述詞資料的分析而控制。基於由述詞資料辨識的疊接分段的辨識,述詞分析電路系統270可隨後配置可程式化縱橫以便來自源暫存器200、205的適當資料元件得以被提供至儲存在結果向量暫存器245中之結果向量內的所需輸出資料元件位置。
第8圖圖示上述疊接指令可如何用以實施滑動窗操作,特定而言,如何藉由每一疊代利用不同述詞資料的疊接指令的疊代執行來實施滑動窗操作。首先,兩個源暫存器300、305載有源向量,在此實例中,每一源向量包括八個資料元件。然後,假定在此實例中,需要從彼等源暫存器中一次提取三個資料元件。在第一疊代期間,利用全部設定為1的疊接述詞執行疊接指令,從而使得源暫存器300之內容儲存在目的暫存器310內。因此可對佔據了暫存器310內三個最低有效資料元件位置的三個資料元件執行後續操作,而剩餘資料元件忽略。
在下一疊代期間,利用述詞「11111000」執行疊接指令,使得目的暫存器315充填有第8圖中圖示的資料元件。特定而言,三個最低有效資料元件位置目前包含資料元件「fed」,且因此彼等資料元件可經受後續操作,暫存器315中之剩餘資料元件忽略。
在第三疊代期間,利用疊接述詞「11000000」執行疊接指令。此使得僅有資料元件「g」及「h」從第一源暫存器300中被提取,而隨後從第二源暫存器305提供目的暫存器320中之剩餘資料元件。目前情況是目的暫存器320內的三個較低資料元件位置包含資料元件「ihg」,在後續操作中可因此對該等資料元件執行操作,暫存器320的剩餘內容則忽略。因此,可見,使用該等疊接指令提供尤其高效的實施方式,以用於執行滑動窗型操作,在此情況下,該窗辨識三個資料元件的區塊。
在第8圖中圖示的第三疊代之後,如若滑動窗操作需要繼續,則將必需更新兩個源暫存器300、305的內容。特定而言,在一個實例中,第二源暫存器305的原始內容可移至第一源暫存器300,而其他向量資料隨後載入第二源暫存器。在下一疊代期間,可隨後利用疊接述詞「11111110」執行疊接指令,從而使得結果向量中之三個最低有效資料元件位置被資料元件「lkj」佔據。
在上述實例中,根據第9A圖中參考述詞暫存器350而圖示的實例,已假定用於疊接指令的所需疊接控制資訊由單個述詞暫存器規定。在第9A圖實例中,假定述詞採取與上文參考第2圖論述的同一形式。然而,在替代性實施例中,疊接指令可以數個不同方式規定所需疊接控制資訊。例如,如第9B圖所示,有可能藉由使用兩個純量暫存器355、360的內容來規定所需疊接控制資訊。在第9B圖中圖示的實例中,每一純量暫存器儲存一純量值,第一純量暫存器辨識開始資料元件位置且第二純量暫存器辨識結束資料元件位置。為與第9A圖實例一致,第一純量暫存器辨識資料元件位置2且第二純量暫存器辨識資料元件位置4。將理解,在一替代性實施例中,第二純量暫存器可經排列以規定長度,而非末端位置。
在一替代性實施例中,如第9C圖所示,述詞暫存器與源暫存器之組合可用以規定所需疊接控制資訊。在第9C圖圖示實例中,源暫存器365辨識開始資料元件位置,在此實例中即資料元件位置2。疊接述詞暫存器370可由此辨識末端資料元件位置,在此實例中即4(如第9C圖中所示),或可規定長度,該長度在此實例中為三個位置長度。安排述詞暫存器370以辨識長度(而純量暫存器365則辨識開始位置)可在一些實施例中為十分實用的,例如在第8圖之滑動窗排列中。特定而言,對於疊接指令的每一疊代,無須更新述詞暫存器內容,因為每一疊代中的長度都將為三。相反,純量暫存器可僅針對每一疊代更新,以辨識新的開始資料元件位置。
第9D圖圖示又一替代性實例,其中純量暫存器375定義長度(在此實例中為三),且述詞380辨識開始元素位置(在此實例位置中為二)。
當使用第9B圖至第9D圖中任何形式的控制暫存器時,將理解,第5圖或第7圖的分析電路系統240、270將不再執行(或僅執行)述詞分析,而是分析提供所需控制資料的任何純量暫存器。
根據上述實施例可見,藉由排列設備以執行所述疊接指令,此舉提供如何在第一向量內選擇有效資料元件的較大靈活性,因為規定的控制資料不參考向量長度而辨識有效資料元件,從而允許在執行疊接操作時選定佔據順序資料元件位置的任意有效資料元件序列。可不依據對向量長度的任何瞭解而規定有效資料元件邊界,且由此,疊接指令可用於各種不同設備,無論每一設備是否對具有相同長度的向量執行操作,或某些設備是否對某些向量執行操作,該等向量的長度不同於由某些其他設備操作的向量長度。此由此有助於將該等疊接指令用於一般程式庫碼,因為所產生的疊接操作可以向量長度不可知的方式執行。所述疊接指令可用於眾多情形,例如在使用滑動窗操作的演算法中,該等操作如過濾、字串處理、稀疏陣列處理,等等。該指令亦可明確替代指令集中對向量元素旋轉/移位指令的需求。
第10圖圖示可使用的虛擬機實施方式。儘管前文描述之實施例在操作支援相關技術的特定處理硬體的裝置及方法方面而實施本發明,但亦有可能提供硬體裝置的所謂虛擬機實施方式。該等虛擬機實施方式在主機處理器415上執行,該主機處理器執行主機作業系統410,該主機作業系統支援虛擬機程式405。通常,需要大型高效能處理器以提供以合理速度執行的虛擬機實施方式,但該種方法在某些環境中可能合理,如在需要執行另一處理器的本地碼以獲得相容性的情況下,或出於再使用原因。虛擬機程式405向應用程式400提供應用程式介面,該介面與由實際硬體提供的應用程式介面相同,該實際硬體是藉由虛擬機程式405模型化的裝置。由此,程式指令(包括上述疊接指令)可藉由使用虛擬機程式405而在應用程式400內執行,以模型化指令與虛擬機硬體的交互。
在本申請案中,詞語「經配置以…」用以意謂著設備元件具有一配置,該配置能夠執行所定義的操作。在此上下文中,「配置」意謂著硬體或軟體的排列或互連方式。例如,設備可具有專用硬體,該硬體提供定義的操作,或處理器或其他處理裝置可經程式化以執行該功能。「經配置以」並非暗示該設備元件為了提供所定義的操作而需要以任何方式變更。
儘管本發明之說明性實施例已在本案中藉由參考附圖進行詳細描述,但將理解,本發明並非限定於彼等精確實施例,且熟習該項技術者在不背離本發明範疇及精神之情況下可在彼等實施例中實現多種變更、增添及修改,本發明範疇如所附之申請專利範圍所定義。例如,可在不背離本發明之範疇的前提下,可進行獨立請求項之特徵與從屬請求項之特徵的各種組合。
10‧‧‧擷取電路系統
15‧‧‧指令快取記憶體
20‧‧‧解碼電路系統
25‧‧‧階段電路系統
30‧‧‧執行管線
35‧‧‧執行管線
40‧‧‧執行管線/載入/儲存單元
45‧‧‧資料快取記憶體
47:路徑
50:2級快取記憶體
55:資料值儲存回記憶體
60:暫存器組
65:向量暫存器
70:述詞暫存器
75:純量暫存器
80:執行管線/向量排列單元
100:向量源暫存器
105:向量源暫存器
110:述詞暫存器
115:疊接分段
120:目的向量暫存器
125:資料元件位置
130:資料元件位置
140:源述詞暫存器
145:源述詞暫存器
150:疊接述詞暫存器
155:疊接分段
160:目的述詞暫存器
165:部分
170:剩餘部分
175:源暫存器
180:疊接述詞
185‧‧‧結果暫存器
200‧‧‧向量源暫存器
205‧‧‧向量源暫存器
210‧‧‧疊接述詞暫存器
215‧‧‧移位/旋轉電路塊
220‧‧‧移位/旋轉電路塊
225‧‧‧遮罩電路
230‧‧‧遮罩電路
235‧‧‧組合電路系統
240‧‧‧述詞分析電路系統
245‧‧‧結果向量暫存器
260‧‧‧縱橫
270‧‧‧述詞分析電路系統
300‧‧‧源暫存器
305‧‧‧第二源暫存器
310‧‧‧目的暫存器
315‧‧‧目的暫存器
320‧‧‧暫存器
350‧‧‧述詞暫存器
355‧‧‧純量暫存器
360‧‧‧純量暫存器
365‧‧‧源暫存器
370‧‧‧疊接/述詞暫存器
375‧‧‧純量暫存器
380‧‧‧述詞
400‧‧‧主機作業系統
405‧‧‧虛擬機程式
410‧‧‧主機作業系統
415‧‧‧主機處理器
本技術將僅以舉例方式,參考本案實施例進行進一步描述,如附圖中所圖示,在該等附圖中:
第1圖是依據一個實施例之設備的方塊圖;
第2圖至第4圖示意地圖示依據示例性實施例藉由疊接指令執行的操作;
第5圖是一圖表,該圖圖示依據一個實施例的第1圖之向量排列單元;
第6圖是一圖表,該圖圖示依據一個實施例,第5圖的向量排列單元如何用以執行第2圖中概括的操作;
第7圖是一圖表,該圖圖示依據一替代性實施例的第1圖之向量排列單元;
第8圖是一圖表,該圖示意地圖示依據一個實施例,可如何執行疊接指令序列以便實施滑動窗操作;
第9A圖至第9D圖圖示依據多個各種實施例的控制暫存器的示例性排列,該等控制暫存器可由疊接指令規定以便獨立於向量長度而辨識佔據順序資料元件位置的資料元件,該等資料元件將自資料元件之第一向量中提取;及
第10圖圖示可用於一個實施例中的虛擬機實施方式。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
(請換頁單獨記載) 無
10‧‧‧擷取電路系統
15‧‧‧指令快取記憶體
20‧‧‧解碼電路系統
25‧‧‧階段電路系統
30‧‧‧執行管線
35‧‧‧執行管線
40‧‧‧執行管線/載入/儲存單元
45‧‧‧資料快取記憶體
47‧‧‧路徑
50‧‧‧2級快取記憶體
55‧‧‧資料值儲存回記憶體
60‧‧‧暫存器組
65‧‧‧向量暫存器
70‧‧‧述詞暫存器
75‧‧‧純量暫存器
80‧‧‧執行管線/向量排列單元
Claims (21)
- 一種用於進行一疊接操作的設備,包括:一組向量暫存器;一或更多個控制暫存器;及處理電路系統,用以執行一指令序列,該指令序列包括一疊接指令,該疊接指令辨識該組向量暫存器中的至少一第一向量暫存器及該一或更多個控制暫存器中的至少一個控制暫存器,該第一向量暫存器儲存具有一向量長度的資料元件之一第一向量,該向量長度依資料元件之該第一向量中的資料元件的一數目及該等資料元件的一大小而定,且該至少一個控制暫存器儲存控制資料,該控制資料獨立於該等資料元件的該大小而辨識一或更多個資料元件;該一或更多個資料元件包含下列之一者:資料元件之該第一向量之中的一個資料元件、或佔據資料元件之該第一向量內的順序資料元件位置的複數個資料元件,其中該控制資料包含位置資料及不同於該位置資料的長度資料,該位置資料辨識在該第一向量暫存器內的一給定資料元件的一位置,該長度資料辨識將從資料元件之該第一向量提取出的包括該給定資料元件在內的一資料元件數目;該處理電路系統回應於該疊接指令的執行以從該 第一向量中提取由該至少一個控制暫存器中之該控制資料辨識的每一資料元件,且在資料元件的一結果向量內輸出每一經提取的資料元件,該結果向量亦包含來自資料元件之一第二向量的資料元件,其中該處理電路系統經安排以在該結果向量的順序資料元件位置內從該結果向量之一第一末端開始輸出每一經提取的資料元件。
- 如請求項1所述之設備,其中該疊接指令進一步辨識一第二向量暫存器,該第二向量暫存器儲存資料元件之該第二向量,且該處理電路系統回應於該疊接指令的執行以在該結果向量中未被每一經提取的資料元件佔據的每一資料元件位置處包括來自資料元件之該第二向量的一資料元件。
- 如請求項2所述之設備,其中該處理電路系統經排列以在該結果向量內包括從資料元件之該第二向量的一第一末端開始的順序資料元件。
- 如請求項1所述之設備,其中:該一或更多個控制暫存器包括至少一個述詞暫存器,每一述詞暫存器用以在資料元件之一向量內儲存每一資料元件位置的述詞資料;及在該疊接指令中辨識的該至少一個控制暫存器包括該至少一個述詞暫存器的一者,該處理電路系統回 應於該疊接指令的執行以根據該述詞資料決定將從該第一向量提取的每一資料元件。
- 如請求項4所述之設備,其中該述詞資料提供用以決定將從資料元件之該第一向量提取的該一或更多個資料元件的該位置資料及該長度資料。
- 如請求項5所述之設備,其中該述詞資料辨識一第一提取資料元件位置及一最末提取資料元件位置,且該處理電路系統將該第一提取資料元件位置與該最末提取資料元件位置之間的一資料元件序列決定為將提取的該等資料元件。
- 如請求項1所述之設備,其中:該一或更多個控制暫存器包括一或更多個純量暫存器以用於儲存資料值;及該疊接指令中辨識的該至少一個控制暫存器包括至少一個純量暫存器,該處理電路系統回應於該疊接指令的執行而在決定將從該第一向量提取的每一資料元件時,使用該至少一個純量暫存器的每一純量暫存器中之該資料值。
- 如請求項7所述之設備,其中該疊接指令辨識第一純量暫存器及第二純量暫存器,該第一純量暫存器及該第二純量暫存器儲存的資料值提供用以決定將從資料元件之該第一向量提取的該一或更多個 資料元件的該位置資料及該長度資料。
- 如請求項8所述之設備,其中該第一純量暫存器及該第二純量暫存器中儲存的該等資料值辨識一第一提取資料元件位置及一最末提取資料元件位置,且該處理電路系統將該第一提取資料元件位置與該最末提取資料元件位置之間的一資料元件序列決定為待提取的該等資料元件。
- 如請求項7所述之設備,其中:該一或更多個控制暫存器包括至少一個述詞暫存器,每一述詞暫存器用以在一資料元件向量內儲存每一資料元件位置的述詞資料;該疊接指令中辨識的該至少一個控制暫存器包括該至少一個述詞暫存器中之一經辨識的述詞暫存器及該一或更多個純量暫存器中之一經辨識的純量暫存器,該經辨識的純量暫存器中之該資料值與該經辨識的述詞暫存器中之該述詞資料結合使用,以決定將從資料元件之該第一向量提取的該一或更多個資料元件。
- 如請求項2所述之設備,其中該第一向量暫存器與該第二向量暫存器是同一向量暫存器。
- 如請求項2所述之設備,其中該第一向量暫存器是一述詞暫存器,該述詞暫存器用以儲存用於 在資料元件之一向量內之每一資料元件位置的述詞資料。
- 如請求項12所述之設備,其中該第一向量暫存器內的每一資料元件包括一單個位元。
- 如請求項1所述之設備,其中該處理電路系統經排列以在複數個疊代的每一疊代中執行該疊接指令,且在每一疊代中,由該疊接指令辨識出的該至少一個控制暫存器中的控制資料辨識將從資料元件之該第一向量提取的一或更多個資料元件,該等資料元件不同於在經辨識以用於在一先前疊代期間進行提取的該一或更多個資料元件。
- 如請求項1所述之設備,其中該處理電路系統包括一向量排列電路系統。
- 如請求項15所述之設備,其中:該疊接指令進一步辨識一第二向量暫存器,該第二向量暫存器儲存資料元件之該第二向量,且該處理電路系統回應於該疊接指令的執行以在該結果向量中未被每一經提取的資料元件佔據的每一資料元件位置處包括來自資料元件之該第二向量的一資料元件,以及,其中該向量排列電路系統包括:第一移位電路系統,用以對資料元件之該第一向量 執行一第一移位操作,及第二移位電路系統,用以對資料元件之該第二向量執行一第二移位操作;組合電路系統,用以利用由該第一移位電路系統及該第二移位電路系統輸出的該等向量而產生該結果向量;及分析電路系統,用以分析該至少一個控制暫存器中之該控制資料,以便決定將從資料元件之該第一向量提取的該一或更多個資料元件,及依據該分析發出控制信號以控制該第一移位電路系統及該第二移位電路系統的該操作。
- 如請求項16所述之設備,其中該向量排列電路系統進一步包括:第一遮罩電路系統,用以對由該第一移位電路系統輸出的該向量執行一第一遮罩操作,以便產生一第一遮蔽向量,及第二遮罩電路系統,用以對由該第二移位電路系統輸出的該向量執行一第二遮罩操作,以便產生一第二遮蔽向量;該組合電路系統經排列以藉由組合該第一遮蔽向量及該第二遮蔽向量而產生該結果向量。
- 如請求項15所述之設備,其中:該疊接指令進一步辨識一第二向量暫存器,該第二向量暫存器儲存資料元件之該第二向量,且該處理電 路系統回應於該疊接指令的執行以在該結果向量中未被每一經提取的資料元件佔據的每一資料元件位置處包括來自資料元件之該第二向量的一資料元件,以及,其中該向量排列電路系統包括:可程式化縱橫電路系統,用以利用資料元件之該第一向量及資料元件之該第二向量而產生該結果向量;及分析電路系統,用以分析該至少一個控制暫存器,以便決定將從資料元件之該第一向量提取的一或更多個資料元件,及依據該分析發出控制信號以控制該可程式化縱橫電路系統的該操作。
- 一種用以在一設備內執行一疊接操作的方法,該設備具有一組向量暫存器及一或更多個控制暫存器,該方法包括以下步驟:執行一疊接指令,該疊接指令辨識該組向量暫存器中的至少一第一向量暫存器及該一或更多個控制暫存器中的至少一個控制暫存器,該第一向量暫存器儲存具有一向量長度的資料元件之一第一向量,該向量長度依資料元件之該第一向量中的資料元件的一數目及該等資料元件的一大小而定,且該至少一個控制暫存器儲存控制資料,該控制資料獨立於該等資料元 件的該大小而辨識一或更多個資料元件;該一或更多個資料元件包含一個資料元件或佔據資料元件之該第一向量內的順序資料元件位置的複數個資料元件,其中該控制資料包含位置資料及不同於該位置資料的長度資料,該位置資料辨識在該第一向量暫存器內的一給定資料元件的一位置,該長度資料辨識將從資料元件之該第一向量提取出的包括該給定資料元件在內的一資料元件數目;該疊接指令的該執行包括以下步驟:從該第一向量中提取由該至少一個控制暫存器中之該控制資料辨識的每一資料元件;及在資料元件之一結果向量內輸出每一經提取的資料元件,該結果向量亦包含來自資料元件之一第二向量的資料元件,其中該方法包含在該結果向量的順序資料元件位置內從該結果向量之一第一末端開始輸出每一經提取的資料元件。
- 一種用於進行一疊接操作的設備,包括:一組向量暫存器手段;一或更多個控制暫存器手段;及處理手段,用以執行一指令序列,該指令序列包括一疊接指令,該疊接指令辨識該組向量暫存器手段中 的至少一第一向量暫存器手段及該一或更多個控制暫存器手段中的至少一個控制暫存器手段,該第一向量暫存器手段用於儲存具有一向量長度的資料元件之一第一向量,該向量長度依資料元件之該第一向量中的資料元件的一數目及該等資料元件的一大小而定,且該至少一個控制暫存器手段用於儲存控制資料,該控制資料獨立於該等資料元件的該大小而辨識一或更多個資料元件;該一或更多個資料元件包含下列之一者:資料元件之該第一向量之中的一個資料元件、或佔據資料元件之該第一向量內的順序資料元件位置的複數個資料元件,其中該控制資料包含位置資料及不同於該位置資料的長度資料,該位置資料辨識在該第一向量暫存器內的一給定資料元件的一位置,該長度資料辨識將從資料元件之該第一向量提取出的包括該給定資料元件在內的一資料元件數目;該處理手段回應於該疊接指令的執行,以用於從該第一向量中提取由該至少一個控制暫存器手段中之該控制資料辨識的每一資料元件,及用於在資料元件的一結果向量內輸出每一經提取的資料元件,該結果向量亦包含來自資料元件之一第二向量的資料元件, 其中該處理手段經安排以在該結果向量的順序資料元件位置內從該結果向量之一第一末端開始輸出每一經提取的資料元件。
- 一種電腦程式,儲存在一非暫時性電腦可讀取儲存媒體中,該電腦程式在被一資料處理設備執行時提供一虛擬機,該虛擬機提供對應於請求項1所述設備的一指令執行環境。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1513497.6 | 2015-07-31 | ||
GB1513497.6A GB2540939B (en) | 2015-07-31 | 2015-07-31 | An apparatus and method for performing a splice operation |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201721410A TW201721410A (zh) | 2017-06-16 |
TWI716425B true TWI716425B (zh) | 2021-01-21 |
Family
ID=54062946
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105124012A TWI716425B (zh) | 2015-07-31 | 2016-07-29 | 用於執行疊接操作的裝置和方法 |
Country Status (9)
Country | Link |
---|---|
US (1) | US12061906B2 (zh) |
EP (1) | EP3314395B1 (zh) |
JP (1) | JP6971220B2 (zh) |
KR (1) | KR102584035B1 (zh) |
CN (1) | CN107851019B (zh) |
GB (1) | GB2540939B (zh) |
IL (1) | IL256554B (zh) |
TW (1) | TWI716425B (zh) |
WO (1) | WO2017021677A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11182200B2 (en) * | 2017-06-29 | 2021-11-23 | Texas Instruments Incorporated | Streaming engine with short cut start instructions |
GB2564853B (en) * | 2017-07-20 | 2021-09-08 | Advanced Risc Mach Ltd | Vector interleaving in a data processing apparatus |
WO2019229538A2 (zh) * | 2018-05-30 | 2019-12-05 | 赛灵思公司 | 数据转换结构、方法及其片上实现 |
GB2580068B (en) * | 2018-12-20 | 2021-02-24 | Advanced Risc Mach Ltd | Generating a vector predicate summary |
CN111538817B (zh) * | 2019-01-18 | 2024-06-18 | 北京京东尚科信息技术有限公司 | 人机交互方法和装置 |
CN111813446A (zh) * | 2019-04-12 | 2020-10-23 | 杭州中天微系统有限公司 | 一种数据加载和存储指令的处理方法和处理装置 |
CN111813447B (zh) | 2019-04-12 | 2022-11-08 | 杭州中天微系统有限公司 | 一种数据拼接指令的处理方法和处理装置 |
CN111814093A (zh) | 2019-04-12 | 2020-10-23 | 杭州中天微系统有限公司 | 一种乘累加指令的处理方法和处理装置 |
CN112446497B (zh) * | 2019-09-02 | 2024-02-27 | 中科寒武纪科技股份有限公司 | 数据块拼接方法、相关设备及计算机可读介质 |
US11086625B2 (en) | 2019-09-10 | 2021-08-10 | Apple Inc. | Compression assist instructions |
CN111443948B (zh) * | 2020-03-30 | 2022-09-09 | 龙芯中科技术股份有限公司 | 指令执行方法、处理器和电子设备 |
CN114296798B (zh) * | 2021-12-10 | 2024-08-13 | 龙芯中科技术股份有限公司 | 向量移位方法、处理器及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040098556A1 (en) * | 2001-10-29 | 2004-05-20 | Buxton Mark J. | Superior misaligned memory load and copy using merge hardware |
WO2005088441A2 (en) * | 2004-03-10 | 2005-09-22 | Arm Limited | Inserting bits within a data word |
TW201243715A (en) * | 2011-04-01 | 2012-11-01 | Intel Corp | Vector friendly instruction format and execution thereof |
TW201301032A (zh) * | 2011-06-24 | 2013-01-01 | Kenneth Cheng-Hao Lin | 高性能緩存方法和裝置 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5751614A (en) * | 1994-03-08 | 1998-05-12 | Exponential Technology, Inc. | Sign-extension merge/mask, rotate/shift, and boolean operations executed in a vectored mux on an ALU |
US5781457A (en) * | 1994-03-08 | 1998-07-14 | Exponential Technology, Inc. | Merge/mask, rotate/shift, and boolean operations from two instruction sets executed in a vectored mux on a dual-ALU |
US6643765B1 (en) * | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US6115812A (en) * | 1998-04-01 | 2000-09-05 | Intel Corporation | Method and apparatus for efficient vertical SIMD computations |
US5996057A (en) * | 1998-04-17 | 1999-11-30 | Apple | Data processing system and method of permutation with replication within a vector register file |
US6308253B1 (en) * | 1999-03-31 | 2001-10-23 | Sony Corporation | RISC CPU instructions particularly suited for decoding digital signal processing applications |
US7685212B2 (en) | 2001-10-29 | 2010-03-23 | Intel Corporation | Fast full search motion estimation with SIMD merge instruction |
US20130212355A1 (en) * | 2002-02-04 | 2013-08-15 | Tibet MIMAR | Conditional vector mapping in a SIMD processor |
JP3958662B2 (ja) * | 2002-09-25 | 2007-08-15 | 松下電器産業株式会社 | プロセッサ |
US9557994B2 (en) * | 2004-07-13 | 2017-01-31 | Arm Limited | Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number |
US7933405B2 (en) * | 2005-04-08 | 2011-04-26 | Icera Inc. | Data access and permute unit |
US20070106883A1 (en) * | 2005-11-07 | 2007-05-10 | Choquette Jack H | Efficient Streaming of Un-Aligned Load/Store Instructions that Save Unused Non-Aligned Data in a Scratch Register for the Next Instruction |
US8078836B2 (en) * | 2007-12-30 | 2011-12-13 | Intel Corporation | Vector shuffle instructions operating on multiple lanes each having a plurality of data elements using a common set of per-lane control bits |
US20090182982A1 (en) * | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Rotate Then Insert Selected Bits Facility and Instructions Therefore |
US8356160B2 (en) * | 2008-01-15 | 2013-01-15 | International Business Machines Corporation | Pipelined multiple operand minimum and maximum function |
US20120254589A1 (en) * | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | System, apparatus, and method for aligning registers |
WO2013095582A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for extracting a writemask from a register |
US9600285B2 (en) * | 2011-12-22 | 2017-03-21 | Intel Corporation | Packed data operation mask concatenation processors, methods, systems and instructions |
US9342479B2 (en) * | 2012-08-23 | 2016-05-17 | Qualcomm Incorporated | Systems and methods of data extraction in a vector processor |
CN102843147B (zh) * | 2012-09-27 | 2016-06-22 | 中国传媒大学 | 循环右移累加基的dtmb中ldpc编码器和编码方法 |
CN102857235B (zh) * | 2012-09-27 | 2015-03-25 | 中国传媒大学 | 基于共享寄存器的dtmb中ldpc编码器和编码方法 |
US9250916B2 (en) * | 2013-03-12 | 2016-02-02 | International Business Machines Corporation | Chaining between exposed vector pipelines |
US9639503B2 (en) | 2013-03-15 | 2017-05-02 | Qualcomm Incorporated | Vector indirect element vertical addressing mode with horizontal permute |
-
2015
- 2015-07-31 GB GB1513497.6A patent/GB2540939B/en active Active
-
2016
- 2016-06-15 WO PCT/GB2016/051772 patent/WO2017021677A1/en active Application Filing
- 2016-06-15 EP EP16731266.9A patent/EP3314395B1/en active Active
- 2016-06-15 CN CN201680043378.7A patent/CN107851019B/zh active Active
- 2016-06-15 KR KR1020187004344A patent/KR102584035B1/ko active IP Right Grant
- 2016-06-15 US US15/745,478 patent/US12061906B2/en active Active
- 2016-06-15 JP JP2018503761A patent/JP6971220B2/ja active Active
- 2016-07-29 TW TW105124012A patent/TWI716425B/zh active
-
2017
- 2017-12-25 IL IL256554A patent/IL256554B/en active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040098556A1 (en) * | 2001-10-29 | 2004-05-20 | Buxton Mark J. | Superior misaligned memory load and copy using merge hardware |
WO2005088441A2 (en) * | 2004-03-10 | 2005-09-22 | Arm Limited | Inserting bits within a data word |
TW201243715A (en) * | 2011-04-01 | 2012-11-01 | Intel Corp | Vector friendly instruction format and execution thereof |
TW201301032A (zh) * | 2011-06-24 | 2013-01-01 | Kenneth Cheng-Hao Lin | 高性能緩存方法和裝置 |
Non-Patent Citations (2)
Title |
---|
"IA-64 Application Developer's Architecture Guide",Intel,1999/05; https://www.csee.umbc.edu/portal/help/architecture/adag.pdf * |
"IA-64 Application Developer's Architecture Guide",Intel,1999/05; https://www.csee.umbc.edu/portal/help/architecture/adag.pdf。 |
Also Published As
Publication number | Publication date |
---|---|
IL256554A (en) | 2018-02-28 |
CN107851019B (zh) | 2022-06-28 |
IL256554B (en) | 2020-03-31 |
EP3314395A1 (en) | 2018-05-02 |
KR20180033526A (ko) | 2018-04-03 |
US12061906B2 (en) | 2024-08-13 |
GB2540939B (en) | 2019-01-23 |
TW201721410A (zh) | 2017-06-16 |
KR102584035B1 (ko) | 2023-10-04 |
GB201513497D0 (en) | 2015-09-16 |
JP6971220B2 (ja) | 2021-11-24 |
JP2018521426A (ja) | 2018-08-02 |
GB2540939A (en) | 2017-02-08 |
CN107851019A (zh) | 2018-03-27 |
US20180210733A1 (en) | 2018-07-26 |
WO2017021677A1 (en) | 2017-02-09 |
EP3314395B1 (en) | 2022-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI716425B (zh) | 用於執行疊接操作的裝置和方法 | |
US10776124B2 (en) | Handling exceptional conditions for vector arithmetic instruction | |
CN101965554B (zh) | 选择性地提交已执行指令的结果的系统和方法 | |
EP2569694B1 (en) | Conditional compare instruction | |
JP6267513B2 (ja) | 同一のデータ条件に依存する、隣接する命令の実行の制御 | |
US10795675B2 (en) | Determine whether to fuse move prefix instruction and immediately following instruction independently of detecting identical destination registers | |
WO2017021678A1 (en) | An apparatus and method for transferring a plurality of data structures between memory and a plurality of vector registers | |
US9081564B2 (en) | Converting scalar operation to specific type of vector operation using modifier instruction | |
KR102256188B1 (ko) | 데이터 처리장치 및 벡터 오퍼랜드를 처리하는 방법 | |
JP2018531467A6 (ja) | ベクトル演算命令の例外条件処理 | |
US9965275B2 (en) | Element size increasing instruction | |
KR101016257B1 (ko) | 프로세서 및 정보 처리 장치 | |
US11803388B2 (en) | Apparatus and method for predicting source operand values and optimized processing of instructions | |
US20240354105A1 (en) | Apparatus and method for performing a splice operation | |
US10552156B2 (en) | Processing operation issue control |