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

文档序号:9332646阅读:253来源:国知局
用于支持矢量排序算法和其他算法的具有树状结构的功能单元的制作方法
【技术领域】
[0001]本发明的领域总体上涉及计算科学,并更具体地涉及能够利用排序网络执行多个不同指令的功能单元。
【背景技术】
_2] 矢暈指令执行管线
[0003]图1示出在半导体芯片上用逻辑电路实现的处理核心100的高级图。处理核心包括管线101。管线由多阶段组成,每个阶段被设计成在完全执行程序代码指令所需要的多步骤过程中执行特定步骤。这些通常至少包括:1)指令提取和解码;2)数据提取;3)执行;4)写回。执行阶段对通过指令所标识并在先前的阶段(例如,上文的步骤2))中所提取的数据来执行由在另一先前阶段所提取并解码的指令(例如,在上文的步骤I)中)所标识的特定操作。对其进行操作的数据通常是从(通用)寄存器存储空间102提取的。在完成操作时所创建的新数据通常也被“写回”到寄存器存储空间(例如,在上文的阶段4))。
[0004]与执行阶段相关联的逻辑电路通常由多个“执行单元”或“功能单元”103_1至103_N组成,“执行单元”或“功能单元”103_1至103_N各自被设计成执行其自身的独特的操作子集(例如,第一功能单元执行整型数学操作,第二功能单元执行浮点指令,第三功能单元执行从/到高速缓存/存储器的加载/存储操作等)。由所有的功能单元执行的所有操作的集合对应于由处理核心100所支持的“指令集”。
[0005]两种类型的处理器架构在计算机科学领域被广泛认可:“标量”和“矢量”。标量处理器被设计成执行对单个集合的数据执行操作的指令,而矢量处理器被设计成执行对多个集合的数据执行操作的指令。图2A和图2B呈现了展示出标量处理器与矢量处理器之间的基本差别的比较性示例。
[0006]图2A示出标量AND指令的示例,其中单个操作数集A和B被AND在一起,以产生单一(或“标量”)结果C( S卩,A.AND.B = C)。与此相比,图2B示出矢量AND指令的示例,其中两个操作数集A/B和D/E被分别AND在一起,以产生矢量结果C、F( S卩,A.AND.B = C和D.AND.E = F)。作为术语,“矢量”是具有多个“元素”的数据元素。例如,矢量V = Q,R,S,T,U具有五个不同的元素:Q,R,S,T及U。示例性矢量V的“尺寸”是5(因为它具有五个元素)。
[0007]图1还示出了不同于通用寄存器空间102的矢量寄存器空间107的存在。具体而言,通用寄存器空间102名义上用于存储标量值。由此,当执行单元中的任何一个执行标量运算时,它们名义上使用调用自(并将结果写回到)通用寄存器存储空间102的操作数。与此相比,当执行单元中的任何一个执行矢量运算时,它们名义上使用调用自(并将结果写回到)矢量寄存器空间107的操作数。存储器的不同区域可以被类似地分配以用于标量值和矢量值的存储。
[0008]也要注意的是掩码逻辑104_1至104_~和105_1至105_N存在于到功能单元103_1至103_N的相应的输入端以及从功能单元103_1至103_N的输出端。在各种实施方式中,对于矢量运算,实际上仅实现这些层中的一个一一尽管这不是一个严格的要求(尽管在图1未示出,但是可以想象,仅执行标量而不执行矢量运算的执行单元无需具有任何掩码层)。对于采用掩码的任何矢量指令,输入掩码逻辑104_1至104_~和/或输出掩码逻辑105_1至105_N可以用于控制对哪些元素有效地进行了操作以用于矢量指令。这里,掩码矢量从掩码寄存器空间106读取(例如,连同从矢量寄存器存储空间107读取的输入操作数矢量一起)并被呈现给掩码逻辑104、105层中的至少一个。
[0009]在执行矢量程序代码的过程中,每个矢量指令不需要要求完整的数据字。例如,用于一些指令的输入矢量可能仅是8个元素,用于其它指令的输入矢量可以是16个元素,用于其它指令的输入矢量可以是32个元素等。因此,掩码层104/105用于识别应用于特定指令的完整的矢量数据字的元素集,以使不同的矢量尺寸跨指令有效。典型地,对于每个矢量指令,保存在掩码寄存器空间106中的特定掩码模式由指令调出,从掩码寄存器空间提取并提供到掩码层104/105中的一个或两个,以针对特定的矢量运算“启用”正确的元素集。
【附图说明】
[0010]在附图的图中通过示例的而非限制的方式示出了本发明,在附图中,类似的附图标记指示类似的元素,其中:
[0011]图1(现有技术)示出指令执行管线的实施例;
[0012]图2A-B(现有技术)示出矢量处理的示例;
[0013]图3 (现有技术)涉及现有技术排序算法;
[0014]图4示出用于在单个指令中实现图3的排序算法的指令执行逻辑电路的实施例;
[0015]图5示出比较和交换电路;
[0016]图6示出如由图4的电路实现的图3的排序树;
[0017]图7示出用于利用图4的电路来实现前缀相加/或前缀相乘指令的另一树;
[0018]图8示出图5的比较和交换电路,其经增强以包括实现加法功能以及相加和交换功能的功能;
[0019]图9示出图8的比较和交换电路,其经增强以包括实现乘法功能以及乘法和交换功能的功能;
[0020]图10示出处理器的实施例。
【具体实施方式】
[0021]现有技术排序算法
[0022]图3示出将无序数据的集合排序成有序集合的现有技术软件进程。参照图3,通过图3中所描绘的排序过程的方式将无序输入集和301进行排序,以形成输出排序集合302。有序集合是已根据一些标准而排列的值的集合。最基本的标准(其在图3的过程中描绘)是数值排列。即,集合中的元素是基于它们相对于彼此的数值而进行排序的。如在图3中观察到的,输出排序集合302的元素是以数字顺序排列的,其中较小的值对准到左边,并且较高的值对准到右边。
[0023]根据图3中列出的过程的序列,从输入未排序集合301中产生输出排序集合302。此处,每个水平条代表“比较和交换”操作,其中将两个相连的值进行比较,并且将这两个所比较的元素中的较小者路由到源自水平连接的最左边的下游路径,而将这两个所比较的元素中的较高者路由到来自水平连接的最右边的下游路径。
[0024]到目前为止,上述排序算法已在软件中实现,使得在任何中间集合或结果集合中的每个新计算的元素消耗多个CPU指令。由此,计算整个算法可以消耗数百甚至数以千计的CPU指令。
[0025]能够执行排序算法和其他算法的功能单元
[0026]为了大大加快从无序集合建立排序集合,图4示出针对在指令执行管线内的功能单元400的逻辑电路设计的实施例,该功能单元400利用单个指令实现排序算法。该功能单元还能够执行如将在下面更详细描述的另外的指令。
[0027]如在图4中观察到的,该功能单元包括在本文中被称为第一(在前)交换网络402和第二(随后)交换网络403的一对交换网络之间的一组比较和交换电路401。起始输入矢量被呈现在功能单元407的a0至al5输入处。本领域普通技术人员将认识到,本文所述的功能单元的功能可以利用在比较和交换电路池401之前或之后的单个交换网络成功实现。然而,为了便于可视化功能单元400的相当复杂的交换任务,下文将参照具有两个交换网络的实施例。
[0028]寄存器组404耦合到第二交换网络403的下游。只读存储器(ROM)电路405包含向第一和第二交换网络402、403生成控制信号的微代码,使得通道线路a0至al5上的值被路由到比较和交换电路组401内的适当的比较和交换电路。寄存器组404以回送的方式馈送第一交换网络402。
[0029]在图4的特定实施例中,在比较和交换电路组401内有八个交换和比较电路406_1至406_8。图5示出每个比较和交换电路的设计506的实施例
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1