缓存系统模拟方法、装置、设备和存储介质与流程

文档序号:31474714发布日期:2022-09-10 00:10阅读:41来源:国知局
缓存系统模拟方法、装置、设备和存储介质与流程

1.本公开的实施例涉及一种缓存系统模拟方法、装置、设备和存储介质。


背景技术:

2.在通常的计算机架构中,程序的指令与数据都保存在内存中,而处理器的运行频率远远高于内存的运行频率,因此,从内存获取数据或者指令需要上百个时钟周期,这往往会造成处理器由于无法继续运行相关指令而空转,造成性能损失。为了运行速度及访问效率,通常采用高速缓冲存储装置(cache,或简称为缓存)来保存部分数据以供处理器高速读取,这些数据例如可以是最近被访问的数据、根据程序运行规律提前预取的数据等。


技术实现要素:

3.本公开至少一实施例提供一种缓存系统模拟方法。该方法包括:获取缓存系统模型;获取指令信息记录,其中,所述指令信息记录包括多个条目,所述多个条目中的每个条目包括请求指令以及所述请求指令对应的第一寻址地址;从所述指令信息记录读取所述多个条目中的至少一个条目;使用所述至少一个条目中的每个条目中的所述请求指令和所述第一寻址地址模拟对于所述缓存系统模型的访问以获取所述缓存系统模型的统计数据;基于所述统计数据更新所述缓存系统模型。
4.例如,在本公开至少一实施例提供的缓存系统模拟方法中,所述使用所述至少一个条目中的每个条目中的所述请求指令和所述第一寻址地址模拟对于所述缓存系统模型的访问以获取所述缓存系统模型的统计数据包括:将所述第一寻址地址映射到所述缓存系统模型中以获取统计计数器中的计数值,其中,所述缓存系统模型设置为具有第一配置参数;根据所述计数值获得所述统计数据。
5.例如,在本公开至少一实施例提供的缓存系统模拟方法中,所述基于所述统计数据更新所述缓存系统模型包括:将所述统计数据与目标数据进行比较以更新所述第一配置参数。
6.例如,在本公开至少一实施例提供的缓存系统模拟方法中,所述计数值包括第一计数值,所述统计数据包括第一统计值,所述将所述第一寻址地址映射到所述缓存系统模型中以获取统计计数器中的计数值,包括:将m个所述第一寻址地址映射到所述缓存系统模型中,m为大于1的整数;将m个所述第一寻址地址与所述缓存系统模型中对应的多个缓存行中的地址段进行比较;响应于i个所述第一寻址地址的比较结果为命中,将所述统计计数器中的所述第一计数值更新为i,i为不大于m的正整数。
7.例如,在本公开至少一实施例提供的缓存系统模拟方法中,所述根据所述计数值获得所述统计数据包括:根据所述第一计数值获得所述第一统计值为i/m。
8.例如,在本公开至少一实施例提供的缓存系统模拟方法中,所述目标数据包括第一目标值,所述将所述统计数据与目标数据进行比较以更新所述第一配置参数包括:响应于所述第一统计值大于等于所述第一目标值,输出所述第一配置参数为目标第一配置参
数;或者,响应于所述第一统计值小于所述第一目标值,修改所述第一配置参数。
9.例如,在本公开至少一实施例提供的缓存系统模拟方法中,所述第一统计值为命中率,所述第一目标值为目标命中率。
10.例如,在本公开至少一实施例提供的缓存系统模拟方法中,所述计数值包括第二计数值,所述统计数据包括第二统计值,所述将所述第一寻址地址映射到所述缓存系统模型中以获取统计计数器中的计数值,包括:将n个所述第一寻址地址映射到所述缓存系统模型中,n为大于1的整数;将n个所述第一寻址地址与所述缓存系统模型中对应的多个缓存行中的地址段进行比较;响应于j个所述第一寻址地址的比较结果为访问冲突,将所述统计计数器中的所述第二计数值更新为j,j为不大于n的正整数。
11.例如,在本公开至少一实施例提供的缓存系统模拟方法中,所述根据所述计数值获得所述统计数据包括:根据所述第二计数值获得所述第二统计值为j/n。
12.例如,在本公开至少一实施例提供的缓存系统模拟方法中,所述目标数据包括第二目标值,所述将所述统计数据与目标数据进行比较以更新所述第一配置参数,包括:响应于所述第二统计值小于等于所述第二目标值,输出所述第一配置参数为目标第一配置参数;或者,响应于所述第二统计值大于所述第二目标值,修改所述第一配置参数。
13.例如,在本公开至少一实施例提供的缓存系统模拟方法中,所述第二统计值为访问冲突率,所述第二目标值为目标访问冲突率。
14.例如,在本公开至少一实施例提供的缓存系统模拟方法中,所述第一配置参数包括路、组、存储体或者替换策略。
15.例如,在本公开至少一实施例提供的缓存系统模拟方法中,所述请求指令包括读取请求指令或存储请求指令。
16.例如,本公开至少一实施例提供的缓存系统模拟方法还包括,使用脚本语言创建所述缓存系统模型。
17.例如,在本公开至少一实施例提供的缓存系统模拟方法中,所述指令信息包括跟踪日志指令信息。
18.本公开至少一实施例提供一种用于缓存系统模拟的装置。该装置包括:获取模块,配置为获取缓存系统模型,以及获取指令信息记录,其中,所述指令信息记录包括多个条目,所述多个条目中的每个条目包括请求指令以及所述请求指令对应的第一寻址地址;模拟访问模块,配置为从所述指令信息记录读取所述多个条目中的至少一个条目,以及使用所述至少一个条目中每个条目中的所述请求指令和所述第一寻址地址模拟对于所述缓存系统模型的访问,以获取所述缓存系统模型的统计数据;更新模块,配置为基于所述统计数据更新所述缓存系统模型。
19.本公开至少一实施例还提供一种用于缓存系统模拟的设备。该设备包括:处理器;存储器,包括一个或多个计算机程序模块;其中,所述一个或多个计算机程序模块被存储在所述存储器中并被配置为由所述处理器执行,所述一个或多个计算机程序模块包括用于实现本公开任一实施例提供的方法。
20.本公开至少一实施例还提供一种存储介质,用于存储非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时可以实现本公开任一实施例提供的方法。
cache,也称为l1缓存)、二级缓存(l2 cache,也称为l2缓存)、三级缓存(l3 cache,也称为l3缓存)。l1 cache是cpu私有的,每个cpu都有一个l1 cache,例如在有的cpu中,l1 cache可以进一步划分为数据专用的l1 cache(l1d cache)和指令专用的l1 cache(l1i cache);一个集群(例如集群0)内的所有cpu(例如cpu0和cpu1)共享一个l2cache,例如,l2 cache不区分指令和数据,都可以缓存;l3 cache通过总线和主存相连,例如,l3 cache不区分指令和数据,都可以缓存。相应地,l1 cache的速度最快,l2 cache其次,l3 cache再次。在需要获取数据或指令时,处理器会先到l1 cache中寻找需要的数据或指令,如果在l1 cache中没有找到,则会到l2 cache中寻找,如果仍然没有找到,则会到l3 cache中寻找。若在l1 cache、l2 cache、l3 cache中均没有找到所需要的数据,则才会到主存中寻找。当从非l1 cache的某一级缓存或内存获取了数据或指令时,除了返回给cpu供使用之外,还会将该数据或指令填充到在前的缓存中以暂存。本公开的实施例非限制于cpu内缓存的设置方式。
39.缓存(cache)的容量很小,缓存保存的内容只是主存内容的一个子集,且缓存与主存的数据交换是以块为单位的。为了把主存中的数据缓存到缓存中,例如使用某种函数把主存地址定位到缓存中,这称为地址映射。在将主存中的数据按这种映射关系缓存到缓存中后,cpu执行程序时,会将程序中的主存地址变换成缓存地址。不同类型的缓存的地址映射方式通常有直接映射、全相联和组相联映射。
40.虽然缓存的容量相较于主存来说较小,但是速度相较于主存来说却快得多,因此缓存的主要功能是用来存储近期处理器可能需要频繁访问到的数据。这样处理器便可以直接到缓存中进行数据读取,而无需频繁地访问速度较慢的主存,以此来提高处理器对内存的访问速度。缓存的基本单位是cache line,可称之为缓存块或缓存行。与缓存分成多个缓存块类似,主存中存储的数据也进行了类似划分。内存中的划分出来的数据块称为内存块。通常,一个内存块的大小可以为64字节,一个缓存块的大小也可以为64字节。可以理解的是,实际应用中,还可以将内存块和缓存行的大小设置为其他值,例如32-256字节,仅需保证内存块的大小与缓存块的大小相同即可。
41.图1b为一种直接相联、全相联和组相联中内存和缓存的映射关系原理的示意图。假设内存有32项(内存块),缓存有8项(缓存块)。在直接相联方式中,每个内存块只能放到缓存的一个位置上。假设要把内存的第12号块放到缓存中,因为缓存只有8项,所以只能放在第(12mod 8=4)项上,其他地方都不能放;由此可知第4、12、20、28号内存块都对应到缓存的第4项上,如果冲突了就只能替换。直接相联方式所需的硬件简单但效率低,如图1b(a)所示。在全相联方式中,每个内存块都可以放到缓存的任一位置上,这样第4、12、20、28号内存块可以同时放入缓存中。全相联方式所需的硬件复杂但效率高,如图1b(b)所示。组相联是直接相联和全相联的折中。以两路组相联为例,缓存中第0、2、4、6号位置为一路(这里称为第0路),第1、3、5、7为另一路(这里称为第1路),每路4个块。对于内存的第12号块,因为12除以4余数为0,所以既可以把第12号块放到缓存的第0路的第0号位置(即缓存的第0号位置),也可以放到第1路的第0号位置(即缓存的第1号位置),如图1b(c)所示。
42.图1c为一种缓存的组相联的组织形式和寻址方式的示意图。如图1c所示,缓存被组织为缓存行(cache line)数组的形式。一列缓存行组成路(way),多列缓存行中相同位置的多个缓存行组成一个组(set);同一组内的多个缓存行彼此等价,通过不同的路来进行区分(或读取、写入)。通过要读取的数据或指令的物理地址获取数据或指令在缓存中的位置
(set,way,byte),每个物理地址被分为三部分:
43.(1)索引(index),用于选择缓存中的不同组(set),同一组中的所有缓存行通过相同的索引来选择;
44.(2)标签(tag),用于选择同一组(set)中不同缓存行,将物理地址中的标签部分与每个路中的缓存行的标签进行比较,如果匹配,则缓存命中(cache hit),从而选择此缓存行,否则缓存缺失(cache miss);
45.(3)偏移量(offset),用于在选中的缓存行中再选择相应的地址,其表示目标数据或指令的第一个字节在选中的缓存行中距离该缓存行第一个字节(byte)的地址差异量(偏移量),对应的数据或指令从此字节的位置读取。
46.为了提高缓存的命中率,需要尽可能地将最近可能使用的数据存储到缓存中。由于缓存的容量有限,当缓存的空间被写满之后,可以采用缓存替换策略将一些数据从缓存中删除,然后将新的数据写入释放出的空间中。缓存替换策略实际上是一种数据淘汰机制,采用合理的缓存替换策略,可以有效提高命中率。常用的缓存替换策略包括,但不限于,先进先出调度、最近最少使用调度、最近最不常用调度等,本公开的实施例对此不作限制。
47.例如,在超标量处理器中,为了提高性能,处理器需要能够在每个周期同时执行多条请求/存储(load/store)指令,这就需要一个多端口的缓存。然而,由于多端口缓存的容量比较大,且采用多端口设计,会对芯片的面积和速度带来很大的负面影响,为此可以采用多存储体结构(multi-banking)。
48.图1d为一种多存储体结构缓存的工作原理的示意图。
49.例如,如图1d所示,该多存储体结构将缓存划分为几个小的存储体(bank),每个存储体都只有一个端口。例如,如图1d所示的双端口(端口0和端口1)的缓存将缓存划分为存储体cache bank 0和cache bank 1。如果在一个时钟周期内,缓存的多个端口上的访问地址位于不同的存储体之中,那么这样不会引起任何问题;只有当两个或者多个端口的地址位于同一个存储体中时,才会引起冲突,称为存储体冲突(bank conflict)。例如,可以通过选取合适的存储体数量来缓解存储体冲突的问题。
50.对于例如图1a~图1d所示的缓存,各级缓存如何设置路、组、存储体或者替换策略等性能数据,将直接影响缓存系统的命中率和延迟。例如,常见的缓存系统设计方法是对中央处理器(central processing unit,cpu)或图形处理器(graphics processing unit,gpu)的整个知识产权核(intellectual property core,ip核,或者也称为ip)进行建模,通过将合适的路、组、存储体或者替换策略等性能数据设置在真实的缓存设计程序中,并运行该程序得到各级缓存的命中率或访问冲突的计算结果;根据命中率或访问冲突的计算结果,进一步优化缓存中的路、组、存储体或者替换策略等性能数据的设定,直到命中率或访问冲突的计算结果达到目标值。然而,上述缓存系统设计方法需要对cpu或gpu的整个ip进行建模,工作量大且不易收敛;需要运行真实的缓存设计程序获得命中率或访问冲突等数据,受限于指令级架构导致计算速度较低。
51.本公开至少一实施例提供一种缓存系统模拟方法。该方法包括:获取缓存系统模型;获取指令信息记录,其中,指令信息记录包括多个条目,多个条目中的每个条目包括请求指令以及请求指令对应的第一寻址地址;从指令信息记录读取多个条目中的至少一个条目;使用至少一个条目中的每个条目中的请求指令和第一寻址地址模拟对于缓存系统模型
的访问以获取缓存系统模型的统计数据;基于统计数据更新缓存系统模型。
52.本公开的多个实施例还提供一种对应于执行上述缓存系统模拟方法的装置、设备或存储介质。
53.本公开至少一实施例提供的缓存系统模拟方法、装置、设备和存储介质,基于指令信息记录单独对缓存系统进行建模,而不需要cpu或gpu的整个ip进行建模,大大减少了建模的工作量,缩短了模型收敛时间,从而可以快速得到缓存的性能数据。
54.下面,将参考附图详细地说明本公开至少一实施例。应当注意的是,不同的附图中相同的附图标记将用于指代已描述的相同的元件。
55.图2为本公开至少一实施例提供的一种缓存系统模拟方法的示例性流程图。
56.例如,如图2所示,本公开至少一实施例提供了一种缓存系统模拟方法,该缓存系统模拟方法用于缓存系统的设计。例如,该缓存系统模拟方法包括以下步骤s10~s50。
57.步骤s10:获取缓存系统模型;
58.步骤s20:获取指令信息记录;
59.步骤s30:从指令信息记录读取多个条目中的至少一个条目;
60.步骤s40:使用至少一个条目中的每个条目中的请求指令和第一寻址地址模拟对于缓存系统模型的访问以获取缓存系统模型的统计数据;
61.步骤s50:基于统计数据更新缓存系统模型。
62.例如,在步骤s10中,获取的缓存系统模型可以为例如图1a所示的多级缓存,或者可以为其中的某一级缓存;该缓存的地址映射方式可以为直接映射、全相联或组相联映射等;本公开的实施例对此不作限制。
63.例如,本公开至少一实施例提供的缓存系统模拟方法还包括,使用脚本语言创建例如步骤s10中的缓存系统模型。例如,该脚本语言可以为perl语言或者python语言,或者可以为其他能够实现对缓存系统进行建模的功能的脚本语言,本公开的实施例对此不作限制。
64.例如,在步骤s20中,指令信息记录包括多个条目,多个条目中的每个条目包括请求指令(request)以及请求指令对应的第一寻址地址(address)。例如,请求指令包括读取请求指令(load)或存储请求指令(store),第一寻址地址可以为读取请求指令或存储请求指令所携带的地址。
65.例如,指令信息记录可以包括跟踪日志指令信息(trace log),该跟踪日志指令信息可以通过硬件平台或开源网站等直接获得。例如,一个示例性的跟踪日志指令信息可以包括如下内容:
66.循环数request类型addressload数据/store数据1load0x8000_00000x5555_55555store0x8000_00100x5a5a_5a5a
…………
67.在本公开的实施例中,可以通过硬件平台或开源网站等获取例如跟踪日志指令信息的指令信息记录,以使用该指令信息记录单独对缓存系统进行建模。由于该指令信息记录易于获取,基于该指令信息进行缓存系统模拟的计算效率更高,并且可以针对客户需求做定制化优化。
68.例如,在步骤s30中,从指令信息记录读取多个条目中的至少一个条目,以获取至少一个条目中的每个条目中的请求指令和第一寻址地址。例如,脚本语言中包括用于执行文件读取的系统函数,通过调用该系统函数可以直接读取指令信息记录中的信息。例如,每次读取指令信息记录中的一个条目(例如,跟踪日志指令信息中的一行),以获取该条目中的请求指令、请求指令对应的第一寻址地址等信息。
69.例如,在步骤s40中,使用读取到的每个条目中的请求指令和第一寻址地址,可以模拟对于缓存系统模型的访问的过程,例如,主要完成请求指令对应的第一寻址地址到缓存的中的路(way)、组(set)、存储体(bank)等的映射,具体地,可以将第一寻址地址与缓存系统模型中对应的多个缓存行(cache line)中的地址段(tag)进行比较,从而获取缓存系统模型的统计数据。
70.例如,统计数据可以为缓存的命中率(hit ratio)或访问冲突率(bank conflict ratio),也可以为其他反映缓存系统功能状态的其他数据,本公开的实施例对此不作限制。
71.例如,在步骤s50中,基于在步骤s40中获取的统计数据来更新缓存系统模型中的一个或多个配置参数,例如,更新缓存中的路(way)、组(set)或存储体(bank)等的地址映射或者更新替换策略,以达到最优的缓存命中率和最少的访问冲突。
72.在本公开的实施例提供的缓存系统模拟方法中,可以基于指令信息记录单独对缓存系统进行建模,而不需要cpu或gpu的整个ip进行建模,大大减少了建模的工作量,缩短了模型收敛时间,从而可以快速得到缓存的性能数据。
73.图3为图2中步骤s40的示例性流程图。
74.例如,使用在步骤s30中从指令信息记录读取的至少一个条目中的每个条目包括的请求指令以及请求指令对应的第一寻址地址,可以模拟对于缓存系统模型的访问以获取缓存系统模型的统计数据。例如,如图3所示,图2所示的模拟方法中的步骤s40包括以下步骤s410~s430。
75.步骤s210:将第一寻址地址映射到缓存系统模型中以获取统计计数器中的计数值;
76.步骤s220:根据计数值获得统计数据。
77.例如,在本公开的实施例中,缓存系统模型设置为具有第一配置参数,该第一配置参数包括路、组、存储体或者替换策略等。例如,在步骤s210中,可以通过在缓存系统模型中设置统计计数器,将第一寻址地址映射到设置为第一参数的缓存系统模型中以更新统计计数器的计数值。例如,在步骤s210中,根据计数值获得统计数据,并且步骤s210还包括,将统计数据与目标数据进行比较以更新第一配置参数。例如,更新缓存的第一配置参数,以使统计数据达到目标数据所允许的范围。
78.图4为图2中步骤s30~s50的一个示例的示意流程图;
79.例如,如图4所示,计数值包括第一计数值,统计数据包括第一统计值,目标数据包括第一目标值。例如,在图4的示例中,第一统计值为命中率,第一目标值为目标命中率。
80.例如,如图4所示,首先,基于在步骤s10获取的缓存系统模型,以及基于在步骤s20获取的指令信息记录,在“开始”阶段开始运行缓存系统模型的脚本。例如,如上所述,该指令信息记录可以为通过硬件平台或开源网站直接获得的跟踪日志指令信息(trace log)。
81.然后,执行如图2所示的步骤s30。例如,在步骤s31中,统计指令信息记录中待读取
的条目的数量(例如,跟踪日志指令信息中待读取的请求指令的数量),在图4的示例中,信息记录中待读取的条目的数量为m,m为大于1的整数。
82.例如,在步骤s32中,逐一读取指令信息记录中的条目。例如,脚本语言中包括用于执行文件读取的系统函数(例如,$readfile函数),通过调用该系统函数可以直接读取指令信息记录中的信息,例如,在步骤s32中,读取指令信息记录中的一个条目(例如,跟踪日志指令信息中的一行),以获取该条目中的请求指令、请求指令对应的第一寻址地址等信息。
83.例如,继续执行如图2所示的步骤s40。例如,在图4的示例中,如图2所示的步骤s40包括:将m个第一寻址地址映射到缓存系统模型中(例如,m为步骤s31中统计的信息记录中待读取的条目的数量);将m个第一寻址地址与缓存系统模型中对应的多个缓存行中的地址段进行比较;响应于i个第一寻址地址的比较结果为命中,将统计计数器中的第一计数值更新为i,i为不大于m的正整数。例如,根据第一计数值可以获得第一统计值为i/m。
84.例如,如图4所示,在步骤s41中,将在步骤s32中读取到的指令信息记录条目中的第一寻址地址映射到缓存系统模型中,例如,主要完成第一寻址地址到缓存系统模型的中第一配置参数的映射,该第一配置参数包括路(way)、组(set)、存储体(bank)或者替换策略等。具体地,例如,在步骤s42中,将第一寻址地址与缓存系统模型中对应的多个缓存行(cache line)中的地址段(tag)进行比较。
85.例如,在步骤s43中,判断第一寻址地址的比较结果是否为命中:响应于第一寻址地址的比较结果为命中(cache hit),在步骤s44中,将计数器的计数值加1,然后进行步骤s45;响应于第一寻址地址的比较结果为缺失(cache miss),计数器的计数值不变,直接进行步骤s45。
86.例如,在步骤s45中,判断指令信息记录中的待读取条目是否读取完成:响应于指令信息记录中的待读取条目读取完成,直接进行步骤s46;响应于指令信息记录中的待读取条目未读取完成,返回步骤s32,以读取指令信息记录中的下一个条目并对该条目执行步骤s41~s45的进程。
87.例如,在步骤s46中,映射到缓存系统模型中的第一寻址地址为m个(例如,m为步骤s31中统计的信息记录中待读取的条目的数量),统计计数器中的第一计数值最终更新结果为i,也即是,i个第一寻址地址的比较结果为命中,从而获得第一统计值(命中率)为i/m。
88.例如,继续执行如图2所示的步骤s50。例如,如图4所示,在步骤s51中,判断第一统计值是否大于等于第一目标值:响应于第一统计值大于等于第一目标值,在步骤s52中,输出第一配置参数为目标第一配置参数;响应于第一统计值小于第一目标值,在步骤s53中,修改第一配置参数。
89.例如,修改第一配置参数后,再次执行本公开至少一实施例提供的缓存系统模拟方法,直到获得的第一统计值大于等于第一目标值(也即是,获得最优的第一统计值)。
90.例如,第一统计值为命中率,第一目标值为目标命中率。例如,修改第一配置参数,可以为修改缓存系统模型中的路(way)、组(set)、存储体(bank)或者替换策略等,以达到最优的缓存命中率。
91.图5为图2中步骤s30~s50的另一个示例的示意流程图。
92.例如,如图5所示,计数值包括第二计数值,统计数据包括第二统计值,目标数据包括第二目标值。例如,在图5的示例中,第二统计值为访问冲突率,第二目标值为目标访问冲
突率。
93.例如,如图5所示,首先,基于在步骤s10获取的缓存系统模型,以及基于在步骤s20获取的指令信息记录,在“开始”阶段开始运行缓存系统模型的脚本。例如,同样地,该指令信息记录可以为通过硬件平台或开源网站直接获得的跟踪日志指令信息(trace log)。
94.然后,执行如图2所示的步骤s30。例如,在步骤s301中,统计指令信息记录中待读取的条目的数量(例如,跟踪日志指令信息中待读取的请求指令的数量),在图5的示例中,信息记录中待读取的条目的数量为n,n为大于1的整数。
95.例如,在步骤s302中,逐一读取指令信息记录中的条目。例如,脚本语言中包括用于执行文件读取的系统函数(例如,$readfile函数),通过调用该系统函数可以直接读取指令信息记录中的信息,例如,在步骤s302中,读取指令信息记录中的一个条目(例如,跟踪日志指令信息中的一行),以获取该条目中的请求指令、请求指令对应的第一寻址地址等信息。
96.例如,继续执行如图2所示的步骤s40。例如,在图5的示例中,如图2所示的步骤s40包括:将n个第一寻址地址映射到缓存系统模型中(例如,n为步骤s301中统计的信息记录中待读取的条目的数量);将n个第一寻址地址与缓存系统模型中对应的多个缓存行中的地址段进行比较;响应于j个第一寻址地址的比较结果为访问冲突,将统计计数器中的第二计数值更新为j,j为不大于n的正整数。例如,根据第二计数值获得第二统计值为j/n。
97.例如,如图5所示,在步骤s401中,将在步骤s302中读取到的指令信息记录条目中的第一寻址地址映射到缓存系统模型中,例如,主要完成第一寻址地址到缓存系统模型的中第一配置参数的映射,该第一配置参数包括路(way)、组(set)、存储体(bank)或者替换策略等。具体地,例如,在步骤s402中,将第一寻址地址与缓存系统模型中对应的多个缓存行(cache line)中的地址段(tag)进行比较。
98.例如,在步骤s403中,判断第一寻址地址的比较结果是否为访问冲突(bank conflict):响应于第一寻址地址的比较结果为访问冲突,在步骤s404中,将计数器的计数值加1,然后进行步骤s405;响应于第一寻址地址的比较结果不是访问冲突,计数器的计数值不变,直接进行步骤s405。
99.例如,在步骤s405中,判断指令信息记录中的待读取条目是否读取完成:响应于指令信息记录中的待读取条目读取完成,直接进行步骤s406;响应于指令信息记录中的待读取条目未读取完成,返回步骤s302,以读取指令信息记录中的下一个条目并对该条目执行步骤s401~s405的进程。
100.例如,在步骤s406中,映射到缓存系统模型中的第一寻址地址为n个(例如,n为步骤s301中统计的信息记录中待读取的条目的数量),统计计数器中的第二计数值最终更新结果为j,也即是,j个第一寻址地址的比较结果为命中,从而获得第二统计值(访问冲突率)为j/n。
101.例如,继续执行如图2所示的步骤s50。例如,如图5所示,在步骤s501中,判断第二统计值是否小于等于第二目标值:响应于第二统计值小于等于第二目标值,在步骤s502中,输出第一配置参数为目标第一配置参数;响应于第二统计值大于第二目标值,在步骤s503中,修改第一配置参数。
102.例如,修改第一配置参数后,再次执行本公开至少一实施例提供的缓存系统模拟
方法,直到获得的第二统计值小于等于第二目标值(也即是,获得最优的第二统计值)。
103.例如,第二统计值为访问冲突率,第二目标值为目标访问冲突率。例如,修改第一配置参数,可以为修改缓存系统模型中的路(way)、组(set)、存储体(bank)或者替换策略等,以达到最少的访问冲突。
104.图6为本公开的至少一实施例提供的一种用于缓存系统模拟的装置的示意框图。
105.例如,本公开至少一实施例提供一种用于缓存系统模拟的装置。如图6所示,该装置200包括获取模块210、模拟访问模块220和更新模块230。
106.例如,获取模块210配置为获取缓存系统模型,以及获取指令信息记录。例如,指令信息记录包括多个条目,多个条目中的每个条目包括请求指令以及该请求指令对应的第一寻址地址。也即是,该获取模块210可以被配置为执行例如图2所示的步骤s10~s20。
107.例如,模拟访问模块220配置为从指令信息记录读取多个条目中的至少一个条目,以及使用至少一个条目中每个条目中的请求指令和第一寻址地址模拟对于缓存系统模型的访问,以获取缓存系统模型的统计数据。也即是,该模拟访问模块220可以被配置为执行例如图2所示的步骤s30~s40。
108.例如,更新模块230配置为基于统计数据更新缓存系统模型。也即是,该更新模块230可以被配置为执行例如图2所示的步骤s50。
109.由于在上述描述例如图2所示的缓存系统模拟方法的过程中,已经对上述用于缓存系统模拟的装置200的操作所涉及的内容的细节进行了介绍,因此这里为简洁起见不再赘述,相关细节可参照以上关于图1~图5的描述。
110.需要说明的是,图6所示的用于缓存系统模拟的装置200中上述的各个模块可被分别配置为执行特定功能的软件、硬件、固件或上述项的任意组合。例如,这些模块可对应于专用的集成电路,也可对应于纯粹的软件代码,还可对应于软件与硬件相结合的模块。作为示例,参照图6描述的装置可以是pc计算机、平板装置、个人数字助理、智能手机、web应用或其它能够执行程序指令的装置,但不限于此。
111.另外,尽管以上在描述用于缓存系统模拟的装置200时将其划分为用于分别执行相应处理的模块,然而,本领域技术人员清楚的是,各模块执行的处理也可以在装置中不进行任何具体模块划分或者各模块之间并无明确划界的情况下执行。此外,以上参照图6描述的用于缓存系统模拟的装置200并不限于包括以上描述的模块,而是还可以根据需要增加一些其它模块(例如,存储模块、数据处理模块等),或者以上模块也可被组合。
112.本公开的至少一实施例还提供一种用于缓存系统模拟的设备,该设备包括处理器和存储器;该存储器包括一个或多个计算机程序模块;一个或多个计算机程序模块被存储在存储器中并被配置为由处理器执行,一个或多个计算机程序模块包括用于实现上文所述的本公开的实施例提供的缓存系统模拟方法。
113.图7为本公开的至少一实施例提供的一种用于缓存系统模拟的设备的示意框图。
114.例如,如图7所示,该用于缓存系统模拟的设备300包括处理器310和存储器320。例如,存储器320用于存储非暂时性计算机可读指令(例如一个或多个计算机程序模块)。处理器310用于运行非暂时性计算机可读指令,非暂时性计算机可读指令被处理器310运行时可以执行根据上文所述的缓存系统模拟方法的一个或多个步骤。存储器320和处理器310可以通过总线系统和/或其它形式的连接机构(未示出)互连。
115.例如,处理器310可以是中央处理单元(cpu)、数字信号处理器(dsp)或者具有数据处理能力和/或程序执行能力的其它形式的处理单元,例如现场可编程门阵列(fpga)等;例如,中央处理单元(cpu)可以为x86或arm架构等。处理器310可以为通用处理器或专用处理器,可以控制自适应电压与频率调节设备300中的其它组件以执行期望的功能。
116.例如,存储器320可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(rom)、硬盘、可擦除可编程只读存储器(eprom)、便携式紧致盘只读存储器(cd-rom)、usb存储器、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序模块,处理器310可以运行一个或多个计算机程序模块,以实现设备300的各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据以及应用程序使用和/或产生的各种数据等。
117.需要说明的是,本公开的实施例中,用于缓存系统模拟的设备300的具体功能和技术效果可以参考上文中关于本公开至少一实施例提供的缓存系统模拟方法的描述,此处不再赘述。
118.图8为本公开的至少一实施例提供的另一种用于缓存系统模拟的设备的示意框图。
119.例如,如图8所示,该用于缓存系统模拟的设备400例如适于用来实施本公开实施例提供的缓存系统模拟方法。需要注意的是,图8示出的用于缓存系统模拟的设备400仅是一个示例,其不会对本公开实施例的功能和使用范围带来任何限制。
120.例如,如图8所示,用于缓存系统模拟的设备400可以包括处理装置(例如中央处理器、图形处理器等)41,该处理装置41例如包括根据本公开任一实施例的用于缓存系统模拟的装置,并且其可以根据存储在只读存储器(rom)42中的程序或者从存储装置48加载到随机访问存储器(ram)43中的程序而执行各种适当的动作和处理。在ram 43中,还存储有用于缓存系统模拟的设备400操作所需的各种程序和数据。处理装置41、rom 42以及ram 43通过总线44彼此相连。输入/输出(i/o)接口45也连接至总线44。通常,以下装置可以连接至i/o接口45:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置46;包括例如液晶显示器(lcd)、扬声器、振动器等的输出装置47;包括例如磁带、硬盘等的存储装置48;以及通信装置49。通信装置49可以允许用于缓存系统模拟的设备400与其他电子设备进行无线或有线通信以交换数据。
121.虽然图8示出了具有各种装置的用于缓存系统模拟的设备400,但应理解的是,并不要求实施或具备所有示出的装置,设备400可以替代地实施或具备更多或更少的装置。
122.关于用于缓存系统模拟的设备400的详细说明和技术效果,可以参考上文关于缓存系统模拟方法的相关描述,此处不再赘述。
123.图9为本公开的至少一实施例提供的一种存储介质的示意图。
124.例如,如图9所示,存储介质500用于存储非暂时性计算机可读指令510。例如,当非暂时性计算机可读指令510由计算机执行时可以执行根据上文所述的缓存系统模拟方法中的一个或多个步骤。
125.例如,该存储介质500可以应用于上述用于缓存系统模拟的设备300中。例如,存储
介质500可以为图7所示的设备300中的存储器320。例如,关于存储介质500的相关说明可以参考图7所示的用于缓存系统模拟的设备300中的存储器320的相应描述,此处不再赘述。
126.对于本公开,有以下几点需要说明:
127.(1)本公开实施例附图中,只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
128.(2)在不冲突的情况下,本公开同一实施例及不同实施例中的特征可以相互组合。
129.以上,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1