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

文档序号:9332646阅读:来源:国知局
。如在图5中观察到的,单个比较和交换电路506具有两个输入和两个输出。比较电路507比较两个输入并确定哪个输入更大。然后,基于哪个输入更大为两个输入选择输出路线。在图5的特定实施例中,更大的输入值呈现在最右边的输出508处,而较小的输入值呈现在最左边的输出507处。
[0030]接着,功能单元根据图6的时序图实现图3的排序树。图6基本上示出图3的排序树,其中排序树的阶段分散在功能单元的多个时钟周期之间。此外,图6描述在每个时钟周期第一和第二交换网络402、403的状态。例如,在第二时钟周期中,第一比较和交换电路从(第一网络)接收输入,并对(第二网络)a0和a2通道生成输出,第二比较和交换电路从al和a3通道接收输入并对al和a3通道生成输出等。需要注意,任何阶段所利用的比较和交换电路的最大数目是八(时钟周期1、4、7、9和10)。因此,在比较和交换组401内有八个比较和交换电路406_1至406_8。
[0031]利用每个新的时钟周期,寄存器组404内的值被引导到第一交换网络402,第一交换网络402将要被比较和交换的值的集合路由到比较和交换组401内的比较和交换电路中的特定一个。每个比较和交换电路对其相应的一对值执行其相对应的比较和交换功能。接着,该对数值被第二交换网络403路由到寄存器组404的适当通道。
[0032]在合适的传播延迟已通过第一交换网络402、比较和交换组401和第二交换网络403结束之后,新生成的值被锁存到寄存器组404。接着,该过程针对下一时钟周期进行重复,其中第一和第二网络的状态(即,网络内所建立路线的模式)通常从旧时钟周期改为新时钟周期。这里,来自ROM电路405的微代码控制整个流程,包括在每个新的时钟周期向第一和第二交换网络402、403呈现新的控制信号。
[0033]如在图3中观察到的,在10个时钟周期中可完全对16个元素矢量进行处理。此夕卜,图3的特定排序模式也适合于2、4、6和8的矢量尺寸。因此,图6的特定指令能够处理尺寸为2、4、6、8或16的矢量(本领域普通技术人员将认识到,甚至是更大的矢量尺寸也是可能的,例如,32、64,等等)。这里,例如,尺寸为16的矢量将为通道a0至al5中的每一个呈现一个值,尺寸为8的矢量将为通道a0至a7中的每一个呈现一个值等。值得注意的是,所需要的时钟周期的数量随着输入矢量的尺寸而增加。如上所述,排序具有16个元素的矢量消耗10个时钟周期。与此相比,仅需要前六个时钟周期以排序具有八个元素的矢量,仅需要前三个时钟周期以排序具有四个元素的矢量,并且仅需要第一个时钟周期以排序具有两个元素的矢量。
[0034]考虑到小于16的矢量尺寸的程度,由于树的对称性,功能单元可以并行处理多个矢量。也就是说,功能单元可以在前六个时钟周期并行地排序一对8个元素的矢量(第一输入矢量消耗通道a0至a7,并且第二输入矢量消耗通道a8至al5)。类似地,功能单元可以在前三个时钟周期同时排序尺寸为4的四个输入矢量(其中输入矢量被分配以占据通道a0_a3 ;a4_7 ;a8_all ;al2_al5),或者在第一个时钟周期排序尺寸为2的八个输入矢量(输入矢量被配置以占据通道 a0_al ;a2_a3 ;a4_a5 ;a6_a7 ;a8_a9 ;al0_alI ;al2_al3 ;al4_al5)。
[0035]因此,在ROM405内存在在由功能单元所支持的多个排序指令之间的对网络控制信号的巨大的“重新使用”。换句话说,该功能单元可以仅使用在ROM 405中存储的单组交换网络控制信号以及指令所需的指示需要多少时钟周期的信息(例如,根据输入矢量的尺寸)而执行上述的排序功能(每个时钟周期一个)。在一个实施例中,指令格式包括指定输入矢量的尺寸的操作码或立即操作数。基于输入矢量的尺寸,ROM 405中的微代码能够确定需要多少个时钟周期以执行指令。
[0036]除了排序功能,另外的树设置可以存储在ROM 405中,以实现与添加到图5的比较和交换电路的一些另外的功能相耦合的其他功能(除了排序功能之外的)。
[0037]图7示出用于实现前缀相加或前缀相乘操作中的一个或两个的树设置。前缀相加和前缀相乘运算是在本领域中公知的。前缀相加操作跨输入矢量水平地将值进行相加,并在每个元素位置处呈现中间值作为结果,其中每个元素位置与导致该元素位置的加法相对应。例如,对于输入矢量I 2 3 4,前缀相加功能将是O I 3 6 10。图7中所观察的特定排序树模式是本领域已知的。然而,它的实施方式以及也可用于实现排序功能的微代码树设置被认为是新颖的。
[0038]在图7的前四个时钟周期中的每条水平线对应于向右相加功能,该向右相加功能接收两个输入值,并在最右边的输入呈现两个输入值的求和。在第五个时钟周期期间,最右通道al5被清为O值。在时钟周期6、7、8和9中的每个水平行对应于相加和交换功能,该相加和交换功能接收两个输入值,并在最右边的输出处提供两个输入值的求和,并且在最左边的输出从提供最右边的输入。
[0039]图8示出图5的比较和交换电路,其经增强以包括向右相加功能以及求和和交换功能。这里,电路806的选择输入810确定要实现哪个功能(比较和交换;向右相加;求和和交换)。如在图8中观察到的,增强的电路806包括加法器811,以实现向右相加以及求和和交换功能。选择输入810由微代码提供,并为图7的第一至第四时钟周期选择向右相加功能,并且为第六至第八时钟周期选择求和和交换功能。
[0040]图9示出图8的电路,其经增强以便支持前缀相乘功能。这里,与图7中相同的树被实现,但在每个阶段执行的功能对应于相乘而不是相加。因此,图9的电路支持两个额外的功能:向右相乘(其中两个输入值的乘积被放置在最右边的输出)以及相乘和交换(其中两个输入的乘积被提供在最右边的输出处,并且最右边的输入被提供在最左边的输出处)。由此,对于这些功能,使用乘法器912而不是加法器911。电路支持在选择输入910处的两个或更多输入值以选择这些功能。
[0041]在更进一步的实施方式中,图6的排序树也可用于实现前缀最小和前缀最大操作。对于每个输入矢量,当从特定方向扫描输入矢量时,前缀最小操作呈现观察到针对每个元素的最小值。例如,对于输入矢量5 4 7 9 8 2 7,当从左向右扫描时,输出矢量将是5 44 4 4 2 2。前缀最大功能提供了最大观察值而不是最小观察值。例如,对于相同的输入矢量,从左到右进彳丁扫描,如缀最大功能将提供下列结果5 5 7 9 9 9 9。
[0042]为了实施这些功能,可以使用与图7中呈现的相同的树,其中(再一次)修改执行逻辑分析的电路。这里,图9的电路可增强以包括另外的比较功能,该比较功能比较两个输入并在最右边的输出(前缀最小)上呈现最小值,或在最右边的输出(前缀最大)上呈现最大值。针对时钟周期一至四选择这些比较功能。前述的比较和交换功能可用于时钟周期六至八。
[0043]在另外的实施例中,针对功能单元的指令格式指定操作码或立即操作数,该操作码或立即操作数表明上文描述的任何/所有不同操作(排序、前缀相加、前缀相乘、前缀最小、前缀最大)中的哪一个将要被执行。作为响应,ROM中的微代码提供交换网络设置和电路选择的正确序列,以实现所指示的操作。
[0044]值得注意的是,上述功能单元设计设想了单个组的比较和交换电路(潜在地被增强以支持其他的功能,例如上述前缀功能中的任何/所有),该单个组的比较和交换电路是经过具有适当的交换网络设置的一系列时钟设置而“循环通过”的。这种特定的设计方法也许节省了半导体的表面积,这是因为在图6的树的情况下,即使执行63个比较和交换功能(即,在图6中有63个水平线),仍然只需要八个比较和交换电路。
[0045]尽管节省半导体表面面积,但是该同样的方法可比相反的另一端的做法消耗更多时钟周期。即,替代实施例可以在硬件中建立图6的整个树。在这种情
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1