CN101950273B - 一种dsp数据区动态管理方法 - Google Patents
一种dsp数据区动态管理方法 Download PDFInfo
- Publication number
- CN101950273B CN101950273B CN2010102911896A CN201010291189A CN101950273B CN 101950273 B CN101950273 B CN 101950273B CN 2010102911896 A CN2010102911896 A CN 2010102911896A CN 201010291189 A CN201010291189 A CN 201010291189A CN 101950273 B CN101950273 B CN 101950273B
- Authority
- CN
- China
- Prior art keywords
- data
- object data
- pool
- dsp
- data block
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种DSP数据区动态管理方法,其包括以下步骤:根据DSP节点上对象数据的类型和每类对象数据的存储需求将DSP数据区的地址空间分区,每个分区对应一个内存资源对象;在每个所述内存资源对象中创建对象数据池,同一所述对象数据池中的数据块大小相同且所述数据块的大小与存入所述对象数据池的对象数据的存储需求相应;建立所述分区与对应的所述对象数据池的关联并初始化所述对象数据池的控制信息;以及执行所述对象数据池中的数据块的分配与释放。该方法可以根据实际应用的需要动态管理DSP的内存数据区,高效且没有内存碎片。
Description
技术领域
本发明涉及信号处理技术领域,尤其涉及一种DSP数据区动态管理方法。
背景技术
随着嵌入式实时系统在各个领域的广泛应用,嵌入式软件的开发也受到越来越多的瞩目。在满足系统实时性要求的前提下,如何提高内存分配的快速性、可靠性和高效性,是嵌入式软件系统面临的一个重大问题。内存分配的快速性从嵌入式系统对实时性的要求出发,要求内存在分配过程中尽可能的快,因此在嵌入式系统中,不可能采用通用操作系统中复杂而繁琐的内存分配策略,一般都采用简单、快速的内存分配方案;内存分配的可靠性则要求内存分配的请求必须得到满足;而内存分配的高效性,则要求内存分配尽可能地减少浪费。
实时性通常要求嵌入式系统具有强大的并行计算能力与足够的数据吞吐量,通常由多片专用DSP构成高效互联的并行机来实现。而通用性就意味着系统处理的数据或对象的大小及数目是动态可变的,要求动态分配DSP数据区。在没有通用操作系统支撑的DSP上,编制的应用软件很难管理硬件资源,一般的DSP应用软件与底层硬件紧耦合,与底层硬件紧耦合的DSP一般应用软件则要求在设计时必须确定各种数据或对象在存储器中的分布,无法适应动态的变化,无扩展通用性。
目前,一般的嵌入式系统采用的内存管理方法通常是在设计时将内存分成若干个内存区,每个内存区中的多个内存块大小相同,不同内存区中的内存块的大小不同,并且不同内存区中的内存块的大小满足k*2n,其中,n和k为自然数。这种方法通常存在以下缺点:
1、各内存区域的大小是预先估计得到的,与应用的数据块大小不匹配,应用需要申请内存时,往往需要根据所申请内存的大小搜索各内存区,从中找到大小合适的内存块,因而会产生内存碎片。
2、由于内存区中的内存块的大小与应用的数据块大小不匹配,当所申请的内存块小于内存区中空闲块时,将合并小内存块;当所申请的内存块大于内存区中空闲块时,将分割大内存块,因此,内存申请效率低下。
因此,亟待提供一种DSP数据区动态管理方法以克服上述缺陷。
发明内容
本发明要解决的技术问题在于提供一种DSP数据区动态管理方法,该方法可以根据实际应用的需要动态管理DSP的内存数据区,高效且没有内存碎片。
为了解决上述技术问题,本发明提供了一种DSP数据区动态管理方法,其包括以下步骤:
根据DSP节点上对象数据的类型和每类对象数据的存储需求将DSP数据区的地址空间分区,每个分区对应一个内存资源对象;
在每个所述内存资源对象中创建对象数据池,同一所述对象数据池中的数据块大小相同且所述数据块的大小与存入所述对象数据池的对象数据的存储需求相应;
建立所述分区与对应的所述对象数据池的关联并初始化所述对象数据池的控制信息;以及
执行所述对象数据池中的数据块的分配与释放。
与现有技术相比,本发明的DSP数据区动态管理方法根据需要划分DSP内存数据区,系统执行时,可以按需动态分布对象数据,适应通用性的需求。并且,由于将不同的对象数据分类存放,每一类的数据池结构统一,减少了对象数据的存储时间,有效提高了系统运行的效率。此外,由于是根据应用中的各类对象数据的存储需求确定数据块的大小,也就是说,数据块的大小与应用需求相匹配,数据块不需要分割与合并的操作,因而对象数据池中不会产生内存碎片,DSP数据区的内存利用率高。再者,先将DSP数据区的空间地址分区、创建对象数据池,然后再建立所述分区和所述对象数据池之间的联系,这样,内存资源和对象数据池的管理可以独立变化,便于在各种类型DSP芯片的地址空间或者某个DSP芯片的任何地址区间中创建所需的对象数据池。
优选地,建立所述分区与对应的所述对象数据池的关联并初始化所述对象数据池的控制信息的步骤具体包括:将所述对象数据池的数据结构定义为连续的数据块链表并建立数据池索引表,所述对象数据池的控制信息包括链表头和数据块头,所述链表头用于存储相应的对象数据池中已分配数据块存储空间指针、相应的对象数据池中空闲数据块存储空间指针及对象数据池中剩余数据块的个数,所述数据块头存储有对应数据块的大小、数据指针以及下一个数据块的指针。采用连续的数据块链表表示对象数据池,便于实现多个对象数据池的管理,提高存储效率。两级的索引结构可以进一步加快数据块的分配。
优选地,所述DSP数据区动态管理方法还包括将位图与所述对象数据池相关联,用于表示相应的对象数据池的空闲或非空闲状态,以便于非正常使用时能快速返回错误信息。
优选地,所述执行所述对象数据池中的数据块的分配与释放的步骤具体为:当应用申请数据块时,根据应用的对象数据的类型搜索所述与对象数据池相关联的位图及其链表指针,找到相应的对象数据池;将相应的对象数据池中空闲数据块存储空间指针指向的数据块的地址返回给应用,并将该数据块加入已分配数据块存储空间;以及在对应数据块中存入对象数据,并修改所述链表头和数据块头中的控制信息;而当释放数据块时,将相应的数据块归还至所述对象数据池空闲数据块存储空间,并修改所述链表头和数据块头中的控制信息。
优选地,所述DSP数据区动态管理方法还包括:计算对象数据帧长,并根据所述对象数据帧长将所述对象数据分配到各个DSP节点。
通过以下的描述并结合附图,本发明将变得更加清晰,这些附图用于解释本发明的实施例。
附图说明
图1为本发明DSP数据区动态管理方法一个实施例的流程示意图。
图2为图1所示DSP数据区动态管理方法中的对象数据池的数据结构示意图。
图3为图1所示DSP数据区动态管理方法中的对象数据池的数据池索引结构示意图。
图4为以水声场信号产生器为例的对象数据池的结构示意图。
具体实施方式
现在参考附图描述本发明的实施例,附图中类似的元件标号代表类似的元件。如上所述,本发明提供了一种DSP数据区动态管理方法,该方法可以根据实际应用的需要动态管理DSP的内存数据区,高效且没有内存碎片。
下面将结合附图详细阐述本发明实施例的技术方案。如图1所示,本实施例的DSP数据区动态管理方法包括以下步骤。
步骤S101:根据DSP节点上对象数据的类型和每类对象数据的存储需求将DSP数据区的地址空间分区,每个分区对应一个内存资源对象。所述对象数据的类型根据对象数据的存储需求划分,所述存储需求即为所需数据块大小和容量。所述DSP节点是指单独的一块DSP芯片。
由于现有的嵌入式系统通常包括由多片专用DSP构成高效互联的并行机,所以在此情况下,在步骤S101之前,还包括根据嵌入式系统的工作参数计算对象数据帧长,并根据所述对象数据帧长将所述对象数据分配到各个DSP节点。具体的,可以结合嵌入式系统所产生的数据帧长和DSP硬件平台资源参数来将所述对象数据分配到各个DSP节点。前述工作参数包括采样频率和数据帧间隔等,所述DSP硬件平台资源参数包括每个D/A通道板输出的通道数ChannelNum、DSP运算板数DSPNum等。依据前述两类参数,根据负载平衡原则即可确定入池对象数据在每个DSP节点上的分布状况。所述负载平衡原则是指在满足嵌入式系统实时性能前提下,每个DSP节点上的计算负载平衡。
步骤S102:在每个所述内存资源对象中创建对象数据池,同一所述对象数据池中的数据块大小相同且所述数据块的大小与存入所述对象数据池的对象数据的存储需求相应。
步骤S103:建立所述分区与对应的所述对象数据池的关联并初始化所述对象数据池的控制信息。
在本实施例中,该步骤具体为:将所述对象数据池的数据结构定义为连续的数据块链表并建立数据池索引表,所述对象数据池的控制信息包括链表头Poolhead和数据块头head,所述链表头用于存储相应的对象数据池中已分配数据块存储空间指针pHead、相应的对象数据池中空闲数据块存储空间指针pBlock及对象数据池中剩余数据块的个数iFreeCount,所述数据块头存储有对应数据块的大小Size、数据指针pData以及下一个数据块的指针pNext。所述对象数据池的数据结构如图2所示。采用连续的空闲数据块链表表示对象数据池,便于实现多个对象数据池的管理,提高存储效率。
进一步地,如图3所示,本实施例的DSP数据区动态管理方法还可以包括将位图与所述对象数据池相关联,用于表示相应的对象数据池的空闲或非空闲状态。两级的索引结构可以进一步加快数据块的分配和统一管理对象数据池链表。
步骤S104:执行所述对象数据池中的数据块的分配与释放。具体的,当应用申请数据块时,根据应用的对象数据的类型搜索所述与对象数据池相关联的位图及其链表指针,找到相应的对象数据池;将相应的对象数据池空闲的数据块存储空间指针指向的数据块的地址返回给应用;以及在对应数据块中存入对象数据,并修改所述链表头和数据块头中的控制信息。当释放数据块时,将相应的数据块归还至所述对象数据池空闲数据块存储空间。可以看出,数据块的申请与释放均放在所述空闲数据块链表的头部进行,可以实现数据块的快速分配。
本发明的DSP数据区动态管理方法根据需要划分DSP内存数据区,系统执行时,可以按需动态分布对象数据,适应通用性的需求。并且,由于将不同的对象数据分类存放,每一类的数据池结构统一,减少了对象数据的存储时间,有效提高了系统运行的效率。此外,由于是根据应用中的各类对象数据的存储需求确定数据块的大小,也就是说,数据块的大小与应用需求相匹配,数据块不需要分割与合并的操作,因而对象数据池中不会产生内存碎片,DSP数据区的内存利用率高。再者,先将DSP数据区的空间地址分区、创建对象数据池,然后再建立所述分区和所述对象数据池之间的联系,这样,内存资源和对象数据池的管理可以独立变化,便于在各种类型DSP芯片的地址空间或者某个DSP芯片的任何地址区间中创建所需的对象数据池。
下面以水声场信号实时产生器为例,详细说明本发明的DSP数据区动态管理方法。该水声场信号实时产生器的工作参数包括采样频率fs、水下目标个数Targ etNum、声阵通道数ArrayNum、每个对象的处理时间和数据帧间隔T。则对象数据的帧长可表示为DL=fs×T。然后由水声场信号实时产生器的工作参数确定每一类入池对象数据的存储需求。有关的DSP硬件平台资源参数有每个D/A通道板输出的基元数ChannelNum、DSP运算板数DSPNum等。依据上述两类参数,根据负载平衡原则可确定入池对象数据在每个DSP节点上的分布状况。
在本实施例中,每个DSP计算的目标个数可表示为M=TargetNum/DSPNum,那么在每个DSP上必须分布M个目标对象,因而目标对象数据池容量应为Size=M。由于每个目标对象中又包含4个声信号,因而,声信号对象数据池容量应为Size=4*M。在每个基元的输出信号上都要叠加有海洋环境噪声,因此需要计算ArrayNum路的海洋环境噪声,平衡每个DSP运算板的计算负载,每个DSP节点需要计算的噪声路数为NoiseChannel=ArrayNum/DSPNum,每路噪声的数据帧长是DL,因此海洋环境噪声数据对象数据块的大小为NoiseChannel*DL;由于海洋环境噪声又可分为流噪声、环境噪声和海洋背景噪声,因此对象数据块数为3。
由上述DSP运算板数上每个DSP节点的数据存储需求,将DSP数据内存分区,每个区对应一个对象数据池。在本实施例中,DSP数据内存划分了3个区,对应3个连续数据块链表表示的对象数据池,每个对象数据池的参数及结构如图4所示。数据池管理器给每个数据池创建和初始化一个链表头(Poolhead);给每个数据块创建一个数据块头(head)。随后,根据数据区地址空间的划分,将每个数据池的起始地址填入数据池指针数组,即建立分区和对象数据池的关联。每个对象数据池初始化后,池中数据块均为空闲数据块,因此pBlock指向数据池中第一个数据块,而pHead为空。在执行数据块的分配时,各个数据池的分配器从各自的pBlock指向的空闲数据块存储空间的开始分配数据块,已分配的数据块加入pHead指向的已分配数据块存储空间中,同时修改链表头和数据块头中的控制信息。本实施例的水声场信号产生器经适配接口与声纳对接后,给声纳提供测试激励。在不改变测试台硬件并不重新加载软件的情况下,成功实现了4种不同信号声纳信号的产生并馈入实际声纳,实现了面向水声场信号产生器应用的DSP数据区的动态管理。
Claims (3)
1.一种DSP数据区动态管理方法,其特征在于,包括以下步骤:
根据DSP节点上对象数据的类型和每类对象数据的存储需求将DSP数据区的地址空间分区,每个分区对应一个内存资源对象,所述对象数据的类型根据对象数据的存储需求划分,所述存储需求即为所需数据块大小和容量;
在每个所述内存资源对象中创建对象数据池,同一所述对象数据池中的数据块大小相同且所述数据块的大小与存入所述对象数据池的对象数据的存储需求相应;
建立所述分区与对应的所述对象数据池的关联并初始化所述对象数据池的控制信息;以及
执行所述对象数据池中的数据块的分配与释放;
建立所述分区与对应的所述对象数据池的关联并初始化所述对象数据池的控制信息的步骤具体包括:用两级的索引结构进行多数据池中数据块的分配;用位图数组指示第一级,描述多数据池的空闲;将位图与对象数据池相关联,用于表示相应的对象数据池的空闲或非空闲状态;用链表结构描述各数据池内部即第二级的数据块空闲,将所述对象数据池的数据结构定义为连续的数据块链表并建立数据池索引表;
所述对象数据池的控制信息包括链表头和数据块头,所述链表头用于存储相应的对象数据池中已分配数据块存储空间指针、相应的对象数据池中空闲数据块存储空间指针及对象数据池中剩余数据块的个数,所述数据块头存储有对应数据块的大小、数据指针以及下一个数据块的指针。
2.根据权利要求1所述的DSP数据区动态管理方法,其特征在于,所述执行所述对象数据池中的数据块的分配与释放的步骤具体为:
当应用申请数据块时,根据应用的对象数据的类型搜索所述与对象数据池相关联的位图及其链表指针,找到相应的对象数据池;
将相应的对象数据池空闲数据块存储空间指针指向的数据块的地址返回给应用,并将该数据块加入已分配数据块存储空间;以及
在对应数据块中存入对象数据,并修改所述链表头和块头中的控制信息;
当释放数据块时,将相应的数据块归还至所述对象数据池空闲数据块存储空间。
3.根据权利要求1或2所述的DSP数据区动态管理方法,其特征在于,当所述DSP节点为多个并行时,还包括:计算对象数据帧长,并根据所述对象数据帧长将所述对象数据分配到各个DSP节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102911896A CN101950273B (zh) | 2010-09-26 | 2010-09-26 | 一种dsp数据区动态管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102911896A CN101950273B (zh) | 2010-09-26 | 2010-09-26 | 一种dsp数据区动态管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101950273A CN101950273A (zh) | 2011-01-19 |
CN101950273B true CN101950273B (zh) | 2012-05-23 |
Family
ID=43453777
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010102911896A Expired - Fee Related CN101950273B (zh) | 2010-09-26 | 2010-09-26 | 一种dsp数据区动态管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101950273B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102289411B (zh) * | 2011-06-27 | 2014-03-26 | 北京握奇数据系统有限公司 | 一种智能卡资源调度的方法和智能卡 |
CN103678160B (zh) * | 2012-08-30 | 2017-12-05 | 腾讯科技(深圳)有限公司 | 一种存储数据的方法和装置 |
CN106649136B (zh) * | 2015-11-03 | 2022-09-23 | 西安中兴新软件有限责任公司 | 一种数据存储方法和存储装置 |
CN105677491B (zh) * | 2015-12-31 | 2019-07-23 | 杭州华为数字技术有限公司 | 一种数据传输方法及装置 |
CN107305564B (zh) * | 2016-04-21 | 2021-06-11 | 阿里巴巴集团控股有限公司 | 一种数据处理的方法和设备 |
CN106339431B (zh) * | 2016-08-18 | 2019-09-06 | 佛山智能装备技术研究院 | 基于文本块的机器人程序文件处理方法和系统 |
CN107786599B (zh) * | 2016-08-26 | 2020-07-17 | 北京计算机技术及应用研究所 | 内存云系统 |
CN107122136B (zh) * | 2017-04-25 | 2021-02-02 | 浙江宇视科技有限公司 | 一种容量获取方法及装置 |
CN108021448B (zh) * | 2017-11-30 | 2021-06-15 | 北京东土科技股份有限公司 | 一种内核空间的优化方法及装置 |
CN111177017B (zh) * | 2018-11-09 | 2022-05-27 | 炬芯科技股份有限公司 | 一种内存分配方法及装置 |
CN109656836A (zh) * | 2018-12-24 | 2019-04-19 | 新华三技术有限公司 | 一种数据处理方法及装置 |
CN110515860A (zh) * | 2019-08-30 | 2019-11-29 | 苏州浪潮智能科技有限公司 | 一种内存中存储数据的地址标识方法、系统及装置 |
CN110633223B (zh) * | 2019-09-18 | 2021-07-13 | 北京机电工程研究所 | 面向高速信号平台的多级内存管理方法 |
CN112799603B (zh) * | 2021-03-02 | 2024-05-14 | 王希敏 | 多数据流驱动的信号处理系统的任务行为模型 |
CN113360531B (zh) * | 2021-06-07 | 2023-06-09 | 王希敏 | 信号处理系统并行计算数据流的结构 |
CN113312522B (zh) * | 2021-06-30 | 2022-01-11 | 科东(广州)软件科技有限公司 | 内核对象的管理方法、装置、存储介质及电子设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1303534C (zh) * | 2003-03-03 | 2007-03-07 | 华为技术有限公司 | 一种内存池管理的方法 |
CN1276361C (zh) * | 2003-12-29 | 2006-09-20 | 北京中视联数字系统有限公司 | 一种嵌入式系统内存管理的方法 |
CN100539713C (zh) * | 2004-08-31 | 2009-09-09 | 华为技术有限公司 | 一种在单板中存储数据流的方法 |
CN101303666A (zh) * | 2008-06-25 | 2008-11-12 | 北京中星微电子有限公司 | 一种嵌入式系统中内存资源的使用方法及装置 |
-
2010
- 2010-09-26 CN CN2010102911896A patent/CN101950273B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101950273A (zh) | 2011-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101950273B (zh) | 一种dsp数据区动态管理方法 | |
CN107122243B (zh) | 用于cfd仿真计算的异构集群系统及计算cfd任务的方法 | |
CN110941602B (zh) | 数据库的配置方法、装置、电子设备及存储介质 | |
KR20120092930A (ko) | 맵 리듀스를 이용한 분산 메모리 클러스터 제어 장치 및 방법 | |
US20120278587A1 (en) | Dynamic Data Partitioning For Optimal Resource Utilization In A Parallel Data Processing System | |
CN109388590B (zh) | 提升多通道dma访问性能的动态缓存块管理方法和装置 | |
CN108363623A (zh) | Gpu资源调度方法、装置、设备及计算机可读存储介质 | |
CN112231098B (zh) | 任务处理方法、装置、设备及存储介质 | |
CN106126338A (zh) | 一种虚拟机集群伸缩配置的方法及装置 | |
US9063668B1 (en) | Distributed memory allocation in multi-threaded programs | |
CN108900626B (zh) | 一种云环境下数据存储方法、装置及系统 | |
CN109976907B (zh) | 任务分配方法和系统、电子设备、计算机可读介质 | |
US20060149915A1 (en) | Memory management technique | |
CN103297499A (zh) | 一种基于云平台的调度方法及系统 | |
CN112148467B (zh) | 计算资源的动态分配 | |
CN111984425B (zh) | 用于操作系统的内存管理方法、装置及设备 | |
US8352702B2 (en) | Data processing system memory allocation | |
CN104572301A (zh) | 一种资源分配方法和系统 | |
TW201405308A (zh) | 用於s列表分配之系統與方法 | |
CN103218305A (zh) | 存储空间的分配方法 | |
CN107220069A (zh) | 一种针对非易失性内存的Shuffle方法 | |
CN104009904B (zh) | 面向云平台大数据处理的虚拟网络构建方法及系统 | |
CN118519768A (zh) | 向共享缓存进行数据溢出的方法、装置、设备和存储介质 | |
CN100433171C (zh) | 存储设备的测试方法及测试装置 | |
CN116383240A (zh) | 基于fpga多数据库加速查询方法、装置、设备及介质 |
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 |
Granted publication date: 20120523 |
|
CF01 | Termination of patent right due to non-payment of annual fee |