一种数据存储管理方法和装置制造方法

文档序号:6487011阅读:127来源:国知局
一种数据存储管理方法和装置制造方法
【专利摘要】本发明公开了一种数据存储管理方法和装置,本方法中建立资源块队列,将缓存存储器的空闲资源块加入该资源块队列中;当有请求到达时,判断所述资源块队列中是否存在空闲资源块,如果存在,则将所述请求的缓存数据写入所述空闲资源块,将所述空闲资源块的地址和所述请求的时间戳绑定后写入缓存队列,将所述空闲资源块移出所述资源块队列;当满足资源块释放条件时,释放对应的资源块中的缓存数据,将释放的资源块加入所述资源块队列;对各请求源的缓存队列输出的请求进行仲裁,基于仲裁后输出的请求进行读写操作。本发明可充分和合理的利用资源块;减少了仲裁的时间并且仲裁的输出是可控的;最大程度提高了读写效率和缓存资源利用率。
【专利说明】—种数据存储管理方法和装置
【技术领域】
[0001]本发明涉及数据存储管理,尤其涉及一种数据存储管理方法和装置。
【背景技术】
[0002]在多请求源的数据的存储管理控制中,多源请求的合理的调度和控制,充分的利用缓存数据的资源块和最大化的利用读写数据总线的效率,对系统的性能的提高有很大作 用。
[0003]多请求源的管理控制,一般来说,分为读写数据和命令的缓存管理,读写请求的仲裁管理,读写数据存储器;很多时候为了提高处理速度,在读写带宽方面做了改进,来提高性能,而未考虑缓存资源的利用率和读写总线的效率以及请求源的仲裁模式等方面对系统性能的影响。就读写数据缓存来说,由于有时候多个读写数据源是同时来的,由于它们不能同时占用读写总线,每次只能处理一种读写,而且每种读写请求是分开缓存的,缓存的空间也不是无限大的,而是有一定的限制的,数据的缓存由于是采用静态分配,静态使用的方式,是先将读写请求的数据和时间戳,分别用RAM (Random Access Memory,随机存储器)和
FIFO (First Input First Output,先入先出)将其缓存,由于缓存的时间戳和数据是--
对应的,时间戳必须与缓存数据RAM的起始地址绑定在一起,然后写入FIFO进行缓存。数据是依次写入RAM的,这样RAM就静态的循环写入数据。当时间戳FIFO为非空时,就会发出处理请求,等待仲裁响应。这样RAM的缓存的空间就会一直被占用,直到下次再循环写到这部分RAM的空间。而有些处理粒度的空间,由于时间戳合法性检测超时或者丢弃而提前释放,但却没有及时利用上这部分空间,这种方式造成了资源的浪费。
[0004]对于多源读写请求的仲裁管理,以往的经验都是读写请求输入到状态机逻辑的仲裁中去仲裁处理请求,每个仲裁结果输出的需要几个周期(cycle)才能完成,这样浪费了请求从输入到读写存储器的时间。
[0005]对于读写存储器,由于各请求源读写输入的是时间戳,而读写存储器对应的是读写的地址,需要先将时间戳转换成地址,以往都是上一次读写结束才去仲裁和处理下一个读写请求,造成读写总线的效率不高,而且读写占用同一总线,这样大大降低了读写的速度,影响读写的速率。
[0006]为了提高多请求源的存储管理的性能,缩短读写数据的处理延时,对读写数据缓存队列和输出可控的管理方式,读写请求的仲裁,读写数据存储器总线的方式等方面需要进行优化处理。

【发明内容】

[0007]本发明要解决的问题的技术问题是提供一种数据存储管理方法和装置,解决现有的数据缓存过程中缓存资源的利用率低,读写请求源的仲裁处理的时间长开销大,读写存储器的总线的效率低等缺陷,提高数据存储管理的性能和读写效率。
[0008]为了解决上述问题,本发明提供了一种数据存储管理方法,包括:[0009]建立资源块队列,将缓存存储器的空闲资源块加入该资源块队列中;
[0010]当有请求到达时,判断所述资源块队列中是否存在空闲资源块,如果存在,则将所述请求的缓存数据写入所述空闲资源块,将所述空闲资源块的地址和所述请求的时间戳绑定后写入缓存队列,将所述空闲资源块移出所述资源块队列;当满足资源块释放条件时,释放对应的资源块中的缓存数据,将释放的资源块加入所述资源块队列;
[0011]对各请求源的缓存队列输出的请求进行仲裁,基于仲裁后输出的请求进行读写操作。
[0012]进一步地,上述方法还可以具有以下特点:
[0013]所述满足资源块释放条件时,释放对应的资源块包括如下之一或其组合:
[0014]当请求的时间戳为非法的,则释放该请求的缓存数据占用的资源块;
[0015]当请求处理结束时,则释放该请求的缓存数据占用的资源块;
[0016]接收到激活资源块的外部命令时,释放对应的资源块。
[0017]进一步地,上述方法还可以具有以下特点:
[0018]所述对各请求源的缓存队列输出的请求进行仲裁包括:
[0019]对各请求源的缓存队列输出的请求配置优先级,不同优先级的请求分别输入到对应的仲裁单元,同一优先级的请求输入到同一仲裁单元;
[0020]仲裁单元以公平竞争的方式轮询输出所接收到的同一优先级的请求,且优先级低的请求等待优先级高的请求仲裁输出直到高优先级无仲裁请求后再进行仲裁输出;
[0021 ] 将仲裁输出的请求存储到请求队列。
[0022]进一步地,上述方法还可以具有以下特点:
[0023]所述方法还包括,在所述请求队列满时停止仲裁输出请求,或者,丢弃仲裁输出的请求。
[0024]进一步地,上述方法还可以具有以下特点:
[0025]所述基于仲裁后输出的请求进行读写操作包括:
[0026]在当前请求的读写操作完成前,如果还有已仲裁的请求,则取出下一个请求进行预处理。
[0027]进一步地,上述方法还可以具有以下特点:
[0028]所述在当前请求的读写操作完成前取出下一个请求进行预处理包括:
[0029]在当前请求的读写操作完成前取出下一个请求,在当前请求的读写操作完成前或完成时,完成所述下一个请求的请求信号到总线信号的转换。
[0030]进一步地,上述方法还可以具有以下特点:
[0031]对各请求源的缓存队列输出的请求进行仲裁,基于仲裁后输出的请求进行读写操作包括:
[0032]对读请求和写请求独立进行仲裁,以及,基于不同的数据总线分别进行读操作和写操作。
[0033]为了解决上述问题,本发明还提供了一种数据存储管理装置,包括:
[0034]资源块管理模块,用于建立资源块队列,将缓存存储器的空闲资源块加入该资源块队列中;
[0035]缓存管理模块,用于当有请求到达时,判断所述资源块队列中是否存在空闲资源块,如果存在,则将所述请求的缓存数据写入所述空闲资源块,将所述空闲资源块的地址和所述请求的时间戳绑定后写入缓存队列,将所述空闲资源块移出所述资源块队列;当满足资源块释放条件时,释放对应的资源块中的缓存数据,将释放的资源块加入所述资源块队列;
[0036]仲裁模块,用于对各请求源的缓存队列输出的请求进行仲裁;
[0037]处理模块,用于基于仲裁后输出的请求进行读写操作。
[0038]进一步地,上述装置还可以具有以下特点:
[0039]所述缓存管理模块在满足资源块释放条件时,释放对应的资源块包括如下之一或其组合:
[0040]当请求的时间戳为非法的,则释放该请求的缓存数据占用的资源块;
[0041]当请求处理结束时,则释放该请求的缓存数据占用的资源块;
[0042]接收到激活资源块的外部命令时,释放对应的资源块。
[0043]进一步地,上述装置还可以具有以下特点:
[0044]所述仲裁模块包括控制单元和多个仲裁单元,每个仲裁单元对应一个优先级,其中:
[0045]所述控制单元,用于接收到各请求源的缓存队列输出的请求后,为各请求配置优先级,将同一优先级的请求输出到同一仲裁单元;以及,控制各仲裁单元,使得优先级低的请求等待优先级高的请求仲裁输出直到高优先级无仲裁请求后再进行仲裁输出;
[0046]所述仲裁单元,用于将接收到的同一优先级的请求以公平竞争的方式轮询输出并存储到请求队列。
[0047]进一步地,上述装置还可以具有以下特点:
[0048]所述仲裁模块还用于:在所述请求队列满时停止仲裁输出请求,或者,丢弃仲裁输出的请求。
[0049]进一步地,上述装置还可以具有以下特点:
[0050]所述处理模块基于仲裁后输出的请求进行读写操作包括:
[0051]在当前请求的读写操作完成前,如果还有已仲裁的请求,则取出下一个请求进行预处理。
[0052]进一步地,上述装置还可以具有以下特点:
[0053]所述处理模块在当前请求的读写操作完成前取出下一个请求进行预处理包括:
[0054]在当前请求的读写操作完成前取出下一个请求,在当前请求的读写操作完成前或完成时,完成所述下一个请求的请求信号到总线信号的转换。
[0055]进一步地,上述装置还可以具有以下特点:
[0056]所述仲裁模块还用于:对读请求和写请求独立进行仲裁;
[0057]所述处理模块还用于:基于不同的数据总线分别进行读操作和写操作。
[0058]采用本发明所述方法和装置,与现有技术相比,主要是增加了资源块队列,充分和合理的利用资源块;采用优先级可配置,同一优先级公平竞争的轮询输出,输出结果采用队列管理并且控制仲裁输出方式减少了仲裁的时间,并且仲裁的输出是可控的;配合使用预处理的方式读写数据和读写数据双通道的总线,最大程度提高了读写效率和缓存资源利用率。【专利附图】

【附图说明】
[0059]图1是本发明实施例数据存储管理装置框图;
[0060]图2是本发明实施例仲裁模块框图;
[0061]图3是本发明实施例资源块队列管理流程图;
[0062]图4是本发明实施例资源块队列缓冲数据的结构图;
[0063]图5是本发明实施例多源控制和管理的总体结构图;
[0064]图6是本发明实施例2路写仲裁的控制和管理的结构图;
[0065]图7是本发明实施例3路抵消处理请求的仲裁的控制和管理的结构图;
[0066]图8是本发明实施例4路读仲裁的控制和管理的结构图。
【具体实施方式】
[0067]为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
[0068]本发明实施例提供一种数据存储管理方法,包括:
[0069]建立资源块队列,将缓存存储器的空闲资源块加入该资源块队列中;
[0070]当有请求到达时,判断所述资源块队列中是否存在空闲资源块,如果存在,则将所述请求的缓存数据写入所述空闲资源块,将所述空闲资源块的地址和所述请求的时间戳绑定后写入缓存队列,将所述空闲资源块移出所述资源块队列;当满足资源块释放条件时,释放对应的资源块中的缓存数据,将释放的资源块加入所述资源块队列;
[0071]对各请求源的缓存队列输出的请求进行仲裁,基于仲裁后输出的请求进行读写操作。
[0072]其中,所述满足资源块释放条件时,释放对应的资源块包括如下之一或其组合:
[0073]当请求的时间戳为非法的,则释放该请求的缓存数据占用的资源块;
[0074]当请求处理结束时,则释放该请求的缓存数据占用的资源块;
[0075]接收到激活资源块的外部命令时,释放对应的资源块。
[0076]其中,所述对各请求源的缓存队列输出的请求进行仲裁包括:
[0077]对各请求源的缓存队列输出的请求配置优先级,不同优先级的请求分别输入到对应的仲裁单元,同一优先级的请求输入到同一仲裁单元;
[0078]仲裁单元以公平竞争的方式轮询输出所接收到的同一优先级的请求,且优先级低的请求等待优先级高的请求仲裁输出直到高优先级无仲裁请求时再进行仲裁输出;
[0079]将仲裁输出的请求存储到请求队列。
[0080]其中,所述方法还包括,在所述请求队列满时停止仲裁输出请求,或者,丢弃仲裁输出的请求。
[0081]其中,所述基于仲裁后输出的请求进行读写操作包括:
[0082]在当前请求的读写操作完成前,如果还有已仲裁的请求,则取出下一个请求进行预处理。具体的,从请求队列中取出下一个请求进行预处理。
[0083]其中,所述在当前请求的读写操作完成前取出下一个请求进行预处理包括:[0084]在当前请求的读写操作完成前取出下一个请求,在当前请求的读写操作完成前或完成时,完成所述下一个请求的请求信号到总线信号的转换。
[0085]其中,所述方法还包括,当所述请求队列满时,输出控制信号控制仲裁输出的请求。
[0086]其中,对各请求源的缓存队列输出的请求进行仲裁,基于仲裁后输出的请求进行读写操作包括:
[0087]对读请求和写请求独立进行仲裁,以及,基于不同的数据总线分别进行读操作和写操作。
[0088]本发明实施例还提供一种数据存储管理装置,如图1所示,包括:
[0089]资源块管理模块,用于建立资源块队列,将缓存存储器的空闲资源块加入该资源块队列中;
[0090]缓存管理模块,用于当有请求到达时,判断所述资源块队列中是否存在空闲资源块,如果存在,则将所述请求的缓存数据写入所述空闲资源块,将所述空闲资源块的地址和所述请求的时间戳绑定后写入缓存队列,将所述空闲资源块移出所述资源块队列;当满足资源块释放条件时,释放对应的资源块中的缓存数据,将释放的资源块加入所述资源块队列;
[0091]仲裁模块,用于对各请求源的缓存队列输出的请求进行仲裁;
[0092]处理模块,用于基于仲裁后输出的请求进行读写操作。
[0093]其中,所述缓存管理模块在满足资源块释放条件时,释放对应的资源块包括如下之一或其组合:
[0094]当请求的时间戳为非法的,则释放该请求的缓存数据占用的资源块;
[0095]当请求处理结束时,则释放该请求的缓存数据占用的资源块;
[0096]接收到激活资源块的外部命令时,释放对应的资源块。
[0097]其中,如图2所示,所述仲裁模块包括控制单元和多个仲裁单元,每个仲裁单元对应一个优先级,其中:
[0098]所述控制单元,用于接收到各请求源的缓存队列输出的请求后,为各请求配置优先级,将同一优先级的请求输出到同一仲裁单元;以及,控制各仲裁单元,使得优先级低的请求等待优先级高的请求仲裁输出直到高优先级无仲裁请求后再进行仲裁输出;
[0099]所述仲裁单元,用于将接收到的同一优先级的请求以公平竞争的方式轮询输出并存储到请求队列。仲裁单元的具体实现方式本发明不作限定,其中一种实现参见后续实施例,但本发明不限于此。
[0100]其中,所述仲裁模块还用于:在所述请求队列满时停止仲裁输出请求,或者,丢弃仲裁输出的请求。
[0101]其中,所述处理模块基于仲裁后输出的请求进行读写操作包括:
[0102]在当前请求的读写操作完成前,如果还有已仲裁的请求,则取出下一个请求进行预处理。
[0103]其中,所述处理模块在当前请求的读写操作完成前取出下一个请求进行预处理包括:
[0104]在当前请求的读写操作完成前取出下一个请求,在当前请求的读写操作完成前或完成时,完成所述下一个请求的请求信号到总线信号的转换。
[0105]其中,所述仲裁模块还用于对读请求和写请求独立进行仲裁;所述处理模块还用于基于不同的数据总线分别进行读操作和写操作。
[0106]下面通过具体实施例进一步说明本发明。
[0107]1、资源队列方式缓存数据
[0108]复位初始化资源块队列FIFO,将空闲资源块加入资源块队列FIFO ;
[0109]当请求到达时,判断资源块队列中是否有空闲资源快,如果有空闲资源块,则将该请求的缓存数据写入空闲资源块,将资源块地址和时间戳绑定写入缓存队列FIFO ;每个请求源有对应的缓存队列FIFO ;缓存队列FIFO中有请求时,会输出请求;
[0110]对各请求源输出的请求进行仲裁,并将仲裁结果写入请求队列(该请求队列是一个FIFO队列)等待处理;
[0111]具体的实现流程如图3所示。
[0112]2、读写总线采用预处理的流水控制处理方式读写数据存储器,具体的实现方式如下步骤:
[0113]由于在干扰对消系统中读请求相对写请求来说是独立的,而写要依赖于读,读写数据总线共用同一条数据总线降低读总线效率,为了提高MASB读写数据总线的效率,读写数据的存储器采用的是读写数据总线分开的读写数据双通道模式,这样对于总线来说读写互不干扰,相互独立的。与后面的采用读写仲裁分开匹配,这样读写就可以独立进行。
[0114]采用读写数据分开的读写并行的模式会造成读写冲突的情景,为了避免读写冲突在读写的存储器中增加了冲突检测机制,并且有write through功能,当读写冲突的时候直接将此时的输入给输出,同时另一路将输入继续存储到MASB中,这样可以满足系统的时序需求。
[0115]write through是直接把当前正在写的数据直接给当前正在读的数据请求,直接输出;读写冲突就是系统在读写MASB时读地址和写地址是相同的,并且读使能和写使能同时拉高,也就是当前正在读写存储器的同一个位置,每次在写MASB的时候都要首先判断是否同时读写,然后再判断读写地址是否相同,这时按照要求读数据可以有3方式输出:1.此时读出的数值是MASB的历史值;2.读出的数据是不定态;3.读出的数据当前正在写的值(也就是所说的write through方式,当前正在写的数值直接输出给读),这3种方式是可以选择的,本系统采用的就是方式3。
[0116]对读写请求都采用提前预处理的流水控制方式,即在上一次读写请求处理完成之前,判断请求队列是否还有其他请求,如果有,则预处理下一个请求。在上一次读写请求处理完成之前的具体提前时间可根据需要而定。一种优选方式为:在当前读写请求的数据读写操作结束之前,将请求的时间戳到读写地址的转化完成,当前请求处理结束的下一个周期(cycle)将读写地址和读写请求挂到总线上去读写下一个处理粒度的数据,保证读写总线100%的利用率,使总线效率最大化。
[0117]3、优先级可配置,同一优先级公平竞争的轮询方式仲裁请求输出处理;
[0118]I)读写请求分开仲裁,读写数据总线是独立的,所以将多源请求分成读写2个仲裁输出处理,仲裁输出的结果分别用写请求队列FIFO和读请求队列FIFO缓存排队,等待处理。[0119]2)采用优先级可配置,同一优先级公平竞争轮询的仲裁方式仲裁输出请求处理。
[0120]本发明实施例中仲裁完全采用逻辑控制实现,当请求到来的时候,仲裁首先会先判断下优先级,高优先级的请求在一起轮询仲裁输出,低优先级的请求在一起输出,当有高优先级请求时,低优先级是不会被仲裁输出的,直到高优先级请求被处理完成才能仲裁输出低优先级。同一优先级是采用公平轮询的方式来处理,即同一优先级轮流输出,轮流处理,每个请求源被依次仲裁输出至请求队列。
[0121]每种请求的优先级可以由系统配置,系统未配置时可以设置默认值;如果要配置改变优先级,在系统复位结束后,可以通过AXI总线,对系统进行工作配置,该配置过程包括每种请求的优先级配置。
[0122]采用上述优先级可配置,同一优先级公平竞争的轮询方式仲裁的输入到输出仅需要2cycle的时间,输出仲裁结果也是可控的,如果存储仲裁输出的请求的缓存队列满,可以通过控制移位环的移位使能信号控制token输出,从而控制仲裁的输出,而且每种请求的优先级也是可以配置的,这样可以大大减少仲裁的时间,提高仲裁的效率。
[0123]根据图4,对写数据请求需要缓存数据和时间戳2部分,用RAM来缓存数据;用FIFO来缓存时间戳和资源块地址;而资源块队列是对缓存数据的RAM按照处理粒度来划分的资源块,每个资源块可以缓存一次处理粒度的数据。
[0124]当外部有缓存数据到来的时候,首先判断资源块队列是否为空,如果为空,表示不存在空闲的资源块,则按照处理粒度丢弃需要缓存的数据,否则,将资源块队列中的空闲资源块地址读出,与时间戳绑定写入缓存队列FIFO。
[0125]在如下情况下释放资源块:
[0126]A、当请求的时间戳的合法性检查为非法,则释放该请求对应的资源块,同时将释放的资源块写入资源块队列;
[0127]B、当请求处理结束同样要释放资源块,将释放的资源块写入资源块队列;
[0128]C、接收到外部的激活资源块命令后,释放对应的资源块,并将释放的资源块加入资源块队列;
[0129]如果资源块由于某种原因丢弃,长期没有释放,具体可以通过状态指示信号进行判断,可以通过外部的命令(可以是软件方式发送命令,也可以是硬件方式发送的命令)来激活资源块。具体的实现流程见图3。
[0130]外部监控(软件或硬件)可以实时的观察系统上报的资源块队列的状态,如果发现资源块忙超时没有释放,会通过AXI总线向资源块队列中写入长时间没有释放的资源块的首地址,当地址写到资源块队列中,相应的资源块即被激活释放,可以缓存新的数据。
[0131]根据图3,多源的请求功能在本系统中将仲裁分为3类,多源的读仲裁;多源的写仲裁;依赖于读数据的抵消数据处理仲裁(先读数据抵消处理再后写);根据具体情况而选择何时去仲裁,根据实际的请求源个数选择仲裁请求通道的个数,最后综合考虑3个仲裁联合起来的组成的系统的多源的控制和管理,合理的计算和利用各级仲裁的时种周期,而且每一级处理的时候可以复用时钟周期,优选的,该时间不能大于一次请求占用读或者写总线的时间。
[0132]抵消数据处理仲裁包括:对缓存的重构数据的抵消处理,前面缓存的数据都是重构数据,重构的数据需要进行抵消处理才能写到MASB中,所以首先要先从MASB中读出来和处理数据相同时间戳位置的数据,做抵消处理,再写到MASB中去,由于有3种缓存的重构数据,所以这3个源也要仲裁处理哪个。
[0133]图5是系统的读写MASB请求的仲裁处理结构图,如图5所示,图5有3个写请求的输入,分别是wr_reql、wr_req2、wr_req3,也就是需要在系统缓存的准备写入MASB的3种重构数据;rd_reql、rd_req2、rd_req3是3种缓存的读MASB请求的命令;wr_arbiterl是3种写请求的仲裁;req_qUeUe是写请求仲裁输出后的请求队列。
[0134]3种重构数据被缓存后,分别会有wr_reql、wr_req2> wr_req3请求仲裁处理,仲裁之后,由于前面的处理速度快于后边的速度,所以3仲裁写请求被写仲裁仲裁之后先要在req_queue进行缓存,用来作抵消处理,req_queue满了之后会流控前面写仲裁的仲裁输出,当写队列中的请求被读出做抵消处理,首先要向MASB发送读请求rd_req,rd_req要同rd_reql> rd_req2、rd_req3 经过 rd_arbiter2 读仲裁模块仲裁输出缓存到 RD_req_queue中排队等待读MASB处理响应,由于要实现流水处理,并且前端快于后面的读所以需要缓存到RD_req_queue,由于抵消处理的rd_req请求发出后数据并不是立刻返回的,有可能发出了几个rd_req,数据还没有返回,因此要对发出的请求的类型在req_typ_queue中备份,当读数据返回时,可以知道返回的数据要与哪个写请求做抵消处理,抵消处理后的请求数据要与原始天线数据经过wr_arbiter仲裁,轮流写到MASB中,由于原始天线数据不用抵消处理,直接写到MASB中,因此不用经过wr_arbiterl,而是直接经过wr_arbiter仲裁,在wr_req_queue中等待写MASB处理,仲裁之后都需要先进行缓存。
[0135]图6为仲裁单元的一种实现方式(二路写仲裁),各优先级的仲裁单元可共用req_fifo,读写具体采用多少路仲裁输入不限于本文中给出的实施例,可以根据实际的请求源进行扩展,但是本仲裁的管理控制根据模块的实际情况,没有需要返回的结果,所以理论上只要有请求的情况下可以连续不断的仲裁输出,但是由于每次输出的仲裁都要用一定的执行周期去实现,由于执行周期大于仲裁周期,所以每次输出的仲裁请求结果用FIFO缓存起来,当前一次请求返回完成可以继续去写数据,但是下一次写请求需要提前预读或者是提前2个时钟周期(2个时钟周期为示例,可以根据需要确定具体提前的时间)去读出,这样当写请求连续有的情况下,写总线可以连续被占用和写入数据,总线的写效率达到100%,当FIFO满的时候可以通过FIFO满来控制仲裁的忙与仲裁循环记数是否循环继续进行,当然具体的控制方式和所需要的具体的实现逻辑有关,根据需要的逻辑去控制,而去控制FIFO和产生相应的rrh_en信号。
[0136]如图6所示,Ring counter是一个移位作用的环,有几个请求就有几位移位,图6中是2位,那么就从01-10-01循环移位,假设有3位就是从001-010-100-001循环移位,M位的情况下类推;rrh_en为是否移位的使能信号,如果为I则移位,如果为0,则停止移位;elk系统时钟信号,reset是系统复位信号,token是移位输出的结果,如图6循环移位输出白勺是2bit,那么token [0]为低位比特,token [I]为高位比特。
[0137]Priority O,Priority I起到控制输出的作用,在Priority O如果某个请求优先输出了,那么在Priority I输出就是最后一个被轮询输出;Req[l:0]代表仲裁输出的结果,Req[0]Req[l]是它的2个bit的值。比如,Req[l:0] = 00,表示没有仲裁输出,Req[l: 0]=01,表示请求I被仲裁输出,Req[1:0] = 10,表示请求2被仲裁输出,Req[1:0] =11,不存在。当然,也可以使用其他值分别表示没有仲裁输出,请求I被仲裁输出,请求2被仲裁输出,本发明对此不作限定。
[0138]复位结束后,假如rrh_en是使能的,并且有2个输入的请求wr_reql和wr_req2同时输入,此时 ring_counter 输出的时能信号 token[l:0]是 01,即 token [O] = 1,token [I]=O, token [O]和 token [I]分别作为 Priority O、Priority I 控制输出的使能,token [O]=1,控制输出使能是有效的,Priority O的控制输出应该是01 ;而token [I] =0,控制输出使能是无效的,Priority I的控制输出应该是00, Priority O输出结果的output [0]与Priority I输出结果的output [I]进行或运算作为req[0]的输出,Priority O输出结果的output [I]与Priority I输出结果的output [0]进行或运算作为req[l]的输出,此时,req[0]为l,req[l]为0,01代表输出请求wr_reql ;在Priority I控制输出中,由于请求wr_reql在PriorityO是先被轮询输出,那么在Priority I是最后被轮询输出,体现同一个优先级的公平的竞争轮询。在后一仲裁周期中,token[0] =0,控制输出使能是无效的,Priority O的控制输出是00 ;而token[l]=l,控制输出使能是有效的,Priority I的控制输出是10 ;则req[0]为0,req[l]为1,10代表输出请求wr_req2。在后续仲裁周期中,token [1:0]的取值一直按照10-01-01的方式变化,PriorityO和Priority I的取值根据当前需要控制输出的请求进行变化。更多路仲裁的实现参见图7,图8。
[0139]数据存储模块的读MASB的读请求控制如图7-8所示,可以通过rrh_en信号和busy信号来改变读数据的读取的实现方式,由Ring counter根据输出来决定是否循环还是始终在循环,当然仲裁的输出周期也是可以控制的,通过在rrh_en信号之间插入D触发器来改变,仲裁什么时候输出是通过busy信号来控制,busy信号可以输出到Ringcounter,在请求队列满的时候停止仲裁,如图7所示,也可以输出到Req_fifo前,在请求队列满的时候丢弃当前仲裁输出的请求,如图6,8所示。由于仲裁的周期远远小于去读取数据的时钟周期,为了更好的利用读总线去读数据,缓存仲裁输出的读请求,再通过计算读请求信号转化到读总线信号的时间,从而获知需要提前多少个周期从Req_fifo中读出读请求信号,也就是在前次读请求读取数据的时钟周期同时也去从Req_fifo读取读请求去进行地址和参数的转化,当前次的数据读取完成之后,本次读请求的参数、地址和控制读逻辑正好处理完毕,将本地请求挂到读总线上去读数据,可以充分的利用读总线,提高了总线利用率,从FIFO中读出读请求输入的请求源的个数还可以进行扩展;由于是多种数据源去读取数据,当缓存的读数据请求开始处理读数据任务,先把发送的读请求类型缓存起来,当读数据返回来的时候先要读出缓存的数据类型和返回的数据类型做比对,从而获知返回的数据是哪个请求读取的数据。图7中,token [0], token [I], token [2]分别控制priorityO,priorityl, priority2的输出。其中,token的值按001-010-100-001的方式依次变化,priorityO,priorityl,priority2根据当前需要轮询输出的请求输出相应的值。其中,Rd_reql, Rd_req2, Rd_req3分别代表一路请求源的读请求,假设分别为请求源1,请求源2,请求源3,该仲裁单元保证各请求源的请求轮询输出。如果某请求源无请求,则输出下一请求源的请求。比如,token取值分别为001-010-100时,req[2:0]取值也是001-010-100,即分别输出Rd_reql,Rd_req2,Rd_req3。如果只有请求源I和请求源3的请求,则token取值为001时,req[2:0]的取值为001,输出请求源I的取值,token取值为010时,控制priorityO,priorityl,priority2的取值,由于token取值为001时,Rd_reql已被仲裁,由于是公平轮询,同一请求源不能被连续2次仲裁输出,而此时priorityl使能,Rd_req2是首先被轮询,但是此时Rd_req2又没有请求,为了提高仲裁效率,而输出其次轮询的Rd_req3,使得最终req[2:0]的取值为100,即输出请求源3的请求。后续,依旧按照请求源1_3的顺序轮询输出请求。图8所示仲裁与图6,7类似,此处不再赘述。
[0140]图5-8所示仅为本发明实现的具体应用实例,本发明不限于使用图5-8所示架构。
[0141]本发明实施例中,采用资源队列的管理方式,提高数据缓存过程中缓存资源的利用率,有效的缓存数据,减少资源浪费;采用优先级可以配置,同一优先级内采用公平竞争轮询的仲裁输出队列管理和输出可控制方式代替原有的状态机逻辑的仲裁方式,减少请求源的仲裁请求处理的时间,减少总线上相邻请求数据传输之间存在气泡,使总线效率过低,从而提高缓存资源的利用率和提高总线效率;配合采用存储器读写总线分开,并且读写数据都采用提前预处理的流水控制方式去读写存储器的联合控制管理方式,保证读写存储器总线的效率的最大化。本方案应用简单、可靠,能够有效地利用缓存数据的Memory,减少了仲裁输出的时间,提闻了读与总线的效率,从而提闻系统性能。
[0142]本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
【权利要求】
1.一种数据存储管理方法,其特征在于,包括: 建立资源块队列,将缓存存储器的空闲资源块加入该资源块队列中; 当有请求到达时,判断所述资源块队列中是否存在空闲资源块,如果存在,则将所述请求的缓存数据写入所述空闲资源块,将所述空闲资源块的地址和所述请求的时间戳绑定后写入缓存队列,将所述空闲资源块移出所述资源块队列;当满足资源块释放条件时,释放对应的资源块中的缓存数据,将释放的资源块加入所述资源块队列; 对各请求源的缓存队列输出的请求进行仲裁,基于仲裁后输出的请求进行读写操作。
2.如权利要求1所述的方法,其特征在于,所述满足资源块释放条件时,释放对应的资源块包括如下之一或其组合: 当请求的时间戳为非法的,则释放该请求的缓存数据占用的资源块; 当请求处理结束时,则释放该请求的缓存数据占用的资源块; 接收到激活资源块的外部命令时,释放对应的资源块。
3.如权利要求1所述的方法,其特征在于,所述对各请求源的缓存队列输出的请求进行仲裁包括: 对各请求源的缓存队列输出的请求配置优先级,不同优先级的请求分别输入到对应的仲裁单元,同一优先级的请求输入到同一仲裁单元; 仲裁单元以公平竞争的方式轮询输出所接收到的同一优先级的请求,且优先级低的请求等待优先级高的请求仲裁输出直到高优先级无仲裁请求后再进行仲裁输出; 将仲裁输出的请求存储到请求队列。
4.如权利要求3所述的方法,其特征在于,所述方法还包括,在所述请求队列满时停止仲裁输出请求,或者,丢弃仲裁输出的请求。
5.如权利要求1至4任一所述的方法,其特征在于,所述基于仲裁后输出的请求进行读写操作包括: 在当前请求的读写操作完成前,如果还有已仲裁的请求,则取出下一个请求进行预处理。
6.如权利要求5所述的方法,其特征在于,所述在当前请求的读写操作完成前取出下一个请求进行预处理包括: 在当前请求的读写操作完成前取出下一个请求,在当前请求的读写操作完成前或完成时,完成所述下一个请求的请求信号到总线信号的转换。
7.如权利要求1至4任一所述的方法,其特征在于,对各请求源的缓存队列输出的请求进行仲裁,基于仲裁后输出的请求进行读写操作包括: 对读请求和写请求独立进行仲裁,以及,基于不同的数据总线分别进行读操作和写操作。
8.一种数据存储管理装置,其特征在于,包括: 资源块管理模块,用于建立资源块队列,将缓存存储器的空闲资源块加入该资源块队列中; 缓存管理模块,用于当有请求到达时,判断所述资源块队列中是否存在空闲资源块,如果存在,则将所述请求的缓存数据写入所述空闲资源块,将所述空闲资源块的地址和所述请求的时间戳绑定后写入缓存队列,将所述空闲资源块移出所述资源块队列;当满足资源块释放条件时,释放对应的资源块中的缓存数据,将释放的资源块加入所述资源块队列; 仲裁模块,用于对各请求源的缓存队列输出的请求进行仲裁; 处理模块,用于基于仲裁后输出的请求进行读写操作。
9.如权利要求8所述的装置,其特征在于,所述缓存管理模块在满足资源块释放条件时,释放对应的资源块包括如下之一或其组合: 当请求的时间戳为非法的,则释放该请求的缓存数据占用的资源块; 当请求处理结束时,则释放该请求的缓存数据占用的资源块; 接收到激活资源块的外部命令时,释放对应的资源块。
10.如权利要求8所述的装置,其特征在于,所述仲裁模块包括控制单元和多个仲裁单元,每个仲裁单元对应一个优先级,其中: 所述控制单元,用于接收到各请求源的缓存队列输出的请求后,为各请求配置优先级,将同一优先级的请求输出到同一仲裁单元;以及,控制各仲裁单元,使得优先级低的请求等待优先级高的请求仲裁输出直到高优先级无仲裁请求后再进行仲裁输出; 所述仲裁单元,用于将接收到的同一优先级的请求以公平竞争的方式轮询输出并存储到请求队列。
11.如权利要求10所述的装置,其特征在于, 所述仲裁模块还用于:在所述请求队列满时停止仲裁输出请求,或者,丢弃仲裁输出的请求。
12.如权利要求8至11任一所述的装置,其特征在于,所述处理模炔基于仲裁后输出的请求进行读写操作包括: 在当前请求的读写操作完成前,如果还有已仲裁的请求,则取出下一个请求进行预处理。
13.如权利要求12所述的装置,其特征在于,所述处理模块在当前请求的读写操作完成前取出下一个请求进行预处理包括: 在当前请求的读写操作完成前取出下一个请求,在当前请求的读写操作完成前或完成时,完成所述下一个请求的请求信号到总线信号的转换。
14.如权利要求8至11任一所述的装置,其特征在于, 所述仲裁模块还用于:对读请求和写请求独立进行仲裁; 所述处理模块还用于:基于不同的数据总线分别进行读操作和写操作。
【文档编号】G06F13/18GK103543954SQ201210245375
【公开日】2014年1月29日 申请日期:2012年7月16日 优先权日:2012年7月16日
【发明者】刘辉 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1