CN115765750A - 数据循环移位方法和电路、以及芯片 - Google Patents
数据循环移位方法和电路、以及芯片 Download PDFInfo
- Publication number
- CN115765750A CN115765750A CN202310024276.2A CN202310024276A CN115765750A CN 115765750 A CN115765750 A CN 115765750A CN 202310024276 A CN202310024276 A CN 202310024276A CN 115765750 A CN115765750 A CN 115765750A
- Authority
- CN
- China
- Prior art keywords
- data
- sequence
- unit
- data sequence
- shift
- 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.)
- Granted
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本公开涉及集成电路领域。具体地,本公开提供了一种数据循环移位方法,所述方法包括根据待移位数据的并行度将其分成多个数据序列,对多个数据序列进行粗略移位以得到相应的粗略移位数据序列,基于粗略移位数据序列获得精细移位结果,以生成移位后数据。本公开还涉及应用了该数据循环移位方法的数据循环移位电路,以及包括该数据循环移位电路的芯片。根据本公开的技术方案在进行数据循环移位操作时,能够节省资源以及极大地降低电路的翻转,从而降低循环移位操作的功耗,并且还可以降低后续计算处理所需的并行度及资源。
Description
技术领域
本公开涉及集成电路技术领域,特别涉及一种数据循环移位方法和电路,以及还涉及一种包括该电路的芯片。
背景技术
目前,在很多芯片设计中常常会对大位宽的时分数据进行缓存和循环移位操作。数据循环移位操作是指这样的一种操作,即将从待移位数据一端移出的单元数据按照先后顺序依次从待移位数据的另一端移入,从而得到移位后数据。这种操作是芯片设计中用于对数据进行处理的一种常见操作。
在相关技术中,一般通过将存储待移位数据的各个存储单元按照移位方向逐一进行数据的读取和写入的方式来实现数据的循环移位。然而,这种数据循环移位操作需要耗费大量的缓存来存储单元数据,并且每个存储单元被频繁翻转,导致具有较高的翻转率、较低的运算效率。在处理较大的数据时,这些问题尤其明显。
发明内容
鉴于此,本公开提供了一种数据循环移位方法和电路,以及还提供了包括该电路的芯片,期望消除或克服上面提到的部分或全部缺陷以及其他可能的缺陷。
根本公开的第一方面,提供了一种数据循环移位方法,其包括:按照待移位数据中各个单元数据的排序,将所述待移位数据分成m个数据序列,每个数据序列包括n个单元数据,其中,m和n都为大于0的整数,并且m和n不同时为1;根据预设移位值从所述m个数据序列中确定参考数据序列,其中,所述参考数据序列包括与移位后数据中第一个单元数据对应的单元数据;根据所述参考数据序列,利用所述m个数据序列生成粗略移位数据阵列,所述粗略移位数据阵列包括m个粗略移位数据序列,每一个粗略移位数据序列包括2n个单元数据;按照所述粗略移位数据阵列中各粗略移位数据序列的增序,从每一个粗略移位数据序列中选择n个单元数据并依序进行拼接,生成所述移位后数据。
根据本公开的一些示例性实施例,所述根据所述参考数据序列,利用所述m个数据序列生成粗略移位数据阵列包括:从所述m个数据序列中每次选择n个单元数据作为基础数据序列,其中,从选择所述参考数据序列的n个单元数据开始,按照所述m个数据序列的增序和各个数据序列中单元数据的增序以遍历的方式每次选择n个单元数据作为所述基础数据序列,并且在遍历到第m个数据序列中的最后一个单元数据后,从第一个数据序列的第一个单元数据继续依序遍历,直到所述基础数据序列再次包括所述参考数据序列中的最后一个单元数据为止;从第二次确定的所述基础数据序列开始,响应于当前确定的基础数据序列,将所述当前确定的基础数据序列中的第一个单元数据直接排序在前一次确定的基础数据序列的最后一个单元数据后面,以生成包括2n个单元数据的粗略移位数据序列。
根据本公开的一些示例性实施例,所述按照待移位数据中各个单元数据的排序,将所述待移位数据分成m个数据序列,每个数据序列包括n个单元数据包括:响应于所述待移位数据的最后一个单元数据的序号小于n×m,将所述待移位数据的最后一个单元数据确定为第m个数据序列中的第k个单元数据,其中,k为大于或等于1并且小于n的整数;将第一个数据序列中的第一个单元数据至第(n-k)个单元数据的内容分别对应地写入到第m个数据序列中的第(k+1)个单元数据至第n个单元数据中。并且所述按照所述粗略移位数据阵列中各粗略移位数据序列的增序,从每一个粗略移位数据序列中选择n个单元数据并依序进行拼接,生成所述移位后数据包括:从排序在最后的粗略移位数据序列中选择的n个单元数据中去除第(k+1)个单元数据至第n个单元数据。
根据本公开的一些示例性实施例,所述按照待移位数据中各个单元数据的排序,将所述待移位数据分成m个数据序列,每个数据序列包括n个单元数据包括:响应于所述待移位数据的最后一个单元数据的序号等于n×m,将所述待移位数据的最后一个单元数据确定为第m个数据序列中的第n个单元数据;所述根据所述参考数据序列,利用所述m个数据序列生成粗略移位数据阵列包括:从所述m个数据序列中每次选择n个单元数据作为基础数据序列,其中,从选择所述参考数据序列作为所述基础数据序列开始,按照所述m个数据序列的增序以遍历的方式每次选择一个数据序列作为所述基础数据序列,并且在遍历到第m个数据序列后,从第一个数据序列继续依序遍历,直到所述基础数据序列再次包括所述参考数据序列为止;从第二次确定的所述基础数据序列开始,响应于当前确定的基础数据序列,将所述当前确定的基础数据序列中的第一个单元数据直接排序在前一次确定的基础数据序列的最后一个单元数据后面,以生成包括2n个单元数据的粗略移位数据序列。
根据本公开的一些示例性实施例,所述根据预设移位值从所述m个数据序列中确定参考数据序列包括:用所述预设移位值除以每个数据序列包括的单元数据的数量n得到商,将所述m个数据序列中序号比所述商大1的数据序列确定为所述参考数据序列。
根据本公开的一些示例性实施例,所述根据预设移位值从所述m个数据序列中确定参考数据序列包括:根据所述预设移位值,从所述待移位数据中确定参考单元数据,其中,所述参考单元数据对应于所述移位后数据中的第一个单元数据;将包括所述参考单元数据的数据序列作为参考数据序列。
根据本公开的一些示例性实施例,所述按照所述粗略移位数据阵列中各粗略移位数据序列的增序,从每一个粗略移位数据序列中选择n个单元数据并依序进行拼接,生成所述移位后数据包括:根据所述参考单元数据在所述参考数据序列中的序号,从每一个粗略移位数据序列中确定具有相同序号的起始单元数据;在每一个粗略移位数据序列中选择从所述起始单元数据开始并且序号递增的n个单元数据。
根据本公开的一些示例性实施例,所述按照所述粗略移位数据阵列中各粗略移位数据序列的增序,从每一个粗略移位数据序列中选择n个单元数据依序进行拼接,生成所述移位后数据包括:用所述预设移位值除以n,将得到的余数作为偏移值;在每一个粗略移位数据序列中,将序号比所述偏移值大1的单元数据确定为起始单元数据;在每一个粗略移位数据序列中选择从所述起始单元数据开始并且序号递增的n个单元数据。
根据本公开的一些示例性实施例,所述数据循环移位方法还包括:所述m个数据序列中除所述参考数据序列之外的m-1个数据序列中的至少一个数据序列,在所包括的单元数据已经被遍历地选择以生成所述基础数据序列后,被独立地以新的单元数据进行更新。
根据本公开的一些示例性实施例,每个数据序列的n个单元数据被同时写入或读取。
根据本公开的第二个方面,提供了一种数据循环移位电路,其包括:待移位数据处理电路、粗略移位数据阵列生成电路和移位后数据生成电路。待移位数据处理电路被配置成:按照待移位数据中各个单元数据的排序,将所述待移位数据分成m个数据序列,每个数据序列包括n个单元数据,其中,m和n都为大于0的整数,并且m和n不同时为1;根据预设移位值,从所述m个数据序列中确定参考数据序列,其中,所述参考数据序列包括与移位后数据中第一个单元数据对应的单元数据。粗略移位数据阵列生成电路被配置成:根据所述参考数据序列,利用所述m个数据序列生成粗略移位数据阵列,所述粗略移位数据阵列包括m个粗略移位数据序列,每一个粗略移位数据序列包括2n个单元数据。移位后数据生成电路被配置成:按照所述粗略移位数据阵列中各粗略移位数据序列的增序,从每一个粗略移位数据序列中选择n个单元数据依序进行拼接,生成所述移位后数据。
根据本公开的一些示例性实施例,所述待移位数据处理电路还被配置成:从所述m个数据序列中每次选择n个单元数据作为基础数据序列,其中,从选择所述参考数据序列的n个单元数据开始,按照所述m个数据序列的增序和各个数据序列中单元数据的增序以遍历的方式每次选择n个单元数据作为所述基础数据序列,并且在遍历到第m个数据序列中的最后一个单元数据后,从第一个数据序列的第一个单元数据继续依序遍历,直到所述基础数据序列再次包括所述参考数据序列中的最后一个单元数据为止;所述粗略移位数据序列生成电路还被配置成:接收所述基础数据序列,并且从第二次确定的所述基础数据序列开始,响应于当前确定的基础数据序列,将所述当前确定的基础数据序列中的第一个单元数据直接排序在前一次确定的基础数据序列的最后一个单元数据后面,以生成包括2n个单元数据的粗略移位数据序列。
根据本公开的一些示例性实施例,所述待移位数据处理电路包括存储器、控制器和第一选择器,其中,所述存储器、所述控制器和所述第一选择器彼此电连接。所述控制器被配置成:向所述存储器和所述第一选择器分别发送控制信号,以便控制所述存储器和所述第一选择器的操作。所述存储器包括至少m个存储空间,每个存储空间包括至少n个存储单元,对于每个存储空间,n个存储单元的内容能够被并行地写入或读出,并且所述存储器被配置成:响应于从所述控制器接收到的控制信号,将所接收的n个单元数据存储到所述m个存储空间中对应的n个存储单元中。所述第一选择器被配置成:响应于从所述控制器接收到的控制信号,从所述存储器的对应的存储空间中读取所存储的n个单元数据,并将所读取的n个单元数据输出为所述基础数据序列。
根据本公开的一些示例性实施例,所述存储器是寄存器或者静态随机存取存储器。
根据本公开的一些示例性实施例,所述存储器的每一个存储空间能够被独立地读写;所述存储器还被配置成:所述m个存储空间中,除保存有所述参考数据序列的存储空间之外的m-1个存储空间中的至少一个存储空间,响应于从所述控制器接收到的控制信号,在所存储的单元数据被所述第一选择器读取时,被写入新的单元数据。
根据本公开的一些示例性实施例,所述粗略移位数据序列生成电路包括:第一数据序列生成装置,其与所述第一选择器电连接,并且被配置成:从所述第一选择器接收所述基础数据序列,并将所接收的基础数据序列作为第一数据序列输出;第二数据序列生成装置,其与所述第一数据序列生成装置电连接,并且被配置成:从所述第一数据序列装置接收所述第一数据序列,并将所接收的第一数据序列作为第二数据序列输出;其中,所述第一数据序列和所述第二数据序列构成所述粗略移位数据序列。
根据本公开的一些示例性实施例,所述移位后数据生成电路包括第二选择器,所述第二选择器与所述第一数据序列生成装置和所述第二数据序列生成装置都电连接,并且被配置成:基于预设条件,从所述粗略移位数据序列中选择n个单元数据输出。
根据本公开的第三个方面,提供了一种芯片,其包括根据本公开的第二个方面及其各示例性实施例所述的数据循环移位电路。
附图说明
下面将参考附图来更详细地描述本公开的各实施例,附图中:
图1是示出了根据本公开的一些示例性实施例的数据循环移位方法的原理的示意图;
图2是示出了根据本公开的一些示例性实施例的数据循环移位方法的流程图;
图3是示出了根据本公开的另一些示例性实施例的数据循环位移方法的原理的示意图;
图4根据图3所示的原理,以流程图的形式示出了关于图1所示的方法的更多细节;
图5根据图3所示的原理,以流程图的形式示出了关于图1所示的方法的更多细节;
图6是示出了根据本公开的一些示例性实施例的数据循环移位电路的结构框图;
图7是示出了图6中的数据循环移位电路的结构的示意图;
图8是示出了根据本公开的一些示例性实施例的芯片的结构框图。
应理解的是,附图中显示的内容都仅仅是示意性的,因此,其不必按照比例进行绘制。此外,在全部附图中,相同或相似的特征由相同或相似的附图标记指示。
具体实施方式
下面将参考附图更全面地描述本公开的示例性实施例。应理解的是,示例性实施例能够以多种形式实施,因此,其不应被理解为仅限于在此阐述的实施例。对这些示例性实施例的描述将使本公开更为全面和完整,并将根据本公开的技术方案的构思全面地传达给本领域的技术人员。
在详细介绍本公开的实施例之前,首先对一些相关的概念进行解释,以便有助于对本公开的理解。
循环移位:在本公开中,该术语指的是这样的一种数据操作,即,数据在移位时不丢失从该数据的一端移出的各个位中的内容,而是将这些内容按照先后顺序作为数据的另一端的补入位的内容又依次补入该数据,从而生成移位后数据。例如,数据循环左移n位,指该数据的各个位左移n位,并且该数据原来位于左端的高n位相应地变成右端的低n位。再例如,二进制数据11010循环左移一位,移位后数据为10101。
单元数据:本公开中,该术语指的是数据中能够进行移位操作的最小单元。因此,多个单元数据一起构成了数据。相应地,一条数据所包括的各个单元数据的内容共同构成了该数据的内容。单元数据的内容可以是数字,作为非限制性示例,其可以是二进制数字0或1中的一个,也可以是一个十六进制的数字。本公开对单元数据的内容的具体形式不作任何限制。
数据序列:在本公开中,该术语指的是由至少两个单元数据按一定排序构成的序列。例如,在单元数据的内容为二进制数字0或1中的一个的情况下,一个数据序列可以是11010,其中,该数据序列包括5个单元数据。
参见图1,其示意性地示出了根据本公开的一些实施例的数据循环移位方法的原理。
在图1所示的实施例中,待移位数据由42个单元数据构成,其中,每个单元数据的内容可以是一个数字。为方便描述该实施例,下文中使用数字1-42指代构成该待移位数据的各个单元数据。
根据图1所示的数据循环移位方法的原理,按照待移位数据中各个单元数据的排序,将由单元数据1-42构成的待移位数据分成6个数据序列,每个数据序列包括7个单元数据,从而形成二维数据阵列101,其中,第一列包括单元数据1-7,第二列包括单元数据8-14,第三列包括单元数据15-21,第四列包括单元数据22-28,第五列包括单元数据29-35,第六列包括单元数据36-42。应理解的是,每个数据序列包括的单元数据的数量取决于能够被并行处理的单元数据的数量(即,数据的并行度)。例如,图1所示的实施例中,每个数据序列包括7个单元数据,表示能够被并行处理的单元数据的数量为7个。
在该实施例中,预设移位值可以被设置为向待移位数据的单元数据1的方向移6位。然而,应理解的是,预设移位值可以被设置为1-41中的任意一个值,本公开对此不作限制。根据本公开的循环移位方法的原理,可以从二维数据阵列101的各个数据序列中每次选择相邻的两个数据序列来获得一个粗略移位数据序列,再从该粗略移位数据序列中选择相应的单元数据作为移位后数据中的单元数据,然后重复上述过程,直到完成对待移位数据的移位操作,具体如下。
根据预设移位值为6,可以确定移位后数据的第1个单元数据是待移位数据中的单元数据7,因此,包括单元数据7的第1个数据序列可以被确定为参考数据序列。按照6个数据序列的增序和各个数据序列中单元数据的增序,选择第2个数据序列,将第2个数据序列与参考数据序列(即,第1个数据序列)拼接,生成粗略移位数据序列1-14。然后确定下一个粗略移位数据序列,同样按照6个数据序列的增序和各个数据序列中单元数据的增序,选择与第2个数据序列相邻的第3个数据序列,将第3个数据序列与第2个数据序列拼接生成粗略移位数据序列8-21。这样依次生成各个粗略移位数据序列,形成二维数据阵列102,其中每个数据序列被选择两次,阵列大小为14行6列。
接下来仅需要根据预设移位值来从各个粗略移位数据序列选择单元数据,就可以直接得到移位后数据。因为预设移位值是6,所以只需要将二维数据阵列102中各粗略移位数据序列位于实线103和实线104之间的单元数据输出即可得到移位后数据105,可以依次输出单元数据7-13、14-20、21-27、28-34、35-41及42和1-6。
应理解的是,在图1所示的实施例中,二维数据阵列102仅仅是为了对本公开的数据循环移位方法的原理进行说明而示出的,其并不意味着各粗略移位数据序列必须先构成二维数据阵列,然后再生成移位后数据。实际上,在每次生成一个粗略移位数据序列后,就可以从该粗略移位数据序列中选择对应的单元数据作为移位后数据中相应的单元数据并输出,随后生成新的粗略移位数据序列,然后继续从新生成的粗略移位数据序列中选择对应的单元数据作为移位后数据中相应的单元数据(例如,与先前得到的单元数据进行拼接)并输出。如此重复,直到完成对待移位数据的移位操作。关于这一点,下文中将会进行详细的描述。
从该原理中可以看出,本公开的方法可以以数据序列为处理单元,因此数据处理的并行度高,每次操作仅需对两个数据序列进行操作,因此需要缓存的数据量较小,并且在生成粗略移位数据序列以及生成移位后数据中相应的单元数据的同时,待移位数据中已经被使用的部分数据序列可以被更新,由此,在对多个数据进行移位处理的情形中能够提升处理的效率。
此外,应理解的是,对于向待移位数据的最后一个单元数据的方向进行移位的情况,其可以转换成向待移位数据的第一个单元数据的方向进行移位的情况来实现。例如,待移位数据包括单元数据1-42,因此,向待移位数据的单元数据42的方向移1位的情况可以转换成向待移位数据的单元数据1的方向移41位的情形,然后,可以根据本公开的数据循环移位方法的原理来实现。
参见图2,其示意性示出了根据本公开的一些实施例的数据循环移位方法。如图2所示,数据循环移位方法200包括步骤S201-S204。
在步骤S201,按照待移位数据中各个单元数据的排序,将所述待移位数据分成m个数据序列,每个数据序列包括n个单元数据,其中,m和n都为大于0的整数,并且m和n不同时为1。在各个数据序列中,各个单元数据之间的相邻关系保持不变,与在待移位数据中的相邻关系保持一致。例如,在图1所示的实施例中,第1个数据序列的单元数据是1、2、3、4、5、6、7,而不能是1、2、3、5、4、6、7。在相邻序号的数据序列中,在前数据序列的最后一个单元数据与在后数据序列的第1个单元数据,这两个单元数据在待移位数据中也是相邻关系。例如,在图1所示的实施例中,第1个数据序列的最后一个单元数据是单元数据7,第2个数据序列的第1个单元数据是单元数据8,这两个单元数据在待移位数据中也是相邻关系。
例如,可以将待移位数据划分成如图1中所示的二维数据阵列101,从而可以以数据序列为单元来进行处理,由此能够充分利用数据的并行度,以提高运算效率。
在步骤S202,根据预设移位值从所述m个数据序列中确定参考数据序列,其中,所述参考数据序列包括与移位后数据中第一个单元数据对应的单元数据。因此,参考数据序列是m个数据序列中的一个数据序列,其包括与移位后数据中的第一个单元数据对应的单元数据。
在步骤S203,根据所述参考数据序列,利用所述m个数据序列生成粗略移位数据阵列,所述粗略移位数据阵列包括m个粗略移位数据序列,每一个粗略移位数据序列包括2n个单元数据。
在本公开的一些示例性实施例中,步骤S203可进一步包括:从步骤S202中确定的参考数据序列被作为基础数据序列输出开始,按照所述m个数据序列的增序和各个数据序列中单元数据的增序以遍历的方式每次选择n个单元数据作为所述基础数据序列,并且在遍历到第m个数据序列中的最后一个单元数据后,从第一个数据序列的第一个单元数据继续依序遍历,直到所述基础数据序列再次包括所述参考数据序列中的最后一个单元数据为止;以及,从第二次确定的所述基础数据序列开始,响应于当前确定的基础数据序列,将所述当前确定的基础数据序列中的第一个单元数据直接排序在前一次确定的基础数据序列的最后一个单元数据后面,以生成包括2n个单元数据的粗略移位数据序列。应理解的是,上述遍历方式既适用于待移位数据的单元数据正好能够被划分为m个数据序列的情形,也适用于待移位数据的单元数据不能被正好划分为m个数据序列的情形。下文中将对此进行详细描述。
在本公开的另一些示例性实施例中,在步骤S201中,可以响应于所述待移位数据的最后一个单元数据的序号等于n×m,将所述待移位数据的最后一个单元数据确定为第m个数据序列中的第n个单元数据。在这种情形中,步骤S203可以进一步包括:从所述m个数据序列中每次选择n个单元数据作为基础数据序列,其中,从选择所述参考数据序列作为所述基础数据序列开始,按照所述m个数据序列的增序以遍历的方式每次选择一个数据序列作为所述基础数据序列,并且在遍历到第m个数据序列后,从第一个数据序列继续依序遍历,直到所述基础数据序列再次包括所述参考数据序列为止;以及,从第二次确定的所述基础数据序列开始,响应于当前确定的基础数据序列,将所述当前确定的基础数据序列中的第一个单元数据直接排序在前一次确定的基础数据序列的最后一个单元数据后面,以生成包括2n个单元数据的粗略移位数据序列。
以图1中示出的由42个单元数据构成的待移位数据为例,假定预设移位值为6,所以第1个数据序列为参考数据序列,单元数据1-7作为基础数据序列输出;接着,按照6个数据序列的增序和各个数据序列中单元数据的增序,从第2个数据序列中的单元数据8开始遍历,即获取第2个数据序列作为基础数据序列,此时单元数据8-14构成的数据序列是输出数据阵列;然后从第3个数据序列中的单元数据15开始遍历,即单元数据15-21作为基础数据序列;重复上述过程,当获取到第6个数据序列时,遍历到了单元数据42,此时单元数据36-42构成的数据序列是基础数据阵列;再然后又从第1个数据序列开始遍历,此时遍历到单元数据7,因此单元数据1-7构成的数据序列是输出数据阵列。由于单元数据7是参考单元数据的最后一个单元数据,且已经被输出一次,因此在单元数据1-7被再次选择并输出后,输出终止。此外,从第二次确定的基础数据序列开始,响应于当前确定的基础数据序列,将当前确定的基础数据序列中的第一个单元数据直接排序在前一次确定的基础数据序列的最后一个单元数据后面,以生成包括14个单元数据的粗略移位数据序列。
步骤S203为生成粗略移位数据序列的步骤。因为将当前接收的基础数据序列中的第一个单元数据直接排序在前一次接收的基础数据序列的最后一个单元数据后面,所以每个基础数据序列实际上总共被拼接了两次,一次是在所得到的粗略移位数据序列的前部,一次是在所得到的粗略移位数据序列的后部。如图1所示的二维数据阵列102中,第2次输出的基础数据序列是第2个数据序列,并且第2个数据序列分别出现在第1个粗略移位数据序列和第2个粗略移位数据序列中,因此总共被拼接了两次。
在步骤S204,按照所述粗略移位数据阵列中各粗略移位数据序列的增序,从每一个粗略移位数据序列中选择n个单元数据并依序进行拼接,生成所述移位后数据。也就是说,在各个粗略移位数据序列组成的二维数据阵列中,可以基于由预设移位值得到的预设条件获得一个子阵列,该子阵列包括了移位后数据所对应的单元数据。因此,数据循环移位方法200可以显著降低翻转率。
在根据本公开一些实施例的数据循环移位方法中,将待移位数据预处理成各自均包括n个单元数据的多个数据序列,n为待移位数据的并行度(应理解的是,在本公开中,术语“并行度”是指能够并行传输、写入和读取的单元数据的数量),由此,这可以将后续对单元数据的处理实现为对数据序列的处理和对数据序列中的单元数据的处理两个层面,因此可以显著降低存储单元的翻转率,从而提高运算效率。此外,在确定参考数据序列后,通过按照数据序列的增序以遍历的形式来选择数据序列,并通过将当前确定的基础数据序列中的第一个单元数据直接排序在前一次确定的基础数据序列的最后一个单元数据后面来生成粗略移位数据序列。由于这些处理步骤使得各粗略移位数据序列正好分别包括移位后数据中n个连续的单元数据,从而可以根据粗略移位数据序列容易地确定移位后数据中的n个单元数据。
关于在步骤S202中如何确定参考数据序列,可以采用不同的方式。在一些实施例中,根据预设移位值从m个数据序列中确定参考数据序列的方式可以包括:用预设移位值除以每个数据序列包括的单元数据的数量n得到商,然后将m个数据序列中序号比该商大1的数据序列确定为参考数据序列。因为在各个数据序列中,各个单元数据之间的相邻关系保持不变,与在待移位数据中的相邻关系保持一致,并且在相邻序号的数据序列中,在前数据序列的最后一个单元数据与在后数据序列的第1个单元数据在待移位数据中也是相邻关系,所以可以直接根据预设移位值和每个数据序列包括的单元数据的数量来推算参考数据序列的序号。以图1所示的待移位数据为例,若预设移位值为6,并且每个数据序列包括的单元数据的数量为7,则可以将包括单元数据1-7的第1个数据序列确定为参考数据序列。
在一些替代实施例中,根据预设移位值从m个数据序列中确定参考数据序列的方式可以包括:根据预设移位值,从待移位数据中确定参考单元数据,其中,参考单元数据对应于移位后数据中的第一个单元数据;将包括参考单元数据的数据序列作为参考数据序列。采用上述方式的依据在于:在待移位数据被分成m个数据序列,每个数据序列包括n个单元数据之后,待移位数据的各单元数据处于哪一个数据序列中的哪个位置就已经被确定;因此,关于这些单元数据相对于m个数据序列的位置的信息可以被保存,使得基于一个单元数据在待移位数据中的排序,能够以例如检索的方式直接确定该单元数据在m个数据序列中处于哪一个数据序列中的哪一个位置。因此,通过预设移位值从待移位数据中确定参考单元数据后,能够从m个数据序列中确定对应的参考数据序列。
在可以检索到参考单元数据在m个数据序列中处于哪一个数据序列中的哪一个位置的实施例中,步骤S204可以包括:根据参考单元数据在参考数据序列中的序号,从每一次生成的粗略移位数据序列中确定具有相同序号的起始单元数据;在每一次生成的粗略移位数据序列中选择从该起始单元数据开始并且序号递增的n个单元数据;以及,基于各次选择的n个单元数据生成所述移位后数据。
在根据本公开的数据循环移位方法所得到的粗略移位数据序列中,参考单元数据在参考数据序列中的序号与起始单元数据在粗略移位数据序列中的序号相同。如图1中的实线103和实线104所示,因为预设移位值为6,所以参考单元数据是单元数据7,其在第1个数据序列中的序号为7,可确定起始单元数据在粗略移位数据序列中的序号也是7,因此,需要从各个粗略移位数据序列的第7个单元数据开始选择,到第13个单元数据结束选择。这对于从粗略移位数据序列中获得移位后数据是极为方便的,因为无需过多的数据处理和翻转就可以直接得到移位后数据。
在不能检索单元数据的位置的实施例中,步骤S204可以包括:用预设移位值除以n,将得到的余数作为偏移值;在每一次生成的粗略移位数据序列中,将序号比所述偏移值大1的单元数据确定为起始单元数据;在每一次生成的粗略移位数据序列中选择从起始单元数据开始并且序号递增的n个单元数据;基于各次选择的n个单元数据来生成移位后数据。在各个数据序列中,各个单元数据之间的相邻关系保持不变,与在待移位数据中的相邻关系保持一致,并且在相邻序号的数据序列中,在前数据序列的最后一个单元数据与在后数据序列的第1个单元数据在待移位数据中也是相邻关系,所以,可以根据预设移位值和每个数据序列具有的单元数据的数量来推算用于从粗略移位数据序列选择n个单元数据的起始位置(即,确定偏移值)。以图1的实施例为例,预设移位值为6,每个数据序列具有的单元数据的数量为7,用6除以7,余数为6,所以在从各个粗略移位数据序列选择7个单元数据时,先确定起始单元数据为粗略移位数据序列中的单元数据7,然后利用各个单元数据之间的相邻关系一致的特点,选择序号递增的7个单元数据即可。应理解的是,还可以有其他选择方式,例如可以根据偏移值p确定起始单元数据为该粗略移位数据序列的第p+1个单元数据,其中p为整数且0≤p<n,由于每个粗略移位数据序列均包括2n个单元数据,所以末尾单元数据为该粗略移位数据序列的第p+n个单元数据,那么该粗略移位数据序列的第p+1到p+n个单元数据为所要选择的n个单元数据。
此外,在根据本公开的一些实施例的数据循环移位方法中,待移位数据包括的单元数据的数量与数据序列的数量m和各数据序列包括的单元数据的数量n之间存在以下两种可能的情形。
第一种可能的情形是待移位数据包括的单元数据的数量等于数据序列的数量m和各数据序列具有的单元数据的数量n之积。针对这种情形,步骤S201可以包括:当待移位数据的最后一个单元数据的序号等于m×n时,将待移位数据的最后一个单元数据确定为第m个数据序列中的最后一个单元数据。图1中的实施例即为这种情形。进一步地,步骤S204可以包括:对从各次生成粗略移位数据序列中选择的单元数据依次进行拼接,以生成移位后数据。也就是说,从各次生成粗略移位数据序列中选择的n个单元数据全部被用于生成移位后数据。
第二种可能的情形是待移位数据包括的单元数据的数量小于数据序列的数量m和各数据序列具有的单元数据的数量n之积,即不足以形成n行m列的二维数据阵列。针对这种情形,可以对步骤S201进行相应的扩展。参见图3,其示出了针对这种情形的数据循环位移方法的原理。在图3所示的实施例中,待移位数据由单元数据1-40构成,类似地,其同样可以被分成7行6列(m=6,n=7)的二维数据阵列301:第1个数据序列包括单元数据1-7,第2个数据序列包括单元数据8-14,第3个数据序列包括单元数据15-21,第4个数据序列包括单元数据22-28,第5个数据序列包括单元数据29-35,第6个数据序列包括单元数据36-40以及单元数据1-2,这些数据序列形成二维数据阵列301,其中第6个数据序列不足的部分根据第1个数据序列的单元数据按序补充,即补充了单元数据1-2。
设预设移位值为20,则参考数据序列为第3个数据序列。根据参考数据序列,按照步骤S203的要求,生成的第1个粗略移位数据序列是由单元数据15-28构成的数据序列,第2个粗略移位数据序列是由单元数据22-35构成的数据序列,第3个粗略移位数据序列是由单元数据29-40以及单元数据1-2构成的数据序列。第3个粗略移位数据序列是由第5个和第6个数据序列在步骤S204拼接而成。
在生成第4个粗略移位数据序列时,因为此时已经遍历到第6个数据序列的最后一个单元数据,即从第1个数据序列补充的单元数据2,因此后续遍历将从待移位数据第1个数据序列中的单元数据3开始,所以可以选择第1个数据序列的单元数据3-7,然后继续按增序遍历第2个数据序列,选择第2个数据序列的单元数据8-9,将从这两个数据序列中选择的单元数据3-9作为基础数据序列。在步骤S203,该基础数据序列与前一基础数据序列进行拼接,得到由单元数据36-40以及单元数据1-9构成的第4个粗略移位数据序列。
在生成第5个粗略移位数据序列时,因为此时已经遍历到第2个数据序列的单元数据9,因此后续遍历从单元数据10开始,所以可以选择第2个数据序列的单元数据10-14,然后继续按增序遍历第3个数据序列,选择第3个数据序列的单元数据15-16,将从这两个数据序列中选择的单元数据10-16作为基础数据序列。在步骤S203,该基础数据序列与前一基础数据序列进行拼接,得到由单元数据3-16构成的第5个粗略移位数据序列。
与第5个粗略移位数据序列类似,在生成第6个粗略移位数据序列时,单元数据17-23作为基础数据序列,得到由单元数据10-23构成的第5个粗略移位数据序列。
总之,在遍历到二维数据阵列301的第m个数据序列后,后续基础数据序列的生成都需要根据两个数据序列的单元数据来完成。在图3所示的实施例中,这些粗略移位数据序列构成二维数据阵列302。
根据二维数据阵列302得到移位后数据的方法与图1所示的实施例类似,也是根据预设移位值从二维数据阵列302中确定包括移位后数据的子阵列,即实线303和实线304之间的单元数据形成的子阵列305。然而,应理解的是,在得到该子阵列305后,因为二维数据阵列301第6列中补充了n-k个单元数据(对于图3所示的情形,即单元数据1-2),因此在子阵列305中需要将最后一列中的第n-k至第n个单元数据删除(对于图3所示的情形,即从子阵列305的第6列中删除单元数据21-22),所得到的阵列是正好对应于移位后数据的二维数据阵列306。然后将二维数据阵列306的单元数据依次拼接即可得到移位后数据(如图3所示,移位后数据从单元数据21开始到单元数据20结束)。
应理解的是,在图3所示的实施例中,二维数据阵列302同样仅仅是为了对本公开的数据循环移位方法的原理进行说明而示出的,并不意味着各粗略移位数据序列必须先构成二维数据阵列,然后再生成移位后数据。实际上,在每次生成一个粗略移位数据序列后,就可以从该粗略移位数据序列中选择对应的单元数据作为移位后数据中相应的单元数据并输出,随后生成新的粗略移位数据序列,然后继续从新生成的粗略移位数据序列中选择对应的单元数据作为移位后数据中相应的单元数据(例如,与先前得到的单元数据进行拼接)并输出。如此重复,直到完成对待移位数据的移位操作。
下面给出针对步骤S201和步骤S204的进一步的详细描述。
参见图4,其根据图3所示的原理,以流程图的形式示出了关于图1所示的方法的更多细节。图4所示的方法是对步骤S201的进一步限定,其包括步骤S401-S402。
在步骤S401,当待移位数据的最后一个单元数据的序号小于m×n时,将待移位数据的最后一个单元数据确定为第m个数据序列中的第k个单元数据,其中,k为大于或等于1并且小于n的整数。这是因为,当待移位数据中的单元数据的数量不能形成n行且m列的数据阵列时,必然在第m列(即最后一列)缺少至少一个单元数据,此时待移位数据的最后一个单元数据可以被排序到第k个单元数据(1≤k<n)。
在步骤S402,将第一个数据序列中的第一个单元数据至第(n-k)个单元数据的内容分别对应地写入到第m个数据序列中的第(k+1)个单元数据至第n个单元数据中。这样,一方面可以确保形成均包括n个单元数据的m个数据序列,即形成二维数据阵列,另一方面可以保证遍历时单元数据的顺序不会发生错乱。例如图3所示的实施例中,遍历到单元数据40时,将直接遍历单元数据1-2,而不会去往其他单元数据。
然而,还应理解的是,在这种情况下,最后一次生成的粗略移位数据序列也会被补充n-k个单元数据。因此,为了获得移位后数据,针对最后一次生成的粗略移位数据序列,需要进行单独处理。参见图5,其根据图3所示的原理,以流程图的形式示出了关于图1所示的方法的更多细节。图5所示的方法是对步骤S204的进一步限定,其包括步骤S501-S502。
在步骤S501,从排序在最后的粗略移位数据序列中选择的n个单元数据中去除第(k+1)个单元数据至第n个单元数据。也就是说,将先前补进去的单元数据再剔除掉,以确保移位后数据中不会包括重复的单元数据。
在步骤S502,对从各次生成的粗略移位数据序列中选择的单元数据依次进行拼接,以生成移位后数据。在拼接过程中,先选择的单元数据排序在移位后数据的前面,后选择的单元数据排序在移位后数据的后面。以图3为例,在二维数据阵列306中,各个数据序列按照被选择的先后顺序从左向右排列,因此,在移位后数据中的拼接顺序为:单元数据21-27→单元数据28-34→单元数据35-1→单元数据2-8→单元数据9-15→单元数据16-20。也就是说,在移位后数据中,单元数据21为第一个单元数据,单元数据20为最后一个单元数据。
在一些实施例中,数据循环移位方法还可以包括:m个数据序列中除参考数据序列之外的m-1个数据序列中的至少一个数据序列,在所包括的单元数据已经被遍历地选择后,被独立地进行更新。这是因为,在根据本公开的各个实施例的方法中,除去参考数据序列,任何一个数据序列被遍历并选择作为基础数据序列后,后续将不再使用该数据序列中的单元数据,因此可以在将某一数据序列作为基础数据序列进行输出时,对不再使用的一个或多个其他数据序列进行更新,以供其他待移位数据的使用。这样可以降低资源占用和静态功耗,同时减少迭代反馈的数据线,降低绕线拥塞风险。应理解的是,独立地进行更新是指数据序列的内容可以被单独进行更新,无需考虑其他数据序列的情况。
在一些实施例中,每个数据序列的n个单元数据能够被同时写入或读取。因为将数据序列作为处理单元,使得n个单元数据能够同时读写,因此,计算效率可以成倍提高,而且通过整块写入数据,有利于存储该n个单元数据的存储空间的动态时钟门控控制,有利于进一步降低功耗。
图6是示出了根据本公开的一些实施例的数据循环移位电路的示例性结构框图。如图6所示,数据循环移位电路600包括待移位数据处理电路601、粗略移位数据序列生成电路602、移位后数据生成电路603。待移位数据处理电路601被配置成:按照待移位数据中各个单元数据的排序,将所述待移位数据分成m个数据序列,每个数据序列包括n个单元数据,其中,m和n都为大于0的整数,并且m和n不同时为1;根据预设移位值,从所述m个数据序列中确定参考数据序列,其中,所述参考数据序列包括与移位后数据中第一个单元数据对应的单元数据。粗略移位数据序列生成电路602被配置成:根据所述参考数据序列,利用所述m个数据序列生成粗略移位数据阵列,所述粗略移位数据阵列包括m个粗略移位数据序列,每一个粗略移位数据序列包括2n个单元数据。移位后数据生成电路603被配置成:按照所述粗略移位数据阵列中各粗略移位数据序列的增序,从每一个粗略移位数据序列中选择n个单元数据依序进行拼接,生成所述移位后数据。根据本公开的一些示例性实施例,待移位数据处理电路601还被配置成:从所述m个数据序列中每次选择n个单元数据作为基础数据序列,其中,从选择所述参考数据序列的n个单元数据开始,按照所述m个数据序列的增序和各个数据序列中单元数据的增序以遍历的方式每次选择n个单元数据作为所述基础数据序列,并且在遍历到第m个数据序列中的最后一个单元数据后,从第一个数据序列的第一个单元数据继续依序遍历,直到所述基础数据序列再次包括所述参考数据序列中的最后一个单元数据为止。因此,待移位数据处理电路601既适用于待移位数据的单元数据正好能够被划分为m个数据序列的情形,也适用于待移位数据的单元数据不能被正好划分为m个数据序列的情形。相应地,粗略移位数据序列生成电路602还被配置成:接收所述基础数据序列,并且从第二次确定的所述基础数据序列开始,响应于当前确定的基础数据序列,将所述当前确定的基础数据序列中的第一个单元数据直接排序在前一次确定的基础数据序列的最后一个单元数据后面,以生成包括2n个单元数据的粗略移位数据序列。
图7是示出了图6中的数据循环移位电路600的结构的示意图。
如图7所示并且继续结合参考图6,待移位数据处理电路601包括:存储器701、控制器702和第一选择器703,其中存储器701、控制器702和第一选择器703彼此电连接。存储器701包括至少m个存储空间,每个存储空间包括至少n个存储单元,并且对于每个存储空间,n个存储单元的内容能够被并行地写入或读出。控制器702配置成:向存储器701和第一选择器703分别发送控制信号,以便控制存储器701和第一选择器703的操作。并且存储器701被配置成:响应于从控制器702接收到的控制信号,将所接收的n个单元数据存储到m个存储空间中对应的n个存储单元中。因此,在图7所示的数据循环移位电路中,待移位数据被分成m个数据序列,分别写入存储器701的存储空间1-m中,每个存储空间存储有n个单元数据。控制器702根据预设移位值从存储空间1-m中确定存储有要读取的数据序列的存储空间,并将该存储空间的地址通过控制信号传送给第一选择器703,第一选择器703从该存储空间中读取数据序列,以便作为基础数据序列输出。由此可见,存储器701和控制器702、第一选择器703共同形成待移位数据处理电路。
在一些实施例中,存储器701可以是寄存器或者静态随机存取存储器。寄存器可以用于快速处理较小的待移位数据;静态随机存取存储器因为具有较低的功耗,因此可以用于处理较大的待移位数据。
如上文所述,在本公开的数据循环移位方法的一些实施例中,可以对m个数据序列中的至少一个数据序列独立地进行更新,因此对应地,存储器701的每一个存储空间能够被独立地读写。因此根据本公开的一些示例性实施例,存储器701还被配置成:在所述m个存储空间中,除保存有所述参考数据序列的存储空间之外的m-1个存储空间中的至少一个存储空间,在所存储的单元数据已经被读取以生成所述基础数据序列后,响应于从所述控制器接收到的控制信号,被独立地更新。因此,根据本公开的待移位数据处理电路600在对待移位数据进行数据循环移位操作时,一些存储空间在所存储的单元数据被读取后可以立即被更新,由此,在对多个数据进行移位处理的情形中能够极大地提升处理的效率。
如图7所示并且继续结合参考图6,粗略移位数据序列生成电路602包括:第一数据序列生成装置704,其与第一选择器703电连接,并且被配置成:从第一选择器703接收输出的基础数据序列,并将所接收的基础数据序列作为第一数据序列输出;第二数据序列生成装置705,其与第一数据序列生成装置704电连接,并且被配置成:从第一数据序列装置704接收第一数据序列,并将所接收的第一数据序列作为第二数据序列输出。第一数据序列生成装置704和第二数据生成装置705都与移位后数据生成电路电连接,以便基于第一数据序列和第二数据序列生成粗略移位数据序列。
第一数据序列生成装置704在从第一选择器703接收基础数据序列后都会将该基础数据序列传送给第二数据序列生成装置705,然后再从第一选择器703接收下一个基础数据序列,并且第一数据序列生成装置704中的第一数据序列和第二数据序列生成装置705中的第二数据序列被并行输出,以生成一个粗略移位数据序列。
如图7所示并且继续结合参考图6,移位后数据生成电路603包括第二选择器706,第二选择器706与第一数据序列生成装置704和第二数据序列生成装置705都电连接,并且被配置成:基于预设条件,从粗略移位数据序列中选择n个单元数据。该预设条件可以是预先写入第二选择器706的条件,使得第二选择器706可以从粗略移位数据序列中选择n个单元数据,得到移位后数据的一部分单元数据。
根据本公开各实施例的数据循环移位电路在进行数据循环移位操作时,能够节省资源以及极大地降低电路的翻转,从而降低循环移位操作的功耗,并且还可以降低后续计算处理所需的并行度及资源。
图8是示出了根据本公开的一些实施例的芯片的结构框图。如图8所示,芯片800上布置有根据本公开的一些实施例的数据循环移位电路801。该数据循环移位电路801可以是如图6和图7所示的数据循环移位电路。应理解的是,芯片800可以是任何合适的芯片,包括但不限于CPU芯片、GPU芯片,等等。本公开对于芯片的类型不作任何限制。
如本文所使用的,术语“确定”涵盖各种各样的动作。例如,“确定”可包括演算、计算、处理、推导、研究、查找(例如,在表、数据库或其他数据结构中查找)、探知及诸如此类。而且,“确定”可包括接收(例如,接收信息)、访问(例如,访问存储器中的数据)及诸如此类。而且,“确定”还可包括解析、选择、选取、确立及类似动作。
结合本公开所描述的各种解说性逻辑框、模块、以及电路是能够以本领域已知的任何合适的技术来实现的硬件电路,例如但不限于,具有合适的组合逻辑门电路的专用集成电路、可编程门阵列、现场可编程门阵列等等。本公开对此不作限制。
本公开中使用的术语仅用于描述本公开中的实施例,并不意图限制本公开。如本文中使用的,单数形式“一个”、“一”和“该”旨在也包括复数形式,除非上下文清楚地另有指示。还要理解的是,术语“包括”和“包含”当在本公开中使用时,是指所述及的特征的存在,但不排除一个或多个其他特征的存在或者添加一个或多个其他特征。如本文中使用的,术语“和/或”包括相关联的列出项目中的一个或多个的任意和全部组合。将理解的是,尽管术语“第一”、“第二”、“第三”等在本文中可以用来描述各种特征,但是这些特征不应当由这些术语限制。这些术语仅用来将一个特征与另一个特征相区分。
在本说明书的描述中,术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点被包含于本公开的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
本文所公开的方法包括用于达成所描述的方法的一个或多个步骤或动作。这些方法步骤和/或动作可以彼此互换而不会脱离权利要求的范围。换言之,除非指定了步骤或动作的特定次序,否则具体步骤和/或动作的次序和/或使用可以改动而不会脱离权利要求的范围。此外,根据需要,在流程图中表示或在此以其他方式描述的方法还可以包括其他附加的步骤。
本文所描述的功能可在硬件、软件、固件或其任何组合中实现。如果在软件中实现,则各功能可以作为一条或多条指令存储在计算机可读介质上。存储介质可以是能被计算机访问的任何可用介质。作为示例而非限定,这样的计算机可读介质可包括RAM、ROM、EEPROM或其它能被用来携带或存储指令或数据结构形式的期望程序代码且能被计算机访问的任何其它介质。
尽管已经结合一些示例性实施例详细地描述了本公开,但是其不旨在被限制于在本文中所阐述的特定形式。相反,本公开的范围仅由所附权利要求来限定。
Claims (18)
1.一种数据循环移位方法,其特征在于,包括:
按照待移位数据中各个单元数据的排序,将所述待移位数据分成m个数据序列,每个数据序列包括n个单元数据,其中,m和n都为大于0的整数,并且m和n不同时为1;
根据预设移位值从所述m个数据序列中确定参考数据序列,其中,所述参考数据序列包括与移位后数据中第一个单元数据对应的单元数据;
根据所述参考数据序列,利用所述m个数据序列生成粗略移位数据阵列,所述粗略移位数据阵列包括m个粗略移位数据序列,每一个粗略移位数据序列包括2n个单元数据;
按照所述粗略移位数据阵列中各粗略移位数据序列的增序,从每一个粗略移位数据序列中选择n个单元数据并依序进行拼接,生成所述移位后数据。
2.根据权利要求1所述的数据循环移位方法,其特征在于,所述根据所述参考数据序列,利用所述m个数据序列生成粗略移位数据阵列包括:
从所述m个数据序列中每次选择n个单元数据作为基础数据序列,其中,从选择所述参考数据序列的n个单元数据开始,按照所述m个数据序列的增序和各个数据序列中单元数据的增序以遍历的方式每次选择n个单元数据作为所述基础数据序列,并且在遍历到第m个数据序列中的最后一个单元数据后,从第一个数据序列的第一个单元数据继续依序遍历,直到所述基础数据序列再次包括所述参考数据序列中的最后一个单元数据为止;
从第二次确定的所述基础数据序列开始,响应于当前确定的基础数据序列,将所述当前确定的基础数据序列中的第一个单元数据直接排序在前一次确定的基础数据序列的最后一个单元数据后面,以生成包括2n个单元数据的粗略移位数据序列。
3.根据权利要求1所述的数据循环移位方法,其特征在于:
所述按照待移位数据中各个单元数据的排序,将所述待移位数据分成m个数据序列,每个数据序列包括n个单元数据包括:
响应于所述待移位数据的最后一个单元数据的序号小于n×m,将所述待移位数据的最后一个单元数据确定为第m个数据序列中的第k个单元数据,其中,k为大于或等于1并且小于n的整数;
将第一个数据序列中的第一个单元数据至第(n-k)个单元数据的内容分别对应地写入到第m个数据序列中的第(k+1)个单元数据至第n个单元数据中;
所述按照所述粗略移位数据阵列中各粗略移位数据序列的增序,从每一个粗略移位数据序列中选择n个单元数据并依序进行拼接,生成所述移位后数据包括:从排序在最后的粗略移位数据序列中选择的n个单元数据中去除第(k+1)个单元数据至第n个单元数据。
4.根据权利要求1所述的数据循环移位方法,其特征在于:
所述按照待移位数据中各个单元数据的排序,将所述待移位数据分成m个数据序列,每个数据序列包括n个单元数据包括:响应于所述待移位数据的最后一个单元数据的序号等于n×m,将所述待移位数据的最后一个单元数据确定为第m个数据序列中的第n个单元数据;
所述根据所述参考数据序列,利用所述m个数据序列生成粗略移位数据阵列包括:
从所述m个数据序列中每次选择n个单元数据作为基础数据序列,其中,从选择所述参考数据序列作为所述基础数据序列开始,按照所述m个数据序列的增序以遍历的方式每次选择一个数据序列作为所述基础数据序列,并且在遍历到第m个数据序列后,从第一个数据序列继续依序遍历,直到所述基础数据序列再次包括所述参考数据序列为止;
从第二次确定的所述基础数据序列开始,响应于当前确定的基础数据序列,将所述当前确定的基础数据序列中的第一个单元数据直接排序在前一次确定的基础数据序列的最后一个单元数据后面,以生成包括2n个单元数据的粗略移位数据序列。
5.根据权利要求1所述的数据循环移位方法,其特征在于,所述根据预设移位值从所述m个数据序列中确定参考数据序列包括:
用所述预设移位值除以每个数据序列包括的单元数据的数量n得到商,将所述m个数据序列中序号比所述商大1的数据序列确定为所述参考数据序列。
6.根据权利要求1所述的数据循环移位方法,其特征在于,所述根据预设移位值从所述m个数据序列中确定参考数据序列包括:
根据所述预设移位值,从所述待移位数据中确定参考单元数据,其中,所述参考单元数据对应于所述移位后数据中的第一个单元数据;
将包括所述参考单元数据的数据序列作为参考数据序列。
7.根据权利要求6所述的数据循环移位方法,其特征在于,所述按照所述粗略移位数据阵列中各粗略移位数据序列的增序,从每一个粗略移位数据序列中选择n个单元数据并依序进行拼接,生成所述移位后数据包括:
根据所述参考单元数据在所述参考数据序列中的序号,从每一个粗略移位数据序列中确定具有相同序号的起始单元数据;
在每一个粗略移位数据序列中选择从所述起始单元数据开始并且序号递增的n个单元数据。
8.根据权利要求1所述的数据循环移位方法,其特征在于,所述按照所述粗略移位数据阵列中各粗略移位数据序列的增序,从每一个粗略移位数据序列中选择n个单元数据依序进行拼接,生成所述移位后数据包括:
用所述预设移位值除以n,将得到的余数作为偏移值;
在每一个粗略移位数据序列中,将序号比所述偏移值大1的单元数据确定为起始单元数据;
在每一个粗略移位数据序列中选择从所述起始单元数据开始并且序号递增的n个单元数据。
9.根据权利要求2所述的数据循环移位方法,其特征在于,还包括:
所述m个数据序列中除所述参考数据序列之外的m-1个数据序列中的至少一个数据序列,在所包括的单元数据已经被遍历地选择以生成所述基础数据序列后,被独立地以新的单元数据进行更新。
10.根据权利要求1所述的数据循环移位方法,其特征在于,每个数据序列的n个单元数据被同时写入或读取。
11.一种数据循环移位电路,其特征在于,包括:
待移位数据处理电路,其被配置成:
按照待移位数据中各个单元数据的排序,将所述待移位数据分成m个数据序列,每个数据序列包括n个单元数据,其中,m和n都为大于0的整数,并且m和n不同时为1;
根据预设移位值,从所述m个数据序列中确定参考数据序列,其中,所述参考数据序列包括与移位后数据中第一个单元数据对应的单元数据;
粗略移位数据序列生成电路,其被配置成:根据所述参考数据序列,利用所述m个数据序列生成粗略移位数据阵列,所述粗略移位数据阵列包括m个粗略移位数据序列,每一个粗略移位数据序列包括2n个单元数据;
移位后数据生成电路,其被配置成:按照所述粗略移位数据阵列中各粗略移位数据序列的增序,从每一个粗略移位数据序列中选择n个单元数据依序进行拼接,生成所述移位后数据。
12.根据权利要求11所述的数据循环移位电路,其特征在于:
所述待移位数据处理电路还被配置成:从所述m个数据序列中每次选择n个单元数据作为基础数据序列,其中,从选择所述参考数据序列的n个单元数据开始,按照所述m个数据序列的增序和各个数据序列中单元数据的增序以遍历的方式每次选择n个单元数据作为所述基础数据序列,并且在遍历到第m个数据序列中的最后一个单元数据后,从第一个数据序列的第一个单元数据继续依序遍历,直到所述基础数据序列再次包括所述参考数据序列中的最后一个单元数据为止;
所述粗略移位数据序列生成电路还被配置成:接收所述基础数据序列,并且从第二次确定的所述基础数据序列开始,响应于当前确定的基础数据序列,将所述当前确定的基础数据序列中的第一个单元数据直接排序在前一次确定的基础数据序列的最后一个单元数据后面,以生成包括2n个单元数据的粗略移位数据序列。
13.根据权利要求12所述的数据循环移位电路,其特征在于,所述待移位数据处理电路包括存储器、控制器和第一选择器,其中,所述存储器、所述控制器和所述第一选择器彼此电连接,并且其中:
所述控制器被配置成:向所述存储器和所述第一选择器分别发送控制信号,以便控制所述存储器和所述第一选择器的操作;
所述存储器包括至少m个存储空间,每个存储空间包括至少n个存储单元,对于每个存储空间,n个存储单元的内容能够被并行地写入或读出,并且所述存储器被配置成:响应于从所述控制器接收到的控制信号,将所接收的n个单元数据存储到所述m个存储空间中对应的n个存储单元中;
所述第一选择器被配置成:响应于从所述控制器接收到的控制信号,从所述存储器的对应的存储空间中读取所存储的n个单元数据,并将所读取的n个单元数据输出为所述基础数据序列。
14.根据权利要求13所述的数据循环移位电路,其特征在于,所述存储器是寄存器或者静态随机存取存储器。
15.根据权利要求13所述的数据循环移位电路,其特征在于:
所述存储器的每一个存储空间能够被独立地读写;
所述存储器还被配置成:所述m个存储空间中,除保存有所述参考数据序列的存储空间之外的m-1个存储空间中的至少一个存储空间,响应于从所述控制器接收到的控制信号,在所存储的单元数据被所述第一选择器读取时,被写入新的单元数据。
16.根据权利要求13所述的数据循环移位电路,其特征在于,所述粗略移位数据序列生成电路包括:
第一数据序列生成装置,其与所述第一选择器电连接,并且被配置成:从所述第一选择器接收所述基础数据序列,并将所接收的基础数据序列作为第一数据序列输出;
第二数据序列生成装置,其与所述第一数据序列生成装置电连接,并且被配置成:从所述第一数据序列装置接收所述第一数据序列,并将所接收的第一数据序列作为第二数据序列输出;
其中,所述第一数据序列和所述第二数据序列构成所述粗略移位数据序列。
17.根据权利要求16所述的数据循环移位电路,其特征在于,所述移位后数据生成电路包括第二选择器,所述第二选择器与所述第一数据序列生成装置和所述第二数据序列生成装置都电连接,并且被配置成:基于预设条件,从所述粗略移位数据序列中选择n个单元数据输出。
18.一种芯片,其特征在于,所述芯片包括根据权利要求11至17中任一项所述的数据循环移位电路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310024276.2A CN115765750B (zh) | 2023-01-09 | 2023-01-09 | 数据循环移位方法和电路、以及芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310024276.2A CN115765750B (zh) | 2023-01-09 | 2023-01-09 | 数据循环移位方法和电路、以及芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115765750A true CN115765750A (zh) | 2023-03-07 |
CN115765750B CN115765750B (zh) | 2023-05-19 |
Family
ID=85348409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310024276.2A Active CN115765750B (zh) | 2023-01-09 | 2023-01-09 | 数据循环移位方法和电路、以及芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115765750B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2189629C2 (ru) * | 1996-07-26 | 2002-09-20 | Зенит Электроникс Корпорейшн | Устройство обращения циклического сдвига и обращенного перемежения данных |
US20100128527A1 (en) * | 2008-11-25 | 2010-05-27 | Samsung Electronics Co., Ltd. | Nonvolatile memory device |
CN108540139A (zh) * | 2018-04-17 | 2018-09-14 | 国家新闻出版广电总局广播科学研究院 | 一种通用的准循环ldpc码编码器的fpga实现方法及装置 |
CN109756231A (zh) * | 2018-12-27 | 2019-05-14 | 北京思朗科技有限责任公司 | 循环移位处理装置及方法 |
CN111262592A (zh) * | 2018-11-30 | 2020-06-09 | 展讯半导体(南京)有限公司 | 序列的循环移位装置及方法、存储介质 |
US20210211339A1 (en) * | 2020-01-07 | 2021-07-08 | Realtek Semiconductor Corporation | Data shifting operation apparatus and method having multiple operation modes |
CN113094023A (zh) * | 2021-04-16 | 2021-07-09 | 武汉理工大学 | 伪随机m阵列的构造方法、装置、计算机设备及存储介质 |
-
2023
- 2023-01-09 CN CN202310024276.2A patent/CN115765750B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2189629C2 (ru) * | 1996-07-26 | 2002-09-20 | Зенит Электроникс Корпорейшн | Устройство обращения циклического сдвига и обращенного перемежения данных |
US20100128527A1 (en) * | 2008-11-25 | 2010-05-27 | Samsung Electronics Co., Ltd. | Nonvolatile memory device |
CN108540139A (zh) * | 2018-04-17 | 2018-09-14 | 国家新闻出版广电总局广播科学研究院 | 一种通用的准循环ldpc码编码器的fpga实现方法及装置 |
CN111262592A (zh) * | 2018-11-30 | 2020-06-09 | 展讯半导体(南京)有限公司 | 序列的循环移位装置及方法、存储介质 |
CN109756231A (zh) * | 2018-12-27 | 2019-05-14 | 北京思朗科技有限责任公司 | 循环移位处理装置及方法 |
US20210211339A1 (en) * | 2020-01-07 | 2021-07-08 | Realtek Semiconductor Corporation | Data shifting operation apparatus and method having multiple operation modes |
CN113094023A (zh) * | 2021-04-16 | 2021-07-09 | 武汉理工大学 | 伪随机m阵列的构造方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115765750B (zh) | 2023-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200394495A1 (en) | System and architecture of neural network accelerator | |
US9647684B2 (en) | Memory-based history search | |
CN104778127B (zh) | 一种nand flash写数据的方法和装置 | |
CN100357899C (zh) | 存储装置的数据写入、读取方法及数据存储系统 | |
CN105264488B (zh) | 用于使用数组对来合并有序列表的方法和系统 | |
Wu | Low complexity codes for writing a write-once memory twice | |
CN101630289A (zh) | 存储器控制器、存储器系统及用于存储器系统的控制方法 | |
KR102355082B1 (ko) | 채널 편파 코드의 연속 제거 리스트 디코딩을 위한 효율적인 생존 메모리 아키텍처 | |
JP2020149741A (ja) | メモリシステム | |
CN115765750B (zh) | 数据循环移位方法和电路、以及芯片 | |
US11182128B2 (en) | Multiply-accumulate operation device, multiply-accumulate operation methods, and systems | |
KR100852590B1 (ko) | 메모리 제어 회로 및 메모리 제어 방법 | |
JPWO2010053152A1 (ja) | 復号装置、この復号装置を有するデータ通信装置およびデータ記憶装置 | |
US9866219B2 (en) | Device for logic operation | |
JPS6142031A (ja) | ソ−ト処理装置 | |
US20210082082A1 (en) | Data processing method and processing circuit | |
US11165615B2 (en) | Data shifting operation apparatus and method having multiple operation modes | |
CN110705701B (zh) | 一种高并行度的卷积运算方法和电路 | |
CN101882061A (zh) | 存储器控制方法和存储器控制装置 | |
CN111814417A (zh) | 一种基于字符分隔值文件转换Verilog代码的方法 | |
JP4391464B2 (ja) | 2分木構造の情報を記憶する装置及びヒープ構造の情報を記憶する装置 | |
JP5200688B2 (ja) | カウントデータ記録装置、および、カウントデータ記録方法 | |
CN102402398B (zh) | 闪存控制器及其方法 | |
CN110781100B (zh) | 一种数据检测方法、逻辑芯片及网络设备 | |
US20210318939A1 (en) | Column redundancy data architecture for yield improvement |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |