TW201901412A - 向量處理器的序列對齊方法 - Google Patents
向量處理器的序列對齊方法 Download PDFInfo
- Publication number
- TW201901412A TW201901412A TW107105795A TW107105795A TW201901412A TW 201901412 A TW201901412 A TW 201901412A TW 107105795 A TW107105795 A TW 107105795A TW 107105795 A TW107105795 A TW 107105795A TW 201901412 A TW201901412 A TW 201901412A
- Authority
- TW
- Taiwan
- Prior art keywords
- sequence
- group
- elements
- alignment
- new
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 103
- 238000002864 sequence alignment Methods 0.000 title claims abstract description 76
- 238000010586 diagram Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 4
- 238000000605 extraction Methods 0.000 description 3
- 230000001174 ascending effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005111 flow chemistry technique Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002028 premature Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8092—Array of vector units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
一種可由向量處理器實行的序列對齊方法可包括:載入為包括多個元素的向量資料的實例的序列;將序列劃分成兩個群組;根據單指令多資料流程模式將群組各自的元素對齊,以產生經排序元素的序列;以及基於判斷出經排序元素的序列中的每一群組包括多個元素中多於一個元素來反覆運算地實行對齊操作。每一次反覆運算可包括:對每一群組進行劃分以形成新群組;以及將每一對相鄰的新群組各自的元素對齊,以產生經排序元素的新序列。基於判斷出每一新群組不包括多於一個元素,可傳送對齊操作的當前反覆運算的新序列作為資料輸出。
Description
本公開大體來說涉及改善電腦處理器性能,且更具體來說涉及向量處理器的序列對齊方法。
以降冪或昇冪進行的序列對齊(例如,對序列中的元素進行的排序)是許多系統中使用的基本功能。通過複雜度為O(nlog (n))的“快速排序(fast sort)”排序演算法(例如,迅速排序(quick sort))實行對齊包括對各別的元素進行操縱且因而難以應用於利用單指令多資料流程(single instruction multiple data,SIMD)或單指令多執行緒(single instruction multiple thread,SIMT)架構的向量處理器(例如,由所述向量處理器實現)。
因此,大部分包括一個或多個向量處理器及/或一個或多個多核心的計算系統可利用“歸併排序(merge sort)”排序演算法來實現序列的對齊(“序列對齊”)。由於歸併排序對於已經過排序的資料而言相對快速及高效,因此使用歸併排序的計算系統可能需要在對已分組的元素進行歸併之前對所述已分組的元素進行迅速排序。大體來說,利用二元樹結構(binary tree structure)的歸併排序的複雜度(即,O(Nlog2
N))與資料組的大小(即,N)成比例。
圖1是用於解釋可由包括一個或多個向量處理器及/或一個或多個多核心(multicore)的計算系統實行的典型歸併排序方法的圖式。圖1示出以昇冪對八個元素(N=8)的序列進行排序(“對齊”)的方法。
參照圖1,典型歸併排序方法首先將序列劃分成N個元素。傳統的標量處理器可能需要實行與歸併排序方法相關的單獨的劃分過程,但向量處理器未必需要實行這種劃分過程,因為在向量處理器中,序列的元素通過向量結構進行連接。因此,向量處理器可通過載入由N個元素形成的序列來簡單地完成劃分過程。
之後,對從序列劃分出的N個元素中的所述序列中的每一對相鄰的元素進行排序(“對齊”)。這一步驟被稱為歸併步驟,具體來說,歸併步驟的“治服(conquer)”步驟。舉例來說,如圖1所示,相鄰的元素“8”與“3”可被排序為“38”,因為3小於8,且相鄰的元素“2”與“9”可被排序為“29”,因為2小於9。由於序列的N個元素中的每一者均需要被置入到緩衝器中並被調用,因此可實現N次調用。也就是說,排序的複雜度最大可為O(N)。
之後,可對序列中的每一對相鄰的經排序子序列進行組合。這一步驟也可為歸併步驟的一部分。舉例來說,可將一對相鄰的子序列“38”與“29”組合為“2389”,且可將一對相鄰的子序列“17”與“45”組合為“1457”。
對子序列“38”與“29”進行組合涉及將3與“2”及“9”中的每一者進行比較以及將“8”與“9”進行比較,且因此需要三次調用。對子序列“17”與“45”進行組合涉及將“1”與“4”及“5”中的每一者進行比較以及將“7”與“4”及“5”中的每一者進行比較,且因此需要四次調用。也就是說,由於在最差情形中,對每一對相鄰的子序列進行比較需要最多四次調用,且總共最多八次調用。也就是說,進行組合的複雜度可變成O(N)。
最終,為對“2839”與“1457”進行組合,可將“2”與“1”、“4”、“5”、及“7”中的每一者進行比較,可將“3”與“4”、“5”、及“7”中的每一者進行比較,且可將“8”與“4”、“5”、及“7”中的每一者進行比較,但無需與“9”進行比較。如果序列發生變化,則最多可需要N次比較。即使在這種情形中,複雜度可仍為O(N)。因此,在典型歸併排序方法的每一步驟中需要最多N次調用,且典型歸併排序方法的每一步驟中的複雜度可為O(N)。
將具有N個元素的序列劃分成兩半這一操作可實行log2
(N)次以獲得N個子序列,每一子序列含有一個元素,且可將對N個子序列進行組合實行log2
(N)次以獲得完整的經對齊序列。因此,在最差情形中,需要N*log2
(N)次調用,此意味著包括圖1所示歸併排序方法在內的歸併排序方法的總複雜度可變成O(N*log2
(N))。由向量處理器實行的對齊方法的這種複雜度可造成資源(例如,處理容量、記憶體容量、電源等)的欠佳使用以及包括向量處理器的計算系統的欠佳運算速度。因此,利用歸併排序方法的計算系統的運算效率(“電腦性能”)可處於欠佳狀態。
本公開的示例性實施例提供一種向量處理器的序列對齊方法,所述方法可通過降低運算速度及資源使用量來提高計算系統的效率。
然而,本公開的示例性實施例並非僅限於本文所述。通過參照以下給出的本公開的詳細說明,對本公開所屬領域中的普通技術人員來說,本公開的以上及其他示例性實施例將變得更顯而易見。
根據一些示例性實施例,一種向量處理器的序列對齊方法可包括:載入序列,所述序列是向量資料的實例,所述向量資料的實例包括多個元素;將所述序列劃分成兩個群組,使得所述兩個群組中的每一群組包括所述多個元素中的單獨一組i個元素,i是自然數;根據單指令多資料流程(SIMD)模式將所述序列中的所述群組各自的第i個元素逐一元素地對齊,以產生經排序元素的序列;以及基於判斷出所述經排序元素的序列中的每一群組包括所述多個元素中的多於一個元素來反覆運算地實行對齊操作。所述對齊操作中的每一次反覆運算可包括:將每一群組劃分成兩半以形成兩個新群組,每一新群組包括經劃分的所述群組的所述i個元素中的單獨一組j個元素,j是自然數;將所述經排序元素的序列中的所述新群組中的每一對相鄰的新群組各自的第j個元素逐一元素地對齊,以產生經排序元素的新序列,以及基於判斷出j>1,使用所述新群組及所述經排序元素的新序列來起始所述對齊操作的新反覆運算。所述方法還可包括基於在所述對齊操作的當前反覆運算中判斷出j=1,傳送所述當前反覆運算的所述新序列作為資料輸出。
根據一些示例性實施例,一種向量處理器的序列對齊方法可包括:載入序列,所述序列是向量資料的實例,所述向量資料的實例包括N個元素,其中N=2n
,n是自然數;以及將所述序列劃分成一組群組,所述一組群組中的每一群組包括N/(2n
)個元素,且根據單指令多資料流程(SIMD)模式將所述一組群組中的每一對相鄰的群組各自的第i個元素對齊以產生經排序元素的新序列,其中i是小於N/(2n
)的自然數。所述劃分及所述對齊可包括:利用排列運算以與所述序列不同的次序產生複本序列,以及對所述序列及所述複本序列實行“極小極大(minmax)”運算。所述方法還可包括傳送所述經排序元素的新序列作為輸出資料。
根據一些示例性實施例,提供一種向量處理器的序列對齊方法,所述向量處理器被配置成實現多個槽位,所述多個槽位中的每一槽位包括單獨的一組功能單元,所述向量處理器還被配置成執行由所述多個槽位共用的暫存器,所述向量處理器的序列對齊方法可包括:載入序列,所述序列是向量資料的實例,所述向量資料的實例具有N個元素,N=2n
,n是自然數;以及使所述多個槽位並行地實行以下操作:將所述序列劃分成一組群組,所述一組群組中的每一群組包括N/(2n
)個元素,以及根據單指令多資料流程(SIMD)模式將所述一組群組中的每一對相鄰的群組各自的第i個元素對齊以產生經排序元素的新序列,i是小於N/(2n
)的自然數。所述方法還可包括傳送所述經排序元素的新序列作為輸出資料。
通過閱讀以下詳細說明、圖式及權利要求書,其他特徵及示例性實施例可顯而易見。
在一些示例性實施例中,計算系統包括被配置成以比典型歸併排序方法低的複雜度實現序列對齊方法的向量處理器,所述計算系統可被配置成以提高的運算速度及降低的計算資源(例如,記憶體)使用量來實行至少序列對齊,從而使所述計算系統相對於包括被配置成利用歸併排序方法的向量處理器的計算系統而言實現提高的運算效率(例如,提高的電腦性能)。所述計算系統可被配置成實現的上述序列對齊方法在本文中可被稱為“向量處理器的序列對齊方法”。
在下文中將參照圖2及圖3A至圖3D來闡述根據本公開一些示例性實施例的向量處理器的序列對齊方法。
圖2是示出根據本公開一些示例性實施例的向量處理器的序列對齊方法的流程圖,且圖3A至圖3D是示出根據圖2所示示例性實施例的向量處理器的序列對齊方法的圖式。圖3A至圖3D示出對具有十六個元素的序列進行排序的方法,但本公開並非僅限於此。圖2以及圖3A至圖3D所示方法可由包括向量處理器的計算系統來實現,所述計算系統包括以下在至少圖4中示出的計算系統。
參照圖2,輸入向量資料(S100)。這種所輸入向量資料(在本文中也被稱為“向量資料的實例”)可基於在計算系統處通過通信介面從遠端裝置接收到向量資料、從計算系統的記憶體載入向量資料、它們的一些組合等來輸入。
向量資料的實例可為元素的未經排序的序列。所述序列(“向量資料的實例”)可包括總共N個元素。N可為2n
(其中,n是自然數),但本公開並非僅限於此。在一些示例性實施例中,基於判斷出N不是2n
,在S100處進行的輸入可包括向序列添加虛設元素以使得N可變成2n
。所述N個元素可在計算系統的向量處理器的不同的單指令多資料流程(SIMD)線路中進行計算。因此,序列的單指令多資料流程線路的數目可為N或大於N。
具體來說,參照圖3A,可輸入(“載入”)具有總共十六個元素的序列S-0,如圖3A所示,所述各元素的按次序參考標籤介於“0”到“F”範圍內,但本公開並非僅限於此。也就是說,輸入序列的元素的數目並無具體限制。輸入序列可為新輸入的序列或者之後從記憶體載入的序列。圖3A示出如何將包括十六個元素[1, 6, 14, 3, 12, 10, 15, 5, 7, 2, 8, 11, 16, 4, 13, 9]的序列的序列S-0對齊。
再次參照圖2,將輸入序列劃分成一組群組,其中所述一組群組可為兩個群組(S200)。
具體來說,參照圖3A,在第一階段“Stage1”中,可將輸入序列S-0(即,[1, 6, 14, 3, 12, 10, 15, 5, 7, 2, 8, 11, 16, 4, 13, 9])劃分成“1-1”群組G1-1及“1-2”群組G1-2。
“1-1”群組G1-1及“1-2”群組G1-2可通過將輸入序列劃分成兩半來獲得。因此,“1-1”群組G1-1及“1-2”群組G1-2中的每一者可各自具有共同數量的i個元素。如圖3A所示,基於輸入序列被劃分成兩半來形成群組G1-1及群組G1-2,所述共同數量的“i”個元素可為N/2個元素,即八個元素。在一些示例性實施例中,“i”可小于N/(2n
)。
“1-1”群組G1-1及“1-2”群組G1-2中的每一者可具有第零元素至第七元素(例如,0 ≦ i ≦ 7)。稍後可分別將“1-1”群組G1-1的第零元素至第七元素與“1-2”群組G1-2的第零元素至第七元素進行比較及排序。重申一下,可對序列中的群組G1-1及G1-2各自的第i個元素進行逐一元素地對齊以產生經排序元素的序列(“S-1”)。
再次參照圖2,逐一元素地對各個群組彼此進行比較(S300),以使序列S-0中的所述一組群組各自的第i個元素逐一元素地對齊以產生經排序元素的序列(S-1)。所述對齊可根據單指令多資料流程(SIMD)模式來實行。
具體來說,參照圖3A,可將“1-1”群組G1-1與“1-2”群組G1-2彼此進行比較。對“1-1”群組G1-1與“1-2”群組G1-2群組進行比較可為對“1-1”群組G1-1的元素與“1-2”群組G1-2的元素進行比較。也就是說,可分別將“1-1”群組G1-1的第零元素至第七元素與“1-2”群組G1-2的第零元素至第七元素進行比較及排序(“對齊”)。
舉例來說,將“1-1”群組G1-1的第零元素(即,“1”)與“1-2”群組G1-2的第零元素(即,“7”)進行比較。由於1小於7,因此“1-1”群組G1-1的第零個元素與“1-2”群組G1-2的第零個元素相對於它們在輸入序列S-0中的位置而言維持它們在經排序元素的序列S-1中的位置。序列中的元素的“位置”可被理解成序列中的由與序列中的相應位置相關聯的對應參考標籤定義的位置301。因此,例如如圖3A所示,“1-1”群組G1-1的第零元素及“1-2”群組G1-2的第零元素將它們的位置分別維持在序列S-1的位置1及位置8處。
另一方面,由於“1-1”群組G1-1的第一元素(即,“6”)大於“1-2”群組G1-2的第一元素(即,“2”),因此“1-1”群組G1-1的第一元素與“1-2”群組G1-2的第一元素交換它們的位置。結果,“2”可屬於“1-1”群組G1-1,且“6”可屬於“1-2”群組G1-2。
這樣一來,作為第一階段“Stage1”的結果,輸入序列可被對齊以產生經排序元素的序列S-1[1,2
,8
, 3, 12,4
,13
, 5, 7,6
,14
, 11, 16,10
,15
, 9]。
再次參照圖2,判斷群組中的每一者是否具有(“包括”)多於一個元素(S400),且如圖2所示可基於判斷出經排序元素的序列中的每一群組包括所述多個元素中的多於一個元素(S400=是)來反覆運算地實行對齊操作(S450=S500-S900)。重申一下,可基於判斷出經排序元素的新序列中的每一對相鄰的新群組各自的第j個元素的逐一元素進行的排序的數量等於為至少2m的值來起始使用新群組及經排序元素的新序列進行的對齊操作(S450)的新反覆運算,其中新群組的數量等於22m
。
S400是用於將輸入序列(例如,S400處的當前序列)連續地(例如,反覆運算地)劃分成較小的群組直到各群組各自含有(“包括”)僅一個元素的判斷步驟。如果群組中的每一者含有僅一個元素(即,每一群組均不包括多於一個元素)(S400=否),則輸入序列無法進一步劃分,且因此,輸入序列的劃分可被終止。
參照圖3A,由於群組G1-1及群組G1-2中的每一者含有八個元素(多於一個元素),因此不終止輸入序列的劃分(S400=是)。
再次參照圖2,在對齊操作(S450)的給定反覆運算中,將群組中的每一者劃分成兩個子群組(S500)。如在本文中所提及,在對齊操作(S450)的給定反覆運算中在(S500)處產生的給定子群組可相對於在(S500)處被劃分的群組被稱為“新群組”,使得(S500)包括將每一群組劃分成兩半以形成兩個新群組,每一新群組包括經劃分群組的i個元素的單獨的一組j個元素,j是自然數。
具體來說,參照圖3B,“1-1”群組G1-1可被劃分成“2-1”群組G2-1及“2-2”群組G2-2,且“1-2”群組G1-2可被劃分成“2-3”群組G2-3及“2-4”群組G2-4。
“2-1”群組G2-1、“2-2”群組G2-2、“2-3”群組G2-3、及“2-4”群組G2-4中的每一者可含有“1-1”群組G1-1及“1-2”群組G-2中的每一者的元素的一半數目,即四個元素。重申一下,每一新群組中的元素的共同數量“j”可為i/2。在第二階段“Stage2”中,可對“2-1”群組G2-1、“2-2”群組G2-2、“2-3”群組G2-3及“2-4”群組G2-4中的每一者的元素進行排序(“對齊”)。“2-1”群組G2-1、“2-2”群組G2-2、“2-3”群組G2-3及“2-4”群組G2-4中的每一者可包括四個元素,即第零元素至第三元素(例如,0 ≦ j ≦ 3)。
再次參照圖2,在對齊操作(S450)的給定反覆運算中,從第一子群組開始逐一元素地對每一對相鄰的子群組(“新群組”)進行比較(“比較及排序”、“對齊”等)(S600),以使經排序元素的序列中的每一對相鄰的新群組各自的第j個元素逐一元素地對齊,以產生經排序元素的新序列。
具體來說,參照圖3B,作為(S600)處的對齊的一部分,可將“2-1”群組G2-1與“2-2”群組G2-2彼此進行比較,且可將“2-3”群組G2-3與“2-4”群組G2-4彼此進行比較。也就是說,可分別將“2-1”群組G2-1的第零元素至第三元素與“2-2”群組G2-2的第零元素至第三元素進行比較,且可分別將“2-3”群組G2-3的第零元素至第三元素與“2-4”群組G2-4的第零元素至第三元素進行比較。經比較的元素可被排序成新的或相同的位置301以產生經排序元素的新序列(S-2),從而將經排序元素的序列中的每一對相鄰的新群組各自的第j個元素逐一元素地對齊,以產生經排序元素的新序列(S-2)。
這樣一來,輸入序列(S-1)可被對齊以產生經排序元素的新序列(S-2)[1, 2, 8, 3, 12, 4, 13, 5, 7, 6, 14,9
, 16, 10, 15,11
]。
再次參照圖2,在對齊操作(S450)的給定反覆運算中,從第二子群組開始對每一對相鄰的子群組進行比較(S700),以使從第二新群組開始,經排序元素的新序列(S-2)中的每一對相鄰的新群組各自的第j個元素逐一元素地對齊,以產生再一個經排序元素的新序列(S-3)。
具體來說,參照圖3B,將第一子群組及最末子群組(即,“2-1”群組G2-1及“2-4”群組G2-4)除外,且逐一元素地對“2-2”群組G2-2及“2-3”群組G2-3進行比較(“比較及排序”、“對齊”等)。
這樣一來,輸入序列(S-2)可被對齊以產生經排序元素的新序列(S-3)[1, 2, 8, 3, 12, 4, 13, 5, 7, 6, 14,9
, 16, 10, 15,11
]。
如在本文中所提及,在S600處進行比較(“對齊”)在本文中可被稱為實行第一對齊操作、實行第一排序操作、它們的一些組合等。如在本文中所提及,在S700處進行比較(“對齊”)在本文中可被稱為實行第二對齊操作、實行第二排序操作、它們的一些組合等。
再次參照圖2,在對齊操作(S450)的給定反覆運算中,判斷輸入序列(S-3)與在S600及S700之前是否相同(S800)。重申一下,作出關於所述再一個新序列S-3與對齊操作(S450)的給定反覆運算的輸入序列(S-1)是否相同的判斷。
如果輸入序列與在S600及S700之前相同(例如,S-1=S-3),則當前階段(“反覆運算”、“對齊操作(S450)的反覆運算”等)即第二階段“Stage2”便可完成,且所述方法可進一步基於判斷出每一新群組中的元素的數目大於一來繼續進行到新階段(即,圖3C所示第三階段“Stage3”)。重申一下,可基於針對新群組G2-1至G2-4判斷出j>1(例如,S800=是及S400=是)來起始使用新群組G2-1至G2-4以及經排序元素的新序列(S-3)進行的對齊操作的新反覆運算。第三階段“Stage3”是用於對在第二階段“Stage2”中獲得的子群組中的每一者進行劃分的階段。重申一下,可使用從給定反覆運算得到的新群組及經排序元素的新序列來起始對齊操作(S450)的新反覆運算,以使給定反覆運算的新群組及新序列變成新反覆運算的輸入群組及輸入序列。
具體來說,參照圖3B,由於因輸入序列(S-3)的“9”及“11”被排序而使輸入序列(S-3)不再與在S600及S700之前相同(例如,S-1≠S-3),因此所述方法可保持處於第二階段“Stage2”,而不繼續進行到第三階段“Stage3”。
再次參照圖2,在對齊操作(S450)的給定反覆運算中,判斷是否已達到與對齊操作(S450)的給定反覆運算相關聯的排序(“排序”、“對齊”等)的最多次數(S900)。
排序的最多次數是出於以下目的(“與以下相關聯地”)定義的值:使在每一階段(“給定反覆運算”)中實行僅特定的(或,作為另外一種選擇,預定的)數目(“數量”)的排序以及接著進一步基於判斷出每一新群組中的元素的數目大於一來在達到所述特定數目時繼續進行到下一階段(“新反覆運算”)。重申一下,可基於針對新群組G2-1至G2-4判斷出j>1(例如,S900=是及S400=是)來起始使用新群組G2-1至G2-4以及經排序元素的新序列(S-3)進行的對齊操作的新反覆運算。進一步重申,S600可包括實行對所有新群組中的每一對相鄰的新群組逐一元素地進行排序的第一對齊操作,S700可包括實行對所有新群組中除第一新群組及最末新群組外的每一對相鄰的新群組逐一元素地進行排序的第二對齊操作,且對齊操作(S450)的給定反覆運算可包括重複第一對齊操作(S600)及第二對齊操作(S700)“m”次(例如,只要S900=否便進行重複且直到S900=是)。重申一下,可重複第一對齊操作及第二對齊操作最多(n-1)次。
各個階段的排序的最多次數可彼此不同(例如,每一次給定反覆運算可與各自的特定數目相關聯)。舉例來說,第一階段“Stage1”的排序的最多次數可為1,第二階段“Stage2”的排序的最多次數可為2,第三階段“Stage3”的排序的最多次數可為4,且第四階段“Stage4”的排序的最多次數可為6。也就是說,第一階段“Stage1”的排序的最多次數可為1,且作為除第一階段“Stage1”外的階段的第k階段的排序的最多次數可為2*(k-1)。
由於N=2n
,因此在第k階段中可產生各自具有2(n-k)
個元素的總共2k
個群組。
也就是說,參照圖2所示S800及S900,對齊操作(S450)的給定反覆運算可包括在與給定反覆運算相關聯的排序(“對齊”)的最多次數內過早地終止排序(“對齊”)。也就是說,在作為最末階段的第n階段中,複雜度可變成O(2*(log2
(N)-1))。稍後將闡述總複雜度。
具體來說,參照圖3B,由於已達到第二階段“Stage2”的排序的最多次數(即,2),因此不再執行任何排序,且方法繼續進行到第三階段“Stage3”。
再次參照圖2,判斷在第二階段“Stage2”中獲得的每一群組是否具有多於一個元素(S400),且將每一群組劃分成兩個子群組(S500)。
具體來說,參照圖3C,在對齊操作(S450)的新(“第二”)反覆運算中,可將“2-1”群組G2-1劃分成“3-1”群組G3-1及“3-2”群組G3-2,可將“2-2”群組G2-2劃分成“3-3”群組G3-3及“3-4”群組G3-4,可將“2-3”群組G2-3劃分成“3-5”群組G3-5及“3-6”群組G3-6,且可將“2-4”群組G2-4劃分成“3-7”群組G3-7及“3-8”群組G3-8。
“3-1”群組G3-1、“3-2”群組G3-2、“3-3”群組G3-3、“3-4”群組G3-4、“3-5”群組G3-5、“3-6”群組G3-6、“3-7”群組G3-7及“3-8”群組G3-8中的每一者可含有“2-1”群組G2-1、“2-2”群組G2-2、“2-3”群組G2-3及“2-4”群組G2-4中的每一者的元素的一半數目,即兩個元素。在第三階段“Stage3”中,可對“3-1”群組G3-1、“3-2”群組G3-2、“3-3”群組G3-3、“3-4”群組G3-4、“3-5”群組G3-5、“3-6”群組G3-6、“3-7”群組G3-7及“3-8”群組G3-8中的每一者的元素進行排序。“3-1”群組G3-1、“3-2”群組G3-2、“3-3”群組G3-3、“3-4”群組G3-4、“3-5”群組G3-5、“3-6”群組G3-6、“3-7”群組G3-7及“3-8”群組G3-8中的每一者可包括兩個元素,即,第零元素及第一元素。
再次參照圖2,在對齊操作(S450)的新(“第二”)反覆運算中,從第一子群組開始逐一元素地對每一對相鄰的子群組進行比較(對齊)(S600)。
具體來說,參照圖3C,可將“3-1”群組G3-1與“3-2”群組G3-2彼此進行比較,且可將“3-3”群組G3-3與“3-4”群組G3-4彼此進行比較。另外,可將“3-5”群組G3-5與“3-6”群組G3-6彼此進行比較,且可將“3-7”群組G3-7與“3-8”群組G3-8彼此進行比較。
也就是說,可分別將“3-1”群組G3-1的第零元素及第一元素與“3-2”群組G3-2的第零元素及第一元素進行比較,且可分別將“3-3”群組G3-3的第零元素及第一元素與“3-4”群組G3-4的第零元素及第一元素進行比較。另外,可分別將“3-5”群組G3-5的第零元素及第一元素與“3-6”群組G3-6的第零元素及第一元素進行比較,且可分別將“3-7”群組G3-7的第零元素及第一元素與“3-8”群組G3-8的第零元素及第一元素進行比較。
這樣一來,輸入序列(S-3)可被對齊以產生經排序元素的新序列(S-4)[1, 2, 8, 3,7
, 4, 13, 5,12
, 6, 14, 9,15
, 10,16
, 11]。
再次參照圖2,在對齊操作(S450)的新(“第二”)反覆運算中,從第二子群組開始對每一對相鄰的子群組進行比較(S700)。
具體來說,參照圖3C,將第一子群組及最末子群組(即,“3-1”群組G3-1及“3-8”群組G3-8)除外,可將“3-2”群組G3-2與“3-3”群組G3-3彼此進行比較,可將“3-4”群組G3-4與“3-5”群組G3-5彼此進行比較,且可將“3-6”群組G3-6與“3-7”群組G3-7彼此進行比較。
這樣一來,輸入序列(S-4)可被對齊以產生經排序元素的新序列(S-5)[1, 2,7
, 3,8
, 4,12
, 5,13
, 6, 14, 9,15
, 10,16
, 11]。
再次參照圖2及圖3C,在對齊操作(S450)的新(“第二”)反覆運算中,由於輸入序列不與在S600及S700之前相同(S800=否)且尚未達到第三階段“Stage3”的排序的最多次數(S900=否),因此所述方法在對齊操作(S450)的同一(“第二”)反覆運算中返回到S500。
這樣一來,輸入序列(S-5)可被對齊以產生經排序元素的新序列(S-6)[1, 2, 7, 3, 8, 4, 12, 5, 13, 6, 14, 9, 15, 10, 16, 11]。
在以上說明中,S800是在給定反覆運算中在S600及S700之後實行,但本公開並非僅限於此。也就是說,在一些示例性實施例中,S800可在S600與S700之間實行或緊接在S700之後實行,或者在對齊操作(S450)的給定反覆運算中可實行兩次:在S600之後實行一次以及在S700之後實行一次。
由於輸入序列現在與在S600及S700之前相同(S800=是),因此可完成第三階段“Stage3”,且即使尚未達到第三階段“Stage3”的排序的最多次數,所述方法也繼續進行到第四階段“Stage4”。重申一下,可基於針對新群組G3-1至G3-8判斷出j>1(例如,S800=是及S400=是)來起始使用新群組G3-1至G3-8以及經排序元素的新序列(S-6)進行的對齊操作的新(“第三”)反覆運算。
再次參照圖2,回應於判斷在第三階段“Stage3”中獲得的每一群組是否具有一個元素(S400=是),且在對齊操作(S450)的新(“第三”)反覆運算中將每一群組劃分成兩個子群組(S500)。
具體來說,參照圖3D,可將在第三階段“Stage3”中獲得的每一群組劃分成各自具有一個元素的兩個子群組。
也就是說,由於每一元素可形成一個群組,因此在第四階段“Stage4”的S500中可獲得各自具有一個元素的總共16個子群組。
再次參照圖2,在對齊操作(S450)的新(“第三”)反覆運算中,從第一子群組開始逐一元素地對每一對相鄰的子群組進行比較(對齊)(S600)。
具體來說,參照圖3D,對“1”與“2”進行比較,且對“7”與“3”進行比較。這樣一來,可對每一對相鄰的元素進行比較及排序。
這樣一來,輸入序列(S-6)可被對齊以產生經排序元素的新序列(S-7)[1, 2,3
,7
,4
,8
,5
,12
,6
,13
,9
,14
,10
,15
,11
,16
]。
再次參照圖2,在對齊操作(S450)的新(“第三”)反覆運算中,從第二子群組開始對每一對相鄰的子群組進行比較(“對齊”)(S700)。
具體來說,參照圖3D,對除第一元素及最末元素外的每一對相鄰的元素進行比較。舉例來說,對“2”與“3”進行比較,且對“7”與“4”進行比較。
這樣一來,輸入序列(S-7)可被對齊以產生經排序元素的新序列(S-8)[1, 2, 3,4
,7
,5
,8
,6
,12
,9
,13
,10
,14
,11
,15
, 16]。
參照圖2及圖3D,在對齊操作(S450)的新(“第三”)反覆運算中,由於輸入序列不與在S600及S700之前相同(S800=否)且尚未達到第四階段“Stage4”的排序的最多次數(S900=否),因此所述方法在對齊操作(S450)的同一(“第三”)反覆運算中返回到S500。
這樣一來,輸入序列(S-8)可被對齊以產生經排序元素的新序列(S-9)[1, 2, 3, 4,5
,7
,6
,8
,9
,12
,10
,13
,11
,14
, 15, 16]。
再次參照圖2,在對齊操作(S450)的新(“第三”)反覆運算中,從第二子群組開始對每一對相鄰的子群組進行比較(“對齊”)(S700)。
具體來說,參照圖3D,對除第一元素及最末元素外的每一對相鄰的元素進行比較。舉例來說,對“2”與“3”進行比較,且對“4”與“5”進行比較。
這樣一來,輸入序列(S-9)可被對齊以產生經排序元素的新序列(S-10)[1, 2, 3, 4, 5,6
,7
,8
,9
,10
,12
,11
,13
, 14, 15, 16]。
參照圖2及圖3D,在對齊操作(S450)的新(“第三”)反覆運算中,由於輸入序列仍不與在S600及S700之前相同(S800=否)且仍未達到第四階段“Stage4”的排序的最多次數(S900=否),因此所述方法在同一(“第三”)反覆運算中再次返回到S500。
這樣一來,輸入序列(S-10)可被對齊以產生經排序元素的新序列(S-11)[1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11
,12
, 13, 14, 15, 16]。
再次參照圖2,在對齊操作(S450)的新(“第三”)反覆運算中,從第二子群組開始對每一對相鄰的子群組進行比較(“對齊”)(S700)。
具體來說,參照圖3D,對除第一元素及最末元素外的每一對相鄰的元素進行比較。舉例來說,對“2”與“3”進行比較,且對“4”與“5”進行比較。
這樣一來,輸入序列(S-10)可被對齊以產生經排序元素的新序列(S-11)[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]。
再次參照圖2,由於輸入序列現在與在S600及S700之前相同(S800=是)且每一子群組不再具有多於一個元素(S400=否),因此可(例如,基於在當前反覆運算中判斷出j=1)傳送對齊操作(S450)的當前(“第三”)反覆運算的新序列作為輸出資料(S950)。所述傳送可包括:將所述資料輸出保存到用於實現圖2以及圖3A至圖3D所示方法的計算系統的記憶體、將所述資料輸出通過一個或多個通信介面傳送到遠端裝置、通過一個或多個顯示介面提供所述資料輸出或上述的一些組合等。
參照圖3A至圖3D,由於N=2n
,因此在作為除第一階段“Stage1”之外的階段的第k階段中實行的排序(“對齊”)的次數可為最多2*(k-1),且因n=log2
(N),第n階段的排序的最多次數可為2*(log2
(N)-1)。因此,對於當n=1, 2, …, log2
(N)時的每一種情形,可重複地實行將序列劃分成一組群組(例如,其中每一群組包括N/(2n
)個元素)、以及根據單指令多資料流程(SIMD)模式將每一對相鄰的群組各自的第i個元素對齊,其中i是自然數(且i可小於N/(2n
))。在一些示例性實施例中,重複地實行劃分及對齊包括:對於當n=1時的情形(例如,基於判斷出n=1)僅將劃分及對齊實行一次;以及對於當n=2, …, log2
(N)時的情形(例如,基於判斷出n=2, …, log2
(N))實行劃分及對齊2(n-1)次。實行劃分及對齊2(n-1)次可包括:實行對所有群組中的每一對相鄰的群組逐一元素地進行對齊的第一對齊操作(如以上參照至少圖2所闡述);實行對所有群組中除第一群組及最末群組外的每一對相鄰的群組逐一元素地進行對齊的第二對齊操作(如以上參照至少圖2所闡述);以及重複第一對齊操作及第二對齊操作最多(n-1)次。
因此,在第二階段至第n階段中實行的排序的總數目可被表達為2+4+6+...+2*(log2
(N)-1)=[2+2*{log2
(N)-1}]*{log2
(N)-1}/2。由於在第一階段“Stage1”中實行的排序的數目是1,因此可以如下方式來估計在第一階段至第n階段中實行的排序的總數目:1+2+4+6+...+2*(log2
(N)-1)=1+[2+2*{log2
(N)-1}]*{log2
(N)-1}/2≒{log2
(N)}2
。
因此,根據圖2所示示例性實施例的序列對齊方法可具有複雜度O({log2
(N)}2
),複雜度O({log2
(N)}2
)比典型歸併排序方法的複雜度(即,O(N*log2
(N)))低得多。因此,包括被配置成實行圖2所示序列對齊方法的向量處理器的計算系統可被配置成相對于被配置成實行典型歸併排序方法的計算系統而言以提高的運算效率、電腦性能、降低的計算資源使用量、提高的運算速度或上述的一些組合等來實行序列對齊以產生資料輸出。因此,由於包括被配置成實行圖2所示序列對齊方法的向量處理器,計算系統的功能(“功能性”)可得到改善。
圖2及圖3A至圖3D示出以從上到下的方式來實行排序(“對齊”),但在一些示例性實施例中,可以從下到上的方式來實行排序。甚至從下到上的排序方式也可具有比典型歸併排序方法的複雜度(即,O(N*log2
(N)))低得多的複雜度O({log2
(N)}2
),且因此,由計算系統實行的序列對齊的效率可得到提高,從而改善計算系統的功能。
在下文中將參照圖4至圖6來闡述包括向量處理器的計算系統,所述向量處理器被配置成實行根據本公開一些示例性實施例的向量處理器的序列對齊方法。
圖4是包括根據本公開一些示例性實施例的向量處理器的計算系統400的方塊圖,圖5是圖4所示處理器的方塊圖,且圖6是示出根據圖4所示示例性實施例的向量處理器的資料移動架構的圖式。
具體來說,圖4示出包括向量處理器的計算系統400的結構,所述向量處理器被配置成執行根據本公開一些示例性實施例的向量處理器的序列對齊方法。
參照圖4,計算系統400包括向量處理器401,向量處理器401包括處理器200、控制器300及記憶體匯流排100。記憶體匯流排100可包括記憶體、記憶體裝置等。計算系統400還可包括電源410、通信介面420及/或顯示介面430。電源410、通信介面420及/或顯示介面430可通過匯流排440以通信方式耦合到向量處理器401的一個或多個元件。通信介面420可包括有線通信介面及/或無線通信介面。舉例來說,通信介面420可包括無線網路通信收發器。通信介面420可包括有線網路通信介面。通信介面420可被配置成建立及/或終止與一個或多個位於遠端的裝置的一條或多條通信鏈路以及通過所述一條或多條通信鏈路來發送及/或接收資料。
處理器200是被配置成實行(“實現”、“執行”等)算數運算的處理器。在一些示例性實施例中,處理器200可被配置成用作專用於處理包含向量專用指令(vector-specific instruction)的向量運算的向量處理器,所述向量運算例如為預測運算(prediction operation)、向量排列運算(vector permute operation)、向量位操縱運算(vector bit manipulation operation)、蝶形運算(butterfly operation)或排序運算(sorting operation)。在一些示例性實施例中,處理器200可被配置成採用單指令多資料流程及超長指令字(Very-Long Instruction Word,VLIW)架構。在一些示例性實施例中,處理器200被配置成基於執行由儲存在記憶體中的指令形成的一個或多個程式來實現運算、方法、功能性、元件、向量處理器或上述一些組合等,其中記憶體匯流排100可包括記憶體。記憶體匯流排100可包括用於儲存由指令形成的一個或多個電腦可執行程式的非暫時性電腦可讀儲存介質,其中這一個或多個程式可由處理器200執行來使向量處理器401實行一種或多種方法的一個或多個操作。
處理器200可被配置成實現暫存器(212及214)且可利用暫存器(212及214)來實行算數運算。在一些示例性實施例中,暫存器(212及214)可包括標量暫存器(scalar register,SR)212及向量暫存器(vector register,VR)214中的至少一者。
標量暫存器212是在處理器200的標量運算中使用的暫存器,且向量暫存器214是在處理器200的向量運算中使用的暫存器。
參照圖5,處理器200可被配置成實現提取單元220及解碼器230。
解碼器230可對從提取單元220提取的指令進行解碼。在一些示例性實施例中,所提取的指令可使用超長指令字架構由三個槽位(即,第一槽位240a、第二槽位240b及第三槽位240c)來處理。舉例來說,如果所提取的指令是96位元長,則解碼器230可將所提取的指令解碼成三個32位元指令,且所述三個32位元指令可分別由第一槽位240a、第二槽位240b及第三槽位240c來處理。
圖5示出其中所提取的指令被解碼成三個指令且所述三個指令分別由三個槽位進行處理的實例,但本公開並非僅限於此。也就是說,處理器200可被配置成使得所提取的指令可由為兩個或更多個槽位的任意數目的槽位來處理。
在圖5所示示例性實施例中,處理器200可被配置成實現可同時被全部驅動的第一槽位240a、第二槽位240b及第三槽位240c。為高效地實行這種類型的並行處理,可分別在第一槽位240a、第二槽位240b及第三槽位240c中實現(“包括”)標量功能單元(scalar functional unit,SFU)242a、242b、及242c、向量功能單元(vector functional unit,VFU)244a、244b、及244c及移動單元(move unit,MV)246a、246b、及246c。因此,向量處理器401可被配置成構建多個槽位,所述多個槽位各自包括單獨的一組功能單元。
具體來說,第一槽位240a可被構建成包括標量功能單元242a、向量功能單元244a及移動單元246a,第二槽位240b可被構建成包括標量功能單元242b、向量功能單元244b及移動單元246b,且第三槽位240c可被構建成包括標量功能單元242c、向量功能單元244c及移動單元246c。
處理器200可使用分別包括在第一槽位240a、第二槽位240b及第三槽位240c中的移動單元246a、246b及246c來共用資料。
由標量功能單元242a、242b及242c處理的資料可儲存在圖4所示標量暫存器212中,且由向量功能單元244a、244b及244c處理的資料可儲存在圖4所示向量暫存器214中。儲存在標量暫存器212及向量暫存器214中的資料可根據需要由處理器200使用。
圖5所示處理器200的結構僅為實例,且本公開並非僅限於此。
圖6示出根據圖4所示示例性實施例的向量處理器401的資料移動架構。如以上所指示,資料移動架構可基於處理器200執行由儲存在記憶體匯流排100中的指令形成的程式來構建。
參照圖6,資料移動架構包括記憶體層次結構105、暫存器檔110、資料配置層130、多個算數邏輯單位(arithmetic logic unit,ALU)160及控制器170。
記憶體層次結構105提供記憶體介面且可對應於記憶體裝置或圖4所示記憶體匯流排100。
暫存器檔110可對應於圖4所示暫存器(212及214),包括標量暫存器212及向量暫存器214。
資料配置層130可產生資料圖案來對將由處理器200處理的各種大小的資料(例如,矩陣)高效地實行運算。
資料移動架構可使用可由算數邏輯單位160(例如,算數邏輯單位160a、算數邏輯單位160b、算數邏輯單位160c、算數邏輯單位160d等)共用的暫存器(212及214)來實行精密的流控制及複雜的算數運算,且同時,可通過使用資料配置層130對儲存在暫存器(212及214)中的資料進行圖案化來提高輸入資料的再使用性(reusability)。
通過使用圖4至圖6的向量處理器401,可高效地實行根據本公開一些示例性實施例的向量處理器的序列對齊方法。因此,包括向量處理器401的計算系統400可被配置成相對于被配置成實行典型歸併排序方法的計算系統而言以提高的運算效率、電腦性能、降低的計算資源使用量、提高的運算速度、或上述的一些組合等來實行序列對齊以產生資料輸出。因此,作為包括向量處理器401的結果,計算系統400的功能(“功能性”)可得到改善。
也就是說,以上參照圖3A至圖3D闡述的序列對齊方法可包括使用超長指令字架構並行地實行多個排序操作,這是因為將被排序的群組之間不具有資料依賴性。也就是說,舉例來說,參照圖3B,“2-1”群組G2-1及“2-2”群組G2-2的排序以及“2-3”群組G2-3及“2-4”群組G2-4的排序可由不同的槽位來處理,這是因為“2-1”群組G2-1及“2-2”群組G2-2以及“2-3”群組G2-3及“2-4”群組G2-4之間不具有資料依賴性。
舉例來說,在一些示例性實施例中,向量處理器401可被配置成構建多個槽位,所述多個槽位中的每一槽位包括單獨的一組功能單元,且向量處理器還可被配置成執行由所述多個槽位共用的暫存器。所述序列對齊方法可包括:載入序列,所述序列是向量資料的實例,向量資料的實例具有N個元素,N=2n
,n是自然數;以及使所述多個槽位並行地實行以下操作:將序列劃分成一組群組,以及根據單指令多資料流程(SIMD)模式將所述一組群組中的每一對相鄰的群組各自的第i個元素對齊以產生經排序元素的新序列。可傳送經排序元素的新序列作為輸出資料。通過由本文中提供的操作來產生及輸出經排序元素的新序列,包括用於實行這些操作的向量處理器的計算系統可至少憑藉提高的運算效率、電腦性能等而具有改善的功能。所述一組群組中的每一群組可包括N/(2n
)個元素且i可為小於N/(2n
)的自然數。對於當n=1, 2, …, log2
(N)時的每一種情形,可重複地實行所述劃分。
這樣一來,可以快得多的速度及高得多的效率來完成序列對齊,從而改善計算系統400的功能。應理解,計算系統在本文中可互換地被稱為“電腦”。
另外,由於暫存器是由各槽位共用,因此通過允許不同槽位的功能單元將任務移交到彼此而無需調用記憶體,甚至可完成在各自之間具有資料依賴性的順序性操作。也就是說,任務可被移交到在每一步驟中可實行最優化操作的槽位並由所述槽位來實行。這樣一來,總體排序操作的效率可得到明顯提高。
在下文中將參照圖3A至圖3D、圖7及圖8來闡述根據本公開一些示例性實施例的向量處理器的序列對齊方法的操作方面。
圖7是示出根據本公開一些示例性實施例的向量處理器的序列對齊方法中使用的排列電路的圖式,且圖8是示出根據本公開一些示例性實施例的向量處理器的序列對齊方法中使用的極小/極大電路的圖式。
參照圖7,所述排列電路包括向量暫存器20、多工器選擇信號10、以及第一多工器M1至第八多工器M8。
向量暫存器20可提供被輸入到排列電路的輸入資料(I1至I8),且可儲存從排列電路輸出的輸出資料(O1至O8)。向量暫存器20可對應於圖4及圖5所示向量暫存器214或圖6所示暫存器檔110。
向量暫存器20也可提供多工器選擇信號10。因此,第一多工器M1至第八多工器M8可根據多工器選擇信號10來改變輸入資料(I1至I8)的排列且可接著輸出所述輸入資料(I1至I8)作為輸出資料(O1至O8)。
圖7示出其中輸入資料(I1至I8)以及輸出資料(O1至O8)中的每一者是具有八個元素的向量資料且提供八個多工器(即,第一多工器M1至第八多工器M8)的實例,但本公開並非僅限於此。也就是說,輸入資料(I1至I8)或輸出資料(O1至O8)的元素的數目以及所提供的多工器的數目可根據需要而變化。
輸入資料(I1至I8)及輸出資料(O1至O8)可均為向量資料,且輸入資料(I1至I8)的元素及輸出資料(O1至O8)的元素可由不同的單指令多資料流程線路(SIMD lane)來處理。這樣一來,不同於標量處理器,向量處理器可實現快的運算速度。
第一多工器M1至第八多工器M8可接收輸入資料(I1至I8)的所有元素且可輸出輸入資料(I1至I8)的所接收到的元素作為輸出資料(O1至O8)。
圖8示出根據本公開一些示例性實施例的向量處理器的序列對齊方法中使用的極小/極大電路。
參照圖8,極小/極大電路包括向量暫存器20、向量控制暫存器30、極小/極大運算器40。
向量暫存器20可提供被輸入到極小/極大電路的D1及D2且可儲存從極小/極大電路輸出的D0。向量暫存器20可對應於圖4及圖5所示向量暫存器214或圖6所示暫存器檔110。
向量控制暫存器30在圖8中被示出為單獨的元件,但也可與向量暫存器20合併。向量控制暫存器30可儲存作為極小/極大運算器40的控制信號(例如,“控制信號向量”)的控制向量Vc,且可將控制向量Vc提供到極小/極大運算器40。
可提供多個極小/極大運算器40。根據單指令多資料流程處理方法,如果D1、D2、及D0分別是具有N個元素的向量資料,則可提供N個極小/極大運算器40。圖8示出其中提供總共16個極小/極大運算器40的實例,但本公開並非僅限於此。
極小/極大運算器40可將D1的元素與D2的元素進行比較且可輸出D1及D2中的每一者的元素中的極大值或極小值。極小/極大運算器40可基於控制向量Vc來判斷輸出D1及D2中的每一者的元素中的極大值還是極小值。
極小/極大運算器40中的每一者可包括減法器41及多工器43,且因此極小/極大電路可包括減法器41及多工器43。減法器41接收D1及D2中的每一者的元素並輸出D1的元素與D2的元素之間的差。多工器43可被配置成接收減法器41的輸出、控制信號向量Vc、序列的元素、及複本序列(copy sequence)的元素,並輸出序列及複本序列中的一者的元素。多工器43可基於D1的元素與D2的元素之間的差,具體來說基於具有D1的元素與D2的元素之間的差的符號資訊的最低有效位元(least significant bit,LSB)來識別D1及D2中的每一者的元素中的哪一個元素是極大值或極小值。控制向量Vc可作為控制信號ctrl被輸入到多工器43,且結果,D1的元素及D2的元素中的一者可被輸出為極大值或極小值。
在根據本公開一些示例性實施例的向量處理器的序列對齊方法中,可使用圖7所示排列電路及圖8所示極小/極大電路對元素進行排序。
具體來說,參照圖3A、圖7、及圖8,對於給定的序列[1, 6, 14, 3, 12, 10, 15, 5, 7, 2, 8, 11, 16, 4, 13, 9]而言,排列電路會輸出複本序列[7, 2, 8, 11, 16, 4, 13, 9, 1, 6, 14, 3, 12, 10, 15, 5]。
也就是說,輸入資料(I1至I8)可為給定序列,且輸出資料(O1至O8)可為複本序列。多工器選擇信號10可將序列[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F]表達為[8, 9, A, B, C, D, E, F, 0, 1, 2, 3, 4, 5, 6, 7],此意味著兩個群組(即,“1-1”群組G1-1與“1-2”群組G1-2)交換位置。
向量暫存器20會儲存複本序列並將複本序列提供到極小/極大電路。極小/極大電路接收給定的序列作為D1及接收複本序列作為D2。接著,極小/極大運算器40可分別將“1-1”群組G1-1的第零元素至第七元素與“1-2”群組G1-2的第零元素至第七元素進行比較。
在昇冪的情形中,控制向量Vc可為[0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1],其中“0”表示極小值且“1”表示極大值。在降冪的情形中,控制向量Vc可為[1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0]。
因此,極小值“0”被作為D0的前一半輸出,且極大值“1”被作為D0的後一半輸出。也就是說,可通過排列及“極小極大”運算來以兩個步驟簡單地實行群組排序。重申一下,將序列劃分成兩個群組以及將群組各自的第i個元素對齊以產生經排序元素的新序列可包括:利用排列操作以與所述序列不同的次序產生複本序列,並對序列及複本序列實行“極小極大”運算。可傳送經排序元素的新序列作為輸出資料。通過由本文中提供的操作來產生及輸出經排序元素的新序列,包括用於實行這些操作的向量處理器的計算系統可至少憑藉提高的運算效率、電腦性能等而具有改善的功能。
“極小極大”運算可同時實行(例如,併發地實行)。利用排列操作以與所述序列不同的次序產生複本序列可包括:通過改變序列中每一對相鄰群組的位置來產生複本序列。序列的其中在實行“極小極大”運算時不被實行“極小極大”運算的部分可與複本序列的對應部分具有共同的元素。
序列可包括具有共同大小的前半及後半。對序列及複本序列實行“極小極大”運算可包括利用“極小極大”運算根據控制信號向量來選擇極小值及極大值。控制信號向量對於序列的前半而言具有的值可不同於對於序列的後半而言具有的值。
由於極小/極大電路及排列電路使用例如多工器及減法器等共用算術單元來實行單指令多資料流程運算,因此可使用共用向量處理器來容易地實作極小/極大電路及排列電路而無需使用專用於序列對齊的硬體。另外,由於極小/極大電路及排列電路在複雜度方面是優異的,因此可高效地實行序列對齊。
在下文中將參照圖9來闡述根據本公開一些示例性實施例的向量處理器的序列對齊方法。將省略或至少簡化對與以上說明重複的細節的說明。
圖9是示出根據本公開一些示例性實施例的向量處理器的序列對齊方法的圖式。
具體來說,圖9示出如何對所具有的元素比單指令多資料流程線路多的序列進行對齊,具體而言是當存在16個單指令多資料流程線路時,如何對具有32個元素的序列進行對齊。
參照圖9,可輸入具有32個元素的序列作為兩個向量資料。也就是說,可將具有32個元素的序列(“載入序列”)作為兩個序列進行輸入或載入,即各自具有16個元素(例如,具有共同大小)的第一序列S1與第二序列S2。
可通過以上參照圖3A及圖3D闡述的序列對齊方法對第一序列S1及第二序列S2中的每一者進行對齊。在這種情形中,根據本公開一些示例性實施例的向量處理器可採用超長指令字模式並行地在不同的槽位處對第一序列S1與第二序列S2進行對齊,但本公開並非僅限於此。
之後,第一序列S1可被劃分成各自具有八個元素的第一群組G1及第二群組G2。第二序列S2可被劃分成各自具有八個元素的第三群組G3及第四群組G4。
之後,可分別形成(“定義”)連接第一群組G1與第三群組G3的第三序列S3及連接第二群組G2與第四群組G4的第四序列S4。
之後,可通過(“根據”)根據本公開一些示例性實施例的向量處理器的序列對齊方法來對第三序列S3及第四序列S4進行對齊。在這種情形中,根據本公開一些示例性實施例的向量處理器可採用超長指令字模式並行地在不同的槽位處對第三序列S3及第四序列S4進行對齊,使得向量處理器被配置成執行超長指令字(VLIW)指令,但本公開並非僅限於此。在一些示例性實施例中,將第三序列及第四序列對齊可包括使用不同槽位的不同功能單元將第三序列及第四序列對齊。
超長指令字指令可包括第一指令及第二指令,且向量處理器可被配置成執行第一指令及第二指令以分別執行第三序列及第四序列的對齊。第三序列及第四序列的對齊可包括將第一指令及第二指令傳送到不同槽位的不同功能單元且使不同槽位的不同功能單元將第三序列及第四序列對齊。
經對齊的第三序列S3可包括且可被劃分成各自具有八個元素的第五群組G5及第六群組G6。經對齊的第四序列S4可包括且可被劃分成各自具有八個元素的第七群組G7及第八群組G8。
之後,可形成(“定義”)連接第六群組G6與第七群組G7的第五序列S5。
之後,可通過根據本公開一些示例性實施例的序列對齊方法來對第五序列S5進行對齊,使得載入序列能夠以第五群組、第五序列、及第八群組的次序對齊。
因此,總共具有32個元素的資料可以第五群組G5、第五序列S5、及第八群組G8的次序對齊。
將第四序列對齊及將第五序列對齊中的每一者對於第四序列及第五序列中的給定序列而言可包括:將給定序列劃分成兩半以形成一組群組;將各群組的第k個元素對齊,其中k是自然數;將所述一組群組中的每一群組劃分成兩半,以形成多個子群組,並將所述多個子群組的第l個元素對齊,其中l是自然數;重複地劃分第四序列或第五序列並逐一元素地對第四序列或第五序列實行排序,直到獲得各自僅具有一個元素的子群組;基於判斷出已獲得各自僅具有一個元素的子群組,將每一對相鄰的子群組逐一元素地對齊。
圖10是示出用於實現根據本公開一些示例性實施例的向量處理器的序列對齊方法的一組指令的表。
典型向量處理器支援用於處理極小值及極大值的功能,但對所有的單指令多資料流程線路實行相同的操作。也就是說,對所有的單指令多資料流程線路實行找出極小值或極大值的操作。在這種情形中,只有通過再次實行一次找出極小值或極大值的操作才能夠找出極小值及極大值二者,且因此會造成額外的開銷。
另一方面,在本公開的一些示例性實施例中,可利用為對單指令多資料流程線路進行預測而提供的向量控制暫存器來同時處理極小值與極大值二者(即,僅在向量處理器的單指令多資料流程線路中的特定線路中實行操作)。
圖10示出如何實現以上參照圖7及圖8闡述的排列運算及“極小極大”運算。
在下文中將參照圖11A至圖11D來闡述利用圖10所示指令以及圖7排列電路以及圖8所示極小/極大電路進行序列的對齊。
圖11A至圖11D是示出如何使用指令來實現根據本公開一些示例性實施例的向量處理器的序列對齊方法的圖式。具體來說,圖11A至圖11D與指令一起進一步示出以上參照圖3A至圖3D闡述的序列對齊方法。
參照圖11A,首先,利用“ld”指令載入向量v3。向量v3可為圖7所示多工器選擇信號10。也就是說,向量v3可為選擇信號,所述選擇信號使第一多工器M1至第八多工器M8實行用於改變兩個群組的位置的排列操作。
之後,可使用“vpmt”指令來形成複本序列v1。
之後,可使用“ld”指令來載入向量vc。向量vc可為圖8所示極小/極大運算器40的控制向量Vc。也就是說,向量vc可為指示以下內容的向量:作為“極小極大”運算的結果而輸出的序列的前半由極小值“0”組成且作為“極小極大”運算的結果而輸出的序列的後半由極大值“1”組成。
之後,可使用“vminmax”指令將在第一階段“Stage1”中實行的群組排序的結果儲存在v1中。
之後,對於四個群組而言,再次載入向量v3(使用“ld”指令),且輸出對向量v3實行排列的結果作為v2(使用“vpmt”指令)。之後,可將向量vc載入為“[0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1]”以在兩個群組中顯示向量vc的極小值以及在兩個群組中顯示向量vc的極大值。之後,可利用“vminmax”指令在v1中儲存“極小極大”運算的結果。
可由不同的槽位來執行例如“ld”、“vpmt”、及“vminmax”等指令。由於各槽位一同共用暫存器,因此可實現並行處理而不會造成記憶體開銷。
參照圖11B,可採用與圖11A所示方式相似的方式來執行“ld”指令、“vpmt”指令、及“vminmax”指令。在其中對除第一群組及最末群組外的整個序列進行對齊的情形中,可將用於圖7所示多工器選擇信號10的v3載入為[0, 1, 2, 3, 8, 9, A, B, 4, 5, 6, 7, C, D, E, F]以使得在“極小極大”操作中不改變序列的第一群組及最末群組的元素。
參照圖11C及圖11D,可採用與圖11A所示方式相似的另一種方式來執行“ld”指令、“vpmt”指令、及“vminmax”指令。
儘管已參照本發明概念的示例性實施例特別示出並闡述了本發明概念,然而所屬技術領域的普通技術人員應理解,在不背離由以上權利要求書界定的本發明概念的精神及範圍的條件下,在本文中可作出形式及細節上的各種變化。因此,期望本實施例在所有方面均被視為例示性的而非限制性的,並應參照隨附權利要求書而非上述說明來指示示例性實施例的範圍。
10‧‧‧多工器選擇信號
20‧‧‧向量暫存器
30‧‧‧向量控制暫存器
40‧‧‧極小/極大運算器
41‧‧‧減法器
43‧‧‧多工器
100‧‧‧記憶體匯流排
105‧‧‧記憶體層次結構
110‧‧‧暫存器檔
130‧‧‧資料配置層
160、160a、160b、160c、160d‧‧‧算數邏輯單位
170、300‧‧‧控制器
200‧‧‧處理器
212‧‧‧標量暫存器/暫存器
214‧‧‧向量暫存器/暫存器
220‧‧‧提取單元
230‧‧‧解碼器
240a‧‧‧第一槽位
240b‧‧‧第二槽位
240c‧‧‧第三槽位
242a、242b、242c‧‧‧標量功能單元
244a、244b、244c‧‧‧向量功能單元
246a、246b、246c‧‧‧移動單元
301‧‧‧位置
400‧‧‧計算系統
401‧‧‧向量處理器
410‧‧‧電源
420‧‧‧通信介面
430‧‧‧顯示介面
440‧‧‧匯流排
ctrl‧‧‧控制信號
D0、D1、D2‧‧‧向量數據
G1‧‧‧第一群組
G1-1‧‧‧“1-1”群組/群組
G1-2‧‧‧“1-2”群組/群組
G2‧‧‧第二群組
G2-1‧‧‧“2-1”群組/新群組
G2-2‧‧‧“2-2”群組/新群組
G2-3‧‧‧“2-3”群組/新群組
G2-4‧‧‧“2-4”群組/新群組
G3‧‧‧第三群組;
G3-1‧‧‧“3-1”群組/新群組
G3-2‧‧‧“3-2”群組/新群組
G3-3‧‧‧“3-3”群組/新群組
G3-4‧‧‧“3-4”群組/新群組
G3-5‧‧‧“3-5”群組/新群組
G3-6‧‧‧“3-6”群組/新群組
G3-7‧‧‧“3-7”群組/新群組
G3-8‧‧‧“3-8”群組/新群組
G4‧‧‧第四群組
G5‧‧‧第五群組
G6‧‧‧第六群組
G7‧‧‧第七群組
G8‧‧‧第八群組
I1、I2、I3、I4、I5、I6、I7、I8‧‧‧輸入資料
ld、vpmt、vminmax‧‧‧指令
M1‧‧‧第一多工器
M2‧‧‧第二多工器
M3‧‧‧第三多工器
M4‧‧‧第四多工器
M5‧‧‧第五多工器
M6‧‧‧第六多工器
M7‧‧‧第七多工器
M8‧‧‧第八多工器
O1、O2、O3、O4、O5、O6、O7、O8‧‧‧輸出資料
S1‧‧‧第一序列
S2‧‧‧第二序列
S3‧‧‧第三序列
S4‧‧‧第四序列
S5‧‧‧第五序列
S100、S200、S300、S400、S500、S600、S700、S800、S900、S950‧‧‧操作
S450‧‧‧對齊操作
Stage1‧‧‧第一階段
Stage2‧‧‧第二階段
Stage3‧‧‧第三階段
Stage4‧‧‧第四階段
S-0‧‧‧輸入序列/序列
S-1‧‧‧經排序元素的序列/輸入序列/序列
S-2、S-4、S-5、S-6、S-7、S-8、S-9、S-10‧‧‧經排序元素的新序列/輸入序列
S-3‧‧‧經排序元素的新序列/輸入序列/新序列
S-11‧‧‧經排序元素的新序列
v1‧‧‧複本序列
v3、v2、vc‧‧‧向量
v0、V0、V1‧‧‧向量暫存器
Vc‧‧‧控制向量/控制信號向量
通過參照附圖詳細闡述本公開的示例性實施例,本公開的以上及其他示例性實施例及特徵將變得更顯而易見,在附圖中:
圖1是示出典型歸併排序方法的圖式。 圖2是示出根據本公開一些示例性實施例的向量處理器的序列對齊方法的流程圖。 圖3A、圖3B、圖3C及圖3D是示出根據圖2所示示例性實施例的序列對齊方法的圖式。 圖4是包括向量處理器的計算系統的方塊圖,所述向量處理器被配置成執行根據本公開一些示例性實施例的向量處理器的序列對齊方法。 圖5是圖4所示處理器的方塊圖。 圖6是示出根據圖4所示示例性實施例的向量處理器的資料移動架構的圖式。 圖7是示出根據本公開一些示例性實施例的向量處理器的序列對齊方法中使用的排列電路的圖式。 圖8是示出根據本公開一些示例性實施例的向量處理器的序列對齊方法中使用的極小/極大電路的圖式。 圖9是示出根據本公開一些示例性實施例的向量處理器的序列對齊方法的圖式。 圖10是示出用於實現根據本公開一些示例性實施例的向量處理器的序列對齊方法的一組指令的表。 圖11A、圖11B、圖11C、及圖11D是示出如何使用指令來實現根據本公開一些示例性實施例的向量處理器的序列對齊方法的圖式。
Claims (20)
- 一種向量處理器的序列對齊方法,所述序列對齊方法包括: 載入序列,所述序列是向量資料的實例,所述向量資料的實例包括多個元素; 將所述序列劃分成兩個群組,使得所述兩個群組中的每一群組包括所述多個元素中的單獨一組i個元素,i是自然數; 根據單指令多資料流程模式將所述序列中的所述群組各自的第i個元素逐一元素地對齊,以產生經排序元素的序列; 基於判斷出所述經排序元素的序列中的每一群組包括所述多個元素中的多於一個元素來反覆運算地實行對齊操作,所述對齊操作中的每一次反覆運算包括: 將所述兩個群組中的每一群組劃分成兩半以形成兩個新群組,所述兩個新群組中的每一新群組包括經劃分的所述群組的所述i個元素中的單獨一組j個元素,j是自然數; 將所述經排序元素的序列中的所述新群組中的每一對相鄰的新群組各自的第j個元素逐一元素地對齊,以產生經排序元素的新序列,以及 基於判斷出j>1,使用所述新群組及所述經排序元素的新序列來起始所述對齊操作的新反覆運算;以及 基於在所述對齊操作的當前反覆運算中判斷出j=1,傳送所述當前反覆運算的所述新序列作為資料輸出。
- 如申請專利範圍第1項所述的序列對齊方法,其中, 所述多個元素包括N個元素,且 N=2n 。
- 如申請專利範圍第2項所述的序列對齊方法,其中所述對齊操作中的每一次反覆運算包括: 基於判斷出所述經排序元素的序列中的所述新群組中的每一對相鄰的新群組各自的所述第j個元素的逐一元素進行的排序的數量等於為至少2m的值,使用所述新群組及所述經排序元素的新序列來起始所述對齊操作的所述新反覆運算,其中所述新群組的數量等於22m 。
- 如申請專利範圍第3項所述的序列對齊方法,其中所述對齊操作的每一次反覆運算中的所述對齊包括: 實行對所有所述新群組中每一對相鄰的新群組逐一元素地進行對齊的第一對齊操作; 實行對所有所述新群組中除所述新群組中的第一新群組及最末新群組外的每一對相鄰的新群組逐一元素地進行對齊的第二對齊操作;以及 將所述第一對齊操作及所述第二對齊操作重複m次。
- 如申請專利範圍第1項所述的序列對齊方法,其中, 所述載入所述序列包括 載入具有共同大小的第一序列及第二序列, 將所述第一序列劃分成第一群組及第二群組, 將所述第二序列劃分成第三群組及第四群組, 定義第三序列,所述第三序列連接所述第一群組與所述第三群組, 定義第四序列,所述第四序列連接所述第二群組與所述第四群組, 將所述第三序列及所述第四序列對齊, 將所述第三序列劃分成第五群組及第六群組, 將所述第四序列劃分成第七群組及第八群組, 定義第五序列,所述第五序列連接所述第六群組與所述第七群組,以及 將所述第五序列對齊,以使所述序列能夠以所述第五群組、所述第五序列及所述第八群組的次序對齊,且 所述將所述第三序列對齊包括重複地劃分所述第三序列並逐一元素地實行對經劃分的所述第三序列的元素的排序。
- 如申請專利範圍第5項所述的序列對齊方法,其中, 所述向量處理器被配置成構建多個槽位,所述多個槽位各自包括單獨的一組功能單元,且 所述將所述第三序列及所述第四序列對齊包括使用不同槽位的不同功能單元將所述第三序列及所述第四序列對齊。
- 如申請專利範圍第6項所述的序列對齊方法,其中, 所述向量處理器被配置成執行超長指令字指令, 所述超長指令字指令包括第一指令及第二指令,所述向量處理器被配置成執行所述第一指令及所述第二指令以分別執行所述將所述第三序列及所述第四序列對齊,且 所述將所述第三序列及所述第四序列對齊包括: 將所述第一指令及所述第二指令傳送到不同槽位的不同功能單元,以及 使所述不同槽位的所述不同功能單元將所述第三序列及所述第四序列對齊。
- 如申請專利範圍第5項所述的序列對齊方法,其中所述將所述第四序列對齊及所述將所述第五序列對齊中的每一者對於所述第四序列及所述第五序列中的給定序列而言包括: 將所述給定序列劃分成兩半以形成一組群組; 將所述群組的第k個元素對齊,其中k是自然數; 將所述一組群組中的每一群組劃分成兩半,以形成多個子群組,並將所述多個子群組的第l個元素對齊,其中l是自然數; 重複地劃分所述第四序列或所述第五序列並逐一元素地對所述第四序列或所述第五序列實行排序,直到獲得各自僅具有一個元素的子群組;以及 基於判斷出所述子群組各自僅包括一個元素,將所述子群組中的每一對相鄰的子群組逐一元素地對齊。
- 如申請專利範圍第1項所述的序列對齊方法,其中所述將所述序列劃分成兩個群組以及將所述群組各自的所述第i個元素對齊包括:利用排列運算以與所述序列不同的次序產生複本序列,並對所述序列及所述複本序列實行“極小極大”運算。
- 如申請專利範圍第9項所述的序列對齊方法,其中所述“極小極大”運算是併發地實行。
- 一種向量處理器的序列對齊方法,所述序列對齊方法包括: 載入序列,所述序列是向量資料的實例,所述向量資料的實例包括N個元素,其中N=2n ,n是自然數; 將所述序列劃分成一組群組,所述一組群組中的每一群組包括N/(2n )個元素,且根據單指令多資料流程模式將所述一組群組中的每一對相鄰的群組各自的第i個元素對齊以產生經排序元素的新序列,其中i是小於N/(2n )的自然數, 其中所述劃分及所述對齊包括: 利用排列運算以與所述序列不同的次序產生複本序列,以及 對所述序列及所述複本序列實行“極小極大”運算;以及 傳送所述經排序元素的新序列作為輸出資料。
- 如申請專利範圍第11項所述的序列對齊方法,其中所述產生包括通過改變所述序列中所述一組群組中的每一對相鄰的群組的位置來產生所述複本序列。
- 如申請專利範圍第12項所述的序列對齊方法,其中所述序列的其中在所述實行“極小極大”運算時不被實行所述“極小極大”運算的部分與所述複本序列的對應部分具有共同的元素。
- 如申請專利範圍第11項所述的序列對齊方法,更包括: 對於當n=1, 2, …, log2 (N)時的每一種情形,重複地實行所述劃分及所述對齊。
- 如申請專利範圍第14項所述的向量處理器的序列對齊方法,其中所述重複地實行所述劃分及所述對齊包括: 對於當n=1時的情形,將所述劃分及所述對齊僅實行一次,且 對於當n=2, …, log2 (N)時的情形,實行所述劃分及所述對齊2(n-1)次。
- 如申請專利範圍第15項所述的序列對齊方法,其中所述實行所述劃分及所述對齊2(n-1)次包括: 實行對所有所述群組中的每一對相鄰的群組逐一元素地進行對齊的第一對齊操作; 實行對所述群組中除所述群組中的第一群組及最末群組外的每一對相鄰的群組逐一元素地進行對齊的第二對齊操作;以及 重複所述第一對齊操作及所述第二對齊操作最多(n-1)次。
- 如申請專利範圍第11項所述的序列對齊方法,其中, 所述序列包括具有共同大小的前半及後半, 所述對所述序列及所述複本序列實行“極小極大”運算包括利用“極小極大”運算根據控制信號向量來選擇極小值及極大值,且 所述控制信號向量對於所述序列的所述前半而言具有的值不同於對於所述序列的所述後半而言具有的值。
- 如申請專利範圍第17項所述的序列對齊方法,其中, 所述“極小極大”運算是由極小/極大電路實行,且 所述極小/極大電路包括減法器及多工器,所述多工器被配置成接收所述減法器的輸出、所述控制信號向量、所述序列的所述元素及所述複本序列的所述元素,並輸出所述序列及所述複本序列中的一者的所述元素。
- 一種向量處理器的序列對齊方法,所述向量處理器被配置成構建多個槽位,所述多個槽位中的每一槽位包括單獨的一組功能單元,所述向量處理器還被配置成執行由所述多個槽位共用的暫存器,所述序列對齊方法包括: 載入序列,所述序列是向量資料的實例,所述向量資料的實例具有N個元素,其中N=2n ,n是自然數; 使所述多個槽位並行地實行以下操作: 將所述序列劃分成一組群組,所述一組群組中的每一群組包括N/(2n )個元素,以及 根據單指令多資料流程模式將所述一組群組中的每一對相鄰的群組各自的第i個元素對齊以產生經排序元素的新序列,其中i是小於N/(2n )的自然數,以及 傳送所述經排序元素的新序列作為輸出資料。
- 如申請專利範圍第19項所述的序列對齊方法,更包括: 對於當n=1, 2, …, log2 (N)時的每一種情形,重複地實行所述劃分。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
??10-2017-0064502 | 2017-05-25 | ||
KR10-2017-0064502 | 2017-05-25 | ||
KR1020170064502A KR102343652B1 (ko) | 2017-05-25 | 2017-05-25 | 벡터 프로세서의 서열 정렬 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201901412A true TW201901412A (zh) | 2019-01-01 |
TWI771373B TWI771373B (zh) | 2022-07-21 |
Family
ID=64401213
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107105795A TWI771373B (zh) | 2017-05-25 | 2018-02-21 | 向量處理器的序列對齊方法 |
Country Status (5)
Country | Link |
---|---|
US (3) | US10372451B2 (zh) |
JP (1) | JP7241470B2 (zh) |
KR (1) | KR102343652B1 (zh) |
CN (1) | CN108959179B (zh) |
TW (1) | TWI771373B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9606803B2 (en) | 2013-07-15 | 2017-03-28 | Texas Instruments Incorporated | Highly integrated scalable, flexible DSP megamodule architecture |
US11106462B2 (en) * | 2019-05-24 | 2021-08-31 | Texas Instruments Incorporated | Method and apparatus for vector sorting |
CN111949241B (zh) * | 2019-05-15 | 2024-04-12 | 瑞昱半导体股份有限公司 | 排序装置 |
JP7263994B2 (ja) * | 2019-09-17 | 2023-04-25 | 富士通株式会社 | 情報処理方法及び最適化プログラム |
US11036506B1 (en) * | 2019-12-11 | 2021-06-15 | Motorola Solutions, Inc. | Memory systems and methods for handling vector data |
CN112861145B (zh) * | 2021-01-06 | 2023-12-12 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法、装置和用于数据处理的装置 |
US11204889B1 (en) | 2021-03-29 | 2021-12-21 | SambaNova Systems, Inc. | Tensor partitioning and partition access order |
US11366783B1 (en) | 2021-03-29 | 2022-06-21 | SambaNova Systems, Inc. | Multi-headed multi-buffer for buffering data for processing |
US11709611B2 (en) | 2021-10-26 | 2023-07-25 | SambaNova Systems, Inc. | Determining and using memory unit partitioning solutions for reconfigurable dataflow computing systems |
Family Cites Families (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05189202A (ja) * | 1992-01-10 | 1993-07-30 | Fujitsu Ltd | 並列ソート方式 |
US6324638B1 (en) * | 1999-03-31 | 2001-11-27 | International Business Machines Corporation | Processor having vector processing capability and method for executing a vector instruction in a processor |
JP2001014139A (ja) | 1999-06-28 | 2001-01-19 | Nec Corp | ワークファイルを使用するマルチスレッドソート処理方式及び処理方法 |
US6557096B1 (en) * | 1999-10-25 | 2003-04-29 | Intel Corporation | Processors with data typer and aligner selectively coupling data bits of data buses to adder and multiplier functional blocks to execute instructions with flexible data types |
US20050188182A1 (en) * | 1999-12-30 | 2005-08-25 | Texas Instruments Incorporated | Microprocessor having a set of byte intermingling instructions |
US6745319B1 (en) * | 2000-02-18 | 2004-06-01 | Texas Instruments Incorporated | Microprocessor with instructions for shuffling and dealing data |
US8510534B2 (en) | 2002-05-24 | 2013-08-13 | St-Ericsson Sa | Scalar/vector processor that includes a functional unit with a vector section and a scalar section |
US7386842B2 (en) | 2004-06-07 | 2008-06-10 | International Business Machines Corporation | Efficient data reorganization to satisfy data alignment constraints |
US20070011441A1 (en) * | 2005-07-08 | 2007-01-11 | International Business Machines Corporation | Method and system for data-driven runtime alignment operation |
JP2009199439A (ja) * | 2008-02-22 | 2009-09-03 | Nec Corp | マージソート処理方法、マージソート処理装置、及びマージソート処理プログラム |
US20110026510A1 (en) | 2008-04-21 | 2011-02-03 | Telefonaktiebolaget Lm Ericsson (Publ) | Method for Enabling Communication between a User Equipment and an IMS Gateway |
US8417921B2 (en) * | 2008-08-15 | 2013-04-09 | Apple Inc. | Running-min and running-max instructions for processing vectors using a base value from a key element of an input vector |
GB2464292A (en) * | 2008-10-08 | 2010-04-14 | Advanced Risc Mach Ltd | SIMD processor circuit for performing iterative SIMD multiply-accumulate operations |
US9652231B2 (en) * | 2008-10-14 | 2017-05-16 | International Business Machines Corporation | All-to-all permutation of vector elements based on a permutation pattern encoded in mantissa and exponent bits in a floating-point SIMD architecture |
WO2010082529A1 (ja) | 2009-01-13 | 2010-07-22 | 日本電気株式会社 | Simd型並列データ処理装置及びデータソート方法並びにプロセッシングエレメント |
US20130212354A1 (en) * | 2009-09-20 | 2013-08-15 | Tibet MIMAR | Method for efficient data array sorting in a programmable processor |
KR101662769B1 (ko) | 2010-03-09 | 2016-10-05 | 삼성전자주식회사 | 고속 정렬 장치 및 방법 |
CN103946795B (zh) * | 2011-12-14 | 2018-05-15 | 英特尔公司 | 用于生成循环对齐计数或循环对齐掩码的系统、装置和方法 |
JP5834997B2 (ja) * | 2012-02-23 | 2015-12-24 | 株式会社ソシオネクスト | ベクトルプロセッサ、ベクトルプロセッサの処理方法 |
US9575753B2 (en) | 2012-03-15 | 2017-02-21 | International Business Machines Corporation | SIMD compare instruction using permute logic for distributed register files |
EP2831691A4 (en) * | 2012-03-30 | 2015-11-25 | Intel Corp | METHOD AND APPARATUS FOR FUSIONING AND SORTING SMALLER SORTED VECTORS IN LARGER SORTING VECTORS |
US9098265B2 (en) * | 2012-07-11 | 2015-08-04 | Arm Limited | Controlling an order for processing data elements during vector processing |
US9342479B2 (en) * | 2012-08-23 | 2016-05-17 | Qualcomm Incorporated | Systems and methods of data extraction in a vector processor |
US9606961B2 (en) * | 2012-10-30 | 2017-03-28 | Intel Corporation | Instruction and logic to provide vector compress and rotate functionality |
US10133577B2 (en) * | 2012-12-19 | 2018-11-20 | Intel Corporation | Vector mask driven clock gating for power efficiency of a processor |
US9405538B2 (en) | 2012-12-28 | 2016-08-02 | Intel Corporation | Functional unit having tree structure to support vector sorting algorithm and other algorithms |
KR20140092135A (ko) | 2013-01-15 | 2014-07-23 | 한국전자통신연구원 | 빅 데이터를 위한 병렬 정렬 방법 및 장치 |
US9632781B2 (en) * | 2013-02-26 | 2017-04-25 | Qualcomm Incorporated | Vector register addressing and functions based on a scalar register data value |
US9477999B2 (en) | 2013-09-20 | 2016-10-25 | The Board Of Trustees Of The Leland Stanford Junior University | Low power programmable image processor |
KR102122406B1 (ko) | 2013-11-06 | 2020-06-12 | 삼성전자주식회사 | 셔플 명령어 처리 장치 및 방법 |
US9977676B2 (en) * | 2013-11-15 | 2018-05-22 | Qualcomm Incorporated | Vector processing engines (VPEs) employing reordering circuitry in data flow paths between execution units and vector data memory to provide in-flight reordering of output vector data stored to vector data memory, and related vector processor systems and methods |
US9740659B2 (en) * | 2014-03-19 | 2017-08-22 | International Business Machines Corporation | Merging and sorting arrays on an SIMD processor |
KR102310246B1 (ko) | 2014-04-23 | 2021-10-08 | 삼성전자주식회사 | 세컨더리 인덱스 생성 방법 및 세컨더리 인덱스 저장 장치 |
JP6318303B2 (ja) * | 2014-05-30 | 2018-04-25 | 華為技術有限公司Huawei Technologies Co.,Ltd. | 並列マージソート |
KR101573618B1 (ko) | 2014-07-04 | 2015-12-01 | 한양대학교 산학협력단 | 메모리 구조에 기반한 외부 퀵 정렬의 방법 및 장치 |
US9910670B2 (en) * | 2014-07-09 | 2018-03-06 | Intel Corporation | Instruction set for eliminating misaligned memory accesses during processing of an array having misaligned data rows |
EP3001306A1 (en) * | 2014-09-25 | 2016-03-30 | Intel Corporation | Bit group interleave processors, methods, systems, and instructions |
JP2016091488A (ja) | 2014-11-11 | 2016-05-23 | アズビル株式会社 | データソート方法およびプログラム |
CN105518623B (zh) * | 2014-11-21 | 2019-11-05 | 英特尔公司 | 用于在虚拟执行环境中进行高效的图形处理的装置和方法 |
US9870339B2 (en) * | 2015-06-26 | 2018-01-16 | Intel Corporation | Hardware processors and methods for tightly-coupled heterogeneous computing |
-
2017
- 2017-05-25 KR KR1020170064502A patent/KR102343652B1/ko active IP Right Grant
- 2017-11-03 US US15/802,844 patent/US10372451B2/en active Active
-
2018
- 2018-02-21 TW TW107105795A patent/TWI771373B/zh active
- 2018-05-16 CN CN201810468470.9A patent/CN108959179B/zh active Active
- 2018-05-24 JP JP2018099367A patent/JP7241470B2/ja active Active
-
2019
- 2019-06-20 US US16/447,041 patent/US11068265B2/en active Active
- 2019-06-20 US US16/447,035 patent/US11442728B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20180341487A1 (en) | 2018-11-29 |
CN108959179A (zh) | 2018-12-07 |
US11068265B2 (en) | 2021-07-20 |
JP7241470B2 (ja) | 2023-03-17 |
US10372451B2 (en) | 2019-08-06 |
KR102343652B1 (ko) | 2021-12-24 |
US20190303149A1 (en) | 2019-10-03 |
JP2018200692A (ja) | 2018-12-20 |
TWI771373B (zh) | 2022-07-21 |
US20190303148A1 (en) | 2019-10-03 |
KR20180129058A (ko) | 2018-12-05 |
US11442728B2 (en) | 2022-09-13 |
CN108959179B (zh) | 2023-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201901412A (zh) | 向量處理器的序列對齊方法 | |
JP7439109B2 (ja) | 量子回路の最適化 | |
CN110659728B (zh) | 神经网络优化方法、装置、计算机设备及存储介质 | |
CN107341541B (zh) | 一种用于执行全连接层神经网络训练的装置和方法 | |
KR101766183B1 (ko) | 벡터 소팅 알고리즘 및 다른 알고리즘들을 지원하기 위한 트리 구조를 갖춘 기능 유닛 | |
CN111353588A (zh) | 用于执行人工神经网络反向训练的装置和方法 | |
CN111353589A (zh) | 用于执行人工神经网络正向运算的装置和方法 | |
WO2019019719A1 (zh) | 分支预测方法及装置 | |
JP4310500B2 (ja) | 重要成分優先計算方式ならびに装置 | |
US20190130274A1 (en) | Apparatus and methods for backward propagation in neural networks supporting discrete data | |
CN110008436B (zh) | 基于数据流架构的快速傅里叶变换方法、系统和存储介质 | |
US20210049496A1 (en) | Device and methods for a quantum circuit simulator | |
JP7044118B2 (ja) | 並列ユニオン制御装置、並列ユニオン制御方法、および並列ユニオン制御用プログラム | |
JPS61210478A (ja) | ベクトル処理装置 | |
US20210312325A1 (en) | Mixed-precision neural processing unit (npu) using spatial fusion with load balancing | |
CN109993276B (zh) | 用于执行人工神经网络反向训练的装置和方法 | |
CN111915014B (zh) | 人工智能指令的处理方法及装置、板卡、主板和电子设备 | |
US11907725B2 (en) | Communication in a computer having multiple processors | |
US11995554B2 (en) | Apparatus and methods for backward propagation in neural networks supporting discrete data | |
US20230129750A1 (en) | Performing a floating-point multiply-add operation in a computer implemented environment | |
Matyushkin | Algorithms of Parallel Computations Using Cellular Automata Formalization: Sorting of Strings and Multiplication of Numbers by Atrubin’s Method | |
JP2010218178A (ja) | ソート処理装置およびソート処理方法 |