CN1553344A - 一种实现多个数据队列处理时动态分配存储器的方法 - Google Patents
一种实现多个数据队列处理时动态分配存储器的方法 Download PDFInfo
- Publication number
- CN1553344A CN1553344A CNA031267912A CN03126791A CN1553344A CN 1553344 A CN1553344 A CN 1553344A CN A031267912 A CNA031267912 A CN A031267912A CN 03126791 A CN03126791 A CN 03126791A CN 1553344 A CN1553344 A CN 1553344A
- Authority
- CN
- China
- Prior art keywords
- pointer
- data
- busy
- free
- receiver 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.)
- Granted
Links
Landscapes
- Multi Processors (AREA)
Abstract
本发明公开了一种多个数据队列处理时动态分配存储器的方法,包括:提供一个空闲指针管理器,一个忙指针管理器,一个接收模块,一个队列处理器,一个发送模块,一个存储器控制模块;接收模块接收数据,并根据队列处理器中信息对数据进行处理,再向空闲指针管理器申请空闲指针,通过存储器控制模块将处理后的数据存入存储器中空闲指针所指的空间,然后将空闲指针传送给忙指针管理器;发送模块从忙指针管理器获得忙指针,通过存储器控制模块将忙指针对应的数据从存储器中读出,并发送出去。本发明提出的多个数据队列处理时动态分配存储器的方法可以节约大量存储空间,也就大大降低了存储器的成本,而且节约的成本随这队列数量的增加而线性增加。
Description
技术领域
本发明涉及到一种多个数据队列处理时动态分配存储器的方法,具体的说涉及一种通过对指针的划分来实现多个数据队列处理时动态分配存储器的方法。
背景技术
当前的数据队列的处理主要是用中央处理器(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中通过软件实现,不同的是,用软件实现时,本发明的功能模块是被写成子程序或者子函数,但是设计的方法还是遵循了本发明的原则。
本发明公开了一种多个数据队列处理时动态分配存储器的方法。本发明不但可以充分的利用存储器资源,降低生产成本,而且本发明便于维护,提高了研发效率。本发明适用所有需要队列处理的电路和编程设计。
Claims (4)
1、一种实现多个数据队列处理时动态分配存储器的方法,其特征在于所述的方法包括:
(1)提供一空闲指针管理器,一忙指针管理器,一接收模块,一队列处理器,一发送模块,一存储器控制模块;
(2)所述接收模块接收一帧数据时,所述接收模块根据所述队列处理器中信息对数据进行处理和向所述空闲指针管理器申请空闲指针,所述接收模块通过所述存储器控制模块将处理后的数据存入存储器中空闲指针所指的空间,然后将所述指针传送给所述忙指针管理器;
(3)所述发送模块从所述忙指针管理器获得所述指针,通过存储器控制模块将所述指针对应的数据从存储器中读出,并发送出去。
2、根据权利要求1所述的方法,其特征在于:所述步骤(2)中的所述接收模块根据所述队列处理器中信息对数据进行处理和向所述空闲指针管理器申请空闲指针进一步包括:所述接收模块先判断接收的数据属于的数据队列,从所述队列处理器中将数据队列的中间变量读出,根据中间变量,所述接收模块对接收的数据进行处理和向所述空闲指针管理器申请空闲指针。
3、根据权利要求1或2所述的方法,其特征在于:所述步骤(2)中的所述空闲指针传送给该忙指针管理器进一步包括:在空闲指针对应的存储空间接收到足够的数据后,将所述指针传送给该忙指针管理器。
4、根据权利要求3所述的方法,其特征在于:所述步骤(3)进一步包括:所述发送模块将数据发送后,将所述指针归还给所述空闲指针管理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031267912A CN1269045C (zh) | 2003-06-04 | 2003-06-04 | 一种实现多个数据队列处理时动态分配存储器的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031267912A CN1269045C (zh) | 2003-06-04 | 2003-06-04 | 一种实现多个数据队列处理时动态分配存储器的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1553344A true CN1553344A (zh) | 2004-12-08 |
CN1269045C CN1269045C (zh) | 2006-08-09 |
Family
ID=34322005
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031267912A Expired - Fee Related CN1269045C (zh) | 2003-06-04 | 2003-06-04 | 一种实现多个数据队列处理时动态分配存储器的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1269045C (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100369019C (zh) * | 2005-01-10 | 2008-02-13 | 英业达股份有限公司 | 电子资料封包队列处理管制方法及系统 |
WO2016201981A1 (zh) * | 2015-06-16 | 2016-12-22 | 中兴通讯股份有限公司 | 数据缓存处理方法及装置 |
CN110941564A (zh) * | 2018-09-25 | 2020-03-31 | 杭州海康威视数字技术股份有限公司 | 一种存储空间分配方法、装置、电子设备以及存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11397560B2 (en) | 2017-09-19 | 2022-07-26 | Bae Systems Controls Inc. | System and method for managing multi-core accesses to shared ports |
-
2003
- 2003-06-04 CN CNB031267912A patent/CN1269045C/zh not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100369019C (zh) * | 2005-01-10 | 2008-02-13 | 英业达股份有限公司 | 电子资料封包队列处理管制方法及系统 |
WO2016201981A1 (zh) * | 2015-06-16 | 2016-12-22 | 中兴通讯股份有限公司 | 数据缓存处理方法及装置 |
CN106326141A (zh) * | 2015-06-16 | 2017-01-11 | 中兴通讯股份有限公司 | 数据缓存处理方法及装置 |
CN110941564A (zh) * | 2018-09-25 | 2020-03-31 | 杭州海康威视数字技术股份有限公司 | 一种存储空间分配方法、装置、电子设备以及存储介质 |
CN110941564B (zh) * | 2018-09-25 | 2022-03-04 | 杭州海康威视数字技术股份有限公司 | 一种存储空间分配方法、装置、电子设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN1269045C (zh) | 2006-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Ng et al. | Maximizing buffer and disk utilizations for news on-demand | |
EP1536334A2 (en) | System and method for increasing data throughput using thread scheduling | |
CN113918101B (zh) | 一种写数据高速缓存的方法、系统、设备和存储介质 | |
US9836516B2 (en) | Parallel scanners for log based replication | |
Aumage et al. | New madeleine: A fast communication scheduling engine for high performance networks | |
US12052519B2 (en) | Smart sensor scheduler | |
CN114257559B (zh) | 一种数据报文的转发方法及装置 | |
CN113568731B (zh) | 一种任务调度方法、芯片以及电子设备 | |
CN1542623A (zh) | 一种实现内存管理的方法 | |
CN112948293A (zh) | 一种多用户接口的ddr仲裁器及ddr控制器芯片 | |
CN118012788B (zh) | 数据处理器、数据处理方法、电子设备和存储介质 | |
CN1269045C (zh) | 一种实现多个数据队列处理时动态分配存储器的方法 | |
CN1779646A (zh) | 嵌入式实时操作系统中基于消息对象的任务间通信方法 | |
CN1804822A (zh) | 多中断的缓存装置和方法 | |
Qian et al. | A novel network request scheduler for a large scale storage system | |
CN117271137A (zh) | 一种多线程的数据分片并行方法 | |
CN113126911A (zh) | 基于ddr3 sdram的队列管理方法、介质、设备 | |
CN101702784B (zh) | 光接入多用户居住单元嵌入式设备及多任务通信方法 | |
CN114185488B (zh) | 一种大数据集群的存储优化方法及系统 | |
CN114217733B (zh) | 一种面向io转发系统的io处理框架及io请求处理方法 | |
CN1306643A (zh) | 用各种数据处理器进行数据处理 | |
CN1602014A (zh) | 为网络处理器调度连接的方法与装置 | |
US7430214B2 (en) | Circuit, method and program for data queue control | |
CN2520528Y (zh) | 存取共享系统资源的桥接系统 | |
CN1829982A (zh) | 具有动态通信服务选择的集成电路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20060809 Termination date: 20190604 |