实施例将在如下非限制描述中进行例示。
本文的实施例涉及高吞吐量低成本元素选择单元。元素选择单元能够从输入向量选择数据元素,级联选择的数据元素,给选择的数据元素集合共同的旋转,并将选择的数据元素集合与输出向量合并。
从输入向量选择数据元素基于选择位图,即,布尔值的向量。
每个数据元素对应于字,即W位的固定大小,其作为一个单元处置。字大小例如可等于8、16或32位。
元素选择单元包括具有W位宽的P-1个两输入复用器的(2log(P)+1)层,其中复用器被单独控制,参见图6,其将在下面更详细描述。P是输入向量中的数据元素的数量,并且可等于4、8、16或32个数据元素。W是复用器的宽度,并且可等于8、16或32位。复用器控制取决于选择器位图和旋转偏移。要指出,在图6中图示的电路是概念图,其中真实的产品化电路例如可通过使用三输入复用器、四输入复用器等进行优化。进一步说,选择控制单元和选择器数据路径电路(它们将在下面描述)可合并到单个单元中。
本文的实施例基于在现有技术的基本向量旋转器电路100中从输入元素到输出元素的路径观察。现有技术的基本向量旋转器电路100在图1a和1b中示意性图示,并且包括第一层的复用器 m00,...,m03 和第二层的复用器 m10, ...,m13 。
在图1a中,输入偏移值等于一(1),位图向量是(1,1,0,1),并且输入向量是(A,B,C,D)。对于正常旋转,例如由等于一(1)的输入偏移值定义的,包括P个数据元素的输入向量的所有输入数据元素将得到相同的相对旋转。换句话说,所有数据元素都将在输入数据元素的索引与输出数据元素的索引之间得到相同的偏移。从而,通过向量旋转器电路100的所有P个路径都将并行地良好运行,并且不通过相同复用器m00,...,m13。
如果向量旋转器电路100不选择输入数据元素,如等于零(0)的位图值所定义的,则如下输入数据元素应该接收是小于要被丢弃的元素将具有的旋转偏移的一个位置的旋转偏移。如图1a中所图示的,输入向量的第三数据元素(即具有索引2和值"C"的数据元素)不应该选择,因为对应位图值等于零(0)。由于具有索引2和值"C"的数据元素如果被选择则应该具有等于一(1)的旋转偏移,因此下面的数据元素(即具有索引3和值"D"的数据元素)应该具有是小于一(1)的一个位置的旋转偏移,即,具有索引3和值"D"的数据元素应该具有等于零(0)的旋转偏移,参见图1a。从而,所有选择的数据元素朝输出的路径将总是待在它前面的所选择的数据元素的路径的右手边,并且作为结果的输出向量将是(X,A,B,D),其中X可以是之前存储的数据值或空数据元素。
因为需要将共同旋转偏移提供给级联的所选择数据元素集合之后再将它们存储到输出向量中,因此所选择的数据元素的路径可环绕在现有技术的基本向量旋转器电路100中。要指出,共同旋转偏移可在0,...,P-1的范围内,其中P是输入向量中数据元素的数量。
在现有技术的向量旋转器电路100上尝试将共同旋转偏移提供给级联的所选择数据元素集合之后再将它们存储到输出向量中将导致一些选择模式的冲突路径,如在图1b中所图示的。
图1b的现有技术的基本向量旋转器电路100包括第一层的复用器m00,...,m03和第二层的复用器m10,...,m13。在图1b中,输入偏移值等于二(2),位图向量是(1,1,0,1),并且输入向量是(A,B,C,D)。如图1b中所图示的,冲突路径将分别对于具有索引0和3的数据元素,即,分别具有值"A"和"D"的数据元素。复用器m00不能选择具有值"A"和"D"的数据元素,并且因此不能将它们传播到输出向量中的相应期望位置。
因此,本文的实施例涉及元素选择单元200,参见图2a-2d,其中对于所有的可能选择模式和可能旋转偏移,不存在冲突路径。
进一步说,在图2a-2d中,还示意性图示了涉及包括元素选择单元200的加载存储单元202、包括元素选择单元200的内存到内存传输系统204、包括元素选择单元200的向量处理器206、包括向量处理器206的集成电路208和包括集成电路208的通信装置210的实施例。
现在将参考图3描述用于向量元素选择的元素选择电路200的一些实施例中的动作。这些动作不必按下面阐述的次序执行,而是可按任何适当次序进行。进一步说,动作可被组合。
动作
301
元素选择单元200接收执行从包括至少一个输入向量vA的源向量选择数据元素的指令,其中P元素由索引i=[0,...,P-1]给出。元素选择单元200可进一步配置成对指令解码。指令包括与至少一个输入向量vA相关的信息、与至少一个输出向量vD相关的信息以及与位图bit_map相关的信息。
动作
302
为了控制在元素选择单元200中包括的多个复用器的操作,元素选择单元200生成多个复用器中每个复用器的复用器控制信号mxx_sel_left。复用器控制信号mxx_sel_left可基于位图bit_map和多个相对偏移值生成。基于输入偏移值并基于位图bit_map对于输入向量vA的每个数据元素计算多个相对偏移值中的每个相对偏移值。输入偏移值在本文有时被称为输入偏移。
在一些实施例中,每个相对偏移值rel_offset(i)被计算为:
,
其中i是输入向量vA中的数据元素的数量,其中bit_map (j)是位图(bit_map)的元素j的位图值,并且其中input_offset是输入偏移值。
动作
303
元素选择单元200还可基于位图bit_map生成输出向量vD的数据元素的启用信号。每个写启用信号启用到输出向量vD的数据元素之一的写,这将在下面在动作305中更详细描述。从而,当输入向量vA的选择的数据元素已经通过多层的复用器朝输出向量vD传播(这将在下面在动作304中描述)时,仅输入向量vA的选择的数据元素将更新输出向量vD的它们相应数据元素。从而,输出向量vD的剩余数据元素将不被重写,并且因此可包括一个或多个之前存储的数据元素。
动作
304
元素选择单元200基于所生成的复用器控制信号mxx_sel_left通过多层的复用器朝输出向量vD传播输入向量vA中包括的数据元素。
为了能够传播在输入向量vA中包括的数据元素,元素选择单元200可基于与在动作301中接收的指令中包括的至少一个输入向量vA相关的信息例如从向量内存中读取输入向量vA。
在一些实施例中,传播数据元素进一步包括元素选择单元200基于所生成的复用器控制信号mxx_sel_left通过多层的复用器配置数据路径。然后当通过复用器层传播数据元素时,可使用所配置的数据路径。
动作
305
元素选择单元200将传播的数据元素写到输出向量vD的启用的数据元素。
为了执行上面描述的用于向量选择的元素选择单元200中的方法动作,元素选择单元200包括在图4中描绘的如下布置。
元素选择单元200包括配置成接收信息和指令的接收电路401。例如,接收电路401可配置成接收执行从源向量选择数据元素的指令或与此类选择指令相关的信息。进一步说,接收电路401可配置成从处理器的指令提取单元(IFU)(未示出)接收信息和指令。而且,接收电路401可配置成对信息和指令解码。从而,接收电路401可被称为指令解码器电路。
源向量包括至少一个输入向量vA。
选择指令包括与至少一个输入向量vA相关的信息、与至少一个输出向量vD相关的信息以及与位图bit_map相关的信息。
元素选择单元200可进一步包括选择器控制单元402。
在一些实施例中,选择器控制单元402将选择掩码作为布尔输入向量接收。选择掩码在本文也被称为位图向量或仅被称为位图bit_map。位图bit_map包括由i=[0...P-1]索引的位图元素。在一些实施例中,选择器控制单元402从包括在元素选择单元200中或连接到元素选择单元200的位图寄存器409接收位图bit_map。
选择器控制单元402可进一步接收输入旋转偏移值,命名为input_offset,包括[0,...,P-1]范围内的值。选择器控制单元402可从输入偏移寄存器403接收输入旋转偏移值。
在一些实施例中,选择器控制单元402按具有索引i的输入向量的数据元素计算输出向量vD中目的地索引与输入向量vA中源索引之间的相对偏移rel_offset (i):
,
其中i是输入向量vA中的数据元素的数量,其中bit_map (j)是位图(bit_map)的元素j的位图值,并且其中input_offset是输入偏移值。
基于按数据元素计算的相对偏移和选择掩码,即位图bit_map,选择器控制单元402可计算复用器设置。从而,从输入向量vA的输入元素到输出向量vD中的期望位置的路径被设置。
在一些实施例中,复用器设置可借助于在动作302中描述的并由选择器控制电路404生成的复用器控制信号mxx_sel_left定义,这将在下面更详细描述。选择器控制电路404可包括在选择器控制单元402中,或者它可连接到选择器控制单元402。
进一步说,选择器控制单元402可使用输出位图bit_map out计算输出向量vD的所有P个数据元素的写启用信号。从而,仅输入向量vA的选择的数据元素将更新输出向量vD的数据元素,并且因此必须被附加的先前选择的数据元素不会被重写。
输出位图bit_map_out可由选择器控制电路404计算,其将在下面更详细描述。这将在下面描述,输出位图bit_map_out将包括来自输入位图bit_map_in的布尔表达式,其已经接收到相同选择、旋转和级联作为它们的对应选择的数据元素。
在一些实施例中,选择器控制单元402对于下一迭代,即对于从下一输入向量的数据元素的下一选择,计算输出偏移值output_offset。下一迭代的输出偏移output_offset值可基于当前迭代的输入偏移值input_offset计算,加上附加在当前迭代中的字数。输出偏移值output_offset可计算为:
,
其中P是输入向量vA中的数据元素的数量,其中bit_map是选择掩码;其中input_offset是当前迭代的输入偏移,并且其中%是模数运算。
应该理解,对于下一迭代,计算的输出偏移值将被用作输入偏移值。
选择器控制电路404进一步包括在元素选择单元200中。如之前所提到的,在一些实施例中,选择器控制电路404包括在选择器控制单元402中。然而,选择器控制单元402和选择器控制电路404可被组合到一个单个单元中。
选择器控制电路404配置成计算复用器设置,即,生成包括在元素选择单元200中的多个复用器m00,m01,...,m23中每个复用器的复用器控制信号mxx_sel_left。复用器控制信号mxx_sel_left可基于位图bit_map和多个相对偏移值生成。基于输入偏移值并基于位图bit_map对于输入向量vA的每个数据元素计算多个相对偏移值中的每个相对偏移值。
如之前提到的,相对偏移值可由选择器控制单元402计算。进一步说,选择器控制电路404可从选择器控制单元402接收相对偏移值。
选择器控制电路404还可基于位图bit_map和输入偏移值生成输出向量vD的数据元素的写启用信号。
在一些实施例中,写启用信号基于输出位图向量(其在图5中表示为bit_map out)生成。图5将在下面描述。输出位图向量基于输入位图向量(其在图5中表示为bit_mapin)计算。输出位图bit_map out将接收相同旋转和级联作为对应选择的数据元素。
每个生成的写启用信号启用到输出向量vD的数据元素之一的写。
在一些实施例中,选择器控制电路404具有与选择器数据路径电路406基本上相同的结构,下面将参考图6描述一些实施例。如图5中示意性图示的,选择器控制电路404的一些实施例可包括若干功能块c00,...,c04,c10,...,c16,c'20,...,c'23。进一步说,如图6中示意性图示的,选择器数据路径电路406的一些实施例可包括若干复用器m00,m01,...,m23。应该理解,图5的功能块c00,...,c04,c10,...,c16,c'20,...,c'23不表示如图6中的两输入复用器,而是这些块图示执行功能cxx和功能c'xx的功能块,这将在下面更详细描述。到图5中相应cxx或c'xx功能块的输入线对应于复合数据类型。如在图5中所进一步图示的,选择器控制电路404的输出包括每个cxx/c'xx功能层P-1个控制信号,即,图6的选择器数据路径电路406的每个复用器层P-1个控制信号。换句话说,选择器控制电路404对于包括在选择器数据路径电路406中的每个复用器m00,m01,...,m23生成一个控制信号。
从而,每个cxx/c'xx块计算其对应复用器的选择控制信号。因此,功能块cxx/c'xx在本文有时被称为复用器控制块。
进一步说,每个cxx/c'xx块基于两个输入控制信号执行计算。输入控制信号可以是复合控制信号。复合控制信号是指具有在一个组合结构中包括多个基本信号类型的复杂数据类型的信号。
到cxx/c'xx块的左输入控制信号包括左输入数据元素的位图值以及左输入数据元素仍必须跨过选择器数据路径电路406的剩余相对偏移,并且到cxx/c'xx块的右输入控制信号包括右输入数据元素的位图值以及右输入数据元素仍必须跨过选择器数据路径电路406的剩余相对偏移。如果左输入数据元素的位图值是1,即选择左输入数据元素,并且如果左输入数据元素具有奇数相对偏移,即其最后一个偏移位是1,则左输入数据元素需要跨到复用器列,并且必须被传播。因此,左输入数据元素应该被功能块选择。如果这两个条件不满足,则右输入数据元素被功能块选择。这将在下面参考例示的元素选择单元200以及图5和图6更详细例示。
在右输入数据元素被功能块选择的情况下,参见图7a的else-clause,则基于右输入数据元素的相对偏移值及其位图值计算输出位图bit_map out。例如,仅当这个右输入的相对偏移为偶数并且输入位图值在这一点仍为1时,数据元素才应该被标记为选择用于进一步传播,即,输出位图应该被设置成1。这将在下面参考例示的元素选择单元200以及图5和图6更详细例示。
图7a和7b分别给出了例示相应功能块cxx和c'xx的功能性的C风格的例示描述。注意,最后一层功能块即c'xx块的行为与其它层功能块即cxx块的行为略微不同,因为在c'xx块中只存在选择,在最后一层中没有进一步跨过。
元素选择单元200可进一步包括选择器数据路径电路406。选择器数据路径电路406包括多层,每层包括多个复用器m00,m01,...,m23。
在一些实施例中,选择器数据路径电路406的数据路径配置为2log(P)+1两输入复用器层,参见图6,其中索引l=[0,...,2log(P)]。层具有宽度W位的P-1个两输入复用器,用于选择输入向量的一个或多个数据元素,并将一个或多个选择的数据元素传播到输出向量。在图6中,选择器数据路径电路406的第一复用器层包括复用器m01、m02和m03,第二复用器层包括复用器m12、m13和m14,并且第三复用器层包括复用器m21、m22和m23。
进一步说,在概念上,选择器数据路径电路406对于前2log(P)个复用器层每个复用器层具有2l+1个节点,其中2l+1个节点使信号在两个方向分叉。在图6中,选择器数据路径电路406的第一复用器层包括使信号分叉的两(2)个节点。这两个节点分别表示为m00和m04。这两个节点m00和m04对应于图5的块c00 和 c04。进一步说,第二复用器层包括使信号分叉的四(4)个节点,这些节点分别表示为m10 、 m11 、 m15和m16。这四个节点对应于图5中的块c10 、 c11 、 c15 和 c16。进一步说,第三复用器层即最后一个复用器层仅包括一(1)个使信号分叉的节点,该节点表示为m23。此节点m23对应于图5的块c'23。
选择器数据路径电路406接收或读取输入向量vA,其中P个元素由i=[0..P-1]索引,并输出具有由i=[0..P-1]索引的P个元素的输出向量vD。为了使选择器路径电路406有效,输入向量和输出向量应该具有相同大小。然而,如果输出向量小于输入向量,则可能需要多遍将相同输入传播到输出。进一步说,如果输出向量在宽度上较大,比如说2P,则选择器路径电路406将不那么有效。
选择器数据路径电路406配置成基于所生成的复用器控制信号mxx_sel_left通过多层的复用器m00,m01...,m23朝输出向量vD传播输入向量vA中包括的数据元素。如之前所提到的,选择器控制电路404生成复用器控制信号mxx_sel_left,并且从而,选择器数据路径电路406可从选择器控制电路404接收所生成的复用器控制信号mxx_sel_left,如在图5和6中示意性图示的。
进一步说,选择器数据路径电路406配置成将传播的数据元素写到输出向量vD的启用的数据元素。
在一些实施例中,选择器数据路径电路406进一步配置成基于生成的复用器控制信号mxx_sel_left通过多层的复用器m00,m01...,m23配置数据路径。
元素选择单元200可进一步包括位图加载单元408。然而,在一些实施例中,位图加载单元408连接到元素选择单元200。位图加载单元408可配置成将位图bit_map加载到位图寄存器409中。
在一些实施例中,元素选择单元200包括向量加载单元410。然而,在其它实施例中,向量加载单元410可连接到元素选择单元200。向量加载单元410可配置成将输入向量vA加载到输入向量寄存器411中。
元素选择单元200可进一步包括向量存储单元412。然而,在一些实施例中,向量存储单元412连接到元素选择单元200。向量存储单元412可配置成存储包括在输出向量寄存器413中的向量。
应该理解到,元素选择单元200的组件可被合并到一个或多个组合单元中。例如,选择器控制单元402和选择器数据路径电路406可被组合到单个单元中。进一步说,在一些实施例中,选择器控制单元402包括选择器数据路径电路406。
例示元素选择单元
200
现在将参考图4、5、6和7描述例示元素选择单元200的控制和数据流。在该示例中,输入向量vA包括由i={0,...,3}索引并且分别包括数据值"A"、"B"、"C"和"D"的四个输入数据元素。
位图bit_map(在图5和图6中也被称为bit_mapin)被作为输入提供给选择器控制单元402。位图包括布尔值{1,1,0,1}。进一步说,提供了具有值2的输入偏移值input_offset。基于第一选择的数据元素的输入位图和输入偏移值,计算所有输入数据元素的相对偏移值rel_offsetvalues。相对偏移值被计算为:
。
相对偏移向量{2,2,2,1}是选择器控制电路404的输入。如之前所描述的,选择器控制电路404基于相对偏移向量和位图计算复用器控制信号mxx_sel_left,参见图5。
然后,复用器控制块cxx/c'xx相继更新复用器选择设置,从而通过选择器数据路径电路406配置恰当路径。
一般而言,2l列的跨度可在复用器层l中执行。因此,具有奇数相对偏移(即LSB=1)的所有数据元素都必须在第一层中跨过一(1)列。
如果对于数据元素,相对偏移是三(3),则在层0中跨过一(1),并且继之以在层1中跨过二(2),其将给出三(3)的组合跨度,即相对偏移。
从而,基本上采取相对偏移的二进制表示,并且对于每层,对应位确定是否跨过。
例如,假定在图5中输入向量是{A,B,C,D}。然后,复用器控制块c01作为左输入信号接收具有位图值1和相对偏移2的数据元素0的控制信号。数据元素0具有值"A"。进一步说,复用器控制块c01作为右输入信号接收具有位图值1和相对偏移2的数据元素1的控制信号。数据元素1具有值"B"。
在块c01属于的第一控制块层中,数据元素可跨过一(1)列,因此具有奇数相对偏移的所有数据元素在第一层中都将向右边移动一个位置。复用器控制块c01的左输入具有偶数相对偏移(2),即,最低有效位(LSB)等于0,并且因此左输入信号中的数据元素不认为在这个第一层中跨过一,并且m01的输出复用器控制信号mxx_sel_left相应地设置成0以选择右输入。这层中的所有cxx块的mxx_sel_left信号是mxx_sel_left_v={X,0,0,0,X},其中X指示选择器数据路径电路406中的分叉节点,并且其中0向选择器数据路径电路406的相应复用器指示对应的左输入数据元素不应该被选择在这层跨过,如图5中所图示的。复用器控制信号被传送到选择器数据路径电路406中的对应复用器层。
输出位图bit_map out基于相对偏移以及选择的数据元素的输入位图。对于c01,选择的右输入信号的相对偏移是偶数,因此如所预计的,在这层将不跨步,但应该由对应复用器m01传播,并且右输入信号的数据元素的输入位图值为1。当两个条件都满足时,c01的输出位图应该是1。
然后,通过将这个整数偏移值除以2并且丢弃最低有效位,根据选择的右输入的数据元素的输入相对偏移(即2),计算要在下一控制块层中使用的相对偏移输出信号。因此,对于第二复用器控制块层中的对应块即c11和c13,相对偏移输入值是1。在第二复用器控制块层中,具有值"B"的对应数据元素2可跨过两列的所需跨度,其中控制块c13将更新并且传播其控制复合信号,并且复用器m13将传播值"B"。在第二控制块层中,将生成控制信号mxx_sel_left_v={X,X,1,1,0,X},并在选择器数据路径电路406中将它传送到对应复用器层。如之前所提到的,X指示选择器数据路径电路406中的分叉节点,0指示不应该选择对应左输入数据元素在这层跨步的选择器数据路径电路406的相应复用器,并且1指示不应该选择对应数据元素在这层跨步的选择器数据路径电路406的相应复用器。
在最后一个复用器控制块层c'20-c'23,控制块c'22作为左输入信号得到位图值设置成0(因此数据元素不应该跨步)的控制信号,并且作为右输入信号得到位图值设置成1的控制信号,其对应于具有值"A"的输入数据元素0。右输入信号必须由选择器数据路径电路406中的复用器m22传播。在最后一个控制块层中,将生成控制信号mxx_sel_left_v={1,0,0,X},并在选择器数据路径电路406中将它传送到对应复用器层。
在图5中,在c00、c04、c10、c11、c15、c16和c'23控制块以上的零意味着,相应输入的所有字段,并且特别是选择位图值,被设置成零。从而,相应输入实际上不会被选择。因此,这些控制块可用于分叉节点。
在选择器数据路径电路406中接收输入向量vA ={A,B,C,D}。可从输入寄存器411接收输入向量vA。进一步说,输入向量vA由选择器数据路径电路406根据所生成的复用器控制信号定义的复用器设置通过复用器层传播。例如,具有值"B"的数据元素2将从复用器m01经由m13传送到m23。
表1按组合的控制块和复用器/分叉节点概括了传播/计算的输出值。
表1。标记法:{offset,bitmap,mxx_sel_leff}|数据元素
现在将给出本文实施例的一些一般优点。
第一,本文一些实施例的元素选择单元200具有高吞吐量,即,每秒可处理的高数量的输入样本。高吞吐量归因于元素选择单元200从包括P个数据元素的输入向量vA中选择数据元素的能力。这与必须一个接一个加载字(即数据元素)以便执行数据元素选择的标量系统形成对比,
第二,本文一些实施例的元素选择单元200支持流播模式,因为输入向量vA仅被加载一次,并且对于选择操作仅使用一次。
第三,本文一些实施例的元素选择单元200例如比基于全混洗电路的选择系统具有更低的区域和功率消耗。
第四,本文一些实施例的元素选择单元200具有低配置开销,因为元素选择单元200仅需要准备布尔位图向量,这可通过逐位运算有效地执行。布尔位图向量可以是短布尔位图向量或长布尔位图向量。短布尔位图向量是指正好是P个布尔的向量。因而,长布尔位图向量是指n*P个布尔的向量,等于被处理的长输入数据阵列的长度。
第五,本文一些实施例的元素选择单元200具有用于存储选择位图的低成本。该成本是每个输入字一位。这少于基于混洗的系统,基于混洗的系统将存储混洗模式的可能集合,例如每个选择的字8位整数。进一步说,在本文一些实施例的元素选择单元200中,不需要存储可能变大的混洗模式的使用情况的特定表。
现在将参考第一类型、第二类型、第三类型和第四类型更详细描述一些实施例。
第一类型实施例:专用单元
在第一类型的一些实施例中,元素选择单元200是专用单元。有时,元素选择单元200例如被嵌入在包括加载和/或存储架构的向量处理器中。
在此类实施例中,元素选择是独立操作。元素选择单元200接收从输入向量vA进行数据元素选择的指令。选择模式由位图(例如短位图,诸如P个布尔的向量)配置成给选择的和级联的向量元素某个共同旋转偏移。可选地,元素选择单元200基于来自输入向量vA的选择的字数和输入偏移值输出更新的偏移值。
选择指令可具有如下标记:vselect_elementsoutput_vector_register 、 input_vector_register 、 bit_map_register 、 rotation_offset_register 。
根据第一类型实施例执行的动作可包括如下一项或多项:
-元素选择单元200接收选择指令,例如上面提到的vselect_elements指令。元素选择单元200可从处理器的指令提取单元(IFU)接收指令。这涉及上面的动作301。
-参见图4,选择器控制单元402从由bit_map_register指示的位图寄存器409中读取位图。这涉及上面的动作302。
-选择器控制单元402从由rotation_offset_register指示的输入偏移寄存器403中读取输入旋转偏移值。这涉及上面的动作302。
-选择器数据路径电路406从由input_vector_register指示的输入向量寄存器411中读取输入向量vA。这涉及上面的动作304。
-选择器控制电路404根据位图和相对偏移生成复用器控制信号。这涉及上面的动作302。
-选择器数据路径电路406按照所生成的复用器控制信号朝输出向量寄存器413传播所选择的输入数据元素,级联所选择的输入数据元素,并给所选择的集合所需的旋转。这涉及上面的动作304。
-选择器数据路径电路406在输出向量寄存器413的启用的数据元素中写。这涉及上面的动作303和305。
-可选地,选择器控制单元402更新输出偏移值,并将这个值写到由rotation_offset_register指示的旋转偏移寄存器403。
除了上面提到的一般优点,第一类型的一些实施例还具有以下优点:系统可容易地集成在具有加载/存储架构的向量处理器206中即集成在具有向量寄存器文件的向量处理器中。
进一步说,由于在选择操作中不包含加载操作和/或存储操作,因此程序员可对寄存器文件中的向量操作。此类系统对于更复杂操作(例如对于顺序选择操作)或对于输入向量的再用特别感兴趣。另一示例是多流选择,这意味着从具有不同位图的相同输入数据选择。使用情况将要将输入流的偶数和奇数样本分成两个输出流,第一个具有偶数个元素,而第二个具有奇数个元素。输入数据仅必须从内存中加载一次。
第二类型实施例:具有短位图的加载和
/
或存储单元
202
中的加载
/
存储操作部分。
在第二类型的一些实施例中,元素选择单元200包括在具有短位图的加载和/或存储单元202中,例如参见图2a。短位图是指包括正好P个布尔的位图。
在一些实施例中,元素选择单元200被嵌入在加载和/或存储单元202中,该加载和/或存储单元202可以是向量处理器206的一部分。
加载和/或存储单元202接收加载和/或存储单个向量并执行数据元素选择的指令,级联它们并给作为结果的选择元素某个共同偏移。选择位图可按加载操作和/或存储操作显式提供。加载和选择数据元素的操作,例如vload_and_select_elements 操作,使用向量加载单元410,参见图4。向量加载单元410可对应于在图2a和2b中图示的加载和/或存储单元202。从而,向量加载单元410可包括元素选择单元200。然而,在一些实施例中,向量加载单元410连接到元素选择单元200。向量加载单元410配置成基于地址从向量内存加载完整输入向量vA。从输入向量vA,数据元素由元素选择单元200选择,并且在输出向量中被给予某个偏移,该偏移由偏移寄存器确定。在一些实施例中,级联来自每个部分填充的选择器输出向量的选择的数据元素必须由程序员显式进行。这与提取正好P个数据元素的一些实施例不同。在此类实施例中,P个数据元素的聚集和级联对程序员是透明的。
存储和选择数据元素的操作,例如vstore_and_select_elements 操作,使用向量存储单元412。向量存储单元412可对应于在图2a和2b中图示的加载和/或存储单元202。从而,向量存储单元412可包括元素选择单元200。然而,在一些实施例中,向量存储单元412连接到元素选择单元200。从向量寄存器文件接收完整输入向量vA。从输入向量vA,元素选择单元200选择数据元素。向量存储单元412将部分填充的输出向量vD作为不对齐向量存储进行处理。表述“向量存储单元412的不对齐向量存储”是指向量内存中的向量存储操作,对于其,写地址不需要按向量长度的倍数定位。然后,对于一个不对齐向量存储操作(部分)更新高达两个向量内存线。可应用写缓冲方案合并多个不对齐存储的数据,以能够在向量内存上进行对齐向量存储操作。向量存储单元412可包括缓冲器和写支持以执行对齐向量存储操作。可选地,向量存储单元412基于输入向量vA中的选择的字数和存储地址来更新地址指针,例如不对齐地址指针。地址指针可被用作用于如下元素选择和存储指令的写地址。
加载和选择指令可具有如下标记:vload_and_select_elementsoutput_vector_register 、 load_address_register 、 bit_map_register 、 rotation_offset_register。
根据第二类型实施例执行的包括加载和选择的动作可包括如下一项或多项:
-加载和/或存储单元202接收加载和选择数据元素的指令,例如上面提到的vload_and_select_elements指令。加载和/或存储单元202可从处理器的指令提取单元(IFU)接收指令。这涉及上面的动作301。
- 选择器控制单元402从由bit_map_register指示的位图寄存器409中读取位图。这涉及上面的动作302。
-选择器控制单元402从由rotation_offset_register指示的偏移寄存器403中读取输入旋转偏移值。这涉及上面的动作302。
-向量加载单元410从由load_address_register指示的地址从内存(未示出)加载输入向量vA,并将加载的输入向量vA存储在输入向量寄存器411中。向量加载单元410可对应于在图2a和2b中图示的加载和/或存储单元202。从而,向量加载单元410可包括元素选择单元200。然而,在一些实施例中,向量加载单元410连接到元素选择单元200。输入向量寄存器411可以是内部寄存器。这涉及上面的动作304。
- 选择器控制电路404根据位图和相对偏移生成复用器控制信号。这涉及上面的动作302。
-选择器数据路径电路406基于所生成的复用器控制信号朝输出向量寄存器413传播所选择的输入数据元素,级联所选择的输入数据元素,并给所选择的集合所需的旋转。这涉及上面的动作304。
-选择器数据路径电路406在输出向量寄存器413的启用的数据元素中写。这涉及上面的动作303和305。
-可选地,选择器控制单元402更新旋转偏移值,并将它写到由rotation_offset_register指示的偏移寄存器403。
存储和选择指令可具有如下标记:vstore_and_select_elementssource_vector_register 、 store_address_register 、 bit_map_register。
根据第二类型实施例执行的包括存储和选择的动作可包括如下一项或多项:
-加载和/或存储单元202接收存储和选择数据元素的指令,例如上面提到的vstore_and_select_elements指令。可从处理器的指令提取单元(IFU)接收指令。这涉及上面的动作301。
- 选择器控制单元402从由bit_map_register指示的位图寄存器409中读取位图值。这涉及上面的动作302。
-选择器控制单元402从由store_address_register指示的寄存器中读取存储指针值。这涉及上面的动作302。
-选择器数据路径电路406读取由source_vector_register指示的输入向量vA。这涉及上面的动作304。
-选择器控制电路404根据位图和存储地址指针生成复用器控制信号,该存储地址指针对应于相对偏移。这涉及上面的动作302。
-选择器数据路径电路406基于所生成的复用器控制信号朝输出向量寄存器413传播所选择的输入数据元素,级联所选择的输入数据元素,并给所选择的集合所需的旋转。这涉及上面的动作304。
-选择器数据路径电路406在输出向量寄存器413的启用的数据元素中写。这涉及上面的动作303和305。
-向量存储单元412进行输出向量寄存器413内容的不对齐存储。
-可选地,选择器控制单元402更新存储地址,并将值写入store_address_register中。
除了上面提到的一般优点,第二类型的一些实施例还具有如下优点:加载/存储单元202(在本文中也称为加载存储单元202或加载和/或存储单元202)中的元素选择单元200的组合启用了更复杂指令中基本操作的排序,因此存在例如来自指令解码的较少开销。
进一步说,它启用将选择器数据路径电路406再用于传统不对齐加载/存储操作,其中位图具有P个一(1)。
而且,不停地计算位图,并通过寄存器(例如从位图寄存器409)提供。它不必通过需要加载操作的内存提供,并且因此它降低了开销。这对于在短时间间隔内是周期性的位图模式可能是相关的。
更进一步说,作为具有显式短位图的存储操作的一部分的选择对于助手选择功能可能是有用的,特别是在它从向量数据进行多流选择(多个可能计算的位图)之后再将它存储到存储器的情况下。表述“助手选择功能”是指诸如软件功能的功能,其主要任务是从输入流中获取样本,并将选择的集合存储回内存。当在消费者信号处理功能中进行输入选择将是复杂或者无效时,此类助手功能被实例化。
第三类型的实施例:具有长位图的加载存储单元中的加载和
/
或存储操作的一部分
在第三类型的一些实施例中,元素选择单元200包括在具有长位图的加载和/或存储单元202中,例如参见图2a。在一些实施例中,元素选择单元200被嵌入在加载和/或存储单元202中,该加载和/或存储单元202是向量处理器206的一部分。长位图是指n*P个布尔的向量,等于被处理的长输入数据阵列的长度。
加载和/或存储单元202接收加载P个选择的向量元素的完整输入向量vA或存储选择的向量元素的完整输入向量vA的指令。选择位图bit_map由位图加载单元408隐式获得。位图加载单元408配置成像长位图向量的高速缓存或缓冲系统那样运作。进一步说,位图加载单元408包括在或连接到元素选择单元200。在背景技术中可隐式地获得选择位图bit_map。当在缓冲器/高速缓存中未发现这个集合时,从内存中加载P个布尔的向量,对应于以某个迭代处理的P个输入数据元素。缓冲器可大于P个布尔,比如说c*P,其中c可以是2、4、8等。
例如根据vload_and_select_elements_using_long_bitmap指令加载P个选择的数据元素的操作使用向量加载单元410。向量加载单元410包括在或连接到元素选择单元200。向量加载单元410基于指向长输入阵列的指针从向量内存(未示出)中一个接一个加载输入向量vA。位图加载单元408基于指向长选择位图阵列的指针加载并且可选地缓冲部分长选择位图阵列。选择器数据路径电路406从每个加载的输入向量vA中选择由长位图的对应部分指示的数据元素,并通过给选择的和级联的数据元素一个旋转偏移来将选择的数据元素附加到输出向量vD。加载输入向量vA、从这些输入向量vA中选择数据元素并将它们附加到输出向量vD的过程继续,直到单个输出向量已经被完全填充为止。在一些实施例中,处理器与此同时保持停止。
例如根据vstore_and_select_elements_using_long_bitmap指令存储选择的数据元素的操作使用向量存储单元412。向量存储单元412可对应于在图2a和2b中图示的加载和/或存储单元202。从而,向量存储单元412可包括元素选择单元200。然而,在一些实施例中,向量存储单元412连接到元素选择单元200。从向量寄存器文件接收完整输入向量vA。从输入向量vA,选择器数据路径单元406选择数据元素。位图加载单元408例如基于指向位图阵列的指针加载用于选择的位图。位图加载单元408包括在或连接到元素选择单元200,并且在指令中接收指向位图阵列的指针。向量存储单元412将部分填充的输出向量vD作为不对齐向量存储进行处理。向量存储单元412可包括缓冲器和写支持以进行对齐的向量存储操作。它基于输入向量vA中的选择的字数和输入地址针织更新不对齐的地址指针。
要指出,遵循vstore_and_select_elements_using_long_bitmap指令存储选择的数据元素的操作表现得更像遵循上面描述的第二类型实施例的vstore_and_select_elements指令存储选择的元素的操作。一个差异是,位图未被提供存储操作,但它被简单地加载。
加载和选择指令可具有如下标记:vload_and_select_elements_using_long_bitmap output_vector_register、load_address_register、bit_map_address_register。
根据第三类型实施例执行的包括加载和选择的动作可包括如下一项或多项:
-加载和/或存储单元202接收加载P个选择的数据元素的指令,例如上面提到的vload_and_select_elements_using_long_bitmap指令。可从处理器的指令提取单元(IFU)接收指令。这涉及上面的动作301。
-位图加载单元408基于由bit_map_address_register指示的位图寄存器409中的地址从存储器加载位图。这涉及上面的动作302。
-选择器控制单元402从由rotation_offset_register指示的偏移寄存器403中读取输入偏移值。偏移寄存器403可以是内部寄存器。这涉及上面的动作302。
-向量加载单元410从内存(未示出)加载输入向量vA,并将它存储在输入向量寄存器411中。这涉及上面的动作304。
-选择器控制电路404根据位图和相对偏移生成复用器控制信号。这涉及上面的动作302。
-选择器数据路径电路406基于所生成的复用器控制信号朝输出向量寄存器413传播所选择的输入数据元素,级联所选择的输入数据元素,并给所选择的集合所需的旋转。这涉及上面的动作304。
- 选择器数据路径电路406在输出向量寄存器413的启用的元素中写。这涉及上面的动作303和305。
-选择器控制单元402更新和写入加载地址和位图地址,并将这些值写到规定的寄存器。
-如果输出向量寄存器413不包括完整输出向量vD,则过程可从第二动作重复上面提到的动作,否则它继续下一动作。
-输出向量寄存器413被写到处理器的向量寄存器文件。
存储和选择指令可具有如下标记:vstore_and_select_elements_using_long_bitmapinput_vector_register 、 store_address_register 、 bit_map_address_register。
根据第三类型实施例执行的包括加载和选择的动作可包括如下一项或多项:
- 加载和/或存储单元202接收存储选择的数据元素的指令,例如上面提到的vstore_and_select_elements_using_long_bitmap指令。可从指令提取单元(IFU)接收指令。这涉及上面的动作301。
- 位图加载单元408基于由bit_map_address_register指示的位图寄存器409中的地址从内存(未示出)加载位图。这涉及上面的动作302。
-选择器控制单元402从由store_address_register指示的寄存器(未示出)中读取存储指针值。这涉及上面的动作302。选择器数据路径电路406从由input_vector_register指示的输入向量寄存器411中读取输入向量vA。这涉及上面的动作304。
-选择器控制电路404根据位图和存储地址指针生成复用器控制信号。存储地址指针对应于相对偏移。这涉及上面的动作302。
-选择器数据路径电路406基于所生成的复用器控制信号朝输出向量寄存器413传播所选择的输入数据元素,级联所选择的输入数据元素,并给所选择的集合所需的旋转。这涉及上面的动作304。
-选择器数据路径电路406在输出向量寄存器413的启用的数据元素中写。这涉及上面的动作303和305。
-选择器控制单元402更新和写入存储地址指针和位图地址指针,并将这些值分别写到存储寄存器和位图寄存器409。
-向量存储单元412进行部分填充的输出向量寄存器413的不对齐存储。可选地,向量存储单元412延迟存储操作,直到已经聚集了P个选择的数据元素。
除了上面提到的一般优点,第三类型的一些实施例还具有如下优点:加载/存储单元202中的元素选择单元200的组合启用了操作的分组,因此存在来自例如指令解码的较少开销。
进一步说,第三类型的一些实施例启用将选择器数据路径电路406再用于传统不对齐的加载/存储操作,其中位图具有P个一(1)。
而且,如果复杂向量计算必须直接使用输入数据,则使用加载和选择操作是非常方便的。对于程序员,用选择操作加载总是得到完整向量,不管必须加载多少输入向量以聚集数据。不需要在软件中组合用选择的元素部分填充的向量。
第四类型实施例:内存到内存传输系统的部分
在第四类型的一些实施例中,元素选择单元200嵌入在内存到内存传输系统204中,例如参见图2b。此类系统的示例是DMA单元。
内存到内存传输系统204接收将数据阵列从源地址拷贝到目的地地址的指令,同时选择和级联由选择位图指示的数据元素。选择位图可以是长选择位图,并且它在背景技术中可由位图加载单元408隐式获得。位图加载单元408包括在或连接到元素选择单元200。
内存到内存传输系统202使用向量加载单元410,向量加载单元410基于源地址从源内存(未示出)中一个接一个加载输入向量vA。向量加载单元410包括元素选择单元200,或连接到元素选择单元200。位图加载单元408基于指向选择位图阵列的指针加载并且可选地缓冲部分选择位图阵列。选择器数据路径电路406从每个输入向量vA中选择由长位图的对应部分指示的数据元素,并通过给选择的和级联的数据元素一个旋转偏移来将它们附加到输出向量vD。加载输入向量vA、从这些输入向量vA中选择数据元素并将它们附加到输出向量vD的过程可继续,直到单个输出向量vD已经被完全填充为止。然后,向量存储单元412进行对目的地地址的对齐存储操作。如之前所提到的,向量存储单元412包括元素选择单元200,或连接到元素选择单元200。
拷贝选择的数据元素的指令可具有如下标记:copy_selected_elementsdestination_address 、 source_address 、 bit_map_address,block_size 。
根据第四类型实施例执行的包括拷贝选择的数据元素的动作可包括如下一项或多项:
-内存到内存传输系统204接收拷贝选择的数据元素的指令,例如上面提到的copy_selected_elements指令。可从处理器接收指令。可用各种方式,例如经由直接控制接口、经由内存映射的配置和/或经由寄存器映射的配置,接收指令及其配置。这涉及上面的动作301。
-位图加载单元408基于由bit_map_address指示的地址从内存(未示出)并且可能从缓冲器加载部分长位图阵列。
-位图加载单元408包括在或连接到元素选择单元200。这涉及上面的动作302。
-选择器控制单元402从偏移寄存器403中读取偏移值。旋转偏移寄存器403可以是内部寄存器。这涉及上面的动作302。
-向量加载单元410从由source_address指示的内存(未示出)加载输入向量vA,并将它存储在输入向量寄存器411中。向量加载单元410可对应于在图2a和2b中图示的加载和/或存储单元202。从而,向量加载单元410可包括元素选择单元200。然而,在一些实施例中,向量加载单元410连接到元素选择单元200。这涉及上面的动作304。
-选择器控制电路404根据位图和相对偏移生成复用器控制信号。这涉及上面的动作302。
-选择器数据路径电路406基于所生成的复用器控制信号朝输出向量寄存器413传播所选择的输入数据元素,级联所选择的输入数据元素,并给所选择的集合所需的旋转。这涉及上面的动作304。
-选择器数据路径电路406在输出向量寄存器413的启用的数据元素中写。这涉及上面的动作303和305。
-选择器控制单元402更新和写入源地址指针和位图地址指针,并将这些值写到指示的寄存器。
-如果输出向量寄存器413没有完整输出向量vD输出,则过程从加载可能还有缓冲部分长位图阵列的动作重复上面提到的动作。如果输出向量寄存器413的确具有完整输出向量vD输出,则执行如下动作。
-向量存储单元412将输出向量寄存器413写到目的地地址。
-目的地地址指针由选择器控制单元402更新。
-如果块已经被完全拷贝、从块大小配置参数中导出,则内存到内存传输系统204完成可能向另一系统(诸如控制处理器(未示出))发信号通知其完成。如果块尚未完全拷贝,则过程从加载并且可能缓冲部分长位图阵列重复上面提到的动作。
除了上面提到的一般优点,第四类型的一些实施例还具有如下优点:用于将选择的数据元素拷贝在块中的内存到内存传输系统204(例如DMA单元)的基于位图的配置具有非常低的开销。开销在配置所需的内存区域方面和为了控制配置所浪费的时间方面都是低的。
扩展
本文描述的一些实施例可包括一个或多个如下扩展。
扩展1:可配置的字大小
位图bit_map是布尔向量,指示对于输入向量vA中的每个字(即每个数据元素),是否必须选择该字(即数据元素)。对于每个输入向量vA某个数量的物理字(即具有W位字大小的P个字),设计选择器数据路径电路406。在一些实施例中,有可能通过将顺序物理字分组来将选择器控制单元402扩展成支持更大大小的逻辑字。例如,可构造物理字大小W'=2W、W"=4W等的逻辑字。位图配置选择某个大小的逻辑字,而非由选择器电路确定的大小的物理字。从而,对于更大字大小,可降低加载位图的成本(即与消耗处理器周期和内存带宽相关的性能和能量上的成本)以及位图所需的存储空间。
扩展2:固定点格式压缩和固定点格式解压
存在用于字的固定点格式的组合选择和压缩或组合选择和解压的情况。LTE的重要情况是32位字(实际上是复杂格式16+16位)到24位字(12+12位)的转换,并且反之亦然。所需的系统将具有8位字选择器电路以及在它前面/后面的解压/压缩复用器电路(图4中未示出)。选择32位输入字(它们被压缩到24位)只是意味着,选择器数据路径电路406的输入(即来自压缩电路的输出)的每个第四字节被丢弃。
扩展3:用解释进行位图预提取
如果存在属于输入向量vA的P个后续零,则位图加载单元408可配置成预提取和解释长位图部分,并将跳过长位图的部分。然后,没有必要加载输入向量vA。
这个扩展对于上面描述的第三类型和第四类型实施例是相关的。
扩展4:周期性位图配置
对于周期性位图,其例如对于LTE资源元素扩展是共同的,可能与某个资源块级掩码组合,拼出整个位图可带来一些不必要开销。位图加载单元408可配置有基本位图模式(例如对于基本LTE资源块模式是12个布尔)、有关重复次数的信息(例如100个基本块的长度)可能还有块级掩码(例如有条件地选择/丢弃基本块的所有12个元素的100个布尔)。位图加载单元408可配置成对于选择器控制单元402生成加载的输入向量vA的P个字的布尔向量。
这个扩展对于上面描述的第三类型和第四类型的一些实施例可能是相关的。
如之前所提到的,本文的实施例的确还涉及上面描述的包括元素选择单元200的加载和/或存储单元202、上面描述的包括元素选择单元200的内存到内存传输系统204、上面描述的包括元素选择单元200的向量处理器206、包括向量处理器206的集成电路208以及包括集成电路208的通信装置210。
通信装置210可以是移动终端或无线终端、移动电话、计算机(诸如例如膝上型计算机)、平板计算机(诸如例如iPad™)、个人数字助理(PDA),或能够通过无线电链路在蜂窝通信网络中通信的任何其它无线电网络单元。
进一步说,本文的实施例还涉及具有用于执行本文描述的一个或多个动作和/或实现一个或多个特征的程序代码部分的计算程序产品。
尽管上面的描述含有许多特定细节,但是它们不应被视为限制,而只是提供一些目前优选实施例的图示。该技术完全涵盖对本领域技术人员可变得显而易见的其它实施例。提到“单数”的元素不意图是指“一个且仅一个”,除非如此明确声明,否则是指“一个或多个”。本领域普通技术人员已知的上述实施例的元素的所有结构和功能等同物都通过参考都明确结合于本文中,并且意图由此涵盖。此外,装置或方法不因为它由此涵盖而必定解决所描述技术要试图解决的每个问题。
当使用词语“包括”时,它将被解释为非限制性的,意思是是“至少由…组成”。
当使用词语“动作/多个动作”时,它将被广义解释,而非暗示动作必须按所提到的次序执行。而是,动作可按与所提到的次序不同的任何适当次序执行。进一步说,某个动作/某些动作可以是可选的。
本文的实施例不限于上面描述的示例。可使用各种备选、修改和等同物。因此,以上示例不应被视为限制本发明的范围,本发明的范围由所附权利要求书定义。