CN108959179A - 向量处理器的序列对齐方法 - Google Patents

向量处理器的序列对齐方法 Download PDF

Info

Publication number
CN108959179A
CN108959179A CN201810468470.9A CN201810468470A CN108959179A CN 108959179 A CN108959179 A CN 108959179A CN 201810468470 A CN201810468470 A CN 201810468470A CN 108959179 A CN108959179 A CN 108959179A
Authority
CN
China
Prior art keywords
sequence
group
alignment
new
vector
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810468470.9A
Other languages
English (en)
Other versions
CN108959179B (zh
Inventor
金贤弼
沈炫宇
安成祐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN108959179A publication Critical patent/CN108959179A/zh
Application granted granted Critical
Publication of CN108959179B publication Critical patent/CN108959179B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8092Array of vector units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Abstract

一种可由向量处理器实行的序列对齐方法可包括:加载序列,所述序列是向量数据的实例,所述向量数据的实例包括多个元素;将所述序列划分成两个群组;根据单指令多数据流模式将所述群组各自的元素对齐,以产生经排序元素的序列;以及基于判断出所述经排序元素的序列中的每一群组包括所述多个元素中的多于一个元素来迭代地实行对齐操作。每一次迭代可包括:对每一群组进行划分以形成新群组;以及将每一对相邻的新群组各自的元素对齐,以产生经排序元素的新序列。基于判断出每一新群组不包括多于一个元素,可传送所述对齐操作的当前迭代的新序列作为数据输出。

Description

向量处理器的序列对齐方法
[相关申请的交叉参考]
本申请主张2017年5月25日提出申请的韩国专利申请第10-2017-0064502号的优先权、以及从所述韩国专利申请衍生出的所有权利,所述韩国专利申请的公开内容全文并入本申请供参考。
技术领域
本公开大体来说涉及改善计算机处理器性能,且更具体来说涉及向量处理器的序列对齐方法。
背景技术
以降序或升序进行的序列对齐(例如,对序列中的元素进行的排序)是许多系统中使用的基本功能。通过复杂度为O(nlog(n))的“快速排序(fast sort)”排序算法(例如,迅速排序(quick sort))实行对齐包括对各别的元素进行操纵且因而难以应用于利用单指令多数据流(single instruction multiple data,SIMD)或单指令多线程(singleinstruction multiple thread,SIMT)架构的向量处理器(例如,由所述向量处理器实现)。
因此,大部分包括一个或多个向量处理器及/或一个或多个多核心的计算系统可利用“归并排序(merge sort)”排序算法来实现序列的对齐(“序列对齐”)。由于归并排序对于已经过排序的数据而言相对快速及高效,因此使用归并排序的计算系统可能需要在对已分组的元素进行归并之前对所述已分组的元素进行迅速排序。大体来说,利用二叉树结构(binary tree structure)的归并排序的复杂度(即,O(Nlog2N))与数据组的大小(即,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)的自然数。所述方法还可包括传送所述经排序元素的新序列作为输出数据。
通过阅读以下详细说明、附图及权利要求书,其他特征及示例性实施例可显而易见。
附图说明
通过参照附图详细阐述本公开的示例性实施例,本公开的以上及其他示例性实施例及特征将变得更显而易见,在附图中:
图1是示出典型归并排序方法的图。
图2是示出根据本公开一些示例性实施例的向量处理器的序列对齐方法的流程图。
图3A、图3B、图3C及图3D是示出根据图2所示示例性实施例的序列对齐方法的图式。
图4是包括向量处理器的计算系统的方块图,所述向量处理器被配置成执行根据本公开一些示例性实施例的向量处理器的序列对齐方法。
图5是图4所示处理器的方块图。
图6是示出根据图4所示示例性实施例的向量处理器的数据移动架构的图式。
图7是示出根据本公开一些示例性实施例的向量处理器的序列对齐方法中使用的排列电路的图式。
图8是示出根据本公开一些示例性实施例的向量处理器的序列对齐方法中使用的极小/极大电路的图式。
图9是示出根据本公开一些示例性实施例的向量处理器的序列对齐方法的图式。
图10是示出用于实现根据本公开一些示例性实施例的向量处理器的序列对齐方法的一组指令的表。
图11A、图11B、图11C、及图11D是示出如何使用指令来实现根据本公开一些示例性实施例的向量处理器的序列对齐方法的图式。
[符号的说明]
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:控制向量/控制信号向量。
具体实施方式
在一些示例性实施例中,计算系统包括被配置成以比典型归并排序方法低的复杂度实现序列对齐方法的向量处理器,所述计算系统可被配置成以提高的运算速度及降低的计算资源(例如,存储器)使用量来实行至少序列对齐,从而使所述计算系统相对于包括被配置成利用归并排序方法的向量处理器的计算系统而言实现提高的运算效率(例如,提高的计算机性能)。所述计算系统可被配置成实现的上述序列对齐方法在本文中可被称为“向量处理器的序列对齐方法”。
在下文中将参照图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”群组G1-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-specificinstruction)的向量运算的向量处理器,所述向量运算例如为预测运算(predictionoperation)、向量排列运算(vector permute operation)、向量位操纵运算(vector bitmanipulation operation)、蝶形运算(butterfly operation)或排序运算(sortingoperation)。在一些示例性实施例中,处理器200可被配置成采用单指令多数据流及超长指令字(Very-Long Instruction Word,VLIW)架构。在一些示例性实施例中,处理器200被配置成基于执行由存储在存储器中的指令形成的一个或多个程序来实现运算、方法、功能性、元件、向量处理器或上述一些组合等,其中存储器总线100可包括存储器。存储器总线100可包括用于存储由指令形成的一个或多个计算机可执行程序的非暂时性计算机可读存储介质,其中这一个或多个程序可由处理器200执行来使向量处理器401实行一种或多种方法的一个或多个操作。
处理器200可被配置成实现寄存器(212及214)且可利用寄存器(212及214)来实行算术运算。在一些示例性实施例中,寄存器(212及214)可包括标量寄存器(scalarregister,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中实现(“包括”)标量功能单元(scalarfunctional 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进行对齐,使得加载序列能够以第五群组G5、第五序列S5、及第八群组G8的次序对齐。
因此,总共具有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”指令。图11A至图11D的V0、V1和v0表示用于实现或示出本发明的操作的任意向量寄存器。
尽管已参照本发明概念的示例性实施例特别示出并阐述了本发明概念,然而所属技术领域的普通技术人员应理解,在不背离由以上权利要求书界定的本发明概念的精神及范围的条件下,在本文中可作出形式及细节上的各种变化。因此,期望本实施例在所有方面均被视为例示性的而非限制性的,并应参照随附权利要求书而非上述说明来指示示例性实施例的范围。

Claims (20)

1.一种向量处理器的序列对齐方法,其特征在于,所述序列对齐方法包括:
加载序列,所述序列是向量数据的实例,所述向量数据的实例包括多个元素;
将所述序列划分成两个群组,使得所述两个群组中的每一群组包括所述多个元素中的单独一组i个元素,i是自然数;
根据单指令多数据流模式将所述序列中的所述群组各自的第i个元素逐一元素地对齐,以产生经排序元素的序列;
基于判断出所述经排序元素的序列中的每一群组包括所述多个元素中的多于一个元素来迭代地实行对齐操作,所述对齐操作中的每一次迭代包括:
将所述两个群组中的每一群组划分成两半以形成两个新群组,所述两个新群组中的每一新群组包括经划分的所述群组的所述i个元素中的单独一组j个元素,j是自然数;
将所述经排序元素的序列中的所述新群组中的每一对相邻的新群组各自的第j个元素逐一元素地对齐,以产生经排序元素的新序列,以及
基于判断出j>1,使用所述新群组及所述经排序元素的新序列来起始所述对齐操作的新迭代;以及
基于在所述对齐操作的当前迭代中判断出j=1,传送所述当前迭代的所述新序列作为数据输出。
2.根据权利要求1所述的序列对齐方法,其特征在于,
所述多个元素包括N个元素,且
N=2n
3.根据权利要求2所述的序列对齐方法,其特征在于,所述对齐操作中的每一次迭代包括:
基于判断出所述经排序元素的序列中的所述新群组中的每一对相邻的新群组各自的所述第j个元素的逐一元素进行的排序的数量等于为至少2m的值,使用所述新群组及所述经排序元素的新序列来起始所述对齐操作的所述新迭代,其中所述新群组的数量等于22m
4.根据权利要求3所述的序列对齐方法,其特征在于,所述对齐操作的每一次迭代中的所述对齐包括:
实行对所有所述新群组中每一对相邻的新群组逐一元素地进行对齐的第一对齐操作;
实行对所有所述新群组中除所述新群组中的第一新群组及最末新群组外的每一对相邻的新群组逐一元素地进行对齐的第二对齐操作;以及
将所述第一对齐操作及所述第二对齐操作重复m次。
5.根据权利要求1所述的序列对齐方法,其特征在于,
所述加载所述序列包括
加载具有共同大小的第一序列及第二序列,
将所述第一序列划分成第一群组及第二群组,
将所述第二序列划分成第三群组及第四群组,
定义第三序列,所述第三序列连接所述第一群组与所述第三群组,
定义第四序列,所述第四序列连接所述第二群组与所述第四群组,
将所述第三序列及所述第四序列对齐,
将所述第三序列划分成第五群组及第六群组,
将所述第四序列划分成第七群组及第八群组,
定义第五序列,所述第五序列连接所述第六群组与所述第七群组,以及
将所述第五序列对齐,以使所述序列能够以所述第五群组、所述第五序列及所述第八群组的次序对齐,且
所述将所述第三序列对齐包括重复地划分所述第三序列并逐一元素地实行对经划分的所述第三序列的元素的排序。
6.根据权利要求5所述的序列对齐方法,其特征在于,
所述向量处理器被配置成构建多个槽位,所述多个槽位各自包括单独的一组功能单元,且
所述将所述第三序列及所述第四序列对齐包括使用不同槽位的不同功能单元将所述第三序列及所述第四序列对齐。
7.根据权利要求6所述的序列对齐方法,其特征在于,
所述向量处理器被配置成执行超长指令字指令,
所述超长指令字指令包括第一指令及第二指令,所述向量处理器被配置成执行所述第一指令及所述第二指令以分别执行所述将所述第三序列及所述第四序列对齐,且
所述将所述第三序列及所述第四序列对齐包括:
将所述第一指令及所述第二指令传送到不同槽位的不同功能单元,以及
使所述不同槽位的所述不同功能单元将所述第三序列及所述第四序列对齐。
8.根据权利要求5所述的序列对齐方法,其特征在于,所述将所述第四序列对齐及所述将所述第五序列对齐中的每一者对于所述第四序列及所述第五序列中的给定序列而言包括:
将所述给定序列划分成两半以形成一组群组;
将所述群组的第k个元素对齐,其中k是自然数;
将所述一组群组中的每一群组划分成两半,以形成多个子群组,并将所述多个子群组的第l个元素对齐,其中l是自然数;
重复地划分所述第四序列或所述第五序列并逐一元素地对所述第四序列或所述第五序列实行排序,直到获得各自仅具有一个元素的子群组;以及
基于判断出所述子群组各自仅包括一个元素,将所述子群组中的每一对相邻的子群组逐一元素地对齐。
9.根据权利要求1所述的序列对齐方法,其特征在于,所述将所述序列划分成两个群组以及将所述群组各自的所述第i个元素对齐包括:利用排列运算以与所述序列不同的次序产生副本序列,并对所述序列及所述副本序列实行“极小极大”运算。
10.根据权利要求9所述的序列对齐方法,其特征在于,所述“极小极大”运算是并发地实行。
11.一种向量处理器的序列对齐方法,其特征在于,所述序列对齐方法包括:
加载序列,所述序列是向量数据的实例,所述向量数据的实例包括N个元素,其中N=2n,n是自然数;
将所述序列划分成一组群组,所述一组群组中的每一群组包括N/(2n)个元素,且根据单指令多数据流模式将所述一组群组中的每一对相邻的群组各自的第i个元素对齐以产生经排序元素的新序列,其中i是小于N/(2n)的自然数,
其中所述划分及所述对齐包括:
利用排列运算以与所述序列不同的次序产生副本序列,以及
对所述序列及所述副本序列实行“极小极大”运算;以及
传送所述经排序元素的新序列作为输出数据。
12.根据权利要求11所述的序列对齐方法,其特征在于,所述产生包括通过改变所述序列中所述一组群组中的每一对相邻的群组的位置来产生所述副本序列。
13.根据权利要求12所述的序列对齐方法,其特征在于,所述序列的其中在所述实行“极小极大”运算时不被实行所述“极小极大”运算的部分与所述副本序列的对应部分具有共同的元素。
14.根据权利要求11所述的序列对齐方法,其特征在于,还包括:
对于当n=1,2,…,log2(N)时的每一种情形,重复地实行所述划分及所述对齐。
15.根据权利要求14所述的序列对齐方法,其特征在于,所述重复地实行所述划分及所述对齐包括:
对于当n=1时的情形,将所述划分及所述对齐仅实行一次,且
对于当n=2,…,log2(N)时的情形,实行所述划分及所述对齐2(n-1)次。
16.根据权利要求15所述的序列对齐方法,其特征在于,所述实行所述划分及所述对齐2(n-1)次包括:
实行对所有所述群组中的每一对相邻的群组逐一元素地进行对齐的第一对齐操作;
实行对所述群组中除所述群组中的第一群组及最末群组外的每一对相邻的群组逐一元素地进行对齐的第二对齐操作;以及
重复所述第一对齐操作及所述第二对齐操作最多(n-1)次。
17.根据权利要求11所述的序列对齐方法,其特征在于,
所述序列包括具有共同大小的前半及后半,
所述对所述序列及所述副本序列实行“极小极大”运算包括利用“极小极大”运算根据控制信号向量来选择极小值及极大值,且
所述控制信号向量对于所述序列的所述前半而言具有的值不同于对于所述序列的所述后半而言具有的值。
18.根据权利要求17所述的序列对齐方法,其特征在于,
所述“极小极大”运算是由极小/极大电路实行,且
所述极小/极大电路包括减法器及多路复用器,所述多路复用器被配置成接收所述减法器的输出、所述控制信号向量、所述序列的所述元素及所述副本序列的所述元素,并输出所述序列及所述副本序列中的一者的所述元素。
19.一种向量处理器的序列对齐方法,所述向量处理器被配置成构建多个槽位,所述多个槽位中的每一槽位包括单独的一组功能单元,所述向量处理器还被配置成执行由所述多个槽位共享的寄存器,其特征在于,所述序列对齐方法包括:
加载序列,所述序列是向量数据的实例,所述向量数据的实例具有N个元素,其中N=2n,n是自然数;
使所述多个槽位并行地实行以下操作:
将所述序列划分成一组群组,所述一组群组中的每一群组包括N/(2n)个元素,以及
根据单指令多数据流模式将所述一组群组中的每一对相邻的群组各自的第i个元素对齐以产生经排序元素的新序列,其中i是小于N/(2n)的自然数,以及
传送所述经排序元素的新序列作为输出数据。
20.根据权利要求19所述的序列对齐方法,其特征在于,还包括:对于当n=1,2,…,log2(N)时的每一种情形,重复地实行所述划分。
CN201810468470.9A 2017-05-25 2018-05-16 向量处理器的序列对齐方法 Active CN108959179B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2017-0064502 2017-05-25
KR1020170064502A KR102343652B1 (ko) 2017-05-25 2017-05-25 벡터 프로세서의 서열 정렬 방법

Publications (2)

Publication Number Publication Date
CN108959179A true CN108959179A (zh) 2018-12-07
CN108959179B CN108959179B (zh) 2023-12-01

Family

ID=64401213

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810468470.9A Active CN108959179B (zh) 2017-05-25 2018-05-16 向量处理器的序列对齐方法

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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112596789A (zh) * 2019-09-17 2021-04-02 富士通株式会社 信息处理方法和非暂态计算机可读存储介质
CN112861145A (zh) * 2021-01-06 2021-05-28 华控清交信息科技(北京)有限公司 一种数据处理方法、装置和用于数据处理的装置

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11461096B2 (en) * 2019-05-24 2022-10-04 Texas Instruments Incorporated Method and apparatus for vector sorting using vector permutation logic
US9606803B2 (en) 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture
CN111949241B (zh) * 2019-05-15 2024-04-12 瑞昱半导体股份有限公司 排序装置
US11036506B1 (en) * 2019-12-11 2021-06-15 Motorola Solutions, Inc. Memory systems and methods for handling vector data
US11366783B1 (en) 2021-03-29 2022-06-21 SambaNova Systems, Inc. Multi-headed multi-buffer for buffering data for processing
US11204889B1 (en) * 2021-03-29 2021-12-21 SambaNova Systems, Inc. Tensor partitioning and partition access order
US11709611B2 (en) 2021-10-26 2023-07-25 SambaNova Systems, Inc. Determining and using memory unit partitioning solutions for reconfigurable dataflow computing systems

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
JP2009199439A (ja) * 2008-02-22 2009-09-03 Nec Corp マージソート処理方法、マージソート処理装置、及びマージソート処理プログラム
US20100325398A1 (en) * 2008-08-15 2010-12-23 Apple Inc. Running-min and running-max instructions for processing vectors
CN102197369A (zh) * 2008-10-08 2011-09-21 Arm有限公司 用于执行simd乘法-累积运算的装置及方法
US20130212354A1 (en) * 2009-09-20 2013-08-15 Tibet MIMAR Method for efficient data array sorting in a programmable processor
US20130246745A1 (en) * 2012-02-23 2013-09-19 Fujitsu Semiconductor Limited Vector processor and vector processor processing method
CN103793201A (zh) * 2012-10-30 2014-05-14 英特尔公司 提供向量压缩和旋转功能的指令和逻辑
CN103946795A (zh) * 2011-12-14 2014-07-23 英特尔公司 用于生成循环对齐计数或循环对齐掩码的系统、装置和方法
CN104204991A (zh) * 2012-03-30 2014-12-10 英特尔公司 将较小的已排序向量合并和排序为较大的已排序向量的指令的方法和装置
CN104487941A (zh) * 2012-07-11 2015-04-01 Arm有限公司 在向量处理过程中控制处理数据元素的顺序
CN104583938A (zh) * 2012-08-23 2015-04-29 高通股份有限公司 向量处理器中的数据提取系统和方法
US20150269119A1 (en) * 2014-03-19 2015-09-24 International Business Machines Corporation Merging and Sorting Arrays on an SIMD Processor
CN105278921A (zh) * 2014-07-09 2016-01-27 英特尔公司 用于在处理具有未对齐数据行的数组期间消除未对齐的存储器访问的指令集
CN106462386A (zh) * 2014-05-30 2017-02-22 华为技术有限公司 并行归并排序

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05189202A (ja) * 1992-01-10 1993-07-30 Fujitsu Ltd 並列ソート方式
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
AU2003228069A1 (en) * 2002-05-24 2003-12-12 Koninklijke Philips Electronics N.V. A scalar/vector processor
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
US20110026510A1 (en) 2008-04-21 2011-02-03 Telefonaktiebolaget Lm Ericsson (Publ) Method for Enabling Communication between a User Equipment and an IMS Gateway
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
JP5445469B2 (ja) 2009-01-13 2014-03-19 日本電気株式会社 Simd型並列データ処理装置及びデータソート方法並びにプロセッシングエレメント
KR101662769B1 (ko) 2010-03-09 2016-10-05 삼성전자주식회사 고속 정렬 장치 및 방법
US9575753B2 (en) * 2012-03-15 2017-02-21 International Business Machines Corporation SIMD compare instruction using permute logic for distributed register files
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
KR102310246B1 (ko) 2014-04-23 2021-10-08 삼성전자주식회사 세컨더리 인덱스 생성 방법 및 세컨더리 인덱스 저장 장치
KR101573618B1 (ko) 2014-07-04 2015-12-01 한양대학교 산학협력단 메모리 구조에 기반한 외부 퀵 정렬의 방법 및 장치
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 アズビル株式会社 データソート方法およびプログラム
GB2538119B8 (en) * 2014-11-21 2020-10-14 Intel Corp Apparatus and method for efficient graphics processing in virtual execution environment
US9870339B2 (en) * 2015-06-26 2018-01-16 Intel Corporation Hardware processors and methods for tightly-coupled heterogeneous computing

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
JP2009199439A (ja) * 2008-02-22 2009-09-03 Nec Corp マージソート処理方法、マージソート処理装置、及びマージソート処理プログラム
US20100325398A1 (en) * 2008-08-15 2010-12-23 Apple Inc. Running-min and running-max instructions for processing vectors
CN102197369A (zh) * 2008-10-08 2011-09-21 Arm有限公司 用于执行simd乘法-累积运算的装置及方法
US20130212354A1 (en) * 2009-09-20 2013-08-15 Tibet MIMAR Method for efficient data array sorting in a programmable processor
CN103946795A (zh) * 2011-12-14 2014-07-23 英特尔公司 用于生成循环对齐计数或循环对齐掩码的系统、装置和方法
US20130246745A1 (en) * 2012-02-23 2013-09-19 Fujitsu Semiconductor Limited Vector processor and vector processor processing method
CN104204991A (zh) * 2012-03-30 2014-12-10 英特尔公司 将较小的已排序向量合并和排序为较大的已排序向量的指令的方法和装置
CN104487941A (zh) * 2012-07-11 2015-04-01 Arm有限公司 在向量处理过程中控制处理数据元素的顺序
CN104583938A (zh) * 2012-08-23 2015-04-29 高通股份有限公司 向量处理器中的数据提取系统和方法
CN103793201A (zh) * 2012-10-30 2014-05-14 英特尔公司 提供向量压缩和旋转功能的指令和逻辑
US20150269119A1 (en) * 2014-03-19 2015-09-24 International Business Machines Corporation Merging and Sorting Arrays on an SIMD Processor
CN106462386A (zh) * 2014-05-30 2017-02-22 华为技术有限公司 并行归并排序
CN105278921A (zh) * 2014-07-09 2016-01-27 英特尔公司 用于在处理具有未对齐数据行的数组期间消除未对齐的存储器访问的指令集

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112596789A (zh) * 2019-09-17 2021-04-02 富士通株式会社 信息处理方法和非暂态计算机可读存储介质
CN112861145A (zh) * 2021-01-06 2021-05-28 华控清交信息科技(北京)有限公司 一种数据处理方法、装置和用于数据处理的装置
CN112861145B (zh) * 2021-01-06 2023-12-12 华控清交信息科技(北京)有限公司 一种数据处理方法、装置和用于数据处理的装置

Also Published As

Publication number Publication date
US20190303149A1 (en) 2019-10-03
CN108959179B (zh) 2023-12-01
US10372451B2 (en) 2019-08-06
TWI771373B (zh) 2022-07-21
JP2018200692A (ja) 2018-12-20
KR102343652B1 (ko) 2021-12-24
KR20180129058A (ko) 2018-12-05
US11442728B2 (en) 2022-09-13
US20190303148A1 (en) 2019-10-03
US11068265B2 (en) 2021-07-20
US20180341487A1 (en) 2018-11-29
TW201901412A (zh) 2019-01-01
JP7241470B2 (ja) 2023-03-17

Similar Documents

Publication Publication Date Title
CN108959179A (zh) 向量处理器的序列对齐方法
Raudenský et al. Genetic algorithm in solution of inverse heat conduction problems
Bhatt et al. Efficient embeddings of trees in hypercubes
Hoel Some variations of Lee's algorithm
CN107077323A (zh) 使用可编程有效性数据的数据处理的装置和方法
CN101162471A (zh) 一种插入排序的方法和装置
CN111639780A (zh) 优化装置和优化装置的控制方法
Stidsen et al. A hybrid approach for biobjective optimization
Bacher et al. Mergeshuffle: a very fast, parallel random permutation algorithm
US20210049496A1 (en) Device and methods for a quantum circuit simulator
CN113496762B (zh) 一种生物基因序列的概要数据生成方法及系统
CN113158599B (zh) 基于量子信息学的芯片和芯片化eda装置
CN114077805A (zh) 信息处理系统
JPS61210478A (ja) ベクトル処理装置
US5192882A (en) Synchronization circuit for parallel processing
JP3577134B2 (ja) データ処理装置
Al-Haj Baddar Finding better sorting networks
CN109993276A (zh) 用于执行人工神经网络反向训练的装置和方法
Medina et al. Data Structures and Graph Algorithms
Prasanna Kumar et al. Mapping dynamic programming onto a linear systolic array
Rosenberg et al. Mobility in Computing: An FA Navigates a Mesh
Soukaina et al. New Reconfigurable Algorithm for Sorting Binary Numbers
McCloskey Multiprocessor algorithms for some combinatorial problems.
JPWO2020071368A1 (ja) データ処理システム、データ処理装置、データ処理方法及びプログラム
EP3973465A1 (en) Communication in a computer having multiple processors

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant