一种并行向量查表方法及装置制造方法
【专利摘要】本发明公开了一种并行向量查表方法,包括:从待查索引向量寄存器中获得待查索引数据,将其分为高位部分和低位部分,并将高位部分发送给结果归并状态控制模块,低位部分发送给交织模块;表项输入模块输入待查的所有表项,根据交织模块的大小将其划分为若干个数据包,分别发送到对应的交织模块;每个交织模块都根据待查索引数据的低位部分,从数据包中选择出一个输入表项作为查表可能结果表项;选择模块根据结果归并状态控制模块基于高位部分发送的控制信号,在选择结果中选择最终结果,并将最终结果存放在目的向量寄存器中。本发明的方法和装置能实现并行访问多组向量,降低查表操作次数,从而降低存储访问开销。
【专利说明】_种并行向量查表方法及装置
【技术领域】
[0001]本发明涉及向量型处理器设计领域,尤其涉及一种并行向量查表方法及装置。
【背景技术】
[0002]向量型处理器是针对阵列信号处理的处理器,应用于处理高密集型向量,其处理速度快,存储访问频繁,并且经常并行访问多组向量。为了方便开发向量处理器,能实现并行访问多组向量,可以并行完成同一张表中多个索引的查找,同时降低存储访问开销,需要设计一种向量处理器中的查表指令,并且设计实现该查表指令的执行装置。
【发明内容】
[0003]有鉴于此,本发明的主要目的之一在于提供一种并行向量查表方法及装置,以便向量处理器实现并行访问多组向量,降低存储访问开销。
[0004]为实现上述目的,作为本发明的一个方面,本发明提供了一种并行向量查表方法,包括以下步骤:
[0005]从并行向量查表指令的待查索引向量寄存器中获得待查索引数据,将所述待查索引数据分为高位部分和低位部分,并将所述高位部分发送给结果归并状态控制模块,所述低位部分发送给交织模块;
[0006]表项输入模块输入待查的所有表项,根据所述并行向量查表指令中的查表起始地址、查表长度和每个表项的大小,决定所述输入的所有表项的位置和总量,所述所有表项根据交织模块的大小被划分为若干个由对应某一交织模块处理的数据包,每个数据包都由一个或多个输入表项组成,所有的数据包都被分别发送到对应的交织模块;
[0007]所述每个交织模块都根据所述待查索引数据的低位部分,从来自表项输入模块的数据包中选择出一个输入表项作为查表可能结果的表项;
[0008]结果归并状态控制模块根据所述待查索引数据的高位部分,向选择模块发送选择查表结果的控制信号;
[0009]选择模块根据所述结果归并状态控制模块发送的所述控制信号,在所述选择结果中选择最终结果,并将所述最终结果存放在所述并行向量查表指令中的目的向量寄存器中。
[0010]其中,所述所有表项被划分为若干个数据包的步骤中,如果所述所有表项的个数能够被数据包的个数整除,则所述所有表项被均匀划分为若干个数据包。
[0011]其中,所述若干个交织模块的个数为4的正整数倍。
[0012]其中,所述所有表项被划分为若干个数据包的步骤中,如果所述数据包的个数多于交织模块的个数,则会分多次将所述数据包发送到所述交织模块。
[0013]其中,所述的若干个交织模块选择输出的所述查表可能结果的表项先存储在存储部件中,所述选择模块在所述存储部件存储的所述选择结果中选择最终结果。
[0014]作为本发明的另一个方面,本发明还提供了一种并行向量查表装置,包括:
[0015]索引分解模块,用于从并行向量查表指令的待查索引向量寄存器中获得索引数据,将所述待查索引数据分为高位部分和低位部分,并将所述高位部分发送给结果归并状态控制模块,所述低位部分发送给交织模块;
[0016]表项输入模块,用于输入待查的所有表项,所述表项输入模块根据所述并行向量查表指令中的查表起始地址、查表长度和每个表项的大小,决定输入数据的位置和总量,并根据交织模块的大小将所述输入的所有表项划分为若干个对应某一交织模块处理的数据包,每个数据包都由一个或多个输入表项组成,所有的数据包都被分别发送到对应的交织丰吴块;
[0017]若干个交织模块,每一个交织模块都根据所述待查索引数据的低位部分在所述数据包中选择出一个查表可能结果的表项;
[0018]结果归并状态控制模块,根据所述待查索引数据的高位部分,发送控制选择模块输出查表结果的控制信号。
[0019]若干个选择模块,根据所述结果归并状态控制模块的控制信号,在所述若干个交织模块选择的表项结果中选择最终结果并将所述最终结果输出,输出的表项存放在查表指令中的目的向量寄存器中。
[0020]其中,所述表项输入模块中,如果所述所有表项的个数能够被待分成的数据包的个数整除,则所述所有表项被均匀划分为若干个数据包。
[0021]其中,所述若干个交织模块的个数为4的正整数倍。
[0022]其中,所述表项输入模块中,如果所述待分成的数据包的个数多于所述交织模块的个数,则会分多次将所述数据包发送到所述交织模块。
[0023]所述并行向量查表装置还包括存储部件,所述若干个交织模块选择输出的所述查表可能结果的表项先存储在所述存储部件中,所述选择模块在所述存储部件存储的所述选择结果中选择最终结果。
[0024]基于上述技术方案可知,本发明的并行向量查表方法和装置能够实现并行访问多组向量,索引数据量很大时,并行查表方法可以降低查表操作次数,从而降低存储访问开销。
【专利附图】
【附图说明】
[0025]图1是本发明的并行向量查表装置的结构示意图;
[0026]图2是本发明中交织模块输入、输出及序号示意图;
[0027]图3是本发明的存储部件中4个数据存储分布示意图;
[0028]图4是本发明的存储部件中8个数据存储分布示意图。
【具体实施方式】
[0029]为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明作进一步的详细说明。
[0030]本发明公开了一种并行向量查表方法及装置,为此专门设计了一套并行向量查表指令,包括:
[0031]一个存储待查表起始地址的寄存器号,用于存放待查表中表项的开始位置;
[0032]一个存储表长的寄存器号,用于存放待查表的长度;
[0033]一个存放标示表项大小信息的寄存器号,用于获得查表时每个表项的大小,如字节、半字、字等;
[0034]一个待查索引向量寄存器号,用于配置待查索引数据;
[0035]一个目的向量寄存器号,用于存放查表后的结果。
[0036]采用该并行向量查表指令,本发明的并行向量查表方法,包括以下步骤:
[0037]索引分解模块从并行向量查表指令的待查索引向量寄存器中获得待查索引数据,将所述待查索引数据分为高位部分和低位部分,并将所述高位部分发送给结果归并状态控制模块,所述低位部分发送给交织模块;
[0038]表项输入模块输入待查的所有待查表项,根据所述并行向量查表指令中的查表起始地址、查表长度和每个表项的大小,决定所述输入的所有表项的位置和总量。所有表项的总数据根据交织模块的大小被划分为若干个数据包,每个数据包都由一个或多个输入表项组成,所有的数据包都被分别对应发送到每个交织模块;
[0039]所述每个交织模块都根据所述待查索引数据的低位部分,从来自表项输入模块的数据包中选择出一个输入表项作为查表结果可能的表项,并将选择结果存储在存储部件;
[0040]结果归并状态控制模块根据所述待查索引数据的高位部分,向选择模块发送选择查表结果的控制信号;
[0041]选择模块根据所述结果归并状态控制模块的控制信号,在所述存储部件存储的所述选择结果中选择最终结果,并将所述最终结果存放在所述并行向量查表指令中的目的向量寄存器中。
[0042]其中,所有表项的总数据根据交织模块的大小划分为若干个数据包的方法如下:以X个N位的交织模块为例,所有表项的总数据量被划分为若干个N位的数据包,每个数据包都包含多个表项,如果这些数据包的数量多于交织模块的个数X,则会分多次发送到交织模块。划分的数据包的个数可以为任意的自然数,例如3、4、5、6、……,从提高处理器运算效率的角度看,优选为4的倍数,例如4、8、12……。
[0043]为执行本发明提出的并行向量查表方法,本发明还公开了一种并行向量查表装置,包括:
[0044]索引分解模块,用于从并行向量查表指令的待查索引向量寄存器中获得索引数据,将所述待查索引数据分为高位部分和低位部分,并将所述高位部分发送给结果归并状态控制模块,所述低位部分发送给交织模块;
[0045]表项输入模块,用于输入待查的所有表项,该模块是根据并行向量查表指令中查表起始地址、查表长度和每个表项的大小,决定输入数据的位置和总量;
[0046]若干个交织模块,每一个交织模块都根据待查索引数据的低位部分选择出一个可能作为查表结果的表项;
[0047]存储部件,用于存放所述交织模块选择出的所有表项。
[0048]结果归并状态控制模块,根据待查索引数据的高位部分,发送控制选择模块输出查表结果的控制信号。
[0049]若干个选择模块,根据结果归并状态控制模块的控制信号,选择来自存储部件的表项并将选择的表项输出,输出的表项存放在查表指令中的目的向量寄存器中。
[0050]按照本发明方法及装置实现的并行向量查表指令,只需配置待查所有表项的起始地址、长度、每个表项的大小,根据索引向量寄存器里的待查索引数据,即可实现查表操作。
[0051]下面通过具体实施例对本发明做进一步的阐述。
[0052]本发明公开了一种并行向量查表装置,以4个512位的交织模块搭建为例,来阐述该装置的工作过程,图1示出了该装置的结构示意图。如图1所示,该装置包括:索引分解模块101、表项输入模块102、交织模块部件103、存储部件104、结果归并状态控制模块105和选择模块106。其中,交织模块部件103由4个交织模块107、108、109和110组成。
[0053]以查表索引数据11010110对64个32位的表项查表为例阐述。
[0054]首先,64个32位的表项被分成4组,每组16个表项共512位的数据,表项输入模块102将每个512位的数据顺序输入,并按序号分配到4个交织模块107-110上。同时索引分解模块101将查表索引数据分为低位部分和高位部分,并将低位部分发送到交织模块部件103的每一个交织模块上,高位部分被发送到结果归并状态控制模块105,由于每个交织模块都有16个表项输入,所以索引数据低位部分是4位,索引数据的其余4位为高位部分。
[0055]然后,每一个交织模块根据索引数据的4位低位部分编码,将512位的数据选择出一个32位的数据作为可能的索引结果存储到存储部件104。交织模块选择数据的过程如图2所示,一个交织模块输入16个32位的数据,由于索引数据的低位部分是0110,所以所有交织模块都选择出序号6的数据,共得到4个32位的数据作为可能的结果发送到存储部件104,存储分布如图3所示,图3中301、302、303、304是交织模块,305是存储部件104,存储部件被分为4块,序号为0-3,分别存放来自不同交织模块的数据。
[0056]之后,存储部件104将存储的4个32位数据发送到选择模块106。结果归并状态控制模块105根据索引数据的高位部分发送控制选择模块106的选择信号。由于选择模块只用从4个数据中选择,所以索引数据的高位部分只有01这两位有效,选择模块106根据选择信号,选择来自图3中序号I的数据作为结果输出,该输出是执行装置64个表项中的第23个表项,可见输出的结果是索引数据010110(十六进制16)所要索引的结果表项。
[0057]下面再以查表索引数据11010110对128个32位的表项查表为例阐述本发明执行装置的工作。
[0058]首先,128个32位的表项被分成8组512位的数据输入到表项输入模块102,每组16个表项。8组512位数据中的前4组先按序号分配到4个交织模块107-110上。索引分解模块101将查表索引数据分为低位部分高位部分,并将低位部分发送到交织部件103的每一个交织模块上,高位部分被发送到结果归并状态控制模块105,由于每个交织模块都有16个表项输入,所以索引数据低位部分是4位,索引数据的其余4位为高位部分。
[0059]然后,每一个交织模块根据索引数据的4位低位部分编码0110,将如图2中的序号6的数据存储到存储部件104中。如图4所示存储分布,此时得到的4个32位的数据存储在存储部件序号为0-3的位置。
[0060]之后,交织部件103接收表项输入模块102的后4组512位数据,并按输入序号分配到每一个交织模块上。每一个交织模块再根据索引数据的4位低位部分编码0110,选择出32位数据存储到存储部件104,这次通过交织模块部件得到的4个数据存储在图4中序号4-7的位置,这样存储模块中共存有8个32位数据作为可能的查表结果。
[0061]最后,存储部件将存储的8个32位数据发送到选择模块106。结果归并状态控制模块105根据索引数据的高位部分发送控制选择模块106的选择信号。由于选择模块需要从8个数据中选择,所以索引数据的高位部分只有101这三位有效,选择模块106根据选择信号,选择来自图4中序号5的数据作为结果输出,该输出是执行装置128个表项中的第86个表项,可见输出的结果是索引数据1010110(十六进制56)所要索引的结果表项。
[0062]以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种并行向量查表方法,包括以下步骤: 从并行向量查表指令的待查索引向量寄存器中获得待查索引数据,将所述待查索引数据分为高位部分和低位部分,并将所述高位部分发送给结果归并状态控制模块,所述低位部分发送给交织模块; 表项输入模块输入待查的所有表项,根据所述并行向量查表指令中的查表起始地址、查表长度和每个表项的大小,决定所述输入的所有表项的位置和总量,所述所有表项根据交织模块的大小被划分为若干个由对应某一交织模块处理的数据包,每个数据包都由一个或多个输入表项组成,所有的数据包都被分别发送到对应的交织模块; 所述每个交织模块都根据所述待查索引数据的低位部分,从来自表项输入模块的数据包中选择出一个输入表项作为查表可能结果的表项; 结果归并状态控制模块根据所述待查索引数据的高位部分,向选择模块发送选择查表结果的控制信号; 选择模块根据所述结果归并状态控制模块发送的所述控制信号,在所述选择结果中选择最终结果,并将所述最终结果存放在所述并行向量查表指令中的目的向量寄存器中。
2.根据权利要求1所述的并行向量查表方法,其中所述所有表项被划分为若干个数据包的步骤中,如果所述所有表项的个数能够被数据包的个数整除,则所述所有表项被均匀划分为若干个数据包。
3.根据权利要求1所述的并行向量查表方法,其中所述若干个交织模块的个数为4的正整数倍。
4.根据权利要求1所述的并行向量查表方法,其中所述所有表项被划分为若干个数据包的步骤中,如果所述数据包的个数多于交织模块的个数,则会分多次将所述数据包发送到所述交织模块。
5.根据权利要求1所述的并行向量查表方法,其中所述的若干个交织模块选择输出的所述查表可能结果的表项先存储在存储部件中,所述选择模块在所述存储部件存储的所述选择结果中选择最终结果。
6.一种并行向量查表装置,包括: 索引分解模块,用于从并行向量查表指令的待查索引向量寄存器中获得索引数据,将所述待查索引数据分为高位部分和低位部分,并将所述高位部分发送给结果归并状态控制模块,所述低位部分发送给交织模块; 表项输入模块,用于输入待查的所有表项,所述表项输入模块根据所述并行向量查表指令中的查表起始地址、查表长度和每个表项的大小,决定输入数据的位置和总量,并根据交织模块的大小将所述输入的所有表项划分为若干个对应某一交织模块处理的数据包,每个数据包都由一个或多个输入表项组成,所有的数据包都被分别发送到对应的交织模块; 若干个交织模块,每一个交织模块都根据所述待查索引数据的低位部分在所述数据包中选择出一个查表可能结果的表项; 结果归并状态控制模块,根据所述待查索引数据的高位部分,发送控制选择模块输出查表结果的控制信号。 若干个选择模块,根据所述结果归并状态控制模块的控制信号,在所述若干个交织模块选择的表项结果中选择最终结果并将所述最终结果输出,输出的表项存放在查表指令中的目的向量寄存器中。
7.根据权利要求6所述的并行向量查表装置,其中所述表项输入模块中,如果所述所有表项的个数能够被待分成的数据包的个数整除,则所述所有表项被均匀划分为若干个数据包。
8.根据权利要求6所述的并行向量查表装置,其中所述若干个交织模块的个数为4的正整数倍。
9.根据权利要求6所述的并行向量查表装置,其中所述表项输入模块中,如果所述待分成的数据包的个数多于所述交织模块的个数,则会分多次将所述数据包发送到所述交织模块。
10.根据权利要求6所述的并行向量查表装置,还包括存储部件,所述若干个交织模块选择输出的所述查表可能结果的表项先存储在所述存储部件中,所述选择模块在所述存储部件存储的所述选择结果中选择最终结果。
【文档编号】G06F17/30GK104504126SQ201410852690
【公开日】2015年4月8日 申请日期:2014年12月31日 优先权日:2014年12月31日
【发明者】王磊, 王惠娟, 朱梦晨, 谢少林 申请人:中国科学院自动化研究所