CN109756231B - 循环移位处理装置及方法 - Google Patents
循环移位处理装置及方法 Download PDFInfo
- Publication number
- CN109756231B CN109756231B CN201811610064.8A CN201811610064A CN109756231B CN 109756231 B CN109756231 B CN 109756231B CN 201811610064 A CN201811610064 A CN 201811610064A CN 109756231 B CN109756231 B CN 109756231B
- Authority
- CN
- China
- Prior art keywords
- byte
- shift
- data
- bit
- module
- 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.)
- Active
Links
Images
Abstract
本发明公开了一种循环移位处理装置及方法,该装置中的字节重排地址计算模块根据所提取的移位数的第一部分,计算用于确定循环移位结果中的每个字节所需的数据在原始数据中对应的高8位字节地址和低8位字节地址;字节重排模块分别根据高8位字节地址和低8位字节地址对所提取的原始数据进行字节重排,得到每个字节所需的高8位字节数据和低8位字节数据;拼接移位模块将每个字节所需的高8位字节数据和低8位字节数据并行地进行拼接,得到每个字节对应的拼接数据;按照所提取的移位数的第二部分,对所有字节对应的拼接数据进行移位处理,得到循环移位结果。该方案实现了比特级的循环移位,能够方便、快捷地对较长的数据进行循环移位处理。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种循环移位处理装置及方法。
背景技术
在LDPC(低密度奇偶校验,Low-density Parity-check)编码、CRC(循环冗余校验码,Cyclic Redundancy Check)校验、卷积等应用领域中都会利用到循环移位技术,循环移位是指在移位时不丢失移位前原范围的位,而是将它们作为另一端的补入位。现有处理器的汇编指令集大多以字节为操作单位,并且包含适用于较短数据的循环移位指令,支持在较短的二进制数据(例如1个字节或2个字节)内直接进行循环移位。当需要进行循环移位的二进制数据较长时,例如数据长度为50个字节,若移位数可被8整除(如循环右移24位),则可采用字节重排指令来实现循环移位。然而在大多数情况下,移位数并不能被8整除(如循环右移23位),此时采用单个指令则难以完成循环移位处理。因此,在移位数不能被8整除的情况下,现有技术中的循环移位处理方式无法方便、快捷地对较长的数据进行循环移位处理。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的循环移位处理装置及方法。
根据本发明的一个方面,提供了一种循环移位处理装置,该装置包括:
外缓存模块,用于存储待循环移位的原始数据和至少一个移位数;每个移位数包括:第一部分和第二部分;
移位数读取模块,用于从外缓存模块中读取预设数量的未曾被读取过的移位数;
移位数提取模块,用于从所读取的预设数量的移位数中提取一未曾被提取过的移位数;
字节重排地址计算模块,用于根据移位数提取模块所提取的移位数的第一部分,计算用于确定循环移位结果中的每个字节所需的数据在原始数据中对应的高8位字节地址和低8位字节地址;
原始数据提取模块,用于从外缓存模块中提取原始数据;
字节重排模块,用于根据高8位字节地址对原始数据提取模块所提取的原始数据进行字节重排,得到用于确定循环移位结果中的每个字节所需的高8位字节数据;根据低8位字节地址对原始数据提取模块所提取的原始数据进行字节重排,得到用于确定循环移位结果中的每个字节所需的低8位字节数据;
拼接移位模块,用于将每个字节所需的高8位字节数据和低8位字节数据并行地进行拼接,得到每个字节对应的拼接数据;按照移位数提取模块所提取的移位数的第二部分,对所有字节对应的拼接数据进行移位处理,得到循环移位结果。
根据本发明的另一方面,提供了一种循环移位处理方法,该方法包括:
存储待循环移位的原始数据和至少一个移位数;每个移位数包括:第一部分和第二部分;
从所存储的至少一个移位数中读取预设数量的未曾被读取过的移位数;
从所读取的预设数量的移位数中提取一未曾被提取过的移位数;
根据所提取的移位数的第一部分,计算用于确定循环移位结果中的每个字节所需的数据在原始数据中对应的高8位字节地址和低8位字节地址;
提取所存储的原始数据;
根据高8位字节地址对所提取的原始数据进行字节重排,得到用于确定循环移位结果中的每个字节所需的高8位字节数据;
根据低8位字节地址对所提取的原始数据进行字节重排,得到用于确定循环移位结果中的每个字节所需的低8位字节数据;
将每个字节所需的高8位字节数据和低8位字节数据并行地进行拼接,得到每个字节对应的拼接数据;
按照所提取的移位数的第二部分,对所有字节对应的拼接数据进行移位处理,得到循环移位结果。
根据本发明的又一方面,提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,处理器、存储器和通信接口通过通信总线完成相互间的通信;
存储器用于存放至少一可执行指令,可执行指令使处理器执行上述循环移位处理方法对应的操作。
根据本发明的再一方面,提供了一种计算机存储介质,存储介质中存储有至少一可执行指令,可执行指令使处理器执行如上述循环移位处理方法对应的操作。
根据本发明提供的技术方案,将移位数分成第一部分和第二部分,根据移位数的第一部分和原始数据,得到用于确定循环移位结果中的每个字节所需的高8位字节数据和低8位字节数据,并将每个字节所需的高8位字节数据和低8位字节数据并行地进行拼接,得到每个字节对应的拼接数据,然后根据移位数的第二部分,对所有字节对应的拼接数据进行移位处理,得到循环移位结果。本发明提供的技术方案能够以比特为操作单位进行循环移位处理,有效地实现了比特级的循环移位,即使在移位数不能被8整除的情况下,也能够方便、快捷地对较长的数据进行循环移位处理;该技术方案能够适用于LDPC编码、CRC校验、卷积等应用领域中,有助于减少数据计算量,极大地提高了数据处理效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1a示出了根据本发明一个实施例的循环移位处理装置的结构框图;
图1b示出了原始数据中各个字节的字节地址的示意图;
图1c示出了字节重排地址计算模块所得到的用于确定循环移位结果中的每个字节所需的数据在原始数据中对应的低8位字节地址的示意图;
图1d示出了字节重排地址计算模块所得到的用于确定循环移位结果中的每个字节所需的数据在原始数据中对应的高8位字节地址的示意图;
图2示出了根据本发明一个实施例的循环移位处理方法的流程示意图;
图3示出了根据本发明实施例的一种计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1a示出了根据本发明一个实施例的循环移位处理装置的结构框图,如图1a所示,该装置包括:外缓存模块101、移位数读取模块102、移位数提取模块103、字节重排地址计算模块104、原始数据提取模块105、字节重排模块106以及拼接移位模块107。
外缓存模块101用于:存储待循环移位的原始数据和至少一个移位数。
外缓存模块101可以为一个外置的缓存器。为了便于对待循环移位的原始数据进行循环移位处理,外缓存模块101需要对待循环移位的原始数据和至少一个移位数进行存储,其中,原始数据可为二进制的数据,移位数用于表示原始数据需要循环移动的位数等信息。本发明对于原始数据的数据长度不做具体限定。本领域技术人员可根据实际需要来确定原始数据的数据长度,例如原始数据的数据长度可以为较长的数据长度,如384位或者400位等;原始数据的数据长度也可以为较短的数据长度。
在具体应用中,至少一个移位数可以移位数矩阵的形式进行存储,移位数矩阵的元素即为移位数。本领域技术人员可根据实际需要对移位数的数量和具体数值进行设置,此处不做限定。为了便于对原始数据进行循环移位处理,至少一个移位数为二进制的移位数,其中,每个移位数包括:第一部分和第二部分。具体地,每个移位数的第二部分为该移位数中的低3位数据,每个移位数的第一部分为该移位数中除低3位数据之外的数据。考虑到移位数的低3位数据对应的数据取值范围为0至7,与1个字节的位数范围相对应,而移位数中除低3位数据之外的数据对应的数据取值范围为8及其以上,说明原始数据需要进行跨字节移动,那么将移位数中的低3位数据确定为第二部分,将移位数中除低3位数据之外的数据确定为第一部分。另外,第二部分也可称为低位部分,第一部分也可称为高位部分。以移数位为1010为例,即循环移动10位,则该移数位的第一部分为1,第二部分为010。
移位数读取模块102用于:从外缓存模块101中读取预设数量的未曾被读取过的移位数。
当需要对原始数据进行循环移位处理时,移位数读取模块102从外缓存模块101中读取预设数量的未曾被读取过的移位数。本领域技术人员可根据实际需要对预设数量进行设置,此处不做限定。以在外缓存模块101中至少一个移位数以移位数矩阵的形式进行存储为例,移位数读取模块102可每次读取移位数矩阵的一行元素,若移位数矩阵为一个m行n列的矩阵,则每次读取移位数矩阵的一行的n个元素,即读取n个移位数。
移位数读取模块102还可包括有对应的内缓存单元,移位数读取模块102的内缓存单元可以为移位数读取模块102中内置的缓存器。移位数读取模块102在从外缓存模块101中读取预设数量的移位数之后,将所读取的预设数量的移位数存储至移位数提取模块103的内缓存单元中,以便移位数提取模块103能够快速地从中提取移位数。
移位数提取模块103用于:从所读取的预设数量的移位数中提取一未曾被提取过的移位数。
其中,移位数提取模块103可按照预设提取顺序每次从所读取的预设数量的移位数中提取一未曾被提取过的移位数,所提取的移位数包括该移位数的第一部分和第二部分。移位数提取模块103还可分别将所提取的移位数的第一部分和第二部分进行广播,从而将移位数的第一部分和第二部分复制到每个字节中,以便字节重排地址计算模块104进行字节地址计算以及拼接移位模块107进行拼接移位处理。
移位数提取模块103还可包括有对应的内缓存单元。在移位数提取模块103将所提取的移位数的第一部分和第二部分进行广播之后,移位数提取模块103将所提取的移位数的第一部分广播后存储至字节重排地址计算模块104的内缓存单元中,将所提取的移位数的第二部分广播后存储至拼接移位模块107的内缓存单元中,以便字节重排地址计算模块104和拼接移位模块107能够快速地获取移位数的第一部分和第二部分。
字节重排地址计算模块104用于:根据移位数提取模块103所提取的移位数的第一部分,计算用于确定循环移位结果中的每个字节所需的数据在原始数据中对应的高8位字节地址和低8位字节地址。
考虑到对原始数据进行循环移位所得到的循环移位结果中的每个字节中的8位数据是基于原始数据中的1个字节或者2个字节中的数据所确定的,其中,在移位数不能被8整除的情况下,循环移位结果中的每个字节中的8位数据是基于原始数据中的2个字节中的数据所确定的,为了便于说明,将这2个字节中处于高位的字节称为高8位字节,将这2个字节中处于低位的字节称为低8位字节。字节重排地址计算模块104根据所提取的移位数的第一部分,并行地计算用于确定循环移位结果中的每个字节所需的原始数据中的2个字节中的高8位字节的高8位字节地址,并根据所提取的移位数的第一部分,并行地计算用于确定循环移位结果中的每个字节所需的原始数据中的2个字节中的低8位字节的低8位字节地址。
可选地,外缓存模块101进一步用于:存储至少一个移位数对应的预设移位方向。那么字节重排地址计算模块104进一步用于:根据移位数提取模块103所提取的移位数的第一部分和预设移位方向,计算用于确定循环移位结果中的每个字节所需的数据在原始数据中对应的高8位字节地址和低8位字节地址。
假设原始数据的数据长度为400位,即50个字节,由于在计算机处理中,一般将数据的低位放在右边,将数据的高位放在左边,那么原始数据的这50个字节的字节地址范围可为1至50,具体地,如图1b所示,这50个字节的字节地址从右至左依次为1、2、3、……、48、49、50。若预设移位方向为向右移动,那么字节重排地址计算模块104可将所提取的移位数的第一部分对应的十进制数据分别与原始数据的50个字节的字节地址进行加法运算,得到用于确定循环移位结果中的每个字节所需的数据在原始数据中对应的低8位字节地址,然后再将所得到的低8位字节地址进行加1处理,得到用于确定循环移位结果中的每个字节所需的数据在原始数据中对应的高8位字节地址。若预设移位方向为向左移动,那么字节重排地址计算模块104可将所提取的移位数的第一部分对应的十进制数据分别与原始数据的50个字节的字节地址进行减法运算,得到用于确定循环移位结果中的每个字节所需的数据在原始数据中对应的低8位字节地址,然后再将所得到的低8位字节地址进行加1处理,得到用于确定循环移位结果中的每个字节所需的数据在原始数据中对应的高8位字节地址。
考虑到上述计算得到的高8位字节地址和/或低8位字节地址可能存在着不符合原始数据的字节地址范围的情况,为了能够成功地实现循环移位,字节重排地址计算模块104还需要对这种不符合原始数据的字节地址范围的高8位字节地址和/或低8位字节地址进行修正处理。具体地,字节重排地址计算模块104判断高8位字节地址和/或低8位字节地址是否符合原始数据的字节地址范围;若否,则利用预设算法对不符合原始数据的字节地址范围的高8位字节地址和/或低8位字节地址进行修正处理。本领域技术人员可根据实际需要对预设算法进行设置,此处不做限定。例如,预设算法可为取余算法、加法算法或减法算法等。在一种具体的应用场景中,可将不符合原始数据的字节地址范围的高8位字节地址和/或低8位字节地址与原始数据的总字节数量进行取余运算,将所得到的余数作为修正后的字节地址。
以所提取的移数位的第一部分为1,第二部分为010,预设移位方向为向右移动,原始数据的字节地址范围为1至50为例,说明需要将原始数据循环向右移动10位,那么字节重排地址计算模块104计算得到的字节地址为51的低8位字节地址、字节地址为51的高8位字节地址和字节地址为52的高8位字节地址均不符合原始数据的字节地址范围,字节重排地址计算模块104需要对这3个字节地址进行修正处理,具体地,将字节地址为51的低8位字节地址修正为字节地址为1的低8位字节地址,将字节地址为51的高8位字节地址修正为字节地址为1的高8位字节地址,将字节地址为52的高8位字节地址修正为字节地址为2的高8位字节地址。经修正后,字节重排地址计算模块104所得到的用于确定循环移位结果中的每个字节所需的数据在原始数据中对应的低8位字节地址可如图1c所示,所得到的用于确定循环移位结果中的每个字节所需的数据在原始数据中对应的高8位字节地址可如图1d所示。
字节重排地址计算模块104还可包括有对应的内缓存单元。字节重排地址计算模块104将所得到的用于确定循环移位结果中的每个字节所需的数据在原始数据中对应的高8位字节地址和低8位字节地址存储至字节重排模块106的内缓存单元,以便字节重排模块106能够快速地从中获取高8位字节地址和低8位字节地址。
原始数据提取模块105用于:从外缓存模块101中提取原始数据。
其中,原始数据提取模块105可每次从外缓存模块101中提取符合预设数据长度的原始数据。预设数据长度可根据字节重排模块106等的处理能力进行设置。例如,字节重排模块106等模块的处理能力为512位,那么可将预设数据长度设置为512位,那么原始数据提取模块105每次可从外缓存模块101中提取不超过512位的原始数据。假设原始数据的数据长度小于512位,那么原始数据提取模块105只需从外缓存模块101中提取一次即可获得全部的原始数据。
原始数据提取模块105还可包括有对应的内缓存单元。原始数据提取模块105将所提取的原始数据存储至字节重排模块106的内缓存单元中,以便字节重排模块106能够快速地从中获取原始数据。
字节重排模块106用于:根据高8位字节地址对原始数据提取模块105所提取的原始数据进行字节重排,得到用于确定循环移位结果中的每个字节所需的高8位字节数据;根据低8位字节地址对原始数据提取模块105所提取的原始数据进行字节重排,得到用于确定循环移位结果中的每个字节所需的低8位字节数据。
字节重排模块106根据字节重排地址计算模块104得到的用于确定循环移位结果中的每个字节所需的数据在原始数据中对应的高8位字节地址对原始数据进行字节重排,得到各个高8位字节地址对应的字节的数据,即得到用于确定循环移位结果中的每个字节所需的高8位字节数据;字节重排模块106根据字节重排地址计算模块104得到的用于确定循环移位结果中的每个字节所需的数据在原始数据中对应的低8位字节地址对原始数据进行字节重排,得到各个低8位字节地址对应的字节的数据,即得到用于确定循环移位结果中的每个字节所需的低8位字节数据。
字节重排模块106还可包括有对应的内缓存单元。字节重排模块106将所得到的用于确定循环移位结果中的每个字节所需的高8位字节数据和低8位字节数据存储至拼接移位模块107的内缓存单元中,以便拼接移位模块107能够快速地从中获取每个字节所需的高8位字节数据和低8位字节数据。
拼接移位模块107用于:将每个字节所需的高8位字节数据和低8位字节数据并行地进行拼接,得到每个字节对应的拼接数据;按照移位数提取模块103所提取的移位数的第二部分,对所有字节对应的拼接数据进行移位处理,得到循环移位结果。
其中,拼接移位模块107进行拼接处理的并行度由拼接移位模块107的处理能力而确定,此处不做限定。例如,拼接移位模块107的处理能力为512位,那么拼接移位模块107最多能够并行地对64个字节所需的高8位字节数据和低8位字节数据进行拼接。具体地,拼接移位模块107可利用算术和逻辑运算部件来实现。
每个字节对应的拼接数据的数据长度为16位。具体地,拼接移位模块107将每个字节所需的高8位字节数据作为拼接数据中的高8位数据,将每个字节所需的低8位字节数据作为拼接数据中的低8位数据,得到每个字节对应的16位的拼接数据。拼接移位模块107进一步用于:按照移位数提取模块103所提取的移位数的第二部分,对每个字节对应的拼接数据进行移位处理,得到每个字节对应的中间移位数据,接着将每个字节对应的中间移位数据中的低8位数据确定为每个字节对应的移位结果,然后根据所有字节对应的移位结果,得到循环移位结果。
以所提取的移数位的第一部分为1,第二部分为010,预设移位方向为向右移动为例,说明需要将原始数据循环向右移动10位,那么在得到每个字节对应的16位的拼接数据之后,拼接移位模块107按照移位数的第二部分对应的十进制数据,对每个字节对应的拼接数据进行移位处理,也就是说,对每个字节对应的拼接数据向右移动2位,将移动处理后所得到的数据作为每个字节对应的中间移位数据。将每个字节对应的中间移位数据中的低8位数据确定为循环移位结果中每个字节对应的移位结果,那么根据所有字节对应的移位结果即可得到循环移位结果。
可选地,该装置还可包括:第一判断模块108和终止模块109。其中,第一判断模块108用于:判断外缓存模块101中存储的至少一个移位数是否都被读取过;若是,说明外缓存模块101中存储的所有的移位数都被读取过,则触发第一终止模块109;若否,说明外缓存模块101中还有未被读取过的移位数,则触发移位数读取模块102,继续从外缓存模块101中读取预设数量的未曾被读取过的移位数。终止模块109用于:终止从外缓存模块101中读取移位数。
可选地,该装置还可包括:第二判断模块110。第二判断模块110用于:判断所读取的预设数量的移位数是否都被提取过;若是,说明所读取的所有的移位数都被提取过,则触发第一判断模块108;若否,说明所读取的移位数中还有未被提取过的移位数,则触发移位数提取模块103,继续从所读取的预设数量的移位数中提取一未曾被提取过的移位数。
本实施例提供的技术方案能够能够以比特为操作单位进行循环移位处理,并适用于LDPC编码、CRC校验、卷积等应用领域中。其中,在LDPC编码的过程中,绝大多数的计算量都集中于计算单位矩阵循环右移阵和对应长度的待编码原始二进制序列构成的列向量的乘积(一般约定列向量上面为低位,下面为高位)。若直接采用矩阵乘法去计算,则其计算复杂度是非常高的。考虑到乘号左边的矩阵为单位矩阵循环右移得到的,因此该乘法可等效于对指定长度的待编码原始二进制序列进行向低位循环移位操作,而在处理器内部数据一般将低位放在右边,因此等效于对指定长度的待编码原始二进制序列进行循环右移操作。具体的移位数可记录在一个矩阵中,称为移位数矩阵,其元素往往不是8的倍数,因此该循环移位操作适用于采用本实施例提供的循环移位处理装置来完成。
下面以本实施例提供的循环移位处理装置适用于LDPC编码的应用领域为例进行说明。
在LDPC编码中,待编码原始二进制序列的数据长度和移位数矩阵由通信协议和应用场景而决定。可将LDPC编码中的待编码原始二进制序列作为原始数据,其中,一个典型的原始数据的数据长度是384位,典型的移位数矩阵的元素取值范围在0-511之间,那么移位数矩阵的元素可以用9位的二进制的移位数来表示,其中,将9位中的低3位作为移位数的第二部分,将9位中的高6位作为移位数的第一部分。
循环移位处理装置中的外缓存模块101存储原始数据,并以移位数矩阵的形式存储至少一个移位数。移位数读取模块102每次从外缓存模块101中读取移位数矩阵的一行元素,并存储至移位数提取模块103的内缓存单元。移位数提取模块103从所读取的一行元素中提取一未曾被提取过的元素,即提取一未曾被提取过的移位数,将该移位数的第一部分(即9位的移位数的高6位)复制到384位(即48个字节)的每个字节中,然后将该移位数的第一部分存储至字节重排地址计算模块104的内缓存单元中,并且移位数提取模块103将该移位数的第二部分(即9位的移位数的低3位)复制到48个字节的每个字节中,然后将该移位数的第二部分存储至拼接移位模块107的内缓存单元中。字节重排地址计算模块104根据移位数提取模块103所提取的移位数的第一部分,并行地计算用于确定循环移位结果中的每个字节所需的数据在原始数据中对应的高8位字节地址和低8位字节地址,并将所得到的高8位字节地址和低8位字节地址存储至字节重排模块106的内缓存单元。假设字节重排模块106等模块的处理能力为512位,那么原始数据提取模块105能够从外缓存模块101中提取384位的原始数据,并将所提取的原始数据存储至字节重排模块106的内缓存单元中。字节重排模块106分别根据高8位字节地址和低8位字节地址对原始数据提取模块105所提取的384位的原始数据进行字节重排,得到用于确定循环移位结果中的每个字节所需的高8位字节数据和低8位字节数据,并将得到的高8位字节数据和低8位字节数据存储至拼接移位模块107的内缓存单元中。拼接移位模块107将每个字节所需的高8位字节数据和低8位字节数据并行地进行拼接,得到每个字节对应的拼接数据,并按照移位数的第二部分,对所有字节对应的拼接数据进行移位处理,得到循环移位结果。
根据本实施例提供的循环移位处理装置,将移位数分成第一部分和第二部分,根据移位数的第一部分和原始数据,得到用于确定循环移位结果中的每个字节所需的高8位字节数据和低8位字节数据,并将每个字节所需的高8位字节数据和低8位字节数据并行地进行拼接,得到每个字节对应的拼接数据,然后根据移位数的第二部分,对所有字节对应的拼接数据进行移位处理,得到循环移位结果。本发明提供的技术方案能够以比特为操作单位进行循环移位处理,有效地实现了比特级的循环移位,即使在移位数不能被8整除的情况下,也能够方便、快捷地对较长的数据进行循环移位处理;该技术方案能够适用于LDPC编码、CRC校验、卷积等应用领域中,有助于减少数据计算量,极大地提高了数据处理效率。
图2示出了根据本发明一个实施例的循环移位处理方法的流程示意图,如图2所示,该方法包括如下步骤:
步骤S201,存储待循环移位的原始数据和至少一个移位数。
其中,每个移位数包括:第一部分和第二部分。具体地,至少一个移位数为二进制的移位数;每个移位数的第二部分为移位数中的低3位数据;每个移位数的第一部分为移位数中除低3位数据之外的数据。
步骤S202,从所存储的至少一个移位数中读取预设数量的未曾被读取过的移位数。
步骤S203,从所读取的预设数量的移位数中提取一未曾被提取过的移位数。
步骤S204,根据所提取的移位数的第一部分,计算用于确定循环移位结果中的每个字节所需的数据在原始数据中对应的高8位字节地址和低8位字节地址。
该方法还包括存储至少一个移位数对应的预设移位方向的步骤,那么在步骤S204中,根据移位数提取模块所提取的移位数的第一部分和预设移位方向,计算用于确定循环移位结果中的每个字节所需的数据在原始数据中对应的高8位字节地址和低8位字节地址。
考虑到上述计算得到的高8位字节地址和/或低8位字节地址可能存在着不符合原始数据的字节地址范围的情况,为了能够成功地实现循环移位,还需判断高8位字节地址和/或低8位字节地址是否符合原始数据的字节地址范围;若否,则利用预设算法对不符合原始数据的字节地址范围的高8位字节地址和/或低8位字节地址进行修正处理。
步骤S205,提取所存储的原始数据。
步骤S206,根据高8位字节地址对所提取的原始数据进行字节重排,得到用于确定循环移位结果中的每个字节所需的高8位字节数据。
步骤S207,根据低8位字节地址对所提取的原始数据进行字节重排,得到用于确定循环移位结果中的每个字节所需的低8位字节数据。
步骤S208,将每个字节所需的高8位字节数据和低8位字节数据并行地进行拼接,得到每个字节对应的拼接数据。
其中,将每个字节所需的高8位字节数据作为拼接数据中的高8位数据,将每个字节所需的低8位字节数据作为拼接数据中的低8位数据,得到每个字节对应的16位的拼接数据。
步骤S209,按照所提取的移位数的第二部分,对所有字节对应的拼接数据进行移位处理,得到循环移位结果。
具体地,按照所提取的移位数的第二部分,对每个字节对应的拼接数据进行移位处理,得到每个字节对应的中间移位数据;将每个字节对应的中间移位数据中的低8位数据确定为每个字节对应的移位结果;根据所有字节对应的移位结果,得到循环移位结果。
可选地,该方法还可包括判断所存储的至少一个移位数是否都被读取过和判断所读取的预设数量的移位数是否都被提取过的步骤。具体地,判断所存储的至少一个移位数是否都被读取过;若是,则终止读取移位数;若否,则执行步骤S202。判断所读取的预设数量的移位数是否都被提取过;若是,则执行判断所存储的至少一个移位数是否都被读取过的步骤;若否,则执行步骤S203。
根据本实施例提供的循环移位处理方法,将移位数分成第一部分和第二部分,根据移位数的第一部分和原始数据,得到用于确定循环移位结果中的每个字节所需的高8位字节数据和低8位字节数据,并将每个字节所需的高8位字节数据和低8位字节数据并行地进行拼接,得到每个字节对应的拼接数据,然后根据移位数的第二部分,对所有字节对应的拼接数据进行移位处理,得到循环移位结果。本发明提供的技术方案能够以比特为操作单位进行循环移位处理,有效地实现了比特级的循环移位,即使在移位数不能被8整除的情况下,也能够方便、快捷地对较长的数据进行循环移位处理;该技术方案能够适用于LDPC编码、CRC校验、卷积等应用领域中,有助于减少数据计算量,极大地提高了数据处理效率。
本发明还提供了一种非易失性计算机存储介质,计算机存储介质存储有至少一可执行指令,可执行指令可执行上述任意方法实施例中的循环移位处理方法。
图3示出了根据本发明实施例的一种计算设备的结构示意图,本发明具体实施例并不对计算设备的具体实现做限定。
如图3所示,该计算设备可以包括:处理器(processor)302、通信接口(Communications Interface)304、存储器(memory)306、以及通信总线308。
其中:
处理器302、通信接口304、以及存储器306通过通信总线308完成相互间的通信。
通信接口304,用于与其它设备比如客户端或其它服务器等的网元通信。
处理器302,用于执行程序310,具体可以执行上述循环移位处理方法实施例中的相关步骤。
具体地,程序310可以包括程序代码,该程序代码包括计算机操作指令。
处理器302可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。计算设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器306,用于存放程序310。存储器306可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序310具体可以用于使得处理器302执行上述任意方法实施例中的循环移位处理方法。程序310中各步骤的具体实现可以参见上述循环移位处理实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (10)
1.一种循环移位处理装置,其特征在于,所述装置包括:
外缓存模块,用于存储待循环移位的原始数据和至少一个移位数;每个移位数包括:第一部分和第二部分;
移位数读取模块,用于从所述外缓存模块中读取预设数量的未曾被读取过的移位数;
移位数提取模块,用于从所读取的预设数量的移位数中提取一未曾被提取过的移位数;
字节重排地址计算模块,用于根据所述移位数提取模块所提取的移位数的第一部分,计算用于确定循环移位结果中的每个字节所需的数据在原始数据中对应的高8位字节地址和低8位字节地址;
原始数据提取模块,用于从所述外缓存模块中提取所述原始数据;
字节重排模块,用于根据所述高8位字节地址对所述原始数据提取模块所提取的原始数据进行字节重排,得到用于确定循环移位结果中的每个字节所需的高8位字节数据;根据所述低8位字节地址对所述原始数据提取模块所提取的原始数据进行字节重排,得到用于确定循环移位结果中的每个字节所需的低8位字节数据;
拼接移位模块,用于将每个字节所需的高8位字节数据和低8位字节数据并行地进行拼接,得到每个字节对应的拼接数据;按照所述移位数提取模块所提取的移位数的第二部分,对所有字节对应的拼接数据进行移位处理,得到循环移位结果。
2.根据权利要求1所述的装置,其特征在于,所述至少一个移位数为二进制的移位数;每个移位数的第二部分为所述移位数中的低3位数据;每个移位数的第一部分为所述移位数中除低3位数据之外的数据。
3.根据权利要求1所述的装置,其特征在于,所述外缓存模块进一步用于:存储所述至少一个移位数对应的预设移位方向;
所述字节重排地址计算模块进一步用于:根据所述移位数提取模块所提取的移位数的第一部分和所述预设移位方向,计算用于确定循环移位结果中的每个字节所需的数据在原始数据中对应的高8位字节地址和低8位字节地址。
4.根据权利要求1所述的装置,其特征在于,所述拼接移位模块进一步用于:将每个字节所需的高8位字节数据作为拼接数据中的高8位数据,将每个字节所需的低8位字节数据作为拼接数据中的低8位数据,得到每个字节对应的16位的拼接数据。
5.根据权利要求1-4任一项所述的装置,其特征在于,所述拼接移位模块进一步用于:按照所述移位数提取模块所提取的移位数的第二部分,对每个字节对应的拼接数据进行移位处理,得到每个字节对应的中间移位数据;将每个字节对应的中间移位数据中的低8位数据确定为每个字节对应的移位结果;根据所有字节对应的移位结果,得到循环移位结果。
6.根据权利要求1所述的装置,其特征在于,所述移位数提取模块进一步用于:将所提取的移位数的第一部分和第二部分进行广播。
7.一种循环移位处理方法,其特征在于,所述方法包括:
存储待循环移位的原始数据和至少一个移位数;每个移位数包括:第一部分和第二部分;
从所存储的至少一个移位数中读取预设数量的未曾被读取过的移位数;
从所读取的预设数量的移位数中提取一未曾被提取过的移位数;
根据所提取的移位数的第一部分,计算用于确定循环移位结果中的每个字节所需的数据在原始数据中对应的高8位字节地址和低8位字节地址;
提取所存储的原始数据;
根据所述高8位字节地址对所提取的原始数据进行字节重排,得到用于确定循环移位结果中的每个字节所需的高8位字节数据;
根据所述低8位字节地址对所提取的原始数据进行字节重排,得到用于确定循环移位结果中的每个字节所需的低8位字节数据;
将每个字节所需的高8位字节数据和低8位字节数据并行地进行拼接,得到每个字节对应的拼接数据;
按照所提取的移位数的第二部分,对所有字节对应的拼接数据进行移位处理,得到循环移位结果。
8.根据权利要求7所述的方法,其特征在于,所述按照所提取的移位数的第二部分,对所有字节对应的拼接数据进行移位处理,得到循环移位结果进一步包括:
按照所提取的移位数的第二部分,对每个字节对应的拼接数据进行移位处理,得到每个字节对应的中间移位数据;
将每个字节对应的中间移位数据中的低8位数据确定为每个字节对应的移位结果;
根据所有字节对应的移位结果,得到循环移位结果。
9.一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求7或8所述的循环移位处理方法对应的操作。
10.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求7或8所述的循环移位处理方法对应的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811610064.8A CN109756231B (zh) | 2018-12-27 | 2018-12-27 | 循环移位处理装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811610064.8A CN109756231B (zh) | 2018-12-27 | 2018-12-27 | 循环移位处理装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109756231A CN109756231A (zh) | 2019-05-14 |
CN109756231B true CN109756231B (zh) | 2023-01-31 |
Family
ID=66404070
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811610064.8A Active CN109756231B (zh) | 2018-12-27 | 2018-12-27 | 循环移位处理装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109756231B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110247912B (zh) * | 2019-06-14 | 2021-10-26 | 广州中安电工高新科技股份有限公司 | 一种数据处理方法及装置 |
CN115765750B (zh) * | 2023-01-09 | 2023-05-19 | 摩尔线程智能科技(北京)有限责任公司 | 数据循环移位方法和电路、以及芯片 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5394133A (en) * | 1977-01-28 | 1978-08-17 | Hitachi Ltd | Data converter |
US4219874A (en) * | 1978-03-17 | 1980-08-26 | Gusev Valery | Data processing device for variable length multibyte data fields |
SU1658155A1 (ru) * | 1989-03-06 | 1991-06-23 | Предприятие П/Я М-5339 | Устройство дл предсказани четности результата сдвигател |
US6675181B1 (en) * | 1999-12-23 | 2004-01-06 | Ati International, Srl | Method and apparatus for determining a byte select vector for a crossbar shifter |
CN1734527A (zh) * | 2000-03-09 | 2006-02-15 | 三菱电机株式会社 | 数据变换装置和数据变换方法 |
CN102171936A (zh) * | 2008-10-08 | 2011-08-31 | 索尼公司 | 循环移位设备、循环移位方法、ldpc解码设备、电视接收机和接收系统 |
CN104461447A (zh) * | 2013-09-18 | 2015-03-25 | 中国人民解放军信息工程大学 | 基于互连网络的移位控制信息生成方法、电路和移位器 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5112353B2 (ja) * | 2009-01-29 | 2013-01-09 | 株式会社東芝 | 無線通信装置及び無線通信方法 |
US9021000B2 (en) * | 2012-06-29 | 2015-04-28 | International Business Machines Corporation | High speed and low power circuit structure for barrel shifter |
CN107027326B (zh) * | 2015-11-25 | 2018-12-07 | 华为技术有限公司 | 存储系统中数据备份的方法及装置 |
-
2018
- 2018-12-27 CN CN201811610064.8A patent/CN109756231B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5394133A (en) * | 1977-01-28 | 1978-08-17 | Hitachi Ltd | Data converter |
US4219874A (en) * | 1978-03-17 | 1980-08-26 | Gusev Valery | Data processing device for variable length multibyte data fields |
SU1658155A1 (ru) * | 1989-03-06 | 1991-06-23 | Предприятие П/Я М-5339 | Устройство дл предсказани четности результата сдвигател |
US6675181B1 (en) * | 1999-12-23 | 2004-01-06 | Ati International, Srl | Method and apparatus for determining a byte select vector for a crossbar shifter |
CN1734527A (zh) * | 2000-03-09 | 2006-02-15 | 三菱电机株式会社 | 数据变换装置和数据变换方法 |
CN102171936A (zh) * | 2008-10-08 | 2011-08-31 | 索尼公司 | 循环移位设备、循环移位方法、ldpc解码设备、电视接收机和接收系统 |
CN104461447A (zh) * | 2013-09-18 | 2015-03-25 | 中国人民解放军信息工程大学 | 基于互连网络的移位控制信息生成方法、电路和移位器 |
Non-Patent Citations (2)
Title |
---|
32位桶式移位寄存器FPGA实现;杜慧敏等;《西安邮电学院学报》;20080110(第01期);105-108 * |
Rijndael优化实现研究;韦宝典等;《计算机工程与应用》;20021015(第20期);9-11 * |
Also Published As
Publication number | Publication date |
---|---|
CN109756231A (zh) | 2019-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11687341B2 (en) | Multi-variate strided read operations for accessing matrix operands | |
EP2226725A2 (en) | Programmable processor and method with wide operations | |
WO2015200760A1 (en) | Parllel decompressing of executables for accelerating the launch and performance. | |
US9391641B2 (en) | Syndrome tables for decoding turbo-product codes | |
CN109756231B (zh) | 循环移位处理装置及方法 | |
CN104299637A (zh) | 快闪存储器装置及其运作方法 | |
JPH0477338B2 (zh) | ||
CN111384972B (zh) | 多进制ldpc解码算法的优化方法、装置及解码器 | |
CN111104092B (zh) | 一种快速除法器和除法运算方法 | |
CN107193685B (zh) | 基于闪存存储设备的纠删方法及装置 | |
CN110221807B (zh) | 数据移位方法、装置、设备及计算机可读存储介质 | |
CN114327244A (zh) | 数据迁移的方法、装置、处理器和计算设备 | |
CN110570171A (zh) | 交易池节点同步方法、电子设备和计算机可读存储介质 | |
CN108228238B (zh) | 用于确定具有多个数据元素的数据集合中的最小的两个值的方法及装置 | |
CN108062289B (zh) | 快速傅里叶变换fft地址换序方法、信号处理方法及装置 | |
CN113485751B (zh) | 执行伽罗瓦域乘法的方法、运算单元和电子装置 | |
CN115357216A (zh) | 数据处理方法、介质、电子设备和程序产品 | |
CN111224674B (zh) | 多进制ldpc码的解码方法、装置及解码器 | |
US6144321A (en) | Microprocessor dedicated to processing of bit streams in a system of compression/decompression of animated images | |
US6133859A (en) | Microprocessor dedicated to processing of bit streams in a system of compression/decompression of animated images | |
CN109857340B (zh) | Nor flash中文件的存储和读取方法、装置及存储介质 | |
US10027345B2 (en) | Wall encoding and decoding | |
CN111384976A (zh) | 稀疏校验矩阵的存储方法和读取方法 | |
CN116662063B (zh) | 一种闪存的纠错配置方法、纠错方法、系统、设备及介质 | |
US20230075534A1 (en) | Masked shifted add operation |
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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 201306 building C, No. 888, Huanhu West 2nd Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai Patentee after: Shanghai Silang Technology Co.,Ltd. Address before: 100176 room 506-1, 5th floor, building 6, courtyard 10, KEGU 1st Street, Beijing Economic and Technological Development Zone, Daxing District, Beijing Patentee before: Beijing Si Lang science and Technology Co.,Ltd. |