CN117331854B - 缓存处理方法、装置、电子设备及介质 - Google Patents
缓存处理方法、装置、电子设备及介质 Download PDFInfo
- Publication number
- CN117331854B CN117331854B CN202311316370.1A CN202311316370A CN117331854B CN 117331854 B CN117331854 B CN 117331854B CN 202311316370 A CN202311316370 A CN 202311316370A CN 117331854 B CN117331854 B CN 117331854B
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- address
- request
- virtual address
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 16
- 238000000034 method Methods 0.000 claims abstract description 73
- 238000012545 processing Methods 0.000 claims abstract description 26
- 238000013507 mapping Methods 0.000 claims description 221
- 238000004422 calculation algorithm Methods 0.000 claims description 27
- 238000013519 translation Methods 0.000 claims description 24
- 238000006243 chemical reaction Methods 0.000 claims description 13
- 238000004364 calculation method Methods 0.000 claims description 11
- 239000011159 matrix material Substances 0.000 description 24
- 238000010586 diagram Methods 0.000 description 15
- 238000004590 computer program Methods 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 10
- 238000012423 maintenance Methods 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 239000000872 buffer Substances 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012216 screening Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供一种缓存处理方法、装置、电子设备及介质。方法包括根据数据加载请求获得请求虚拟地址,其索引域包括页标识位;获取请求虚拟地址对应的请求物理地址;在本级数据缓存的数据阵列中确定预测缓存行,若其预测物理地址标识域与请求物理地址标识域不同,则从本级数据缓存中确定重读物理地址标识域,返回重读缓存行中的重读缓存数据;若重读物理地址标识域对应的虚拟地址页标识位与请求虚拟地址页标识位不同,则将重读缓存数据写入的更新缓存行,并将更新缓存行的有效位更新为表征有效的值,将重读缓存行的有效位更新为表征无效的值。本申请的方法使数据缓存的索引范围能够跨页,在扩展缓存容量的同时,保障数据访问的准确性。
Description
技术领域
本申请涉及计算机缓存技术,尤其涉及一种缓存处理方法、装置、电子设备及介质。
背景技术
随着处理器的发展,外部存储的工作速度与处理器的工作频率差距越来越大,因此在现代计算机体系中,缓存(cache)作为协调处理器内核的工作速度和外部存储的工作速度的缓冲器,已经成为了处理器系统不可或缺的一部分。具体的,当处理器内核需要访问数据时,会先从缓存中进行查找。如果数据在缓存中,即缓存命中,则直接在缓存下执行数据访问,当缓存中没有相应数据时,可以访问下一级缓存,以此类推直至访问主存储器。
实际应用中,伴随处理器性能的不断提高以及主存储器容量的扩展,对缓存的容量也提出了更高要求。在一些技术中,采用多页架构可以实现缓存容量的提升,但是针对多页缓存进行数据访问时可能面临跨页的情形,影响数据访问的准确性。
发明内容
本申请提供一种缓存处理方法、装置、电子设备及介质,用以使数据缓存的索引范围能够跨页,在扩展缓存容量的同时,保障数据访问的准确性。
一方面,本申请提供一种缓存处理方法,包括:
根据处理器内核的数据加载请求,获得请求虚拟地址;所述请求虚拟地址的索引域包括页标识位,不同所述页标识位的值表征所述请求虚拟地址对应的缓存行在本级数据缓存的数据阵列中位于不同的页;所述本级数据缓存的数据阵列包括多个页;
根据所述请求虚拟地址,查询地址转换缓存,获得所述请求虚拟地址对应的请求物理地址;根据所述请求虚拟地址的索引域,在所述本级数据缓存的数据阵列中确定一个组;基于路预测技术,在该组中确定预测缓存行;
若所述预测缓存行对应的预测物理地址的标识域与所述请求物理地址的标识域不同,则根据所述请求虚拟地址的索引域除所述页标志位以外的各个位,从所述本级数据缓存的地址阵列中确定多个物理地址的标识域;在所述多个物理地址的标识域中,确定重读物理地址的标识域,其中所述重读物理地址的标识域与所述请求物理地址的标识域相同,将所述重读物理地址的标识域对应的缓存行作为重读缓存行,从所述重读缓存行中获取重读缓存数据,并向所述处理器内核返回所述重读缓存数据;
若所述重读物理地址的标识域对应的虚拟地址的页标识位与所述请求虚拟地址的页标识位不同,则将所述重读缓存数据写入本级数据缓存中的更新缓存行,并将所述更新缓存行的有效位更新为表征有效的值;以及,将所述重读缓存行的有效位,更新为表征无效的值。
可选的,所述方法还包括:
若所述预测缓存行对应的预测物理地址的标识域与所述请求物理地址的标识域相同,则根据所述请求虚拟地址的偏移域,从所述预测缓存行中获取预测缓存数据,并向所述处理器内核返回所述预测缓存数据。
可选的,所述方法还包括:
若所述请求物理地址的标识域与所述多个物理地址的标识域均不同,则向下一级数据缓存发送所述数据加载请求,以使所述下一级数据缓存根据所述数据加载请求返回目标数据;
向所述处理器内核返回所述目标数据;以及,将所述目标数据写入本级数据缓存中的更新缓存行,并将所述更新缓存行的有效位更新为表征有效的值。
可选的,所述方法还包括:
基于最近最少使用算法,从所述本级数据缓存的数据阵列中与请求虚拟地址的索引域对应的一个组中确定所述更新缓存行,并清除所述更新缓存行中当前的数据。
可选的,所述根据所述请求虚拟地址,查询地址转换缓存,获得所述请求虚拟地址对应的请求物理地址,包括:
查询地址转换快表中是否存在所述请求虚拟地址的地址映射;所述地址映射表征虚拟地址和物理地址之间的对应关系;所述地址转换快表用于记录部分虚拟地址的地址映射;
若存在,则根据所述地址转换快表中所述请求虚拟地址的地址映射,得到所述请求虚拟地址对应的请求物理地址;
若不存在,则从下一级地址映射存储中获取所述请求虚拟地址的地址映射,根据所述地址映射存储中所述请求虚拟地址的地址映射,得到所述请求虚拟地址对应的请求物理地址,并将所述请求虚拟地址的地址映射加入所述地址转换快表;所述地址映射存储用于存储所有虚拟地址的地址映射。
可选的,所述请求虚拟地址的页标识位为所述请求虚拟地址的最高位。
另一方面,本申请提供一种缓存处理装置,应用于本级数据缓存,包括:
第二地址计算部件,用于根据处理器内核的数据加载请求,获得请求虚拟地址;所述请求虚拟地址的索引域包括页标识位,不同所述页标识位的值表征所述请求虚拟地址对应的缓存行在本级数据缓存的数据阵列中位于不同的页;所述本级数据缓存的数据阵列包括多个页;
第二映射查询模块,用于根据所述请求虚拟地址,查询地址转换缓存,获得所述请求虚拟地址对应的请求物理地址;
第二缓存查询模块,用于根据所述请求虚拟地址的索引域,在所述本级数据缓存的数据阵列中确定一个组;基于路预测技术,在该组中确定预测缓存行;
重读模块,用于若所述预测缓存行对应的预测物理地址的标识域与所述请求物理地址的标识域不同,则根据所述请求虚拟地址的索引域除所述页标志位以外的各个位,从所述本级数据缓存的地址阵列中确定多个物理地址的标识域;在所述多个物理地址的标识域中,确定重读物理地址的标识域,其中所述重读物理地址的标识域与所述请求物理地址的标识域相同,将所述重读物理地址的标识域对应的缓存行作为重读缓存行,从所述重读缓存行中获取重读缓存数据;
第二结果选择模块,用于向所述处理器内核返回所述重读缓存数据;
第二缓存更新模块,用于若所述重读物理地址的标识域对应的虚拟地址的页标识位与所述请求虚拟地址的页标识位不同,则将所述重读缓存数据写入本级数据缓存中的更新缓存行;
标识比较模块,用于将所述更新缓存行的有效位更新为表征有效的值;以及,将所述重读缓存行的有效位,更新为表征无效的值。
可选的,所述装置还包括,数据读取模块,用于:
若所述预测缓存行对应的预测物理地址的标识域与所述请求物理地址的标识域相同,则根据所述请求虚拟地址的偏移域,从所述预测缓存行中获取预测缓存数据;
所述第二结果选择模块,还用于向所述处理器内核返回所述预测缓存数据。
可选的,所述装置还包括:
第二缺失队列,用于若所述请求物理地址的标识域与所述多个物理地址的标识域均不同,则向下一级数据缓存发送所述数据加载请求,以使所述下一级数据缓存根据所述数据加载请求返回目标数据;
所述第二结果选择模块,还用于向所述处理器内核返回所述目标数据;
所述第二缓存更新模块,还用于将所述目标数据写入本级数据缓存中的更新缓存行;
所述第二缺失队列,还用于将所述更新缓存行的有效位更新为表征有效的值。
可选的,所述第二缓存更新模块还用于:
基于最近最少使用算法,从所述本级数据缓存的数据阵列中与请求虚拟地址的索引域对应的一个组中确定所述更新缓存行,并清除所述更新缓存行中当前的数据。
可选的,所述第二映射查询模块,具体用于:
查询第一级地址映射存储中是否存在所述请求虚拟地址的地址映射;所述地址映射表征虚拟地址和物理地址之间的对应关系;
若存在,则根据所述第一级地址映射存储中所述请求虚拟地址的地址映射,得到所述请求虚拟地址对应的请求物理地址;
若不存在,则从下一级地址映射存储中获取所述请求虚拟地址的地址映射,根据所述下一级地址映射存储中所述请求虚拟地址的地址映射,得到所述请求虚拟地址对应的请求物理地址,并将所述请求虚拟地址的地址映射加入所述第一级地址映射存储;除最后一级以外的地址映射存储用于记录部分虚拟地址的地址映射,最后一级地址映射存储用于存储所有虚拟地址的地址映射。
可选的,所述请求虚拟地址的页标识位为所述请求虚拟地址的索引域的最高位。
又一方面,本申请提供一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;所述存储器存储计算机执行指令;所述处理器执行所述存储器存储的计算机执行指令,以实现如前所述的方法。
又一方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如前所述的方法。
本申请提供的缓存处理方法、装置、电子设备及介质中,在缓存行的虚拟地址中定义页标识位来表征缓存行所在的页,基于处理器内核的数据加载请求获得请求虚拟地址,并在地址映射存储中查询请求虚拟地址对应的请求物理地址;基于路预测技术在本级数据缓存中确定预测缓存行;在请求物理地址与预测缓存行对应的预测物理地址不同时,根据请求虚拟地址的除页标识位以外的索引域,从本级数据缓存中确定出与请求物理地址的标识域相同的重读物理地址的标识域,将重读物理地址对应的缓存行数据返回至处理器内核,并将重读物理地址的标识域对应的虚拟地址的页标识位与请求虚拟地址的页标识位进行比较,若不同则进行缓存的更新,并将重读物理地址的标识域对应的缓存行的有效位更新为表征无效的值。上述方案中,在采用路预测方式访问缓存数据时,当路预测结果错误,继续在本级数据缓存中通过比较物理地址的标识域,查找是否存在对应数据,避免直接从下一级数据缓存中获取数据,有效提高数据访问效率;在缓存行的虚拟地址中定义页标识位,在本级数据缓存中查找到数据加载请求的对应数据后,基于页标识位,对本级数据缓存中的缓存行数据及有效位进行管理,在对数据缓存进行数据更新的同时,准确、快速实现跨页缓存情形下有效位的管理和维护,在扩展缓存容量的同时,保障数据访问的准确性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1中示例性示出了本申请实施例一提供的缓存处理方法的流程示意图;
图2中示例性示出了本申请实施例一提供的处理器基本存储架构的结构示意图;
图3中示例性示出了本申请实施例一提供的本级数据缓存的结构示意图;
图4中示例性示出了本申请实施例一提供的本级数据高速缓存数据阵列的结构示例图;
图5中示例性示出了本申请实施例一提供的获取地址映射的流程示意图;
图6中示例性示出了本申请实施例二提供的缓存处理装置的结构示意图;
图7中示例性示出了本申请实施例三提供的缓存处理系统的结构示意图;
图8中示例性示出了本申请实施例四提供的另一缓存处理方法的流程示意图;
图9中示例性示出了本申请实施例五提供的另一缓存处理装置的流程示意图;
图10中示例性示出了本申请实施例六提供的另一缓存处理系统的结构示意图;
图11中示例性示出了本申请实施例七提供的缓存处理电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
需要说明的是,本申请实施例中,“示例性地”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性地”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性地”或者“例如”等词旨在以具体方式呈现相关概念。
本申请中的模块是指功能模块或逻辑模块。其可以为软件形式,通过处理器执行程序代码来实现其功能;也可以为硬件形式。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
随着处理器的发展,外部存储的工作速度与处理器的工作频率差距越来越大,因此在现代计算机体系中,高速缓存作为协调处理器内核的工作速度和外部存储的工作速度的缓冲器,已经成为了处理器系统不可或缺的一部分。其中数据高速缓存常采用物理标记的虚拟高速缓存方式(Virtually-Indexed Physically-Tagged,VIPT),即通过处理器内核输出的虚拟地址(Virtual Address,VA)的索引域访问缓存,查找缓存行,同时将虚拟地址进行地址翻译,完成地址翻译后,再用虚拟地址对应的物理地址(Physical Address,PA)的标识域来匹配缓存行,判断是否命中。
在多核处理器中,内存中的数据会在多个处理器内核中存在数据副本,某一个处理器内核发生修改操作,就产生了数据不一致的问题。而一致性协议正是用于为保证多个处理器内核之间缓存共享数据的一致,可以利用写失效协议(write-invalidate)对缓存行的有效位进行维护。写失效协议包括:一个处理器内核写入缓存后,会广播一个失效请求,其他处理器内核嗅探到则将自己缓存中对应的缓存行的有效位更新为表征无效的值。从缓存中读取数据时,访问缓存行之前会检查该缓存行的有效位,判断该缓存行是否有效,若无效则判定该缓存行中没有需要读取的数据,从而保证数据命中的准确性。
故对于采用VIPT结构的数据高速缓存,如果采用多页缓存架构扩展缓存容量,进行数据加载时,可能出现别名问题,即不同的虚拟地址映射至同一物理地址,同一物理地址对应的数据可能存储在不同的缓存行中,影响数据访问的准确性,难以实际应用。
下面以具体地实施例对本申请的技术方案进行示例说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
实施例一
图1为本申请一实施例提供的缓存处理方法的流程示意图。如图1所示,本实施例提供的缓存处理方法可以包括:
S101,根据处理器内核的数据加载请求,获得请求虚拟地址;所述请求虚拟地址的索引域包括页标识位,不同所述页标识位的值表征所述请求虚拟地址对应的缓存行在本级数据缓存的数据阵列中位于不同的页;所述本级数据缓存的数据阵列包括多个页;
S102,根据所述请求虚拟地址,查询地址转换缓存,获得所述请求虚拟地址对应的请求物理地址;根据所述请求虚拟地址的索引域,在所述本级数据缓存的数据阵列中确定一个组;基于路预测技术,在该组中确定预测缓存行;
S103,根据所述请求虚拟地址的索引域除所述页标志位以外的各个位,从所述本级数据缓存的地址阵列中确定多个物理地址的标识域;将所述多个物理地址的标识域中,与所述请求物理地址标识域相同,且与所述预测缓存行的预测物理地址的标识域不同,且对应的虚拟地址的页标识位与所述请求虚拟地址的页标识位不同的物理地址的标识域对应的缓存行的有效位,更新为表征无效的值。
实际应用中,本实施例的执行主体可以为应用于本级数据缓存的缓存处理装置,该装置可以通过计算机程序实现,例如,应用软件等;或者,也可以实现为存储有相关计算机程序的介质,例如,U盘、云盘等;再或者,还可以通过集成或安装有相关计算机程序的实体装置实现,例如,芯片、服务器等。
多级缓存存储结构可以有多种,例如可以采用两级高速缓存,图2为本申请一实施例提供的处理器基本存储架构的结构示意图,如图2所示,一级高速缓存(L1 Cache)是离处理器内核最近的缓存,二级高速缓存(L2 Cache)是离外部存储即主存最近的缓存,相比一级数据缓存容量更大,但访问速度较慢。当处理器内核试图访问某地址的数据时,首先从一级高速缓存中查询是否命中,若一级高速缓存命中,一级高速缓存将数据返回至处理器内核;若一级高速缓存缺失,则从二级高速缓存中查询是否命中。若二级高速缓存命中,则二级高速缓存将数据返回至一级高速缓存;若二级高速缓存缺失,则从外部存储中查询数据,并返回至一级高速缓存、二级高速缓存、处理器内核。也可以采用三级高速缓存,包括一级高速缓存、二级高速缓存、三级高速缓存,或者其他存储结构,在此不对其进行限制。
具体地,本级数据缓存为当前接收到数据加载请求的高速缓存,其中本级数据缓存可以为一级数据高速缓存,也可以为二级数据高速缓存等,具体根据数据加载过程以及存储结构而定;根据处理器内核的数据加载请求,获得请求虚拟地址包括根据数据加载请求进行地址计算,从数据加载请求的操作数中计算出请求虚拟地址。其中请求虚拟地址的索引域包括页标识位,不同所述页标识位的值表征请求虚拟地址对应的缓存行,在本级数据缓存的数据阵列中位于不同的页。举例来说,请求虚拟地址可以包括高位域、索引域(index)以及偏移域(offset),物理地址可以分为标识域(tag)与低位域。实际应用中,物理地址的偏移域与虚拟地址的低位域相同,物理地址的标识域与虚拟地址的除偏移域以外的地址段之间存在映射关系,可以根据映射关系确定某虚拟地址对应的物理地址。
具体的,页标识位为索引域中的部分比特。在一个示例中,请求虚拟地址的页标识位为请求虚拟地址的索引域的最高位。举例来说,假设本级数据缓存的数据阵列包括2页,请求虚拟地址的索引域为VA[12:6],则定义请求虚拟地址的页标识位为VA[12],VA[12]为0表征请求虚拟地址在本级数据缓存的数据阵列中对应的缓存行位于第1页,VA[12]为1表征请求虚拟地址在本级数据缓存的数据阵列中对应的缓存行位于第2页。需要说明的是,上述仅为一种示例,页标识位还可以为多个比特,具体的,页标识位的数据长度可以根据页的数量确定。仍结合上述举例,假设本级数据缓存的数据阵列包括4页,则可定义请求虚拟地址的索引域为VA[13:6],其中VA[13:12]为页标识位。具体的,VA[13:12]为00表征请求虚拟地址在本级数据缓存的数据阵列中对应的缓存行位于第1页,VA[13:12]为01表征请求虚拟地址在本级数据缓存的数据阵列中对应的缓存行位于第2页,VA[13:12]为10表征请求虚拟地址在本级数据缓存的数据阵列中对应的缓存行位于第3页,VA[13:12]为11表征请求虚拟地址在本级数据缓存的数据阵列中对应的缓存行位于第4页。
本示例通过定义虚拟地址的页标识位,有助于寻找数据缓存中跨页造成的别名项,从而消除别名项。
图3为本申请一实施例提供的本级数据缓存的结构示意图,如图3所示,本级数据缓存包含数据阵列以及与数据阵列对应的有效位阵列与地址阵列。数据阵列(data array)可以视为以矩阵形式进行数据存储,该矩阵的一行表征一组(set),该矩阵的一列表征一路(way),其中每个元素为一个缓存行(cache line),每个缓存行在数据阵列中的位置可以根据该缓存行所在的组和路唯一确定。数据阵列中的每一个缓存行在有效位阵列与地址阵列中均有与之对应的有效位项与地址项,分别存储有缓存行对应的有效位以及物理地址的标识域。
在本级数据阵列访问数据时,可以采用路预测的方法,具体地,根据请求虚拟地址的索引域,在本级数据缓存的数据阵列中确定一个组,举例来说,假设请求虚拟地址的索引域为100000,则将选择数据阵列的第32组。基于路预测技术,在确定的一个组中预测需要访问的缓存行所在的路,从而确定预测缓存行。实际应用中,路预测常使用最近最常使用算法,基于高速数据缓存的数据阵列的访问记录,确定各个组中最常被访问的一路,在根据虚拟地址的索引域确定一个组后,根据该组内最常被访问的一路,确定待访问的缓存行。举例来说,假设在数据阵列中确定第0组中后,基于路预测技术,使用最近最常使用算法,得到第0组中最常被访问的路为第1路,则将数据阵列中第0组、第1路对应的缓存行作为预测缓存行。
由于路预测存在预测错误的可能,需要对路预测结果进行校验。具体地,在地址映射存储中查询请求虚拟地址对应的请求物理地址。将预测缓存行对应的预测物理地址的标识域与请求物理地址的标识域进行比较,若相同则表明预测结果正确,若不同则表明预测结果错误。
在路预测结果验证为正确时,为了提高数据访问效率,可以从预测缓存行中获取数据作为结果输出。在一个示例中,所述方法还包括:
若所述预测缓存行对应的预测物理地址的标识域与所述请求物理地址的标识域相同,则根据所述请求虚拟地址的偏移域,从所述预测缓存行中获取预测缓存数据,并向所述处理器内核返回所述预测缓存数据。
具体地,将预测缓存行对应的预测物理地址的标识域与请求物理地址的标识域进行比较,若相同则判定路预测结果正确,根据请求虚拟地址的偏移域,从预测缓存行中获取预测缓存数据。举例来说,假设将数据阵列中位于第32组、第3路的缓存行作为预测缓存行。请求虚拟地址的偏移域为000000,则读取预测缓存行中0Byte的字节数据作为预测缓存数据,并向处理器内核返回该预测缓存数据。
在本示例中,通过在验证路预测结果正确时,直接输出预测缓存行中的数据,有效提高数据访问速度。
在预测结果错误时,为避免直接去下一级数据缓存中获取数据而导致数据访问过程较慢,可以在本级数据缓存中进行匹配,查看是否存在其他缓存行与请求物理地址对应同一物理地址。根据请求虚拟地址除页标识位外的索引域,在本级数据缓存的数据阵列中筛选出多个物理地址的标识域,并判断其是否与请求物理地址的标识域是否相同,若该物理地址的标识域与请求物理地址的标识域相同,则表明该物理地址与请求物理地址相同,将该物理地址的标识域作为重读物理地址的标识域,将该物理地址的标识域对应的缓存行作为重读缓存行。根据请求虚拟地址的偏移域,从重读缓存行中获取重读缓存数据,并将重读缓存数据返回至处理器内核。其中从重读缓存行中获取重读缓存数据的方式可以参照从预测缓存行中获取预测缓存数据,在此不再赘述。
由于别名项的页内偏移相同(即虚拟地址的索引域除页标识位外的各个位相同),以及物理地址的标识位相同,因此重读缓存行可以分为两种情况,第一种情况为重读缓存行为与预测缓存行位于同一组的其他缓存行,第二种情况为重读缓存行为数据阵列的其他组中的别名项。进一步地,将重读物理地址的标识域对应的虚拟地址的页标识位与请求虚拟地址的页标识位进行比较,若相同则表明该物理地址的标识域对应的缓存行在本级数据缓存的数据阵列中,与预测缓存行位于同一组中,即路预测结果错误,但该组中存在与数据加载请求匹配的其他缓存行;若不同则表明该物理地址的标识域对应的缓存行在本级数据缓存的数据阵列中所在的组,与预测缓存行所在的组不同,本级数据缓存中不存在数据加载请求对应的缓存行,但存在与数据加载请求其请求的数据对应的别名项。将该重读缓存行中的重读缓存数据写入本级数据缓存的更新缓存行,由于缓存行为缓存数据处理的最小单位,实际应用中将该重读缓存行中的缓存行数据写入本级数据缓存的更新缓存行,将重读物理地址的标识域写入本级数据缓存的地址阵列中对应的项,将重读缓存行对应的有效位更新为表征有效的值,例如写为1,从而对本级数据缓存进行更新。为了消除别名项,将重读缓存行对应的有效位,更新为表征无效的值,例如置为0。
举例来说,图4为本申请一实施例提供的本级数据高速缓存数据阵列的结构示例图,如图4所示,该本级高速数据缓存的数据阵列采用8路组相连结构,包括64个组以及8路,共有64×8个缓存行。假设本级数据缓存的大小为64千字节,缓存行大小为128个字节,请求虚拟地址的数据长度包含64比特,即VA[63:0],请求虚拟地址对应的请求物理地址的数据长度包含50比特,即PA[49:0],则请求虚拟地址的偏移域为VA[6:0],请求虚拟地址的索引域为VA[12:7],请求虚拟地址的页标识位为VA[12],请求物理地址的标识域为PA[49:12]。本级数据缓存包含2个大小为4千字节的物理页,其中第0组至第31组中所有的缓存行位于第1页,第32组至63组中所有的缓存行位于第2页,即VA[12]为0时,在本级数据缓存的数据阵列中对应的缓存行位于第1页,VA[12]为1时,在本级数据缓存的数据阵列中对应的缓存行位于第2页。假设请求虚拟地址的索引域为000001,则在数据阵列中确定第1组,并基于路预测技术,在第1组中确定预测缓存行,若预测缓存行对应的预测物理地址的标识域与请求物理地址的标识域不同,即预测结果错误,则根据请求虚拟地址除页标志位以外的索引域即VA[11:7],在本级数据缓存的数据阵列的第1组以及第33组中,确定多个物理地址的标识域。将与请求物理地址的标识域相同的物理地址的标识域作为重读物理地址的标识域,将重读物理地址的标识域对应的缓存行作为重读缓存行,向处理器内核返回重读缓存行中的重读缓存数据。假设重读物理地址的标识域对应的虚拟地址的页标识位VA[12]为1,与请求虚拟地址的页标识位VA[12]=0不同,则将重读缓存行对应的有效位更新为0。后续,当接收到处理器内核发送的新的数据加载请求时,通过处理器内核输出的虚拟地址的索引域查找缓存行时,会根据该缓存行的有效位判断其是否有效,若缓存行无效,则跳过该缓存行。
因此,本示例中,采用路预测方式访问缓存数据时,当路预测结果错误,继续在本级数据缓存中通过比较物理地址的标识域,查找是否存在数据加载请求的对应数据,避免直接从下一级数据缓存中获取数据,有效提高数据访问效率;在缓存行的虚拟地址中定义页标识位,在本级数据缓存中查找到对应数据后,基于页标识位,对本级数据缓存中的缓存行数据及有效位进行管理,在对数据缓存进行数据更新的同时,准确、快速实现跨页缓存情形下有效位的管理和维护,在扩展缓存容量的同时,保障数据访问的准确性。
确定虚拟地址对应的物理地址时,需要获取该虚拟地址的地址映射,实际应用中,虚拟地址的地址映射可以统一存储以便于管理。作为示例,可以存储在地址映射存储中。可选的,为加快地址映射的查找过程,地址映射存储可以采用多级结构。故在一个示例中,所述根据所述请求虚拟地址,查询地址转换缓存,获得所述请求虚拟地址对应的请求物理地址,包括:
查询第一级地址映射存储中是否存在所述请求虚拟地址的地址映射;所述地址映射表征虚拟地址和物理地址之间的对应关系;
若存在,则根据所述第一级地址映射存储中所述请求虚拟地址的地址映射,得到所述请求虚拟地址对应的请求物理地址;
若不存在,则从下一级地址映射存储中获取所述请求虚拟地址的地址映射,根据所述下一级地址映射存储中所述请求虚拟地址的地址映射,得到所述请求虚拟地址对应的请求物理地址,并将所述请求虚拟地址的地址映射加入所述第一级地址映射存储;除最后一级以外的地址映射存储用于记录部分虚拟地址的地址映射,最后一级地址映射存储用于存储所有虚拟地址的地址映射。
具体地,图5为本申请一实施例提供的获取地址映射的流程示意图,如图5所示,假设地址映射存储包含两级存储结构,其中第一级地址映射存储中存放有最近访问的虚拟地址的地址映射,可以为地址转换快表,第一级地址映射存储对应的下一级地址映射存储即最后一级地址映射存储,可以为主存。获取请求虚拟地址的地址映射时,先在第一级地址映射存储中查询请求虚拟地址的地址映射,若在第一级地址映射存储中查询到请求虚拟地址的地址映射,即第一级地址映射存储命中,则根据请求虚拟地址的地址映射,得到请求虚拟地址对应的请求物理地址;若在第一级地址映射存储中未查询到请求虚拟地址的地址映射,即第一级地址映射存储未命中,则从下一级地址映射存储中获取请求虚拟地址的地址映射,并将其写入第一级地址映射存储。其中图5仅为一种可能的情况,实际应用中为进一步提高获取请求物理地址的效率,也可以采用更多级的地址映射存储结构,其中每一级地址映射存储中存有对应的下一级地址映射存储中最近访问的地址映射,在此不对其进行限制。
本示例通过多级地址映射存储的配合,可以有效提高获取地址映射的效率。
当本级数据缓存中不存在数据加载请求对应的数据时,可以从下一级数据缓存获取数据。在一个示例中,所述方法还可以包括:
若所述请求物理地址的标识域与所述多个物理地址的标识域均不同,则向下一级数据缓存发送所述数据加载请求,以使所述下一级数据缓存根据所述数据加载请求返回目标数据;
向所述处理器内核返回所述目标数据;以及,将所述目标数据写入本级数据缓存中的更新缓存行,并将所述更新缓存行的有效位更新为表征有效的值。
具体地,当所述请求物理地址的标识域与所述多个物理地址的标识域均不同时,判定本级数据缓存中不存在数据加载请求所需访问的数据,向下一级数据缓存发送数据加载请求。举例来说假设本级数据缓存可以为一级数据高速缓存,则下一级数据缓存为二级数据高速缓存。假设下一级数据缓存为物理高速缓存(Physically Indexed PhysicallyTagged,PIPT),则向下一级数据缓存发送的数据加载请求还包含请求虚拟地址对应的请求物理地址,下一级数据缓存根据请求物理地址获取目标数据并返回至本级数据缓存。由于缓存行是缓存数据传输的最小单位,实际应用中下一级数据缓存向本级数据缓存返回目标数据所在的缓存行数据。将目标数据返回至处理器内核,并将目标数据所在的缓存行数据写入本级数据缓存中的更新缓存行,将更新缓存行的有效位更新为表征有效的值,例如置为1,将更新缓存行在地址阵列中对应的地址项更新为请求物理地址的标识域。
本示例在数据加载请求在本级数据缓存缺少请求访问的数据时,从下一级数据缓存中获取目标数据,基于目标数据对本级数据缓存进行及时的更新,并维护更新数据的有效性。
实际应用中,还需要考虑缓存数据的更新。为了确定将重读缓存数据或者返回数据写入本级数据缓存中的缓存行所在的位置,在一个示例中,所述将所述目标数据写入本级数据缓存中的更新缓存行之前,还包括:
基于最近最少使用算法,从所述本级数据缓存的数据阵列中与请求虚拟地址的索引域对应的一个组中确定所述更新缓存行,并清除所述更新缓存行中当前的数据。
具体地,根据请求虚拟地址的索引域,在本级数据缓存的数据阵列中确定一个组,具体方式如前所述。举例来说,假设第三虚拟地址的索引域为VA[12:7],索引域为011111,则选择第31组。基于最近最少使用算法,在确定的一个组中,确定最久未被使用过的缓存行,作为待写入目标数据的更新缓存行,并将更新缓存行中当前的数据清除。
实际应用中,最近最少使用算法的实现方式有多种,在此以矩阵法为例进行说明。首先定义一个行数、列数均与缓存路数相同的矩阵,假设本级数据缓存包括4个缓存路,则定义一个4×4矩阵。当访问某个缓存路中的一个缓存行时,将该路对应的矩阵中的所有行置为1,再将该路对应的矩阵中的所有列置为0,将矩阵中1的个数最少的行对应的缓存路对应的缓存行,作为更新缓存行。
本示例通过最近最少使用算法,确定待替换的缓存行,有效利用局部性原理,使得本级数据缓存中存储的缓存数据为最常访问的数据或者数据附近的内存区域,从而减少处理器内核访问主存的次数。
本实施例提供的缓存处理方法,在缓存行的虚拟地址中定义页标识位来表征缓存行所在的页,基于处理器内核的数据加载请求获得请求虚拟地址,并在地址映射存储中查询请求虚拟地址对应的请求物理地址;基于路预测技术在本级数据缓存中确定预测缓存行;在请求物理地址与预测缓存行对应的预测物理地址不同时,根据请求虚拟地址的除页标识位以外的索引域,从本级数据缓存中确定出与请求物理地址的标识域相同的重读物理地址的标识域,将重读物理地址对应的缓存行数据返回至处理器内核,并将重读物理地址的标识域对应的虚拟地址的页标识位与请求虚拟地址的页标识位进行比较,若不同则进行缓存的更新,并将重读物理地址的标识域对应的缓存行的有效位更新为表征无效的值。上述方案中,在采用路预测方式访问缓存数据时,当路预测结果错误,继续在本级数据缓存中通过比较物理地址的标识域,查找是否存在对应数据,避免直接从下一级数据缓存中获取数据,有效提高数据访问效率;在缓存行的虚拟地址中定义页标识位,在本级数据缓存中查找到数据加载请求的对应数据后,基于页标识位,对本级数据缓存中的缓存行数据及有效位进行管理,在对数据缓存进行数据更新的同时,准确、快速实现跨页缓存情形下有效位的管理和维护,在扩展缓存容量的同时,保障数据访问的准确性。
实施例二
图6为本申请一实施例提供的缓存处理装置的结构示意图。如图6所示,本实施例提供的缓存处理装置600可以包括:
第二地址计算部件61,用于根据处理器内核的数据加载请求,获得请求虚拟地址;所述请求虚拟地址的索引域包括页标识位,不同所述页标识位的值表征所述请求虚拟地址对应的缓存行在本级数据缓存的数据阵列中位于不同的页;所述本级数据缓存的数据阵列包括多个页;
第二映射查询模块62,用于根据所述请求虚拟地址,查询地址转换缓存,获得所述请求虚拟地址对应的请求物理地址;
第二缓存查询模块63,用于根据所述请求虚拟地址的索引域,在所述本级数据缓存的数据阵列中确定一个组;基于路预测技术,在该组中确定预测缓存行;
重读模块64,用于若所述预测缓存行对应的预测物理地址的标识域与所述请求物理地址的标识域不同,则根据所述请求虚拟地址的索引域除所述页标志位以外的各个位,从所述本级数据缓存的地址阵列中确定多个物理地址的标识域;在所述多个物理地址的标识域中,确定重读物理地址的标识域,其中所述重读物理地址的标识域与所述请求物理地址的标识域相同,将所述重读物理地址的标识域对应的缓存行作为重读缓存行,从所述重读缓存行中获取重读缓存数据;
第二结果选择模块65,用于向所述处理器内核返回所述重读缓存数据;
第二缓存更新模块66,用于若所述重读物理地址的标识域对应的虚拟地址的页标识位与所述请求虚拟地址的页标识位不同,则将所述重读缓存数据写入本级数据缓存中的更新缓存行;
标识比较模块67,用于将所述更新缓存行的有效位更新为表征有效的值;以及,将所述重读缓存行的有效位,更新为表征无效的值。
实际应用中,缓存处理装置可以通过计算机程序实现,例如,应用软件等;或者,也可以实现为存储有相关计算机程序的介质,例如,U盘、云盘等;再或者,还可以通过集成或安装有相关计算机程序的实体装置实现,例如,芯片、服务器等。
具体地,本级数据缓存为当前接收到数据加载请求的高速缓存,其中本级数据缓存可以为一级数据高速缓存,也可以为二级数据高速缓存等,具体根据数据加载过程以及存储结构而定;根据处理器内核的数据加载请求,获得请求虚拟地址包括根据数据加载请求进行地址计算,从数据加载请求的操作数中计算出请求虚拟地址。其中请求虚拟地址的索引域包括页标识位,不同所述页标识位的值表征请求虚拟地址对应的缓存行,在本级数据缓存的数据阵列中位于不同的页。举例来说,请求虚拟地址可以包括高位域、索引域(index)以及偏移域(offset),物理地址可以分为标识域(tag)与低位域。实际应用中,物理地址的偏移域与虚拟地址的低位域相同,物理地址的标识域与虚拟地址的除偏移域以外的地址段之间存在映射关系,可以根据映射关系确定某虚拟地址对应的物理地址。
具体的,页标识位为索引域中的部分比特。在一个示例中,请求虚拟地址的页标识位为请求虚拟地址的索引域的最高位。举例来说,假设本级数据缓存的数据阵列包括2页,请求虚拟地址的索引域为VA[12:6],则定义请求虚拟地址的页标识位为VA[12],VA[12]为0表征请求虚拟地址在本级数据缓存的数据阵列中对应的缓存行位于第1页,VA[12]为1表征请求虚拟地址在本级数据缓存的数据阵列中对应的缓存行位于第2页。需要说明的是,上述仅为一种示例,页标识位还可以为多个比特,具体的,页标识位的数据长度可以根据页的数量确定。仍结合上述举例,假设本级数据缓存的数据阵列包括4页,则可定义请求虚拟地址的索引域为VA[13:6],其中VA[13:12]为页标识位。具体的,VA[13:12]为00表征请求虚拟地址在本级数据缓存的数据阵列中对应的缓存行位于第1页,VA[13:12]为01表征请求虚拟地址在本级数据缓存的数据阵列中对应的缓存行位于第2页,VA[13:12]为10表征请求虚拟地址在本级数据缓存的数据阵列中对应的缓存行位于第3页,VA[13:12]为11表征请求虚拟地址在本级数据缓存的数据阵列中对应的缓存行位于第4页。
本示例通过定义虚拟地址的页标识位,有助于寻找数据缓存中跨页造成的别名项,从而消除别名项。
本级数据缓存包含数据阵列以及与数据阵列对应的有效位阵列与地址阵列。数据阵列(data array)可以视为以矩阵形式进行数据存储,该矩阵的一行表征一组(set),该矩阵的一列表征一路(way),其中每个元素为一个缓存行(cache line),每个缓存行在数据阵列中的位置可以根据该缓存行所在的组和路唯一确定。数据阵列中的每一个缓存行在有效位阵列与地址阵列中均有与之对应的有效位项与地址项,分别存储有缓存行对应的有效位以及物理地址的标识域。
在本级数据阵列访问数据时,可以采用路预测的方法,具体地,根据请求虚拟地址的索引域,在本级数据缓存的数据阵列中确定一个组,举例来说,假设请求虚拟地址的索引域为100000,则将选择数据阵列的第32组。基于路预测技术,在确定的一个组中预测需要访问的缓存行所在的路,从而确定预测缓存行。实际应用中,路预测常使用最近最常使用算法,基于高速数据缓存的数据阵列的访问记录,确定各个组中最常被访问的一路,在根据虚拟地址的索引域确定一个组后,根据该组内最常被访问的一路,确定待访问的缓存行。举例来说,假设在数据阵列中确定第0组中后,基于路预测技术,使用最近最常使用算法,得到第0组中最常被访问的路为第1路,则将数据阵列中第0组、第1路对应的缓存行作为预测缓存行。
由于路预测存在预测错误的可能,需要对路预测结果进行校验。具体地,在地址映射存储中查询请求虚拟地址对应的请求物理地址。将预测缓存行对应的预测物理地址的标识域与请求物理地址的标识域进行比较,若相同则表明预测结果正确,若不同则表明预测结果错误。
在路预测结果验证为正确时,为了提高数据访问效率,可以从预测缓存行中获取数据作为结果输出。在一个示例中,所述装置还包括,数据读取模块,可以用于:
若所述预测缓存行对应的预测物理地址的标识域与所述请求物理地址的标识域相同,则根据所述请求虚拟地址的偏移域,从所述预测缓存行中获取预测缓存数据;
所述第二结果选择模块65,还用于向所述处理器内核返回所述预测缓存数据。
具体地,将预测缓存行对应的预测物理地址的标识域与请求物理地址的标识域进行比较,若相同则判定路预测结果正确,根据请求虚拟地址的偏移域,从预测缓存行中获取预测缓存数据。举例来说,假设将数据阵列中位于第32组、第3路的缓存行作为预测缓存行。请求虚拟地址的偏移域为000000,则读取预测缓存行中0Byte的字节数据作为预测缓存数据,并向处理器内核返回该预测缓存数据。
在本示例中,通过在验证路预测结果正确时,直接输出预测缓存行中的数据,有效提高数据访问速度。
在预测结果错误时,为避免直接去下一级数据缓存中获取数据而导致数据访问过程较慢,可以在本级数据缓存中进行匹配,查看是否存在其他缓存行与请求物理地址对应同一物理地址。根据请求虚拟地址除页标识位外的索引域,在本级数据缓存的数据阵列中筛选出多个物理地址的标识域,并判断其是否与请求物理地址的标识域是否相同,若该物理地址的标识域与请求物理地址的标识域相同,则表明该物理地址与请求物理地址相同,将该物理地址的标识域作为重读物理地址的标识域,将该物理地址的标识域对应的缓存行作为重读缓存行。根据请求虚拟地址的偏移域,从重读缓存行中获取重读缓存数据,并将重读缓存数据返回至处理器内核。其中从重读缓存行中获取重读缓存数据的方式可以参照从预测缓存行中获取预测缓存数据,在此不再赘述。其中,重读物理地址的标识域与重读缓存行的数量可以为多个,从任一重读缓存行中获取重读缓存数据并返回即可。
由于别名项的页内偏移相同(即虚拟地址的索引域除页标识位外的各个位相同),以及物理地址的标识位相同,因此重读缓存行可以分为两种情况,第一种情况为重读缓存行为与预测缓存行位于同一组的其他缓存行,第二种情况为重读缓存行为数据阵列的其他组中的别名项。进一步地,将重读物理地址的标识域对应的虚拟地址的页标识位与请求虚拟地址的页标识位进行比较,若相同则表明该物理地址的标识域对应的缓存行在本级数据缓存的数据阵列中,与预测缓存行位于同一组中,即路预测结果错误,但该组中存在与数据加载请求匹配的其他缓存行;若不同则表明该物理地址的标识域对应的缓存行在本级数据缓存的数据阵列中所在的组,与预测缓存行所在的组不同,即路预测结果错误,本级数据缓存中不存在数据加载请求对应的缓存行,但存在与数据加载请求其请求的数据对应的别名项。将该重读缓存行中的重读缓存数据写入本级数据缓存的更新缓存行,由于缓存行为缓存数据处理的最小单位,实际应用中将该重读缓存行中的缓存行数据写入本级数据缓存的更新缓存行,将重读物理地址的标识域写入本级数据缓存的地址阵列中对应的项,将重读缓存行对应的有效位更新为表征有效的值,例如写为1,从而对本级数据缓存进行更新。为了消除别名项,将重读缓存行对应的有效位,更新为表征无效的值,例如置为0。
因此,本示例中,采用路预测方式访问缓存数据时,当路预测结果错误,继续在本级数据缓存中通过比较物理地址的标识域,查找是否存在数据加载请求的对应数据,避免直接从下一级数据缓存中获取数据,有效提高数据访问效率;在缓存行的虚拟地址中定义页标识位,在本级数据缓存中查找到对应数据后,基于页标识位,对本级数据缓存中的缓存行数据及有效位进行管理,在对数据缓存进行数据更新的同时,准确、快速实现跨页缓存情形下有效位的管理和维护,在扩展缓存容量的同时,保障数据访问的准确性。
确定虚拟地址对应的物理地址时,需要获取该虚拟地址的地址映射,实际应用中,虚拟地址的地址映射可以统一存储以便于管理。作为示例,可以存储在地址映射存储中。可选的,为加快地址映射的查找过程,地址映射存储可以采用多级结构。故在一个示例中,所述第二映射查询模块62,具体可以用于:
查询第一级地址映射存储中是否存在所述请求虚拟地址的地址映射;所述地址映射表征虚拟地址和物理地址之间的对应关系;
若存在,则根据所述第一级地址映射存储中所述请求虚拟地址的地址映射,得到所述请求虚拟地址对应的请求物理地址;
若不存在,则从下一级地址映射存储中获取所述请求虚拟地址的地址映射,根据所述下一级地址映射存储中所述请求虚拟地址的地址映射,得到所述请求虚拟地址对应的请求物理地址,并将所述请求虚拟地址的地址映射加入所述第一级地址映射存储;除最后一级以外的地址映射存储用于记录部分虚拟地址的地址映射,最后一级地址映射存储用于存储所有虚拟地址的地址映射。
具体地,假设地址映射存储包含两级存储结构,其中第一级地址映射存储中存放有最近访问的虚拟地址的地址映射,可以为地址转换快表,第一级地址映射存储对应的下一级地址映射存储即最后一级地址映射存储,可以为主存。获取请求虚拟地址的地址映射时,先在第一级地址映射存储中查询请求虚拟地址的地址映射,若在第一级地址映射存储中查询到请求虚拟地址的地址映射,即第一级地址映射存储命中,则根据请求虚拟地址的地址映射,得到请求虚拟地址对应的请求物理地址;若在第一级地址映射存储中未查询到请求虚拟地址的地址映射,即第一级地址映射存储未命中,则从下一级地址映射存储中获取请求虚拟地址的地址映射,并将其写入第一级地址映射存储。实际应用中为进一步提高获取请求物理地址的效率,也可以采用更多级的地址映射存储结构,其中每一级地址映射存储中存有对应的下一级地址映射存储中最近访问的地址映射,在此不对其进行限制。
本示例通过多级地址映射存储的配合,可以有效提高获取地址映射的效率。
当本级数据缓存中不存在数据加载请求对应的数据时,可以从下一级数据缓存获取数据。在一个示例中,所述装置还可以包括:
第二缺失队列,用于若所述请求物理地址的标识域与所述多个物理地址的标识域均不同,则向下一级数据缓存发送所述数据加载请求,以使所述下一级数据缓存根据所述数据加载请求返回目标数据;
所述第二结果选择模块65,还用于向所述处理器内核返回所述目标数据;
所述第二缓存更新模块66,还用于将所述目标数据写入本级数据缓存中的更新缓存行;
所述第二缺失队列,还用于将所述更新缓存行的有效位更新为表征有效的值。
具体地,当所述请求物理地址的标识域与所述多个物理地址的标识域均不同时,判定本级数据缓存中不存在数据加载请求所需访问的数据,向下一级数据缓存发送数据加载请求。举例来说假设本级数据缓存可以为一级数据高速缓存,则下一级数据缓存为二级数据高速缓存。假设下一级数据缓存为物理高速缓存(Physically Indexed PhysicallyTagged,PIPT),则向下一级数据缓存发送的数据加载请求还包含请求虚拟地址对应的请求物理地址,下一级数据缓存根据请求物理地址获取目标数据并返回至本级数据缓存。由于缓存行是缓存数据传输的最小单位,实际应用中下一级数据缓存向本级数据缓存返回目标数据所在的缓存行数据。将目标数据返回至处理器内核,并将目标数据所在的缓存行数据写入本级数据缓存中的更新缓存行,将更新缓存行的有效位更新为表征有效的值,例如置为1,将更新缓存行在地址阵列中对应的地址项更新为请求物理地址的标识域。
本示例在数据加载请求在本级数据缓存缺少请求访问的数据时,从下一级数据缓存中获取目标数据,基于目标数据对本级数据缓存进行及时的更新,并维护更新数据的有效性。
实际应用中,还需要考虑缓存数据的更新。比如,在本级数据缓存没有数据加载请求所需的数据时,在得到下一级数据缓存返回的目标数据后,需将目标数据写入本级数据缓存,以更新缓存中的数据。进一步的,为了确定将目标数据写入本级数据缓存中的缓存行所在的位置,在一个示例中,所述第二缓存更新模块66,还可以用于:
基于最近最少使用算法,从所述本级数据缓存的数据阵列中与请求虚拟地址的索引域对应的一个组中确定所述更新缓存行,并清除所述更新缓存行中当前的数据。
具体地,根据请求虚拟地址的索引域,在本级数据缓存的数据阵列中确定一个组,具体方式如前所述。举例来说,假设第三虚拟地址的索引域为VA[12:7],索引域为011111,则选择第31组。基于最近最少使用算法,在确定的一个组中,确定最久未被使用过的缓存行,作为待写入目标数据的更新缓存行,并将更新缓存行中当前的数据清除。
实际应用中,最近最少使用算法的实现方式有多种,在此以矩阵法为例进行说明。首先定义一个行数、列数均与缓存路数相同的矩阵,假设本级数据缓存包括4个缓存路,则定义一个4×4矩阵。当访问某个缓存路中的一个缓存行时,将该路对应的矩阵中的所有行置为1,再将该路对应的矩阵中的所有列置为0,将矩阵中1的个数最少的行对应的缓存路对应的缓存行,作为更新缓存行。
本示例通过最近最少使用算法,确定待替换的缓存行,有效利用局部性原理,使得本级数据缓存中存储的缓存数据为最常访问的数据或者数据附近的内存区域,从而减少处理器内核访问主存的次数。
本实施例提供的缓存处理装置中,在缓存行的虚拟地址中定义页标识位来表征缓存行所在的页,基于处理器内核的数据加载请求获得请求虚拟地址,并在地址映射存储中查询请求虚拟地址对应的请求物理地址;基于路预测技术在本级数据缓存中确定预测缓存行;在请求物理地址与预测缓存行对应的预测物理地址不同时,根据请求虚拟地址的除页标识位以外的索引域,从本级数据缓存中确定出与请求物理地址的标识域相同的重读物理地址的标识域,将重读物理地址对应的缓存行数据返回至处理器内核,并将重读物理地址的标识域对应的虚拟地址的页标识位与请求虚拟地址的页标识位进行比较,若不同则进行缓存的更新,并将重读物理地址的标识域对应的缓存行的有效位更新为表征无效的值。上述方案中,在采用路预测方式访问缓存数据时,当路预测结果错误,继续在本级数据缓存中通过比较物理地址的标识域,查找是否存在对应数据,避免直接从下一级数据缓存中获取数据,有效提高数据访问效率;在缓存行的虚拟地址中定义页标识位,在本级数据缓存中查找到数据加载请求的对应数据后,基于页标识位,对本级数据缓存中的缓存行数据及有效位进行管理,在对数据缓存进行数据更新的同时,准确、快速实现跨页缓存情形下有效位的管理和维护,在扩展缓存容量的同时,保障数据访问的准确性。
实施例三
图7为本申请一实施例提供的缓存处理系统的结构示意图,如图7所示,所述缓存处理系统包括:
第二地址计算部件61用于接收输入的数据加载指令,通过地址计算,从数据加载指令的操作数中计算出请求虚拟地址并输出至第二路预测模块,以用于后面对存储空间的访问。假设请求虚拟地址为VA[63:0],请求虚拟地址的索引域为VA[12:7],则请求虚拟地址的页标识位为VA[12]。
第二路预测模块用于预测要访问的缓存行在本级数据缓存的数据阵列中的组中的哪一路。采用路预测的方法,可以避免对一个组中的所有路的缓存行标识进行比较,从而提高速度,能够尽早决定要读出的缓存行。由于路预测存在预测错误的情况,需要对预测结果进行确认与错误补救。
第二映射查询模块62用于根据请求虚拟地址的索引域VA[12:7],在一级数据缓存的数据阵列中确定一个组,并根据路预测结果在该组中确定一个预测缓存行。在一级数据缓存的目录中获取预测缓存行对应的物理地址的标识域,作为预测标识。
地址转换快表是地址映射的一个高速缓存,其中存放了最近使用的地址转换项,用于快速将虚拟地址转换成物理地址。
第二映射查询模块62用于根据请求虚拟地址,在地址转换块表中查找请求虚拟地址对应的请求物理地址,由于请求虚拟地址的低12位与请求物理地址的低12位相同,可以根据VA[63:12],查找对应的映射关系,从而得到请求物理地址的标识域,如果所需的映射不在地址转换快表中,就需要去下一级存储中将对应映射取到快表中。将物理地址的标识域作为标识,假设请求物理地址为PA[49:0],则请求物理地址的标识域即实际标识为PA[49:12]
标识比较模块67用于比较预测标识和实际标识,如果相同即预测位置比较成功,判定路预测结果正确,向第二结果选择模块65输出从预测缓存行中读取的预测缓存数据;如果不相同则判定路预测结果错误,在一级数据缓存中进行重读缓存。
重读模块64用于根据请求虚拟地址的除页标识位以外的索引域,在一级数据缓存的目录中确定多个物理地址的标识域作为比较标识。
标识比较模块67还用于将多个比较标识与实际标识进行比较,若存在与实际标识相同的比较标识,即非预测位置比较成功,则将该比较标识作为重读标识,将重读标识对应的缓存行作为重读缓存行,将重读缓存行中的重读缓存数据发送至第二结果选择模块65,并将重读标识对应的虚拟地址的页标识位与请求虚拟地址的页标识位进行比较。
第二缓存更新模块66用于若重读标识对应的虚拟地址的页标识位与请求虚拟地址的页标识位不同,则将重读缓存数据写入一级数据缓存中的更新缓存行。
标识比较模块67还用于在重读标识对应的虚拟地址的页标识位与请求虚拟地址的页标识位不同时,将一级数据缓存目录写入重读缓存数据的更新缓存行的有效位更新为表征有效的值,并将重读缓存行对应的有效位更新为表征无效的值以标记别名项,以及对路预测进行更新。
若不存在与实际标识相同的比较标识,则该加载请求、请求虚拟地址的索引域VA[12:7]以及实际标识会进入第二缺失队列,等待从二级缓存中获取数据。
二级缓存接收到数据加载请求后,会基于请求虚拟地址的索引域VA[12:7]以及实际标识,向返回控制模块发送返回数据以及对应的物理地址的标识域(即返回标识)。
返回控制模块将返回数据发送至第二结果选择模块65,从而能够尽早输出结果。并将返回数据发送至一级缓存数据,用于缓存的更新。此外,还将返回标识发送给第二缺失队列,以便进行后续的缓存目录更新。
第二缺失队列中,会保存通过最近最少使用算法确定的一级数据缓存的数据阵列中缓存组中的一路,其中该缓存组是根据请求虚拟地址的索引域确定。二级缓存返回数据后以及非预测位置比较成功时,第二缓存更新模块66会利用这一信息来向一级数据缓存中对应缓存行写数据。此外,第二缺失队列会将返回标识发送至一级数据缓存的目录,并在二级缓存返回数据后对写入返回数据的更新缓存行的有效位进行更新。
第二结果选择模块65用于选择最终结果进行输出。根据标识比较模块67输出的比较结果,在预测位置比较成功时选择预测缓存数据,非预测位置比较成功时选择重读缓存数据,比较失败时选择返回数据。
上述给出的具体参数只是为了便于本方案的描述,这些参数的变化并不影响本方案的应用和效果,也不影响本方案的保护范围。
本实施例提供的缓存处理系统中,在缓存行的虚拟地址中定义页标识位来表征缓存行所在的页,基于处理器内核的数据加载请求获得请求虚拟地址,并在地址映射存储中查询请求虚拟地址对应的请求物理地址;基于路预测技术在本级数据缓存中确定预测缓存行;在请求物理地址与预测缓存行对应的预测物理地址不同时,根据请求虚拟地址的除页标识位以外的索引域,从本级数据缓存中确定出与请求物理地址的标识域相同的重读物理地址的标识域,将重读物理地址对应的缓存行数据返回至处理器内核,并将重读物理地址的标识域对应的虚拟地址的页标识位与请求虚拟地址的页标识位进行比较,若不同则进行缓存的更新,并将重读物理地址的标识域对应的缓存行的有效位更新为表征无效的值。上述方案中,在采用路预测方式访问缓存数据时,当路预测结果错误,继续在本级数据缓存中通过比较物理地址的标识域,查找是否存在对应数据,避免直接从下一级数据缓存中获取数据,有效提高数据访问效率;在缓存行的虚拟地址中定义页标识位,在本级数据缓存中查找到数据加载请求的对应数据后,基于页标识位,对本级数据缓存中的缓存行数据及有效位进行管理,在对数据缓存进行数据更新的同时,准确、快速实现跨页缓存情形下有效位的管理和维护,在扩展缓存容量的同时,保障数据访问的准确性。
实施例四
图8为本申请一实施例提供的另一缓存处理方法的流程示意图。如图8所示,本实施例提供的缓存处理方法可以包括:
S801,根据处理器内核的数据加载请求,获得请求虚拟地址;所述请求虚拟地址的索引域包括页标识位,不同所述页标识位的值表征所述请求虚拟地址对应的缓存行在本级数据缓存的数据阵列中位于不同的页;所述本级数据缓存的数据阵列包括多个页;
S802,若所述数据加载请求在本级数据缓存中未命中,则保存所述请求虚拟地址的索引域,并向下一级数据缓存发送所述数据加载请求,以使所述下一级数据缓存根据所述数据加载请求返回目标数据和该目标数据的目标物理地址的标识域;
S803,向所述处理器内核返回所述目标数据,并根据所述请求虚拟地址的索引域除所述页标志位以外的各个位,从所述本级数据缓存的地址阵列中确定多个物理地址的标识域;
S804,将所述多个物理地址的标识域中,与所述目标物理地址的标识域相同的所述物理地址的标识域对应的缓存行的有效位,更新为表征无效的值;将所述目标数据写入本级数据缓存中的更新缓存行,并将所述更新缓存行的有效位更新为表征有效的值。
实际应用中,本实施例的执行主体可以为应用于本级数据缓存的缓存处理装置,该装置可以通过计算机程序实现,例如,应用软件等;或者,也可以实现为存储有相关计算机程序的介质,例如,U盘、云盘等;再或者,还可以通过集成或安装有相关计算机程序的实体装置实现,例如,芯片、服务器等。
具体地,本级数据缓存为当前接收到数据加载请求的高速缓存,其中本级数据缓存可以为一级数据高速缓存,也可以为二级数据高速缓存等,具体根据数据加载过程以及存储结构而定;根据处理器内核的数据加载请求,获得请求虚拟地址包括根据数据加载请求进行地址计算,从数据加载请求的操作数中计算出请求虚拟地址。其中请求虚拟地址的索引域包括页标识位,不同所述页标识位的值表征请求虚拟地址对应的缓存行,在本级数据缓存的数据阵列中位于不同的页。举例来说,请求虚拟地址可以包括高位域、索引域(index)以及偏移域(offset),物理地址可以分为标识域(tag)与低位域。实际应用中,物理地址的偏移域与虚拟地址的低位域相同,物理地址的标识域与虚拟地址的除偏移域以外的地址段之间存在映射关系,可以根据映射关系确定某虚拟地址对应的物理地址。
其中,页标识位为索引域中的部分比特。在一个示例中,请求虚拟地址的页标识位为请求虚拟地址的索引域的最高位。举例来说,假设本级数据缓存的数据阵列包括2页,请求虚拟地址的索引域为VA[12:6],则定义请求虚拟地址的页标识位为VA[12],VA[12]为0表征请求虚拟地址在本级数据缓存的数据阵列中对应的缓存行位于第1页,VA[12]为1表征请求虚拟地址在本级数据缓存的数据阵列中对应的缓存行位于第2页。需要说明的是,上述仅为一种示例,页标识位还可以为多个比特,具体的,页标识位的数据长度可以根据页的数量确定。仍结合上述举例,假设本级数据缓存的数据阵列包括4页,则可定义请求虚拟地址的索引域为VA[13:6],其中VA[13:12]为页标识位。具体的,VA[13:12]为00表征请求虚拟地址在本级数据缓存的数据阵列中对应的缓存行位于第1页,VA[13:12]为01表征请求虚拟地址在本级数据缓存的数据阵列中对应的缓存行位于第2页,VA[13:12]为10表征请求虚拟地址在本级数据缓存的数据阵列中对应的缓存行位于第3页,VA[13:12]为11表征请求虚拟地址在本级数据缓存的数据阵列中对应的缓存行位于第4页。
本示例通过定义虚拟地址的页标识位,有助于寻找数据缓存中跨页造成的别名项,从而消除别名项。
根据请求虚拟地址在本级数据缓存中进行查询,当数据加载请求在本级数据缓存中未命中,即本级缓存中不含有请求访问的数据时,保存请求虚拟地址的索引域,向下一级数据缓存发送数据加载请求。举例来说假设本级数据缓存可以为一级数据高速缓存,则下一级数据缓存为二级数据高速缓存。假设下一级数据缓存为物理高速缓存(PhysicallyIndexed Physically Tagged,PIPT),则向下一级数据缓存发送的数据加载请求还包含请求虚拟地址对应的请求物理地址,下一级数据缓存根据请求物理地址获取目标数据并返回至本级数据缓存。由于缓存行是缓存数据传输的最小单位,实际应用中下一级数据缓存向本级数据缓存返回目标数据所在的缓存行数据。
由于别名项的页内偏移相同(即虚拟地址的索引域除页标识位外的各个位相同),以及物理地址的标识位相同,因此为了确定本级数据缓存中是否存在别名项,需要先根据请求虚拟地址除页标识位外的索引域,在本级数据缓存的数据阵列中筛选出多个物理地址的标识域,并判断其是否与目标物理地址的标识域是否相同,若相同则表明该物理地址与目标数据对应的物理地址相同,故高速数据缓存中存在别名项。为了消除别名项,可以将多个物理地址的标识域中与目标物理地址的标识域相同的物理地址的标识域对应的缓存行的有效位更新为表征无效的值,例如置为0。将目标数据所在的缓存行数据写入本级数据缓存中的更新缓存行时,目标数据对应的目标物理地址的标识域写入本级数据缓存的地址阵列中更新缓存行对应的项。并将本级数据缓存的有效位阵列中更新缓存行对应的有效位写为表征有效的值,例如写为1。
举例来说,假设本级高速数据缓存的数据阵列采用8路组相连结构,包括64个组以及8路,共有64×8个缓存行。假设本级数据缓存的大小为64千字节,缓存行大小为128个字节,请求虚拟地址的数据长度包含64比特,即VA[63:0],请求虚拟地址对应的请求物理地址的数据长度包含50比特,即PA[49:0],则请求虚拟地址的偏移域为VA[6:0],请求虚拟地址的索引域为VA[12:7],请求虚拟地址的页标识位为VA[12],请求物理地址的标识域为PA[49:12]。本级数据缓存包含2个大小为4千字节的物理页,其中第0组至第31组中所有的缓存行位于第1页,第32组至63组中所有的缓存行位于第2页,即VA[12]为0时,在本级数据缓存的数据阵列中对应的缓存行位于第1页,VA[12]为1时,在本级数据缓存的数据阵列中对应的缓存行位于第2页。假设请求虚拟地址的索引域为000001,若数据加载请求在本级数据缓存中未命中,则根据请求虚拟地址除页标志位以外的索引域即VA[11:7],在本级数据缓存的数据阵列中确定第1组以及第33组对应的多个物理地址的标识域,将多个物理地址的标识域中与目标物理地址的标识域相同的物理地址的标识域对应的缓存行的有效位,更新为0。将目标数据所在的缓存行数据写入本级数据缓存中的更新缓存行,并将更新缓存行的有效位更新为1,从而对多页缓存下的有效位进行准确更新。后续,当接收到处理器内核发送的新的数据加载请求时,通过处理器内核输出的虚拟地址的索引域查找缓存行时,会根据该缓存行的有效位判断其是否有效,若缓存行无效,则跳过该缓存行。
因此,本示例中根据请求虚拟地址的除页标识位以外索引域,在本级缓存中确定可能存在别名项的多个物理地址的标识域;将多个物理地址的标识域与目标物理地址的标识域进行比较,若相同则表明该多个物理地址的标识域对应的缓存行为别名项,与目标数据对应同一物理地址,将该缓存行的有效位置为表征无效的值,通过对本级缓存中与目标数据对应相同物理地址的缓存行的有效位进行维护,提高处理器内核访问缓存数据的准确性,从而能够通过多页架构提升缓存容量。
实际应用中,接收到数据加载请求之后,先查询本级缓存中是否命中,即检测本级缓存中是否存在请求所需的数据。具体的,检测是否命中的方法不限。在一个示例中,所述方法还包括:
根据所述请求虚拟地址的索引域,在所述本级数据缓存的数据阵列中确定多个第一缓存行,所述多第一个缓存行对应的虚拟地址的索引域与所述请求虚拟地址的索引域相同且对应的有效位为表征有效的值;
根据所述请求虚拟地址,查询地址映射存储,获得所述请求虚拟地址对应的请求物理地址;
若所述请求物理地址的标识域与任一所述第一缓存行的物理地址的标识域相同,则判定所述数据加载请求在本级数据缓存命中;否则判定所述数据加载请求在本级数据缓存未命中。
具体地,根据请求虚拟地址的索引域在本级数据缓存的数据阵列进行索引,确定多个虚拟地址的索引域与请求虚拟地址的索引域相同的第一缓存行。其中缓存行对应的虚拟地址的索引域用于指示缓存行位于数据阵列的第几组,假设请求虚拟地址的索引域为000000,则将数据阵列中第0组内所有有效的缓存行作为第一缓存行。确定出第一缓存行之后,通过查询地址转换缓存,得到请求虚拟地址对应的请求物理地址。将各个第一缓存行对应的的物理地址的标识域与请求物理地址的标识域进行比较,若任一第一缓存行的物理地址的标识域与请求物理地址的标识域相同,则表明该缓存行中包含请求所需的数据,判定本级数据缓存命中;若所有第一缓存行的物理地址的标识域与请求物理地址的标识域均不相同,则表明该缓存行中不包含请求所需的数据,判定本级数据缓存未命中。
本示例通过请求虚拟地址的索引域,在数据阵列中确定多个第一缓存行,将第一缓存行的物理地址的标识域与请求虚拟地址对应的请求物理地址的标识域进行比较,从而判断出本级数据缓存是否命中。
确定虚拟地址对应的物理地址时,需要获取该虚拟地址的地址映射,实际应用中,虚拟地址的地址映射可以统一存储以便于管理。作为示例,可以存储在地址映射存储中。可选的,为加快地址映射的查找过程,地址映射存储可以采用多级结构。故在一个示例中,所述根据所述请求虚拟地址,查询地址转换缓存,获得所述请求虚拟地址对应的请求物理地址,包括:
查询第一级地址映射存储中是否存在所述请求虚拟地址的地址映射;所述地址映射表征虚拟地址和物理地址之间的对应关系;
若存在,则根据所述第一级地址映射存储中所述请求虚拟地址的地址映射,得到所述请求虚拟地址对应的请求物理地址;
若不存在,则从下一级地址映射存储中获取所述请求虚拟地址的地址映射,根据所述下一级地址映射存储中所述请求虚拟地址的地址映射,得到所述请求虚拟地址对应的请求物理地址,并将所述请求虚拟地址的地址映射加入所述第一级地址映射存储;除最后一级以外的地址映射存储用于记录部分虚拟地址的地址映射,最后一级地址映射存储用于存储所有虚拟地址的地址映射。
具体地,假设地址映射存储包含两级存储结构,其中第一级地址映射存储中存放有最近访问的虚拟地址的地址映射,可以为地址转换快表,第一级地址映射存储对应的下一级地址映射存储即最后一级地址映射存储,可以为主存。获取请求虚拟地址的地址映射时,先在第一级地址映射存储中查询请求虚拟地址的地址映射,若在第一级地址映射存储中查询到请求虚拟地址的地址映射,即第一级地址映射存储命中,则根据请求虚拟地址的地址映射,得到请求虚拟地址对应的请求物理地址;若在第一级地址映射存储中未查询到请求虚拟地址的地址映射,即第一级地址映射存储未命中,则从下一级地址映射存储中获取请求虚拟地址的地址映射,并将其写入第一级地址映射存储。其中以上仅为一种可能的情况,实际应用中为进一步提高获取请求物理地址的效率,也可以采用更多级的地址映射存储结构,其中每一级地址映射存储中存有对应的下一级地址映射存储中最近访问的地址映射,在此不对其进行限制。
本示例通过多级地址映射存储的配合,可以有效提高获取地址映射的效率。
具体的,采用上述数据命中方式,当数据加载请求在本级数据缓存中命中时,可向处理器内核返回相应数据。则作为示例,所述方法还包括:
若所述数据加载请求在本级数据缓存中命中,则将所述多个第一缓存行中,物理地址的标识域与所述请求物理地址的标识域相同的第一缓存行作为命中缓存行;
根据所述请求虚拟地址的偏移域,从命中缓存行中获取命中数据,并向所述处理器内核返回所述命中数据。
具体地,采用上述数据命中方式,判定本级数据缓存命中后,将物理地址的标识域与请求物理地址的标识域相同的第一缓存行作为命中缓存行,根据请求虚拟地址的偏移域,从命中缓存行中获取命中数据并返回至处理器内核。举例来说,假设如前所述,将数据阵列中位于第32组、第3路的第一缓存行作为命中缓存行。请求虚拟地址的偏移域为000000,则读取命中缓存行中0Byte的字节数据作为命中数据,并向处理器内核返回该命中数据。
本示例在数据加载请求在本级数据缓存命中时,根据请求虚拟地址的偏移域,在命中缓存行中确定命中数据并返回至处理器内核,从而有效提高处理器访问数据的效率。
需要说明的是,本实施例并未对判断本级数据缓存是否命中的方式进行限制。作为示例,还可以采用结合路预测的数据命中方式,以避免开启无用的缓存路,降低功耗。故在一个示例中,所述方法还包括:
根据所述请求虚拟地址的索引域,在所述本级数据缓存的数据阵列中确定一个组;基于路预测技术,在该组中确定预测缓存行;
根据所述请求虚拟地址,查询地址映射存储,获得所述请求虚拟地址对应的请求物理地址;
若所述请求物理地址的标识域与所述预测缓存行的物理地址的标识域相同,且所述预测缓存行对应的有效位为表征有效的值,则判定所述数据加载请求在本级数据缓存中命中;否则判定所述数据加载请求在本级数据缓存中未命中。
具体地,根据请求虚拟地址的索引域,在本级数据缓存的数据阵列中确定一个组,举例来说,假设请求虚拟地址的索引域为100000,则将选择数据阵列的第32组。基于路预测技术,在确定的一个组中预测需要访问的缓存行所在的路,从而确定预测缓存行;得到请求虚拟地址对应的请求物理地址的方式如前所述,从地址阵列中获取预测缓存行对应的物理地址的标识域,将预测缓存行的物理地址的标识域与请求物理地址的标识域进行比较,若相同,则判定本级数据缓存命中,若不相同,则判定本级数据缓存未命中。
本方式中,采用基于路预测的数据命中方式。实际应用中,路预测常使用最近最常使用算法,基于高速数据缓存的数据阵列的访问记录,确定各个组中最常被访问的一路,在根据虚拟地址的索引域确定一个组后,根据该组内最常被访问的一路,确定待访问的缓存行。举例来说,假设在数据阵列中确定第0组中后,基于路预测技术,使用最近最常使用算法,得到第0组中最常被访问的路为第1路,则将数据阵列中第0组、第1路对应的缓存行作为预测缓存行。得到请求虚拟地址对应的请求物理地址后,将预测缓存行的物理地址的标识域与与请求物理地址的标识域进行比较,假设预测缓存行的物理地址的标识域为XXXXX1,请求物理地址的标识域为XXXXX0,二者不同,判定数据加载请求在本级数据缓存中未命中。
本示例通过请求虚拟地址的索引域,在数据阵列中确定一个组,并采用路预测在该组中确定预测缓存行,避免逐个比较多个缓存行的物理地址的标识域,有效降低功耗。
具体的,采用基于路预测的数据命中方式,当判定数据加载请求在本级数据缓存命中时,同样可以向处理器内核返回相应数据。相应的,在一个示例中,所述方法还包括:
若所述数据加载请求在本级数据缓存中命中,则根据所述请求虚拟地址的偏移域,从所述预测缓存行中获取预测缓存数据,并向所述处理器内核返回所述预测缓存数据。
具体地,判定本级数据缓存命中后,根据请求虚拟地址的偏移域,在预测缓存行中确定对应的字节数据作为预测缓存数据,并向处理器内核返回预测缓存数据。举例来说,假设请求虚拟地址的偏移域为111111,则读取预测缓存行中127Byte的字节数据作为命中数据,并向处理器内核返回该命中数据。
本示例在数据加载请求在本级数据缓存命中时,根据请求虚拟地址的偏移域,在命中缓存行中确定命中数据并返回至处理器内核,从而有效提高处理器访问数据的效率。
实际应用中,还需要考虑缓存数据的更新。比如,在本级数据缓存未命中时,在得到下一级数据缓存返回的目标数据后,需将目标数据写入本级数据缓存,以更新缓存中的数据。进一步的,为了确定将目标数据写入本级数据缓存中的缓存行所在的位置,在一个示例中,所述将所述目标数据写入本级数据缓存中的更新缓存行之前,还包括:
基于最近最少使用算法,从所述本级数据缓存的数据阵列中与请求虚拟地址的索引域对应的一个组中确定所述更新缓存行,并清除所述更新缓存行中当前的数据。
具体地,根据请求虚拟地址的索引域,在本级数据缓存的数据阵列中确定一个组,具体方式如前所述。举例来说,假设第三虚拟地址的索引域为VA[12:7],索引域为011111,则选择第31组。基于最近最少使用算法,在确定的一个组中,确定最久未被使用过的缓存行,作为待写入目标数据的更新缓存行,并将更新缓存行中当前的数据清除。
实际应用中,最近最少使用算法的实现方式有多种,在此以矩阵法为例进行说明。首先定义一个行数、列数均与缓存路数相同的矩阵,假设本级数据缓存包括4个缓存路,则定义一个4×4矩阵。当访问某个缓存路中的一个缓存行时,将该路对应的矩阵中的所有行置为1,再将该路对应的矩阵中的所有列置为0,将矩阵中1的个数最少的行对应的缓存路对应的缓存行,作为更新缓存行。
本示例通过最近最少使用算法,确定待替换的缓存行,有效利用局部性原理,使得本级数据缓存中存储的缓存数据为最常访问的数据或者数据附近的内存区域,从而减少处理器内核访问主存的次数。
本实施例提供的缓存处理方法中,在缓存行的虚拟地址中定义页标识位来表征缓存行所在的页,当接收到处理器内核的数据加载请求,获得请求虚拟地址,并在本级缓存进行查询,若在本级数据缓存中没有命中,则从下一级数据缓存获得请求对应的目标数据及其物理地址的标识域,并返回给处理器内核,并更新各缓存行的有效位,即根据请求虚拟地址的索引域除页标志位以外的各个位,从本级数据缓存中的地址阵列中确定多个物理地址的标识域,并将其中与目标物理地址的标识域相同的物理地址的标识域对应缓存行的有效位更新为表征无效的值,将本级缓存中写入了目标数据的更新缓存行的有效位更新为表征有效的值。上述方案中,在缓存行的虚拟地址中定义页标识位,并基于页标识位对数据缓存中各缓存行的有效位进行更新,从而准确、快速实现跨页缓存情形下有效位的管理和维护,用以使数据缓存的索引范围能够跨页,在扩展缓存容量的同时,保障数据访问的准确性。
实施例五
图9为本申请一实施例提供的另一缓存处理装置的结构示意图。如图9所示,本实施例提供的另一缓存处理装置900可以包括:
第一地址计算部件91,用于根据处理器内核的数据加载请求,获得请求虚拟地址;所述请求虚拟地址的索引域包括页标识位,不同所述页标识位的值表征所述请求虚拟地址对应的缓存行在本级数据缓存的数据阵列中位于不同的页;所述本级数据缓存的数据阵列包括多个页;
第一缺失队列92,用于若所述数据加载请求在本级数据缓存中未命中,则保存所述请求虚拟地址的索引域,并向下一级数据缓存发送所述数据加载请求,以使所述下一级数据缓存根据所述数据加载请求返回目标数据和该目标数据的目标物理地址的标识域;
第一结果选择模块93,用于向所述处理器内核返回所述目标数据;
返回标识比较模块94,用于根据所述请求虚拟地址的索引域除所述页标志位以外的各个位,从所述本级数据缓存的地址阵列中确定多个物理地址的标识域;将所述多个物理地址的标识域中,与所述目标物理地址的标识域相同的所述物理地址的标识域对应的缓存行的有效位,更新为表征无效的值;
第一缓存更新模块95,用于将所述目标数据写入本级数据缓存中的更新缓存行;
所述返回标识比较模块94,还用于将所述更新缓存行的有效位更新为表征有效的值。
实际应用中,缓存处理装置可以通过计算机程序实现,例如,应用软件等;或者,也可以实现为存储有相关计算机程序的介质,例如,U盘、云盘等;再或者,还可以通过集成或安装有相关计算机程序的实体装置实现,例如,芯片、服务器等。
具体地,本级数据缓存为当前接收到数据加载请求的高速缓存,其中本级数据缓存可以为一级数据高速缓存,也可以为二级数据高速缓存等,具体根据数据加载过程以及存储结构而定;根据处理器内核的数据加载请求,获得请求虚拟地址包括根据数据加载请求进行地址计算,从数据加载请求的操作数中计算出请求虚拟地址。其中请求虚拟地址的索引域包括页标识位,不同所述页标识位的值表征请求虚拟地址对应的缓存行,在本级数据缓存的数据阵列中位于不同的页。举例来说,请求虚拟地址可以包括高位域、索引域(index)以及偏移域(offset),物理地址可以分为标识域(tag)与低位域。实际应用中,物理地址的偏移域与虚拟地址的低位域相同,物理地址的标识域与虚拟地址的除偏移域以外的地址段之间存在映射关系,可以根据映射关系确定某虚拟地址对应的物理地址。
具体的,页标识位为索引域中的部分比特。在一个示例中,请求虚拟地址的页标识位为请求虚拟地址的索引域的最高位。举例来说,假设本级数据缓存的数据阵列包括2页,请求虚拟地址的索引域为VA[12:6],则定义请求虚拟地址的页标识位为VA[12],VA[12]为0表征请求虚拟地址在本级数据缓存的数据阵列中对应的缓存行位于第1页,VA[12]为1表征请求虚拟地址在本级数据缓存的数据阵列中对应的缓存行位于第2页。需要说明的是,上述仅为一种示例,页标识位还可以为多个比特,具体的,页标识位的数据长度可以根据页的数量确定。仍结合上述举例,假设本级数据缓存的数据阵列包括4页,则可定义请求虚拟地址的索引域为VA[13:6],其中VA[13:12]为页标识位。具体的,VA[13:12]为00表征请求虚拟地址在本级数据缓存的数据阵列中对应的缓存行位于第1页,VA[13:12]为01表征请求虚拟地址在本级数据缓存的数据阵列中对应的缓存行位于第2页,VA[13:12]为10表征请求虚拟地址在本级数据缓存的数据阵列中对应的缓存行位于第3页,VA[13:12]为11表征请求虚拟地址在本级数据缓存的数据阵列中对应的缓存行位于第4页。
本示例通过定义虚拟地址的页标识位,有助于寻找数据缓存中跨页造成的别名项,从而消除别名项。
根据请求虚拟地址在本级数据缓存中进行查询,当数据加载请求在本级数据缓存中未命中,即本级缓存中不含有请求访问的数据时,保存请求虚拟地址的索引域,向下一级数据缓存发送数据加载请求。举例来说假设本级数据缓存可以为一级数据高速缓存,则下一级数据缓存为二级数据高速缓存。假设下一级数据缓存为物理高速缓存,则向下一级数据缓存发送的数据加载请求还包含请求虚拟地址对应的请求物理地址,下一级数据缓存根据请求物理地址获取目标数据并返回至本级数据缓存。由于缓存行是缓存数据传输的最小单位,实际应用中下一级数据缓存向本级数据缓存返回目标数据所在的缓存行数据。
由于别名项的页内偏移相同(即虚拟地址的索引域除页标识位外的各个位相同),以及物理地址的标识位相同,因此为了确定本级数据缓存中是否存在别名项,需要先根据请求虚拟地址除页标识位外的索引域,在本级数据缓存的数据阵列中筛选出多个物理地址的标识域,并判断其是否与目标物理地址的标识域是否相同,若相同则表明该物理地址与目标数据对应的物理地址相同,故高速数据缓存中存在别名项。为了消除别名项,可以将多个物理地址的标识域中与目标物理地址的标识域相同的物理地址的标识域对应的缓存行的有效位更新为表征无效的值,例如置为0。将目标数据所在的缓存行数据写入本级数据缓存中的更新缓存行时,目标数据对应的目标物理地址的标识域写入本级数据缓存的地址阵列中更新缓存行对应的项。并将本级数据缓存的有效位阵列中更新缓存行对应的有效位写为表征有效的值,例如写为1。
因此,本示例中根据请求虚拟地址的除页标识位以外索引域,在本级缓存中确定可能存在别名项的多个物理地址的标识域;将多个物理地址的标识域与目标物理地址的标识域进行比较,若相同则表明该多个物理地址的标识域对应的缓存行为别名项,与目标数据对应同一物理地址,将该缓存行的有效位置为表征无效的值,通过对本级缓存中与目标数据对应相同物理地址的缓存行的有效位进行维护,提高处理器内核访问缓存数据的准确性,从而能够通过多页架构提升缓存容量。
实际应用中,接收到数据加载请求之后,先查询本级缓存中是否命中,即检测本级缓存中是否存在请求所需的数据。具体的,检测是否命中的方法不限。在一个示例中,所述装置还包括:
第一缓存查询模块,用于根据所述请求虚拟地址的索引域,在所述本级数据缓存的数据阵列中确定多个第一缓存行,所述多个第一缓存行对应的虚拟地址的索引域与所述请求虚拟地址的索引域相同且对应的有效位为表征有效的值;
第一映射查询模块,用于根据所述请求虚拟地址,查询地址映射存储,获得所述请求虚拟地址对应的请求物理地址;
预测标识比较模块,用于若所述请求物理地址的标识域与任一所述第一缓存行的物理地址的标识域相同,则判定所述数据加载请求在本级数据缓存命中;否则判定所述数据加载请求在本级数据缓存未命中。
具体地,根据请求虚拟地址的索引域在本级数据缓存的数据阵列进行索引,确定多个虚拟地址的索引域与请求虚拟地址的索引域相同的第一缓存行。其中缓存行对应的虚拟地址的索引域用于指示缓存行位于数据阵列的第几组,假设请求虚拟地址的索引域为000000,则将数据阵列中第0组内所有有效的缓存行作为第一缓存行。确定出第一缓存行之后,通过查询地址转换缓存,得到请求虚拟地址对应的请求物理地址。将各个第一缓存行对应的的物理地址的标识域与请求物理地址的标识域进行比较,若任一第一缓存行的物理地址的标识域与请求物理地址的标识域相同,则表明该缓存行中包含请求所需的数据,判定本级数据缓存命中;若所有第一缓存行的物理地址的标识域与请求物理地址的标识域均不相同,则表明该缓存行中不包含请求所需的数据,判定本级数据缓存未命中。
本示例通过请求虚拟地址的索引域,在数据阵列中确定多个第一缓存行,将第一缓存行的物理地址的标识域与请求虚拟地址对应的请求物理地址的标识域进行比较,从而判断出本级数据缓存是否命中。
确定虚拟地址对应的物理地址时,需要获取该虚拟地址的地址映射,实际应用中,虚拟地址的地址映射可以统一存储以便于管理。作为示例,可以存储在地址映射存储中。可选的,为加快地址映射的查找过程,地址映射存储可以采用多级结构。故在一个示例中,所述第一映射查询模块,具体可以用于:
查询第一级地址映射存储中是否存在所述请求虚拟地址的地址映射;所述地址映射表征虚拟地址和物理地址之间的对应关系;
若存在,则根据所述第一级地址映射存储中所述请求虚拟地址的地址映射,得到所述请求虚拟地址对应的请求物理地址;
若不存在,则从下一级地址映射存储中获取所述请求虚拟地址的地址映射,根据所述下一级地址映射存储中所述请求虚拟地址的地址映射,得到所述请求虚拟地址对应的请求物理地址,并将所述请求虚拟地址的地址映射加入所述第一级地址映射存储;除最后一级以外的地址映射存储用于记录部分虚拟地址的地址映射,最后一级地址映射存储用于存储所有虚拟地址的地址映射。
具体地,假设地址映射存储包含两级存储结构,其中第一级地址映射存储中存放有最近访问的虚拟地址的地址映射,可以为地址转换快表,第一级地址映射存储对应的下一级地址映射存储即最后一级地址映射存储,可以为主存。获取请求虚拟地址的地址映射时,先在第一级地址映射存储中查询请求虚拟地址的地址映射,若在第一级地址映射存储中查询到请求虚拟地址的地址映射,即第一级地址映射存储命中,则根据请求虚拟地址的地址映射,得到请求虚拟地址对应的请求物理地址;若在第一级地址映射存储中未查询到请求虚拟地址的地址映射,即第一级地址映射存储未命中,则从下一级地址映射存储中获取请求虚拟地址的地址映射,并将其写入第一级地址映射存储。其中上述仅为一种可能的情况,实际应用中为进一步提高获取请求物理地址的效率,也可以采用更多级的地址映射存储结构,其中每一级地址映射存储中存有对应的下一级地址映射存储中最近访问的地址映射,在此不对其进行限制。
本示例通过多级地址映射存储的配合,可以有效提高获取地址映射的效率。
具体的,采用上述数据命中方式,当数据加载请求在本级数据缓存中命中时,可向处理器内核返回相应数据。则作为示例,所述装置还包括:
数据获取模块,用于若所述数据加载请求在本级数据缓存中命中,则将所述多个第一缓存行中,物理地址的标识域与所述请求物理地址的标识域相同的第一缓存行作为命中缓存行;根据所述请求虚拟地址的偏移域,从命中缓存行中获取命中数据;
所述第一结果选择模块93,还用于向所述处理器内核返回所述命中数据。
具体地,采用上述数据命中方式,判定本级数据缓存命中后,将物理地址的标识域与请求物理地址的标识域相同的第一缓存行作为命中缓存行,根据请求虚拟地址的偏移域,从命中缓存行中获取命中数据并返回至处理器内核。
本示例在数据加载请求在本级数据缓存命中时,根据请求虚拟地址的偏移域,在命中缓存行中确定命中数据并返回至处理器内核,从而有效提高处理器访问数据的效率。
需要说明的是,本实施例并未对判断本级数据缓存是否命中的方式进行限制。作为示例,还可以采用结合路预测的数据命中方式,以避免开启无用的缓存路,降低功耗。故在一个示例中,所述装置,还可以包括:
第一路预测模块,用于根据所述请求虚拟地址的索引域,在所述本级数据缓存的数据阵列中确定一个组;基于路预测技术,在该组中确定预测缓存行;
所述第一映射查询模块,用于根据所述请求虚拟地址,查询地址映射存储,获得所述请求虚拟地址对应的请求物理地址;
所述预测标识比较模块,还用于若所述请求物理地址的标识域与所述预测缓存行的物理地址的标识域相同,且所述预测缓存行对应的有效位为表征有效的值,则判定所述数据加载请求在本级数据缓存中命中;否则判定所述数据加载请求在本级数据缓存中未命中。
具体地,根据请求虚拟地址的索引域,在本级数据缓存的数据阵列中确定一个组,举例来说,假设请求虚拟地址的索引域为100000,则将选择数据阵列的第32组。基于路预测技术,在确定的一个组中预测需要访问的缓存行所在的路,从而确定预测缓存行;得到请求虚拟地址对应的请求物理地址的方式如前所述,从地址阵列中获取预测缓存行对应的物理地址的标识域,将预测缓存行的物理地址的标识域与请求物理地址的标识域进行比较,若相同,则判定本级数据缓存命中,若不相同,则判定本级数据缓存未命中。
本方式中,采用基于路预测的数据命中方式。实际应用中,路预测常使用最近最常使用算法,基于高速数据缓存的数据阵列的访问记录,确定各个组中最常被访问的一路,在根据虚拟地址的索引域确定一个组后,根据该组内最常被访问的一路,确定待访问的缓存行。
本示例通过请求虚拟地址的索引域,在数据阵列中确定一个组,并采用路预测在该组中确定预测缓存行,避免逐个比较多个缓存行的物理地址的标识域,有效降低功耗。
具体的,采用基于路预测的数据命中方式,当判定数据加载请求在本级数据缓存命中时,同样可以向处理器内核返回相应数据。相应的,在一个示例中,所述数据获取模块还可以用于:
若所述数据加载请求在本级数据缓存中命中,则根据所述请求虚拟地址的偏移域,从所述预测缓存行中获取预测缓存数据;
所述第一结果选择模块93,还用于向所述处理器内核返回所述预测缓存数据。
具体地,判定本级数据缓存命中后,根据请求虚拟地址的偏移域,在预测缓存行中确定对应的字节数据作为预测缓存数据,并向处理器内核返回预测缓存数据。
本示例在数据加载请求在本级数据缓存命中时,根据请求虚拟地址的偏移域,在命中缓存行中确定命中数据并返回至处理器内核,从而有效提高处理器访问数据的效率。
实际应用中,还需要考虑缓存数据的更新。比如,在本级数据缓存未命中时,在得到下一级数据缓存返回的目标数据后,需将目标数据写入本级数据缓存,以更新缓存中的数据。进一步的,为了确定将目标数据写入本级数据缓存中的缓存行所在的位置,在一个示例中,所述第一缓存更新模块,还可以用于:
基于最近最少使用算法,从所述本级数据缓存的数据阵列中与请求虚拟地址的索引域对应的一个组中确定所述更新缓存行,并清除所述更新缓存行中当前的数据。
具体地,根据请求虚拟地址的索引域,在本级数据缓存的数据阵列中确定一个组,具体方式如前所述。基于最近最少使用算法,在确定的一个组中,确定最久未被使用过的缓存行,作为待写入目标数据的更新缓存行,并将更新缓存行中当前的数据清除。
本示例通过最近最少使用算法,确定待替换的缓存行,有效利用局部性原理,使得本级数据缓存中存储的缓存数据为最常访问的数据或者数据附近的内存区域,从而减少处理器内核访问主存的次数。
本实施例提供的缓存处理装置中,在缓存行的虚拟地址中定义页标识位来表征缓存行所在的页,当接收到处理器内核的数据加载请求,获得请求虚拟地址,并在本级缓存进行查询,若在本级数据缓存中没有命中,则从下一级数据缓存获得请求对应的目标数据及其物理地址的标识域,并返回给处理器内核,并更新各缓存行的有效位,即根据请求虚拟地址的索引域除页标志位以外的各个位,从本级数据缓存中的地址阵列中确定多个物理地址的标识域,并将其中与目标物理地址的标识域相同的物理地址的标识域对应缓存行的有效位更新为表征无效的值,将本级缓存中写入了目标数据的更新缓存行的有效位更新为表征有效的值。上述方案中,在缓存行的虚拟地址中定义页标识位,并基于页标识位对数据缓存中各缓存行的有效位进行更新,从而准确、快速实现跨页缓存情形下有效位的管理和维护,用以使数据缓存的索引范围能够跨页,在扩展缓存容量的同时,保障数据访问的准确性。
实施例六
图10为本申请一实施例提供的另一缓存处理系统的结构示意图,如图10所示,所述另一缓存处理系统包括:
第一地址计算部件91用于接收输入的数据加载指令,通过地址计算,从数据加载指令的操作数中计算出请求虚拟地址并输出至第一路预测模块,以用于后面对存储空间的访问。假设请求虚拟地址为VA[93:0],请求虚拟地址的索引域为VA[12:7],则请求虚拟地址的页标识位为VA[12]。
第一路预测模块用于预测要访问的缓存行在本级数据缓存的数据阵列中的组中的哪一路。采用路预测的方法,可以避免对一个组中的所有路的标识进行比较,从而提高速度,能够尽早决定要读出的缓存行。由于路预测存在预测错误的情况,需要对预测结果进行确认与错误补救。
第一路预测模块用于根据请求虚拟地址的索引域VA[12:7],在一级数据缓存的数据阵列中确定一个组。根据路预测结果在该组中确定一个预测缓存行。在一级数据缓存的目录中获取预测缓存行对应的物理地址的标识域,作为预测标识。
地址转换快表是地址映射的一个高速缓存,其中存放了最近使用的地址转换项,用于快速将虚拟地址转换成物理地址。第一映射查询模块用于根据请求虚拟地址,在地址转换块表中查找请求虚拟地址对应的请求物理地址,由于请求虚拟地址的低12位与请求物理地址的低12位相同,可以根据VA[93:12],查找对应的映射关系,从而得到请求物理地址的标识域,如果所需的映射不在地址转换快表中,就需要去下一级存储中将对应映射取到地址转换快表中。将物理地址的标识域作为标识,假设请求物理地址为PA[49:0],则请求物理地址的标识域即实际标识为PA[49:12]
预测标识比较模块用于比较预测标识和实际标识,如果相同则表示一级数据缓存中有对应数据,向第一结果选择模块93输出从预测缓存行中读取的预测缓存数据;如果不相同则认为一级数据缓存中没有对应数据,该加载请求、请求虚拟地址的索引域VA[12:7]以及实际标识会进入第一缺失队列92,等待从二级缓存中获取数据。
二级缓存接收到数据加载请求后,会基于请求虚拟地址的索引域VA[12:7]以及实际标识,向返回控制模块发送返回数据以及对应的物理地址的标识域(即返回标识)。
返回控制模块用于将返回数据发送至第一结果选择模块93,从而能够尽早输出结果。并将返回数据发送至一级缓存数据,用于缓存的更新;以及,还将返回标识发送给第一缺失队列92,以便进行后续的缓存目录更新。
第一缺失队列92还用于保存通过最近最少使用算法确定的一级数据缓存的数据阵列中缓存组中的一路。第一缓存更新模块会利用这一信息来向一级数据缓存中对应缓存行写入二级缓存返回数据。此外,第一缺失队列92还用于将返回标识发送至一级数据缓存的目录以及返回标识比较模块94。返回标识比较模块94用于对写入返回数据缓存行的有效位进行更新。
返回标识比较模块94还用于在数据返回时进行标识比较,会用返回标识与一级数据缓存中VA[11:7]相同的比较标识进行比较,在一级数据缓存的目录写入返回标识时,将比较结果相同的比较标识对应的有效位置0,以标记别名项或预测错误但能够匹配上的项,并将返回数据对应的有效位置1。
第一结果选择模块93用于选择最终结果进行输出。根据预测标识比较模块输出的比较结果,在预测标识和实际标识相同时选择预测缓存数据,预测标识和实际标识不同时选择返回数据。
上述给出的具体参数只是为了便于本方案的描述,这些参数的变化并不影响本方案的应用和效果,也不影响本方案的保护范围。
本实施例提供的缓存处理系统中,在缓存行的虚拟地址中定义页标识位来表征缓存行所在的页,当接收到处理器内核的数据加载请求,获得请求虚拟地址,并在本级缓存进行查询,若在本级数据缓存中没有命中,则从下一级数据缓存获得请求对应的目标数据及其物理地址的标识域,并返回给处理器内核,并更新各缓存行的有效位,即根据请求虚拟地址的索引域除页标志位以外的各个位,从本级数据缓存中的地址阵列中确定多个物理地址的标识域,并将其中与目标物理地址的标识域相同的物理地址的标识域对应缓存行的有效位更新为表征无效的值,将本级缓存中写入了目标数据的更新缓存行的有效位更新为表征有效的值。上述方案中,在缓存行的虚拟地址中定义页标识位,并基于页标识位对数据缓存中各缓存行的有效位进行更新,从而准确、快速实现跨页缓存情形下有效位的管理和维护,用以使数据缓存的索引范围能够跨页,在扩展缓存容量的同时,保障数据访问的准确性。
实施例七
图11为本公开实施例中提供的一种电子设备的结构示意图,如图11所示,该电子设备包括:
处理器(processor)291,电子设备还包括了存储器(memory)292;还可以包括通信接口(Communication Interface)293和总线294。其中,处理器291、存储器292、通信接口293、可以通过总线294完成相互间的通信。通信接口293可以用于信息传输。处理器291可以调用存储器292中的逻辑指令,以执行上述实施例的方法。
此外,上述的存储器292中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
存储器292作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序,如本公开实施例中的方法对应的程序指令/模块。处理器291通过运行存储在存储器292中的软件程序、指令以及模块,从而执行功能应用以及数据处理,即实现上述方法实施例中的方法。
存储器292可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器292可以包括高速随机存取存储器,还可以包括非易失性存储器。
本公开实施例提供一种非临时性计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如前述实施例所述的方法。
实施例八
本公开实施例提供一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现上述本公开实施例中任意实施例提供的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (10)
1.一种缓存处理方法,其特征在于,包括:
根据处理器内核的数据加载请求,获得请求虚拟地址;所述请求虚拟地址的索引域包括页标识位,不同所述页标识位的值表征所述请求虚拟地址对应的缓存行在本级数据缓存的数据阵列中位于不同的页;所述本级数据缓存的数据阵列包括多个页;
根据所述请求虚拟地址,查询地址转换缓存,获得所述请求虚拟地址对应的请求物理地址;根据所述请求虚拟地址的索引域,在所述本级数据缓存的数据阵列中确定一个组;基于路预测技术,在该组中确定预测缓存行;
若所述预测缓存行对应的预测物理地址的标识域与所述请求物理地址的标识域不同,则根据所述请求虚拟地址的索引域除所述页标识位以外的各个位,从所述本级数据缓存的地址阵列中确定多个物理地址的标识域;在所述多个物理地址的标识域中,确定重读物理地址的标识域,其中所述重读物理地址的标识域与所述请求物理地址的标识域相同,将所述重读物理地址的标识域对应的缓存行作为重读缓存行,从所述重读缓存行中获取重读缓存数据,并向所述处理器内核返回所述重读缓存数据;
若所述重读物理地址的标识域对应的虚拟地址的页标识位与所述请求虚拟地址的页标识位不同,则将所述重读缓存数据写入本级数据缓存中的更新缓存行,并将所述更新缓存行的有效位更新为表征有效的值;以及,将所述重读缓存行的有效位,更新为表征无效的值。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述预测缓存行对应的预测物理地址的标识域与所述请求物理地址的标识域相同,则根据所述请求虚拟地址的偏移域,从所述预测缓存行中获取预测缓存数据,并向所述处理器内核返回所述预测缓存数据。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述请求物理地址的标识域与所述多个物理地址的标识域均不同,则向下一级数据缓存发送所述数据加载请求,以使所述下一级数据缓存根据所述数据加载请求返回目标数据;
向所述处理器内核返回所述目标数据;以及,将所述目标数据写入本级数据缓存中的更新缓存行,并将所述更新缓存行的有效位更新为表征有效的值。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
基于最近最少使用算法,从所述本级数据缓存的数据阵列中与请求虚拟地址的索引域对应的一个组中确定所述更新缓存行,并清除所述更新缓存行中当前的数据。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述根据所述请求虚拟地址,查询地址转换缓存,获得所述请求虚拟地址对应的请求物理地址,包括:
查询地址转换快表中是否存在所述请求虚拟地址的地址映射;所述地址映射表征虚拟地址和物理地址之间的对应关系;所述地址转换快表用于记录部分虚拟地址的地址映射;
若存在,则根据所述地址转换快表中所述请求虚拟地址的地址映射,得到所述请求虚拟地址对应的请求物理地址;
若不存在,则从下一级地址映射存储中获取所述请求虚拟地址的地址映射,根据所述地址映射存储中所述请求虚拟地址的地址映射,得到所述请求虚拟地址对应的请求物理地址,并将所述请求虚拟地址的地址映射加入所述地址转换快表;所述地址映射存储用于存储所有虚拟地址的地址映射。
6.根据权利要求1-4任一项所述的方法,其特征在于,所述请求虚拟地址的页标识位为所述请求虚拟地址的最高位。
7.一种缓存处理装置,其特征在于,包括:
第二地址计算部件,用于根据处理器内核的数据加载请求,获得请求虚拟地址;所述请求虚拟地址的索引域包括页标识位,不同所述页标识位的值表征所述请求虚拟地址对应的缓存行在本级数据缓存的数据阵列中位于不同的页;所述本级数据缓存的数据阵列包括多个页;
第二映射查询模块,用于根据所述请求虚拟地址,查询地址转换缓存,获得所述请求虚拟地址对应的请求物理地址;
第二缓存查询模块,用于根据所述请求虚拟地址的索引域,在所述本级数据缓存的数据阵列中确定一个组;基于路预测技术,在该组中确定预测缓存行;
重读模块,用于若所述预测缓存行对应的预测物理地址的标识域与所述请求物理地址的标识域不同,则根据所述请求虚拟地址的索引域除所述页标识位以外的各个位,从所述本级数据缓存的地址阵列中确定多个物理地址的标识域;在所述多个物理地址的标识域中,确定重读物理地址的标识域,其中所述重读物理地址的标识域与所述请求物理地址的标识域相同,将所述重读物理地址的标识域对应的缓存行作为重读缓存行,从所述重读缓存行中获取重读缓存数据;
第二结果选择模块,用于向所述处理器内核返回所述重读缓存数据;
第二缓存更新模块,用于若所述重读物理地址的标识域对应的虚拟地址的页标识位与所述请求虚拟地址的页标识位不同,则将所述重读缓存数据写入本级数据缓存中的更新缓存行;
标识比较模块,用于将所述更新缓存行的有效位更新为表征有效的值;以及,将所述重读缓存行的有效位,更新为表征无效的值。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括,数据读取模块,用于:
若所述预测缓存行对应的预测物理地址的标识域与所述请求物理地址的标识域相同,则根据所述请求虚拟地址的偏移域,从所述预测缓存行中获取预测缓存数据;
所述第二结果选择模块,还用于向所述处理器内核返回所述预测缓存数据。
9.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-8中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311316370.1A CN117331854B (zh) | 2023-10-11 | 2023-10-11 | 缓存处理方法、装置、电子设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311316370.1A CN117331854B (zh) | 2023-10-11 | 2023-10-11 | 缓存处理方法、装置、电子设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117331854A CN117331854A (zh) | 2024-01-02 |
CN117331854B true CN117331854B (zh) | 2024-04-30 |
Family
ID=89275083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311316370.1A Active CN117331854B (zh) | 2023-10-11 | 2023-10-11 | 缓存处理方法、装置、电子设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117331854B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6208543B1 (en) * | 1999-05-18 | 2001-03-27 | Advanced Micro Devices, Inc. | Translation lookaside buffer (TLB) including fast hit signal generation circuitry |
CN1896972A (zh) * | 2005-07-14 | 2007-01-17 | 中国科学院计算技术研究所 | 用于虚实地址变换及读写高速缓冲存储器的方法及装置 |
CN102360339A (zh) * | 2011-10-08 | 2012-02-22 | 浙江大学 | 一种提高tlb利用效率的方法 |
CN115658564A (zh) * | 2022-10-31 | 2023-01-31 | 龙芯中科技术股份有限公司 | 地址变换高速缓存控制方法、装置、设备及介质 |
US11687466B1 (en) * | 2022-05-12 | 2023-06-27 | Ventana Micro Systems Inc. | Translation lookaside buffer consistency directory for use with virtually-indexed virtually-tagged first level data cache that holds page table permissions |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050050278A1 (en) * | 2003-09-03 | 2005-03-03 | Advanced Micro Devices, Inc. | Low power way-predicted cache |
US7337278B2 (en) * | 2004-04-15 | 2008-02-26 | International Business Machines Corporation | System, method and storage medium for prefetching via memory block tags |
-
2023
- 2023-10-11 CN CN202311316370.1A patent/CN117331854B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6208543B1 (en) * | 1999-05-18 | 2001-03-27 | Advanced Micro Devices, Inc. | Translation lookaside buffer (TLB) including fast hit signal generation circuitry |
CN1896972A (zh) * | 2005-07-14 | 2007-01-17 | 中国科学院计算技术研究所 | 用于虚实地址变换及读写高速缓冲存储器的方法及装置 |
CN102360339A (zh) * | 2011-10-08 | 2012-02-22 | 浙江大学 | 一种提高tlb利用效率的方法 |
US11687466B1 (en) * | 2022-05-12 | 2023-06-27 | Ventana Micro Systems Inc. | Translation lookaside buffer consistency directory for use with virtually-indexed virtually-tagged first level data cache that holds page table permissions |
CN115658564A (zh) * | 2022-10-31 | 2023-01-31 | 龙芯中科技术股份有限公司 | 地址变换高速缓存控制方法、装置、设备及介质 |
Non-Patent Citations (1)
Title |
---|
片上缓存二维定位数据预取技术;崔凯朝;《中国优秀硕士学位论文全文数据库》;20221031;I137-53 * |
Also Published As
Publication number | Publication date |
---|---|
CN117331854A (zh) | 2024-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11314647B2 (en) | Methods and systems for managing synonyms in virtually indexed physically tagged caches | |
US11775445B2 (en) | Translation support for a virtual cache | |
US10083126B2 (en) | Apparatus and method for avoiding conflicting entries in a storage structure | |
US10810134B2 (en) | Sharing virtual and real translations in a virtual cache | |
US11403222B2 (en) | Cache structure using a logical directory | |
CN109074313B (zh) | 缓存和方法 | |
CN117331853B (zh) | 缓存处理方法、装置、电子设备及介质 | |
CN112540939A (zh) | 存储管理装置、存储管理方法、处理器和计算机系统 | |
CN112527395B (zh) | 数据预取方法和数据处理装置 | |
CN115617709A (zh) | 缓存管理方法及装置、缓存装置、电子装置和介质 | |
US6990551B2 (en) | System and method for employing a process identifier to minimize aliasing in a linear-addressed cache | |
CN109992535B (zh) | 一种存储控制方法、装置和系统 | |
CN117331854B (zh) | 缓存处理方法、装置、电子设备及介质 | |
US8051271B2 (en) | Translation of virtual to physical addresses | |
US8271733B2 (en) | Line allocation in multi-level hierarchical data stores | |
CN118568012B (zh) | 一种访存请求的处理方法、装置、电子设备及存储介质 | |
CN114090080A (zh) | 指令高速缓存器、指令读取方法及电子设备 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |