CN115033500A - 缓存***模拟方法、装置、设备和存储介质 - Google Patents

缓存***模拟方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN115033500A
CN115033500A CN202210648905.4A CN202210648905A CN115033500A CN 115033500 A CN115033500 A CN 115033500A CN 202210648905 A CN202210648905 A CN 202210648905A CN 115033500 A CN115033500 A CN 115033500A
Authority
CN
China
Prior art keywords
cache system
cache
system model
statistical
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210648905.4A
Other languages
English (en)
Inventor
陈玉平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Eswin Computing Technology Co Ltd
Original Assignee
Beijing Eswin Computing Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Eswin Computing Technology Co Ltd filed Critical Beijing Eswin Computing Technology Co Ltd
Priority to CN202210648905.4A priority Critical patent/CN115033500A/zh
Publication of CN115033500A publication Critical patent/CN115033500A/zh
Priority to US18/098,801 priority patent/US20230409476A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0853Cache with multiport tag or data arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/08Intellectual property [IP] blocks or IP cores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种缓存***模拟方法、装置、设备和存储介质。该缓存***模拟方法包括:获取缓存***模型;获取指令信息记录,其中,指令信息记录包括多个条目,多个条目中的每个条目包括请求指令以及请求指令对应的第一寻址地址;从指令信息记录读取多个条目中的至少一个条目;使用至少一个条目中的每个条目中的请求指令和第一寻址地址模拟对于缓存***模型的访问以获取缓存***模型的统计数据;基于统计数据更新缓存***模型。该缓存***模拟方法基于指令信息记录单独对缓存***进行建模,而不需要CPU或GPU的整个IP进行建模,大大减少了建模的工作量,缩短了模型收敛时间,从而可以快速得到缓存的性能数据。

Description

缓存***模拟方法、装置、设备和存储介质
技术领域
本公开的实施例涉及一种缓存***模拟方法、装置、设备和存储介质。
背景技术
在通常的计算机架构中,程序的指令与数据都保存在内存中,而处理器的运行频率远远高于内存的运行频率,因此,从内存获取数据或者指令需要上百个时钟周期,这往往会造成处理器由于无法继续运行相关指令而空转,造成性能损失。为了运行速度及访问效率,通常采用高速缓冲存储装置(Cache,或简称为缓存)来保存部分数据以供处理器高速读取,这些数据例如可以是最近被访问的数据、根据程序运行规律提前预取的数据等。
发明内容
本公开至少一实施例提供一种缓存***模拟方法。该方法包括:获取缓存***模型;获取指令信息记录,其中,所述指令信息记录包括多个条目,所述多个条目中的每个条目包括请求指令以及所述请求指令对应的第一寻址地址;从所述指令信息记录读取所述多个条目中的至少一个条目;使用所述至少一个条目中的每个条目中的所述请求指令和所述第一寻址地址模拟对于所述缓存***模型的访问以获取所述缓存***模型的统计数据;基于所述统计数据更新所述缓存***模型。
例如,在本公开至少一实施例提供的缓存***模拟方法中,所述使用所述至少一个条目中的每个条目中的所述请求指令和所述第一寻址地址模拟对于所述缓存***模型的访问以获取所述缓存***模型的统计数据包括:将所述第一寻址地址映射到所述缓存***模型中以获取统计计数器中的计数值,其中,所述缓存***模型设置为具有第一配置参数;根据所述计数值获得所述统计数据。
例如,在本公开至少一实施例提供的缓存***模拟方法中,所述基于所述统计数据更新所述缓存***模型包括:将所述统计数据与目标数据进行比较以更新所述第一配置参数。
例如,在本公开至少一实施例提供的缓存***模拟方法中,所述计数值包括第一计数值,所述统计数据包括第一统计值,所述将所述第一寻址地址映射到所述缓存***模型中以获取统计计数器中的计数值,包括:将m个所述第一寻址地址映射到所述缓存***模型中,m为大于1的整数;将m个所述第一寻址地址与所述缓存***模型中对应的多个缓存行中的地址段进行比较;响应于i个所述第一寻址地址的比较结果为命中,将所述统计计数器中的所述第一计数值更新为i,i为不大于m的正整数。
例如,在本公开至少一实施例提供的缓存***模拟方法中,所述根据所述计数值获得所述统计数据包括:根据所述第一计数值获得所述第一统计值为i/m。
例如,在本公开至少一实施例提供的缓存***模拟方法中,所述目标数据包括第一目标值,所述将所述统计数据与目标数据进行比较以更新所述第一配置参数包括:响应于所述第一统计值大于等于所述第一目标值,输出所述第一配置参数为目标第一配置参数;或者,响应于所述第一统计值小于所述第一目标值,修改所述第一配置参数。
例如,在本公开至少一实施例提供的缓存***模拟方法中,所述第一统计值为命中率,所述第一目标值为目标命中率。
例如,在本公开至少一实施例提供的缓存***模拟方法中,所述计数值包括第二计数值,所述统计数据包括第二统计值,所述将所述第一寻址地址映射到所述缓存***模型中以获取统计计数器中的计数值,包括:将n个所述第一寻址地址映射到所述缓存***模型中,n为大于1的整数;将n个所述第一寻址地址与所述缓存***模型中对应的多个缓存行中的地址段进行比较;响应于j个所述第一寻址地址的比较结果为访问冲突,将所述统计计数器中的所述第二计数值更新为j,j为不大于n的正整数。
例如,在本公开至少一实施例提供的缓存***模拟方法中,所述根据所述计数值获得所述统计数据包括:根据所述第二计数值获得所述第二统计值为j/n。
例如,在本公开至少一实施例提供的缓存***模拟方法中,所述目标数据包括第二目标值,所述将所述统计数据与目标数据进行比较以更新所述第一配置参数,包括:响应于所述第二统计值小于等于所述第二目标值,输出所述第一配置参数为目标第一配置参数;或者,响应于所述第二统计值大于所述第二目标值,修改所述第一配置参数。
例如,在本公开至少一实施例提供的缓存***模拟方法中,所述第二统计值为访问冲突率,所述第二目标值为目标访问冲突率。
例如,在本公开至少一实施例提供的缓存***模拟方法中,所述第一配置参数包括路、组、存储体或者替换策略。
例如,在本公开至少一实施例提供的缓存***模拟方法中,所述请求指令包括读取请求指令或存储请求指令。
例如,本公开至少一实施例提供的缓存***模拟方法还包括,使用脚本语言创建所述缓存***模型。
例如,在本公开至少一实施例提供的缓存***模拟方法中,所述指令信息包括跟踪日志指令信息。
本公开至少一实施例提供一种用于缓存***模拟的装置。该装置包括:获取模块,配置为获取缓存***模型,以及获取指令信息记录,其中,所述指令信息记录包括多个条目,所述多个条目中的每个条目包括请求指令以及所述请求指令对应的第一寻址地址;模拟访问模块,配置为从所述指令信息记录读取所述多个条目中的至少一个条目,以及使用所述至少一个条目中每个条目中的所述请求指令和所述第一寻址地址模拟对于所述缓存***模型的访问,以获取所述缓存***模型的统计数据;更新模块,配置为基于所述统计数据更新所述缓存***模型。
本公开至少一实施例还提供一种用于缓存***模拟的设备。该设备包括:处理器;存储器,包括一个或多个计算机程序模块;其中,所述一个或多个计算机程序模块被存储在所述存储器中并被配置为由所述处理器执行,所述一个或多个计算机程序模块包括用于实现本公开任一实施例提供的方法。
本公开至少一实施例还提供一种存储介质,用于存储非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时可以实现本公开任一实施例提供的方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1A为一种缓存基本原理的一个示例的示意图;
图1B为一种直接相联、全相联和组相联中内存和缓存的映射关系原理的示意图;
图1C为一种缓存的组相联的组织形式和寻址方式的示意图;
图1D为一种多存储体结构缓存的工作原理的示意图;
图2为本公开至少一实施例提供的一种缓存***模拟方法的示例性流程图;
图3为图2中步骤S40的示例性流程图;
图4为图2中步骤S30~S50的一个示例的示意流程图;
图5为图2中步骤S30~S50的另一个示例的示意流程图;
图6为本公开的至少一实施例提供的一种用于缓存***模拟的装置的示意框图;
图7为本公开的至少一实施例提供的一种用于缓存***模拟的设备的示意框图;
图8为本公开的至少一实施例提供的另一种用于缓存***模拟的设备的示意框图;以及
图9为本公开的至少一实施例提供的一种存储介质的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
下面通过几个具体的实施例对本公开进行说明。为了保持本公开实施例的以下说明清楚且简明,可省略已知功能和已知部件的详细说明。当本公开实施例的任一部件在一个以上的附图中出现时,该部件在每个附图中由相同或类似的参考标号表示。
图1A为一种缓存基本原理的一个示例的示意图。例如,计算机通常包括主存(mainmemory)和缓存(Cache),与对于缓存的访问速度相比,处理器(单核CPU或多核CPU的处理内核)对于主存的访问速度相对较慢,因此可以利用缓存弥补主存访问速度慢的缺陷,提高内存访问速度。
例如,在如图1A所示的计算***中,采用多级缓存,例如通常采用一级缓存(L1Cache,也称为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中寻找。若在L1Cache、L2 Cache、L3 Cache中均没有找到所需要的数据,则才会到主存中寻找。当从非L1Cache的某一级缓存或内存获取了数据或指令时,除了返回给CPU供使用之外,还会将该数据或指令填充到在前的缓存中以暂存。本公开的实施例非限制于CPU内缓存的设置方式。
缓存(Cache)的容量很小,缓存保存的内容只是主存内容的一个子集,且缓存与主存的数据交换是以块为单位的。为了把主存中的数据缓存到缓存中,例如使用某种函数把主存地址定位到缓存中,这称为地址映射。在将主存中的数据按这种映射关系缓存到缓存中后,CPU执行程序时,会将程序中的主存地址变换成缓存地址。不同类型的缓存的地址映射方式通常有直接映射、全相联和组相联映射。
虽然缓存的容量相较于主存来说较小,但是速度相较于主存来说却快得多,因此缓存的主要功能是用来存储近期处理器可能需要频繁访问到的数据。这样处理器便可以直接到缓存中进行数据读取,而无需频繁地访问速度较慢的主存,以此来提高处理器对内存的访问速度。缓存的基本单位是Cache Line,可称之为缓存块或缓存行。与缓存分成多个缓存块类似,主存中存储的数据也进行了类似划分。内存中的划分出来的数据块称为内存块。通常,一个内存块的大小可以为64字节,一个缓存块的大小也可以为64字节。可以理解的是,实际应用中,还可以将内存块和缓存行的大小设置为其他值,例如32-256字节,仅需保证内存块的大小与缓存块的大小相同即可。
图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)所示。
图1C为一种缓存的组相联的组织形式和寻址方式的示意图。如图1C所示,缓存被组织为缓存行(Cache Line)数组的形式。一列缓存行组成路(way),多列缓存行中相同位置的多个缓存行组成一个组(set);同一组内的多个缓存行彼此等价,通过不同的路来进行区分(或读取、写入)。通过要读取的数据或指令的物理地址获取数据或指令在缓存中的位置(set,way,byte),每个物理地址被分为三部分:
(1)索引(Index),用于选择缓存中的不同组(set),同一组中的所有缓存行通过相同的索引来选择;
(2)标签(Tag),用于选择同一组(set)中不同缓存行,将物理地址中的标签部分与每个路中的缓存行的标签进行比较,如果匹配,则缓存命中(Cache hit),从而选择此缓存行,否则缓存缺失(Cache miss);
(3)偏移量(Offset),用于在选中的缓存行中再选择相应的地址,其表示目标数据或指令的第一个字节在选中的缓存行中距离该缓存行第一个字节(byte)的地址差异量(偏移量),对应的数据或指令从此字节的位置读取。
为了提高缓存的命中率,需要尽可能地将最近可能使用的数据存储到缓存中。由于缓存的容量有限,当缓存的空间被写满之后,可以采用缓存替换策略将一些数据从缓存中删除,然后将新的数据写入释放出的空间中。缓存替换策略实际上是一种数据淘汰机制,采用合理的缓存替换策略,可以有效提高命中率。常用的缓存替换策略包括,但不限于,先进先出调度、最近最少使用调度、最近最不常用调度等,本公开的实施例对此不作限制。
例如,在超标量处理器中,为了提高性能,处理器需要能够在每个周期同时执行多条请求/存储(load/store)指令,这就需要一个多端口的缓存。然而,由于多端口缓存的容量比较大,且采用多端口设计,会对芯片的面积和速度带来很大的负面影响,为此可以采用多存储体结构(Multi-banking)。
图1D为一种多存储体结构缓存的工作原理的示意图。
例如,如图1D所示,该多存储体结构将缓存划分为几个小的存储体(bank),每个存储体都只有一个端口。例如,如图1D所示的双端口(端口0和端口1)的缓存将缓存划分为存储体Cache bank 0和Cache bank 1。如果在一个时钟周期内,缓存的多个端口上的访问地址位于不同的存储体之中,那么这样不会引起任何问题;只有当两个或者多个端口的地址位于同一个存储体中时,才会引起冲突,称为存储体冲突(Bank Conflict)。例如,可以通过选取合适的存储体数量来缓解存储体冲突的问题。
对于例如图1A~图1D所示的缓存,各级缓存如何设置路、组、存储体或者替换策略等性能数据,将直接影响缓存***的命中率和延迟。例如,常见的缓存***设计方法是对中央处理器(Central Processing Unit,CPU)或图形处理器(Graphics Processing Unit,GPU)的整个知识产权核(Intellectual Property Core,IP核,或者也称为IP)进行建模,通过将合适的路、组、存储体或者替换策略等性能数据设置在真实的缓存设计程序中,并运行该程序得到各级缓存的命中率或访问冲突的计算结果;根据命中率或访问冲突的计算结果,进一步优化缓存中的路、组、存储体或者替换策略等性能数据的设定,直到命中率或访问冲突的计算结果达到目标值。然而,上述缓存***设计方法需要对CPU或GPU的整个IP进行建模,工作量大且不易收敛;需要运行真实的缓存设计程序获得命中率或访问冲突等数据,受限于指令级架构导致计算速度较低。
本公开至少一实施例提供一种缓存***模拟方法。该方法包括:获取缓存***模型;获取指令信息记录,其中,指令信息记录包括多个条目,多个条目中的每个条目包括请求指令以及请求指令对应的第一寻址地址;从指令信息记录读取多个条目中的至少一个条目;使用至少一个条目中的每个条目中的请求指令和第一寻址地址模拟对于缓存***模型的访问以获取缓存***模型的统计数据;基于统计数据更新缓存***模型。
本公开的多个实施例还提供一种对应于执行上述缓存***模拟方法的装置、设备或存储介质。
本公开至少一实施例提供的缓存***模拟方法、装置、设备和存储介质,基于指令信息记录单独对缓存***进行建模,而不需要CPU或GPU的整个IP进行建模,大大减少了建模的工作量,缩短了模型收敛时间,从而可以快速得到缓存的性能数据。
下面,将参考附图详细地说明本公开至少一实施例。应当注意的是,不同的附图中相同的附图标记将用于指代已描述的相同的元件。
图2为本公开至少一实施例提供的一种缓存***模拟方法的示例性流程图。
例如,如图2所示,本公开至少一实施例提供了一种缓存***模拟方法,该缓存***模拟方法用于缓存***的设计。例如,该缓存***模拟方法包括以下步骤S10~S50。
步骤S10:获取缓存***模型;
步骤S20:获取指令信息记录;
步骤S30:从指令信息记录读取多个条目中的至少一个条目;
步骤S40:使用至少一个条目中的每个条目中的请求指令和第一寻址地址模拟对于缓存***模型的访问以获取缓存***模型的统计数据;
步骤S50:基于统计数据更新缓存***模型。
例如,在步骤S10中,获取的缓存***模型可以为例如图1A所示的多级缓存,或者可以为其中的某一级缓存;该缓存的地址映射方式可以为直接映射、全相联或组相联映射等;本公开的实施例对此不作限制。
例如,本公开至少一实施例提供的缓存***模拟方法还包括,使用脚本语言创建例如步骤S10中的缓存***模型。例如,该脚本语言可以为perl语言或者python语言,或者可以为其他能够实现对缓存***进行建模的功能的脚本语言,本公开的实施例对此不作限制。
例如,在步骤S20中,指令信息记录包括多个条目,多个条目中的每个条目包括请求指令(request)以及请求指令对应的第一寻址地址(address)。例如,请求指令包括读取请求指令(load)或存储请求指令(store),第一寻址地址可以为读取请求指令或存储请求指令所携带的地址。
例如,指令信息记录可以包括跟踪日志指令信息(trace log),该跟踪日志指令信息可以通过硬件平台或开源网站等直接获得。例如,一个示例性的跟踪日志指令信息可以包括如下内容:
循环数 request类型 address load数据/store数据
1 load 0x8000_0000 0x5555_5555
5 store 0x8000_0010 0x5a5a_5a5a
在本公开的实施例中,可以通过硬件平台或开源网站等获取例如跟踪日志指令信息的指令信息记录,以使用该指令信息记录单独对缓存***进行建模。由于该指令信息记录易于获取,基于该指令信息进行缓存***模拟的计算效率更高,并且可以针对客户需求做定制化优化。
例如,在步骤S30中,从指令信息记录读取多个条目中的至少一个条目,以获取至少一个条目中的每个条目中的请求指令和第一寻址地址。例如,脚本语言中包括用于执行文件读取的***函数,通过调用该***函数可以直接读取指令信息记录中的信息。例如,每次读取指令信息记录中的一个条目(例如,跟踪日志指令信息中的一行),以获取该条目中的请求指令、请求指令对应的第一寻址地址等信息。
例如,在步骤S40中,使用读取到的每个条目中的请求指令和第一寻址地址,可以模拟对于缓存***模型的访问的过程,例如,主要完成请求指令对应的第一寻址地址到缓存的中的路(way)、组(set)、存储体(bank)等的映射,具体地,可以将第一寻址地址与缓存***模型中对应的多个缓存行(Cache Line)中的地址段(tag)进行比较,从而获取缓存***模型的统计数据。
例如,统计数据可以为缓存的命中率(hit ratio)或访问冲突率(bank conflictratio),也可以为其他反映缓存***功能状态的其他数据,本公开的实施例对此不作限制。
例如,在步骤S50中,基于在步骤S40中获取的统计数据来更新缓存***模型中的一个或多个配置参数,例如,更新缓存中的路(way)、组(set)或存储体(bank)等的地址映射或者更新替换策略,以达到最优的缓存命中率和最少的访问冲突。
在本公开的实施例提供的缓存***模拟方法中,可以基于指令信息记录单独对缓存***进行建模,而不需要CPU或GPU的整个IP进行建模,大大减少了建模的工作量,缩短了模型收敛时间,从而可以快速得到缓存的性能数据。
图3为图2中步骤S40的示例性流程图。
例如,使用在步骤S30中从指令信息记录读取的至少一个条目中的每个条目包括的请求指令以及请求指令对应的第一寻址地址,可以模拟对于缓存***模型的访问以获取缓存***模型的统计数据。例如,如图3所示,图2所示的模拟方法中的步骤S40包括以下步骤S410~S430。
步骤S210:将第一寻址地址映射到缓存***模型中以获取统计计数器中的计数值;
步骤S220:根据计数值获得统计数据。
例如,在本公开的实施例中,缓存***模型设置为具有第一配置参数,该第一配置参数包括路、组、存储体或者替换策略等。例如,在步骤S210中,可以通过在缓存***模型中设置统计计数器,将第一寻址地址映射到设置为第一参数的缓存***模型中以更新统计计数器的计数值。例如,在步骤S210中,根据计数值获得统计数据,并且步骤S210还包括,将统计数据与目标数据进行比较以更新第一配置参数。例如,更新缓存的第一配置参数,以使统计数据达到目标数据所允许的范围。
图4为图2中步骤S30~S50的一个示例的示意流程图;
例如,如图4所示,计数值包括第一计数值,统计数据包括第一统计值,目标数据包括第一目标值。例如,在图4的示例中,第一统计值为命中率,第一目标值为目标命中率。
例如,如图4所示,首先,基于在步骤S10获取的缓存***模型,以及基于在步骤S20获取的指令信息记录,在“开始”阶段开始运行缓存***模型的脚本。例如,如上所述,该指令信息记录可以为通过硬件平台或开源网站直接获得的跟踪日志指令信息(trace log)。
然后,执行如图2所示的步骤S30。例如,在步骤S31中,统计指令信息记录中待读取的条目的数量(例如,跟踪日志指令信息中待读取的请求指令的数量),在图4的示例中,信息记录中待读取的条目的数量为m,m为大于1的整数。
例如,在步骤S32中,逐一读取指令信息记录中的条目。例如,脚本语言中包括用于执行文件读取的***函数(例如,$readfile函数),通过调用该***函数可以直接读取指令信息记录中的信息,例如,在步骤S32中,读取指令信息记录中的一个条目(例如,跟踪日志指令信息中的一行),以获取该条目中的请求指令、请求指令对应的第一寻址地址等信息。
例如,继续执行如图2所示的步骤S40。例如,在图4的示例中,如图2所示的步骤S40包括:将m个第一寻址地址映射到缓存***模型中(例如,m为步骤S31中统计的信息记录中待读取的条目的数量);将m个第一寻址地址与缓存***模型中对应的多个缓存行中的地址段进行比较;响应于i个第一寻址地址的比较结果为命中,将统计计数器中的第一计数值更新为i,i为不大于m的正整数。例如,根据第一计数值可以获得第一统计值为i/m。
例如,如图4所示,在步骤S41中,将在步骤S32中读取到的指令信息记录条目中的第一寻址地址映射到缓存***模型中,例如,主要完成第一寻址地址到缓存***模型的中第一配置参数的映射,该第一配置参数包括路(way)、组(set)、存储体(bank)或者替换策略等。具体地,例如,在步骤S42中,将第一寻址地址与缓存***模型中对应的多个缓存行(Cache Line)中的地址段(tag)进行比较。
例如,在步骤S43中,判断第一寻址地址的比较结果是否为命中:响应于第一寻址地址的比较结果为命中(Cache hit),在步骤S44中,将计数器的计数值加1,然后进行步骤S45;响应于第一寻址地址的比较结果为缺失(Cache miss),计数器的计数值不变,直接进行步骤S45。
例如,在步骤S45中,判断指令信息记录中的待读取条目是否读取完成:响应于指令信息记录中的待读取条目读取完成,直接进行步骤S46;响应于指令信息记录中的待读取条目未读取完成,返回步骤S32,以读取指令信息记录中的下一个条目并对该条目执行步骤S41~S45的进程。
例如,在步骤S46中,映射到缓存***模型中的第一寻址地址为m个(例如,m为步骤S31中统计的信息记录中待读取的条目的数量),统计计数器中的第一计数值最终更新结果为i,也即是,i个第一寻址地址的比较结果为命中,从而获得第一统计值(命中率)为i/m。
例如,继续执行如图2所示的步骤S50。例如,如图4所示,在步骤S51中,判断第一统计值是否大于等于第一目标值:响应于第一统计值大于等于第一目标值,在步骤S52中,输出第一配置参数为目标第一配置参数;响应于第一统计值小于第一目标值,在步骤S53中,修改第一配置参数。
例如,修改第一配置参数后,再次执行本公开至少一实施例提供的缓存***模拟方法,直到获得的第一统计值大于等于第一目标值(也即是,获得最优的第一统计值)。
例如,第一统计值为命中率,第一目标值为目标命中率。例如,修改第一配置参数,可以为修改缓存***模型中的路(way)、组(set)、存储体(bank)或者替换策略等,以达到最优的缓存命中率。
图5为图2中步骤S30~S50的另一个示例的示意流程图。
例如,如图5所示,计数值包括第二计数值,统计数据包括第二统计值,目标数据包括第二目标值。例如,在图5的示例中,第二统计值为访问冲突率,第二目标值为目标访问冲突率。
例如,如图5所示,首先,基于在步骤S10获取的缓存***模型,以及基于在步骤S20获取的指令信息记录,在“开始”阶段开始运行缓存***模型的脚本。例如,同样地,该指令信息记录可以为通过硬件平台或开源网站直接获得的跟踪日志指令信息(trace log)。
然后,执行如图2所示的步骤S30。例如,在步骤S301中,统计指令信息记录中待读取的条目的数量(例如,跟踪日志指令信息中待读取的请求指令的数量),在图5的示例中,信息记录中待读取的条目的数量为n,n为大于1的整数。
例如,在步骤S302中,逐一读取指令信息记录中的条目。例如,脚本语言中包括用于执行文件读取的***函数(例如,$readfile函数),通过调用该***函数可以直接读取指令信息记录中的信息,例如,在步骤S302中,读取指令信息记录中的一个条目(例如,跟踪日志指令信息中的一行),以获取该条目中的请求指令、请求指令对应的第一寻址地址等信息。
例如,继续执行如图2所示的步骤S40。例如,在图5的示例中,如图2所示的步骤S40包括:将n个第一寻址地址映射到缓存***模型中(例如,n为步骤S301中统计的信息记录中待读取的条目的数量);将n个第一寻址地址与缓存***模型中对应的多个缓存行中的地址段进行比较;响应于j个第一寻址地址的比较结果为访问冲突,将统计计数器中的第二计数值更新为j,j为不大于n的正整数。例如,根据第二计数值获得第二统计值为j/n。
例如,如图5所示,在步骤S401中,将在步骤S302中读取到的指令信息记录条目中的第一寻址地址映射到缓存***模型中,例如,主要完成第一寻址地址到缓存***模型的中第一配置参数的映射,该第一配置参数包括路(way)、组(set)、存储体(bank)或者替换策略等。具体地,例如,在步骤S402中,将第一寻址地址与缓存***模型中对应的多个缓存行(Cache Line)中的地址段(tag)进行比较。
例如,在步骤S403中,判断第一寻址地址的比较结果是否为访问冲突(BankConflict):响应于第一寻址地址的比较结果为访问冲突,在步骤S404中,将计数器的计数值加1,然后进行步骤S405;响应于第一寻址地址的比较结果不是访问冲突,计数器的计数值不变,直接进行步骤S405。
例如,在步骤S405中,判断指令信息记录中的待读取条目是否读取完成:响应于指令信息记录中的待读取条目读取完成,直接进行步骤S406;响应于指令信息记录中的待读取条目未读取完成,返回步骤S302,以读取指令信息记录中的下一个条目并对该条目执行步骤S401~S405的进程。
例如,在步骤S406中,映射到缓存***模型中的第一寻址地址为n个(例如,n为步骤S301中统计的信息记录中待读取的条目的数量),统计计数器中的第二计数值最终更新结果为j,也即是,j个第一寻址地址的比较结果为命中,从而获得第二统计值(访问冲突率)为j/n。
例如,继续执行如图2所示的步骤S50。例如,如图5所示,在步骤S501中,判断第二统计值是否小于等于第二目标值:响应于第二统计值小于等于第二目标值,在步骤S502中,输出第一配置参数为目标第一配置参数;响应于第二统计值大于第二目标值,在步骤S503中,修改第一配置参数。
例如,修改第一配置参数后,再次执行本公开至少一实施例提供的缓存***模拟方法,直到获得的第二统计值小于等于第二目标值(也即是,获得最优的第二统计值)。
例如,第二统计值为访问冲突率,第二目标值为目标访问冲突率。例如,修改第一配置参数,可以为修改缓存***模型中的路(way)、组(set)、存储体(bank)或者替换策略等,以达到最少的访问冲突。
图6为本公开的至少一实施例提供的一种用于缓存***模拟的装置的示意框图。
例如,本公开至少一实施例提供一种用于缓存***模拟的装置。如图6所示,该装置200包括获取模块210、模拟访问模块220和更新模块230。
例如,获取模块210配置为获取缓存***模型,以及获取指令信息记录。例如,指令信息记录包括多个条目,多个条目中的每个条目包括请求指令以及该请求指令对应的第一寻址地址。也即是,该获取模块210可以被配置为执行例如图2所示的步骤S10~S20。
例如,模拟访问模块220配置为从指令信息记录读取多个条目中的至少一个条目,以及使用至少一个条目中每个条目中的请求指令和第一寻址地址模拟对于缓存***模型的访问,以获取缓存***模型的统计数据。也即是,该模拟访问模块220可以被配置为执行例如图2所示的步骤S30~S40。
例如,更新模块230配置为基于统计数据更新缓存***模型。也即是,该更新模块230可以被配置为执行例如图2所示的步骤S50。
由于在上述描述例如图2所示的缓存***模拟方法的过程中,已经对上述用于缓存***模拟的装置200的操作所涉及的内容的细节进行了介绍,因此这里为简洁起见不再赘述,相关细节可参照以上关于图1~图5的描述。
需要说明的是,图6所示的用于缓存***模拟的装置200中上述的各个模块可被分别配置为执行特定功能的软件、硬件、固件或上述项的任意组合。例如,这些模块可对应于专用的集成电路,也可对应于纯粹的软件代码,还可对应于软件与硬件相结合的模块。作为示例,参照图6描述的装置可以是PC计算机、平板装置、个人数字助理、智能手机、web应用或其它能够执行程序指令的装置,但不限于此。
另外,尽管以上在描述用于缓存***模拟的装置200时将其划分为用于分别执行相应处理的模块,然而,本领域技术人员清楚的是,各模块执行的处理也可以在装置中不进行任何具体模块划分或者各模块之间并无明确划界的情况下执行。此外,以上参照图6描述的用于缓存***模拟的装置200并不限于包括以上描述的模块,而是还可以根据需要增加一些其它模块(例如,存储模块、数据处理模块等),或者以上模块也可被组合。
本公开的至少一实施例还提供一种用于缓存***模拟的设备,该设备包括处理器和存储器;该存储器包括一个或多个计算机程序模块;一个或多个计算机程序模块被存储在存储器中并被配置为由处理器执行,一个或多个计算机程序模块包括用于实现上文所述的本公开的实施例提供的缓存***模拟方法。
图7为本公开的至少一实施例提供的一种用于缓存***模拟的设备的示意框图。
例如,如图7所示,该用于缓存***模拟的设备300包括处理器310和存储器320。例如,存储器320用于存储非暂时性计算机可读指令(例如一个或多个计算机程序模块)。处理器310用于运行非暂时性计算机可读指令,非暂时性计算机可读指令被处理器310运行时可以执行根据上文所述的缓存***模拟方法的一个或多个步骤。存储器320和处理器310可以通过总线***和/或其它形式的连接机构(未示出)互连。
例如,处理器310可以是中央处理单元(CPU)、数字信号处理器(DSP)或者具有数据处理能力和/或程序执行能力的其它形式的处理单元,例如现场可编程门阵列(FPGA)等;例如,中央处理单元(CPU)可以为X86或ARM架构等。处理器310可以为通用处理器或专用处理器,可以控制自适应电压与频率调节设备300中的其它组件以执行期望的功能。
例如,存储器320可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序模块,处理器310可以运行一个或多个计算机程序模块,以实现设备300的各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据以及应用程序使用和/或产生的各种数据等。
需要说明的是,本公开的实施例中,用于缓存***模拟的设备300的具体功能和技术效果可以参考上文中关于本公开至少一实施例提供的缓存***模拟方法的描述,此处不再赘述。
图8为本公开的至少一实施例提供的另一种用于缓存***模拟的设备的示意框图。
例如,如图8所示,该用于缓存***模拟的设备400例如适于用来实施本公开实施例提供的缓存***模拟方法。需要注意的是,图8示出的用于缓存***模拟的设备400仅是一个示例,其不会对本公开实施例的功能和使用范围带来任何限制。
例如,如图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与其他电子设备进行无线或有线通信以交换数据。
虽然图8示出了具有各种装置的用于缓存***模拟的设备400,但应理解的是,并不要求实施或具备所有示出的装置,设备400可以替代地实施或具备更多或更少的装置。
关于用于缓存***模拟的设备400的详细说明和技术效果,可以参考上文关于缓存***模拟方法的相关描述,此处不再赘述。
图9为本公开的至少一实施例提供的一种存储介质的示意图。
例如,如图9所示,存储介质500用于存储非暂时性计算机可读指令510。例如,当非暂时性计算机可读指令510由计算机执行时可以执行根据上文所述的缓存***模拟方法中的一个或多个步骤。
例如,该存储介质500可以应用于上述用于缓存***模拟的设备300中。例如,存储介质500可以为图7所示的设备300中的存储器320。例如,关于存储介质500的相关说明可以参考图7所示的用于缓存***模拟的设备300中的存储器320的相应描述,此处不再赘述。
对于本公开,有以下几点需要说明:
(1)本公开实施例附图中,只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开同一实施例及不同实施例中的特征可以相互组合。
以上,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。

Claims (18)

1.一种缓存***模拟方法,包括:
获取缓存***模型;
获取指令信息记录,其中,所述指令信息记录包括多个条目,所述多个条目中的每个条目包括请求指令以及所述请求指令对应的第一寻址地址;
从所述指令信息记录读取所述多个条目中的至少一个条目;
使用所述至少一个条目中的每个条目中的所述请求指令和所述第一寻址地址模拟对于所述缓存***模型的访问以获取所述缓存***模型的统计数据;
基于所述统计数据更新所述缓存***模型。
2.根据权利要求1所述的模拟方法,其中,所述使用所述至少一个条目中的每个条目中的所述请求指令和所述第一寻址地址模拟对于所述缓存***模型的访问以获取所述缓存***模型的统计数据包括:
将所述第一寻址地址映射到所述缓存***模型中以获取统计计数器中的计数值,其中,所述缓存***模型设置为具有第一配置参数;
根据所述计数值获得所述统计数据。
3.根据权利要求2所述的模拟方法,其中,所述基于所述统计数据更新所述缓存***模型包括:
将所述统计数据与目标数据进行比较以更新所述第一配置参数。
4.根据权利要求3所述的模拟方法,其中,所述计数值包括第一计数值,所述统计数据包括第一统计值,
所述将所述第一寻址地址映射到所述缓存***模型中以获取统计计数器中的计数值,包括:
将m个所述第一寻址地址映射到所述缓存***模型中,m为大于1的整数;
将m个所述第一寻址地址与所述缓存***模型中对应的多个缓存行中的地址段进行比较;
响应于i个所述第一寻址地址的比较结果为命中,将所述统计计数器中的所述第一计数值更新为i,i为不大于m的正整数。
5.根据权利要求4所述的模拟方法,其中,所述根据所述计数值获得所述统计数据包括:
根据所述第一计数值获得所述第一统计值为i/m。
6.根据权利要求5所述的模拟方法,其中,所述目标数据包括第一目标值,
所述将所述统计数据与目标数据进行比较以更新所述第一配置参数包括:
响应于所述第一统计值大于等于所述第一目标值,输出所述第一配置参数为目标第一配置参数;或者,
响应于所述第一统计值小于所述第一目标值,修改所述第一配置参数。
7.根据权利要求4所述的模拟方法,其中,所述第一统计值为命中率,所述第一目标值为目标命中率。
8.根据权利要求3所述的模拟方法,其中,所述计数值包括第二计数值,所述统计数据包括第二统计值,
所述将所述第一寻址地址映射到所述缓存***模型中以获取统计计数器中的计数值,包括:
将n个所述第一寻址地址映射到所述缓存***模型中,n为大于1的整数;
将n个所述第一寻址地址与所述缓存***模型中对应的多个缓存行中的地址段进行比较;
响应于j个所述第一寻址地址的比较结果为访问冲突,将所述统计计数器中的所述第二计数值更新为j,j为不大于n的正整数。
9.根据权利要求8所述的模拟方法,其中,所述根据所述计数值获得所述统计数据包括:
根据所述第二计数值获得所述第二统计值为j/n。
10.根据权利要求9所述的模拟方法,其中,所述目标数据包括第二目标值,
所述将所述统计数据与目标数据进行比较以更新所述第一配置参数,包括:
响应于所述第二统计值小于等于所述第二目标值,输出所述第一配置参数为目标第一配置参数;或者,
响应于所述第二统计值大于所述第二目标值,修改所述第一配置参数。
11.根据权利要求8所述的模拟方法,其中,所述第二统计值为访问冲突率,所述第二目标值为目标访问冲突率。
12.根据权利要求2所述的模拟方法,其中,所述第一配置参数包括路、组、存储体或者替换策略。
13.根据权利要求1-12任一所述的模拟方法,其中,所述请求指令包括读取请求指令或存储请求指令。
14.根据权利要求1-12任一所述的模拟方法,还包括:
使用脚本语言创建所述缓存***模型。
15.根据权利要求1-12任一所述的模拟方法,其中,所述指令信息包括跟踪日志指令信息。
16.一种用于缓存***模拟的装置,包括:
获取模块,配置为获取缓存***模型,以及获取指令信息记录,其中,所述指令信息记录包括多个条目,所述多个条目中的每个条目包括请求指令以及所述请求指令对应的第一寻址地址;
模拟访问模块,配置为从所述指令信息记录读取所述多个条目中的至少一个条目,以及使用所述至少一个条目中每个条目中的所述请求指令和所述第一寻址地址模拟对于所述缓存***模型的访问,以获取所述缓存***模型的统计数据;
更新模块,配置为基于所述统计数据更新所述缓存***模型。
17.一种用于缓存***模拟的设备,包括:
处理器;
存储器,包括一个或多个计算机程序模块;
其中,所述一个或多个计算机程序模块被存储在所述存储器中并被配置为由所述处理器执行,所述一个或多个计算机程序模块用于实现权利要求1-15任一所述的模拟方法。
18.一种存储介质,用于存储非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时可以实现权利要求1-15任一所述的模拟方法。
CN202210648905.4A 2022-06-09 2022-06-09 缓存***模拟方法、装置、设备和存储介质 Pending CN115033500A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210648905.4A CN115033500A (zh) 2022-06-09 2022-06-09 缓存***模拟方法、装置、设备和存储介质
US18/098,801 US20230409476A1 (en) 2022-06-09 2023-01-19 Cache system simulating method, apparatus, device and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210648905.4A CN115033500A (zh) 2022-06-09 2022-06-09 缓存***模拟方法、装置、设备和存储介质

Publications (1)

Publication Number Publication Date
CN115033500A true CN115033500A (zh) 2022-09-09

Family

ID=83123007

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210648905.4A Pending CN115033500A (zh) 2022-06-09 2022-06-09 缓存***模拟方法、装置、设备和存储介质

Country Status (2)

Country Link
US (1) US20230409476A1 (zh)
CN (1) CN115033500A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115757203A (zh) * 2023-01-10 2023-03-07 摩尔线程智能科技(北京)有限责任公司 访存策略管理方法及装置、处理器和计算设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115757203A (zh) * 2023-01-10 2023-03-07 摩尔线程智能科技(北京)有限责任公司 访存策略管理方法及装置、处理器和计算设备
CN115757203B (zh) * 2023-01-10 2023-10-10 摩尔线程智能科技(北京)有限责任公司 访存策略管理方法及装置、处理器和计算设备

Also Published As

Publication number Publication date
US20230409476A1 (en) 2023-12-21

Similar Documents

Publication Publication Date Title
US10740247B2 (en) Method for accessing entry in translation lookaside buffer TLB and processing chip
US9727471B2 (en) Method and apparatus for stream buffer management instructions
US9405703B2 (en) Translation lookaside buffer
US8825946B2 (en) Memory system and data writing method
CN100392623C (zh) 用于从地址高速缓存去除条目的方法和设备
CN107315694B (zh) 一种缓存一致性管理方法及节点控制器
US11500828B1 (en) Method and device for constructing database model with ID-based data indexing-enabled data accessing
CN113934655B (zh) 解决高速缓冲存储器地址二义性问题的方法和装置
CN114580344A (zh) 测试激励生成方法、验证方法、验证***及相关设备
US20220269615A1 (en) Cache-based trace logging using tags in system memory
CN104461607A (zh) 缓存引导数据的固态驱动器
KR20240070630A (ko) 의사 lru 보충 에이지 정보로 재참조 간격 예측(rrip)
CN114385089B (zh) 一种基于交叉编址的动态bank存储方法、装置及电子设备
CN115269454A (zh) 数据访问方法、电子设备和存储介质
US20230409476A1 (en) Cache system simulating method, apparatus, device and storage medium
US11138291B2 (en) Assymetric allocation of SRAM and data layout for efficient matrix multiplication
US20140122807A1 (en) Memory address translations
US20240193092A1 (en) Processor support for using cache way-locking to simultaneously record plural execution contexts into independent execution traces
JP2013101563A (ja) プログラム変換装置、プログラム変換方法、および変換プログラム
CN113986775A (zh) 一种risc-v cpu验证中页表项生成方法、***及装置
US20160140034A1 (en) Devices and methods for linked list array hardware implementation
CN107066208B (zh) 一种外存设备的非对称读写方法及nvm外存设备
US10025717B1 (en) Multi-dimensional prefetching
CN116185910B (zh) 访问设备内存、管理设备内存的方法、设备和介质
US11687453B2 (en) Cache-based trace logging using tags in an upper-level cache

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 101102 Room 101, 1/F, Building 3, No. 18 Courtyard, Kechuang 10th Street, Beijing Economic and Technological Development Zone, Daxing District, Beijing

Applicant after: Beijing ESWIN Computing Technology Co.,Ltd.

Address before: Room 101, 1st Floor, Building 3, Yard 18, Kechuang 14th Street, Economic and Technological Development Zone, Daxing District, Beijing 101102

Applicant before: Beijing ESWIN Computing Technology Co.,Ltd.

CB02 Change of applicant information