提高编译码处理效率的方法

文档序号:7600884阅读:290来源:国知局
专利名称:提高编译码处理效率的方法
技术领域
本发明涉及通信技术领域,具体涉及一种提高编码、译码处理效率的方法。
背景技术
目前,编码和译码处理已经在通信领域中占据十分重要的地位。在整个编译码过程中,通常需要经过编/译码前处理、编/译码和编/译码后处理三个处理步骤。由编/译码前处理单元、编/译码器和编/译码后处理单元构成的编/译码系统通过对外提供灵活的接口而在不同的通信过程中得到广泛应用。
以WCDMA系统基带部分上行译码处理过程为例,如图1所示,该译码系统通过数字信号处理(DSP,Digital Signal Processing)与可编程逻辑器件(FPGA)相结合,或者通过数字信号处理(DSP,Digital Signal Processing)与特定用途集成电路(ASIC,Application Specific Integrated Circuit)相结合的方式实现,其中DSP完成解调后译码前的数据处理和译码后数据的处理,FPGA或ASIC用来实现译码器,完成Turbo码和Viterbi码的译码处理。在译码器与译码前处理单元之间具有缓冲区,用于将完成译码前处理的数据进行缓存,等待进行译码;同样,在译码器与译码后处理单元之间具有缓冲区,用于将完成译码的数据进行缓存,等待进行译码后处理。
在现有技术中,以WCDMA系统基带部分上行译码处理过程为例,译码处理的方式为DSP与译码器完全串行工作。参照图1,该译码系统的具体工作方法为数据解调后输入译码前处理单元,DSP对解调后的数据进行译码前处理;译码前处理完成后,将数据送入缓冲单元等候译码器进行译码处理;译码器完成译码处理后,将数据送入缓冲单元等待译码后处理;译码后处理单元从缓冲区中读取译码后数据,进行译码后处理。由上述方法可知,在整个译码处理工程中,数据分别经过译码前处理单元,缓冲区,译码器,缓冲区,译码后处理单元。
该方法所带来的缺陷是由于译码前处理单元、译码器和译码后处理单元为串行工作模式,即在前一个单元完成处理并将数据送入缓冲区后,后一个单元才能从缓冲区中获取该数据继续进行处理,因而,在这种工作模式下,造成译码过程中的处理延时较大,系统处理效率较低。在译码处理系统中,DSP和译码器是两个独立的功能单元,为了提高系统译码处理效率,缩短译码过程中的处理延时,在现有技术的基础上,通常将系统中各单元处理器件的处理能力、器件处理速度提高,但由于受到现有技术中译码处理方法的限制,各处理器件在整个译码处理过程中仍然经常处于空闲状态,进而在译码处理过程中无法充分发挥器件的优良性能。
综上所述,简单的提高器件的处理能力并不能有效解决上述的技术问题,并且还加大了系统成本。

发明内容
本发明要解决的问题是提供一种提高编码或译码处理效率的方法,该方法可以有效缩短编译码处理过程中的处理延时,提高编/译码处理的效率。
为解决上述技术问题,本发明提供了一种提高编/译码处理效率的方法,用于提高由编/译码前处理单元、编/译码器和编/译码后处理单元构成的编/译码处理系统的处理效率,其具体的实现方法为在编/译码前处理单元与编/译码器之间预置第一缓冲区组,在编/译码器与编/译码后处理单元之间预置第二缓冲区组;在编/译码系统工作过程中,并行进行以下操作编/译码前处理单元将编/译码前的数据写入第一缓冲区组的空置缓冲区;同时,编/译码器从第一缓冲区组的非空缓冲区中获取所述编/译码前的数据进行编/译码,并将编/译码后的数据写入第二缓冲区组中的空置缓冲区;同时,编/译码后处理单元从第二缓冲区组的非空缓冲区中获取所述编/译码后的数据进行编/译码后处理。
上述方法中,中编/译码器按照编/译码前处理单元写入数据的顺序获取缓冲区组中的数据;并且编/译码后处理单元按照编/译码器写入数据的顺序获取缓冲区组中的数据。
上述方法中,在进行编/译码之前,还要判断第二缓冲区组中是否有空置的缓冲区,若没有空置的缓冲区,则延迟编/译码器的处理;并且在编/译码完成后释放所述第一缓冲区组的非空缓冲区的子步骤;在编/译码后处理完成后释放所述第二缓冲区组的非空缓冲区的子步骤。在进行编/译码之前,判断编/译码器资源是否空闲,如果编译/码器资源被占用,则延迟编/译码的处理;并且在编/译码器的编/译码完成后立即释放译码器资源。
上述方法中的第一和第二缓冲区组包含至少两个缓冲区。所述编/译码器为拓扑码Turbo的编/译码器或卷积码的编/译码器。并且在本发明中使用信号量的方法进行,将有益于提高编/译码系统的处理效率。
由以上技术方案可以看出,本发明中在各处理单元间预置了多个缓冲区,并且在对缓冲区资源的调度中,使前一个处理单元向缓冲区写入数据的过程与后一个单元从缓冲区获取数据的过程同步,进而使编/译码前处理、编/译码和编/译码后处理同步进行,从而有效减小了业务处理时延,提高了系统容量;同时,由于本发明提高了系统中各单元的并行处理能力,从而减少了编译码过程中各器件的空闲,充分发挥了器件的处理性能。


图1是现有技术编/译码处理过程原理图;图2是本发明所述方法示意图。
具体实施例方式
由于在编/译码系统中,编/译码前处理单元、编/译码器和编/译码后处理单元是独立的功能单元,因而本发明重点考虑了编/译码前后缓冲区的使用和各功能单元之间的通信方式。进而本发明所述方法的核心在于充分发挥了编/译码系统中各功能单元的并行处理能力。
为了使本技术领域的人员更好地理解本发明方案,通过具体实施例对本发明作进一步的详细说明。
一般的编/译码系统包括编/译码前处理单元,编/译码器和编/译码后处理单元,并且通常在编/译码前处理单元与编/译码器之间、编/译码器与编/译码后处理单元之间有缓冲区。参照图2,本实施例中,在编/译码前处理单元与编/译码器之间预置第一缓冲区组,在编/译码器与编/译码后处理单元之间预置第二缓冲区组。并且第一缓冲区组由缓冲区11和缓冲区12组成,第二缓冲区组由缓冲区21和缓冲区22组成。
编/译码处理系统的一般处理流程是编译码前处理单元接收数据进行编/译码前处理,并将处理过的数据送入缓存单元等待编/译码器的编码或译码,编/译码完成后,编/译码器将完成编码或译码后的数据送到缓冲区中,等待编/译码后处理单元的处理。在本发明中,首先预置了上述的两个缓冲区组,在进行编译码处理中遵循以下处理机制在编译码前的过程中,第一缓冲区组采用乒乓切换的工作模式,即当编/译码前处理完成后,将数据写入缓冲区11,同时编译码器从缓冲区12中获取等待进行编码或译码的数据,并进行编译码;缓冲区12中数据被编译码器获取完毕后,即编译码器完成该缓冲区中数据的编/译码后,缓冲区12被置空,等待写入新的经过编/译码前处理的待编/译的数据;并且缓冲区11中的数据将被编/译码器获取进行编/译码处理。
同理,在编/译码后的过程中,第二缓冲区组也采用乒乓切换的工作模式,即当编/译码完成后,编/译码器将数据写入缓冲区21,同时编/译码后处理单元从缓冲区22中获取完成编码或译码的数据,并进行编/译码后处理;缓冲区22中数据完成编/译码后处理,则缓冲区22被置空,等待写入新的经过编/译码的数据;并且编/译码后处理单元将从缓冲区21中获取数据进行编/译码后处理。
为了能够保证以上两个过程的同步进行,在译码器准备对第一缓冲区组中的数据进行译码时,判断第二缓冲区组中是否有空置的缓冲区可以提供给编/译码器,用于写入完成编/译码的数据,如果第二缓冲区组中有空置的缓冲区,则启动编/译码器的编码或译码处理,否则延迟编码或译码处理。
针对上述的处理流程,以WCDMA基带上行译码处理为例,本发明的具体实施例中设计了三个任务,具体为译码任务、译码中断、译码后处理任务。译码任务和译码后处理任务为同一个优先级,三个任务中,译码中断的优先级最高,译码器完成译码后即触发译码中断。
下面采用伪码的形式介绍各任务的处理流程和任务间关系,为了易于理解,先介绍几个基本的概念任务状态三种任务存在期间,一般有三种状态,即就绪状态、阻塞状态和运行状态。
就绪状态该任务已经满足运行条件,已经进入待处理任务队列,但是还有更高优先级的任务在运行;阻塞状态任务未满足运行条件;运行状态任务正在进行。
上述状态间的切换采用信号量SEM来控制,译码任务中使用信号量SEM_Dec,译码后处理任务使用信号量SEM_AftDec。
译码器的管理译码器为一种资源,采用信号量SEM_Dec来管理,SEM_Dec初始化为1,表示译码器可用,当启动译码后,SEM_Dec减1变为0,表示译码器被占用,当译码完毕后SEM_Dec加1,表示译码器可用。
乒乓缓冲区的管理乒乓缓冲区是一种资源,采用一变量g_DecOutPingPongState来管理译码后乒乓缓冲区资源的占用状况,g_DecOutPingPongState初始化为2表示乒乓缓冲区中乒乓均可用(如前面所述,本实施例中一个缓冲区组中包括两个缓冲区),译码任务中g_DecOutPingPongState减1,表示占用乒乓中一块,译码后处理任务中g_DecOutPingPongState加1,表示释放乒乓中一块,当g_DecOutPingPongState为0时表示译码后乒乓缓冲区已经不可用。译码后乒乓缓冲区的读写使用读指针g_DecOutPingPongRFlg和写指针g_DecOutPingPongWFlg,译码任务维护写指针g_DecOutPingPongWFlg,译码后处理任务维护读指针g_DecOutPingPongRFlg,g_DecOutPingPongRFlg和g_DecOutPingPongWFlg都初始化为乒,运行过程中在乒乓间做切换。
本发明的伪码描述具体为1)译码任务译码前处理;译码前数据填入译码前输入乒乓缓冲区;译码前输入乒乓缓冲区乒乓切换;if(0==SEM_Dec){译码任务进入阻塞状态;}译码器资源占用SEM_Dec--;译码器译码参数准备;if(0==DecOutPingPongState){译码任务挂起,进入就绪状态;译码后处理任务激活,进入运行状态;}译码后乒乓缓冲区写指针g_DecOutPingPongWFlg乒乓切换;
译码后乒乓缓冲区占用g_DecOutPingPongState-1;启动译码器开始译码;2)译码中断译码器资源释放SEM_Dec++;译码后处理任务信号量释放SEM_AftDec++;3)译码后处理任务if(0==SEM_AftDec){译码后处理任务进入阻塞状态;}SEM_AftDec--;对译码后乒乓缓冲区读指针g_DecOutPingPongRFlg指示的译码后缓冲区数据进行处理;译码后乒乓缓冲区读指针g_DecOutPingPongRFlg乒乓切换;译码后乒乓缓冲区释放g_DecOutPingPongState+1;译码任务和译码后处理任务的优先级设置为同样高,译码中断任务的处理之中先释放译码器资源SEM_Dec,可以使译码任务有更多的启动机会。由于译码器和DSP是独立的功能单元,可以进行并行处理,因而为了提高功能单元的并行处理能力,应该给译码器更多的启动机会;同时,利用前文介绍的资源管理策略约束了任务间的运行关系,保证了译码任务和译码后处理任务间的同步,因为当g_DecOutPingPongState为0时表明译码后乒乓缓冲区已经被完全占有,译码后处理任务肯定已经满足运行条件,这时主动挂起译码任务并且激活译码后处理任务,正是因为这种约束关系,保证了译码任务和译码后处理任务运行次数的差值不会超过2次,这样任务间对译码后乒乓缓冲区的读写就能同步。
以上具体介绍了本发明的一个实施例,所述实施例中,每个缓冲区组中包括两个缓冲区,如果有足够的缓存资源,译码前后可以分别设置多个缓冲区;当缓冲区数大于2时,改变缓冲区资源的管理方式,例如缓冲区块数为3,则缓冲区占用状态初始化为3,在译码任务中减1进行缓冲区占用,在译码后处理任务中加1进行缓冲区释放,读写指针取值在0,1,2间顺序切换,可以达到更好的并行效果。
在多缓冲区的情况下,除了上述顺序获取缓冲区中数据的方法外,还可以针对不同业务类型,根据处理的需要将缓冲区进行划分,依据数据包的标识,将需要先进行编译码的数据装入优先级较高的缓冲区中,则每次处理单元从缓冲区中获取数据时,优先获取优先级较高的缓冲区中的数据进行处理。上述关于调用缓冲区中数据的实现方式多种多样,有各自的优点,在实现本发明所述的方法时根据具体的业务需要,可以选取恰当的调用方式以增进本发明的有益效果。
以上对本发明所提供的提高编/译码处理效率的方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种提高编/译码处理效率的方法,用于提高由编/译码前处理单元、编/译码器和编/译码后处理单元构成的编/译码处理系统的处理效率,其特征在于1)在编/译码前处理单元与编/译码器之间预置第一缓冲区组,在编/译码器与编/译码后处理单元之间预置第二缓冲区组;编/译码系统工作过程中,并行进行以下操作21)编/译码前处理单元将编/译码前的数据写入第一缓冲区组的空置缓冲区;22)同时,编/译码器从第一缓冲区组的非空缓冲区中获取所述编/译码前的数据进行编/译码,并将编/译码后的数据写入第二缓冲区组中的空置缓冲区;23)同时,编/译码后处理单元从第二缓冲区组的非空缓冲区中获取所述编/译码后的数据进行编/译码后处理。
2.如权利要求1所述的提高编/译码处理效率的方法,其特征在于操作22)中编/译码器按照编/译码前处理单元写入数据的顺序获取缓冲区组中的数据;操作23)中编/译码后处理单元按照编/译码器写入数据的顺序获取缓冲区组中的数据。
3.如权利要求1或2所述的提高编/译码处理效率的方法,其特征在于,操作22)中在所述编/译码器进行编/译码前还包括判断第二缓冲区组中是否有空置的缓冲区,若有则进行编/译码器的处理,否则延迟编/译码器的处理。
4.如权利要求3所述的提高编/译码处理效率的方法,其特征在于操作22)中完成编/译码后,释放所述第一缓冲区组的非空缓冲区;操作23)中完成编/译码后处理,释放所述第二缓冲区组的非空缓冲区。
5.如权利要求1或2所述的提高编/译码处理效率的方法,其特征在于操作22)中在所述编/译码器进行编/译码前还包括判断编/译码器资源是否空闲,如果空闲则进行编/译码器的处理,否则延迟编/译码器的处理;并且,编/译码完成后释放编/译码器资源。
6.如权利要求1所述的提高编/译码处理效率的方法,其特征在于在并行进行的操作中,采用信号量的方法对缓冲区和译码器资源进行管理。
7.如权利要求1所述的提高编/译码处理效率的方法,其特征在于所述编/译码器为拓扑码Turbo的编/译码器。
8.如权利要求1所述的提高编/译码处理效率的方法,其特征在于所述编/译码器为卷积码的编/译码器。
9.如权利要求1所述的提高编/译码处理效率的方法,其特征在于所述第一和第二缓冲区组中分别包含两个缓冲区。
全文摘要
本发明涉及一种提高编译码处理效率的方法,具体为在编/译码前处理单元与编/译码器之间预置第一缓冲区组,在编/译码器与编/译码后处理单元之间预置第二缓冲区组;在编/译码系统工作过程中,并行进行以下操作编/译码前处理单元将编/译码前的数据写入第一缓冲区组的空置缓冲区;同时,编/译码器从第一缓冲区组的非空缓冲区中获取所述编/译码前的数据进行编/译码,并将编/译码后的数据写入第二缓冲区组中的空置缓冲区;同时,编/译码后处理单元从第二缓冲区组的非空缓冲区中获取所述编/译码后的数据进行编/译码后处理。该方法能有效减小业务处理时延,提高系统容量,减少编译码过程中各器件的空闲,充分发挥器件的处理性能。
文档编号H04L29/00GK1791089SQ200410101319
公开日2006年6月21日 申请日期2004年12月17日 优先权日2004年12月17日
发明者徐昌平 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1