存储地址标示、配置方法和数据存取方法及系统的制作方法

文档序号:6502998阅读:211来源:国知局
存储地址标示、配置方法和数据存取方法及系统的制作方法
【专利摘要】本申请提供一种存储地址标示方法,包括:将存储区域平均划分为若干存储单元,存储单元用于存储所述存储单元对应的数据存储空间的分配状态信息;根据存储单元在所述存储区域中的位置,获得与存储单元对应的数据存储空间的地址,其中,数据存储空间的地址包括行比特和/或列比特,所述行比特用于指示所述存储单元在所述存储区域中的行位置,所述列比特用于指示所述存储单元在所述存储区域中的列位置,本申请提供的一种存储地址标示方法,在待存储的数据的存储量一定的情况下,存储地址占用的存储空间减小,或者说,在存储空间一定时,由于存储空间内地址数增加,所以,可存储的数据量增加,本申请还提供一种存储地址配置方法和数据存取方法及系统。
【专利说明】存储地址标示、配置方法和数据存取方法及系统
【技术领域】
[0001]本发明涉及通信【技术领域】,尤其涉及一种存储地址标示、配置方法和数据存取方法及系统。
【背景技术】
[0002]在流量管理类芯片处理中,数据有好多种类,不同类型的数据按照到达的先后顺序进入先进先出队列(First In First 0ut,FIF0)进行缓存,然后再进行分类入队操作,但是不同类型的数据可能会有不同的入队延时要求,而各种数据是按先后顺序进入同一 FIFO的,因此,不同类型的数据在从FIFO中读出然后再进入各自的队列时,会有严重的头阻塞的问题,即优先级低的数据会阻塞优先级高的数据。
[0003]为解决头阻塞问题,现有技术中提供一种共享缓存的数据处理方法,该数据处理方法借助共享缓存地址池、地址链表和队列指针完成。以两类数据为例,当有数据写入时,从共享缓存地址池中取出地址,为两类数据分别建立链表;由两个寄存器分别维护两个链表的头尾指针,数据写入时,尾指针更新,数据读出时,头指针更新为当前头指针指向的下一指针,当前头指针所指向的地址被放入共享缓存地址池中做回收地址。
[0004]但是,发明人在实现本发明的过程中发现,现有的这种共享缓存的数据处理方法中,每个地址需要与缓存能力相对应的位数来表示。例如,假设有IK个地址,那么每个地址需要10个比特位来表示,那么缓存地址池所占用的空间就为IKX IObit,也就是说,现有技术在实现共享缓存的过程中,在待缓存的地址的数量一定的情况下,共享缓存地址池所占用的存储区域的面积大。

【发明内容】

[0005]本发明实施例提供了一种存储地址标示方法,以解决在待存储的数据的存储量一定的情况下,共享缓存地址占用的存储空间大的问题。
[0006]本发明的第一方面提供一种存储地址标示方法,包括:
[0007]将存储区域平均划分为若干存储单元,所述存储单元用于存储所述存储单元对应的数据存储空间的分配状态信息;
[0008]根据所述存储单元在所述存储区域中的位置,获得与所述存储单元对应的数据存储空间的地址,其中,所述数据存储空间的地址包括行比特和/或列比特,所述行比特用于指示所述存储单元在所述存储区域中的行位置,所述列比特用于指示所述存储单元在所述存储区域中的列位置。
[0009]在第一方面的第一种可能的实现方式中,所述存储区域被划分为一行或一列存储单元。
[0010]结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,数据存储空间的地址包括:行比特或列比特。
[0011]在第一方面的第三种可能的实现方式中,所述存储区域被划分为若干行和若干列存储单元。
[0012]结合第一方面的第三种可能实现方式,在第一方面的第四种可能的实现方式中,所述数据存储空间的地址包括行比特和列比特。
[0013]本发明的第二方面提供一种存储地址配置方法,所述存储地址所在的存储区域包括若干存储单元,所述存储单元用于存储所述存储单元对应的数据存储空间的分配状态信息,所述数据存储空间的地址由所述数据存储空间对应的存储单元在存储区域中的位置确定,所述数据存储空间的地址即为储存地址,所述方法包括:
[0014]分配地址时,
[0015]读取存储区域中的各个存储单元存储的分配状态信息,选择分配状态信息指示为未分配状态的存储单元;
[0016]依据选择的存储单元在所述存储区域中的位置,确定所选择的存储单元对应的数据存储空间的地址;
[0017]数据存入所述数据存储空间后,将所述选择的存储单元中存储的分配状态信息修改为已分配状态,还包括
[0018]回收地址时,
[0019]在数据存储空间中的数据被读取后,依据所述数据存储空间的地址,获得用于存储所述数据存储空间的分配状态信息的存储单元的位置;
[0020]依据所述存储单元的位置在存储区域中查找所述存储单元;
[0021]将所述存储单元存储的分配状态信息修改为未分配状态。
[0022]结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能实现方式中,还包括:
[0023]记录所述存储区域的当前行存储区域的分配状态,以及当前行存储区域内各个列的存储单元的分配状态。
[0024]结合第二方面的第二种可能的实现方式,在第二方面的第三种可能实现方式中,在当前行存储区域内有地址回收和/或有地址分配时,对记录的当前行存储区域内各个列的存储单元的分配状态进行修改,而不修改当前行存储区域内的存储单元存储的分配状态信息。
[0025]结合第二方面的第二种或第三种可能的实现方式,在第二方面的第四种可能的实现方式中,在记录的当前行存储区域内所有存储单元的分配状态都为已分配状态时,将当前行存储区域内所有存储单元存储的分配状态信息修改为已分配状态。
[0026]结合第二方面的第二种或第三种或第四种可能的实现方式,在第二方面的第五种可能的实现方式中,还包括:
[0027]预先读取当前行存储区域的下一行存储区域内各个存储单元存储的分配状态信
肩、O
[0028]本发明的第三方面提供一种数据存取方法,所述数据的存储空间对应于包括若干存储单元的存储区域内的存储单元,所述存储单元用于存储所述存储单元对应的数据存储空间的分配状态信息,数据存储空间的地址有该数据存储空间对应的存储单元在存储区域中的位置确定,所述方法包括:
[0029]存储数据时,[0030]读取存储区域中各个存储单元保存的分配状态信息,选择分配状态信息指示为未分配状态的存储单元;
[0031]依据选择的存储单元在所述存储区域中的位置,确定所选择的存储单元对应的数据存储空间的地址;
[0032]依据所述数据存储空间的地址及所需存储的数据建立链表;
[0033]将所述存储单元存储的分配状态信息修改为已分配状态;
[0034]读取数据时,
[0035]依据所述链表读取数据存储空间中的数据;
[0036]依据所述数据存储空间的地址,获得用于存储所述数据存储空间的分配状态信息的存储单元的位置;
[0037]依据所述存储单元的位置,在存储区域中查找所述存储单元;
[0038]将所述存储单元存储的分配状态信息修改为未分配状态。
[0039]结合第三方面,在第三方面的第一种可能的实现方式中,还包括:
[0040]记录所述存储区域的当前行存储区域的分配状态,以及当前行存储区域内各个列的存储单元的分配状态。
[0041]结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,在当前行存储区域内有地址回收和/或有地址分配时,对记录的当前行存储区域内各个列的存储单元的分配状态进行修改,而不修改当前行存储区域内的存储单元存储的分配状态信息。
[0042]结合第三方面的第一种或第二种可能的实现方式,在第三方面的第三种可能的实现方式中,在记录的当前行存储区域内所有存储单元的分配状态都为已分配状态时,将当前行存储区域内所有存储单元存储的分配状态信息修改为已分配状态。
[0043]结合第三方面的第一种或第二种或第三种可能的实现方式,在第三方面的第四种可能的实现方式中,还包括:
[0044]预先读取当前行存储区域的下一行存储区域内各个存储单元存储的分配状态信
肩、O
[0045]本发明的第四方面提供一种存储区域划分系统,包括:
[0046]划分模块,用于将存储区域平均划分为若干存储单元,所述存储单元用于存储所述存储单元所对应的数据存储空间的分配状态信息;
[0047]其中,所述存储单元所对应的数据存储空间的地址根据所述存储单元在所述存储区域中的位置确定。
[0048]本发明的第五方面提供一种存储地址配置系统,包括:
[0049]第一存储器,所述第一存储器由若干存储单元组成,所述存储单元用于存储所述存储单元对应的数据存储空间的分配状态信息,数据存储空间的地址由该数据存储空间对应的存储单元在存储区域中的位置,所述数据存储空间的地址即为存储地址;
[0050]第一读取模块,用于在分配地址时,读取存储区中各个存储单元存储的分配状态信息,选择分配状态信息指示为未分配状态的存储单元;
[0051]第一确定模块,用于依据选择的存储单元在所述存储区域中的位置,确定所选择的存储单元对应的数据存储空间的地址;[0052]第一修改模块,用于在数据存入所述数据存储空间后,将所述存储单元存储的分配状态信息修改为已分配状态。
[0053]结合第五方面,在第五方面第一种可能的实现方式中,还包括:
[0054]第一获取模块,用于在数据存储空间中的数据被读取后,依据所述数据存储空间的地址,获得用于存储所述数据存储空间的分配状态信息的存储单元的位置;
[0055]第一查找模块,用于依据所述存储单元的位置,在第一存储器中查找所述存储单元;
[0056]第二修改模块,用于将所述存储单元存储的分配状态信息修改为未分配状态。
[0057]结合第五方面或第五方面的第一种可能实现方式,在第五方面的第二种可能的实现方式中,还包括:
[0058]第一记录模块,用于记录所述第一存储器当前行存储区域的分配状态;
[0059]第二记录模块,用于记录当前行存储区域内各个列的存储单元的分配状态。
[0060]结合第五方面的第二种可能的实现方式,在第五方面的第三种可能的实现方式中,还包括:
[0061]第三修改模块,用于在当前行存储区域内有地址回收和/或有地址分配时,对所述第二记录模块记录的当前行存储区域内各个列的存储单元的分配状态进行修改,而不修改当前行存储区域内的存储单元存储的分配状态信息。
[0062]结合第五方面的第二种或第三种可能的实现方式,在第五方面的第四种可能的实现方式中,还包括:
[0063]第四修改模块,用于在所述第二记录模块记录的当前行存储区域内所有存储单元的分配状态都为已分配状态时,将第一存储器内当前行的所有存储单元存储的分配状态信息修改为已分配状态。
[0064]结合第五方面的第二种或第三种或第四种可能的实现方式,在第五方面的第五种可能的实现方式中,还包括:
[0065]第二三记录模块,用于预先读取第一存储器内当前行存储区域的下一行的存储区域内各个存储单元存储的分配状态信息。
[0066]本发明的第六方面提供一种数据存取系统,包括:
[0067]第二存储器,由若干存储单元组成,所述存储单元用于存储所述存储单元对应的数据存储空间的分配状态信息,数据存空间的地址由该数据存储空间对应的存储单元在存储区域中的位置确定;
[0068]第三读取模块,用于在存储数据时,读取第二存储器中各个存储单元保存的分配状态信息,选择分配状态信息指示为未分配状态的存储单元;
[0069]第三确定模块,用于依据选择的存储单元在所述存储区域中的位置确定所选择的存储单元对应的数据存储空间的地址;
[0070]数据存储器,用于依据所述数据存储空间的地址及待存储的数据建立链表;
[0071]第五修改模块,用于在所述第三读取模块选择分配状态信息指示为未分配状态的存储单元后,将所选择的存储单元存储的分配状态信息修改为已分配状态;
[0072]第四读取模块,用于在读取数据时,依据所述链表读取数据存储空间中的数据;
[0073]第二获取模块,用于依据所述数据存储空间的地址,获得用于存储所述数据存储空间的分配状态信息的存储单元的位置;
[0074]第二查找模块,用于依据所述存储单元的位置,在第二存储器中查找所述存储单元;
[0075]第六修改模块,用于将所述存储单元存储的分配状态信息修改为未分配状态。
[0076]结合第六方面,在第六方面的第一种可能的实现方式中,还包括:
[0077]第三记录模块,用于记录所述第二存储器当前行存储区域的分配状态;
[0078]第四记录模块,用于记录当前行存储区域内各个列的存储单元的分配状态。
[0079]结合第六方面的第一种可能的实现方式,在第六方面的第二种可能的实现方式中,还包括:
[0080]第七修改模块,用于在当前行存储区域内有地址回收和/或有地址分配时,对所述第四记录模块记录的当前行存储区域内各个列的存储单元的分配状态信息进行修改,而不修改当前行存储区域内的存储单元存储的分配状态信息。
[0081]结合第六方面的第一种或第二种可能的实现方式,在第六方面的三种可能的实现方式中,还包括:
[0082]第八修改模块,用于在所述第四记录模块记录的当前行存储区域内所有存储单元的分配状态都为已分配状态时,将当前行存储区域内所有存储单元存储的分配状态信息修改为已分配状态。
[0083]结合第六方面的第一种或第二种或第三种可能的实现方式,在第六方面的四种可能的实现方式中,还包括:
[0084]第五记录模块,用于预先读取第二存储器内当前行存储区域的下一行的存储区域内各个存储单元存储的分配状态信息。
[0085]本发明的第七方面提供一种存储地址配置系统,包括:
[0086]至少一个处理器,其被配置为:
[0087]读取存储区域中各个存储单元存储的分配状态信息,选择分配状态信息指示为未分配状态的存储单元;
[0088]依据所选择的存储单元在所述存储区域中的位置地址;
[0089]将数据存入所述数据存储空间后,将所选择的存储单元存储的分配状态信息修改为已分配状态;以及,
[0090]与所述至少一个处理器耦合的存储器,,所述存储器内至少包括由若干存储单元组成的存储区域,所述存储单元用于存储所述存储单元对应的数据存储空间的分配状态信息,数据存储空间的地址由该数据存储空间对应的存储单元在存储区域中的位置确定。
[0091]结合第七方面,在第七方面的第一种可能的实现方式中,所述至少一个处理器进一步被配置为:
[0092]在读取数据存储空间中的数据后,依据所述数据存储空间的地址,获得用于存储所述数据存储空间的分配状态信息的存储单元的位置;
[0093]依据所述存储单元的位置,在所述存储区域中查找所述存储单元;
[0094]将所述存储单元存储的分配状态信息修改为未分配状态。
[0095]结合第七方面或第七方面的第一种可能的实现方式,在第七方面的第二种可能的实现方式中,所述至少一个处理器进一步被配置为:[0096]记录所述存储区域的当前行行存储区域的分配状态,以及当前行存储区域内各个列的存储单元的分配状态。
[0097]结合第七方面的第二种可能的实现方式,在第七方面的第三中可能的实现方式中,所述至少一个处理器进一步被配置为:
[0098]在当前行存储区域内有地址回收和/或有地址分配时,对记录的当前行存储区域内的存储单元的分配状态信息进行修改,而不修改当前行存储区域内的存储单元存储的分配状态信息。
[0099]结合第七方面的第二种或第三种可能的实现方式,在第七方面的第四种可能的实现方式中,所述至少一个处理器进一步被配置为:
[0100]在记录的与当前行存储区域内所有存储单元对应的数据存储空间的分配状态都为已分配状态时,将当前行存储区域内所有存储单元存储的分配状态信息修改为已分配状态。
[0101]结合第七方面的第二种或第三种或第四种可能的实现方式,在第七方面的第五种可能的实现方式中,所述至少一个处理器进一步被配置为:
[0102]预先读取当前行存储区域的下一行存储区域内各个存储单元存储的分配状态信
肩、O
[0103]本发明实施例提供的一种存储地址标示方法,建立存储数据的数据存储空间与存储区域中的存储单元之间的映射关系,所述存储单元内存储的是存储单元对应的数据存储空间的分配状态信息,存储单元在存储区域中的位置则映射到对应的数据存储空间的地址。所述分配状态信息可以只用一个比特位来表示,即只占用一个Ibit的存储单元就可以指示某一个存储地址的数据存储空间的占用(或分配)状态信息。在使用中,可以直接对存储单元的位置信息进行运算得到对应的数据存储空间的地址,从而确认该地址的数据存储空间的占用(或分配)状态,而不需要通过额外存储数据存储空间的地址来维持数据存储空间的占用状态信息。因此,可以极大地降低分配状态信息对于存储系统的占用。同时,由于每一个存储单元对应一个存储地址,而每一个存储单元的存储区域的大小可以为lbit,也就是说,一个位宽一定的存储地址所占用的存储区域的大小可以小于所述存储地址的位宽,而现有技术中,一个位宽一定的存储地址所占用的存储区域的大小必须等于所述存储地址的位宽,因此,本申请实施例提供的存储地址标示方法也可以极大地降低存储地址对于存储系统的占用。
[0104]本方案中,所述存储单元存储的分配状态信息为客观存在的信息,通过坐标系确定存储单元的坐标,进而通过坐标值确定存储单元的地址,由于两维信息表示的信息量比一维信息表示的信息量大为自然规律,因此本方案属于受自然规律约束的技术手段。
【专利附图】

【附图说明】
[0105]图1是本申请实施例提供的一种存储地址标示方法的流程图;
[0106]图2是本申请实施例提供的存储区域被划分成一行或者一列时的示意图;
[0107]图3是本申请实施例提供的存储区域被划分成若干行和若干列时的示意图;
[0108]图4为本申请实施例提供的存储地址配置方法的流程图;
[0109]图5为本申请实施例提供的另一种存储地址配置方法的流程图;[0110]图6为本申请实施例提供的一种数据存储方法的流程图;
[0111]图7为本申请实施例提供的一种数据读取方法的流程图;
[0112]图8为本申请实施例提供的一种存储区域划分系统的结构示意图;
[0113]图9为本申请实施例提供的一种存储地址配置系统的结构示意图;
[0114]图10为本申请实施例提供的另一种存储地址配置系统的结构示意图;
[0115]图11为本申请实施例提供的又一种存储地址配置系统的结构示意图;
[0116]图12为本申请实施例提供的又一种存储地址配置系统的结构示意图;
[0117]图13为本申请实施例提供的又一种存储地址配置系统的结构示意图;
[0118]图14为本申请实施例提供的一种数据存取系统的结构示意图;
[0119]图15为本申请实施例提供的又一种数据存取系统的结构示意图;
[0120]图16为本申请实施例提供的又一种数据存取系统的结构示意图;
[0121]图17为本申请实施例提供的又一种存储地址配置系统的结构示意图;
[0122]图18为本申请实施例提供的数据存取方法的具体示例的示意图。
【具体实施方式】
[0123]为了使本领域技术人员能进一步了解本发明的特征及技术内容,请参阅以下有关本发明的详细说明与附图,附图仅提供参考与说明,并非用来限制本发明。
[0124]请参看图1,图1为本申请实施例提供的一种存储地址标示方法的流程图,包括:
[0125]步骤SlOl:将存储区域平均划分为若干存储单元所述存储单元用于存储所述存储单元所对应的数据存储空间的分配状态信息;
[0126]所述分配状态信息用于指示所述存储单元所对应的数据存储空间的分配状态,SP该存储单元对应的数据存储空间是否已经分配给数据,或者该存储单元对应的数据存储空间是否已经被数据占用。
[0127]也就是说,存储区域由若干存储单元组成,各个存储单元内存储的不是地址,而是该存储单元所对应的数据存储空间是否已经被分配的分配状态信息。由于是否被分配这一状态信息可以只用一个比特位来表示,例如,可以用“ I ”表示地址还未被分配,而用“O”表示地址已经被分配,因此,每一个存储单元可以至少占用Ibit存储区域;其中,分配状态信息所使用的比特数与每一个存储单元占用的存储区域的大小相同。
[0128]步骤S102:根据所述存储单元在所述存储区域中的位置,获得与所述存储单元对应的数据存储空间的地址,其中,所述数据存储空间的地址包括行比特和/或列比特,所述行比特用于指示所述存储单元在所述存储区域中的行位置,所述列比特用于指示所述存储单元在所述存储区域中的列位置。
[0129]所述数据存储空间的地址即为存储地址。
[0130]在本发明实施例中,根据存储单元在存储区域中的位置将存储单元与用于存储数据的数据存储空间建立映射关系,数据存储空间的地址由相应的存储单元在存储区域中的位置标示,而在存储单元中存储的分配状态信息就是用于指示存储单元所对应的用于存储数据的数据存储空间的分配或者占用状态。
[0131]在本发明实施例中,所述行比特和列比特均为用于指示所述存储单元的行位置和列位置的二进制数表示。[0132]在本发明实施例中,所述存储区域可能仅被划分成一行或者一列的存储单元,具体参照图2,在这种情况下,所述存储单元对应的存储地址仅包括行比特或者列比特。
[0133]所述存储区域也可能被划分成若干行及若干列存储单元,当所述存储区域被划分为若干行及若干列存储单元时,具体可参看图3,此时,一个存储单元对应的存储地址包括行比特和列比特。
[0134]需要说明的是,图2和图3中的数据(0、1、2、3、4、5……)只是为了说明各个存储单元的行位置和/或列位置,具体各个存储单元对应的存储地址的行比特则是该存储单元的行位置对应的二进制数,而各个存储单元对应的存储地址的列比特则是该存储单元的列位置对应的二进制数,具体的,行比特对应的二进制数的位数依据行位置的最大值(即一行存储单元的个数)确定,列比特对应的二进制数的位数依据列位置的最大值(即一列存储单元的个数)确定。
[0135]具体的,当所述存储区域被划分成一行或者一列存储单元时,一个存储单元对应的存储地址的行比特或者列比特的位数依据所述存储区域的划分得到存储单元的个数确定。例如,假设存储单元的个数为M,那么,所述行比特或者列比特的位数w为满足公式(4)的最小整数: [0136]M ^ 2W (4);
[0137]例如,假设存储区域被划分成一行或者一列100个存储单元,即M=100,那么,所述一个存储单元对应的存储地址的行比特或列比特的位数w取值为:w=7 ;假设存储区域被划分成一行或者一列60个存储单元,即M=60,那么,一个存储单元对应的存储地址的行比特或列比特的位数w取值为:w=6 ;假设存储区域被划分成一行或者一列64个存储单元,SPM=64,那么,一个存储单元对应的存储地址的行比特或列比特的位数w取值为:w=6。具体的,假如存储单元对应的存储地址的行比特或列比特的位数w=6,则第I个存储单元对应的存储地址则仅为其行比特000000,第2个存储单元的对应的存储地址为000001,第三个存储单元对应的存储地址为000010,以此类推。
[0138]当所述存储区域被划分为若干行及若干列存储单元时,一个存储单元对应的存储地址的行比特的位数依据一行存储单元的个数确定,而这个存储单元对应的存储地址的列比特的位数依据一列存储单元的个数确定,该存储单元对应的存储地址是由所述行比特和列比特组合而成;该存储单元对应的存储地址的位数为所述行比特的位数和列比特的位数之和。
[0139]例如,假设存储区域被划分成I行J列存储单元,那么,一个存储单元对应的存储地址的行比特的位数i为满足公式(5)的最小整数值;
[0140]I ( t(5)
[0141]所述列比特的位数j为满足公式(6)的最小整数值;
[0142]J ( 2J(6)
[0143]那么,本示例中,一个存储单元对应的存储地址的位数为i+j ;
[0144]例如,假设存储区域被划分为32行32列存储单元,那么第O行第O列处的存储单元对应的存储地址的行比特和列比特的位数都为5,那么,第O行第O列处的存储单元对应的存储地址的行比特为00000,第O行第O列处的存储单元对应的存储地址的列比特为00000,进而,第O行第O列处的存储单元对应的存储地址为0000000000 ;同理,第2行第3列处的存储单元对应的存储地址的行比特为00010,第2行第3列处的存储单元对应的存储地址的列比特为00011,那么,第2行第3列处的存储单元对应的存储地址为0001000011,显然这是以行比特在前,列比特在后来确定存储单元对应的存储地址,当然,也可以以列比特在前而行比特在后确定存储单元对应的存储地址,这样的话,第2行第3列处的存储单元对应的存储地址就为0001100010,当然在实际应用时,应该以统一的方式确定各个存储单元对应的存储地址,即要么统一以列比特在前,行比特在后来确定各个存储单元对应的存储地址,要么统一以行比特在前而列比特在后确定各个存储单元对应的存储地址。
[0145]当然,基于上述思想,在进行产品设计时,可以依据所需要存储的地址的个数选择存储区域的大小。
[0146]优选的,假设需要A个存储地址(以下简称地址),a为满足公式(3)的最小整数值,
[0147]A ≤ 2a(3)
[0148]那么,现有技术中,这A个地址所需要的存储区域的大小为AXabit,而本申请实施例中,可以选用的存储区域的大小可以为AXcbit,其中,c < a,c为小于a的任一正整数,c为在将所选用的存储区域进行划分后,每一个存储单元所占用的存储区域的大小,而每一个存储单元对应一个地址。也就是说,在地址数一定的情况下,每一个存储单元占用的存储区域越小(即c越小),就可以选用更小的存储区域来提供同样数目的地址。
[0149]以1024个地址为例,现有技术中,由于每个地址需要用10位二进制数来表示,因此,每个地址需要占用IObit存储区域,因此,1024个地址需要占用1024X10bit的存储区域,也就是说,现有技术中,存储1024个地址所需的存储区域的面积大小为1024X IObit ;而本实施例中,由于所述存储单元所占用的比特数可以小于10,也就是说,每一个存储单元可最多占用9bit的存储区域,最少只占用Ibit的存储区域,而每一个存储单元对应一个地址,所以本实施例提供的存储地址标示方法,其最少可以用1024Xlbit的存储区域来提供1024个地址(即可以用1024bit的存储区域来存储1024个地址),也可用1024X9bit的存储区域(即每个存储单元占用9bit存储区域时)来提供1024个地址,因此,最少可以节省1024X10-1024X9 = 1024bit的存储区域,最多可以节省1024X10-1024X1 =1024X9bit的存储区域。
[0150]或者说,在存储区域的大小一定的情况下,每一个存储单元占用的存储区域越小(即c越小),该存储区域可提供的同位宽的地址数越多;
[0151]例如,假设存储区域的大小为1024bit,现在需要位宽为10位的地址(即一个地址用10位二进制数表示),那么,依据现有技术,1024bit的存储区域仅最多可以提供102个位宽为10位的地址;而由上述分析可知,本申请实施例中,1024bit的存储区域可提供1024个位宽为10位的地址。
[0152]可以看到,在本发明实施例中,存储单元的位置信息其实是相当于存储单元在存储区域中的坐标值,根据该坐标值通过二进制算法直接换算得到对应的数据存储空间的地址(即存储地址),在其他可选择的实施方式中,该位置信息也可以为排序,通过一定的算法也能得到特定的地址信息,从而同样建立起存储单元和数据存储空间之间的对应关系。
[0153]本申请实施例提供的一种存储地址标示方法,建立存储数据的数据存储空间与存储区域中的存储单元之间的映射关系,所述存储单元内存储的是存储单元对应的数据存储空间的分配状态信息,存储单元在存储区域中的位置则映射到对应的数据存储空间的地址。所述分配状态信息可以只用一个比特位来表示,即只占用一个Ibit的存储单元就可以指示某一个存储地址的数据存储空间的占用(或分配)状态信息。在使用中,可以直接对存储单元的位置信息进行运算得到对应的数据存储空间的地址,从而确认该地址的数据存储空间的占用(或分配)状态,而不需要通过额外存储数据存储空间的地址来维持数据存储空间的占用状态信息。因此,可以极大地降低分配状态信息对于存储系统的占用。同时,由于每一个存储单元对应一个存储地址,而每一个存储单元的存储区域的大小可以为lbit,也就是说,一个位宽一定的存储地址所占用的存储区域的大小可以小于所述存储地址的位宽,而现有技术中,一个位宽一定的存储地址所占用的存储区域的大小必须等于所述存储地址的位宽,因此,本申请实施例提供的存储地址标示方法也可以极大地降低存储地址对于存储系统的占用。
[0154]本方案中,所述存储单元存储的分配状态信息为客观存在的信息,通过存储单元的位置确定存储单元的行比特和/或列比特,进而通过行比特和/或列比特确定存储单元的地址,由于两维信息表不的信息量比一维信息表不的信息量大为自然规律,因此,本方案通过分配状态信息和位置这两维信息来标示存储地址属于受自然规律约束的技术手段。
[0155]请参看图4,图4为本申请实施例提供的一种存储地址配置方法的流程图。
[0156]本实施例中,存储地址所在的存储区域包括若干存储单元,所述存储单元用于存储所述存储单元对应的数据存储空间的分配状态信息(即,该存储单元对应的数据存储空间是否已经被分配),数据存储空间的地址(即存储地址)由该数据存储空间对应的存储单元在存储区域中的位置确定,本申请实施例提供的存储地址配置方法包括:
[0157]步骤S401:读取存储区域中的各个存储单元存储的分配状态信息,选择分配状态信息指示为未分配状态的存储单元;
[0158]所述分配状态信息用于指示存储单元对应的数据存储空间的分配状态。
[0159]在有数据存储,需要分配地址时,从存储状态信息指示为未分配状态的存储单元中选择存储单元,对于所选择的存储单元,读取该存储单元的位置;所述存储单元的位置可以是所述存储单元的行位置(存储区域只有一行存储单元时)或列位置(存储区域只有一列存储单元时)或行位置或列位置的组合(存储区域由若干行和若干列存储单元组成时);
[0160]步骤S402:依据选择的存储单元在所述存储区域中的位置,确定所选择的存储单元对应的数据存储空间的地址;
[0161]当所述存储区域内只有一行或一列存储单元时,存储单元对应的数据储存空间的地址(即存储地址)为所述存储单元的位置的二进制数表示,所述二进制数的位数为满足公式(4)的w的最小值;当所述存储区域内有若干行和若干列存储单元时,存储单元的地址由所述存储单元的行位置和列位置的二进制数表示组合而成,所述存储单元的地址的位数为所述行位置的二进制数表示的位数和列位置的二进制数表示的位数之和,其中,行位置对应的二进制数的位数由存储单元所在行的存储单元的个数确定,列位置对应的二进制数的位数由存储单元所在列的存储单元的个数确定。
[0162]步骤S403:数据存入所述数据存储空间后,修改所述选择的存储单元中存储的分配状态信息为已分配状态;
[0163]本申请实施例提供的一种存储地址配置方法,预先建立了存储数据的数据存储空间与存储区域中的存储单元之间的映射关系,所述存储单元内存储的是存储单元对应的数据存储空间的分配状态信息,存储单元在存储区域中的位置则映射到对应的数据存储空间的地址。所述分配状态信息可以只用一个比特位来表示,即只占用一个Ibit的存储单元就可以指示某一个存储地址的数据存储空间的占用(或分配)状态信息。在使用中,可以直接对存储单元的位置信息进行运算得到对应的数据存储空间的地址,从而确认该地址的数据存储空间的占用(或分配)状态,而不需要通过额外存储数据存储空间的地址来维持数据存储空间的占用状态信息。因此,可以极大地降低分配状态信息对于存储系统的占用。同时,由于每一个存储单元对应一个存储地址,而每一个存储单元的存储区域的大小可以为lbit,也就是说,一个位宽一定的存储地址所占用的存储区域的大小可以小于所述存储地址的位宽,而现有技术中,一个位宽一定的存储地址所占用的存储区域的大小必须等于所述存储地址的位宽,因此,本申请实施例提供的存储地址配置方法也可以极大地降低存储地址对于存储系统的占用。
[0164]请参看图5,图5为本申请实施例提供的另一种存储地址配置方法的流程图;
[0165]进一步的,在数据被读走,需回收存储地址时,本申请实施例提供的存储地址配置方法还包括:
[0166]步骤S501在数据存储空间中的数据被读取后,根据所述数据存储空间的地址(即存储地址),获得用于存储所述数据存储空间的分配状态信息的存储单元的位置;
[0167]具体的,根据所述数据存储空间的地址,获得用于存储所述数据存储空间的分配状态信息的存储单元的位置的方法与依据选择的存储单元在所述存储区域中的位置,确定所选择的存储单元对应的数据存储空间的地址方法相反,如果存储区域内只有一行或者一列存储单元,则直接将所述数据存储空间的地址转换为用于存储所述数据存储空间的分配状态信息的存储单元的位置,即,将以二进制数表示的数据存储空间的地址转换为与所述数据存储空间对应的存储单元在存储区域中的行位置(存储区域内只有一行存储单元时)或列位置(存储区域内只有一列存储单元时);
[0168]如果存储区域内有若干行和若干列存储单元,则先将所述数据存储空间的地址拆分为两部分,具体拆分方法与依据选择的存储单元在所述存储区域中的位置,确定所选择的存储单元对应的数据存储空间的地址方法相反,即,依据确定所选择的存储单元对应的数据存储空间的地址时,两个维度(行比特和列比特两个维度)的组合顺序以及每一维度的位数进行拆分,然后分别将每一部分转换为其对应的行位置或列位置(其中,行比特对应行位置,列比特对应列位置)。
[0169]步骤S502:依据所述存储单元的位置,在存储区域中查找所述存储单元;
[0170]步骤S503:将所述存储单元存储的分配状态信息修改为未分配状态。
[0171]将数据读走后,将存储地址回收,并修改回收的存储地址对应的存储单元内的分配状态信息,即将存储地址的分配状态从已分配状态修改为未分配状态,以便再次存储数据时可以使用该存储单元对应的存储地址。
[0172]为了进一步优化上述实施例,本申请实施例提供的存储地址配置方法,还包括:
[0173]记录所述存储区域的当前行存储区域的分配状态,以及当前行存储区域内各个列的存储单元的分配状态。也就是说,不仅在存储单元内存储存储单元对应的数据存储空间的分配状态,还在存储区域之外记录当前行存储区域的存储状态,以及与当前行存储区域内各个列的存储单元对应的数据存储空间的分配状态。[0174]具体在进行地址分配时,可以按行轮询及列轮询的方式进行分配,即分配完一行再分配下一行。所述存储区域内当前行存储区域的存储状态依据记录的与当前行存储区域内各个存储单元对应数据存储空间的分配状态确定,在记录的与当前行存储区域内每一个存储单元对应的数据存储空间的存储状态都为已分配状态时,所述当前行存储区域的存储状态为已分配状态,否则,只要记录的与当前行的存储区域内的一个存储单元对应的数据存储空间的分配状态为未分配状态,则记录当前行存储区域的存储状态为未分配状态。
[0175]优选的,在当前行存储区域内有地址回收和/或有地址分配时,只对记录的与当前行存储区域内的存储单元对应的数据存储空间的分配状态信息进行修改,而不修改当前行存储区域内的存储单元存储的分配状态信息。也就是说,在当前行存储区域内有地址回收或有地址分配时,不对存储区域内的存储单元进行写操作,而是只记录相应存储单元对应的数据存储空间的当前分配状态即可,进一步说,在有数据存储时,先查看当前行存储区域的记录,以记录的当前行存储区域的各个存储单元的分配状态信息来判断存储单元对应的数据存储空间是否可用(即是否为未分配状态)。
[0176]在记录的当前行存储区域内所有存储单元的分配状态都为已分配状态时,将当前行存储区域内所有的存储单元存储的分配状态信息修改为已分配状态,即在记录的与当前行的存储区域内所有存储单元对应的数据存储空间的分配状态都为已分配状态时,对存储区域进行写操作。
[0177]当既有地址回收,又有地址分配,且回收的地址与分配的地址不在同一行时,直接对回收的地址对应的存储单元进行写操作,即直接将所述回收的地址对应的存储单元存储的分配状态信息修改为未分配状态。
[0178]本申请实施例提供的一种存储地址配置方法,记录所述存储区域的各行存储区域的分配状态,以及每一行存储单元对应的各个列的存储单元的分配状态,在对存储区域进行读写时,可以不用每一次分配地址或回收地址时都对存储区域进行读或写操作,而是先对记录的与当前行存储区域的各个存储单元对应的数据存储空间的分配状态信息进行修改,在记录的与当前行存储区域的各个列的存储单元对应的数据存储空间的分配状态信息都为已分配状态时,才将当前行的存储区域内各个存储单元内存储的分配状态修改为已分配状态,避免了同时对存储区域进行读写时的冲突,提高了系统的稳定性和运行速度。
[0179]上述实施例优选的,还可以包括:
[0180]预先读取当前行存储区域的下一行存储区域内各个存储单元存储的分配状态信
肩、O
[0181]为了进一步提高存储区域的读写速度,本实施例中,预先读取当前行存储区域的下一行存储区域内各个存储单元存储的分配状态信息。基于此,可以在当前行存储区域内只有一个存储单元为未分配状态,其它存储单元都为已分配状态,而当前时钟周期内有地址分配而没有地址回收时,在下一个时钟周期将记录的当前行存储区域的各个存储单元的状态更新为记录的当前行存储区域的下一行的存储区域内各个存储单元的存储状态,更新完成后,读取当前行存储区域的下一行存储区域的各个存储单元的存储状态。
[0182]本申请实施例提供的上述存储地址配置方法,可以避免在当前行存储区域的各个存储单元对应的数据存储空间都为已分配状态,而当前有地址分配而没有地址回收时,还要耗费时间读取存储区域内当前行存储区域的下一行存储区域内各个存储单元存储的状态信息的问题,节省了读取存储区域的时间,提高的存储区域的读写速度。
[0183]本申请实施例还提供一种数据存取方法,请参看图6、图7,图6为本申请实施例提供的一种数据存储方法的流程图;图7为本申请实施例提供的一种数据读取方法的流程图;本实施例中,所述数据的存储空间对应于包括若干存储单元的存储区域内的存储单元,所述存储单元用于存储所述存储单元对应的数据存储空间的分配状态信息,数据存储空间的地址由该数据存储空间对应的存储单元在存储区域中的位置确定,本申请实施例提供的数据存取方法包括:
[0184]存储数据时:
[0185]步骤S601:读取存储区域中各个存储单元保存的分配状态信息,选择分配状态信息指示为未分配状态的存储单元;
[0186]存储数据时,从存储的分配状态信息为未分配状态的存储单元中选择存储单元,对于所选择的存储单元,读取该存储单元的位置;所述存储单元的位置可以是所述存储单元的行位置(存储区域只有一行存储单元时)或列位置(存储区域只有一列存储单元时)或行位置或列位置的组合(存储区域由若干行和若干列存储单元组成时);
[0187]步骤S602:依据选择的存储单元在所述存储区域中的位置,确定所选择的存储单元对应的数据存储空间的地址;
[0188]当所述存储区域内只有一行或一列存储单元时,存储单元对应的数据存储空间的地址(即存储地址)为所述存储单元的位置的二进制数表示,所述二进制数的位数为满足公式(4)的w的最小值;当所述存储区域内有若干行和若干列存储单元时,存储单元的地址由所述存储单元的行位置和列位置的二进制数表示组合而成,所述存储单元的地址的位数为所述行位置的二进制数表示的位数和类位置的二进制数表示的位数之和,其中,行位置对应的二进制数的位数由存储单元所在行的存储单元的个数确定,列位置对应的二进制数的位数由存储单元所在列的存储单元的个数确定。
[0189]步骤S603:依据所述数据存储空间的地址及所需存储的数据建立链表;
[0190]本实施例中,所述链表由一连串节点组成,每一个节点包含任意的实例数据和一个或两个用来指明上一个或下一个节点的位置的链接,不同种类的数据可以建立不同的链表,即同一种类的数据建立一个链表,具体如何建立链表现有技术已经很成熟,为本领域的公知常识,这里不再赘述。
[0191]步骤S604:将所述存储单元存储的分配状态信息修改为已分配状态;
[0192]建立链表后,修改所述存储单元存储的分配状态信息,即将未分配状态修改为已分配状态。
[0193]读取数据时,
[0194]步骤S701:依据所述链表读取数据存储空间中的数据;
[0195]具体如何读取为本领域的公知常识,这里不再赘述;
[0196]步骤S702:依据所述数据存储空间的地址,获得用于存储所述数据存储空间的分配状态信息的存储单元的位置;
[0197]具体的,根据所述数据存储空间的地址,获得用于存储所述数据存储空间的分配状态信息的存储单元的位置的方法与依据选择的存储单元在所述存储区域中的位置,确定所选择的存储单元对应的数据存储空间的地址方法相反,如果存储区域内只有一行或者一列存储单元,则直接将所述数据存储空间的地址转换为用于存储所述数据存储空间的分配状态信息的存储单元的位置,即,将以二进制数表示的数据存储空间的地址转换为与所述数据存储空间对应的存储单元在存储区域中的行位置(存储区域内只有一行存储单元时)或列位置(存储区域内只有一列存储单元时);
[0198]如果存储区域内有若干行和若干列存储单元,则先将所述数据存储空间的地址拆分为两部分,具体拆分方法与依据选择的存储单元在所述存储区域中的位置,确定所选择的存储单元对应的数据存储空间的地址方法相反,即,依据确定所选择的存储单元对应的数据存储空间的地址时,两个维度(行比特和列比特两个维度)的组合顺序以及每一维度的位数进行拆分,然后分别将每一部分转换为其对应的行位置或列位置(其中,行比特对应行位置,列比特对应列位置)。
[0199]步骤S703:依据所述存储单元的位置,在存储区域中查找所述存储单元;
[0200]步骤S704:将所述存储单元存储的分配状态信息修改为未分配状态。
[0201]本申请实施例提供的一种数据存取方法,预先建立了存储数据的数据存储空间与存储区域中的存储单元之间的映射关系,所述存储单元内存储的是存储单元对应的数据存储空间的分配状态信息,存储单元在存储区域中的位置则映射到对应的数据存储空间的地址。所述分配状态信息可以只用一个比特位来表示,即只占用一个Ibit的存储单元就可以指示某一个存储地址的数据存储空间的占用(或分配)状态信息。在使用中,可以直接对存储单元的位置信息进行运算得到对应的数据存储空间的地址,从而确认该地址的数据存储空间的占用(或分配)状态,而不需要通过额外存储数据存储空间的地址来维持数据存储空间的占用状态信息。因此,可以极大地降低分配状态信息对于存储系统的占用。同时,由于每一个存储单元对应一个存储地址,而每一个存储单元的存储区域的大小可以为lbit,也就是说,一个位宽一定的存储地址所占用的存储区域的大小可以小于所述存储地址的位宽,而现有技术中,一个位宽一定的存储地址所占用的存储区域的大小必须等于所述存储地址的位宽,因此,本申请实施例提供的数据存取方法也可以极大地降低存储地址对于存储系统的占用。
[0202]为了优化上述实施例,本申请实施例提供的一种数据存取方法还包括:
[0203]记录所述存储区域的当前行存储区域的分配状态,以及当前行存储区域内各个列的存储单元的分配状态。也就是说,不仅在存储单元内存储存储单元对应的数据存储空间的分配状态信息,还在存储区域之外记录当前行存储区域的存储状态,以及当前行存储区域内各个列的存储单元对应的数据存储空间的分配状态。
[0204]具体在有数据存储需要进行存储地址分配时,可以按行轮询及列轮询的方式进行分配,即分配完一行再分配下一行。所述存储区域内当前行存储区域的存储状态依据记录的与当前行存储区域内各个存储单元对应数据存储空间的分配状态确定,在记录的与当前行存储区域内每一个存储单元对应的数据存储空间的存储状态都为已分配状态时,所述当前行存储区域的存储状态为已分配状态,否则,只要记录的与当前行的存储区域内的一个存储单元对应的数据存储空间的分配状态为未分配状态,则记录当前行存储区域的存储状态为未分配状态。
[0205]优选的,在既有数据存储又有数据读取,且存储数据时为该数据分配的地址所对应的存储单元与读取数据后回收的地址所对应的存储单元都属于当前行存储区域时,也就是在当前行存储区域内既有地址回收又有地址分配时,只对记录的与当前行存储区域内的存储单元对应的数据存储空间的分配状态信息进行修改,而不修改当前行存储区域内的存储单元存储的分配状态信息。也就是说,在当前行存储区域内既有地址回收又有地址分配时,不对存储区域内的存储单元进行写操作,而是只记录相应存储单元对应的数据存储空间的当前分配状态即可,进一步说,在有数据存储时,先查看当前行存储区域的记录,以记录的当前行存储区域的各个存储单元的分配状态信息来判断存储单元对应的数据存储空间是否可用(即是否为未分配状态)。
[0206]在记录的与当前行存储区域内所有存储单元对应的数据存储空间的分配状态都为已分配状态时,将当前行存储区域内所有存储单元存储的分配状态信息修改为已分配状态,即在记录的与当前行的存储区域内所有存储单元对应的数据存储空间的分配状态都为已分配状态时,对存储区域进行写操作。
[0207]在既有数据存储又有数据读取,且存储数据时为该数据分配的地址所对应的存储单元与读取数据后回收的地址所对应的存储单元不属于同一行存储区域时,也就是当既有地址回收,又有地址分配,且回收的地址对应的存储单元与分配的地址对应的存储单元不在同一行存储区域时,直接对回收的地址对应的存储单元进行写操作,即直接将所述回收的地址对应的存储单元存储的分配状态信息修改为未分配状态。
[0208]本申请实施例提供的一种数据存取方法,记录所述存储区域的各行存储区域的分配状态,以及每一行存储单元对应的各个列的存储单元的分配状态,在对存储区域进行读写时,可以不用每一次存取数据或读取数据需要读取地址或回收地址时都对存储区域进行读或写操作,而是先对记录的与当前行存储区域的各个存储单元对应的数据存储空间的分配状态信息进行修改,在记录的与当前行存储区域的各个列的存储单元对应的数据存储空间的分配状态信息都为已分配状态时,才将当前行的存储区域内各个存储单元内存储的分配状态修改为已分配状态,避免了同时对存储区域进行读写时的冲突,提高了系统的稳定性和运行速度。
[0209]上述实施例优选的,还可以包括:
[0210]预先读取当前行存储区域的下一行存储区域内各个存储单元存储的分配状态信
肩、O
[0211]为了进一步提高数据存取时存储区域的读写速度,本实施例中,预先读取当前行存储区域的下一行存储区域内各个存储单元存储的分配状态信息。基于此,可以在当前行存储区域内只有一个存储单元为未分配状态,其它存储单元都为已分配状态,而当前时钟周期内有地址分配而没有地址回收时,在下一个时钟周期将记录的当前行存储区域的各个存储单元的状态更新为记录的当前行存储区域的下一行的存储区域内各个存储单元的存储状态,更新完成后,读取当前行存储区域的下一行存储区域的各个存储单元的存储状态。
[0212]本申请实施例提供的上述存储地址配置方法,可以避免在当前行存储区域的各个存储单元对应的数据存储空间都为已分配状态,而当前有数据存储而没有数据读取时(当前有地址分配而没有地址回收)时,还要耗费时间读取存储区域内当前行存储区域的下一行存储区域内各个存储单元存储的状态信息的问题,节省了读取存储区域的时间,提高的存储区域的读写速度。
[0213]与方法实施例相对应,请参看图8,图8为本申请实施例提供的一种存储区域划分系统的结构示意图,包括:
[0214]划分模块801,用于将存储区域平均划分为若干存储单元,所述存储单元用于存储所述存储单元所对应的数据存储空间的分配状态信息;
[0215]所述分配状态信息用于指示所述存储单元所对应的数据存储空间的分配状态,SP该存储单元对应的数据存储空间是否已经分配给数据,或者该存储单元对应的数据存储空间是否已经被数据占用。
[0216]也就是说,存储区域由若干存储单元组成,各个存储单元内存储的不是地址,而是该存储单元所对应的数据存储空间是否已经被分配的分配状态信息。由于是否被分配这一状态信息可以只用一个比特位来表示,例如,可以用“I”表示地址还未被分配,而用“O”表示地址已经被分配,因此,每一个存储单元可以至少占用Ibit存储区域;其中,分配状态信息所使用的比特数与每一个存储单元占用的存储区域的大小相同。
[0217]其中,与所述存储单元对应的数据存储空间的地址根据所述存储单元在所述存储区域中的位置确定,所述数据存储空间的地址即为存储地址,其中,所述存储单元对应的存储地址包括行比特和/或列比特,所述行比特用于指示所述存储单元在所述存储区域中的行位置,所述列比特用于指示所述存储单元在所述存储区域中的列位置;
[0218]在本发明实施例中,根据存储单元在存储区域中的位置将存储单元与用于存储数据的数据存储空间建立映射关系,数据存储空间的地址由相应的存储单元在存储区域中的位置标示,而在存储单元中存储的分配状态信息就是用于指示存储单元所对应的用于存储数据的数据存储空间的分配或者占用状态。
[0219]在本发明实施例中,所述行比特和列比特均为用于指示所述存储单元的行位置和列位置的二进制数表示。
[0220]请参看图9,图9为本申请实施例提供的一种存储地址配置系统的结构示意图,包括:
[0221 ] 第一存储器901,第一读取模块902,第一确定模块903和第一修改模块904,其中,
[0222]第一存储器901由若干存储单元组成,所述存储单元用于存储所述存储单元对应的数据存储空间的分配状态信息,数据存储空间的地址(即存储地址)由该数据存储空间对应的存储单元在存储区域中的位置确定;
[0223]第一读取模块902用于在分配地址时,读取存储区域中各个存储单元存储的分配状态信息,选择分配状态信息指示为未分配状态的存储单元;
[0224]第一确定模块903用于依据选择的存储单元在所述存储区域中的位置,确定所选择的存储单元对应的数据存储空间的地址;
[0225]第一修改模块904用于在数据存入所述数据存储空间后,将所述存储单元存储的分配状态信息修改为已分配状态。
[0226]为了进一步优化上述实施例,在图9所示实施例的基础上,本申请实施例提供的另一种存储地址配置系统的结构示意图如图10所示,还包括:
[0227]第一获取模块1001,第一查找模块1002和第二修改模块1003,其中,
[0228]第一获取模块1001用于在数据存储空间中的数据被读取后,根据所述数据存储空间的地址(即存储地址),获得用于存储所述数据存储空间的分配状态信息的存储单元的位置;[0229]第一查找模块1002用于依据所述存储单元的位置,在第一存储器901中查找所述存储单元;
[0230]第二修改模块1003用于将所述存储单元存储的分配状态信息修改为未分配状态。
[0231]为了优化上述实施例,本申请实施例提供的又一种存储地址配置系统的结构示意图如图11所示,还包括:
[0232]第一记录模块1101和第二记录模块1102 ;其中,
[0233]第一记录模块1101用于记录所述第一存储器当前行存储区域的分配状态;
[0234]第二记录模块1102用于记录当前行存储区域内各个列的存储单元的分配状态。
[0235]也就是说,不仅在第一存储器的存储单元内保存存储单元对应的数据存储空间的分配状态,还在存储区域之外记录当前行存储区域的存储状态,以及与当前行存储区域内各个列的存储单元对应的数据存储空间的分配状态。
[0236]所述第一记录模块1101记录的存储状态依据第二记录模块1102记录的各个存储单元对应数据存储空间的分配状态确定,在第二记录模块1102记录的各个存储单元对应的数据存储空间的存储状态都为已分配状态时,所述第一记录模块1101记录的当前行存储区域的存储状态为已分配状态,否则,只要第二记录模块1102记录的与当前行的存储区域内的一个存储单元对应的数据存储空间的分配状态为未分配状态,则第一记录模块1101记录的当前行存储区域的存储状态为未分配状态。
[0237]为了优化上述实施例,在图11所述实施例的基础上,本申请实施例提供的又一种存储地址配置系统的结构示意图如图12所示,还包括:
[0238]第三修改模块1201,用于在当前行存储区域内有地址回收和/或有地址分配时,对所述第二记录模块1102记录的当前行存储区域内各个列的存储单元的分配状态进行修改,而不修改当前行存储区域内的存储单元存储的分配状态信息。也就是说,此时第一修改模块904和第二修改模块1003不对第一存储器901进行读写操作。
[0239]具体在进行存储地址分配时,可以按行轮询及列轮询的方式进行分配,即分配完一行再分配下一行。
[0240]优选的,在当前行存储区域内既有地址回收又有地址分配时,只对第二记录模块1102记录的与当前行存储区域内的存储单元对应的数据存储空间的分配状态信息进行修改,而不修改当前行存储区域内的存储单元存储的分配状态信息。也就是说,在当前行存储区域内既有地址回收又有地址分配时,不对存储区域内的存储单元进行写操作,而是只对第二记录模块1102记录的相应的存储单元对应的数据存储空间的分配状态进行修改即可,进一步说,在有数据存储时,先查看第二记录模块1102的记录,以第二记录模块1102记录的当前行存储区域的各个存储单元的分配状态信息来判断存储单元对应的数据存储空间是否可用(即是否为未分配状态)。
[0241]当既有地址回收,又有地址分配,且回收的地址与分配的地址不在同一行时,直接对回收的地址对应的存储单元进行写操作,即直接将所述回收的地址对应的存储单元存储的分配状态信息修改为未分配状态。
[0242]为了进一步优化上述实施例,在图11所示实施例的基础上,本申请实施例提供的又一种存储地址配置系统的结构示意图如图13所示,还可以包括:[0243]第四修改模块1301,用于在所述第二记录模块1102记录的当前行存储区域内所有存储单元的分配状态都为已分配状态时,将第一存储器901内当前行的所有存储单元存储的分配状态信息修改为已分配状态。
[0244]第三记录模块1302,用于预先读取第一存储器901内当前行存储区域的下一行的存储区域内各个存储单元存储的分配状态信息。
[0245]为了进一步提高存储区域的读写速度,本实施例中,第三记录模块1302可以在第二记录模块1102记录的当前行存储区域内的所有存储单元的分配状态都为分配状态之前读取当前行存储区域的下一行存储区域内各个存储单元存储的分配状态信息。基于此,可以在第二记录模块1102记录的当前行存储区域内只有一个存储单元为未分配状态,其它存储单元都为已分配状态,而当前时钟周期内有地址分配而没有地址回收时,在下一个时钟周期将第二记录模块1102记录的当前行存储区域的各个存储单元的状态更新为第三记录模块1302记录的当前行存储区域的下一行的存储区域内各个存储单元的存储状态,即将第三记录模块1302记录的状态信息更新到第二记录模块1102中,更新完成后,第三记录模块1302读取当前行存储区域的下一行存储区域的各个存储单元的存储状态。
[0246]请参看图14,图14为本申请实施例提供的一种数据存取系统的结构示意图,包括:
[0247]第二存储器1401,第三读取模块1402,第三确定模块1403,数据存储器1404,第五修改模块1405,第四读取模块1406,第二获取模块1407,第二查找模块1408和第六修改模块1409 ;其中,
[0248]第二存储器1401由若干存储单元组成,所述存储单元用于存储所述存储单元对应的数据存储空间的分配状态信息,数据存储空间的地址(即存储地址)由该数据存储空间对应的存储单元在存储区域中的位置确定;
[0249]第三读取模块1402用于在存储数据时,读取第二存储器中各个存储单元保存的分配状态信息,选择分配状态信息指示为未分配状态的存储单元;
[0250]第三确定模块1403用于依据选择的存储单元在所述存储区域中的位置确定所选择的存储单元对应的数据存储空间的地址;
[0251]数据存储器1404用于依据所述数据存储空间的地址及待存储的数据建立链表;
[0252]具体如何建立链表现有技术已经很成熟,为本领域的公知常识,这里不再赘述。
[0253]第五修改模块1405用于在所述数据存储器1404建立链表后,将所选择的存储单元存储的分配状态信息修改为已分配状态;
[0254]第四读取模块1406用于在读取数据时,依据所述链表读取数据存储空间中的数据;
[0255]第二获取模块1407用于依据所述数据存储空间的地址,获得用于存储所述数据存储空间的分配状态信息的存储单元的位置;
[0256]第二查找模块1408用于依据所述存储单元的位置,在第二存储器1401中查找存储单元;
[0257]第六修改模块1409用于将所述存储单元存储的分配状态信息修改为未分配状态。
[0258]在图14所示实施例的基础上,本申请实施例提供的又一种数据存取系统的结构示意图如图15所示,还可以包括:
[0259]第三记录模块1501和第四记录模块1502 ;其中,
[0260]第三记录模块1501用于记录所述第二存储器1401当前行存储区域的分配状态;
[0261]第四记录模块1502用于记录当前行存储区域内各个列的存储单元的分配状态。
[0262]为了优化上述实施例,在图15所述实施例的基础上,本申请实施例提供的又一种数据存取系统的结构示意图如图16所示,还可以包括:
[0263]第七修改模块1601,用于在当前行存储区域内有地址回收和/或有地址分配时,对所述第四记录模块1502记录的当前行存储区域内各个列的存储单元的分配状态信息进行修改,而不修改当前行存储区域内的存储单元存储的分配状态信息。也就是说,此时,第五修改模块1405和第六修改模块1409不对第二存储器1401进行读写操作。
[0264]第八修改模块1602,用于在所述第四记录模块1502记录的当前行存储区域内所有存储单元的分配状态都为已分配状态时,将第二存储器1401内当前行存储区域内所有存储单元存储的分配状态信息修改为已分配状态。
[0265]第五记录模块1603,用于预先读取第二存储器1401内当前行存储区域的下一行的存储区域内各个存储单元存储的分配状态信息。
[0266]为了进一步提高存储区域的读写速度,本实施例中,第五记录模块1603可以在第四记录模块1502记录的当前行存储区域内的所有存储单元的分配状态都为分配状态之前读取当前行存储区域的下一行存储区域内各个存储单元存储的分配状态信息。基于此,可以在第四记录模块1502记录的当前行存储区域内只有一个存储单元为未分配状态,其它存储单元都为已分配状态,而当前时钟周期内有地址分配而没有地址回收时,在下一个时钟周期将第四记录模块1502记录的当前行存储区域的各个存储单元的状态更新为第五记录模块1603记录的当前行存储区域的下一行的存储区域内各个存储单元的存储状态,即将第五记录模块1603记录的状态信息更新到第四记录模块1502中,更新完成后,第五记录模块1603读取当前行存储区域的下一行存储区域的各个存储单元的存储状态。
[0267]请参看图17,图17为本申请实施例提供的又一种存储地址配置系统的结构示意图,包括:
[0268]至少一个处理器和与所述至少一个处理器耦合的存储器;
[0269]所述存储器内至少包括由若干存储单元组成的存储区域,所述存储单元用于存储所述存储单元对应的数据存储空间的分配状态信息,数据存储空间的地址由该数据存储空间对应的存储单元在存储区域中的位置确定。
[0270]所述至少一个处理器被配置为:
[0271]读取存储区域中的各个存储单元存储的分配状态信息,选择分配状态信息指示为未分配状态的存储单元;其中,所述分配状态信息用于指示存储单元对应的数据存储空间的分配状态。
[0272]依据选择的存储单元在所述存储区域中的位置,确定所选择的存储单元对应的数据存储空间的地址;
[0273]将数据存入所述数据存储空间后,修改所述选择的存储单元中存储的分配状态信息为已分配状态。
[0274]所述至少一个处理器进一步可以被配置为:[0275]在读取数据存储空间中的数据后,依据所述数据存储空间的地址,获得用于存储所述数据存储空间的分配状态信息的存储单元的位置;
[0276]依据所述存储单元的位置,在所述存储区域中查找所述存储单元;
[0277]将所述存储单元存储的分配状态信息修改为未分配状态。
[0278]所述至少一个处理器可以进一步被配置为:
[0279]记录所述存储区域的当前行行存储区域的分配状态,以及当前行存储区域内各个列的存储单元的分配状态。
[0280]所述至少一个处理器进一步被配置为:
[0281]在当前行存储区域内有地址回收和/或有地址分配时,只对记录的与当前行存储区域内的存储单元对应的数据存储空间的分配状态信息进行修改,而不修改当前行存储区域内的存储单元存储的分配状态信息。
[0282]所述至少一个处理器进一步被配置为:
[0283]在记录的与当前行存储区域内所有存储单元对应的数据存储空间的分配状态都为已分配状态时,将当前行存储区域内所有存储单元存储的分配状态信息修改为已分配状态。
[0284]所述至少一个处理器进一步被配置为:
[0285]预先读取当前行存储区域的下一行存储区域内各个存储单元存储的分配状态信
肩、O
[0286]具体的,上述本发明实施例揭示的方法可以应用于处理器1701中,或者说由处理器1701实现。处理器1701可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1701中的硬件的集成逻辑电路或者软件形式的指令完成,用于执行本发明实施例揭示的方法,上述的处理器可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器,解码器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器RAM、闪存Flash Memory、只读存储器R0M,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1702中,处理器读取存储器1702中的信息,结合其硬件完成上述方法的步骤。
[0287]下面以IK缓存能力(即1024个存储地址,每个存储地址的位宽为10)为例对本申请中应用上述地址配置方法进行数据存取的方法进行具体说明
[0288]如图18所示,图18为本申请具体示例的示意图。
[0289]本示例中通过行轮询、列轮询的方式选择地址。
[0290]本示例中,所选用的存储区域的大小为1024bit,该存储区域被平均划分为32 X 32=1024个存储单元,每个存储单元占用Ibit存储区域,每个存储单元存储的初始分配状态均为未分配状态,用“ I”表示,当存储单元对应的数据存储空间的地址被分配后,所述存储单元的分配状态为已分配状态,用“O”表示。
[0291]每一个存储单元的存储地址由行比特和列比特组合而成,其中行比特和列比特都为5位的二进制数,例如,第4行第6列的存储单元的地址为0010000110 ;
[0292]其中,行寄存器为32位的寄存器,行寄存器的每一位对应一行存储区域的分配状态,对于每一行存储区域,只有当该行的所有存储单元对应的数据存储空间的分配状态都为已分配状态时,该行对应的行寄存器中的位才为已分配状态,可以用“O”表示;否则该行对应的行寄存器中的位为未分配状态,可以用“I”表示;
[0293]第一列寄存器为32位的列寄存器,用于记录当前行的存储区域内各个存储单元的分配状态;
[0294]只有在第一列寄存器的各个位都指示为已分配状态时,当前行存储区域在行寄存器中对应的位才刷新为已分配状态。
[0295]第二列寄存器为32位的列寄存器,用于记录当前行存储区域的下一行存储区域内各个存储单元当前的分配状态。
[0296]链表为应用待存储的数据以及为该数据配置的地址建立的链表,也就是说,链表中的地址为已分配地址。
[0297]初始化时,存储区域内各行全置为1,即未分配状态,并输出初始化完成信号。当有数据存储,为该数据分配地址后,将已分配的地址对应的存储单元内的分配状态信息修改为已分配状态,即将该存储单元存储的分配状态信息设置为“0”,分配地址时,需要一读一写动作,即读取存储单元地址,修改存储单元的分配状态;当回收地址时,直接将该地址对应的存储单元存储的分配状态信息设置为“ I”即可。
[0298]为了减少读写冲突,可以采用如下方式:
[0299]为了减少分配地址时的读写冲突,在分配地址时,只在第一列寄存器各个位都为已分配状态时,才修改存储区域内当前行存储区域内各个存储单元存储的分配状态信息。
[0300]当有地址回收,且回收的地址对应的存储单元不属于当前行时,就直接对回收的地址对应的存储单元进行写操作。
[0301]当分配地址时的读与回收地址时的写冲突,即既需要分配地址又需要回收地址,且回收的地址对应的存储单元属于当前行存储区域时,可以直接更新合并到第一列寄存器中,也就是既不修改第一列寄存器的各个位的状态,也不对当前行存储区域内各个存储单元存储的状态信息进行修改,相当于将回收的地址立即又分配出去。
[0302]行寄存器的刷新可以包括如下两种刷新来源:
[0303]来源一,第一列寄存器只有一位记录为未分配状态,其它各位都记录为已分配状态,且当前时钟周期内有地址分配而没有地址回收;
[0304]当满足上述条件,即在第一列寄存器只有一位记录为未分配状态,其它各位都记录为已分配状态,且当前时钟周期内有地址分配而没有地址回收时,在下一个时钟周期对行寄存器进行刷新,将行寄存器内当前行对应的位设置为“0”,即修改分配状态为已分配状态;
[0305]来源二,当前时钟周期有地址回收;
[0306]当满足上述条件时,根据行地址分配状况在下一个时钟周期对行寄存器内对应的位进行刷新,包括:当前时钟周期内有地址回收,且回收前回收的地址所属的行存储区域为已分配状态,则在回收地址后,将行寄存器中,该回收的地址所属的行存储区域所对应的位设置为未分配状态。[0307]上述两个刷新来源可能会存在冲突,当存在冲突时,以优先级高的为先,本示例中,来源一的优先级高于来源二的优先级,具体的,当两个刷新来源同时存在时,优先考虑来源一,再考虑来源二,然后综合两种来源对行寄存器进行刷新;
[0308]例如,当前存在两个刷新来源,分别为:一、第一列寄存器只有一位记录为未分配状态,其它各位都记录为已分配状态,且当前时钟周期内有地址分配而没有地址回收;二、当前时钟周期有地址回收,该回收的地址不是第一列寄存器对应的行存储区域内的存储单元对应的数据存储空间的地址;也就是说,当第一列寄存器只有一位记录为未分配状态,其它各位都记录为已分配状态,且当前时钟周期内有地址分配也有地址回收,且回收的地址对应的存储单元不属于第一列寄存器对应的行存储区域,那么,根据冲突处理原则,优先根据刷新来源一判断刷新方式,此时,判断出刷新方式应该为将当前行对应的行寄存器中的位设置为0,但此时并不对行寄存器进行设置,而是依据刷新来源二判断刷新方式,如果根据刷新来源二判断出回收的地址对应的存储单元所在的行存储区域对应的行寄存器中的位应该设置为I (即该行存储区域内所有存储单元对应的数据存储空间的地址之前已经分配完,回收地址后就有一个存储单元对应的数据存储空间的地址可用,即回收地址后变为未分配状态),则在下一个时钟周期对行寄存器进行刷新,即,在下一个时钟周期内将行寄存器中当前行对应的位设置为0,同时将行寄存器中回收的地址所对应的存储单元所在行存储区域对应的位设置为I;而如果依据刷新来源二判断出该行对应的行寄存器中的位不变(即回收地址前就为未分配状态,也就是说,回收地址之前当前行存储区域就为未分配状态,回收地址后该行还为未分配状态),则在下一个时钟周期对行寄存器进行刷新,此时,只将行寄存器中当前行对应的位设置为0,而不修改行寄存器中回收的地址所在行对应的位的值;
[0309]再例如,当前存在两个刷新来源,分别为:一、第一列寄存器只有一位记录为未分配状态,其它各位都记录为已分配状态,且当前时钟周期内有地址分配而没有地址回收;二、当前时钟周期有地址回收,该回收的地址对应的存储单元属于第一列寄存器对应的行存储区域;那么,此时,先根据刷新来源一判断,需要将当前行对应的行寄存器中的位设置为0,在此基础上,再由刷新来源二可知,需要将当前行对应的行寄存器中的位再设置为1,也就是说,根据这两个来源可以判断出第一列寄存器对应的行存储区域的分配状态不变,因此,在这种情况下,可以不对行寄存器中当前行对应的位进行设置,即不对行寄存器进行刷新。
[0310]第一列寄存器的刷新可以包括如下三种刷新来源:
[0311]来源一,分配一个地址后;
[0312]在当前时钟周期内分配一个地址后,在下一个时钟周期对第一列寄存器进行刷新,将该地址对应的存储单元在第一列寄存器中的相应位设置为已分配状态,即,将该地址对应的第一列寄存器中的位设置为O。
[0313]来源二,第一列寄存器中只有一位为未分配状态,其它各位都为已分配状态,且当前时钟周期内有地址分配而没有地址回收;
[0314]当满足上述条件,即当第一列寄存器中只有一位为未分配状态,其它各位都为已分配状态,且当前时钟周期内有地址分配而没有地址回收时,在下一时钟周期将第二列寄存器中存储的状态信息刷新到第一列寄存器。[0315]来源三,回收的地址时,包括回收的地址对应的存储单元属于第一列寄存器对应的行存储区域,或者,第一列寄存器中只有一位为未分配状态,其它各位都为已分配状态,且当前时钟周期内有地址分配,也有地址回收,且回收的地址对应的存储单元属于第一列寄存器对应的行存储区域的下一行存储区域;
[0316]当满足上述条件时,对第一列寄存器进行刷新,修改回收的地址对应的存储单元在第一列寄存器中的相应位的分配状态。
[0317]在当前时钟周期内既有地址分配又有地址回收,且回收的地址对应的存储单元属于第一列寄存器对应的行存储区域时,可以不对第一列寄存器进行刷新,即将刚回收的地址又分配出去。
[0318]当第一列寄存器中只有一位为未分配状态,其它各位都为已分配状态,且当前时钟周期内有地址分配,也有地址回收,且回收的地址对应的存储单元属于第一列寄存器对应的行存储区域的下一行存储区域时,在下一个时钟周期将第二列寄存器中存储的状态信息刷新到第一列寄存器的同时,将回收的地址对应的第一列寄存中的位设置为未分配状态。
[0319]第二列寄存器的刷新可以包括如下两种刷新来源:
[0320]来源一,第一列寄存器中只有一位为未分配状态,其它各位都为已分配状态,且当前时钟周期内有地址分配而没有地址回收;
[0321]当满足上述条件,即当第一列寄存器中只有一位为未分配状态,其它各位都为已分配状态,且当前时钟周期内有地址分配而没有地址回收时,在下一个时钟周期对第二列寄存器进行刷新,将第二列寄存器中存储的状态信息刷新到第一列寄存器中,并将第二列寄存器对应的行存储区域的下一行存储区域的分配状态信息读入到第二列寄存器,也就是说将第二列寄存器存储的状态信息刷新为第二列寄存器对应的行存储区域的下一行存储区域的存储状态信息。
[0322]来源二,回收地址时,其中包括回收的地址对应的存储单元属于第二列寄存器对应的行存储区域,或者,第一列寄存器中只有一位为未分配状态,其它各位都为已分配状态,且当前时钟周期内有地址分配,也有地址回收且回收的地址对应的存储单元属于第二列寄存器对应的行存储区域的下一行存储区域;
[0323]当满足上述条件,即当回收的地址对应的存储单元属于第二列寄存器对应的行存储区域或第一列寄存器中只有一位为未分配状态,其它各位都为已分配状态,且当前时钟周期内有地址分配,也有地址回收且回收的地址对应的存储单元属于第二列寄存器对应的行存储区域的下一行存储区域时,对第二列寄存器进行刷新。
[0324]当第一列寄存器中只有一位为未分配状态,其它各位都为已分配状态,且当前时钟周期内有地址分配,也有地址回收,且回收的地址对应的存储单元属于第二列寄存器对应的行存储区域的下一行存储区域时,在下一个时钟周期内将第二列寄存器存储的分配状态信息刷新为第二列寄存器对应的行存储区域的下一行存储区域的分配状态信息,同时,将第二列寄存器中回收的地址对应的位也进行刷新(即将第二列寄存器中,回收的地址对应的位的分配状态设置为未分配状态)。
[0325]为了方便判断各个列寄存器中未进行分配的存储单元的个数,可以针对每一个列寄存器设置一个计数器,用于对各个列寄存器中未进行分配的存储单元的个数进行计数。[0326]本申请说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0327]结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的权利要求保护范围之内。
【权利要求】
1.一种存储地址标示方法,其特征在于,包括: 将存储区域平均划分为若干存储单元,所述存储单元用于存储所述存储单元对应的数据存储空间的分配状态信息; 根据所述存储单元在所述存储区域中的位置,获得与所述存储单元对应的数据存储空间的地址,其中,所述数据存储空间的地址包括行比特和/或列比特,所述行比特用于指示所述存储单元在所述存储区域中的行位置,所述列比特用于指示所述存储单元在所述存储区域中的列位置。
2.根据权利要求1所述的方法,其特征在于,所述存储区域被划分为一行或一列存储单元。
3.根据权利要求2所述的方法,其特征在于,所述数据存储空间的地址包括:行比特或列比特。
4.根据权利要求1所述的方法,其特征在于,所述存储区域被划分为若干行和若干列存储单兀。
5.根据权利要求4所述的方法,其特征在于,所述数据存储空间的地址包括行比特和列比特。
6.一种存储地址配置方法,其特征在于,所述存储地址所在的存储区域包括若干存储单元,所述存储单元用于存储所述存储单元对应的数据存储空间的分配状态信息,所述数据存储空间的地址由所述数据存储空间对应的存储单元在存储区域中的位置确定,所述数据存储空间的地址即为储存地址,所述方法包括: 分配地址时, 读取存储区域中的各个存储单元存储的分配状态信息,选择分配状态信息指示为未分配状态的存储单元; 依据选择的存储单元在所述存储区域中的位置,确定所选择的存储单元对应的数据存储空间的地址; 数据存入所述数据存储空间后,将所述选择的存储单元中存储的分配状态信息修改为已分配状态。
7.根据权利要求6所述的方法,其特征在于,还包括: 回收地址时, 在数据存储空间中的数据被读取后,依据所述数据存储空间的地址,获得用于存储所述数据存储空间的分配状态信息的存储单元的位置; 依据所述存储单元的位置在存储区域中查找所述存储单元; 将所述存储单元存储的分配状态信息修改为未分配状态。
8.根据权利要求6或7所述的方法,其特征在于,还包括: 记录所述存储区域的当前行存储区域的分配状态,以及当前行存储区域内各个列的存储单元的分配状态。
9.根据权利要求8所述的方法,其特征在于,在当前行存储区域内有地址回收和/或有地址分配时,对记录的当前行存储区域内各个列的存储单元的分配状态进行修改,而不修改当前行存储区域内的存储单元存储的分配状态信息。
10.根据权利要求8或9所述的方法,其特征在于,还包括:在记录的当前行存储区域内所有存储单元的分配状态都为已分配状态时,将当前行存储区域内所有存储单元存储的分配状态信息修改为已分配状态。
11.根据权利要求8-10任意一项所述的方法,其特征在于,还包括: 预先读取当前行存储区域的下一行存储区域内各个存储单元存储的分配状态信息。
12.—种数据存取方法,其特征在于,所述数据的存储空间对应于包括若干存储单元的存储区域内的存储单元,所述存储单元用于存储所述存储单元对应的数据存储空间的分配状态信息,数据存储空间的地址有该数据存储空间对应的存储单元在存储区域中的位置确定,,所述方法包括: 存储数据时, 读取存储区域中各个存储单元保存的分配状态信息,选择分配状态信息指示为未分配状态的存储单元; 依据选择的存储单元在所述存储区域中的位置,确定所选择的存储单元对应的数据存储空间的地址; 依据所述数据存储空间的地址及所需存储的数据建立链表; 将所述存储单元存储的分配状态信息修改为已分配状态; 读取数据时, 依据所述链表读取数据存储空间中的数据; 依据所述数据存储空间的地址,获得用于存储所述数据存储空间的分配状态信息的存储单元的位置; 依据所述存储单元的位置,在存储区域中查找所述存储单元; 将所述存储单元存储的分配状态信息修改为未分配状态。
13.根据权利要求12所述的方法,其特征在于,还包括: 记录所述存储区域的当前行存储区域的分配状态,以及当前行存储区域内各个列的存储单元的分配状态。
14.根据权利要求13所述的方法,其特征在于,在当前行存储区域内有地址回收和/或有地址分配时,对记录的当前行存储区域内各个列的存储单元的分配状态进行修改,而不修改当前行存储区域内的存储单元存储的分配状态信息。
15.根据权利要求13或14所述的方法,其特征在于,在记录的当前行存储区域内所有存储单元的分配状态都为已分配状态时,将当前行存储区域内所有存储单元存储的分配状态信息修改为已分配状态。
16.根据权利要求13-15任意一项所述的方法,其特征在于,还包括: 预先读取当前行存储区域的下一行存储区域内各个存储单元存储的分配状态信息。
17.一种存储区域划分系统,其特征在于,包括: 划分模块,用于将存储区域平均划分为若干存储单元,所述存储单元用于存储所述存储单元所对应的数据存储空间的分配状态信息; 其中,所述存储单元所对应的数据存储空间的地址根据所述存储单元在所述存储区域中的位置确定。
18.一种存储地址配置系统,其特征在于,包括: 第一存储器,所述第一存储器由若干存储单元组成,所述存储单元用于存储所述存储单元对应的数据存储空间的分配状态信息,数据存储空间的地址由该数据存储空间对应的存储单元在存储区域中的位置,所述数据存储空间的地址即为存储地址; 第一读取模块,用于在分配地址时,读取存储区中各个存储单元存储的分配状态信息,选择分配状态信息指示为未分配状态的存储单元; 第一确定模块,用于依据选择的存储单元在所述存储区域中的位置,确定所选择的存储单元对应的数据存储空间的地址; 第一修改模块,用于在数据存入所述数据存储空间后,将所述存储单元存储的分配状态信息修改为已分配状态。
19.根据权利要求18所述的系统,其特征在于,还包括: 第一获取模块,用于在数据存储空间中的数据被读取后,依据所述数据存储空间的地址,获得用于存储所述数据存储空间的分配状态信息的存储单元的位置; 第一查找模块,用于依据所述存储单元的位置,在第一存储器中查找所述存储单元; 第二修改模块,用于将所述存储单元存储的分配状态信息修改为未分配状态。
20.根据权利要求18或19所述的系统,其特征在于,还包括: 第一记录模块,用于记录所述第一存储器当前行存储区域的分配状态; 第二记录模块,用于记录当前行存储区域内各个列的存储单元的分配状态。
21.根据权利要求20所 述的系统,其特征在于,还包括: 第三修改模块,用于在当前行存储区域内有地址回收和/或有地址分配时,对所述第二记录模块记录的当前行存储区域内各个列的存储单元的分配状态进行修改,而不修改当前行存储区域内的存储单元存储的分配状态信息。
22.根据权利要求20或21所述的系统,其特征在于,还包括: 第四修改模块,用于在所述第二记录模块记录的当前行存储区域内所有存储单元的分配状态都为已分配状态时,将第一存储器内当前行的所有存储单元存储的分配状态信息修改为已分配状态。
23.根据权利要求20-22任意一项所述的系统,其特征在于,还包括: 第三记录模块,用于预先读取第一存储器内当前行存储区域的下一行的存储区域内各个存储单元存储的分配状态信息。
24.一种数据存取系统,其特征在于,包括: 第二存储器,由若干存储单元组成,所述存储单元用于存储所述存储单元对应的数据存储空间的分配状态信息,数据存空间的地址由该数据存储空间对应的存储单元在存储区域中的位置确定; 第三读取模块,用于在存储数据时,读取第二存储器中各个存储单元保存的分配状态信息,选择分配状态信息指示为未分配状态的存储单元; 第三确定模块,用于依据选择的存储单元在所述存储区域中的位置确定所选择的存储单元对应的数据存储空间的地址; 数据存储器,用于依据所述数据存储空间的地址及待存储的数据建立链表; 第五修改模块,用于在所述第三读取模块选择分配状态信息指示为未分配状态的存储单元后,将所选择的存储单元存储的分配状态信息修改为已分配状态; 第四读取模块,用于在读取数据时,依据所述链表读取数据存储空间中的数据;第二获取模块,用于依据所述数据存储空间的地址,获得用于存储所述数据存储空间的分配状态信息的存储单元的位置; 第二查找模块,用于依据所述存储单元的位置,在第二存储器中查找所述存储单元; 第六修改模块,用于将所述存储单元存储的分配状态信息修改为未分配状态。
25.根据权利要求24所述的系统,其特征在于,还包括: 第三记录模块,用于记录所述第二存储器当前行存储区域的分配状态; 第四记录模块,用于记录当前行存储区域内各个列的存储单元的分配状态。
26.根据权利要求25所述的系统,其特征在于,还包括: 第七修改模块,用于在当前行存储区域内有地址回收和/或有地址分配时,对所述第四记录模块记录的当前行存储区域内各个列的存储单元的分配状态信息进行修改,而不修改当前行存储区域内的存储单元存储的分配状态信息。
27.根据权利要求25或26所述的系统,其特征在于,还包括: 第八修改模块,用于在所述第四记录模块记录的当前行存储区域内所有存储单元的分配状态都为已分配状态时,将当前行存储区域内所有存储单元存储的分配状态信息修改为已分配状态。
28.根据权利要求25-26任意一项所述的系统,其特征在于,还包括: 第五记录模块,用于预先读取第二存储器内当前行存储区域的下一行的存储区域内各个存储单元存储的分配状态信息。
29.一种存储地址配置系统,其特征在于,包括: 至少一个处理器,其被配置为: 读取存储区域中各个存储单元存储的分配状态信息,选择分配状态信息指示为未分配状态的存储单元; 依据所选择的存储单元在所述存储区域中的位置地址; 将数据存入所述数据存储空间后,将所选择的存储单元存储的分配状态信息修改为已分配状态;以及, 与所述至少一个处理器耦合的存储器,,所述存储器内至少包括由若干存储单元组成的存储区域,所述存储单元用于存储所述存储单元对应的数据存储空间的分配状态信息,数据存储空间的地址由该数据存储空间对应的存储单元在存储区域中的位置确定。
30.根据权利要求29所述的系统,其特征在于,所述至少一个处理器进一步被配置为: 在读取数据存储空间中的数据后,依据所述数据存储空间的地址,获得用于存储所述数据存储空间的分配状态信息的存储单元的位置; 依据所述存储单元的位置,在所述存储区域中查找所述存储单元; 将所述存储单元存储的分配状态信息修改为未分配状态。
31.根据权利要求29或30所述的系统,其特征在于,所述至少一个处理器进一步被配置为: 记录所述存储区域的当前行行存储区域的分配状态,以及当前行存储区域内各个列的存储单元的分配状态。
32.根据权利要求31所述的系统,其特征在于,所述至少一个处理器进一步被配置为:在当前行存储区域内有地址回收和/或有地址分配时,只对记录的当前行存储区域内的存储单元的分配状态信息进行修改,而不修改当前行存储区域内的存储单元存储的分配状态信息。
33.根据权利要求31或32所述的系统,其特征在于,所述至少一个处理器进一步被配置为: 在记录的与当前行存储区域内所有存储单元对应的数据存储空间的分配状态都为已分配状态时,将当前行存储区域内所有存储单元存储的分配状态信息修改为已分配状态。
34.根据权利要求31-33任意一项所述的系统,其特征在于,所述至少一个处理器进一步被配置为: 预先读取当前行存储区 域的下一行存储区域内各个存储单元存储的分配状态信息。
【文档编号】G06F12/08GK103605478SQ201310185769
【公开日】2014年2月26日 申请日期:2013年5月17日 优先权日:2013年5月17日
【发明者】段有杰, 金腾 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1