一种基于gpp和simd技术的信道编译码的数据格式转换方法

文档序号:7782183阅读:404来源:国知局
一种基于gpp和simd技术的信道编译码的数据格式转换方法
【专利摘要】一种基于GPP和SIMD技术的信道编译码的数据格式转换方法,其中编码前的处理是先将字长为n个字节的输入数据流A0A1A2...An-1封装为s个长度为M的SIMD格式数据,使其数据格式并行化,能够适用SIMD指令而对其执行并行的“映射”操作,再执行并行的“与”操作,最后执行并行的“选取较小值”操作,生成字长为8n个字节的输出数据流B0B1B2...B8n-1;其中译码后的处理是先将字长为8n个字节的输入数据流C0C1C2...C8n-1封装为8s个长度为M的SIMD格式数据,对其执行并行的“判断是否相等”操作,再执行并行的“选取最高位组合”操作,生成字长为n个字节的输出数据流D0D1D2...Dn-1。本发明使用SIMD并行操作指令,大大加快数据格式的转换速度,且保证传输性能和编译码的正确性。还具有成本低、可移植性好、调试简单和升级简便等特点。
【专利说明】一种基于GPP和SI MD技术的信道编译码的数据格式转换方法
【技术领域】
[0001]本发明涉及一种基于通用处理器GPP (General Purpose Processor)和单指令多数据流SIMD (Single Instruction Multiple Data)技术的信道编译码的数据格式转换方法,属于通信编译码的【技术领域】。
【背景技术】
[0002]在信道编码技术中,如Turbo码、低密度奇偶校验LDPC (Low Density ParityCheck)码和卷积码等,由于其纠错性能优越,近10年来在高速无线通信制式(3G或4G的系统)中得到了广泛使用。例如,在长期演进技术LTE/长期演进技术升级版LTE-A (LongTerm Evolution/Long Term Evolution Advanced)的系统中,使用了 Turbo 码和卷积码;在802.11系统中,使用了 LDPC码和卷积码。
[0003]此类信道的编码译码具有极高的时间复杂度,即需要耗费大量的计算时间。然而,新兴的无线通信制式又是面向大数据量的通信手段。传统的通信实现方案大都是基于硬件处理平台,硬件平台具有下 述多个问题:成本高,平台适用范围局限,调试过程繁琐,开发周期长,程序升级不便等。
[0004]近5年来,以通用处理器GPP平台为基础的软件无线电正在逐渐成熟。在克服了硬件平台上述缺点的同时,软件无线电技术在运算速度上也存在瓶颈。如何减少信道编码译码带来的计算复杂度,降低时间延迟,已经成为打破通信系统传输速率瓶颈的主要方法。
[0005]在GPP平台上,数据的传输和存储都是以字节为基本单位,因此在计算过程中,大多以字节为最小计算单位。而在通信系统中,信息是以比特形式存储或处理的,也就是按照比特执行:以一个比特表示一个单位信息,被称之为比特形式。在GPP平台上,目前最高效的信道编译码实现算法都是以字节作为最小计算单位,即以一个字节表示一个比特信息,被称之为字节形式。因此,信道编码必须具有将数据流的比特形式转换为字节形式的数据格式转换功能。如何完成数据流的比特形式与字节形式的相互转换功能,已经成为当前不可避免的信道编码前端的数据格式转换功能和信道译码后端的数据格式转换功能。
[0006]信道编码的数据格式转换的目的是:将字长为η个字节的比特形式的输入数据流AtlA1A2...An^1转换为字长为8η个字节的字节形式的输出数据流BtlB1B2...B8n^10因为任意一个Ag (O≤g≤η-1)和Bh (O8n-l)都是I个字节,即字长为8个比特,其下标数字越小,代表其完成的数据格式转换也越早。其中,Ag=(a8ga8g+1a8g+2a8g+3a8g+4a
8g+5a8g+6a8g+7),
因其中任意一个元素a都是I个比特,a的下标数字越小,代表越靠近其所在字节的低位,Bh= (ah0000000),ah为输入数据流A中的第h个比特,其位于Bh字节中的最低位。
[0007]信道译码的数据格式转换的目的是完成上述信道编码的逆操作:将字长为Sn个字节的字节形式的输入数据流CtlC1C2...C8lri转换为字长为η个字节的比特形式的输出数据流D0D1D2...Dn_lt)因为任意一个C1(OSlSSn-1)和De (OSeSn-1)都是I个字节,即字长为8个比特,其下标数字越小,代表其完成的数据格式转换也越早。其中,C1=(CiiOOOOOOO),di为输出数据流D中的第I个比特,其位于C1字节中的最低位;De= (d8ed8e+1d8e+2d8e+3d8e+4d8e+5d8e+6d8e+7),而其中任意一个元素d都是I个比特,d的下标数字越小,代表其越靠近所在字节的低位。
[0008]在GPP架构下的信道编码数据格式转换的传统方法是:使用基于移位和“与”的操作完成的。以单字节Atl为例,将其转化为8个字节BtlB1B2B3B4B5B6B7时,该字节A0=(a0a1a2a3a4a5a6a7)要循环执行8次下述操作:每次操作内容都是Bf=(AQ〈〈f)&l,其中,f 为字节序号,且 O ≤ f ≤ 7 ;这样,当 f=4 时,B4= (A0?4)&1= (a4a5a6a700 00)&(10000000) = (a400 0 0 0 00)。因此,将输入数据流AtlA1A2...Alri转换成输出数据流BtlB1B2...B8lri时,就需要循环执行上述操作η次:每次循环只是完成输入数据流中一个字节的转换,即第g (O ^ g ^ η-1)次循环是完成前述将Ag转换为



B8gB8g+lB8g+2B8g+3B8g+4B8g+5B8g+6Bsg+7 的操作;也就是上述第g次循环都包含有8次子循环,每次子循环转换一个比特,即第f(0 < f < 7)次子循环完成B8g+f= (Ag〈〈f)&1的操作。
[0009]在GPP架构下的信道译码的数据格式转换传统方法是:基于“移位”和“异或”的操作完成的。以8个字节CtlC1C2C3C4C5C6C7为例,将其转化为I个字节Dtl时,其中的cq=(dqooooooo);先使得Dci=O=(Oooooooo),再循环执行8次下述操作:每次操作内容为:D0=D0' (Cq?q),其中,q 为字节序号,且 O ≤ q ≤ 7。这样,当 q=4 时,D0=D0' (C4>>4) = ((10Cl1d2d30000) ~ (OOOOd4OOO)KcWAdWOO)。而将输入数据流 CtlC1C2...C8lri 转换成输出数据流DtlD1D2...Dlri,就要循环执行η次上述操作,每次循环完成输入数据流中的8个字节的转换,即第e(0≤e≤η-1)次循环是完成将


^8β^8β+1^8β+2^8β+3^8β+4^8β+5^8β+6^8β+7 转换为De。上述的第e次循环操作内容是:先将De=0,再进行8次子循环,每次子循环转换一个比特,即第q(0≤q≤7)次子循环完成De=De~ (C8e+q?q)的操作。
[0010]上述两种传统方法的缺点是:每次运算的操作单位只有I个字节,进行“移位”、“与”、“异或”等操作时,效率偏低。因此,如何提高编码和译码的操作效率,解决处理速度问题,已经成为业内科技人员关注的焦点课题。
[0011]单指令流多数据流SIMD (Single Instruction Multiple Data)是一种米用一个控制器来控制多个处理器,同时对一组数据(又称“数据矢量”)中的每一个数据分别执行相同的操作,从而实现空间上的并行性处理的技术。在微处理器中,单指令流多数据流技术则是一个控制器控制多个平行的处理微元,例如Intel的MMX或SSE以及AMD的3D Now技术。

【发明内容】

[0012]有鉴于此,本发明的目的是提供一种基于通用处理器GPP (General PurposeProcessor)和单指令多数据流 SIMD (Single Instruction Multiple Data)技术的信道编译码的数据格式转换方法,该方法在保证传输性能和编译码正确性的基础上,重新设计SMD适用的转换算法,使用SMD并行操作指令,大大加快转换速度;因本发明是采用GPP芯片实现的,具有成本低、可移植性好、调试简单和升级简便等特点。
[0013]为了达到上述目的,本发明提供了一种基于通用处理器GPP (General PurposeProcessor)和单指令多数据流 SIMD (Single Instruction Multiple Data)的信道编码前的数据格式转换方法,其特征在于:先将字长为η个字节的输入数据流AtlA1A2...Alrl封装为s个长度为M的SMD格式数据,使其数据格式并行化,能够适用于SMD指令而对其执行并行的“映射”操作:将输入数据流的每个字节复制为8个字节,即将其转换为第一中间数据流EtlE1...E8lri ;再对第一中间数据流EtlE1...E8lri执行并行的“与”操作,提取各个比特信息后,将其转换为第二中间数据流FtlF1...F8lri ;最后对第二中间数据流FtlF1...F8lri执行并行的“选取较小值”操作,将各个比特信息移到其所在的字节的最低位,生成字长为8η个字节的输出数据流BtlB1B2...B8lri ;其中,字节长度n=MXs,自然数M和s分别是SIMD封装数据的长度和个数。
[0014]所述方法包括下列操作步骤:
[0015]( I)执行并行的“映射” SMD指令,完成数据复制操作:
[0016]依次对s个SMD封装数据使用“映射” SMD指令,“映射” SMD指令的X输入的SIMD封装数据为Am+0,AtM+1,...,Atsww,且每个X输入数据都要参与8次内层循环;其中,t为执行“映射” SIMD指令外层循环的操作次数序号,其取值范围是[0,s-l] ;u为执行“映射”SIMD指令内层循环的操作次数序号,其取值范围是[0,7];则第t次外层循环的第u次内层循环的“映射” SMD指令的Y输入的SMD封装数据为:
[0017]
【权利要求】
1.一种基于通用处理器GPP和单指令多数据流SMD技术的信道编码前的数据格式转换方法,其特征在于:先将字长为η个字节的输入数据流AtlA1A2...Alri封装为s个长度为M的SMD格式数据,使其数据格式并行化,能够适用于SMD指令而对其执行并行的“映射”操作:将输入数据流的每个字节复制为8个字节,即将其转换为第一中间数据流EtlE1...E8lri ;再对第一中间数据流EtlE1...E8lri执行并行的“与”操作,提取各个比特信息后,将其转换为第二中间数据流FtlF1...F8lri ;最后对第二中间数据流FtlF1...F8lri执行并行的“选取较小值”操作,将各个比特信息移到其所在的字节的最低位,生成字长为8η个字节的输出数据流B0B1B2...B8lri ;其中,字节长度n=MXs,自然数M和s分别是SIMD封装数据的长度和个数。
2.根据权利要求1所述的方法,其特征在于:所述方法包括下列操作步骤: (I)执行并行的“映射” SIMD指令,完成数据复制操作: 依次对s个SMD封装数据使用“映射” SMD指令,“映射” SMD指令的X输入的SMD封装数据为At_,AtM+1,...,AtMi1,且每个X输入数据都要参与8次内层循环;其中,t为执行“映射” SIMD指令外层循环的操作次数序号,其取值范围是[O,s-1] ;u为执行“映射” SIMD指令内层循环的操作次数序号,其取值范围是[O,7];则第t次外层循环的第u次内层循环的“映射” SMD指令的Y输入的SMD封装数据为:
3.根据权利要求1所述的方法,其特征在于:所述SIMD技术在执行每条指令时,能够并行地对两组各自包含M个元素的SIMD封装数据Xtl, X1,...Xsh和Ytl, Y1,...Ysh执行包括映射、与和选取较小值的各种操作,且此时,每对数据元素XJPYi同时执行相同操作,其中,i是SIMD封装数据中的数据序列号,其取值范围为[0,M-1];再将所得到的M个计算结果作为数据元素被封装在一组SIMD格式封装数据Ztl, I1,...Zsh中;其中,SIMD封装数据的长度M取决于封装数据的比特长度P和数据元素类型所占的比特长度Q,其计算公式为
4.根据权利要求3所述的方法,其特征在于:所述SIMD技术在执行每条指令时,也能够按照所述方法只处理一组封装数据。
5.根据权利要求3所述的方法,其特征在于: 所述“映射” SIMD指令的操作内容是:对输入的两组SMD封装数据Xtl, X1,...Xsh和Y。,Y1,...Ysh,并行地完成共M对数据执行“映射” SMD指令后,输出的SMD封装数据为Z0,11,...Zsh ;其中,输出的SIMD封装数据中的第i个元素是以Yi为下标,寻找Xci, X1,...Xsh中的对应值,即=I1.;其中,i是SIMD封装数据中的数据序号,其取值范围为[0,M-1]; 所述“与”操作的SIMD指令的操作内容是:对输入的两组封装数据为Xtl, X1,...Xsh和Ytl, Y1,...Ysh,并行地完成共M对数据执行“与” SIMD指令操作后,输出的SMD封装数据为Ztl, Z1,...Zsh ;其中,Zi=XiMi ;其中,i是SIMD封装数据中的数据序号,其取值范围为[Ο,Μ-1]; 所述“选取较小值”操作的SIMD指令操作内容是:对输入的两组封装数据为X0, X1,...Xm-!和Yo,Y1,...Υ?-1;并行地完成共M对“选取较小值” SIMD指令操作后,输出的SIMD封装数据为Z0,11,...Zh ;其中,Zi=Hiin (Xi, Yi);其中,i是SIMD封装数据中的数据序号,其取值范围为[0,M-1]。
6.一种基于GPP和SMD的信道译码后的数据格式转换方法,其特征在于:将字长为8n个字节的输入数据流CtlC1 C2...C8lri封装为8s个长度为M的SIMD封装格式数据,使其数据格式并行化,能够适用于SMD指令结构而对其执行并行的“判断是否相等”操作,将各个比特信息移到其所在的字节的最高位,从而将其转换为中间数据流GtlG1...G8lri ;再对该中间数据流GtlG1...G8lri执行并行的“选取最高位组合”操作,生成字长为η个字节的输出数据流D0D1D2...Dlri ;其中,n=MXs,自然数M和s分别是SIMD封装数据的长度和个数。
7.根据权利要求6所述的方法,其特征在于:所述方法包括下列操作步骤: (1)使用并行的“判断是否相等”SMD指令,完成将有效比特位移到所在字节的最高位的操作: 依次对8s个SMD封装数据使用“判断是否相等” SIMD指令,“判断是否相等” SIMD指令的X输入的封装数据为CkM+(l,CkM+1,...,W1, “判断是否相等” SIMD指令的Y输入的封装数据为{1,1,...,1};其中,k为执行“判断是否相等” SIMD指令的操作次数序号,其取值范围是[0,8s-l];则完成该“判断是否相等” SIMD指令后,得到的中间数据流Z为:GkM+O,GkM+1,...,GkM+M-1 ; (2)使用并行的“选取最高位组合”SIMD指令完成将连续的8个字节的每个字节的最高位合并为I个字节的操作: 依次对s个SMD封装数据使用“选取最高位组合” SIMD指令,“选取最高位组合” SIMD指令的X输入的封装数据为G8wM+(i,G8wM+1,...,G8wM+8M_i ;其中,w为执行“选取最高位组合”SIMD指令的操作次数序号,其取值范围是[0,s-Ι];则完成该“选取最高位组合”SIMD指令后,得到的最终输出数据流Z为:Dwm+0,Dwm+1,...,Dwm+m—I O
8.根据权利要求6所述的方法,其特征在于:所述SIMD技术在执行每条指令时,能够并行地对两组各自包含M个元素的SIMD封装数据Xtl, X1,...Xsh和Ytl, Y1,...Ysh执行包括判断是否相等和选取最高位组合的各种操作,且此时,每对数据元素Xi和Yi同时执行相同操作,其中,i是SIMD封装数据中的数据序号,其取值范围为[0,M-1];再将所得到的M个计算结果作为数据元素被封装在一组SIMD格式封装数据Ztl, Z1,...Zihl中;其中,封装数据的比特长度P=64X 2P ;数据元素类型为字节时,所对应的Q=8,其中,SIMD封装数据的长度M取决于封装数据的比特长度P和数据元素类型所占的比特长度Q,其计算公式为
9.根据权利要求8所述的方法,其特征在于:所述SIMD技术在执行每条指令时,也能够按照所述方法只处理一组封装数据。
10.根据权利要求8所述的方法,其特征在于: 所述“判断是否相等”的SIMD指令的操作内容是:对输入的两组封装数据为X0, X1,...Xm-!和Yo,Y1,...YiH,并行地完成共M对数据执行“判断是否相等” SIMD指令操作后,输出SMD封装数据为ZQ,Z1,...Zsh ;其中,Zi=Xi==Yi?255:0,<< = "号右侧的公式Xi==Yi?255:0为计算机语言中的条件运算符,表示:若Xi==Yi成立,则Zi=255,即Xi与Yi相等时,Zi赋值为255 ;若Xi==Yi不成立,则Zi=O,即Xi与Yi不相等时,Zi赋值为O ;式中,i是SIMD封装数据中的数据序号,其取值范围为[0,M-1]; 所述“选取最高位组合”的SIMD指令的操作内容是:对输入的封装数据为X0, X1,...X81-!,并行地完成M对选取最高位组合操作后,输出的封装数据为Ztl, I1,...Zh ;其中,
Zi= ((Xgi&0x80) <<7) ' ((Xgi+1&0x80) <<6) ' ((X8i+2&0x80) <<5) ' ((X8i+3&0x80) <<4);式 ~ ((X8i+4&0x80) ?3)' ((X8i+5&0x80) ?2)' ((X8i+6&0x80) ?I)' (X8i+7&0x80)中,i 是 SIMD 封装数据中的数据序号,其取值范围为[0,M-1]。
【文档编号】H04L1/00GK103746771SQ201310729424
【公开日】2014年4月23日 申请日期:2013年12月26日 优先权日:2013年12月26日
【发明者】牛凯, 丁忆南, 贺志强 申请人:北京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1