数字信号处理系统内消息包的处理方法

文档序号:7591847阅读:132来源:国知局
专利名称:数字信号处理系统内消息包的处理方法
技术领域
本发明涉及通信领域,特别涉及数字信号处理技术。
背景技术
数字信号处理器(Digital Signal Processor,简称″DSP″)是在模拟信号变换成数字信号以后进行高速实时处理的专用处理器。目前使用的DSP都采用哈佛结构,将程序和数据存储在各个独立的存储空间,采用独立的程序总线和数据总线同时对数据和程序进行寻址,有效提高了处理的速度。DSP的指令系统一般都采用流水线指令系统,将一个任务分解为若干个子任务,各个子任务相互重叠处理,从而减小指令周期,增大处理器的吞吐容量。一般在DSP系统中还存在专门的硬件乘法器,使乘法运算在指令周期内即可完成,可以大大提高卷积,快速傅立叶变换等运算的效率。由于DSP具有处理速度快、灵活、精确、抗干扰能力强、体积小等优点,其已经广泛应用于通信系统,特别是通信终端设备。利用DSP可以实时处理声音、图像,快速完成编码解码等操作。随着第三代移动通信技术的迅速发展,通信过程中需要进行处理的数据量越来越大,DSP的应用范围也越来越广泛,同时对DSP处理能力的要求也越来越高。
一个典型的DSP主要由中央算术逻辑单元、存储单元、接口和外围电路三个部分组成。其中中央算术逻辑单元包括算术及逻辑运算单元、累加器、累加缓冲器、并行逻辑单元、乘法器、寄存器等,用于完成指令存取和数据运算等操作。存储单元包括内部存储单元(简称“内存”)和外部存储单元(简称“外存”),用于存储数据和程序。一般来讲内存的访问速度很快,通常容量非常小,只有几百K个字节;外存的访问速度比较慢,容量相对较大,一般可达到数M字节。由于数据和程序是单独存储的,因此通常又可以将内部存储单元分为内部数据存储单元和内部程序存储单元,内部数据存储单元和内部程序存储单元通常通过独立的数据总线和程序总线进行寻址。接口和外围电路包括串行端口、并行端口、硬件定时器、中断控制机制以及锁相环电路等,可以采用同步串行传输、异步传输或者并行传输等传输模式进行数据传送,并可以执行中断操作等功能。
上面从硬件体系结构上描述了DSP的各个组成,下面将从软件体系结构方面介绍DSP的结构。一般来讲一个典型的DSP通常由底层软件模块和高层模块组成。其中底层软件模块相当于计算机系统的操作系统,主要用于管理高层模块,实现任务调度、存储管理、输入输出控制等功能。高层模块则相当于计算机系统的应用软件,用于执行特定的处理。熟悉本领域的技术人员应该知道这种特定的处理可以是对信息进行编码解码,或是信号进行调制与解调,或者对传输的消息包进行处理。不同的处理需要由不同的算法来实现,例如快速傅立叶变化,小波变换,最小均分算法等。一个典型的例子就是第三代移动通信系统中用DSP实现协议分析和处理。在这种软件系统中,高层模块之间通常采用消息包进行通信。其消息包通信示意图如图1所示。图中主要三个模块组成,底层软件模块10、高层模块11和高层模块12。
其中,底层软件模块10主要包括存储申请操作100、消息包发送操作101、消息包调度操作102以及地址释放操作103。
当模块A和模块B相互通信时,如果模块A要向模块B发送消息包,首先需要由模块A向底层模块提交消息包申请,要求为消息包分配一个地址空间。存储申请操作100就是请求底层模块为消息包分配内存空间。底层模块接收到该存储申请操作时检查内存空间是否足够,如果不足则分配外部的同步动态随机存储器(Synchronous Dynamic Random Access Memory,简称″SDRAM″)的一个地址给消息包;如果内存空间足够,则分配一个内存地址给消息包。
消息包发送操作101则是将经过高层模块处理的消息包发送到消息队列中。熟悉本领域的技术人员应该知道,消息包在消息队列中的存储顺序可以是顺序存储,也可以是分类存储。
消息包调度操作102则是将消息队列中的消息包调度给高层模块12,以便由高层模块12执行相应的处理。在执行消息包调度操作102时,需要保存原来消息包存储的地址,以便在处理结束后能够及时释放相应的地址空间。
地址释放操作103则是释放消息包占用的存储空间。由于DSP处理速度非常块,对寻址速度有很高的要求,为了寻址快速其存储空间一般不可能做得很大。为了能够有效的使用DSP存储空间,需要在每次使用以后及时释放使用的存储空间以便其能循环使用。
高层模块11主要包含消息包内容写入操作110,主要是对发出申请的消息包进行适当处理并写入相应的存储空间。
高层模块12主要执行消息包内容读取操作120,该操作用于读取存储空间中的消息包并对消息包的内容进行相应的分析和处理。熟悉本领域的技术人员可以知道,高层模块12对消息包的处理可以执行协议分析或者协议类型转换等操作。
在进行写操作时,首先执行存储申请操作100,由高层模块11向底层模块发出存储申请,底层模块查看DSP内部存储器剩余空间是否足够,如果内存空间足够,返回内存地址,如果内存空间不足,则返回外存地址,然后执行消息包内容写入操作110,最后由消息包发送操作101将消息包放入消息队列。
在进行读操作时,首先由消息包包调度操作102在消息队列中执行消息包调度,返回消息包的存储地址,然后执行消息包内容读取操作120,读取相应存储地址的消息包内容并进行相应处理,在处理完成后,执行地址释放操作103释放原来存储该消息包的内存或者外存地址。
由于DSP对外存的访问速度比较低,在执行协议分析和处理操作时,如果存在大量的访问外存操作,势必会严重制约整个软件的运行效率。为了提高外存的访问速度,通常需要采用具有高速缓冲存储器的DSP来进行处理。通过设计恰当的高速缓冲存储器算法,使中央处理器(Central ProcessingUnit,简称″CPU″)经常访问的数据大都保存在高速缓冲存储器中,从而提高CPU的访问效率。然而由于带有高速缓冲存储器的DSP价格比较昂贵,因此在实际使用过程中通常还是使用不带高速缓冲存储器的DSP。
在实际应用中,上述方案存在以下问题采用没有高速缓冲存储器的DSP处理业务时,如果大量访问外存,则会导致整个DSP处理效率低下;而采用带有高速缓冲存储器的DSP处理业务时,其处理速度得到提高,但价格比较昂贵。
造成这种情况的主要原因在于,DSP访问外存的效率远远低于其访问内存的效率。

发明内容
有鉴于此,本发明的主要目的在于提供一种数字信号处理系统内消息包的处理方法,使得在采用没有高速缓冲存储器的DSP处理业务时,其高层模块仅对内存进行存取,从而提高消息包的处理效率。
为实现上述目的,本发明提供了一种数字信号处理系统内消息包的处理方法,包含以下步骤A在数字信号处理器内存中分别设置用于暂时缓存新的消息包的申请缓存,和用于暂时缓存高层模块需要读的消息包的调度缓存;B所述高层模块通过所述内存的消息包空间、或所述申请缓存,写入新的消息包;
C所述高层模块通过所述内存的消息包空间、或所述调度缓存,对消息包进行读操作。
其中,所述申请缓存和所述调度缓存长度均大于最大消息包长度。
所述步骤B还包含以下步骤B1所述高层模块向所述内存申请消息包空间,如果成功则将所述消息包写入内存,否则进入B2;B2所述高层模块向外存申请消息包空间,并记录该外存中相应的存储地址;B3所述底层模块将所述申请缓存的状态设置为使用状态,并将其地址反馈给所述高层模块;B4所述高层模块根据所述申请缓存的地址,写入所述消息包;B5所述底层模块通过直接存储器访问,将所述申请缓存中的消息包倒换至所述外存中相应的存储地址,并将所述申请缓存的状态恢复为空闲状态。
所述步骤B5中,当所述消息包的发送到处理的时延大于直接存储器访问倒换时间,则采用异步直接存储器访问方式对该消息包进行倒换,否则采用同步等待直接存储器访问方式对该消息包进行倒换。
所述步骤C还包含以下步骤C1底层模块判断所述消息包是否在所述内存内,如果是,则向所述高层模块提供所述消息包在内存中的存储地址,进行读操作,否则执行步骤C2;C2所述底层模块保存所述消息包在外存中的存储地址,并通过直接存储器访问将所述消息包倒换至所述调度缓存内,将所述调度缓存的地址提供给所述高层模块,且设置所述调度缓存的状态为使用状态;C3所述高层模块根据所述调度缓存的地址,对所述消息包进行读操作;
C4所述底层模块判断所述消息包的存储地址是否是所述调度缓存,如果是,则将其状态恢复为空闲状态,并释放对应的外存的存储地址,否则,释放所述数据包在所述内存中相应的存储地址。
在步骤C2中,当需要倒换的消息包为1个、或需要倒换的消息包为多个且所述高层模块处理消息包的时间小于直接存储器访问倒换时间时,则采用同步等待直接存储器访问方式进行调度;当需要倒换的消息包为多个,且所述高层模块处理消息包的时间大于直接存储器访问调度时间,则采用同步等待直接存储器访问方式对第一个消息包进行倒换,此后采用异步直接存储器访问方式对后面的消息包进行倒换。
所述直接存储器访问通过外围存储器实现。
通过比较可以发现,本发明的技术方案与现有技术的区别在于,本发明通过在内部数据存储单元中开辟申请缓存和调度缓存,在进行数据存取时通过DMA方式在缓存和外存间完成数据倒换,从而提高消息包的处理效率。
这种技术方案上的区别,带来了较为明显的有益效果,即通过DMA方式自动实现内外存倒换,使高层模块处理的消息包始终保存在内存,CPU无需对外存进行访问,有效地提高了消息包的处理效率。由于在使用时并没有增加高速缓冲存储器,因此不会增加使用的成本。即通过此方法能够使原有普通DSP的处理效率大大提高,有效解决了大多数DSP内部数据存储单元空间不足的问题。


图1是DSP消息包通信示意图;图2是根据本发明一个实施例的实现申请倒换的处理流程图;图3是根据本发明一个实施例的实现调度倒换的处理流程图;图4是根据本发明一个实施例的利用异步DMA实现多个消息包调度倒换的示意图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
由于DMA存储方式是将外部存储器中的数据块直接传送到内部存储器,在经过高层模块相应的处理以后,再通过DMA通道将数据返回到原来的外部存储器。在这个过程中,不需要经过CPU的任何处理,因此其对外存的访问速度可以得到很大程度的提高,特别是要求大量数据进行内外存传送时,使用DMA方式存取的优势会更加明显。DMA具有同步、同步等待和异步等多种工作方式,根据不同的情况可以使用不同的工作方式来提高处理效率。熟悉本领域的技术人员应该知道,在DSP中DMA传送可以使用外围存储器传送(Peripheral Memory Transfer,简称″PMT″)电路来实现。
本发明一个较好的实施例是采用DMA来自动进行消息包内外存倒换,使高层模块始终对DSP内存进行读写,从而提高消息包的处理效率。为了在外存和内存之间能够进行DMA传送,需要在内存中设置两个独立的存储区域,一个称为申请缓存,一个称为调度缓存。其中申请缓存用于存储填写好的消息包,并将其通过DMA传送给外部存储器;调度缓存用于存储从外部存储器读取的消息包内容。无论是申请缓存还是调度缓存,它们都具有两种基本的状态空闲状态和使用状态。只有其状态为空闲状态时方可使用。为了确保申请缓存和调度缓存能够存储消息包的内容,要求缓存的容量应该大于消息包的最大长度。如果在执行写操作时,发现内存空间不足而要将消息包存储到外存,此时需要使用申请缓存来进行内外存倒换,这种倒换称为申请倒换;如果在执行读操作时,发现要读的消息包内容存储在外存,则要求使用调度缓存来进行内外存倒换,这种倒换称为调度倒换。
下面将详细描述根据本发明的一个实施例,单个消息包进行申请倒换和调度倒换的处理过程。
申请倒换的处理流程图如图2所示。当DSP接收到消息包存储申请时,首先执行步骤210,判断DSP的内存空间是否足够,如果DSP的内存空间不够存储一个消息包,则需要将消息包存储到外存空间,此时执行步骤220;如果DSP的内存空间足够,则执行步骤230。
在步骤220中,DSP首先申请外存,获得外存地址并将其保存在内部寄存器中,设置申请缓存为使用状态,同时将申请缓存的地址返回给高层模块。为了确保工作正常,需要将申请缓存的初始状态设置为空闲状态。熟悉本领域的技术人员应该知道,该申请缓存是在内部数据存储单元中开辟的一个固定大小的存储单元块。
在步骤230中,DSP申请内存空间,同时返回内存空间的地址给高层模块。
然后进入步骤240,高层模块填写消息包内容并将其发送到先前收到的申请缓存地址或内存地址。熟悉本领域的技术人员应该知道,该地址可以是绝对地址也可以是偏移地址。
接着进入步骤250,判断申请缓存是否为使用状态,从而决定将消息包发送到内存还是外存中的消息队列。如果申请缓存为使用状态,则表明目前正在使用申请缓存,消息包需要发送到外存,此时进入步骤260;如果申请缓存为空闲状态,那么表示没有使用申请缓存,消息包直接保存在内存中的消息队列,进入步骤270。
在步骤260中将消息包以DMA方式发送到先前保存的外存地址,并置入消息队列,同时释放申请缓存,即将申请缓存的状态设置为空闲状态。熟悉本领域的技术人员应该知道,上述DMA方式可以是DMA同步等待方式或者DMA异步方式。
在步骤270中将消息包的内容发送到内存包消息队列。
熟悉本领域的技术人员应该知道,对于申请缓存的状态可以通过设置其状态位为0或1来进行控制。
执行调度倒换的过程与中请倒换的过程几乎相反,其具体处理流程图如图3所示。首先进入步骤310,判断待读取的消息包是否在内存,如果待要读取的消息包存储在外存,则进入步骤320;如果待要读取得消息包存储在内存,则进入步骤330。
在步骤320中,首先保存外存消息包的存储地址,设置调度缓存为使用状态,然后将外存消息包的内容通过DMA方式传送到调度缓存,同时返回调度缓存地址给高层模块。为了确保工作正常,需要将调度缓存的初始状态设置为空闲状态。熟悉本领域的技术人员应该知道,调度缓存是在内部数据存储单元开辟的一个固定大小的存储单元块。
在步骤330中,保存内存地址,并将该地址直接返回给高层模块。
接着进入步骤340,由高层模块根据返回的调度缓存地址或者内存地址读取消息包中的内容,并执行相应的处理。
然后进入步骤350,判断调度缓存是否为使用状态,从而判断究竟是释放内存还是外存的地址空间。如果调度缓存状态为使用状态,则进入步骤360;如果调度缓存状态为空闲状态,则进入步骤370。
在步骤360中,释放先前保存的外存消息包地址,释放调度缓存,即将调度缓存的使用状态设置为空闲状态。
在步骤370中,释放先前保存的内存地址。
为了进一步提高消息包处理的效率,可以根据消息包处理时间和DMA倒换时间的差别为消息包倒换设置不同的DMA方式。当消息包处理时间大于DMA倒换时间时,可以采用DMA异步方式来进行消息包倒换;当消息包处理时间小于DMA倒换时间时,则可以采用DMA同步方式来进行消息包倒换。
例如对于申请倒换,假设消息包从高层模块A发往高层模块B,如果从模块A发送消息包到模块B处理消息包之间的时延大于DMA倒换时间,则可以用异步DMA进行倒换,使在进行消息包倒换的同时高层模块还可以对其他消息包进行处理;如果时延小于DMA倒换时间,则只能按照同步等待方式进行倒换。
对于调度倒换,需要分三种情形进行讨论当只有一个消息包需要调度时,则只能采用同步等待DMA方式进行倒换,倒换完毕后交给高层模块进行处理;当有多个外存包需要调度,但高层模块处理消息包的时间小于DMA倒换时间,此时只能使用同步等待方式进行倒换,这与申请倒换中时延小于DMA倒换时间的处理方式相同;当有多个外存包需要调度,并且高层模块处理包时间大于DMA倒换时间,此时需要将第一个包进行同步等待倒换,其他包则可以采用异步方式进行倒换。在第三种情况下,为了保证倒换的顺利执行,需要有在内存中开辟两个调度缓存。其具体的消息包倒换示意图如图4所示,图中主要由三个模块组成消息队列40、调度缓存45、调度缓存46。
其中消息队列40中存在多个消息包,如消息包41、消息包42、消息包43和消息包44等。消息队列40的多个消息包都存储在外部存储器中,通过调度缓存传送给高层模块进行处理。
调度缓存45和调度缓存46用于实现消息包从外存到内存的倒换。在具体的倒换过程中采用的DMA倒换方式可以是异步方式或者是同步等待方式。
上面简要描述了采用异步DMA方式对多个消息包进行调度转换的示意图中各个模块的用途,下面将具体描述其进行倒换的处理过程。
首先由调度缓存45对消息队列40中的消息包41采用同步等待方式进行倒换,在倒换完毕后交给高层模块进行处理,同时由调度缓存46采用异步方式对消息队列40中的消息包42进行调度倒换,由于高层模块对消息包处理时间大于调度倒换的时间,因此在消息包41处理完成时,消息包42已经倒换完成,此时高层模块则从调度缓存46中调用消息包42并进行处理,同时由调度缓存45以异步方式对消息队列40中的消息包43进行调度倒换,如此不断交替使用调度缓存45和调度缓存46,直到完成整个消息队列的处理。由于在整个执行过程中,高层模块一直在处理消息包,因此能够有效地提高处理效率。
虽然通过参照本发明的某些优选实施例,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种各样的改变,而不偏离所附权利要求书所限定的本发明的精神和范围。
权利要求
1.一种数字信号处理系统内消息包的处理方法,其特征在于,包含以下步骤A在数字信号处理器内存中分别设置用于暂时缓存新的消息包的申请缓存,和用于暂时缓存高层模块需要读的消息包的调度缓存;B所述高层模块通过所述内存的消息包空间、或所述申请缓存,写入新的消息包;C所述高层模块通过所述内存的消息包空间、或所述调度缓存,对消息包进行读操作。
2.根据权利要求1所述的数字信号处理系统内消息包的处理方法,其特征在于,所述申请缓存和所述调度缓存长度均大于最大消息包长度。
3.根据权利要求1或2所述的数字信号处理系统内消息包的处理方法,其特征在于,所述步骤B还包含以下步骤B1所述高层模块向所述内存申请消息包空间,如果成功则将所述消息包写入内存,否则进入B2;B2所述高层模块向外存申请消息包空间,并记录该外存中相应的存储地址;B3所述底层模块将所述申请缓存的状态设置为使用状态,并将其地址反馈给所述高层模块;B4所述高层模块根据所述申请缓存的地址,写入所述消息包;B5所述底层模块通过直接存储器访问,将所述申请缓存中的消息包倒换至所述外存中相应的存储地址,并将所述申请缓存的状态恢复为空闲状态。
4.根据权利要求3所述的数字信号处理系统内消息包的处理方法,其特征在于,所述步骤B5中,当所述消息包的发送到处理的时延大于直接存储器访问倒换时间,则采用异步直接存储器访问方式对该消息包进行倒换,否则采用同步等待直接存储器访问方式对该消息包进行倒换。
5.根据权利要求1或2所述的数字信号处理系统内消息包的处理方法,其特征在于,所述步骤C还包含以下步骤C1底层模块判断所述消息包是否在所述内存内,如果是,则向所述高层模块提供所述消息包在内存中的存储地址,进行读操作,否则执行步骤C2;C2所述底层模块保存所述消息包在外存中的存储地址,并通过直接存储器访问将所述消息包倒换至所述调度缓存内,将所述调度缓存的地址提供给所述高层模块,且设置所述调度缓存的状态为使用状态;C3所述高层模块根据所述调度缓存的地址,对所述消息包进行读操作;C4所述底层模块判断所述消息包的存储地址是否是所述调度缓存,如果是,则将其状态恢复为空闲状态,并释放对应的外存的存储地址,否则,释放所述数据包在所述内存中相应的存储地址。
6.根据权利要求5所述的数字信号处理系统内消息包的处理方法,其特征在于,在步骤C2中,当需要倒换的消息包为1个、或需要倒换的消息包为多个且所述高层模块处理消息包的时间小于直接存储器访问倒换时间时,则采用同步等待直接存储器访问方式进行调度;当需要倒换的消息包为多个,且所述高层模块处理消息包的时间大于直接存储器访问调度时间,则采用同步等待直接存储器访问方式对第一个消息包进行倒换,此后采用异步直接存储器访问方式对后面的消息包进行倒换。
7.根据权利要求3或5所述的数字信号处理系统内消息包的处理方法,其特征在于,所述直接存储器访问通过外围存储器实现。
全文摘要
本发明涉及通信领域,公开了一种数字信号处理系统内消息包的处理方法,使得在使用没有高速缓冲存储器的DSP处理业务时,其高层模块仅需对内存进行存取,从而提高消息包的处理效率。这种数字信号处理系统内消息包的处理方法包含以下步骤A在DSP内存中分别设置用于暂时缓存新的消息包的申请缓存,和用于暂时缓存高层模块需要读的消息包的调度缓存;B高层模块通过内存的消息包空间、或申请缓存,写入新的消息包;C高层模块通过内存的消息包空间或调度缓存,读取消息包内容。
文档编号H04L12/56GK1705294SQ20041003712
公开日2005年12月7日 申请日期2004年5月29日 优先权日2004年5月29日
发明者王鹏, 钟广海 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1