本发明涉及缓存设计技术领域,具体涉及一种缓存的模拟方法及装置。
背景技术:
嵌入式片上系统(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是本发明实施例中另一种缓存模拟装置的结构示意图。
具体实施方式
在实际应用中,嵌入式soc的应用场景各种各样,各种应用场景的特点都不尽相同,特定结构的cache很难保证在不同的应用场景之间具有通用性。另外,嵌入式soc的设计不仅需要考虑系统的性能,系统的功耗、面积和成本也是设计者需要考虑的问题。因此,在嵌入式soc的cache设计中,通常需要对所设计的cache进行模拟,用于评估不同的应用需求下,各种结构和参数对最终cache加速效果的影响。
然而,在利用现有的cache模拟方法进行cache性能评估时,根据模拟过程仅能得到cache的命中率,而cache的命中率不能反映cache真实加速效果,最终导致cache性能评估的准确性较低。
针对上述问题,本发明实施例提供了一种缓存的模拟方法,所述方法可以在获取到待模拟的缓存的配置参数时,通过对访问缓存请求中待访问的数据的存储地址进行划分,获得存储地址对应的缓存块的地址信息,进而可以根据所述存储地址对应的缓存块的地址信息搜索第一存储区,最终根据所述存储地址在所述第一存储区中是否命中的判断结果,获取相应的数据并返回。采用上述模拟方法进行缓存性能评估时,可以计算得到所模拟的各个缓存的平均访存时间,进而根据缓存的平均访存时间评估该缓存的性能。相对于缓存的命中率,缓存的平均访存时间更能反映缓存的真实加速效果,因此利用上述缓存模拟方法进行缓存性能评估的准确性也就更高。
为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
参照图1,本发明实施例提供了一种缓存的模拟方法,所述方法可以包括如下步骤:
步骤101,判断是否接收到访问缓存请求。
在设置有cache的嵌入式soc中,mcu在访问相应的数据时,向cache发送相应的访问缓存请求,由cache根据所述访问缓存请求获取相应的数据,再将所获取到的数据返回至mcu。因此,在模拟缓存的工作流程时,通常先要接收到mcu的访问缓存请求。
当接收到所述访问缓存请求时,执行步骤102,否则继续执行步骤101。
步骤102,从所述访问缓存请求中提取待访问的数据的存储地址。
在具体实施中,所述访问缓存请求中通常包含待访问数据的存储地址。其中,所述存储地址为所述待访问的数据在nvm中的存储地址。
步骤103,获取待模拟的缓存的配置参数。
在具体实施中,所述配置参数既包含所述待模拟的cache的特征参数,又包含可以影响所述待模拟的cache性能的系统参数。其中,所述待模拟的cache的特征参数可以包括:所述待模拟的cache的容量、cache块的大小,cache相联度以及替换算法等参数。影响所述待模拟的cache性能的系统参数可以包括:nvm、cache及mcu三者的读取时间、读取功耗及数据位宽等。当然,所述配置参数还可以包括其他参数,并不局限于上述实施例所给出的参数。并且,所获取到的配置参数中可以仅包含一个参数,也可以包含两个或两个以上的参数。
在具体实施中,所述配置参数适于基于所述待模拟的cache的应用需求进行配置。也就是说,所获取到的配置参数与所述待模拟的cache的应用需求相对应。所述待模拟的cache的应用需求不同,所获取到的配置参数也就不同。例如,当所述待模拟的cache应用在aes加密算法中时,所述配置参数可以为:cache容量2kbyte,cache块大小16byte,cache相联度2,最近最少使用(lru)替换算法等。当所述待模拟的cache应用在dhrystone程序下时,所述配置参数可以为:cache容量512byte,cache块大小16byte,cache相联度1等。
在具体实施中,所述配置参数的参数可以通过多种方式进行获取,比如,所述配置参数可以是用户输入的,也可以是通过访问其它存储介质获取到的。当然,还可以存在其它获取方式,只要所获取到的配置参数与具体的应用需求相对应即可。
步骤104,对所述存储地址进行划分,获得所述存储地址对应的缓存块的地址信息。
在设置有cache的嵌入式soc中,cache通常包括若干个cache块,每个cache块的大小相等。相似地,所述待模拟的缓存也设置有若干个缓存块,每个缓存块的大小相等。每个存储地址对应一缓存块。所述存储地址通常为所对应的缓存块的起始地址信息。
在具体实施中,对所述存储地址进行划分时,通常可以获得如下三部分信息:所述存储地址对应的cache块的标识信息和地址索引信息,以及所述存储地址在所述cache块中的偏移信息。其中,所述cache块的标识信息和地址索引信息,作为所述cache块地址信息。
具体地,所述cache块的标识信息可以唯一标识一cache块,通常为所述存储地址的高位。通过所述地址索引信息可以在相应的存储区中的到所述cache块的信息。所述偏移信息为所述存储地址在所述cache块中的偏移量。根据获取到的所述待模拟cache的容量、cache块大小及相联度等信息,可以在所述存储地址中分别获得对应的cache块的标识信息和地址索引信息,以及所述存储地址在所述对应的cache块中的偏移信息。
步骤105,根据所述存储地址对应的缓存块的地址信息,搜索第一存储区,并根据搜索结果判断所述存储地址在所述第一存储区中是否命中。
在具体实施中,所述第一存储区适于存储存储地址的标识信息以及对应的使用频度信息,所述第一存储区所存储的存储地址的使用频度均大于预设频度。也就是说,所述第一存储区适于存储mcu经常使用的存储地址的标识信息及相应的使用频度。其中,所述预设频度可以根据mcu的实际访问数据的情况进行设置。
在具体实施中,所述第一存储区可以划分为多个组,每组中可以存储多 个存储地址的标识信息以及对应的使用频度信息。其中,所述第一存储区中组的数量与cache的相联度相关,比如,cache的相联度为4时,所述第一存储区包含4组。当cache的相联度为2时,所述第一存储区包含2组。每组中可以存储的存储地址的标识信息的数量,与所述第一存储区所存储的存储地址的总数和组数相关。比如,当所述第一存储区所存储的存储地址的总数为20,cache的相联度为4时,每组中可以存储的存储地址的标识信息为5个。当所述第一存储区所存储的存储地址的总数为20,cache的相联度为2时,每组中可以存储的存储地址的标识信息为10个。
在具体实施中,根据所述存储地址对应的cache块的地址索引信息,搜索所述第一存储区中存储的信息,由此可以获得所述第一存储区中各组在相应位置上的标识信息。
在具体实施中,获得第一存储区中各组在相应位置上的标识信息后,分别将搜索到的标识信息与所述存储地址对应的cache块的标识信息进行比较。当二者相同时,判定所述存储地址在所述第一存储区中命中,否则表示所述存储地址在第一存储区中缺失,则判定所述存储地址在所述第一存储区中未命中。
当所述存储地址在所述第一存储区中命中时,执行步骤106,否则执行步骤107。
步骤106,更新所述第一存储区中存储的信息,以及从第二存储区中读取对应数据并返回。
在具体实施中,所述第二存储区适于存储与所述第一存储区所存储的存储地址对应的数据。当所述存储地址在所述第一存储区中命中时,更新所述第一存储区中所述存储地址对应的cache块的使用频度信息,以及从所述第二存储区中读取相应的数据并返回。
需要说明的是,在具体实施中,所述第二存储区也可以分为多组,每组中存储的数据与所述第一存储区中各组所存储的cache块的标识信息相对应。执行步骤105的同时,可以同时执行读取所述第二存储区的操作,最终根据步骤105的判断结果,将所述第二存储区中对应的数据返回至mcu,进一步 缩短缓存的模拟时间。
需要说明的是,在具体实施中,执行更新所述第一存储区中存储的信息的操作,以及执行从第二存储区中读取对应数据并返回的操作,不存在实现顺序的限制,二者既可以同时执行,也可以顺序执行。
步骤107,根据所述缓存块的地址信息搜索第三存储区中存储的信息,并根据搜索结果判断所述存储地址在所述第三存储区中是否命中。
在具体实施中,所述存储地址在所述第一存储区中未命中时,表示所述存储地址在第一存储区中缺失。根据所述cache块的地址索引信息,搜索所述第三存储区,可以获得所述第三存储区对应位置上的数据及所述数据对应的cache块的标识信息。将所述存储地址对应cache块的标识信息与搜索到的标识信息进行比较,当二者相同时,判定所述存储地址在所述第三存储区中命中,否则判定所述存储地址在所述第三存储区中未命中。
其中,所述第三存储区适于存储预取的数据及对应的cache块的地址索引信息及标识信息。所述预取的数据可以仅为一个,也可以为多个,具体不受限制。
当所述存储地址在所述第三存储区中命中时,执行步骤108,否则执行步骤109。
步骤108,更新所述第一存储区及第二存储区中存储的信息,从所述第三存储区中读取对应的数据并返回。
在具体实施中,当所述存储地址在所述第三存储区中命中时,可以先根据在所述第三存储区中命中的数据所对应的cache块的地址索引信息,确定所述第一存储区中对应的位置是否已存储相应的信息。
若所述第一存储区中有某一组中对应的位置未存储相应的信息,则将在所述第三存储区中命中的数据所对应的cache块的标识信息以及对应的使用频度信息写入至该位置。
若所述第一存储区所有组中对应的位置均已存储相应的信息,则可以根据所述第一存储器中各cache块的使用频度信息,按照预先获取到的替换算 法,对所述第一存储区的cache块进行替换,将在所述第三存储区中命中的缓存块的标识信息以及对应的使用频度信息写入至被替换的位置。
需要说明的是,所述替换算法作为待模拟cache的一配置参数,可以在对所述待模拟cache进行模拟之前预先获取到。在具体实施中,所述替换算法可以是为先进先出替换算法(fifo),也可以为lru,还可以为二叉树伪lru替换算法(pseudo-lru)。当然,还可以为其他替换算法,具体不作限制。
更新所述第一存储区后,将在所述第三存储区中命中的数据写入至所述第二存储区的相应位置处。从第三存储区中读取所命中的数据并返回至mcu。需要说明的是,更新所述第一、第二存储区以及向mcu返回数据的操作既可以同时执行,也可以顺序执行。
从所述第三存储区读取所命中的数据后,按照预设顺序从nvm中进行数据预取,并将预取到的数据存储在所述第三存储区中,即通过数据预取更新所述第三存储区。
需要说明的是,在具体实施中,所述预设顺序作为待模拟cache的一配置参数,可以在对所述待模拟cache进行模拟之前预先获取到。比如,所述预设顺序可以为:在所访问存储地址上加1。
步骤109,从所述nvm中读取对应的数据并返回,以及更新所述第三存储区中存储的信息。
在具体实施中,所述存储地址在所述第三存储区中未命中时,表示所述存储地址在所述第三存储区中缺失,此时,从所述nvm中读取对应的数据并返回至mcu,并更新所述第三存储区中存储的信息,也就是将从nvm中读取的数据写入至所述第三存储区。将从nvm中读取的数据写入至所述第三存储区可以缩短缓存模拟的时间。
为了使本领域技术人员更好地理解和实现本发明,下面结合图2,对上述缓存模拟过程的工作原理进行详细描述。
如图2所示,以所述待模拟缓存的相联度为2、nvm为flash为例,所述第一存储区包括两个组,每组中分别存储若干个存储地址的标识信息tag及 对应的使用频度信息repinfo。第二存储区中包括两个组,每组中存储的数据与所述第一存储区中各组所存储的存储地址的标识信息对应。
接收到mcu发送的访问缓存请求后,提取所述访问缓存请求中的存储地址addr。接着,对所述存储地址addr进行划分,分别获得对应的标识信息tag、地址索引信息index及偏移信息offset。根据所述地址索引信息index搜索第一存储区,并判断所述存储地址addr是否在所述第一存储区中命中。同时读取所述第二存储区。若在第一存储区中命中,则从第二存储区中搜索到的数据中选择一个并返回至mcu,否则搜索第三存储区中存储的信息。
若在第三存储区中命中,则直接从第三存储区中读取相应的数据并返回至mcu,否则从flash中读取相应的数据并返回至mcu。
由上述内容可以看出,本发明实施例中的缓存模拟方法中,由于可以基于待模拟缓存的应用需求配置其配置参数,进而可以对具有不同配置参数的缓存进行模拟,通用性更好。另外,由于该缓存方法可以给出在各存储区命中所需的时间,进而可以计算出存储系统的平均访存时间,该指标反映了待模拟缓存的真实加速效果,因此更有利于准确地进行缓存性能的估计。为了使本领域技术人员更好地理解和实现本发明,以下对上述缓存的模拟方法对应的装置进行详细描述。
参照图3,本发明实施例还提供了一种缓存的模拟装置。所述装置可以包括:提取单元31,地址划分单元32,存储单元,第一处理单元33及第一执行单元34。其中:
所述提取单元31适于当接收到访问缓存请求时,从所述访问缓存请求中提取待访问的数据的存储地址
所述地址划分单元32,适于当获取到待模拟的缓存的配置参数时,对所述存储地址进行划分,获得所述存储地址对应的缓存块的地址信息,所述待模拟的缓存的配置参数适于基于所述待模拟的缓存的应用需求进行配置;
所述存储单元,包括第一存储区351,适于存储存储地址的标识信息以及对应的使用频度信息,所述第一存储区351所存储的存储地址的使用频度均大于预设频度;
第一处理单元33,适于根据所述存储地址对应的缓存块的地址信息,搜索所述第一存储区;根据搜索结果判断所述存储地址在所述第一存储区中是否命中;
第一执行单元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中读取对应的数据并返回,以及更新所述第三存储区 中存储的信息。
在具体实施中,所述第二执行模块3432适于当所述第一存储区351的对应位置处均已存储相应的信息时,采用如下步骤更新所述第一存储区351:根据所述第一存储区351中各缓存块的使用频度信息,按照预先获取到的替换算法,对所述第一存储区351的缓存块进行替换,将在所述第三存储区353中命中的缓存块的标识信息以及对应的使用频度信息写入至被替换的位置。
由上述内容可以看出,本发明实施例中所述缓存的模拟装置,提取单元31可以在接收到访问缓存请求时,从所述访问缓存请求中提取待访问数据的存储地址,进而由所述地址划分单元32在获取到待模拟的缓存的配置参数时对所述地址进行划分,获得所述存储地址对应的缓存块的地址信息,从而所述第一处理单元33可以根据所述存储地址对应的缓存块的地址信息,搜索所述第一存储区,并根据搜索结果判断所述存储地址在所述第一存储区中是否命中,最终由第一执行单元34根据所述存储地址在所述第一存储区351中是否命中的判断结果,获取相应的数据并返回。采用上述模拟装置进行缓存性能评估时,可以计算得到所模拟的各个缓存的平均访存时间,进而根据缓存的平均访存时间评估该缓存的性能,提高缓存性能评估的准确性。
参照图4,本发明的另一实施例还提供了一种缓存的模拟方法。所述方法可以包括如下步骤:
步骤401,判断是否接收到访问缓存请求。
当接收到所述访问缓存请求时,执行步骤402,否则继续执行步骤401。
步骤402,从所述访问缓存请求中提取待访问的数据的存储地址。
步骤403,获取待模拟的缓存的配置参数。
步骤404,对所述存储地址进行划分,获得所述存储地址对应的缓存块的地址信息。
需要说明的是,在具体实施中,步骤401~404可以分别参照上述对步骤101~104的描述进行实施,此处不再赘述。
步骤405,根据所述存储地址对应的缓存块的地址信息搜索所述第四存储 区,并根据搜索结果判断所述存储地址在所述第四存储区中是否命中。
在具体实施中,所述第四存储区适于存储前一次在所述第一存储区中命中时所对应的cache块的地址信息。搜索所述第四存储区,获得前一次在所述第一存储区中命中时对应的cache块的地址信息,并将其与所述存储地址对应的缓存块的地址信息进行比较。若二者相同,则所述存储地址在所述第四存储区中命中,否则未命中。
当所述存储地址在所述第四存储区中命中时,执行步骤406,否则执行步骤407。
步骤406,从所述第二存储区中读取对应的数据并返回。
由于mcu访问前一次在所述第一存储区中命中的存储地址的频度较高,因此,在搜索第一存储区之前,通过先判断所述存储地址在所述第一存储区中是否命中,且在命中时,直接从第二存储区中读取对应的数据并返回,可以进一步缩短缓存的模拟时间。
步骤407,根据所述存储地址对应的缓存块的地址信息,搜索第一存储区,并根据搜索结果判断所述存储地址在所述第一存储区中是否命中。
当所述存储地址在所述第一存储区中命中时,执行步骤408,否则执行步骤409。
步骤408,更新所述第一存储区及第四存储区中存储的信息,以及从第二存储区中读取对应数据并返回。
需要说明的是,在本发明的实施例中,当所述存储地址在所述第一存储区中命中时,除更新所述第一存储区外,还要更新所述第四存储区,以使得所述第四存储区中所存储的地址信息始终为前一次在所述第一存储区中命中的地址信息。
步骤409,根据所述缓存块的地址信息搜索第三存储区中存储的信息,并根据搜索结果判断所述存储地址在所述第三存储区中是否命中。
当所述存储地址在所述第三存储区中命中时,执行步骤410,否则执行步骤411。
步骤410,更新所述第一存储区、第二存储区及第四存储区中存储的信息,从所述第三存储区中读取对应的数据并返回。
需要说明的是,在本发明的实施例中,当所述存储地址在所述第三存储区中命中时,除更新所述第一存储区及第二存储区外,还要更新所述第四存储区,以使得所述第四存储区中所存储的地址信息始终为前一次在所述第一存储区中命中的地址信息。
步骤411,从所述nvm中读取对应的数据并返回,以及更新所述第三存储区中存储的信息。
需要说明的是,在具体实施中,可以分别参照上述对步骤关于步骤105~109的描述实施步骤407~411,此处不再赘述。
为了使本领域技术人员更好地理解和实现本发明,下面结合图5,对上述缓存模拟过程的工作原理进行详细描述。
如图5所示,以所述待模拟缓存的相联度为4、nvm为flash为例,所述第一存储区包括4个组,每组中分别存储若干个存储地址的标识信息tag及对应的使用频度信息repinfo。第二存储区中仅包括1个组,每组中存储的数据与所述第一存储区中各组所存储的存储地址的标识信息对应。
接收到mcu发送的访问缓存请求后,提取所述访问缓存请求中的存储地址addr。接着,对所述存储地址addr进行划分,分别获得对应的标识信息tag、地址索引信息index及偏移信息offset。
根据所述地址索引信息index搜索第四存储区,并判断所述存储地址在所述第四存储区是否命中。若在所述第四存储区命中,则从所述第二存储区中搜索相应的数据并返回至mcu,否则根据所述地址索引信息index搜索第一存储区。
判断所述存储地址addr是否在所述第一存储区中命中,若在第一存储区中命中,则从第二存储区中搜索相应的数据并返回至mcu,否则搜索第三存储区中存储的信息。
若在第三存储区中命中,则直接从第三存储区中读取相应的数据并返回 至mcu,否则从flash中读取相应的数据并返回至mcu。
由上述内容可知,通过设置第四存储区,在对访问缓存请求中的存储地址进行划分后,先判断所述存储地址在所述第四存储区中是否命中,再依次判断在第一存储区及第三存储区中是否命中,可以有效减少第一存储区及第二存储区的读取次数,降低缓存模拟的功耗。并且,由于该缓存方法可以给出在各存储区命中所需的时间,进而可以计算出待模拟缓存的平均访存时间,该指标反映了待模拟缓存的真实加速效果,因此更有利于准确地进行缓存性能的估计。
为了使本领域技术人员更好地理解和实现本发明,以下对上述缓存的模拟方法对应的装置进行详细描述。
参照图6,本发明实施例提供了一种缓存的模拟装置。相对于图3示出的装置,所述存储单元还包括:第四存储区354,适于存储前一次在所述第一存储区中命中时所对应的缓存块的地址信息。
此时,所述装置还包括:第二处理单元36及第二执行单元37。其中:
所述第二处理单元36,适于在所述根据所述存储地址对应的缓存块的地址信息,搜索第一存储区351之前,根据所述存储地址对应的缓存块的地址信息搜索所述第四存储区354,判断所述存储地址在所述第四存储区354中是否命中;
所述第二执行单元37,适于当所述存储地址在所述第四存储区354中命中时,从所述第四存储区354中读取对应的数据并返回。
所述第一处理单元33适于当所述存储地址在所述第四存储区354中未命中时,搜索所述第一存储区351,并根据搜索结果判断所述存储地址在所述第一存储区351中是否命中。
由上述内容可以看出,本发明实施例中所述缓存的模拟装置,通过设置第四存储区354,进而可以在所述第一处理单元33根据所述存储地址对应的缓存块的地址信息,搜索第一存储区351之前,先由第二处理单元36判断所述存储地址在所述第四存储区354中是否命中,进而再由所述第一处理单元在所述存储地址在所述第四存储区354中未命中时,搜索所述第一存储区351, 并根据搜索结果判断所述存储地址在所述第一存储区351中是否命中,可以有效缩短缓存的模拟时间。采用上述模拟装置进行缓存性能评估时,可以计算得到所模拟的各个缓存的平均访存时间,进而根据缓存的平均访存时间评估该缓存的性能,提高缓存性能评估的准确性。另外,相对于图3中示出的缓存模拟装置,可以有效减少第一存储区及第二存储区的读取次数,降低缓存模拟的功耗。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:rom、ram、磁盘或光盘等。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。