一种实现多个数据队列处理时动态分配存储器的方法

文档序号:6359076阅读:254来源:国知局
专利名称:一种实现多个数据队列处理时动态分配存储器的方法
技术领域
本发明涉及到一种多个数据队列处理时动态分配存储器的方法,具体的说涉及一种通过对指针的划分来实现多个数据队列处理时动态分配存储器的方法。
背景技术
当前的数据队列的处理主要是用中央处理器(CPU)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)等芯片外挂存储器实现。用这些芯片处理数据队列的数据时处理时先为该队列分配一个固定的存储空间,然后接收该队列的数据,进行处理后将数据存储在为他分配的存储空间,当该存储空间接收到相应的数据时,只将数据从存储空间读出并发送出去。用这种方法进行一个队列的数据处理时,并较简单实用。但是,当CPU、DSP、FPGA等芯片要进行处理的是多个数据队列,上面的处理方法的缺点就立刻暴露出来。首先,为每一个队列分配固定的存储空间会耗费大量的存储空间,特别是当接收和发送带宽相近时,很多队列的存储空间都处于闲置状态,比如,当处理一个队列的数据时,最大需要1兆位(Mbit)的存储空间,处理1000个队列时,就需要1000Mbit的存储空间,大大提高提供了存储器的成本。其次,由于需要同时对多个队列进行处理,会使设计变得异常复杂,特别是当用FPGA来实现时,会耗费大量的逻辑资源,从而使研发和生产成本大大提高,如果处理的队列特别多时(如1000个),可能就无法实现。
因此,在用CPU、DSP、FPGA等芯片在进行多个队列的数据处理设计时,就需要考虑在满足设计需求的前提下,减少总的缓存,降低研发和生产成本。

发明内容
本发明的要解决的技术问题在于提出一种所需存储空间少,成本低且易实现的多个数据队列处理时动态分配存储器的方法。
为实现本发明要解决的技术问题,本发明一种实现多个数据队列处理时动态分配存储器的方法,包括如下步骤(1)提供一空闲指针管理器,一忙指针管理器,一接收模块,一队列处理器,一发送模块,一存储器控制模块;(2)接收模块接收一帧数据时,根据队列处理器中信息对数据进行处理和向空闲指针管理器申请空闲指针,通过存储器控制模块将处理后的数据存入存储器中空闲指针所指的空间,然后将所述指针传送给忙指针管理器;(3)发送模块从忙指针管理器获得所述指针,通过存储器控制模块将所述指针对应的数据从存储器中读出,并发送出去;本发明通过对指针的划分来实现多个数据队列处理时动态分配存储器的方法简单实用。相对于为每一个队列分配固定存储空间的传统的方法,可以节约大量存储空间,也就大大降低了存储器的成本,而且节约的成本随这队列数量的增加而线性增加。另外,由于为每一个队列分配固定存储空间的传统的方法会随着队列数量的增加会使CPU、DSP、FPGA的编程变得更加复杂,而本发明提供的方法受队列数量影响很小,从而降低了开发成本。


图1是本发明实现多个数据队列处理时动态分配存储器的原理结构图;图2是本发明接收模块的工作流程图;图3是本发明发送模块的工作流程图;具体实施方式
下面结合附图和实施方式对本发明做详细说明参照图1,本实施例实现多个数据队列处理时动态分配存储器12的方法是基于FPGA芯片11实现,其中存储器12可以是FPGA外部的存储器,也可以是FPGA内部的存储器。FPGA芯片11中包含的模块有一空闲指针管理器17,一忙针管理器18,一接收模块13,一队列处理器16,一发送模块15,一存储器控制模块14。当接收模块13接收数据时,根据队列处理器16中信息对数据进行处理,向空闲指针管理器17申请空闲指针,通过存储器控制模块14将处理后的数据存入存储器12中空闲指针所指的空间,然后将空闲指针传送给忙指针管理器18。发送模块15从忙指针管理器18获得忙指针,通过存储器控制模块14将忙指针对应的数据从存储器12中读出,并发送出去。
空闲指针管理器17主要负责空闲指针的管理,它将发送模块15归还的指针暂存,同时根据接收模块13的申请提供空闲指针。忙指针管理器18主要负责忙指针的管理,将接收模块13归还的指针暂存,同时根据发送模块15的申请提供忙指针。当空闲指针对应的存储空间存储有数据之后,该指针就可以被认为是忙指针。接收模块13主要负责不同队列数据的接收,并根据从队列处理器16中读出的队列的信息对数据进行处理。同时向空闲指针管理器17申请空闲指针,在通过存储器控制模块14将数据写入存储器12后,将指针归传送给忙指针管理器18。队列处理器16主要负责所有数据队列的中间变量的暂存。同时还能为每个数据队列暂存没有处理完的空闲指针。发送模块15主要负责所有数据的发送,发送模块15及时向忙指针管理器18申请忙指针,并通过存储器控制模块14将数据读出。存储器控制模块14主要负责存储器12的读写控制,按照公平的原则为这接收模块13和发送模块15分配读写控制权。存储器12只有一个读写接口,而有多个模块要对存储器12进行读写,存储器控制模块14能够避免多个模块引起的总线冲突。存储器12可以是片外存储器,也可以是片内存储器。
接收模块13接收的数据可能属于不同的队列,而且接收的数据可能是很有规律,也可能没有任何规律。在接收完一帧数据后,接收模块13先判断该帧数据属于哪个队列。然后从队列处理器16将该队列的中间变量读出。根据中间变量,接收模块13对接收的数据进行接收处理,以保持和上次接收数据的一致性。将处理完的数据通过存储器控制模块14写入到与空闲指针相对应的存储器12的存储空间。如果在数据处理过程中,空闲指针对应的存储空间接收到足够的数据,接收模块13将该空闲指针传送给忙指针管理器18,同时向空闲指针管理器17申请新的空闲指针。图2是本实施例接收模块13的工作流程图。接收模块13工作流程步骤如下步骤201开始,再执行步骤202;步骤202当接收到一帧数据时,首先判断该数据属于哪个队列,再执行步骤203;步骤203将队列的中间变量从队列处理器16中读出,再执行步骤204;步骤204在数据处理过程中,如果中间变量没有存储有有效的空闲指针,则执行步骤205,如果中间变量存储有有效的空闲指针,则执行步骤206;步骤205向空闲指针管理器17申请新的空闲指针,再执行步骤206;步骤206将处理后的数据通过存储器控制模块14写入存储器12中空闲指针相应的存储空间,再执行步骤207;步骤207判断空闲指针对应的存储空间是否接收到足够的数据,如果是,则执行步骤208,如果不是则执行步骤209;步骤208进行将空闲指针传送给忙指针管理器18,再执行步骤205;步骤209判断接收模块13接收的数据是否处理完毕,如果是,则执行步骤210,如果不是,则执行步骤206;步骤210进行将该队列的中间变量存入队列处理器16,然后在执行步骤202。
图3是本实施例发送模块15的工作流程图。发送模块15工作流程步骤如下步骤31开始,再执行步骤32;步骤32判断忙指针管理器18中是否有忙指针,如有,执行步骤33,如没有,则继续执行步骤32;步骤33获得忙指针,并通过存储器控制模块14将忙指针对应的存储器12中的数据读出,并发送,再执行步骤34;步骤34将忙指针传送给空闲指针管理器,再执行步骤32。
FPGA芯片11包含的模块划仅仅是从功能上进行划分,在实际应用中有可能略有不同。比如,本发明还可以在CPU中通过软件实现,不同的是,用软件实现时,本发明的功能模块是被写成子程序或者子函数,但是设计的方法还是遵循了本发明的原则。
本发明公开了一种多个数据队列处理时动态分配存储器的方法。本发明不但可以充分的利用存储器资源,降低生产成本,而且本发明便于维护,提高了研发效率。本发明适用所有需要队列处理的电路和编程设计。
权利要求
1.一种实现多个数据队列处理时动态分配存储器的方法,其特征在于所述的方法包括(1)提供一空闲指针管理器,一忙指针管理器,一接收模块,一队列处理器,一发送模块,一存储器控制模块;(2)所述接收模块接收一帧数据时,所述接收模块根据所述队列处理器中信息对数据进行处理和向所述空闲指针管理器申请空闲指针,所述接收模块通过所述存储器控制模块将处理后的数据存入存储器中空闲指针所指的空间,然后将所述指针传送给所述忙指针管理器;(3)所述发送模块从所述忙指针管理器获得所述指针,通过存储器控制模块将所述指针对应的数据从存储器中读出,并发送出去。
2.根据权利要求1所述的方法,其特征在于所述步骤(2)中的所述接收模块根据所述队列处理器中信息对数据进行处理和向所述空闲指针管理器申请空闲指针进一步包括所述接收模块先判断接收的数据属于的数据队列,从所述队列处理器中将数据队列的中间变量读出,根据中间变量,所述接收模块对接收的数据进行处理和向所述空闲指针管理器申请空闲指针。
3.根据权利要求1或2所述的方法,其特征在于所述步骤(2)中的所述空闲指针传送给该忙指针管理器进一步包括在空闲指针对应的存储空间接收到足够的数据后,将所述指针传送给该忙指针管理器。
4.根据权利要求3所述的方法,其特征在于所述步骤(3)进一步包括所述发送模块将数据发送后,将所述指针归还给所述空闲指针管理器。
全文摘要
本发明公开了一种多个数据队列处理时动态分配存储器的方法,包括提供一个空闲指针管理器,一个忙指针管理器,一个接收模块,一个队列处理器,一个发送模块,一个存储器控制模块;接收模块接收数据,并根据队列处理器中信息对数据进行处理,再向空闲指针管理器申请空闲指针,通过存储器控制模块将处理后的数据存入存储器中空闲指针所指的空间,然后将空闲指针传送给忙指针管理器;发送模块从忙指针管理器获得忙指针,通过存储器控制模块将忙指针对应的数据从存储器中读出,并发送出去。本发明提出的多个数据队列处理时动态分配存储器的方法可以节约大量存储空间,也就大大降低了存储器的成本,而且节约的成本随这队列数量的增加而线性增加。
文档编号G06F12/08GK1553344SQ0312679
公开日2004年12月8日 申请日期2003年6月4日 优先权日2003年6月4日
发明者唐雄, 黄睿, 车伟静, 唐 雄 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1