CN105051679B - 用于支持矢量排序算法和其他算法的具有树状结构的功能单元 - Google Patents

用于支持矢量排序算法和其他算法的具有树状结构的功能单元 Download PDF

Info

Publication number
CN105051679B
CN105051679B CN201380062359.5A CN201380062359A CN105051679B CN 105051679 B CN105051679 B CN 105051679B CN 201380062359 A CN201380062359 A CN 201380062359A CN 105051679 B CN105051679 B CN 105051679B
Authority
CN
China
Prior art keywords
instruction
vector
circuit
functional unit
comparison
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.)
Expired - Fee Related
Application number
CN201380062359.5A
Other languages
English (en)
Other versions
CN105051679A (zh
Inventor
R·M·约费
N·C·加洛坡冯伯里斯
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN105051679A publication Critical patent/CN105051679A/zh
Application granted granted Critical
Publication of CN105051679B publication Critical patent/CN105051679B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
    • 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/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • 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/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator

Abstract

描述了一种具有指令执行管线的功能单元的装置。所述功能单元具有耦合到网络电路的多个比较和交换电路,以实现矢量排序树以用于矢量排序指令。所述比较和交换电路中的每一个具有用于比较一对输入的相应比较电路。所述比较和交换电路中的每一个具有相同侧的第一输出以用于呈现两个输入中的较高者,并且具有相同侧的第二输出以用于呈现两个输入中的较低者,所述比较电路还支持所述功能单元执行前缀最小和/或前缀相加指令。

Description

用于支持矢量排序算法和其他算法的具有树状结构的功能 单元
技术领域
本发明的领域总体上涉及计算科学,并更具体地涉及能够利用排序网络执行多个不同指令的功能单元。
背景技术
矢量指令执行管线
图1示出在半导体芯片上用逻辑电路实现的处理核心100的高级图。处理核心包括管线101。管线由多阶段组成,每个阶段被设计成在完全执行程序代码指令所需要的多步骤过程中执行特定步骤。这些通常至少包括:1)指令提取和解码;2)数据提取;3)执行;4)写回。执行阶段对通过指令所标识并在先前的阶段(例如,上文的步骤2))中所提取的数据来执行由在另一先前阶段所提取并解码的指令(例如,在上文的步骤1)中)所标识的特定操作。对其进行操作的数据通常是从(通用)寄存器存储空间102提取的。在完成操作时所创建的新数据通常也被“写回”到寄存器存储空间(例如,在上文的阶段4))。
与执行阶段相关联的逻辑电路通常由多个“执行单元”或“功能单元”103_1至103_N组成,“执行单元”或“功能单元”103_1至103_N各自被设计成执行其自身的独特的操作子集(例如,第一功能单元执行整型数学操作,第二功能单元执行浮点指令,第三功能单元执行从/到高速缓存/存储器的加载/存储操作等)。由所有的功能单元执行的所有操作的集合对应于由处理核心100所支持的“指令集”。
两种类型的处理器架构在计算机科学领域被广泛认可:“标量”和“矢量”。标量处理器被设计成执行对单个集合的数据执行操作的指令,而矢量处理器被设计成执行对多个集合的数据执行操作的指令。图2A和图2B呈现了展示出标量处理器与矢量处理器之间的基本差别的比较性示例。
图2A示出标量AND指令的示例,其中单个操作数集A和B被AND在一起,以产生单一(或“标量”)结果C(即,A.AND.B=C)。与此相比,图2B示出矢量AND指令的示例,其中两个操作数集A/B和D/E被分别AND在一起,以产生矢量结果C、F(即,A.AND.B=C和D.AND.E=F)。作为术语,“矢量”是具有多个“元素”的数据元素。例如,矢量V=Q,R,S,T,U具有五个不同的元素:Q,R,S,T及U。示例性矢量V的“尺寸”是5(因为它具有五个元素)。
图1还示出了不同于通用寄存器空间102的矢量寄存器空间107的存在。具体而言,通用寄存器空间102名义上用于存储标量值。由此,当执行单元中的任何一个执行标量运算时,它们名义上使用调用自(并将结果写回到)通用寄存器存储空间102的操作数。与此相比,当执行单元中的任何一个执行矢量运算时,它们名义上使用调用自(并将结果写回到)矢量寄存器空间107的操作数。存储器的不同区域可以被类似地分配以用于标量值和矢量值的存储。
也要注意的是掩码逻辑104_1至104_N和105_1至105_N存在于到功能单元103_1至103_N的相应的输入端以及从功能单元103_1至103_N的输出端。在各种实施方式中,对于矢量运算,实际上仅实现这些层中的一个——尽管这不是一个严格的要求(尽管在图1未示出,但是可以想象,仅执行标量而不执行矢量运算的执行单元无需具有任何掩码层)。对于采用掩码的任何矢量指令,输入掩码逻辑104_1至104_N和/或输出掩码逻辑105_1至105_N可以用于控制对哪些元素有效地进行了操作以用于矢量指令。这里,掩码矢量从掩码寄存器空间106读取(例如,连同从矢量寄存器存储空间107读取的输入操作数矢量一起)并被呈现给掩码逻辑104、105层中的至少一个。
在执行矢量程序代码的过程中,每个矢量指令不需要要求完整的数据字。例如,用于一些指令的输入矢量可能仅是8个元素,用于其它指令的输入矢量可以是16个元素,用于其它指令的输入矢量可以是32个元素等。因此,掩码层104/105用于识别应用于特定指令的完整的矢量数据字的元素集,以使不同的矢量尺寸跨指令有效。典型地,对于每个矢量指令,保存在掩码寄存器空间106中的特定掩码模式由指令调出,从掩码寄存器空间提取并提供到掩码层104/105中的一个或两个,以针对特定的矢量运算“启用”正确的元素集。
附图说明
在附图的图中通过示例的而非限制的方式示出了本发明,在附图中,类似的附图标记指示类似的元素,其中:
图1(现有技术)示出指令执行管线的实施例;
图2A-B(现有技术)示出矢量处理的示例;
图3(现有技术)涉及现有技术排序算法;
图4示出用于在单个指令中实现图3的排序算法的指令执行逻辑电路的实施例;
图5示出比较和交换电路;
图6示出如由图4的电路实现的图3的排序树;
图7示出用于利用图4的电路来实现前缀相加/或前缀相乘指令的另一树;
图8示出图5的比较和交换电路,其经增强以包括实现加法功能以及相加和交换功能的功能;
图9示出图8的比较和交换电路,其经增强以包括实现乘法功能以及乘法和交换功能的功能;
图10示出处理器的实施例。
具体实施方式
现有技术排序算法
图3示出将无序数据的集合排序成有序集合的现有技术软件进程。参照图3,通过图3中所描绘的排序过程的方式将无序输入集和301进行排序,以形成输出排序集合302。有序集合是已根据一些标准而排列的值的集合。最基本的标准(其在图3的过程中描绘)是数值排列。即,集合中的元素是基于它们相对于彼此的数值而进行排序的。如在图3中观察到的,输出排序集合302的元素是以数字顺序排列的,其中较小的值对准到左边,并且较高的值对准到右边。
根据图3中列出的过程的序列,从输入未排序集合301中产生输出排序集合302。此处,每个水平条代表“比较和交换”操作,其中将两个相连的值进行比较,并且将这两个所比较的元素中的较小者路由到源自水平连接的最左边的下游路径,而将这两个所比较的元素中的较高者路由到来自水平连接的最右边的下游路径。
到目前为止,上述排序算法已在软件中实现,使得在任何中间集合或结果集合中的每个新计算的元素消耗多个CPU指令。由此,计算整个算法可以消耗数百甚至数以千计的CPU指令。
能够执行排序算法和其他算法的功能单元
为了大大加快从无序集合建立排序集合,图4示出针对在指令执行管线内的功能单元400的逻辑电路设计的实施例,该功能单元400利用单个指令实现排序算法。该功能单元还能够执行如将在下面更详细描述的另外的指令。
如在图4中观察到的,该功能单元包括在本文中被称为第一(在前)交换网络402和第二(随后)交换网络403的一对交换网络之间的一组比较和交换电路401。起始输入矢量被呈现在功能单元的a0至a15输入407处。本领域普通技术人员将认识到,本文所述的功能单元的功能可以利用在比较和交换电路池401之前或之后的单个交换网络成功实现。然而,为了便于可视化功能单元400的相当复杂的交换任务,下文将参照具有两个交换网络的实施例。
寄存器组404耦合到第二交换网络403的下游。只读存储器(ROM)电路405包含向第一和第二交换网络402、403生成控制信号的微代码,使得通道线路a0至a15上的值被路由到比较和交换电路组401内的适当的比较和交换电路。寄存器组404以回送的方式馈送第一交换网络402。
在图4的特定实施例中,在比较和交换电路组401内有八个交换和比较电路406_1至406_8。图5示出每个比较和交换电路的设计506的实施例。如在图5中观察到的,单个比较和交换电路506具有两个输入和两个输出。比较电路507比较两个输入并确定哪个输入更大。然后,基于哪个输入更大为两个输入选择输出路线。在图5的特定实施例中,更大的输入值呈现在最右边的输出508处,而较小的输入值呈现在最左边的输出509处。
接着,功能单元根据图6的时序图实现图3的排序树。图6基本上示出图3的排序树,其中排序树的阶段分散在功能单元的多个时钟周期之间。此外,图6描述在每个时钟周期第一和第二交换网络402、403的状态。例如,在第二时钟周期中,第一比较和交换电路从(第一网络)接收输入,并对(第二网络)a0和a2通道生成输出,第二比较和交换电路从a1和a3通道接收输入并对a1和a3通道生成输出等。需要注意,任何阶段所利用的比较和交换电路的最大数目是八(时钟周期1、4、7、9和10)。因此,在比较和交换组401内有八个比较和交换电路406_1至406_8。
利用每个新的时钟周期,寄存器组404内的值被引导到第一交换网络402,第一交换网络402将要被比较和交换的值的集合路由到比较和交换组401内的比较和交换电路中的特定一个。每个比较和交换电路对其相应的一对值执行其相对应的比较和交换功能。接着,该对数值被第二交换网络403路由到寄存器组404的适当通道。
在合适的传播延迟已通过第一交换网络402、比较和交换组401和第二交换网络403结束之后,新生成的值被锁存到寄存器组404。接着,该过程针对下一时钟周期进行重复,其中第一和第二网络的状态(即,网络内所建立路线的模式)通常从旧时钟周期改为新时钟周期。这里,来自ROM电路405的微代码控制整个流程,包括在每个新的时钟周期向第一和第二交换网络402、403呈现新的控制信号。
如在图3中观察到的,在10个时钟周期中可完全对16个元素矢量进行处理。此外,图3的特定排序模式也适合于2、4、6和8的矢量尺寸。因此,图6的特定指令能够处理尺寸为2、4、6、8或16的矢量(本领域普通技术人员将认识到,甚至是更大的矢量尺寸也是可能的,例如,32、64,等等)。这里,例如,尺寸为16的矢量将为通道a0至a15中的每一个呈现一个值,尺寸为8的矢量将为通道a0至a7中的每一个呈现一个值等。值得注意的是,所需要的时钟周期的数量随着输入矢量的尺寸而增加。如上所述,排序具有16个元素的矢量消耗10个时钟周期。与此相比,仅需要前六个时钟周期以排序具有八个元素的矢量,仅需要前三个时钟周期以排序具有四个元素的矢量,并且仅需要第一个时钟周期以排序具有两个元素的矢量。
考虑到小于16的矢量尺寸的程度,由于树的对称性,功能单元可以并行处理多个矢量。也就是说,功能单元可以在前六个时钟周期并行地排序一对8个元素的矢量(第一输入矢量消耗通道a0至a7,并且第二输入矢量消耗通道a8至a15)。类似地,功能单元可以在前三个时钟周期同时排序尺寸为4的四个输入矢量(其中输入矢量被分配以占据通道a0-a3;a4-7;a8-a11;a12-a15),或者在第一个时钟周期排序尺寸为2的八个输入矢量(输入矢量被配置以占据通道a0-a1;a2-a3;a4-a5;a6-a7;a8-a9;a10-a11;a12-a13;a14-a15)。
因此,在ROM 405内存在在由功能单元所支持的多个排序指令之间的对网络控制信号的巨大的“重新使用”。换句话说,该功能单元可以仅使用在ROM 405中存储的单组交换网络控制信号以及指令所需的指示需要多少时钟周期的信息(例如,根据输入矢量的尺寸)而执行上述的排序功能(每个时钟周期一个)。在一个实施例中,指令格式包括指定输入矢量的尺寸的操作码或立即操作数。基于输入矢量的尺寸,ROM 405中的微代码能够确定需要多少个时钟周期以执行指令。
除了排序功能,另外的树设置可以存储在ROM 405中,以实现与添加到图5的比较和交换电路的一些另外的功能相耦合的其他功能(除了排序功能之外的)。
图7示出用于实现前缀相加或前缀相乘操作中的一个或两个的树设置。前缀相加和前缀相乘运算是在本领域中公知的。前缀相加操作跨输入矢量水平地将值进行相加,并在每个元素位置处呈现中间值作为结果,其中每个元素位置与导致该元素位置的加法相对应。例如,对于输入矢量1 2 3 4,前缀相加功能将是0 1 3 6 10。图7中所观察的特定排序树模式是本领域已知的。然而,它的实施方式以及也可用于实现排序功能的微代码树设置被认为是新颖的。
在图7的前四个时钟周期中的每条水平线对应于向右相加功能,该向右相加功能接收两个输入值,并在最右边的输入呈现两个输入值的求和。在第五个时钟周期期间,最右通道a15被清为0值。在时钟周期6、7、8和9中的每个水平行对应于相加和交换功能,该相加和交换功能接收两个输入值,并在最右边的输出处提供两个输入值的求和,并且在最左边的输出从提供最右边的输入。
图8示出图5的比较和交换电路,其经增强以包括向右相加功能以及求和和交换功能。这里,电路806的选择输入810确定要实现哪个功能(比较和交换;向右相加;求和和交换)。如在图8中观察到的,增强的电路806包括加法器811,以实现向右相加以及求和和交换功能。选择输入810由微代码提供,并为图7的第一至第四时钟周期选择向右相加功能,并且为第六至第八时钟周期选择求和和交换功能。
图9示出图8的电路,其经增强以便支持前缀相乘功能。这里,与图7中相同的树被实现,但在每个阶段执行的功能对应于相乘而不是相加。因此,图9的电路支持两个额外的功能:向右相乘(其中两个输入值的乘积被放置在最右边的输出)以及相乘和交换(其中两个输入的乘积被提供在最右边的输出处,并且最右边的输入被提供在最左边的输出处)。由此,对于这些功能,使用乘法器912而不是加法器911。电路支持在选择输入910处的两个或更多输入值以选择这些功能。
在更进一步的实施方式中,图6的排序树也可用于实现前缀最小和前缀最大操作。对于每个输入矢量,当从特定方向扫描输入矢量时,前缀最小操作呈现观察到针对每个元素的最小值。例如,对于输入矢量5 4 7 9 8 27,当从左向右扫描时,输出矢量将是5 4 4 44 2 2。前缀最大功能提供了最大观察值而不是最小观察值。例如,对于相同的输入矢量,从左到右进行扫描,前缀最大功能将提供下列结果5 5 7 9 9 9 9。
为了实施这些功能,可以使用与图7中呈现的相同的树,其中(再一次)修改执行逻辑分析的电路。这里,图9的电路可增强以包括另外的比较功能,该比较功能比较两个输入并在最右边的输出(前缀最小)上呈现最小值,或在最右边的输出(前缀最大)上呈现最大值。针对时钟周期一至四选择这些比较功能。前述的比较和交换功能可用于时钟周期六至八。
在另外的实施例中,针对功能单元的指令格式指定操作码或立即操作数,该操作码或立即操作数表明上文描述的任何/所有不同操作(排序、前缀相加、前缀相乘、前缀最小、前缀最大)中的哪一个将要被执行。作为响应,ROM中的微代码提供交换网络设置和电路选择的正确序列,以实现所指示的操作。
值得注意的是,上述功能单元设计设想了单个组的比较和交换电路(潜在地被增强以支持其他的功能,例如上述前缀功能中的任何/所有),该单个组的比较和交换电路是经过具有适当的交换网络设置的一系列时钟设置而“循环通过”的。这种特定的设计方法也许节省了半导体的表面积,这是因为在图6的树的情况下,即使执行63个比较和交换功能(即,在图6中有63个水平线),仍然只需要八个比较和交换电路。
尽管节省半导体表面面积,但是该同样的方法可比相反的另一端的做法消耗更多时钟周期。即,替代实施例可以在硬件中建立图6的整个树。在这种情况下,根据图6中观察到的连接,将有63个不同的比较和交换电路连接到树中的a0-a15通道。这些各种交换连接也可以被看作是网络(尽管硬接线,而不是配置/可配置的)。该方法可设想地消耗更少的时钟周期,这是因为用于排序功能的整个功能单元的传播延迟变得与通过十个比较和交换电路的传播延迟(通过树的每个阶段一个传播延迟)相差无几。在这种情况下,ROM不需要包含网络交换设置。如果功能单元被增强以包括前缀操作,则可用于支持图7的前缀树的在图6中所观察到的这些连接将被“使能”为不能简单地从图6的树重新使用的特殊额外连接。
其他设计方法可着眼于这两个极端(完全可配置的网络电路与完全硬接线的网络电路)之间的某处,以在硅表面面积消耗与速度之间取得平衡。
本领域普通技术人员将能够将上述提供的树模式延伸以建立接受大于或小于16的矢量尺寸的替代实施例。换句话说,本领域普通技术人员将能够利用上述教导来构建具有多于或少于16个通道的其他树实施例。
图10示出示例性多核处理器1000的架构。如在图10中观察到的,该处理器包括:1)多个处理核心1001_1至1001_N;2)互连网络1002;3)最后一级高速缓存系统1003;4)存储器控制器1004和I/O集线器1005。每个处理核心包含一个或多个指令执行管线,以用于执行程序代码指令。这样的指令执行管线中的任意或全部可以支持与图1的描述一致的矢量指令的执行,并包括可执行上文关于图4至9讨论的操作的功能单元。互连网络1002用于将每个核心1001_1至1001_N彼此互连以及与其他组件1003、1004、1005互连。在指令和/或数据被驱逐到系统存储器1008之前,最后一级高速缓存系统1003作为处理器中的高速缓存的最后一层。
存储器控制器1004从/向系统存储器1008读取/写入数据和指令。I/O集线器1005管理处理器与“I/O”设备(例如,非易失性存储设备和/或网络接口)之间的通信。端口1006源自互联网络1002以链接多个处理器,使得可以实现具有N个核心以上的系统。图形处理器1007执行图形计算。功率管理电路(未示出)整体地管理处理器的性能和功率状态(“封装级别”)以及处理器内个体单元的性能和功率状态的方面,例如个体核心1001_1至1001_N,图形处理器1007等。为了方便,重要的其它功能块(例如,锁相环(PLL)的电路)未在图10中描绘。
在前述的说明书中,本发明已经参照其特定示例性实施例进行描述。然而,将显而易见的是可以对其做出各种修改和变化,而不背离如在所附权利要求中阐述的本发明的更广泛的精神和范围。由此,说明书和附图被认为是示例性的而不是限制性的意义。

Claims (19)

1.一种用于指令执行的装置,包括:
解码器,用于将指令解码为已解码的指令;以及
执行电路,用于使用耦合到网络电路以实现矢量排序树的多个比较和交换电路来执行所述已解码的指令,所述比较和交换电路中的每一个具有比较一对输入的相应比较电路,所述比较和交换电路中的每一个具有第一输出以用于呈现两个输入中的较高者,并且具有第二输出以用于呈现两个输入中的较低者,所述比较电路还支持所述执行电路执行前缀最小和/或前缀相加指令,其中,所述执行电路包括含有微代码的存储器电路,所述微代码将控制信号呈现给所述网络电路以用于所述指令。
2.根据权利要求1所述的装置,其中,所述执行电路支持不同尺寸的矢量的排序。
3.根据权利要求2所述的装置,其中,所述尺寸中的特定一个是利用所述指令的立即操作数指定的。
4.根据权利要求2所述的装置,其中,所述不同尺寸的矢量包括2个元素、4个元素、8个元素和16个元素。
5.根据权利要求2所述的装置,其中,所述执行电路能够同时排序两个矢量,所述两个矢量的尺寸小于能够通过所述矢量排序树进行排序的最大矢量尺寸。
6.根据权利要求1所述的装置,其中,所述网络电路包括可配置的交换网络。
7.一种用于指令执行的装置,包括:
解码器,用于将指令解码为已解码的指令;以及
执行电路的功能单元,所述功能单元具有耦合到网络电路的多个比较和交换电路,以执行所述已解码的指令,所述比较和交换电路中的每一个具有比较一对输入的相应比较电路,所述比较和交换电路中的每一个具有第一输出以用于呈现两个输入中的较高者,并且具有第二输出以用于呈现两个输入中的较低者,所述比较和交换电路中的每一个还具有以下中的任意一个:
加法器,其利用所述功能单元而实现前缀相加指令;以及
乘法器,其利用所述功能单元而实现前缀相乘指令,
其中,所述功能单元包括含有微代码的存储器电路,所述微代码将控制信号呈现给所述网络电路以用于所述指令。
8.根据权利要求7所述的装置,其中,所述功能单元支持不同尺寸的矢量的排序。
9.根据权利要求8所述的装置,其中,所述尺寸中的特定一个是利用所述指令的立即操作数指定的。
10.根据权利要求8所述的装置,其中,所述不同尺寸的矢量包括2个元素、4个元素、8个元素和16个元素。
11.根据权利要求8所述的装置,其中,所述功能单元能够同时排序两个矢量。
12.根据权利要求7所述的装置,其中,所述网络电路包括可配置的交换网络。
13.根据权利要求7所述的装置,其中,所述比较和交换电路中的每一个的比较器还用于利用所述功能单元而实现以下中的任何一个:
前缀最小指令;以及
前缀最大指令。
14.一种用于指令执行的方法,包括:
响应于已解码的指令,利用指令执行管线的功能单元电路来执行以下步骤:
接收第一矢量和第二矢量;
基于由包括在所述功能单元电路中的存储器电路中包含的微代码呈现的、用于所述已解码的指令的控制信号,将所述第一矢量和所述第二矢量的元素传递通过多个比较和交换电路,所述比较和交换电路实现排序树以排序所述第一矢量和所述第二矢量,其中,所述比较和交换电路中的每一个执行以下步骤:
比较所述元素中的一对;
在第一输出上呈现所述元素中的所述一对中的较高者;以及
在第二输出上呈现所述元素中的所述一对中的较低者。
15.根据权利要求14所述的方法,其中,所述指令指定所述第一矢量和所述第二矢量的尺寸。
16.根据权利要求15所述的方法,其中,所述功能单元使用所述尺寸以确定所述元素要通过所述排序树的多少阶段。
17.根据权利要求14所述的方法,进一步包括利用所述功能单元而执行前缀求和指令或前缀相加指令中的任意一个。
18.根据权利要求14所述的方法,进一步包括利用所述功能单元而执行前缀最小指令或前缀最大指令中的任意一个。
19.一种用于指令执行的装置,包括:
指令执行管线的功能单元,所述功能单元具有耦合到网络电路的多个比较和交换电路,以实现矢量排序树以用于同时排序多于一个输入矢量,所述比较和交换电路中的每一个具有比较一对输入的相应比较电路,所述比较和交换电路中的每一个具有相同侧的第一输出以用于呈现两个输入中的较高者,并且具有相同侧的第二输出以用于呈现两个输入中的较低者,其中,所述功能单元包括含有微代码的存储器电路,所述微代码将控制信号呈现给所述网络电路以用于由所述功能单元执行的指令。
CN201380062359.5A 2012-12-28 2013-06-20 用于支持矢量排序算法和其他算法的具有树状结构的功能单元 Expired - Fee Related CN105051679B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/730,685 2012-12-28
US13/730,685 US9405538B2 (en) 2012-12-28 2012-12-28 Functional unit having tree structure to support vector sorting algorithm and other algorithms
PCT/US2013/046801 WO2015094145A2 (en) 2012-12-28 2013-06-20 Functional unit having tree structure to support vector sorting algorithm and other algorithms

Publications (2)

Publication Number Publication Date
CN105051679A CN105051679A (zh) 2015-11-11
CN105051679B true CN105051679B (zh) 2018-06-29

Family

ID=51018675

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380062359.5A Expired - Fee Related CN105051679B (zh) 2012-12-28 2013-06-20 用于支持矢量排序算法和其他算法的具有树状结构的功能单元

Country Status (5)

Country Link
US (2) US9405538B2 (zh)
KR (2) KR101766183B1 (zh)
CN (1) CN105051679B (zh)
DE (1) DE112013006309T5 (zh)
WO (1) WO2015094145A2 (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10303735B2 (en) 2015-11-18 2019-05-28 Intel Corporation Systems, apparatuses, and methods for K nearest neighbor search
TWI604379B (zh) * 2014-12-24 2017-11-01 英特爾公司 用於k最近相鄰者搜尋之系統、設備及方法
US20160283549A1 (en) * 2015-03-27 2016-09-29 Intel Corporation Value sorter
CN107948102A (zh) * 2016-10-12 2018-04-20 深圳市中兴微电子技术有限公司 一种矢量数据的并行排序网络及方法
KR102235803B1 (ko) 2017-03-31 2021-04-06 삼성전자주식회사 반도체 장치
US10649771B2 (en) 2017-03-31 2020-05-12 Samsung Electronics Co., Ltd. Semiconductor device
US10574593B2 (en) * 2017-04-19 2020-02-25 Infineon Technologies Ag Median filter that re-uses comparators when sorting data
KR102343652B1 (ko) 2017-05-25 2021-12-24 삼성전자주식회사 벡터 프로세서의 서열 정렬 방법
CN109086075B (zh) 2017-10-30 2021-06-08 上海寒武纪信息科技有限公司 人工智能处理器及使用处理器执行矩阵乘向量指令的方法
US10691412B2 (en) 2018-08-31 2020-06-23 International Business Machines Corporation Parallel sort accelerator sharing first level processor cache
US10725738B2 (en) 2018-08-31 2020-07-28 International Business Machines Corporation Adaptive sort accelerator sharing first level processor cache
US10579332B1 (en) 2018-08-31 2020-03-03 International Business Machines Corporation Hardware sort accelerator sharing first level processor cache
US10831502B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Migration of partially completed instructions
US10831478B2 (en) * 2018-11-06 2020-11-10 International Business Machines Corporation Sort and merge instruction for a general-purpose processor
US10831503B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Saving and restoring machine state between multiple executions of an instruction
US11500841B2 (en) 2019-01-04 2022-11-15 International Business Machines Corporation Encoding and decoding tree data structures as vector data structures
US11042356B2 (en) 2019-02-28 2021-06-22 International Business Machines Corporation Tournament tree rollback for payload write exception
US11593106B1 (en) * 2021-09-24 2023-02-28 Apple Inc. Circuits and methods for vector sorting in a microprocessor

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5287494A (en) * 1990-10-18 1994-02-15 International Business Machines Corporation Sorting/merging tree for determining a next tournament champion in each cycle by simultaneously comparing records in a path of the previous tournament champion
US5937188A (en) * 1994-05-16 1999-08-10 British Telecommunications Public Limited Company Instruction creation device
CN102103570A (zh) * 2009-12-22 2011-06-22 英特尔公司 Simd向量的同步化
WO2012080484A1 (en) * 2010-12-17 2012-06-21 St-Ericsson Sa Vector-based matching circuit for data streams

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62208167A (ja) * 1986-03-10 1987-09-12 Hitachi Ltd ベクトル処理装置
US7358872B2 (en) * 2005-09-01 2008-04-15 Micron Technology, Inc. Method and apparatus for converting parallel data to serial data in high speed applications
US7788268B2 (en) * 2008-01-08 2010-08-31 International Business Machines Corporation In-place sorting using node specific mask width
CN104517091A (zh) * 2013-09-29 2015-04-15 北大方正集团有限公司 一种qr码探测图形的筛选方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5287494A (en) * 1990-10-18 1994-02-15 International Business Machines Corporation Sorting/merging tree for determining a next tournament champion in each cycle by simultaneously comparing records in a path of the previous tournament champion
US5937188A (en) * 1994-05-16 1999-08-10 British Telecommunications Public Limited Company Instruction creation device
CN102103570A (zh) * 2009-12-22 2011-06-22 英特尔公司 Simd向量的同步化
WO2012080484A1 (en) * 2010-12-17 2012-06-21 St-Ericsson Sa Vector-based matching circuit for data streams

Also Published As

Publication number Publication date
CN105051679A (zh) 2015-11-11
KR20170016998A (ko) 2017-02-14
KR101703797B1 (ko) 2017-02-07
KR101766183B1 (ko) 2017-08-07
DE112013006309T5 (de) 2015-09-10
US20160342418A1 (en) 2016-11-24
KR20150101995A (ko) 2015-09-04
US9760373B2 (en) 2017-09-12
US9405538B2 (en) 2016-08-02
WO2015094145A3 (en) 2015-08-20
WO2015094145A2 (en) 2015-06-25
US20140189292A1 (en) 2014-07-03

Similar Documents

Publication Publication Date Title
CN105051679B (zh) 用于支持矢量排序算法和其他算法的具有树状结构的功能单元
US11442728B2 (en) Sequence alignment method of vector processor
Dally et al. Stream processors: Progammability and efficiency: Will this new kid on the block muscle out ASIC and DSP?
CN106168898A (zh) 流水线化级联数字信号处理结构和方法
KR101918464B1 (ko) 스위즐드 버추얼 레지스터 기반의 프로세서 및 스위즐 패턴 제공 장치
US9384053B2 (en) Task allocation optimization system, task allocation optimization method, and non-transitory computer readable medium storing task allocation optimization program
US10873332B2 (en) Adder circuitry for very large integers
CN110321159A (zh) 用于实现链式区块操作的系统和方法
CN107430586B (zh) 自适应芯片和配置方法
CN110058886A (zh) 用于计算两个区块操作数中的半字节的数量积的系统和方法
CN107851007A (zh) 宽数据类型的比较
US9933996B2 (en) Selectively combinable shifters
CN113158599B (zh) 基于量子信息学的芯片和芯片化eda装置
CN112051981B (zh) 一种数据流水线计算路径结构及单线程数据流水线系统
US20210200711A1 (en) System and Method for Configurable Systolic Array with Partial Read/Write
Kumar et al. Cell formation heuristic procedure considering production data
CN107220702B (zh) 一种低计算能力处理设备的计算机视觉处理方法及装置
Posthoff et al. The Solution of Discrete Constraint Problems Using Boolean Models-The Use of Ternary Vectors for Parallel SAT-Solving
CN109635191A (zh) 相似度确定方法、装置、存储介质和计算机设备
CN104011675A (zh) 用于数字信号处理器的向量执行单元
CN112052042B (zh) 一种数据流水线处理器系统
Hung et al. Design of a hardware accelerator for real-time moment computation: a wavefront away approach
CN104375803A (zh) 一种数据处理的方法及装置
Shinde et al. Architectures of Flynn’s taxonomy-A Comparison of Methods
Paukštė Genetic algorithm on gpu performance optimization issues

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180629

CF01 Termination of patent right due to non-payment of annual fee