背景技术
在芯片设计中,为了充分利用存储器,通常出现多个存储控制单元需要访问一个存储器的情况。这时就需要仲裁单元来决定哪个控制单元获得访问权限。图1为现有的存储器访问仲裁系统的结构示意图,如图1所示,该系统包括4个存储控制单元110、1个仲裁单元120和3个存储器130。其中,4个存储控制单元110可以访问3个存储器130中的任何一个。当多个存储控制单元110申请访问一个存储器130时,向仲裁单元120发送访问请求,仲裁单元120根据自身保存的仲裁策略决定能够获得访问权限的存储控制单元120,并将仲裁结果通知给被请求的存储器130。
目前,仲裁策略种类繁多,常用的仲裁策略包括以下两种:
仲裁策略一
该仲裁策略根据优先级决定访问顺序且不支持中断。仲裁单元120在接收到存储控制单元110对存储器发起的访问请求后,根据以下仲裁策略决定被授予访问权限的存储控制单元:
1)如果被请求的存储器空闲,即没有正在被访问,且当前只有一个存储控制单元对该存储器提出访问请求,将访问权限授予提出访问请求的存储控制单元,即响应该访问请求;
2)如果被请求的存储器空闲,且当前有至少2个存储控制单元对该存储器提出访问请求,则将访问权限授予提出访问请求的存储控制单元中优先级最高的存储控制单元;
3)如果被请求的存储器正在被访问,则访问请求不能被响应,等到存储器空闲后,再根据上述第1)和2)条策略确定被授予访问权限的存储控制单元。
这种仲裁策略的缺点在于:某存储控制单元一旦获得访问权限,其他存储控制单元只能等到该存储器再次空闲后,才能获得对该存储器的访问权限。
对于从存储器130读数据的情况,如果存储控制单元110等待的时间过长,与存储控制单元110连接的应用侧设备将无法按时获取数据,那么存储控制单元110与应用侧设备之间将出现数据断流。其中,应用侧设备是指需要从存储器130读取数据和/或需要向存储器130写入数据的设备,例如液晶显示器(LCD,Liquid Crystal Display)。图2为采用图1示出的存储器访问仲裁系统为LCD提供显示数据的系统结构示意图。如图2所示,该系统包括存储控制单元110、仲裁单元120、存储器130以及LCD140。其中,存储控制单元110与作为应用侧设备的LCD140相连,向LCD140提供显示数据。存储控制单元110包括控制模块111和先进先出(FIFO,First In FirstOut)缓存模块112,简称FIFO112。控制模块111将请求访问存储器130的访问请求发送给仲裁单元120。当访问请求被响应后,在控制模块111的控制下,通过存储控制单元110与存储器130之间的总线1(BUS1)将读取的数据缓存到FIFO112中。在FIFO112中有数据时,LCD140通过总线2(BUS2)不断从FIFO112中读取数据,并进行显示,当FIFO112中没有数据时,BUS2上出现数据断流,LCD140读取不到数据,其现象是LCD140闪烁或图像停滞。通常,BUS1的带宽大于BUS2的带宽,例如,BUS1与BUS2带宽之比为4:1。那么,在相同时间内,BUS1上传输的数据量是BUS2的4倍。如果存储控制单元110从存储器130中一次读取16个Clk(Clk为BUS1的时钟周期)的数据并缓存在FIFO112中,那么LCD140需要64个Clk才能读取完FIFO112中缓存的数据。因此存储控制单元110只能等待64个Clk,64个Clk后,FIFO112中的数据被读完,如果此时向存储器130发起的访问请求还没有得到响应,那么BUS2上产生断流,并造成LCD140的闪烁或图像停滞。
仲裁策略二
该仲裁策略根据优先级决定访问顺序且支持中断。由于可以中断当前服务,转向为其他存储控制单元服务,令存储控制单元不必等待太长的时间,因此能够避免仲裁策略一可能导致的数据断流。具体而言,仲裁单元120在接收到存储控制单元110存储器130发起的访问请求后,根据以下仲裁策略决定被授予访问权限的存储控制单元:
1)如果被请求的存储器空闲,且当前只有一个存储控制单元对该存储器提出访问请求,则将访问权限授予提出访问请求的存储控制单元;
2)如果被请求的存储器空闲,且当前有至少2个存储控制单元对该存储器提出访问请求,则首先将访问权限授予提出访问请求的存储控制单元中优先级最高的存储控制单元;然后在以后的服务时间中,多个提出访问请求的存储控制单元按优先级顺序被轮流服务,每个存储控制单元被服务的时间由仲裁单元根据预设的服务时间确定。当前被服务的存储控制单元的被服务时长达到仲裁单元120的服务时间时,仲裁单元将访问权限分配给下一个存储控制单元110。
例如,设置一种访问场景1,存储控制单元A、B和C的优先级顺序为A>B>C,需要传输的数据分别需要20、15和10个Clk完成,且仲裁单元的服务时间为10Clk。当A、B和C同时提出访问请求时,在仲裁策略二下,各存储控制单元被服务的时间为:A(10Clk)→B(10Clk)→C(10Clk)→A(10Clk)→B(5Clk)。
3)如果被请求的存储器正在被访问,则等待本次服务时间超时后,再根据本策略中的第1)和2)条策略确定被授予访问权限的存储控制单元。
仲裁策略二提供了一种中断原服务的可能,令提出访问请求的存储控制单元110能够被及时响应,避免了因无法按时获取数据而造成的数据断流。但是其缺点在于,在没有传输完数据的情况下,原服务会被频繁中断。存储器的结构多采用如图3示出的行(ROW)结构,每个ROW都对应一个存储控制单元。如图3所示,在上述访问场景1中,将存储控制单元A、B和C的数据分别保存在ROW1、ROW2和ROW3中。在获得存储器的访问权限进入服务时,需要占用长度为3个Clk的打开时间打开相应的ROW,当退出服务时,还需要占用长度为3个Clk的关闭时间关闭相应的ROW,那么,一次服务的切换将占用6个Clk的时间。可见,频繁的中断服务会额外增加很多退出和进入服务的时间,这些额外增加的时间并非用于存储器的访问,因此是额外时间开销。可见,额外的时间开销降低了存储器的访问效率。
综上所述,现有的存储器访问仲裁方案不能在避免数据断流的同时,提高存储器的访问效率。
发明内容
有鉴于此,本发明提供了一种存储器访问的仲裁方法,能够在避免数据断流的同时,提高存储器的访问效率。
该方法包括:
在接收到存储控制单元对存储器的访问请求后,确定提出所述访问请求的存储控制单元的最迟响应时间;所述存储控制单元的最迟响应时间为:该存储控制单元在无数据断流的情况下还能够等待的最长时间;
判断被请求的存储器是否正在被访问;
如果所述存储器空闲且提出访问请求的存储控制单元为至少2个,则将访问权限授予提出访问请求的存储控制单元中最迟响应时间最短者;
如果所述存储器正在被访问,则确定所述存储器的还需服务时间,判断所述还需服务时间是否小于或等于提出访问请求的存储控制单元的最迟响应时间,如果是,则继续该存储器当前的服务;否则,中断该存储器当前的服务,从提出访问请求的存储控制单元中确定出被授予访问权限的存储控制单元,并授予访问权限。
其中,所述确定存储器的还需服务时间为:确定当前拥有访问权限的存储控制单元中的待传输剩余数据量,将传输该剩余数据量的时间确定为所述存储器的还需服务时间。
其中,所述从提出访问请求的存储控制单元中确定出被授予访问权限的存储控制单元包括:判断是否只有1个存储控制单元提出所述访问请求,如果是,则将提出访问请求的存储控制单元确定为被授予访问权限的存储控制单元;否则,将提出访问请求的存储控制单元中最迟响应时间最短者确定为被授予访问权限的存储控制单元。
较佳地,该方法进一步包括:预先为每个存储控制单元设置用于计算最迟响应时间的计数器;
所述中断该存储器当前的服务之后,进一步包括:重新确定被中断服务的存储控制单元的最迟响应时间初始值,将重新确定的最迟响应时间初始值赋值给被中断服务的存储控制单元对应的计数器,并令被赋值计数器递减计数。
较佳地,该方法进一步包括:预先为每个存储控制单元设置用于计算最迟响应时间的计数器;在存储控制单元提出访问请求的同时,确定提出访问请求的存储控制单元的最迟响应时间初始值,赋值给与提出访问请求的存储控制单元对应的计数器,并令被赋值的计数器递减计数;
确定提出访问请求的存储控制单元的最迟响应时间为:将提出访问请求的存储控制单元对应的计数器当前的计数值作为存储控制单元的最迟响应时间。
其中,为每个存储控制单元设置的所述用于计算最迟响应时间的计数器设置于对应的存储控制单元中,或者设置于仲裁单元中。
较佳地,预先为每个存储控制单元设置至少2个最迟响应时间初始值;所述存储控制单元的最迟响应时间初始值的确定方式为:根据需确定最迟响应时间的存储控制单元中的剩余缓存数据量,从预先设置的至少2个最迟响应时间初始值中选择与当前剩余缓存数据量对应的一个,作为赋值给计数器的最迟响应时间初始值。
其中,所述在接收到存储控制单元对存储器的访问请求后,进一步包括:在判定被请求的存储器空闲且只有1个存储控制单元提出所述访问请求时,将访问权限授予该提出访问请求的存储控制单元。
其中,所述将访问权限授予提出访问请求的存储控制单元中最迟响应时间最短者为:当判定有至少2个访问请求的最迟响应时间为最短时,确定响应最迟响应时间最短的各存储控制单元的所需服务时间,将访问权限授予所需服务时间最短的存储控制单元;所述存储控制单元的所需服务时间根据该存储控制单元中所需处理的待传输数据量确定。
较佳地,所述将访问权限授予提出访问请求的存储控制单元中最迟响应时间最短者之后,进一步包括:存储器当前服务结束之后,在判定当前存在等待响应的存储控制单元时,将访问权限授予等待响应的存储控制单元中最迟响应时间最短者。
本发明还提供了一种存储器访问的仲裁方法,在避免数据断流的同时,能够提高存储器的访问效率。
该方法包括:
在接收到存储控制单元对存储器的访问请求后,确定提出访问请求的存储控制单元的最迟响应时间;所述存储控制单元的最迟响应时间为:该存储控制单元在无数据断流的情况下还能够等待的最长时间;
在所述存储器正在被访问时,确定所述存储器的还需服务时间,判断所述还需服务的时间是否小于或等于提出访问请求的存储控制单元的最迟响应时间,如果是,则继续该存储器当前的服务;否则,中断该存储器当前的服务,从提出访问请求的存储控制单元中确定出被授予访问权限的存储控制单元,并授予访问权限;所述确定所述存储器的还需服务时间为:确定当前拥有所述存储器的访问权限的存储控制单元中的待传输剩余数据量,将传输该剩余数据量的时间确定为所述存储器的还需服务时间。
本发明还提供了一种存储器访问的仲裁设备,能够在避免数据断流的同时,提高存储器的访问效率。
该设备包括:最迟响应时间确定模块和仲裁模块;其中,
所述最迟响应时间确定模块,用于接收存储控制单元对存储器的访问请求,确定提出所述访问请求的存储控制单元的最迟响应时间,将所确定的最迟响应时间和所接收的访问请求发送给仲裁模块;所述存储控制单元的最迟响应时间为:该存储控制单元在无数据断流的情况下还能够等待的最长时间;
所述仲裁模块包括判断子模块和授权子模块;
所述判断子模块,用于接收所述最迟响应时间和访问请求,判断被请求的存储器是否空闲,确定当前提出访问请求的存储控制单元的个数,将空闲与否以及所确定的个数作为判断结果发送给授权子模块;
所述授权子模块,用于在所述判断结果指示被请求的存储器空闲且当前提出访问的存储控制单元的个数为至少2个时,将访问权限授予提出访问请求的存储控制单元中最迟响应时间最短者;在所述判断结果指示被请求的存储器正在被访问时,确定所述存储器的还需服务时间,判断所述还需服务时间是否小于或等于各存储控制单元的最迟响应时间,如果是,则继续该存储器当前的服务,否则,中断该存储器当前的服务,从提出访问请求的存储控制单元中确定出被授予访问权限的存储控制单元,并授予访问权限;
所述确定所述存储器的还需服务时间为:确定当前拥有所述存储器的访问权限的存储控制单元中的待传输剩余数据量,将传输该剩余数据量的时间确定为所述存储器的还需服务时间。
本发明还提供了另一种存储器访问的仲裁设备,能够在避免数据断流的同时,提高存储器的访问效率。
该设备包括:最迟响应时间确定模块和仲裁模块;其中,
所述最迟响应时间确定模块,用于接收存储控制单元对存储器的访问请求,确定提出所述访问请求的存储控制单元的最迟响应时间和所接收的访问请求,将所确定的最迟响应时间发送给仲裁模块;所述存储控制单元的最迟响应时间为:该存储控制单元在无数据断流的情况下还能够等待的最长时间;
所述仲裁模块,用于接收所述最迟响应时间和访问请求,当所述存储器正在被访问时,确定所述存储器的还需服务时间,判断所述还需服务时间是否小于或等于提出访问请求的存储控制单元的最迟响应时间,如果是,则继续该存储器当前的服务;否则,中断该存储器当前的服务,从提出访问请求的存储控制单元中确定出被授予访问权限的存储控制单元,并授予访问权限;所述确定所述存储器的还需服务时间为:确定当前拥有所述存储器的访问权限的存储控制单元中的待传输剩余数据量,将传输该剩余数据量的时间确定为所述存储器的还需服务时间。
本发明提供了一种存储器访问的仲裁系统,能够在避免数据断流的同时,提高存储器的访问效率。该系统包括仲裁单元和至少2个存储控制单元;
所述存储控制单元,用于在向仲裁单元发送访问请求时,确定最迟响应时间,将所确定的最迟响应时间发送给仲裁单元;所述最迟响应时间为该存储控制单元在无数据断流的情况下还能够等待的最长时间;
所述仲裁单元,接收各存储控制单元发送的访问请求和各存储控制单元的最迟响应时间,在被请求的存储器空闲且提出访问请求的存储控制单元为至少2个时,将访问权限授予提出访问请求的存储控制单元中最迟响应时间最短者;在被请求的存储器正在被访问时,确定所述存储器的还需服务时间,判断所述还需服务时间是否小于或等于各存储控制单元的最迟响应时间,如果是,则继续该存储器当前的服务,否则,中断该存储器当前的服务,从提出访问请求的存储控制单元中确定出被授予访问权限的存储控制单元,并授予访问权限;所述确定所述存储器的还需服务时间为:确定当前拥有所述存储器的访问权限的存储控制单元中的待传输剩余数据量,将传输该剩余数据量的时间确定为所述存储器的还需服务时间。
本发明又提供了一种存储器访问的仲裁系统,能够在避免数据断流的同时,提高存储器的访问效率。该系统包括仲裁单元和至少2个存储控制单元;
所述存储控制单元,用于在向仲裁单元发送访问请求时,确定最迟响应时间,将所确定的最迟响应时间发送给仲裁单元;所述最迟响应时间为该存储控制单元在无数据断流的情况下还能够等待的最长时间;
所述仲裁单元,接收各存储控制单元发送的访问请求和各存储控制单元的最迟响应时间,在被请求的存储器正在被访问时,确定所述存储器的还需服务时间,判断所述还需服务时间是否小于或等于各存储控制单元的最迟响应时间,如果是,则继续存储器当前的服务;否则,中断存储器当前的服务,从提出访问请求的存储控制单元中确定出被授予访问权限的存储控制单元,并授予访问权限;所述确定所述存储器的还需服务时间为:确定当前拥有所述存储器的访问权限的存储控制单元中的待传输剩余数据量,将传输该剩余数据量的时间确定为所述存储器的还需服务时间。
根据以上技术方案可见,应用本发明能够在避免数据断流的同时,提高存储器的访问效率。具体来说,具有如下有益效果:
1、当多个存储控制单元向同一存储器发出访问请求后,根据各存储控制单元的最迟响应时间决定应该被授予访问权限的存储控制单元。由于最迟响应时间为存储控制单元在无数据断流的情况下还能够等待的最长时间,因此,在存储控制单元的最迟响应时间到达之前授予该存储控制单元访问权限,可以保证该存储控制单元不出现数据断流。同时,由于没有在仲裁单元中设置服务时间,因此在没有新访问请求的情况下,获得访问权限的存储控制单元可以将数据传输完,避免了现有的每隔一个服务时间被服务的存储控制单元被中断而造成的服务被频繁中断的缺陷,因此提高了存储器的访问效率。
2、该方案允许原服务被中断,但是在中断之前,根据存储器的还需服务时间以及发起新访问请求的存储控制单元的最迟响应时间确定是否要执行中断,在新访问请求能够等待一段时间的情况下,不会中断存储器当前的服务,极大程度的降低了中断频率,减少了服务退出和进入的时间,从而进一步提高了对存储器的访问效率。
其次,本发明通过设置对应于存储控制单元的计数器,在提出访问请求或服务被中断时,将计数器赋值为最迟响应时间的初始值,并在被授予访问权限之前的等待期间,令计数器递减计数。那么,该可以方便的提供存储控制单元在不出现数据断流的情况下还能够等待的最长时间,使得本方案实现简单。而且,计数器可以设置在各存储控制单元中,或统一设置在仲裁单元中,因此提高了提供最迟响应时间的灵活性。
另外,本发明根据存储控制单元中的剩余缓存数据量来确定最迟响应时间的初始值,提高了所确定最迟响应时间的准确程度,进一步保证了不出现数据断流的情况。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
本发明为一种存储器访问仲裁方案,其基本思想为:在接收到对存储器的访问请求后,确定提出该访问请求的存储控制单元的最迟响应时间,在被请求的存储器空闲且提出访问请求的存储控制单元为至少2个时,将访问权限授予提出访问请求的存储控制单元中最迟响应时间最短者。采用本发明能够在避免数据断流的情况下,提高存储器的访问效率。
此外,如果仲裁单元判定存储器正在被访问,则确定所述存储器的还需服务时间,判断该还需服务时间是否小于或等于提出访问请求的各存储控制单元的最迟响应时间,如果是,则继续当前服务;否则,中断当前服务,将访问权限授予提出访问请求的存储控制单元中的一个。可见,本发明存储器访问仲裁方案提供了中断服务的可能,但在中断之前根据还需服务时间以及提出新访问请求的存储控制单元的最迟响应时间确定是否要执行中断,在新访问请求能够等待一段时间的情况下,不会中断存储器当前的服务,极大程度的降低了中断频率,减少了服务退出和进入的时间,从而进一步提高了对存储器的访问效率。
图4为本发明实施例中存储器访问仲裁方法的流程图,如图4所示,该方法包括以下步骤:
步骤401:仲裁单元在接收到对存储器的访问请求后,确定提出所述访问请求的存储控制单元的最迟响应时间。
步骤402:判断被请求的存储器是否正在被访问,如果是,则执行步骤403;否则执行步骤407。
步骤403:确定被请求的存储器的还需服务时间。
步骤404:判断所确定的还需服务时间是否小于或等于提出访问请求的存储控制单元的最迟响应时间,如果是,则执行步骤406;否则,执行步骤405。
步骤405:中断存储器当前的服务,从提出访问请求的存储控制单元中确定出被授予访问权限的存储控制单元,并授予访问权限,本流程结束。
本步骤中,如果只有一个存储控制单元提出访问请求,那么将访问权限授予提出访问请求的存储控制单元;如果有至少2个存储控制单元同时提出了访问请求,那么确定这些存储控制单元中最迟响应时间最小的一个,并授予访问权限。
步骤406:继续存储器当前的服务,本流程结束。
步骤407:将访问权限授予提出访问请求的存储控制单元中最迟响应时间最短的一个。
本步骤中,如果只有一个存储控制单元提出访问请求,那么直接将访问权限授予该存储控制单元即可。
以上流程中,最迟响应时间是指提出访问请求的存储控制单元在无数据断流的情况下还能够等待的最长时间,该最长时间与存储控制单元和存储器之间总线BUS1的带宽以及存储控制单元和其所连接的应用侧设备之间的总线BUS2的带宽有关,还与存储控制单元中FIFO的剩余缓存数据量有关。如图2所示的典型应用,假设BUS1的带宽与BUS2的带宽之比为8:1,那么存储控制单元110在16个Clk内从存储器130中读取的数据可以供LCD140使用128个Clk,那么,存储控制单元110即使每隔64个Clk读取一次,也不会造成数据断流。因此,可以设置64Clk作为该存储控制单元110的最迟响应时间。但是,如果在发送访问请求时,存储控制FIFO112中的数据量已经不够供LCD140使用64个Clk,那么为了准确的计算出最迟响应时间,可以根据FIFO112中的剩余数据量来调整当前最迟响应时间。例如,此时FIFO112中的剩余缓存数据量为32个字(WORD),对于BUS1来说,每个字的传输时间为1个Clk,那么对于BUS2来说每个字的传输时间为8个Clk。那么,FIFO112中的32个字可以供LCD140读取32×8=256个Clk,则将最迟响应时间设为256Clk。为了确保在从存储器获取数据的时间内不发生断流,给存储控制单元留出一段从存储器读取数据的时间,可以适当减少最迟响应时间,例如对于8:1的带宽之比,选择32×(8-1)=224Clk作为最迟响应时间。当然,也可以根据实际情况或其他需要采用预先设置其他数值作为最迟响应时间,只要保证在该最迟响应时间到达之前,应用侧设备不会产生数据断流即可。
本流程结束后,如果当前服务结束,且判定还存在正在等待响应的存储控制单元,那么将访问权限授予等待响应的存储控制单元中最迟响应时间最短的存储控制单元。
根据上述流程,采用图4的仲裁方法,当存储控制单元向同一存储器发出访问请求后,根据各存储控制单元的最迟响应时间决定应该被授予访问权限的存储控制单元。由于最迟响应时间为存储控制单元在无数据断流的情况下还能够等待的最长时间,因此,在存储控制单元的最迟响应时间到达之前授予该存储控制单元访问权限,可以保证该存储控制单元不出现数据断流。同时,该方案允许原服务被中断,但是在中断之前,根据还需服务时间以及发起新访问请求的存储控制单元的最迟响应时间确定是否要执行中断,在新访问请求能够等待一段时间的情况下,不会中断存储器当前的服务,极大程度的降低了中断频率,减少了服务退出和进入的时间,从而提高了对存储器的访问效率。
图5为本发明另一实施例中存储器访问仲裁方法的流程图。如图5所示,该方法包括以下步骤:
步骤500:仲裁单元接收存储控制单元发起访问请求。
步骤501:确定提出访问请求的各存储控制单元的最迟响应时间。
本步骤中,最迟响应时间可以由存储控制单元提供。各存储控制单元在发起访问请求时,确定最迟响应时间并提供给仲裁单元。在发起访问请求时提供的最迟响应时间并不是固定不变的,如果访问请求在一段时间内没有被响应,那么最迟响应时间也随时间减少。为了保证最迟响应时间的准确性,在提出的访问请求没有被响应的等待期间,存储控制单元按等待时间递减最迟响应时间,并实时提供给仲裁单元。因此,在发起访问请求时确定的最迟响应时间为最迟响应时间的初始值。
实际中,也可以由仲裁单元提供各存储控制单元的最迟响应时间。在存储控制单元提出访问请求后,仲裁单元从自身获取提出访问请求的存储控制单元的最迟响应时间的初始值,并在该存储控制单元提出的访问请求没有被响应的等待期间,按等待时间递减最迟响应时间。
步骤502:仲裁单元判断被请求的存储器是否正在被访问,如果是,则执行步骤503,否则,执行步骤510。
步骤503:确定该存储器的还需服务时间。
本步骤中,首先确定当前获得访问权限的存储控制单元中的待传输剩余数据量,将传输该剩余数据量的时间确定为所述存储器的还需服务时间。例如,存储器当前服务的对象是存储控制单元N,该存储控制单元N还有16个Clk的数据还未传输,那么该存储器的还需服务时间为16Clk。
步骤504:判断步骤503确定的还需服务时间是否小于或等于各存储控制单元的最迟响应时间;如果是,则执行步骤511;否则,执行步骤505。
步骤505:中断存储器当前服务,从提出访问请求的存储控制单元中确定出被授予访问权限的存储控制单元,并授予访问权限,然后开始当前服务。
本步骤中,从提出访问请求的存储控制单元中确定出被授予访问权限的存储控制单元的步骤具体为:判断当前提出访问请求的存储控制单元是否为一个,如果是,则直接将该存储控制单元确定为被授予访问权限的存储控制单元;否则,将当前提出访问请求的存储控制单元中最迟响应时间最小的一个确定为被授予访问权限的存储控制单元。
本步骤中,如果有至少两个最迟响应时间相同且均为最小的存储控制单元,那么确定最迟响应时间为最小的各存储控制单元所需服务时间,并将访问权限授予所需服务时间最小的存储控制单元。这里,所需服务时间是根据存储控制单元所需处理的待传输数据量而定。待传输数据量小,则所需服务时间少;反之,所需服务时间多。
对于被中断的服务,将其访问请求转入等待响应的状态。此时,重新确定该存储控制单元的最迟响应时间,并在后续等待响应期间按时间递减该最迟响应时间。本步骤中最迟响应时间的确定方式与步骤501相同。在由存储控制单元提供最迟响应时间的情况下,中断存储器当前服务后,仲裁单元将中断事件通知给被中断服务的存储控制单元,并接收被中断服务的存储控制单元重新确定的最迟响应时间。
步骤506:递减等待响应的各存储控制单元的最迟响应时间。
步骤507:判断当前服务是否结束;如果是,则执行步骤508;否则,继续当前服务,并执行步骤506。
步骤508:在仍存在等待响应的存储控制单元的情况下,将访问权限授予等待响应的各存储控制单元中最迟响应时间最小的一个,返回步骤506。如果不存在等待响应的存储控制单元,那么结束本流程,存储器空闲。
步骤510:根据步骤501所确定的最迟响应时间,从提出访问请求的存储控制单元中确定出被授予访问权限的存储控制单元,授予访问权限,并开始服务,执行步骤506。
本步骤510中,首先判断是否只有一个存储控制单元提出访问请求,如果是,则将访问权限授予该存储控制单元,否则,将访问权限授予提出访问请求的最迟响应时间最小的存储控制单元。如果有至少两个最迟响应时间相同且均为最小的存储控制单元,与前述步骤505相同,将访问权限授予具有最小最迟响应时间的存储控制单元中所需服务时间最小的一个。
步骤511:继续当前服务,并执行步骤506。
至此,本流程结束。
在实际中,也可以在步骤501之前就判断是否只有一个存储控制单元提出访问请求并且被请求的存储器为空闲,如果判断为是,则直接将访问权限授予该访问控制单元,然后转向执行步骤507;否则,执行步骤501。
在以上两个实施例中,各存储控制单元的最迟响应时间都可以由存储控制单元或仲裁单元提供。采用存储控制单元提供最迟响应时间的方式实现比较简单,只需要在每个存储控制单元中设置一个用于计算最迟响应时间的递减计数器,并将递减计数器的值实时发送给仲裁单元即可,减轻了仲裁单元的负担。在这种方式下,当存储控制单元提出新的访问请求时,将该存储控制单元中的递减计数器赋值为最迟响应时间的初始值并随访问请求发送给仲裁单元。在等待被响应期间,存储控制单元令递减计数器递减计数同时实时的发送给仲裁单元。等待时间越长,递减计数器的值越小,表明最迟响应时间越短。当某个存储控制单元的服务被中断,被中断服务的存储控制单元也会重新确定最迟响应时间的初始值,然后赋值给递减计数器,并开始向仲裁单元提供递减计数器的值。在等待响应期间,令递减计数器递减计数。当访问请求被响应后,存储控制单元停止计数器的计数并停止发送计数器的值。
最迟响应时间的初始值是预先设置并保存在存储控制单元中的,在确定最迟响应时间的初始值时可以直接使用预先设置好的数值。存储控制单元能够等待的最长时间还与存储控制单元中的剩余缓存有关,剩余缓存越少,最迟响应时间越短。例如,最迟响应时间的初始值是64Clk,FIFO中可以缓存64个Clk的数据,如果FIFO已满,那么可以等待64Clk,如果FIFO半满,当等待32Clk之后就会出现数据断流。那么,在确定最迟响应时间的初始值时,还需要根据FIFO中的剩余缓存数据量确定最迟响应时间的初始值。在这种情况下,可以针对FIFO中剩余缓存数据量的不同,预先设置多个最迟响应时间的初始值,在需要确定最迟响应时间的初始值时,从多个初始值中选择与当前剩余缓存数据量对应的一个,作为最迟响应时间的初始值,并赋值给递减计数器。其中,剩余缓存数据量可以采用剩余缓存数据量占总缓存数据量的比例表示。
下面举一个存储控制单元确定最迟响应时间的实例。设最迟响应时间为d0,剩余缓存数据量长度为Fifo.denth,Fifo.denth采用剩余缓存数据量占缓存总数据量的比例表示,当FIFO为全满时d0=60Clk。
当存储控制单元发起一个新的访问请求时,需要确定d0,如果Fifo.denth>0.75,则d0=60Clk;如果0.5≥Fifo.denth>0.75,则d0=40Clk;如果0.25≥Fifo.denth>0.5,则d0=20Clk;如果0.25≥Fifo.denth>0,则d0=0Clk。
当存储控制单元等待被响应期间,令d0=d0-1。
当存储控制单元已经获得的服务被中断,重新根据Fifo.denth以及上述策略重新确定d0,并在等待被响应期间,令d0=d0-1。
存储控制单元会实时的将其确定的d0发送给仲裁单元。
以上所描述的是存储控制单元确定最迟响应时间并提供给仲裁单元的方式。在采用仲裁单元提供最迟响应时间时,需要预先在仲裁单元中保存每个存储控制单元的最迟响应时间初始值,并为每个存储控制单元设置一个递减计数器。这种方式下,当仲裁单元接收到某个存储控制单元提出的访问请求时,由仲裁单元从自身获取预设的该存储控制单元的最迟响应时间初始值并赋值给对应的递减计数器,并在该存储控制单元被授予访问权限之前,令递减计数器递减计数。当某个存储控制单元的服务被中断,此时仲裁单元也会重新确定被中断服务的存储控制单元的最迟响应时间的初始值,为递减计数器赋值,并在等待响应期间内令递减计数器递减计数。当访问请求被响应后,仲裁单元停止被响应的存储控制单元中递减计数器计数。
该仲裁单元确定最迟响应时间初始值的方式与前述存储控制单元确定最迟响应时间初始值的方式相同。如果在确定最迟响应时间时考虑到存储控制单元的FIFO剩余缓存数据量,那么还需要从相应的存储控制单元中获取其FIFO的剩余缓存数据量。
这种仲裁单元提供最迟响应时间的方式,不用修改现有的存储控制单元,因此可以利用现有的存储控制单元实现本发明的存储器访问仲裁方案。
基于以上两个实施例所描述的技术方案,以下举多个实例来说明使用本发明存储器访问仲裁方法的效果。
首先仍以背景技术中的访问场景1为例,对采用本发明的存储器访问仲裁方法进行说明。在访问场景1中,存储控制单元A、B和C需要传输的数据分别需要20、15和10个Clk完成,存储控制单元A、B和C的最迟响应时间分别为d0A=60Clk、d0B=50Clk和d0C=20Clk。图6为在访问场景1中应用本发明存储器访问仲裁方法的访问过程示意图。如图6所示,当A、B和C同时提出访问请求时,采用本发明的仲裁方案,首先将访问权限授予最迟响应时间最短的存储控制单元C,并开始服务。在服务C的时间段内,存储控制单元A和B等待响应,其各自的最迟响应时间随等待时间的增加而减少。当存储控制单元C的10个Clk的数据传输完成后,d0A=60-10=50Clk、d0B=50-10=40Clk;此时,将访问权限授予最迟响应时间较短的存储控制单元B,并开始服务。在服务B的时间段内,存储控制单元A等待响应,其各自的最迟响应时间随等待时间的增加而减少。当存储控制单元B的15个Clk的数据传输完成后,d0A=50-15=35Clk,此时将访问权限授予存储控制单元A,并开始服务,直到数据传输完毕。可见,在场景1中,各存储控制单元被服务的时间为:C(10Clk)→B(15Clk)→A(20Clk),没有出现数据断流且服务没有被中断。在相同访问场景下,如果采用背景技术中的仲裁策略二,各存储控制单元被服务的时间为A(10Clk)→B(10Clk)→C(10Clk)→A(10Clk)→B(5Clk)。可见,采用本发明实施例的存储器访问仲裁方法,能够有效地减少服务被中断的次数,从而提高了存储器的访问效率。如果采用背景技术中的仲裁策略一,在A的优先级为最高的情况下,会先服务A,那么当A退出服务时开始服务B,此时C已经发生了数据断流。可见,采用本发明实施例的存储器访问仲裁方法,由于各访问请求被响应的时刻都没有超过最迟响应时间,因此不会造成应用侧设备的数据断流。
下面以访问场景2为例,对采用本发明的存储器访问仲裁方法进行说明。假设,在访问场景2中,存储控制单元A、B和C需要传输的数据分别需要20、15和10个Clk完成,存储控制单元A、B和C的最迟响应时间分别为d0A=60Clk、d0B=50Clk和d0C=20Clk。图7为在访问场景2中应用本发明存储器访问仲裁方法的访问过程示意图。如图7所示,当A和B同时向空闲的存储器提出访问请求时,将访问权限授予最迟响应时间较小的存储控制单元B,并开始服务。10个Clk后,存储控制单元C提出访问请求,此时,d0A=60-10=50Clk,d0C=20Clk,存储器还需服务存储控制单元B的时间为5Clk,那么根据本发明的仲裁方法,继续当前服务,存储控制单元A和C等待。当存储控制单元B的剩余5个Clk的数据传输完成后,d0A=50-5=45Clk,d0C=20-5=15Clk;此时,将访问权限授予最迟响应时间较短的存储控制单元C,并开始服务。在服务C的时间段内,存储控制单元A等待响应,其最迟响应时间随等待时间的增加而减少。当存储控制单元C的10个Clk的数据传输完成后,d0A=45-10=35Clk,此时将访问权限授予存储控制单元A,并开始服务,直到数据传输完毕。可见,在访问场景2中,各存储控制单元被服务的时间为:B(15Clk)→C(10Clk)→A(20Clk),没有出现数据断流且服务没有被中断。在相同访问场景下,如果采用背景技术中的仲裁策略二,各存储控制单元被服务的时间为:B(10Clk)→A(10Clk)→B(5Clk)→C(10Clk)→A(10Clk),A和B的服务都被中断。可见采用本发明实施例的存储器访问仲裁方法,能够有效地减少服务被中断的次数,从而提高了存储器的访问效率。如果采用背景技术中的仲裁策略一,在A的优先级为最高的情况下,各存储控制单元被服务的时间为:B(15Clk)→A(20Clk)→C(10Clk),C会发生数据断流。可见,采用本发明实施例的存储器访问仲裁方法,由于各访问请求被响应的时刻都没有超过最迟响应时间,因此不会造成应用侧设备的数据断流。
下面以访问场景3为例,对采用本发明的存储器访问仲裁方法进行说明。假设,在访问场景3中,存储控制单元A、B和C需要传输的数据分别需要35、15和10个Clk完成,存储控制单元A、B和C的最迟响应时间分别为d0A=60Clk、d0B=50Clk和d0C=20Clk。图8为在访问场景3中应用本发明存储器访问仲裁方法的访问过程示意图。如图8所示,当A向空闲的存储器提出访问请求时,获得访问权限并开始传输数据。10个Clk后,存储控制单元B和C同时提出访问请求,且d0B=50Clk,d0C=20Clk,存储器还需服务存储控制单元A的时间为35-10=25Clk,那么根据本发明的仲裁方法,中断当前服务,授予存储控制单元C访问权限并开始服务。在服务C的时间段内,存储控制单元A和B等待响应,存储控制单元A的最迟响应时间从重新确定的初始值开始并随等待时间的增加而减少,例如根据前述最迟响应时间的初始值确定方法确定出d0A=60Clk,则从60开始递减,存储控制单元B的最迟响应时间从d0B=50Clk开始并随等待时间的增加而减少。当存储控制单元C的10个Clk的数据传输完成后,d0A=60-10=50Clk,d0B=50-10=40Clk,则将访问权限授予最迟响应时间较短的存储控制单元B,并开始服务。在服务B的时间段内,存储控制单元A等待响应,其最迟响应时间从d0A=50开始随等待时间的增加而减少。当存储控制单元B的15个Clk的数据传输完成后,d0A=50-15=35Clk,此时将访问权限授予存储控制单元A,并开始服务,直到数据传输完毕。可见,在访问场景3中,各存储控制单元被服务的时间为:A(10Clk)→C(10Clk)→B(15Clk)→A(25Clk)。在相同访问场景下,如果采用背景技术中的仲裁策略二,各存储控制单元被服务的时间为:A(10Clk)→B(10Clk)→C(10Clk)→A(10Clk)→B(5Clk)→A(15Clk),A的服务被中断2次,B的服务被中断1次。可见,采用本发明实施例的存储器访问仲裁方法,虽然A的服务被中断了一次,但相较于采用现有技术服务被频繁中断的情况来说,采用本发明方案依然能够有效的减少服务被中断的次数,从而提高存储器被访问的效率。如果采用背景技术中的仲裁策略一,在A的优先级为最高的情况下,各存储控制单元被服务的时间为:A(35Clk)→B(15Clk)→C(10Clk),C会发生数据断流。可见,采用本发明实施例的存储器访问仲裁方法,由于各访问请求被响应的时刻都没有超过最迟响应时间,因此不会造成应用侧设备的数据断流。
从以上3个实例可见,本发明的存储器访问仲裁方法确实能够在避免数据断流的同时,有效的提高存储器的访问效率。
为实现本发明的存储器访问仲裁方法,本发明还提供了一种存储器访问仲裁系统。图9为本发明实施例中存储器访问仲裁系统的结构示意图。如图9所示,该系统包括仲裁单元920和至少2个存储控制单元910;其中,
各存储控制单元910,将请求访问存储器的访问请求发送给仲裁单元920。
仲裁单元920,接收来自各存储控制单元910的访问请求,确定发起访问请求的存储控制单元910的最迟响应时间,在被请求的存储器空闲且提出访问请求的存储控制单元为至少2个时,将访问权限授予提出访问请求的存储控制单元910中最迟响应时间最短的存储控制单元910。如果被请求的存储器正在被访问,确定该存储器的还需服务时间,判断所确定的还需服务时间是否小于或等于提出访问请求的各存储控制单元910的最迟响应时间,如果是,则继续存储器当前的服务;否则,中断存储器当前的服务,从提出访问请求的存储控制单元910中确定出被授予访问权限的存储控制单元,并授权访问权限。
该仲裁单元920可以从自身获取预设的各存储控制单元910的最迟响应时间;也可以根据从各存储控制单元910获取其提供的最迟响应时间。采用后者方式,各存储控制单元910需要在发起的访问请求的同时向仲裁单元920发送其最迟响应时间,并在访问请求被响应之前持续发送。
图10为图9中仲裁单元920的结构示意图。如图10所示,该仲裁单元920包括最迟响应时间确定模块921、仲裁模块922和执行模块923。其中,
最迟响应时间确定模块921,用于接收来自各存储控制单元910的对存储器的访问请求,确定提出访问请求的各存储控制单元910的最迟响应时间,将所确定的最迟响应时间发送给仲裁模块922。
该最迟响应时间确定模块921具体包括接收子模块9211和确定子模块9212。其中,接收子模块9211用于接收来自各存储控制单元910访问请求以及各存储控制控制单元910提供的最迟响应时间,将接收的最迟响应时间发送给确定子模块9212;确定子模块9212将接收到的最迟响应时间确定为存储控制单元的最迟响应时间。
仲裁模块922,用于接收来自确定子模块9212的最迟响应时间,根据提出访问请求的存储控制单元的最迟响应时间,判断授予哪个存储控制单元访问权限,并将仲裁结果发送给执行模块923。该仲裁模块922具体包括判断子模块9221和授权子模块9222。其中,判断子模块9221判断被请求的存储器是否空闲,如果判定被请求的存储器正在被访问,还需要进一步确定当前提出访问的存储控制单元的个数,将判断结果发送给授权子模块9222。
授权子模块9222根据所接收的判断结果进行相应的授权操作。具体而言,当判断结果指示被请求的存储器空闲且当前提出访问请求的存储控制单元910的个数为1个时,将访问权限授予该提出访问的存储控制单元910;当判断结果指示被请求的存储器空闲且当前提出访问的存储控制单元910的个数为至少2个时,将访问权限授予提出访问请求的存储控制单元910中最迟响应时间最短者;当判断结果指示被请求的存储器正在被访问时,确定被请求的存储器的还需服务时间,判断该还需服务时间是否小于或等于各存储控制单元910的最迟响应时间,如果是,则继续存储器当前的服务;否则,中断存储器当前的服务,从提出访问请求的存储控制单元中确定出被授予访问权限的存储控制单元910,并授予访问权限。该授权子模块9222还将以上仲裁结果发送给执行模块923。
执行模块923,用于根据接收到的仲裁结果执行相应操作。具体而言,当某个存储控制单元910被授予访问权限时,该执行模块923将被授予权限的存储控制单元910通知给相应的存储器;当当前服务被中断并将访问权限授予某个存储控制单元910时,该执行模块923将中断事件通知给被中断服务的存储控制单元910,那么,被中断服务的存储控制单元910可以根据中断事件通知,重新确定最迟响应时间,并提供给仲裁单元920中的最迟响应时间确定模块921。
如前所述,仲裁单元920还可以从自身获取预设的最迟响应时间的初始值。在这种方式下,采用图11示出的仲裁单元920的结构示意图。如图11所示,该仲裁单元920仍然包括最迟响应时间确定模块921、仲裁模块922和执行模块923。与图10示出的仲裁单元不同之处在于,图11示出的仲裁单元920中的最迟响应时间确定模块921包括存储子模块1101和确定子模块1102。其中,存储子模块1101用于保存各存储控制单元的最迟响应时间初始值;确定子模块1102用于接收各存储控制单元提供的访问请求,从存储子模块1101中获取提出访问请求的存储控制单元的最迟响应时间初始值,并将确定的最迟响应时间初始值提供给仲裁模块922。在提出访问请求的存储控制单元等待响应期间,将该存储控制单元的最迟响应时间从其初始值开始递减,并实时提供给仲裁模块922。
在这种情况下,仲裁模块922与图10中仲裁模块922的功能和组成相同。执行模块923与图10中执行模块923的功能相似,不同之处在于,当接收的仲裁结果指示中断存储器当前的服务时,将中断事件通知给确定子模块1102,使得确定子模块1102重新确定最迟响应时间的初始值,并在被中断服务的存储控制单元等待响应期间,从初始值开始递减。
当最迟响应时间由仲裁单元920提供时,图9中的存储控制单元910可以采用现有的设备。当最迟响应时间由存储控制单元910提供时,需要采用本发明提出的存储控制单元。以下对本发明提出的存储控制单元进行详细描述。
图12为图9中存储控制单元910的结构示意图。如图12所示,该存储控制单元910包括控制模块911和缓存模块912,还包括最迟响应时间提供模块913。其中,
控制模块911,用于在向仲裁单元920发送访问请求的同时,将发起访问请求事件通知给最迟响应时间提供模块913。在接收到仲裁单元920发送的中断事件后,将中断事件通知给最迟响应时间提供模块913。
缓存模块912用于缓存数据。
最迟响应时间提供模块913,在控制模块911的通知下,确定最迟响应时间,并发送给仲裁单元920。
最迟响应时间提供模块913具体包括设置子模块9131和递减计数器9132。
设置子模块9131在接收到来自控制模块911的发起访问请求的通知后,从所述缓存模块912中获取剩余缓存数据量,根据所获取的剩余缓存数据量从预先设置的至少2个最迟响应时间初始值中选择与当前剩余缓存数据量对应的一个,将所选择的初始值赋值给递减计数器9132,并启动该递减计数器9132。在访问请求被响应之前,不断将递减计数器9132的值发送给仲裁单元920。在接收到来自控制模块911的中断事件通知后,重新确定最迟响应时间的初始值,并赋值给递减计数器9132,然后启动该递减计数器9132,在访问请求被再次响应之前,不断将递减计数器9132的值发送给仲裁单元920。
由以上所述可以看出,本发明所提供的存储器访问仲裁方案,能够在不造成数据断流的情况下,提高存储器的访问效率。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。