专利名称:动态共享存储器存储空间的实现方法
技术领域:
本发明涉及数据存储管理技术,尤其涉及一种动态共享存储器存储空间的实现方法。
背景技术:
在芯片设计领域,芯片常需要缓存大量的数据,这些数据一般缓存在芯片内部或者外挂的存储器中,特别是在通信芯片的设计中,一个芯片常常需要处理多个业务通道,因此芯片的存储空间必须同时满足多个业务通道的存储需求,而不同业务通道的流量特性以及它们对存储容量的要求都有很大的不同,因此,如何高效,灵活的分配存储器中的存储空间进行多通道数据的存储成为了进行芯片设计过程中需要考虑的主要问题之一。
如图1所示,芯片对存储器的访问主要涉及存储器读写接口模块和存储器访问地址管理模块两部分。其中,所述存储器访问地址管理模块用于完成对存储器访问地址的管理和调度,在存储器的访问中起着核心控制的作用,对存储空间的分配和调度的效果好坏就是由该模块的实现方式决定。
下面分别针对现有的两种存储器访问地址管理模块实现方式进行说明。
第一种存储器访问地址管理模块的实现方式为根据业务通道数据缓存空间需求,将RAM(随机存储器)空间进行划分,为每个业务通道独立分配一段连续的存储空间。芯片的存储器访问地址管理模块管理着访问RAM空间内部每个存储单元的地址,如图2所示,所述地址包括通道缓存空间首地址和偏移地址。其中对应每个业务通道的存储空间的首地址是唯一且固定的,所述的偏移地址则是分配给该业务通道的存储空间的内部偏移地址,它分为读偏移地址和写偏移地址,随读写访问操作而变化。所述地址组成一个“通道缓存空间地址表”。该“通道缓存空间地址表”的访问入口是业务通道号。
当存取某个业务通道的数据时,首先根据业务通道号访问“通道缓存空间地址表”得到该业务通道在外部数据缓存空间的访问地址,这包括首地址和读(或写)偏移地址,然后根据所述地址对业务通道的对应的存储空间中的数据进行读写访问。
在这种实现方式中,分配给每个业务通道的存储空间是固定的,其大小由上述的偏移地址决定。而且,首先由于需要考虑到数据缓存的突发性,还需要有一定的容限,即分配给每个业务通道的缓存空间总是要比平均数据缓存容量要大很多,导致需要提供的RAM空间足够大。其次,如果在系统运行过程中有随时加入新业务通道的需求,因此还需要预先保留有空闲的缓存空间,这就进一步增大了对RAM空间的容量需求。另外,在系统运行过程中,当部分业务通道的缓存空间时无法回收给其他通道使用,造成空间的浪费。总之,这一种实现方式中,针对业务通道固定分配缓存空间的方法不灵活,不能根据业务通道的实际数据缓存需求动态调整而造成RAM空间的浪费,所需RAM空间大而导致成本较高。
第二种存储器访问地址管理模块的实现方式为采用环链的方式来管理存储器空间首先将RAM空间划分为一个个的存储分块,在初始化时根据每个业务通道的数据缓存流量的需求分配一定数目的存储分块,这些存储分块可以是划分后RAM空间的任意一个分块,每个业务通道的存储分块串接起来形成一条“链”,而链的首尾相接,从而形成了一个环状的链。每个业务通道的数据存取都在该“环链”的分块内循环进行。
具体的实现方式如图3所示,首先将RAM空间划分为n个RAM Block(存储块),这些RAM Block的访问地址通过一个“分块地址指针链表”来指示,该表中包含了n个block(块),每个block存储的内容包括对应RAMBlock的访问地址和指向另外一个block的指针,通过该指针,可以将多个block串成“链”,也就将对应的RAM Block串成了一条“链”。
例如,如图3所示,根据通道0数据存储需求,为其分配了block7、9和100三个分块,并通过每个block中的指针串成了一个闭合的“环链”。
初始化时,对应通道0的RAM访问地址指针通过随意指向“环链”的一个block得到,例如block7,则开始读写是从block7对应的RAM Block7开始的,写入数据时当RAM Block7被写满后数据会被依次写入RAM Block9和RAM Block100。初始化后读数据也是先从RAM Block7开始;环链里的空间是循环读写的,比如数据依次写入了RAM Block7、RAM Block9和RAMBlock100,读也依次从RAM Block7、RAM Block9到RAM Block100中读出,依次循环。
这种实现方式中,通过将RAM空间进行了分块,分块的大小可以灵活地控制,根据每个业务通道的数据缓存需求,在系统初始化时可以较灵活地分配分块的数目,能提高RAM空间的利用效率。
然而,从本质上看,这种实现方式仍属于为每个业务通道固定分配缓存空间的方式。因此,在初始化配置时需要考虑每个业务通道的缓存需求来进行分块数目的分配,且仍需考虑通道的数据流量存在的突发数据存储需求而进行裕量配置。而且,如果系统有运行过程中新增通道的可能,则必须预留部分备用分块。另外,该方法同样不能在数据处理过程中调整业务通道的存储环链上的分块数量,使得所述预留分块,以及运行过程中删除的通道产生的空闲分块均无法再被其他通道使用。可见,在该方案中,仍未实现针对RAM空间的合理、有效应用。
另外,在通信领域,出于QoS(服务质量)的要求,不同的业务报文类型通常标记为不同的优先级别。在那些对报文进行接收存储、处理然后发送的报文处理系统中,通常需要对不同优先级别的报文区别对待,高优先级别的报文会被优先处理和优先发送。
报文处理系统对接收到的报文,一般会存储到一个RAM(随机存储器)空间中去,对不同优先级的报文如果不加区分地进行存储,会为后续的优先级处理带来困难,因此,报文处理系统在存储这些报文时就进行了优先级的区分对待,而在进行处理和发送时,同样根据优先级的不同而区分处理。
为了实现对不同优先级的报文在RAM空间中进行区分存储排序处理。目前采用的方法主要为针对为每个优先级别的报文固定为其分配一段存储器空间进行报文的存储,具体过程为1、将RAM空间按照报文优先级别数划分为若干段的缓存空间。每个优先级别固定分配一段空间;2、在接收存储时,不同的优先级的报文按照一定的优先级顺序分别放到其对应的那段缓存空间中,通过这样的操作完成了报文的优先级接收存储排序;3、当需要将报文进行处理和发送时,将报文从存储空间读出,这里也需要进行报文优先级的排序,例如,高优先级的报文被优先读出和处理,高优先级的报文被处理完后才去处理低优先级的报文。
可以看出,上述方法的缺点包括第一,对RAM空间的利用率太低。为完成优先级的存储排序,对每个优先级别固定分配了一段RAM空间,但实际系统中不同优先级的报文实时的流量相差很大,有些优先级的报文流量非常小,这部分优先级报文的缓存空间可能在一段时间内是空的,而另一些优先级报文的缓存空间却可能不够用。这样空间在分配时必须根据各个优先级的报文流量分配,并考虑裕量,空间利用率低,一般RAM空间是采用存储器件实现的,这样大大增加了成本。
第二,当QoS需求变化,需要增加优先级数时,现有技术需要对存储空间重新进行分配或者增加存储空间,造成较大的设计改动和成本增加;而且,当需要减少某些优先级时,减少的优先级所分配的空间不能供其他优先级使用,如果要重新使用,则需要进行设计改动重新分配存储空间。
发明内容
鉴于上述现有技术所存在的问题,本发明的目的是提供一种动态共享存储器存储空间的实现方法,从而使得针对通信系统中存储器空间可以实现合理、有效地利用。
本发明的目的是通过以下技术方案实现的本发明提供了一种动态共享存储器存储空间的实现方法,包括A、将存储器的存储空间分成若干个存储分块,并为每个存储分块分配对应的地址指针信息;B、当发生数据存储需求时,动态为其分配一条由一个或多个存储分块基于所述地址指针信息组成的数据存储分块链,并利用所述数据存储分块链进行数据的存储;C、当所述的数据存储分块链中的存储分块无需存储数据时,则将其释放为可以分配给其他数据存储需求的存储分块。
所述的步骤A包括所述的若干个存储分块组成存储分块链;并且,每个存储分块对应的地址指针信息包括分块首地址用于指向存储分块在存储器存储空间中的位置;链接指针用于指向该存储分块链接的下一个存储分块的指针信息;链尾标记单独设置的标志位,当存储分块为链尾时,该标记有效;或者当存储分块为链尾时,将链接指针设置为特定值作为链尾标记。
所述的步骤B还包括将为所述数据存储需求分配的一个或多个存储分块基于存储分决的链接指针信息组成的数据存储分块链,为所述的数据存储分块链建立数据存储分块链首尾指针表,表中记录着所述数据存储分块链的首尾指针信息。
所述的步骤B还包括当为所述的数据存储需求分配的数据存储分块链无法满足数据存储需求时,则继续为所述的数据存储需求分配新的存储分块,新的存储分块串到已有的数据存储分块链的链尾,并修改数据存储分块链首尾指针表信息。
所述的步骤C包括当所述的数据存储需求需要存储的数据量减少或不再需要进行数据的存储时,则所述的数据存储分块链中的部分或全部分块确定无需存储数据。
所述的步骤C还包括将释放的存储分块串到空闲存储分块链的链尾,并将空闲存储分块链对应的地址信息中该空闲分块的链尾标记设置为有效,将原链尾空闲分块的链尾标记设置为无效。
所述的动态共享存储器存储空间的实现方法还包括根据数据存储需求的大小,预先为通信系统中的各业务通道分配相应的数据存储分块链。
所述的动态共享存储器存储空间的实现方法还包括当需要从所述的数据存储分块链中读取数据时,则需要从该数据存储分块链对应的首尾指针表中获取其链首分块的指针信息,进行获得其地址信息,并根据所述的地址信息读取各存储分块中的数据。
所述的数据存储需求包括通信设备的芯片中已经配置的业务通道和新增加的业务通道的数据存储需求。
本发明所述的方法中,步骤A所述的存储分块对应的地址指针信息可以保存于芯片内或外部存储器中。
本发明中,当业务通道的数据需要分优先级存储时,该方法包括D、确定各业务通道待存储数据报文的优先级别,并为级别相同的报文分配相应的数据存储分块链分别进行数据的存储;E、当读取数据时,根据数据存储分块链存储报文的优先级别由高优先级到低优先级依次对相应的数据存储分块链进行读取数据操作。
本发明中所述的步骤D还包括为所述的数据存储分块链设置相应的优先级标识;并且,所述的步骤E还包括当读取数据时,根据所述的优先级标识依次读取各数据存储分块链中的数据。
本发明中,当业务通道的数据需要分优先级存储时,该方法包括F、确定待存储数据报文的优先级别,并将所述数据报文按照优先级别顺序存储于该业务通道对应的数据存储分块链中;G、当进行数据读取时,获取存储高优先级别报文的存储分块的首地址信息,并依次从数据存储分块链中读取数据。
所述的步骤F进一步包括建立优先级数据存储分块链,链中的存储分块对应的各首地址指针表项中分别设置有优先级标识,设置数据存储分块链首尾指针指向该链。
所述的步骤F进一步包括为待存储数据报文从存储分块链中分配空闲的存储分块;查找所述优先级数据存储分块链中各存储分块对应的优先级标识,并根据待存储数据报文的优先级及查找到的优先级标识确定存储该报文的存储分块在优先级数据存储分块链中的位置;将所述的存储分块串入优先级数据存储分块链中确定的位置上。
所述的步骤F还包括在系统初始化时,将由所有的存储分块串成的一条存储分块链的每一个首地址指针表项中设置有用于承载优先级标识的优先级别域,且均初始化设置为最低优先级;当需要存储数据时,从存储分块链中为该数据分配空闲的存储分块,并通过修改所述存储分块对应首地址指针表项内容将其串入优先级数据存储分块链中。
所述的优先级数据存储分块链中的存储于同一个存储分块的报文均应属于同一个优先级别。
由上述本发明提供的技术方案可以看出,本发明具有以下优点1、本发明所提供的对RAM空间进行分块及分块动态串链实现存储器空间共享的方法,极大地提高了RAM空间的利用;特别在处理多个通道数据存储的场合,理论上每个通道都可以使用整个RAM空间,RAM空间利用率能达到最大100%,大大节约了成本;本发明可以用于基于任何需要对存储器进行访问管理的应用。
2、本发明所提供的方法因为只针对业务通道的数据存储需求实时动态分配存储空间,数据存储需求大则分配的分块多,存储需求小则分配的分块少。该方法能实时适应业务通道的流量的突发,对于那些难以估算通道数据流量或者通道数据流量在运行过程中存在很大变化的应用,具有重要的实用价值。
3、本发明提供的方法能够简单而灵活地在系统的正常运行过程中为新增通道分配存储空间而不影响当前其他通道数据的正常存储,并自动地实现了对运行过程中删除通道存储空间的回收和再利用,对于那些频繁增删存储通道的应用,具有重要的应用价值。
图1为通信设备中芯片对存储器的访问控制结构示意图;图2和图3分别为现有的两种存储器空间地址管理示意图;图4为本发明所述的方法的处理过程示意图;图5、图6和图7分别为本发明中动态管理存储器空间地址示意图。
具体实施例方式
本发明提供了一种动态共享RAM空间的实现方法,该方法的核心是采用对RAM空间进行分块和分块动态串链的方式,对存储分块进行动态的分配调度和回收管理,从而实现RAM空间在各个业务通道之间的完全共享,并灵活地实现为新增业务通道分配缓存空间,以及将删除通道的缓存空间回收并重新使用等功能。当然,本发明不仅适用于通信设备中的芯片设计领域,而且在其他需要进行存储器存储控制的场合也有较高的实用价值。
本发明所述的方法的具体实现方式包括(1)首先,将所述的存储器分成若干个存储分块,并分别为每个存储分块分配相应的地址信息,每个存储分块通常包含多个数据存储单元,且每个存储分块的地址信息包括存储分块的首地址信息及偏移地址信息,其中,首地址信息指示了存储分块在存储器存储空间中的位置,而偏移地址用于在具体读/写每个存储分块时,作为低位地址寻址分块中每个存储单元;(2)其次,将所述的若干个分块基于相应的地址信息组成相应的存储分块链,存储分块间通过链接指针链接组成空闲存储分块链;
所采用的方法为建立一个首地址指针表,所述的一个存储分块对应表中的一个首地址指针表项,表项中记录了存储分块的地址指针信息,具体包括首地址信息、链接指针及链尾标记信息,链接指针用于指示该存储分块在链中与其链接的下一个存储分块,所述的链尾标记则用于标明该存储分块是否为链中的链尾,如果是,则该标记为有效,否则为无效;(3)最后,当发生数据存储需求时,或者主动为可能发生的数据存储需求从空闲存储分块链中分配一个或多个存储分块,一个或多个存储分块同样通过链接指针链接组成相应的数据存储分块链,对应数据存储需求的存储器访问指针指向数据存储分块链的链首;通常需要针对一个数据存储需求分配一个数据存储分块链,如一个业务通道的数据存储需求等;在为数据存储需求分配存储分块过程中,既可以根据数据存储需求的大小一次为其分配相应数量的存储分块,也可以采用每次只分配固定数量的一个或几个存储分块,当分配的存储分块中存满数据后,如果还需要存储其他数据,则再为其分配新的数据存储分块,直到满足数据存储需求;当需要将数据存储分块链中的数据读出时,则从所述的首地址指针表中获取该数据存储分块链中的链首的分块的地址信息,并根据所述的地址信息从数据存储分块链中进行数据的读取。
(4)另外,本发明还包括将已经分配给相应的数据存储需求的数据存储分块链中的一个或多个存储分块不再需要进行数据的存储时,即为空闲状态时,则将其释放回空闲存储分块链中,以便于在执行过程(3)时分配给另外的数据存储需求应用;具体包括当某一数据存储需求需要存储数据量减少时,或某一数据存储需求不存在时,则需要将其对应的数据存储分块链中的部分或全部存储分块对应的首地址指针表中的表项信息进行调整,从而使得所述部分或全部存储分块重新串入空闲存储分块链中。
可以看出,本发明中,既实现了为各数据存储需求动态分配相应的数据存储分块链,又实现了动态回收数据存储分块链中的空闲状态的存储分块,从而使得针对存储器存储空间的利用更为灵活。
下面以通信设备中的芯片设计过程中的存储器存储控制应用为例对本发明所述的方法的具体实现方式作进一步说明,如图4和图5所示,具体包括步骤41将整个RAM空间划分为若干个存储分块RAM Block,假设存储分块的数量为M,所述的RAM Block的大小可以根据具体设计灵活划分,通常包括若干个存储单元;每个RAM Block的访问地址由首地址和偏移地址组成,其中首地址指示了RAM Block在RAM空间中的位置,而偏移地址用于具体读写每个RAMBlock时作为低位地址寻址分块中每个存储单元。
步骤42建立相应的存储分块的首地址指针表,通过该首地址指针表便可以将所述的各个存储分块组成相应的存储分块链;此时,由于还未分配给相应的业务通道用于数据的存储,因此可以称为空闲存储分块链,相应的存储分块,则可以称为空闲存储分块;所述的首地址指针表由与所述的RAM Block数目一致的M个首地址指针表项组成,每个首地址指针表项的地址指针信息域包括对应的RAM Block的首地址;链连接指针CI;链尾标记end;链尾标记有效,即end=1时的首地址指针表项中的CI值将被忽略,所述的链尾标记也可以用其他方式表示,例如采用一个特定的CI值,该CI值不指向任何已存在的分块;在实际芯片中,该分块首地址指针表可以存放于芯片内部或者外部的RAM中;将各个存储分块组成存储分块链的过程包括将一个首地址指针表项A的CI的内容指向另一个“首地址指针表项”B,即通过A的CI内容能寻址到B,这样A和B就串接了起来;依次类推,所有的首地址指针表项者可以被串接起来形成一条链;因为每个首地址指针表项都带有一个RAM Block的首地址信息,通过这种方式,外部的各个RAM Block也被串成了一条链,处于链尾的RAM Block对应的首地址指针表项的链尾标记end设置为有效;这样,在系统初始化时,所有的存储分块首先通过这样的方式串成了一条空闲存储分块链,该空闲存储分块链首尾的存储分块对应的首地址指针表项被空闲链首尾指针所指向,即所述的空闲链首尾指针用于指向空闲存储分块链的首尾存储分块对应的首地址指针表项。
步骤43对应每个已配置的业务通道分别为其从所述的存储分块链中分配相应的存储分块,并串成相应的数据存储分块链,用于进行业务通道的数据的存储;首先,在芯片的设计过程中,需要针对各个业务通道均设置一个数据存储分块链的首尾地址指针,该指针指向了一条数据存储分块链;当某个业务通道有数据存储需求时,申请一个新的存储分块首地址分配给该业务通道,即从空闲存储分块链中取一个空闲存储分块分配给该业务通道,例如读取空闲存储分块链的链首对应的首地址指针表项中的分块首地址信息,并分配给该业务通道,并且,该首地址指针表项同时也被串入到该业务通道的数据存储分块链的链尾;如图5所示,对于业务通道CH0,为其设置的首尾地址指针分别为CI(B)=9和CI(E)=11,此时,可以确定该业务通道的数据存储分块链包括block9、10、11三个存储分块;当为业务通道分配的存储分块写满数据后,则可以再次为该业务通道申请新的空闲存储分块,这样每个业务通道已经存储数据的存储分块也串成一条链。
步骤44当需要读出某个业务通道的数据时,只需要获取该业务通道的数据存储分块链的链首的存储分块的地址信息,即可从该存储分块开始依次读取数据存储分块链中各存储分块中保存的数据信息;仍以业务通道CH0为例,当需要读出该业务通道对应的数据存储分块链中存储的数据时,则查询首地址指针表以获取链首的存储分块的地址信息,并从该地址信息开始进行数据的读取操作。
从上述过程描述可以看出,本发明可以针对业务通道数据存储的需求,在芯片设计过程中根据实际需要灵活确定并调整分配给各个业务通道的存储空间的大小,从而有利于对存储器有限空间的合理利用。
除此之外,本发明还可以实现针对新增业务通道灵活地进行存储空间的分配,以及有效地回收已经分配给相应业务通道的存储空间的功能。下面将分别进行描述1、当通信系统中出现新增的业务通道时,只需再为该业务通道分配一个数据存储分块链首尾指针即可,具体的处理过程与上述步骤43相同,之后的存取操作过程同样和其他的业务通道的操作处理过程相同;而且,整个处理过程不影响其他通道的数据存取。
2、当已经分配给相应业务通道的存储分块不需要再进行数据存储时,则可以对所述的存储分块进行回收,从而实现针对存储器存储空间的回收;通常在以下两种情况下需要进行存储分块的回收操作(1)当业务通道的存储分块链链首的存储分块存储的内容被读取之后,需要将该存储分块释放为空闲存储分块,该存储分块对应的首地址指针表项将被串入到空闲存储分块链的链尾处;具体的处理方法包括对应业务通道的链首指针被改为指向链中和该存储分块连接的下一个存储分块;将该存储分块的链尾标记end置为有效,并将原来空闲存储分块链的链尾的存储分块的链接指针CI改为指向该存储分块,且其链尾标记end修改为无效;(2)对于删除的业务通道,需要将分配给它的存储分块进行回收处理,同时,还需要删除原来为其分配的数据存储分块链首尾指针,回收的存储分块又可以供其他业务通道共享使用;例如,当要删除某个通道时,首先不再为其申请新的存储分块;然后将该通道中已经存储数据的存储分块读空并释放,相应的各个存储分块将被回收加入到空闲存储分块链中供其他通道使用,具体的处理方法是将各个存储分块依次串入空闲存储分块链的链尾处,并修改各存储分块及原空闲存储分块链的链尾的存储分块的链接指针CI及链尾标记end;最后,删除该业务通道对应的数据存储分块链首尾指针。
本发明还可以使得不同优先级报文合理地共享存储器存储空间,具体的实现方式可以有两种,下面将分别进行说明。
第一种为针对不同优先级别报文分别建立对应的数据存储分块链可以将业务传输中设定的每个优先级看作是同一个数据存储需求,针对每个优先级都独立对应设置有一条优先级“数据存储分块链”,所述的优先级“数据存储分块链”包含一个或多个存储分块,每个存储分块所存储的报文均应属于同一个优先级;而且,针对每个优先级“数据存储分块链”还需要分别设置一个优先级“数据存储分块链首尾指针”用于指向该链。
当需要存储相应优先级的报文时,则从“空闲存储分块链”中申请一个新的存储分块,并将其根据该报文的优先级别加入到相应优先级“数据存储分块链”中,即将该存储分块对应的“首地址指针表项”串入到对应优先级的“数据存储分块链”的链尾;同时,将从“空闲存储分块链”中申请的该存储分块分配给需要存储的报文,例如读取该存储分块对应的“首地址指针表项”中的分块首地址信息分配给该报文,用于进行报文的存储操作。这样,优先级“数据存储分块链”中的各存储分块就可以按照存储的先后顺序依次串接起来。
当需要对优先级“数据存储分块链”中的存储报文按优先级读取时,则由于每条优先级“数据存储分块链”均对应同一个优先级,故仅需要对报文按照优先级别的不同依次对相应的优先级“数据存储分块链”进行读取处理即可以实现按优先级读取并发送报文的处理要求。例如,高优先级的报文被优先处理,则依次去判断各个优先级“数据存储分块链”,如果高优先级别的优先级“数据存储分块链”中串有已经存储报文数据的分块,则优先读取处理,之后处理较低优先级对应的优先级“数据存储分块链”中存储的报文,即依次由高优先级到低优先级。从而保证高优先级别的报文总能被优先处理,满足了报文优先级排序处理的需求。
同时,在针对不同优先级别报文分别建立优先级“数据存储分块链”的方法中,如果由于QoS需求变化而需要增加处理的优先级时,则需要增加相应的优先级“数据存储分块链”;由于本发明可以实现存储分块共享,存储分块可以根据存储请求自动分配,因此,当需要增加相应的优先级“数据存储分块链”时,只需要再为该优先级设置一个优先级“数据存储分块链首尾指针”即可,之后当需要向该优先级“数据存储分块链”中存储数据时,从空闲存储分块链中为其分配相应的存储分块就可以了,而不会影响到其他优先级的报文存取处理过程。
如果需要删除优先级对应的优先级“数据存储分块链”,则需要将为其分配存储分块进行回收,并删除原来为其分配的“优先级存储分块链首尾指针”,具体的存储分块的回收处理方式与前面针对其他链中的存储分块的回收处理方式相同,此处不赘述。
第二种为将各报文按照优先级别顺序存储于同一数据存储分块链中在系统初始化时,将所有的存储分块串成一条“空闲存储分块链”,其中每一个“首地址指针表项”中还设置有CLS(优先级别)域,用于记录在相应的优先级标识信息,且均初始化设置为最低优先级,例如CLS=0;该“空闲存储分块链”首尾的“首地址指针表项”被“空闲存储分块链首尾指针”所指向。
当有报文数据存储需求时,从“空闲存储分块链”中申请一个新的存储分块首地址,将从“空闲存储分块链”中取一个空闲存储分块分配给报文,比如读取空闲链首的对应“首地址指针表项”中的分块首地址信息,分配给该报文进行存储。要求存储进同一个存储分块的报文数据都是属于同一个优先级别CLS。写入该存储分块的地址包括分配得到的首地址和写入操作时的写偏移地址。
对于存储了报文的所有存储分块,对应着一条“数据存储分块链”,设置了“数据存储分块链首尾指针”来指向该分块链。在存储报文时,所述报文的优先级别CLS确定了在相应的存储分块在“数据存储分块链”中的位置,也就是说“数据存储分块链”中的存储分块是按照其所存储的报文优先级别CLS进行排序串链的,同样,存储分块串链是通过对应的“首地址指针表项”串链来完成。
下面将把存储分块串成“数据存储分块链”的处理过程进行说明假设优先级按高到低排序,例如有0~7个优先级,7为最高,0为最低,则将存储分块串链的过程为首先,一个被分配且正在存储报文的存储分块,其“首地址指针表项”X的CLS域将更新为和其存储的报文的优先级别CLS一致;然后,从“数据存储分块链”的链首开始,依次读出一个“首地址指针表项”的CLS域和X的CLS域比较,如果前者的CLS值大于或等于X的CLS值(即优先级与该报文相等或者更高),则再读链中下一个“首地址指针表项”的CLS域来进行比较,直到找到链中的一个“首地址指针表项”M的CLS比X的CLS值小(优先级比X低),则将X插入到M的前面;如果一直比较到链尾都无法找到一个“首地址指针表项”的CLS域比X小,则说明该存储分块存储的当前报文的优先级最低,则就加入到链尾中。通过这种方式,“数据存储分块链”中各个存储分块就可以按照优先级顺序和写入存储的顺序从高到低排列。
第二种方式中,存储报文的优先级读取过程由于所存储报文的存储分块为按报文优先级排序,故读取报文时只需要从相应的“数据存储分块链”中依次由链首开始读取分块首地址,然后从该存储分块读取报文即可。
在第二种方式中,同样可以根据数据存储情况进行存储分块的回收处理,具体的回收处理方式与前面描述过的回收处理方式相同。同时,该方式中,对于QoS的需求变化,可能需要新增优先级别或者删除某些优先级别;当需要新增优先级和删除优先级时,该方式中采用的优先级存储分块串链方法可以支持任意的优先级别,而且存储分块是共享的方式,只在有报文数据存储请求时才会分配分块空间,故新增优先级别和删除某些优先级别对上述的存储和优先级排序操作都可自动完成而无须进行设计改动。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
权利要求
1.一种动态共享存储器存储空间的实现方法,其特征在于,包括A、将存储器的存储空间分成若干个存储分块,并为每个存储分块分配对应的地址指针信息;B、当发生数据存储需求时,动态为其分配一条由一个或多个存储分块基于所述地址指针信息组成的数据存储分块链,并利用所述数据存储分块链进行数据的存储;C、当所述的数据存储分块链中的存储分块无需存储数据时,则将其释放为可以分配给其他数据存储需求的存储分块。
2.根据权利要求1所述的动态共享存储器存储空间的实现方法,其特征在于,所述的步骤A包括所述的若干个存储分块组成存储分块链;并且,每个存储分块对应的地址指针信息包括分块首地址用于指向存储分块在存储器存储空间中的位置;链接指针用于指向该存储分块链接的下一个存储分块的指针信息;链尾标记单独设置的标志位,当存储分块为链尾时,该标记有效;或者当存储分块为链尾时,将链接指针设置为特定值作为链尾标记。
3.根据权利要求1所述的动态共享存储器存储空间的实现方法,其特征在于,所述的步骤B还包括将为所述数据存储需求分配的一个或多个存储分块基于存储分块的链接指针信息组成的数据存储分块链,为所述的数据存储分块链建立数据存储分块链首尾指针表,表中记录着所述数据存储分块链的首尾指针信息。
4.根据权利要求1、2或3述的动态共享存储器存储空间的实现方法,其特征在于,所述的步骤B还包括当为所述的数据存储需求分配的数据存储分块链无法满足数据存储需求时,则继续为所述的数据存储需求分配新的存储分块,新的存储分块串到已有的数据存储分块链的链尾,并修改数据存储分块链首尾指针表信息。
5.根据权利要求1、2或3所述的动态共享存储器存储空间的实现方法,其特征在于,所述的步骤C包括当所述的数据存储需求需要存储的数据量减少或不再需要进行数据的存储时,则所述的数据存储分块链中的部分或全部分块确定无需存储数据。
6.根据权利要求1、2或3所述的动态共享存储器存储空间的实现方法,其特征在于,所述的步骤C还包括将释放的存储分块串到空闲存储分块链的链尾,并将空闲存储分块链对应的地址信息中该空闲分块的链尾标记设置为有效,将原链尾空闲分块的链尾标记设置为无效。
7.根据权利要求1、2或3所述的动态共享存储器存储空间的实现方法,其特征在于,该方法还包括根据数据存储需求的大小,预先为通信系统中的各业务通道分配相应的数据存储分块链。
8.根据权利要求1、2或3所述的动态共享存储器存储空间的实现方法,其特征在于,该方法还包括当需要从所述的数据存储分块链中读取数据时,则需要从该数据存储分块链对应的首尾指针表中获取其链首分块的指针信息,进行获得其地址信息,并根据所述的地址信息读取各存储分块中的数据。
9.根据权利要求1、2或3所述的动态共享存储器存储空间的实现方法,其特征在于,所述的数据存储需求包括通信设备的芯片中已经配置的业务通道和新增加的业务通道的数据存储需求。
10.根据权利要求9所述的动态共享存储器存储空间的实现方法,其特征在于,步骤A所述的存储分块对应的地址指针信息可以保存于芯片内或外部存储器中。
11.根据权利要求9所述的动态共享存储器存储空间的实现方法,其特征在于,当业务通道的数据需要分优先级存储时,该方法包括D、确定各业务通道待存储数据报文的优先级别,并为级别相同的报文分配相应的数据存储分块链分别进行数据的存储;E、当读取数据时,根据数据存储分块链存储报文的优先级别由高优先级到低优先级依次对相应的数据存储分块链进行读取数据操作。
12.根据权利要求11所述的动态共享存储器存储空间的实现方法,其特征在于所述的步骤D还包括为所述的数据存储分块链设置相应的优先级标识;并且,所述的步骤E还包括当读取数据时,根据所述的优先级标识依次读取各数据存储分块链中的数据。
13.根据权利要求9所述的动态共享存储器存储空间的实现方法,其特征在于,当业务通道的数据需要分优先级存储时,该方法包括F、确定待存储数据报文的优先级别,并将所述数据报文按照优先级别顺序存储于该业务通道对应的数据存储分块链中;G、当进行数据读取时,获取存储高优先级别报文的存储分块的首地址信息,并依次从数据存储分块链中读取数据。
14.根据权利要求13所述的动态共享存储器存储空间的实现方法,其特征在于,所述的步骤F进一步包括建立优先级数据存储分块链,链中的存储分块对应的各首地址指针表项中分别设置有优先级标识,设置数据存储分块链首尾指针指向该链。
15.根据权利要求14所述的动态共享存储器存储空间的实现方法,其特征在于,所述的步骤F进一步包括为待存储数据报文从存储分块链中分配空闲的存储分块;查找所述优先级数据存储分块链中各存储分块对应的优先级标识,并根据待存储数据报文的优先级及查找到的优先级标识确定存储该报文的存储分块在优先级数据存储分块链中的位置;将所述的存储分块串入优先级数据存储分块链中确定的位置上。
16.根据权利要求13所述的动态共享存储器存储空间的实现方法,其特征在于,所述的步骤F还包括在系统初始化时,将由所有的存储分块串成的一条存储分块链的每一个首地址指针表项中设置有用于承载优先级标识的优先级别域,且均初始化设置为最低优先级;当需要存储数据时,从存储分块链中为该数据分配空闲的存储分块,并通过修改所述存储分块对应首地址指针表项内容将其串入优先级数据存储分块链中。
17.根据权利要求16所述的动态共享存储器存储空间的实现方法,其特征在于,所述的优先级数据存储分块链中的存储于同一个存储分块的报文均应属于同一个优先级别。
全文摘要
本发明涉及一种动态共享存储器存储空间的实现方法。该方法主要包括首先,将存储器的存储空间分成若干个存储分块,并为每个存储分块分配对应的地址指针信息,串成存储分块链;然后,在存储数据时,动态为其分配一条由一个或多个存储分块基于所述地址指针信息组成的数据存储分块链进行数据的存储;并且,在数据存储分块链中的存储分块无需存储数据时,将其释放回存储分块链中。本发明所提供的对RAM空间进行分块及分块动态串链实现存储器空间共享的方法,极大地提高了RAM空间的利用;特别在处理多个通道数据存储的场合,理论上每个通道都可以使用整个RAM空间。因此,本发明可以用于基于任何需要的对存储器进行访问管理的应用。
文档编号G06F12/02GK1855881SQ20051006658
公开日2006年11月1日 申请日期2005年4月28日 优先权日2005年4月28日
发明者潘剑锋, 涂君, 柳精伟, 雷春 申请人:华为技术有限公司