缓存及其控制方法与流程

文档序号:11177061阅读:182来源:国知局
缓存及其控制方法与流程

本发明涉及缓存技术领域,具体涉及一种缓存及其控制方法。



背景技术:

嵌入式片上系统(systemonchip,soc)中,一般采用eeprom或闪存(flash)等非易失性存储器(non-volatilememory,nvm)作为存储指令的存储器。微处理器(mcu)通过读取nvm中的指令并执行,完成系统设计、运行等功能。

通常情况下,mcu执行的速度比nvm的读取速度快得多,导致mcu经常处于读取指令的等待状态,这使得读取指令的速度成为片上系统、尤其是高性能片上存储系统的瓶颈。

在系统设计中,解决这一技术问题的主流方案是采用指令缓存(instructioncache,简称cache)。通过在cache内存储mcu频繁访问的数据及这些数据的存储地址,当mcu引用nvm中的某地址时,cache便先检查是否存有该地址。若存有该地址,则将对应的指令返回mcu,否则mcu从nvm中获取对应的指令。

由于cache的读取速度比nvm快得多,因此,当访问的数据在cache中找到,即命中时,mcu可以直接从cache中读取对应的数据,而无需访问速度较慢的nvm。如果cache的命中率足够高,mcu近似于直接从ram中读取指令,因而整体读取速度可以大大提高。

在实际应用中,嵌入式soc的应用需求多种多样,如何根据特定的应用需求,选择最合适的cache结构和参数,是嵌入式soc设计者面临的一个很大挑战。为此,在嵌入式soc的cache设计中,通常需要对所设计的缓存的工作过程进行模拟,用于评估不同的结构和参数对最终cache性能的影响。

然而,现有的cache结构在模拟过程中,仅能得到cache的命中率,而cache的命中率不能反映cache真实性能,最终导致cache性能评估的准确性较低。



技术实现要素:

本发明解决的技术问题是如何设计cache结构以提高cache性能评估的准确性。

为解决上述技术问题,本发明实施例提供一种缓存,所述缓存包括:控制单元和存储区,其中:

所述存储区,包括第一子区,所述第一子区适于存储存储地址的标识信息以及对应的使用频度信息,所述第一子区所存储的存储地址的使用频度均大于预设频度;

所述控制单元包括:提取子单元,适于当接收到访问缓存请求时,从所述访问缓存请求中提取待访问的数据的存储地址;地址划分子单元,适于对所述提取子单元所提取的存储地址进行划分,获得所述存储地址对应的缓存块的地址信息;第一处理子单元,适于根据所述存储地址对应的缓存块的地址信息,搜索所述第一子区;根据搜索结果判断所述存储地址在所述第一子区中是否命中;第一执行子单元,适于根据所述存储地址在所述第一子区中是否命中的判断结果,获取相应的数据并返回。

可选地,所述存储区还包括:第二子区,适于存储与所述第一子区所存储的存储地址对应的数据;

所述第一执行子单元包括:第一执行模块,适于更新所述第一子区中存储的信息,以及从所述第二子区中读取对应数据并返回。

可选地,所述存储区还包括:第三子区,适于存储预取的数据及对应的缓存块的地址信息;

所述第一执行子单元包括:第一处理模块以及第二执行模块,所述第一处理模块适于当所述存储地址在所述第一子区中未命中时,根据所述缓存块的地址信息搜索所述第三子区中存储的信息;根据搜索结果判断所述存储地址在所述第三子区中是否命中;所述第二执行模块,适于根据所述存储地址在所述第三子区中是否命中的判断结果,获取相应的数据并返回。

可选地,所述第二执行模块包括:

第一执行子模块,适于当所述存储地址在所述第三子区中命中时,更新所述第一子区及第二子区中存储的信息,从所述第三子区中读取对应的数据并返回;按照预设顺序从nvm中进行数据预取,并将预取到的数据存储在所述第三子区中;

第二执行子模块,适于当所述存储地址在所述第三子区中未命中时,从所述nvm中读取对应的数据并返回,以及更新所述第三子区中存储的信息。

可选地,所述第二执行子模块适于当所述第一子区的对应位置处均已存储相应的信息时,采用如下步骤更新所述第一子区:根据所述第一子区中各缓存块的使用频度信息,按照预先获取到的替换算法,对所述第一子区的缓存块进行替换,将在所述第三子区中命中的缓存块的标识信息以及对应的使用频度信息写入至被替换的位置。

可选地,所述存储器还包括:第四子区,适于存储前一次在所述第一子区中命中时所对应的缓存块的地址信息;

所述控制单元还包括:第二处理子单元及第二执行子单元,其中:所述第二处理子单元,适于在所述根据所述存储地址对应的缓存块的地址信息,搜索第一子区之前,根据所述存储地址对应的缓存块的地址信息搜索所述第四子区,判断所述存储地址在所述第四子区中是否命中;所述第二执行子单元,适于当所述存储地址在所述第四子区中命中时,从所述第二子区中读取对应的数据并返回;所述第一处理模块适于当所述存储地址在所述第四子区中未命中时,搜索所述第一子区,并根据搜索结果判断所述存储地址在所述第一子区中是否命中。

可选地,所述缓存块的地址信息包括:所述缓存块的标识信息及地址索引信息。

本发明实施例还提供了一种缓存的控制方法,所述方法包括:

当接收到访问缓存请求时,从所述访问缓存请求中提取待访问的数据的存储地址;对所述存储地址进行划分,获得所述存储地址对应的缓存块的地址信息;根据所述存储地址对应的缓存块的地址信息,搜索第一子区,所述第一子区适于存储存储地址的标识信息以及对应的使用频度信息,所述第一 子区所存储的存储地址的使用频度均大于预设频度;根据搜索结果判断所述存储地址在所述第一子区中是否命中;根据所述存储地址在所述第一子区中是否命中的判断结果,获取相应的数据并返回。

可选地,所述根据所述存储地址在所述第一子区中是否命中的判断结果,获取相应的数据并返回,包括:

当所述存储地址在所述第一子区中命中时,更新所述第一子区中存储的信息,以及从第二子区中读取对应数据并返回,其中,所述第二子区适于存储与所述第一子区所存储的存储地址对应的数据。

可选地,所述根据所述存储地址在所述第一子区中是否命中的判断结果,获取相应的数据并返回,包括:

当所述存储地址在所述第一子区中未命中时,根据所述缓存块的地址信息搜索第三子区中存储的信息,所述第三子区适于存储预取的数据及对应的缓存块的地址信息;根据搜索结果判断所述存储地址在所述第三子区中是否命中;根据所述存储地址在所述第三子区中是否命中的判断结果,获取相应的数据并返回。

可选地,所述根据所述存储地址在所述第三子区中是否命中的判断结果,获取相应的数据并返回,包括:

当所述存储地址在所述第三子区中命中时,更新所述第一子区及第二子区中存储的信息,从所述第三子区中读取对应的数据并返回;按照预设顺序从nvm中进行数据预取,并将预取到的数据存储在所述第三子区中;当所述存储地址在所述第三子区中未命中时,从所述nvm中读取对应的数据并返回,以及更新所述第三子区中存储的信息。

可选地,当所述第一子区的对应位置处均已存储相应的信息时,所述更新所述第一子区包括:

根据所述第一子区中各缓存块的使用频度信息,按照预先获取到的替换算法,对所述第一子区的缓存块进行替换,将在所述第三子区中命中的缓存块的标识信息以及对应的使用频度信息写入至被替换的位置。

可选地,在所述根据所述存储地址对应的缓存块的地址信息,搜索第一子区之前,所述方法还包括:

根据所述存储地址对应的缓存块的地址信息搜索第四子区,所述第四子区适于存储前一次在所述第一子区中命中时所对应的缓存块的地址信息;并根据搜索结果判断所述存储地址在所述第四子区中是否命中;当所述存储地址在所述第四子区中命中时,从所述第二子区中读取对应的数据并返回,否则搜索所述第一子区。

可选地,所述缓存块的地址信息包括:所述缓存块的标识信息及地址索引信息。

与现有技术相比,本发明实施例的技术方案具有以下有益效果:

通过地址划分子单元对访问缓存请求中待访问的数据的存储地址进行划分,获得存储地址对应的缓存块的地址信息,进而第一处理子单元可以根据所述存储地址对应的缓存块的地址信息搜索第一子区,最终第一执行子单元根据所述存储地址在所述第一子区中是否命中的判断结果,获取相应的数据并返回。采用上述缓存的结构进行性能评估时,可以计算得到该缓存的平均访存时间,进而根据缓存的平均访存时间评估该缓存的性能。相对于缓存的命中率,缓存的平均访存时间更能反映缓存的真实加速效果,因此利用上述缓存结构进行缓存性能评估的准确性也就更高。

通过设置第三子区,并且由第一处理模块在所述存储地址在所述第一子区中未命中时,根据所述缓存块的地址信息搜索所述第三子区中存储的信息,进而根据搜索结果判断所述存储地址在所述第三子区中是否命中,再由第二执行模块根据所述存储地址在所述第三子区中是否命中的判断结果,获取相应的数据并返回。由于第三子区适于存储预取的数据及对应的缓存块的地址信息,因此可以进一步减少对第一子区的访问次数,降低读取功耗及平均访存时间。

通过设置第四子区,并且由第二处理子单元在所述根据所述存储地址对应的缓存块的地址信息,搜索第一子区之前,根据所述存储地址对应的缓存块的地址信息搜索所述第四子区,先判断所述存储地址在所述第四子区中是 否命中,再由第二执行子单元在所述存储地址在所述第四子区中命中时,从所述第二子区中读取对应的数据并返回。由于第四子区适于存储前一次在所述第一子区中命中时所对应的缓存块的地址信息,因此可以进一步减少对第一子区及第二子区的访问次数,降低读取功耗及平均访存时间。

附图说明

图1是本发明实施例中一种缓存模拟方法流程图;

图2是本发明实施例中一种缓存模拟过程的原理示意图;

图3是本发明实施例中一种缓存模拟装置的结构示意图;

图4是本发明实施例中另一种缓存模拟方法流程图;

图5是本发明实施例中另一种缓存模拟过程的原理示意图;

图6是本发明实施例中另一种缓存模拟装置的结构示意图;

图7是本发明实施例中不同结构的缓存对平均访存时间的影响示意图。

具体实施方式

在实际应用中,嵌入式soc的应用场景各种各样,各种应用场景的特点都不尽相同,特定结构的cache很难保证在不同的应用场景之间具有通用性。另外,嵌入式soc的设计不仅需要考虑系统的性能,系统的功耗、面积和成本也是设计者需要考虑的问题。因此,在嵌入式soc的cache设计中,通常需要对所设计的cache进行模拟,用于评估不同的应用需求下,各种结构和参数对最终cache加速效果的影响。

然而,现有的cache结构在模拟过程中,仅能得到cache的命中率,而cache的命中率不能反映cache真实性能,最终导致cache性能评估的准确性较低。

针对上述问题,本发明实施例提供了一种缓存,所述缓存通过地址划分子单元对访问缓存请求中待访问的数据的存储地址进行划分,获得存储地址对应的缓存块的地址信息,进而第一处理子单元可以根据所述存储地址对应的缓存块的地址信息搜索第一子区,最终第一执行子单元根据所述存储地址在所述第一子区中是否命中的判断结果,获取相应的数据并返回。采用上述 缓存的结构进行性能评估时,可以计算得到该缓存的平均访存时间,进而根据缓存的平均访存时间评估该缓存的性能。相对于缓存的命中率,缓存的平均访存时间更能反映缓存的真实加速效果,因此利用上述缓存结构进行缓存性能评估的准确性也就更高。

为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。

参照图1,本发明实施例提供了一种缓存的模拟方法,所述方法可以包括如下步骤:

步骤101,判断是否接收到访问缓存请求。

在设置有cache的嵌入式soc中,mcu在访问相应的数据时,向cache发送相应的访问缓存请求,由cache根据所述访问缓存请求获取相应的数据,再将所获取到的数据返回至mcu。

当接收到所述访问缓存请求时,执行步骤102,否则继续执行步骤101。

步骤102,从所述访问缓存请求中提取待访问的数据的存储地址。

在具体实施中,所述访问缓存请求中通常包含待访问数据的存储地址。其中,所述存储地址为所述待访问的数据在nvm中的存储地址。

步骤103,对所述存储地址进行划分,获得所述存储地址对应的缓存块的地址信息。

在设置有cache的嵌入式soc中,cache通常包括若干个cache块,每个cache块的大小相等。相似地,所述待模拟的缓存也设置有若干个缓存块,每个缓存块的大小相等。每个存储地址对应一缓存块。所述存储地址通常为所对应的缓存块的起始地址信息。

在具体实施中,对所述存储地址进行划分时,通常可以获得如下三部分信息:所述存储地址对应的cache块的标识信息和地址索引信息,以及所述存储地址在所述cache块中的偏移信息。其中,所述cache块的标识信息和地址索引信息,作为所述cache块地址信息。

具体地,所述cache块的标识信息可以唯一标识一cache块,通常为所 述存储地址的高位。通过所述地址索引信息可以在相应的存储区中的到所述cache块的信息。所述偏移信息为所述存储地址在所述cache块中的偏移量。根据获取到的所述待模拟cache的容量、cache块大小及相联度等信息,可以在所述存储地址中分别获得对应的cache块的标识信息和地址索引信息,以及所述存储地址在所述对应的cache块中的偏移信息。

步骤104,根据所述存储地址对应的缓存块的地址信息,搜索第一子区,并根据搜索结果判断所述存储地址在所述第一子区中是否命中。

在具体实施中,所述第一子区适于存储存储地址的标识信息以及对应的使用频度信息,所述第一子区所存储的存储地址的使用频度均大于预设频度。也就是说,所述第一子区适于存储mcu经常使用的存储地址的标识信息及相应的使用频度。其中,所述预设频度可以根据mcu的实际访问数据的情况进行设置。

在具体实施中,所述第一子区可以划分为多个组,每组中可以存储多个存储地址的标识信息以及对应的使用频度信息。其中,所述第一子区中组的数量与cache的相联度相关,比如,cache的相联度为4时,所述第一子区包含4组。当cache的相联度为2时,所述第一子区包含2组。每组中可以存储的存储地址的标识信息的数量,与所述第一子区所存储的存储地址的总数和组数相关。比如,当所述第一子区所存储的存储地址的总数为20,cache的相联度为4时,每组中可以存储的存储地址的标识信息为5个。当所述第一子区所存储的存储地址的总数为20,cache的相联度为2时,每组中可以存储的存储地址的标识信息为10个。

在具体实施中,根据所述存储地址对应的cache块的地址索引信息,搜索所述第一子区中存储的信息,由此可以获得所述第一子区中各组在相应位置上的标识信息。

在具体实施中,获得第一子区中各组在相应位置上的标识信息后,分别将搜索到的标识信息与所述存储地址对应的cache块的标识信息进行比较。当二者相同时,判定所述存储地址在所述第一子区中命中,否则表示所述存储地址在第一子区中缺失,则判定所述存储地址在所述第一子区中未命中。

当所述存储地址在所述第一子区中命中时,执行步骤105,否则执行步骤106。

步骤105,更新所述第一子区中存储的信息,以及从第二子区中读取对应数据并返回。

在具体实施中,所述第二子区适于存储与所述第一子区所存储的存储地址对应的数据。当所述存储地址在所述第一子区中命中时,更新所述第一子区中所述存储地址对应的cache块的使用频度信息,以及从所述第二子区中读取相应的数据并返回。

需要说明的是,在具体实施中,所述第二子区也可以分为多组,每组中存储的数据与所述第一子区中各组所存储的cache块的标识信息相对应。执行步骤104的同时,可以同时执行读取所述第二子区的操作,最终根据步骤104的判断结果,将所述第二子区中对应的数据返回至mcu。

需要说明的是,在具体实施中,执行更新所述第一子区中存储的信息的操作,以及执行从第二子区中读取对应数据并返回的操作,不存在实现顺序的限制,二者既可以同时执行,也可以顺序执行。

步骤106,根据所述缓存块的地址信息搜索第三子区中存储的信息,并根据搜索结果判断所述存储地址在所述第三子区中是否命中。

在具体实施中,所述存储地址在所述第一子区中未命中时,表示所述存储地址在第一子区中缺失。根据所述cache块的地址索引信息,搜索所述第三子区,可以获得所述第三子区对应位置上的数据及所述数据对应的cache块的标识信息。将所述存储地址对应cache块的标识信息与搜索到的标识信息进行比较,当二者相同时,判定所述存储地址在所述第三子区中命中,否则判定所述存储地址在所述第三子区中未命中。

其中,所述第三子区适于存储预取的数据及对应的cache块的地址索引信息及标识信息。所述预取的数据可以仅为一个,也可以为多个,具体不受限制。

当所述存储地址在所述第三子区中命中时,执行步骤107,否则执行步骤108。

步骤107,更新所述第一子区及第二子区中存储的信息,从所述第三子区中读取对应的数据并返回。

在具体实施中,当所述存储地址在所述第三子区中命中时,可以先根据在所述第三子区中命中的数据所对应的cache块的地址索引信息,确定所述第一子区中对应的位置是否已存储相应的信息。

若所述第一子区中有某一组中对应的位置未存储相应的信息,则将在所述第三子区中命中的数据所对应的cache块的标识信息以及对应的使用频度信息写入至该位置。

若所述第一子区所有组中对应的位置均已存储相应的信息,则可以根据所述第一子区中各cache块的使用频度信息,按照预先获取到的替换算法,对所述第一子区的cache块进行替换,将在所述第三子区中命中的缓存块的标识信息以及对应的使用频度信息写入至被替换的位置。

需要说明的是,在具体实施中,所述替换算法可以是为先进先出替换算法(fifo),也可以为lru,还可以为二叉树伪lru替换算法(pseudo-lru)。当然,还可以为其他替换算法,具体不作限制。

更新所述第一子区后,将在所述第三子区中命中的数据写入至所述第二子区的相应位置处。从第三子区中读取所命中的数据并返回至mcu。需要说明的是,更新所述第一、第二子区以及向mcu返回数据的操作既可以同时执行,也可以顺序执行。

从所述第三子区读取所命中的数据后,按照预设顺序从nvm中进行数据预取,并将预取到的数据存储在所述第三子区中,即通过数据预取更新所述第三子区。

需要说明的是,在具体实施中,从nvm中进行数据预取的顺序不受限制。比如,所述预设顺序可以为:在所访问存储地址上加1。可以理解的是,具体采用何种顺序从nvm中进行数据预取,均不构成对本发明的限制,且均在本发明的保护范围之内。

步骤108,从所述nvm中读取对应的数据并返回,以及更新所述第三子区中存储的信息。

在具体实施中,所述存储地址在所述第三子区中未命中时,表示所述存储地址在所述第三子区中缺失,此时,从所述nvm中读取对应的数据并返回至mcu,并更新所述第三子区中存储的信息,也就是将从nvm中读取的数据写入至所述第三子区。将从nvm中读取的数据写入至所述第三子区可以进一步缩短在缓存中读取数据的。

为了使本领域技术人员更好地理解和实现本发明,下面结合图2,对上述缓存模拟过程的工作原理进行详细描述。

如图2所示,以所述缓存的相联度为2、nvm为flash为例,所述第一子区包括两个组,每组中分别存储若干个存储地址的标识信息tag及对应的使用频度信息repinfo。第二子区中包括两个组,每组中存储的数据与所述第一子区中各组所存储的存储地址的标识信息对应。

接收到mcu发送的访问缓存请求后,提取所述访问缓存请求中的存储地址addr。接着,对所述存储地址addr进行划分,分别获得对应的标识信息tag、地址索引信息index及偏移信息offset。根据所述地址索引信息index搜索第一子区,并判断所述存储地址addr是否在所述第一子区中命中。同时读取所述第二子区。若在第一子区中命中,则从第二子区中搜索到的数据中选择一个并返回至mcu,否则搜索第三子区中存储的信息。

若在第三子区中命中,则直接从第三子区中读取相应的数据并返回至mcu,否则从flash中读取相应的数据并返回至mcu。

由上述内容可以看出,采用上述实施例中的方法控制缓存时,由于通过所述方法可以给mcu在各存储区命中所需的时间,进而可以计算出存储系统的平均访存时间,该指标反映了缓存的真实加速效果,因此更有利于准确地进行缓存性能的估计。

为了使本领域技术人员更好地理解和实现本发明,以下对上述缓存的控制方法对应的缓存进行详细描述。

参照图3,本发明实施例还提供了一种缓存,所述缓存可以包括:控制单元及存储区,其中:所述控制单元包括:提取子单元31,地址划分子单元32,第一处理子单元33及第一执行子单元34。所述存储区包括:第一子区351。 所述第一子区351适于存储存储地址的标识信息以及对应的使用频度信息,所述第一子区351所存储的存储地址的使用频度均大于预设频度。

具体地,所述提取子单元31适于当接收到访问缓存请求时,从所述访问缓存请求中提取待访问的数据的存储地址

所述地址划分子单元32,适于对所述存储地址进行划分,获得所述存储地址对应的缓存块的地址信息;

第一处理子单元33,适于根据所述存储地址对应的缓存块的地址信息,搜索所述第一子区351;根据搜索结果判断所述存储地址在所述第一子区351中是否命中;

第一执行子单元34,适于根据所述存储地址在所述第一子区351中是否命中的判断结果,获取相应的数据并返回。

在具体实施中,所述缓存块的地址信息包括:所述缓存块的标识信息及地址索引信息。

在具体实施中,所述存储区还包括:第二子区352。所述第二子区352适于存储与所述第一子区351所存储的存储地址对应的数据。所述第一执行子单元34包括:第一执行模块341,适于更新所述第一子区351中存储的信息,以及从所述第二子区352中读取对应数据并返回。

在具体实施中,所述存储区还可以包括:第三子区353,适于存储预取的数据及对应的缓存块的地址信息。

相应地,所述第一执行子单元34包括:第一处理模块342以及第二执行模块343,所述第一处理模块342适于当所述存储地址在所述第一子区351中未命中时,根据所述缓存块的地址信息搜索所述第三子区353中存储的信息;根据搜索结果判断所述存储地址在所述第三子区353中是否命中。述第二执行模块343,适于根据所述存储地址在所述第三子区353中是否命中的判断结果,获取相应的数据并返回。

在具体实施中,所述第二执行模块343包括:第一执行子模块3431及第二执行子模块3432。其中:

所述第一执行子模块3431,适于当所述存储地址在所述第三子区353中命中时,更新所述第一子区351及第二子区352中存储的信息,从所述第三子区353中读取对应的数据并返回;按照预设顺序从nvm中进行数据预取,并将预取到的数据存储在所述第三子区353中。

所述第二执行子模块3432,适于当所述存储地址在所述第三子区353中未命中时,从所述nvm中读取对应的数据并返回,以及更新所述第三子区353中存储的信息。

在具体实施中,所述第二执行子模块3432适于当所述第一子区351的对应位置处均已存储相应的信息时,采用如下步骤更新所述第一子区351:根据所述第一子区351中各缓存块的使用频度信息,按照预先获取到的替换算法,对所述第一子区351的缓存块进行替换,将在所述第三子区353中命中的缓存块的标识信息以及对应的使用频度信息写入至被替换的位置。

由上述内容可以看出,本发明实施例中所述的缓存,提取子单元31可以在接收到访问缓存请求时,从所述访问缓存请求中提取待访问数据的存储地址,进而由所述地址划分子单元32对所述存储地址进行划分,获得所述存储地址对应的缓存块的地址信息,从而所述第一处理子单元33可以根据所述存储地址对应的缓存块的地址信息,搜索所述第一子区351,并根据搜索结果判断所述存储地址在所述第一子区351中是否命中,最终由第一执行子单元34根据所述存储地址在所述第一子区351中是否命中的判断结果,获取相应的数据并返回。采用上述缓存进行性能评估时,可以计算得到该缓存的平均访存时间,进而根据缓存的平均访存时间评估该缓存的性能,提高缓存性能评估的准确性。

参照图4,本发明的另一实施例还提供了一种缓存的控制方法。所述方法可以包括如下步骤:

步骤401,判断是否接收到访问缓存请求。

当接收到所述访问缓存请求时,执行步骤402,否则继续执行步骤401。

步骤402,从所述访问缓存请求中提取待访问的数据的存储地址。

步骤403,对所述存储地址进行划分,获得所述存储地址对应的缓存块的 地址信息。

需要说明的是,在具体实施中,步骤401~403可以分别参照上述对步骤101~103的描述进行实施,此处不再赘述。

步骤404,根据所述存储地址对应的缓存块的地址信息搜索所述第四子区,并根据搜索结果判断所述存储地址在所述第四子区中是否命中。

在具体实施中,所述第四子区适于存储前一次在所述第一子区中命中时所对应的cache块的地址信息。搜索所述第四子区,获得前一次在所述第一子区中命中时对应的cache块的地址信息,并将其与所述存储地址对应的缓存块的地址信息进行比较。若二者相同,则所述存储地址在所述第四子区中命中,否则未命中。

当所述存储地址在所述第四子区中命中时,执行步骤405,否则执行步骤406。

步骤405,从所述第二子区中读取对应的数据并返回。

由于mcu访问前一次在所述第一子区中命中的存储地址的频度较高,因此,在搜索第一子区之前,通过先判断所述存储地址在所述第一子区中是否命中,且在命中时,直接从第二子区中读取对应的数据并返回,可以进一步减少mcu访问所述缓存的时间。

步骤406,根据所述存储地址对应的缓存块的地址信息,搜索第一子区,并根据搜索结果判断所述存储地址在所述第一子区中是否命中。

当所述存储地址在所述第一子区中命中时,执行步骤407,否则执行步骤408。

步骤407,更新所述第一子区及第四子区中存储的信息,以及从第二子区中读取对应数据并返回。

需要说明的是,在本发明的实施例中,当所述存储地址在所述第一子区中命中时,除更新所述第一子区外,还要更新所述第四子区,以使得所述第四子区中所存储的地址信息始终为前一次在所述第一子区中命中的地址信息。

步骤408,根据所述缓存块的地址信息搜索第三子区中存储的信息,并根 据搜索结果判断所述存储地址在所述第三子区中是否命中。

当所述存储地址在所述第三子区中命中时,执行步骤409,否则执行步骤410。

步骤409,更新所述第一子区、第二子区及第四子区中存储的信息,从所述第三子区中读取对应的数据并返回。

需要说明的是,在本发明的实施例中,当所述存储地址在所述第三子区中命中时,除更新所述第一子区及第二子区外,还要更新所述第四子区,以使得所述第四子区中所存储的地址信息始终为前一次在所述第一子区中命中的地址信息。

步骤410,从所述nvm中读取对应的数据并返回,以及更新所述第三子区中存储的信息。

需要说明的是,在具体实施中,可以分别参照上述对步骤关于步骤104~108的描述实施步骤406~410,此处不再赘述。

为了使本领域技术人员更好地理解和实现本发明,下面结合图5,对上述缓存模拟过程的工作原理进行详细描述。

如图5所示,以所述缓存的相联度为4、nvm为flash为例,所述第一子区包括4个组,每组中分别存储若干个存储地址的标识信息tag及对应的使用频度信息repinfo。第二子区中仅包括1个组,每组中存储的数据与所述第一子区中各组所存储的存储地址的标识信息对应。

接收到mcu发送的访问缓存请求后,提取所述访问缓存请求中的存储地址addr。接着,对所述存储地址addr进行划分,分别获得对应的标识信息tag、地址索引信息index及偏移信息offset。

根据所述地址索引信息index搜索第四子区,并判断所述存储地址在所述第四子区是否命中。若在所述第四子区命中,则从所述第二子区中搜索相应的数据并返回至mcu,否则根据所述地址索引信息index搜索第一子区。

判断所述存储地址addr是否在所述第一子区中命中,若在第一子区中命中,则从第二子区中搜索相应的数据并返回至mcu,否则搜索第三子区中存 储的信息。

若在第三子区中命中,则直接从第三子区中读取相应的数据并返回至mcu,否则从flash中读取相应的数据并返回至mcu。

由上述内容可知,通过设置第四子区,在对访问缓存请求中的存储地址进行划分后,先判断所述存储地址在所述第四子区中是否命中,再依次判断在第一子区及第三子区中是否命中,可以有效减少第一子区及第二子区的读取次数,降低缓存的读取功耗,进一步减少mcu访问所述缓存所需的时间。并且,由于该缓存在运行过程中,可以计算得到在各存储区命中所需的时间,进而可以计算出该缓存的平均访存时间,该指标反映了该缓存的真实加速效果,因此更有利于准确地进行缓存性能的估计。

为了使本领域技术人员更好地理解和实现本发明,以下对上述缓存的控制方法对应的缓存进行详细描述。

参照图6,本发明实施例提供了一种缓存。相对于图3示出的缓存,所述存储区还包括:第四子区354,适于存储前一次在所述第一子区351中命中时所对应的缓存块的地址信息。

此时,所述控制单元还包括:第二处理子单元36及第二执行子单元37。其中:

所述第二处理子单元36,适于在所述根据所述存储地址对应的缓存块的地址信息,搜索第一子区351之前,根据所述存储地址对应的缓存块的地址信息搜索所述第四子区354,判断所述存储地址在所述第四子区354中是否命中;

所述第二执行子单元37,适于当所述存储地址在所述第四子区354中命中时,从所述第四子区354中读取对应的数据并返回。

所述第一处理子单元33适于当所述存储地址在所述第四子区354中未命中时,搜索所述第一子区351,并根据搜索结果判断所述存储地址在所述第一子区351中是否命中。

为了使本领域人员更加清楚、直观地理解和实现本发明,将上述实施例 中不同结构的缓存对平均访存时间t的影响进行了比对。

参照图6及图7,将所述cache应用在aes中,不断调整所述cache的配置参数,对上述实施例中不同结构的缓存对平均访存时间t的影响进行仿真,获得如图7所示的仿真实验结果。其中,图7的横轴表示平均访存时间,纵轴表示所述cache不同组的配置参数。需要说明的是,纵轴上给出的标识用于区分所述cache的各组配置参数,并非实际的配置参数值。

如图7所示,曲线1为mcu直接从flash中读取数据所需的平均访存时间曲线,曲线2、3及4为mcu经所述cache获取待访问数据所需的平均访存时间曲线。其中,曲线2为所述cache中设置第一执行模块3431,但未设置第四子区354时,对应的平均访存时间曲线;曲线3为所述cache中未设置第一执行模块3431、第一子区351、第二子区352及第三子区353,仅设置有第四子区354时,所对应的平均访存时间曲线;曲线4为所述cache中同时设置有第一执行模块3431、第一子区351、第二子区352、第三子区353及第四子区354时,所对应的平均访存时间曲线。

从图7中可以看出,在相同配置参数的情况下,曲线1对应的平均访存时间<曲线2对应的平均访存时间<曲线3对应的平均访存时间<曲线4对应的平均访存时间。也就是说,应用本发明实施例中的cache可以减小mcu访问数据时所需的平均访存时间,并且,调整cache的结构,可以对平均访存时间产生一定的影响,尤其第四子区354的设置,使得mcu访问数据时所需的平均访存时间最小。

由上述内容可以看出,本发明实施例中所述缓存,通过设置第四子区354,进而可以在所述第一处理子单元33根据所述存储地址对应的缓存块的地址信息,搜索第一子区351之前,先由第二处理子单元36判断所述存储地址在所述第四子区354中是否命中,进而再由所述第一处理子单元在所述存储地址在所述第四子区354中未命中时,搜索所述第一子区351,并根据搜索结果判断所述存储地址在所述第一子区351中是否命中,可以进一步缩短mcu访问缓存所需的时间。采用上述结构的缓存性能评估时,可以计算得到该缓存的平均访存时间,进而根据缓存的平均访存时间评估该缓存的性能,提高缓存性能评估的准确性。另外,相对于图3中示出的缓存结构,可以有效减少第 一子区及第二子区的读取次数,降低缓存的读取功耗。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:rom、ram、磁盘或光盘等。

虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1