CN116126749A - 地址映射方法、数据处理方法、装置、设备及介质 - Google Patents
地址映射方法、数据处理方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN116126749A CN116126749A CN202211697534.5A CN202211697534A CN116126749A CN 116126749 A CN116126749 A CN 116126749A CN 202211697534 A CN202211697534 A CN 202211697534A CN 116126749 A CN116126749 A CN 116126749A
- Authority
- CN
- China
- Prior art keywords
- cache
- address
- bit
- target
- physical
- 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
Links
Images
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/0866—Addressing 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/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请实施例提供了一种地址映射方法、数据处理方法、装置、设备及介质,所述方法包括:确定对应同一个集合索引的多个物理地址,其中,所述集合索引用于指示所述物理地址指向的内存块映射在缓存中的一个缓存行组;基于所述物理地址中对应标签的比特位段,将多个物理地址映射为对应至少两个不同集合索引的多个目标缓存地址;其中,所述标签用于指示所述物理地址指向的内存块映射在所述缓存的所述缓存行组中的缓存行。
Description
技术领域
本申请涉及数据存储技术领域,特别是涉及一种地址映射方法、数据处理方法、装置、设备及介质。
背景技术
在有关处理器芯片(例如CPU、GPU、SoC)等设计中,通常会采用缓存(Cache)来改善访存带宽和延迟。在高速缓存的设计中,多路组相联(N-way Set Associative)是较为常见的映射方式,其中,映射是指:将主存的物理地址映射为缓存的缓存地址,使得一个物理地址可以对应一个唯一的缓存地址,这样,在读数据的时候,可以基于物理地址映射的缓存地址,从缓存中读取数据,以提高数据读取效率。
一般而言,在多路组相联中,会将一个缓存划分为多份,每一份称为一个路组(way);每个路组又被划分为多个缓存行(Cache line),每个路组的同一个缓存行被称为一个集合(set)。其中,缓存地址一般包括标签(Tag)、集合索引(Set Index)以及块偏移(Block Offset),这三者共同定位了一个路组里面的一个缓存行中的一个数据块,在数据读取中,可以依据物理地址对应的缓存地址,从缓存中查找数据。
相关技术中,由于地址映射关系,多个不同的物理地址可能对应同一个集合索引,这样,在实际的程序运行中,容易发生多个物理地址对集合进行争抢,导致从缓存中读取数据的命中率很低、降低程序运行效率的问题。
发明内容
鉴于上述问题,提出了本申请实施例的一种地址映射方法,所述方法包括:确定对应同一个集合索引的多个物理地址,其中,所述集合索引用于指示所述物理地址指向的内存块映射在缓存中的缓存行组;
基于所述物理地址中对应标签的比特位段,将所述多个物理地址映射为对应至少两个不同集合索引的多个目标缓存地址,所述标签用于指示所述物理地址指向的内存块映射在所述缓存的所述缓存行组中的缓存行。
可选地,所述基于所述物理地址中对应标签的比特位段,将所述多个物理地址映射为对应至少两个不同集合索引的多个目标缓存地址,包括:
对每个所述物理地址,确定该物理地址预映射的初始缓存地址,所述初始缓存地址从高位到低位依次包括标签、集合索引以及块偏移;
对每个所述初始缓存地址,基于所述标签对应的比特位段中的至少一个第一比特位的值,对所述初始缓存地址的集合索引中的至少一个第二比特位的值进行调整,得到对应的目标缓存地址。
可选地,所述基于所述标签对应的比特位段中的至少一个第一比特位的值,对所述初始缓存地址的集合索引中的至少一个第二比特位的值进行调整,得到对应的目标缓存地址,包括:
针对每个所述第二比特位,对该第二比特位的值与所述至少一个第一比特位的值进行预设运算;
将所述预设运算的结果值作为所述第二比特位的调整后值,得到所述目标缓存地址。
可选地,所述预设运算包括异或运算。
可选地,所述至少一个第一比特位是通过以下方式确定的:
获取预设时间内,对同一个缓存行组进行读写操作时所对应的第一物理地址;
基于各个所述第一物理地址对应的读写频率,以及不同第一物理地址对应标签的比特位段中各个比特位的值,确定所述至少一个第一比特位。
可选地,所述至少一个第二比特位是通过以下方式确定的:
获取预设时间内,每个所述缓存行组被执行读写操作的频率,并确定所述频率大于预设频率的多个目标缓存行组;
基于所述多个目标缓存行组对应的集合索引中各个比特位的值,确定所述至少一个第二比特位。
可选地,所述缓存被划分为多路,每一路缓存包括多个缓存行,所述至少一个第一比特位是通过以下方式确定的:
获取预设时间内,所访问的第二物理地址中的数据在所述缓存中所位于的缓存行的跳转频率;其中,所述跳转频率用于表征所述数据从其中一路的缓存行跳转到另一路的缓存行的频率;
在所述跳转频率高于预设跳转频率的情况下,基于前后跳变的缓存行对应的标签,确定所述至少一个第一比特位。
可选地,所述基于所述物理地址中对应标签的比特位段,将所述多个物理地址映射为对应至少两个不同集合索引的多个目标缓存地址,包括:
基于所述物理地址中对应标签的比特位段中的低位比特位的值,对所述物理地址中对应所述集合索引的比特位段中的高位比特位的值进行调整;
基于调整后的所述高位比特位的值,将多个所述物理地址映射为对应至少两个不同集合索引的多个目标缓存地址。
本申请的第二方面,提供一种数据处理方法,所述方法包括:
响应于针对目标物理地址的访问请求,确定所述目标物理地址所对应的目标缓存地址;其中,所述目标缓存地址是根据上述第一方面所述的地址映射方法得到的;
基于所述目标缓存地址,对所述目标物理地址中的数据进行处理,其中,所述处理包括读处理和/或写处理。
可选地,基于所述目标缓存地址,对所述目标物理地址中的数据进行处理,包括:
在所述缓存中不存在所述目标缓存地址的情况下,对所述目标物理地址中的数据执行写处理;
在所述缓存中存在所述目标缓存地址的情况下,从所述目标缓存地址中读取所述访问请求所需的数据;
其中,所述写处理包括:将所述目标物理地址中的数据写入目标存储单元中,并将所目标存储单元的原始目标缓存地址更新为所述目标缓存地址,所述目标存储单元为与所述目标缓存地址中的集合索引对应的缓存行组中的任一缓存行。
本申请的第三方面,提供一种地址映射装置,所述装置包括:
地址确定模块,用于确定对应同一个集合索引的多个物理地址,其中,所述集合索引用于指示所述物理地址指向的内存块映射在缓存中的缓存行组;
地址映射模块,用于基于所述物理地址中对应标签的比特位段,将多个所述物理地址映射为对应至少两个不同集合索引的多个目标缓存地址;
其中,所述标签用于指示所述物理地址指向的内存块映射在所述缓存的所述缓存行组中的缓存行。
本申请的第四方面,提供一种数据处理装置,所述装置包括:
地址确定模块,用于响应于对目标物理地址的访问请求,确定所述目标物理地址所对应的目标缓存地址;其中,所述目标缓存地址是根据上述第二方面所述的地址映射方法得到的;
数据处理模块,用于基于所述目标缓存地址,对所述目标物理地址中的数据进行处理,其中,所述处理包括读处理和/或写处理。
本申请实施例的第五方面,还公开了一种电子设备,包括:存储器、处理器及存储在存储器上的计算机程序,所述处理器执行所述计算机程序以实现第一方面所述的地址映射方法的步骤或者所述的数据处理方法的步骤。
本申请实施例的第六方面,还公开了一种计算机可读存储介质,其存储的计算机程序使得处理器执行如本申请第一方面实施例所述的地址映射方法的步骤或者所述的数据处理方法的步骤。
本申请实施例包括以下优点:
本实施例中,可以确定对应同一个集合索引的多个物理地址,并基于物理地址中对应标签的比特位段,将多个物理地址映射为对应至少两个不同集合索引的多个目标缓存地址。
其中,标签用于指示物理地址指向的内存块映射在缓存的所述缓存行组中的缓存行,集合索引用于指示物理地址指向的内存块映射在缓存中的缓存行组。由于对于映射到同一个集合索引的多个不同物理地址而言,不同的物理地址对应标签的比特位段的值是不同的,这样,可以在基于该比特位段进行缓存地址的映射时,将多个物理地址映射为对应至少两个不同集合索引的多个目标缓存地址,也就是说,原本映射到同一个缓存行组的物理地址,映射到了多个不同的缓存行组,这样,可以将原本应该存储到到同一个缓存行组的多个物理地址的数据,会分散存储到多个缓存行组的内存块中,从而充分利用了缓存的存储资源,提高了缓存的命中率,并且也能优化CPU、GPU、SoC等处理器芯片的运行。
上述说明仅是本公开技术方案的概述,为了能够更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为了让本公开的上述和其它目的、特征和优点能够更明显易懂,以下特举本公开的具体实施方式。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是相关技术中物理地址映射为目标缓存地址的示意图;
图2是一种物理地址和目标缓存地址的映射情况示意图;
图3是本申请实施例中一种地址映射方法的步骤流程图;
图4是本申请实施例中的一种数据处理方法的步骤流程图;
图5是本申请实施例中的一种地址映射装置的结构示意图;
图6是本申请实施例中的一种数据处理装置的结构示意图;
图7是本申请实施例中的一种电子设备的框架结构示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为充分理解本申请,对多路组相联以及多路组相联的地址映射方式进行介绍。相关技术中,在多路组相联中,一般通过地址散列映射的方式将物理地址映射为目标缓存地址,参照图1,示出了相关技术中物理地址映射为目标缓存地址的示意图。
图1所示是使用四路组相联的缓存。具体地,是将缓存分成4路(图中路0-路3),每路又被划分为256行,每路的一个缓存行可以理解为是高速缓存中的一个缓存行。其中,将所有索引相同的缓存行组合在一起称之为组或缓存行组(set),则共有256个组(图中组0-组255),其中,每个组对应4路中具有同一个地址的缓存行,即每个组对应4个Cache line。
其中,缓存地址从高位到低位依次包括:标签、集合索引以及块偏移,如图1所示,标签可以用于定位同一个组中不同路的缓存行,集合索引可以用于定位一个组,也即本申请的缓存行组,而块偏移可以用于定位一个缓存行中的数据块。
在进行地址映射时,如图1所示,以将物理地址转换为48位的缓存地址为例,设物理地址的0-4位用于作为缓存地址中的块偏移,5-12位作为集合索引,13-47位作为标签。这样,一个物理地址可以唯一映射一个目标缓存地址。
实际中,便可以按照上述的地址映射方式,在将物理地址中的数据存储到对应的一个缓存行中时,可以确定该物理地址所映射到的缓存地址,之后,将数据存储到缓存地址所表征的存储区中。
但是,在组相联的映射方式中,如果所访问的地址都集中映射到了少数的几个集合上,例如,映射到同一个缓存行组的几个缓存行中,会造成对同一组内的路的争抢,即多个物理地址都争抢一个组内的路,如此,会造成大量的高速缓存缺失(Cache miss),降低了对Cache的存储资源的利用率。
具体地,进行示例性说明如下:
<示例#1>
图2示出了一种物理地址和目标缓存地址的映射情况示意图,如图2所示,假设主存的第0块,第D块,第2D块到第5D块数据映射到Cache的第0组(set 0)的任意一行。
假设当前时刻第0块对应第0路、第D块对应第1路、第2D块对应第2路、第3D块对应第3路;而在第一时刻,需要读取第4D块的数据,此种情况下,组0的任意一行都不存在这样的数据,便需要将第4D块的数据写入到组0的任意一行中,假设写入到组0的第1路中,则组0的路1中的数据需要写回到第D块(如图2中第一时刻虚线框中的虚线箭头所示),然后再写入第4D块的数据,如此,第1路中便不再保存第D块的数据,转而保存第4D块的数据。
在第二时刻,若需要读取第D块的数据,则第0组的任意一行都不存在这样的数据,又需要将第D块的数据写入到第0组的任意一行,假设写入到第0组的第0路中,此时,第0组的第0路中的数据需要写回到第0块(如图2中第二时刻虚线框中的虚线箭头所示),然后再写入第D块的数据,如此,第0路中便不再保存第0块的数据,转而保存第D块的数据。
如此循环,假设在一段时间内,频繁在第0块到第5D块中读取数据,则会频繁发生数据丢失的问题(也就是Cache不命中),如此便会频繁发生从主存写入到Cache的操作,也就是说多个物理地址对set0发生了争抢。导致CPU运行效率低下的问题。
并且,此种情况下,多个物理地址发生争抢的对象一般是一至两个组,也就是说一段时间内,可能是少数的几个组存在争抢,而其他组处于空闲状态(无数据读取也无数据写入),便浪费了缓存的存储资源,这在Cache存储资源有限、要增加存储资源需要支出高昂成本的背景下,存储资源的利用率低是不能容忍的问题。
有鉴于此,本申请提供了一种可以提高缓存的存储资源的利用率、同时可以提高缓存命中率的方案,该方案的核心目的在于:对当前的地址映射方式进行改进,将相关技术中对应同一个集合索引的多个不同物理地址,映射为至少两个集合索引,以达到将原本映射同一个组的多个物理地址中的数据,分散到至少两个组中存储,从而避免多个主存地址争抢一个组的情况,这样一来,在多个主存被访问频繁的情况下,可以由多个组提供访问,从而提高了缓存命中率,进而提高了CPU运行效率。
下面,对本申请实施例的地址映射方法进行说明,参照图3所示,示出了本申请的一种地址映射方法的步骤流程图,其中,本实施例的地址映射方法可以由计算机设备执行,具体可以应用于多路组相连的CPU中,如图3所示,具体可以包括以下步骤:
步骤S301:确定对应同一个集合索引的多个物理地址。
其中,集合索引用于指示物理地址指向的内存块映射在缓存中的一个缓存行组。
其中,物理地址可以是指主存中所存数据的地址,主存可以包括内存、外存等设备。
其中,缓存可以是高速缓冲存储器,在CPU支持程序的运行中,一般会将程序所访问的访问地址转换为物理地址,再从物理地址中把该地址的数据加载到CPU的寄存器中,以支持程序的运行。在CPU配置有缓存的情况下,缓存可以提高CPU对数据的读写效率,以支持程序的快速运行,具体地,CPU可以将程序所访问的物理地址中的数据会先存储到缓存中,在下一次针对该物理地址进行访问时,便可以从缓存中读取数据,由于缓存的运行速度高于主存的运行速度,也就是说在一次数据读取中,从缓存中读数据会更快,因此可以平衡CPU和主存之间的运行速度差,进而支持程序的高效运行。
本实施例中,可以采用多组相联的缓存,也就是说,会将缓存平均划分为多路,每一路缓存又均等划分为多个缓存行,这样,可以得到多个缓存行组,每个缓存行组包括多个具有相同集合索引的缓存行。
示例地,参照图1所示,以四路组相联为例,缓存被划分为4路,每一路被划分为256个缓存行,这样缓存实际上被均等划分为4*256=1024个存储块。其中,包括256个缓存行组,即包括256个set,每个缓存行组有4个具有同一集合索引的缓存行,不同缓存行位于不同的路中,也就是说,一个缓存行组中的各个缓存行共用一个集合索引。
本实施例中,可以根据多路组相联的路数,也就是说缓存被划分后的路数,确定目标缓存地址中集合索引的比特位数,例如,以四路组相联为例,目标缓存地址中集合索引的比特位数可以是8位;又例如,以两路组相联为例,目标缓存地址中集合索引的比特位数可以是4位。
接着,可以将物理地址转换为二进制的地址,其中,二进制的位数与CPU的位数有关,在转换为二进制的物理地址后,便可以按照目标缓存地址中集合索引的位段、标签的位段和块偏移的位段,对二进制的物理地址进行比特位划分,得到二进制的物理地址中映射到标签的位段、映射到集合索引的位段、以及映射到块偏移的位段。
参照图1所示,转换为二进制的物理地址后,可以从高位到低位的顺序,将二进制的物理地址划分为对应标签的位段1([47:13])、映射到集合索引的位段2([12:5])、以及映射到块偏移的位段3([4:0]),划分完成后,其实也就完成了物理地址到目标缓存地址的初步映射。
接着,可以得到二进制的物理地址中属于集合索引的比特位,进一步可以根据二进制的物理地址中对应集合索引的各个比特位的值,确定出针对同一个集合索引的各个物理地址。具体地,同一个集合索引的各个物理地址中,其属于集合索引的各个比特位的值是一致的。
示例地,有物理地址A、物理地址B、物理地址C,其各自的二进制的地址(32位)分别是:“1111 1010 1011 0001 0010 0011 1000 1001”、“11101010 1001 0011 0010 00111000 1101”、“0110 1010 0001 1011 0011 0011 10101101”,其中,从低位到高位,第9位至第16位对应集合索引(为清楚说明,物理地址中用下划线部分标识出集合索引),则物理地址A和物理地址B具有相同的集合索引,也就是说物理地址A和物理地址B对应同一个缓存行组,即同一个set,它们在被程序频繁访问时,可能会对该缓存行组中的各个缓存行发生争抢。
步骤S302:基于物理地址中对应标签的比特位段,将多个物理地址映射为对应至少两个不同集合索引的多个目标缓存地址;
其中,标签用于指示物理地址指向的内存块映射在缓存的缓存行组中的缓存行,也就是说其用于标识缓存行组中的一个缓存行所存储的数据。
本实施例中,对于映射到同一个集合索引的物理地址,可以在将这些物理地址映射为目标缓存地址时,对集合索引中各个比特位的值进行调整,以使其可以分散为不同的集合索引,而不共用一个集合索引。
具体地,可以依据对应标签的比特位段中的比特位的值,对二进制的物理地址中对应集合索引的一个或多个比特位的值进行调整,从而改变该二进制的物理地址中对应集合索引的位段值。
因不同的物理地址虽然其对应同一个集合索引,但是一定是对应了不同的标签,也就是说二进制的物理地址中属于标签的位段是各不相同的,这样,可以基于各不相同的标签的比特位段,改变集合索引的一个或多个比特位的值,在集合索引的一个或多个比特位的值被改变的情况下,这些物理地址自然被分散映射到至少两个不同集合索引,即这些原本会在同一个缓存行组中存储数据的物理地址,改变为会在至少两个缓存行组中存储数据。
示例地,物理地址A-物理地址H的数据原本仅会映射到set0的4个缓存行中存储,但是经过本申请的映射方法,物理地址A-物理地址H的数据可以在set0和set1的8个缓存行中存储,这样,可提供存储的存储块增多,进而提高了对缓存资源的利用率,从而提高缓存的命中率。
在一种可选示例中,在基于物理地址中对应标签的比特位段,将多个物理地址映射为对应至少两个不同集合索引的多个目标缓存地址中,可以将二进制的物理地址中属于标签的位段中的一个比特位的值,作为集合索引的一个或多个比特位的值。
示例地,物理地址A和物理地址B具有相同的集合索引,物理地址A的二进制地址为“1111 1010 1011 0001 0010 0011 1000 1001”,物理地址B的二进制地址为“1110 10101001 0011 0010 0011 1000 1101”,其中,可以将二进制的地址中对应标签的最低位比特位的值,作为集合索引中最高位的比特位的值,这样,物理地址A对应的集合索引为“0001 0001”,物理地址B对应的集合索引为“10010001”,于是将其映射到了不同的两个集合索引。
需要说明的是,在将对应标签的最低位比特位的值,作为集合索引中最高位的比特位的值时,由于标签的最低位比特位的值要么是“0”、要么是“1”,这样,多个物理地址对应的是两个不同的集合索引,也就是映射到两个缓存行组。
再示例地,也可以将二进制的地址中对应标签的多个比特位的值,作为集合索引中多个比特位的值,例如,将标签的最低位比特位的值和次低位比特位的值,分别作为集合索引中最高位比特位的值和次高位比特位的值,这样,物理地址A对应的集合索引为“0001 0001”,物理地址B对应的集合索引为“01010001”。
采用此种实施方式时,可以依据标签中两个比特位的值改变了集合索引中其他两个比特位的值,由于比特位的值要么是“0”、要么是“1”,当有两个比特位组合时,其便有4中可能的情况,因此,此种方式下,会将同一个集合索引的多个物理地址,映射到4种不同的集合索引,也就是映射到四个缓存行组。
在又一种可选示例中,在基于物理地址中对应标签的比特位段,将多个物理地址映射为对应至少两个不同集合索引的多个目标缓存地址中,可以将二进制的物理地址中属于标签的位段中的多个比特位的值进行逻辑运算后,作为集合索引的一个或多个比特位的值。
示例地,可以将二进制的地址中对应标签的最低位比特位的值和次低位比特位的值进行异或运算后,将其作为集合索引中最高位的比特位的值,这样,物理地址A对应的集合索引为“00010001”,物理地址B对应的集合索引为“1001 0001”,于是将其映射到了不同的两个集合索引。
当然,基于物理地址中对应标签的比特位段,将物理地址映射为目标缓存地址的方式可以不限于上述方式,在下述实施例中,会给出更进一步的映射方式,以改变所映射的集合索引的可选示例。
采用本实施例的技术方案,由于多个不同的物理地址中,其对应标签的比特位段一般是不一致的,基于该不一致的比特位段中比特位的值,可以改变集合索引的位段的值,进而达到上述所述的将多个物理地址映射为对应至少两个不同集合索引的多个目标缓存地址的目的,也就是说将原本映射到同一个缓存行组的多个物理地址,分散映射到了多个缓存行组。这样,可以提高缓存的命中率,从而避免程序运行中对set争抢的问题,进而优化程序的运行。同时采用本申请的地址映射方式,几乎不引入新的硬件开销,从而大大提高硬件性能
下面,以图2为例,对本申请实施例的优点进行示例性说明:
<示例#2>
图2中,在主存的第0块,第D块,第2D块到第5D块数据映射到缓存的第0组的任意一行的情况下,会出现上述六个物理地址对第0组进行争抢的情况。
采用本实施例的技术方案,相比于<示例#1>,主存的第0块、第D块、第2D块到第5D块会映射到缓存的第0组和缓存的第1组,其中,假设第0块、第D块、第2D块映射到第0组,而第3D块、第4D块、第5D块映射到第1组,这样,在支持程序运行时,会转而是以下的过程:
相比于<示例#1>的当前时刻的数据存储情况,本实施例的第0块的数据会位于第0组的第0路、第D块的数据位于第1路、第2D块的数据位于第2路,而第3D块的数据会被存储在第1组的缓存行中。
在第一时刻,需要读取第4D块的数据,此种情况下,第0组还有一行未被存储数据,第1组的缓存行中也有盈余存储行,因此,会将第4D块的数据写入到第1组的任一空闲存储行中,此时,已经不存在第4D块需要争抢第0组的缓存行的问题,后续便可以从第1组的缓存行中读取第4D块的数据。
在第二时刻,若需要读取第D块的数据,则从第0组的第1路缓存行中读取即可,可见,本申请的地址映射方法提高了每次读取数据的命中率,当命中率得到提高时,程序的运行效率也得到了提高。
其中,本实施例的地址映射方法可以应用于两路组相连、四路组相联甚至是全路组相联中。
如上述实施例所述,在基于物理地址中对应标签的比特位段,将多个物理地址映射为对应至少两个不同集合索引的多个目标缓存地址时,可以利用物理地址中对应标签的比特位段中的一个或多个比特位的值,对物理地址中对应集合索引的比特位段中的一个或多个比特位的值进行调整,从而改变物理地址中对应集合索引的比特位段中的一个或多个比特位的值,进而可以基于集合索引的一个或多个比特位被改变后的值,进行映射得到目标缓存地址。
示例地,主存的第0块,第D块,第2D块到第5D块数据映射到缓存的第0组的任意一个缓存行,但是经本申请的映射方法,主存的第0块,第D块,第2D块到第5D块数据映射到缓存的第1组和第0组,从而达到物理地址到目标缓存地址的分散映射,这样,使得在第0块,第D块,第2D块到第5D块数据可以被写入到第1组的四个缓存行和第0组的四个缓存行,如此,便提高了缓存资源的利用率,进而提高了缓存中数据的命中率。
在一种可选的实现方式中,可以直接基于物理地址中对应标签的比特位段中的低位比特位的值,对物理地址中对应集合索引的比特位段中的高位比特位的值进行调整;并基于调整后的高位比特位的值,将多个物理地址映射为对应至少两个不同集合索引的多个目标缓存地址。
在本实现方式中,标签的比特位段中的低位比特位的值可以是对应标签的最低位比特位的值,实际中,可以将最低位比特位的值作为集合索引的高位比特位的值。或者,可以基于标签中低位比特位的值和集合索引中高位比特位的值之间的异或运算的值,作为高位比特位的值。由此实现对集合索引的调整,实际中,可以基于调整后的高位比特位的值,对物理地址进行映射。
映射的过程可以详见上述过程即可,也就是说在对二进制的物理地址中对应集合索引的高位比特位的值进行调整后,可以按照目标缓存地址的划分,对二进制的物理地址进行分段,得到目标缓存地址。
在又一种具体实现方式中,可以对每个物理地址,确定该物理地址预映射的初始缓存地址;并对每个初始缓存地址,基于标签对应的比特位段中的至少一个第一比特位的值,对初始缓存地址的集合索引中的至少一个第二比特位的值进行调整,得到对应的目标缓存地址。
其中,缓存初始地址从高位到低位依次包括标签、集合索引以及块偏移。
本实施例中,初始缓存地址可以是对物理地址进行二进制转换后,再根据缓存地址中标签位数、集合索引位数和块偏移位数,对二进制的物理地址进行划分后得到的。
示例地,针对物理地址A,其二进制的地址(32位)地址是:1111 10101011000100100011 1000 1001,则初始缓存地址为“11111010101100010010001 110001001”,其中,“111110101011000”是标签tag,“10010001”是集合索引,“110001001”是块偏移。
其中,可以对初始缓存地址中的标签中的至少一个第一比特位的值,对初始缓存地址中的集合索引中的至少一个第二比特位的值进行调整,得到对应的目标缓存地址。
可选地,调整过程是:对多个第一比特位的值进行逻辑运算后,将逻辑运算后的值作为第二比特位的值。又可选地,调整过程是:将至少一个第一比特位的值与每个第二比特位的值进行逻辑运算,将逻辑运算后的值作为该第二比特位的值。
上述逻辑运算可以是常用的运算,如异或运算,逻辑与运算和逻辑或运算中的任一种,只要保证可以将多个初始缓存地址中的集合索引映射为不同的至少两个集合索引即可。
其中,第一比特位的数量可以是一个,也可以是多个,第二比特位的数量可以是一个或多个,在第二比特位是多个的情况下,可以针对至少一个第一比特位的值,对每个第二比特位的值进行分别调整。
由于对于映射到同一个集合索引缓存的多个不同物理地址而言,根据对应集合索引的比特位段的值进行了调整。由此,可以使得多个不同物理地址映射到的目标缓存地址中的集合索引发生了变化,不再映射到同一个集合索引,而会映射到多个集合索引。这样,多个物理地址的数据便会加载到不同的缓存行组中,避免多个物理地址都争抢一个组内的缓存行的问题,从而不仅大大减少了缓存的访问冲突,提高了缓存容量的利用率,进而提升了缓存命中率,并且也能优化CPU/GPU/SoC的运行。
具体实施时,可以针对每个第二比特位,对该第二比特位的值与至少一个第一比特位的值进行预设运算;并将预设运算的结果值作为第二比特位的调整后值,得到目标缓存地址。
在一种实施例中,在第一比特位和第二比特位均为一个的情况下,可以将第二比特位的值与第一比特位的值进行预设运算的值作为第二比特位的值,以实现对集合索引的调控。
示例地,以将物理地址转换为32位的目标缓存地址为例,假设物理地址的0-8位用于作为目标缓存地址中的块偏移,9-16位作为缓存地址中的集合索引,其中,第二比特位有一个,假设为第16位,第一比特位是1个,假设为第17位,如此,可以将第16位的值和第17位的值进行异或运算得到的值作为第16位的调整后值,从而得到最终映射到的目标缓存地址。
例如,物理地址A、物理地址B其各自的初始缓存地址分别是:“11111010101100010010001 110001001”、“111010101001001 10010001 110001101”,假设第一比特位是标签的低位比特位,对低位比特位和集合索引的最高位比特位进行异或运算,最终物理地址A、物理地址B其各自的初始缓存地址分别是“111110101011000 10010001 110001001”、“111010101001001 00010001 1 10001101”。
在又一种实施例中,在第一比特位为多个,第二比特位为一个的情况下,可以将第二比特位的值与多个第一比特位的值进行预设运算的值,作为第二比特位的值,以实现对集合索引的调控。
示例地,有物理地址A、物理地址B其各自的初始缓存地址分别是:“111110101011000 10010001 110001001”、“111010101001001 10010001 110001101”,假设第一比特位是标签的最低位比特位和次低位比特位,对最低位比特位和次低位比特位,与集合索引的最高位比特位进行异或运算,最终物理地址A、物理地址B其各自的初始缓存地址分别是“11111010101100000010001 110001001”、“111010101001001 10010001 110001101”。
在又一种实施例中,在第一比特位为多个,第二比特位也可以为多个的情况下,可以将每个第二比特位的值与多个第一比特位的值进行预设运算的值作为该第二比特位的值,以实现对集合索引的调整。
示例地,第二比特位有两个,假设为第16位和第15位,第一比特位是三个,假设为第17位、第18位和第19位,如此,可以将第16位的值和第17位、第18位和第19位的值进行异或运算得到的值,作为第16位的调整后值,将第15位的值和第17位、第18位和第19位的值进行异或运算得到的值,作为第15位的调整后值,从而得到最终映射到的目标缓存地址。
或者,可以对多个第一比特位进行分组,得到与每个第二比特位对应的一组第一比特位,再将每个第二比特位的值与对应的一组第一比特位的值进行预设运算的值,作为该第二比特位的值,以实现对集合索引的调控。
具体地,在第二比特位有多个的情况下,可以为每个第二比特位匹配一个或多个第一比特位,也就是说,在第一比特位和第二比特位均为多个的情况下,可以按照第二比特位的数量,对第一比特位进行划分,使得每个第二比特位都对应各自的一组第一比特位,在进行调整时,可以针对每个第二比特位,将该第二比特位的值和对应的一组第一比特位的值进行预设运算,从而得到该第二比特位的调整后值。
示例地,第二比特位有两个,假设为第16位和第15位,第一比特位是三个,假设为第17位、第18位和第19位,如此,可以将三个第一比特位划分为两组。例如,第17位、第18位针对第二比特位中的第15位,第19位针对第二比特位中的第16位,则在调整时,可以将第15位的值和第17位、第18位的值进行异或运算第15位的调整后值,将第19位的值和第16位的值进行异或运算得到的值作为第16位的调整后值,从而得到最终映射到的目标缓存地址。
如上所述,预设运算可以是逻辑运算中的异或运算。
当然,实际中,也可以不仅限于异或运算,也可以是与运算或“或运算”,只要能做到将初始缓存地址中的集合索引被改变即可。
采用上述实施方式时,由于在对集合索引进行调整时,不仅依据了标签中第一比特位的值,还依据了集合索引中第二比特位的原始值,当其二者进行异或运算时,可以使得原本映射到同一个集合索引的两个物理地址,会映射到两个不同的集合索引。
在一种可选示例中,第一比特位和第二比特位可以是预先指定的比特位,具体地,可以根据实际情况,在地址映射之前,指定标签中的一个或多个比特位作为第一比特位,以及指定集合索引中的一个或多个比特位作为第二比特位。
其中,在对应相同的集合索引的多个物理地址中,物理地址的变化主要体现在标签中,一种可选方式中,第二比特位可以是集合索引的高位比特位,第一比特位可以是标签的低位比特位。
其中,集合索引的高位比特位可以是集合索引中的最高位比特位,标签的低位比特位可以是标签的最低位比特位。示例地,物理地址A的目标缓存地址为“11111010101100010010001 110001001”,集合索引的高位比特位可以是第16位,标签的低位比特位可以是第17位。
在又一种可选示例中,可以根据对各个物理地址的访问频率,确定出发生争抢较多的路组,确定出第二比特位,并依据争抢较多的路组所对应的各个物理地址中对应标签的比特位段中各个比特位的变化规律,进一步确定出第一比特位。
可选地,可以预先确定每个集合索引对应的缓存行被执行读写操作的频率,将读写频率高的,特别是被频繁写入数据的缓存行对应的集合索引筛选出来,通过比对这些筛选出的集合索引的各个比特位,可以确定翻转频率较高的比特位,将该翻转频率较高的比特位作为第二比特位。
其中,针对第一比特位的确定,可以按照以下两种方式确定:
第一种方式:
以缓存行组的数据读写情况为参考,来确定出第一比特位,该方式中,可以针对缓存行组的数据读写情况,确定缓存行组每个缓存行中的数据被读取和写入的频率,根据这一频率,可以得到每个缓存行组的读写变化,进而基于读写变化所对应的各个物理地址中的变化,确定出第一比特位。
具体实施时,可以获取预设时间内,对同一个缓存行组进行读写操作时所针对的第一物理地址;并基于各个所述第一物理地址对应的读写频率,以及不同第一物理地址对应标签的比特位段中各个比特位的值,确定第一比特位。
其中,预设时间可以设置为一小时,或者设置为一天,或者设置为一分钟,或者可以设置为程序运行繁忙的时段。具体地,可以记录在该时段内,同一个缓存行组进行读写操作所针对的第一物理地址,具体可以包括读操作也可以包括写操作,具有写操作的情况下,便可以认为是向缓存行中写入了数据,进行读操作时,便可以理解为是对缓存行中的数据进行了读取。
其中,一个缓存行组频繁出现读写操作时,表征这个缓存行组中的缓存行被多个物理地址争抢,也就是出现了上述<示例#1>的情况。因此,可以记录每次读操作所针对的第一物理地址,以及写操作针对的第一物理地址,
其中,第一物理地址的读写频率,可以是指读操作的第一物理地址的频率和写操作的第一物理的频率之和,也就是第一物理地址被频繁读取,同时又被频繁写入缓存行。
其中,可以比较被访问频率高于目标访问频率的不同第一物理地址中标签的各个比特位段的变化,可以确定出第一比特位。
以<示例#1>为例,第D块和第4D块的数据对应的物理地址被频繁写入到缓存行,同时又被频繁从缓存行中读取出,因此,可以比较第D块和第4D块对应标签的比特位的值,进而将不一样的值对应的比特位作为第一比特位。
其中,在第一物理地址有多个的情况下,可以比较多个第一物理地址中对应标签的比特位的值,进而将值不一致的比特位中的任一比特位作为第一比特位,或者将不一致的比特位均作为第一比特位。
采用此种实施方式时,可以从物理地址被频繁读写的角度,确定出在缓存行组中频繁进行读写操作的物理地址,进而根据这些物理地址中对应标签的比特位的值的异同,确定出第一比特位,从而使得可以将大部分访问频繁的程序所需的数据映射到更多的缓存行组中,从而提高访问频繁的程序在缓存中的命中率。
第二种方式:
以应用程序所访问的物理地址的数据在缓存行中的跳变频率为参考,来确定出第一比特位,该方式中,可以针对应用程序所访问的物理地址在缓存中被读取的缓存行的跳转情况,该跳变情况可以用于表征应用程序所访问的物理地址中的数据,是否稳定地在缓存中存储,也就是说,其存储在缓存行中的数据是否频繁被其他物理地址争抢,进而可以基于表征应用程序所访问的物理地址的数据在缓存中的存储情况,确定出第一比特位和第二比特位。
具体实施时,可以获取预设时间内,所访问的第二物理地址中的数据在缓存中所位于的缓存行的跳转频率;并在所述跳转频率高于预设跳转频率的情况下,基于前后跳变的缓存行对应的标签,确定所述第一比特位。
其中,跳转频率用于表征数据从其中一路的缓存行跳转到另一路的缓存行的频率。
如上所述,缓存被划分为多路,每一路缓存包括多个缓存行,一个缓存行组包括多路的缓存行,且具有同一个集合索引。其中,对于被访问的每个第二物理地址,可以记录该第二物理地址的数据每次被读取出的缓存行,按照相关技术,第二物理地址一般对应的是一个集合索引,也就是说一个缓存行组,第二物理地址的数据会被随机存储在该缓存行组的任一缓存行中。
若出现了上述<示例#1>的情况,则第二物理地址的数据被写入到的缓存行会频繁在缓存行组中发生跳变,也就是说针对该第二物理地址,其有多次的缓存miss出现(原来存储到的缓存行被其他物理地址争抢了),每一次缓存miss都会导致第二物理地址的数据被写入到另一缓存行,如此,便会频繁从不同路的缓存行中读取第二物理地址的数据。
其中,可以记录读取第二物理地址的数据时,其所来源的缓存行对应哪一路,若前后两次从不同路的缓存行中读取第二物理地址的数据,则记录一次跳转。
当跳转频率大于预设跳转频率的情况下,表征第二物理地址对应的缓存行组已经被频繁争抢,因此,可以比较前后跳变的缓存行对应的标签中各个比特位的值,从而确定出第一比特位。
因前后跳变的缓存行对应的标签中各个比特位的值,可以反映缓存行被哪些物理地址争抢,例如,第二物理地址前一次从第1路的缓存行中读取,后一次从第0路的缓存行中读取,则可以获取第1路的缓存行后一次存储的数据所对应的标签,以及第0路的缓存行前一次存储的数据所对应的标签,这两个标签即为前后跳变的缓存行对应的标签。
这样,可以得到对缓存行组争抢较多的物理地址,如此采用上述第一种方式,便可以确定出第一比特位。
需要说明的是,以上两种确定第一比特位的方式可以任选其一即可,实际中,采用第一种方式时,由于以缓存行组的数据读写情况为参考,可以更易实现,通过缓存行的读写日志即可确定出争抢频繁的物理地址,逻辑实现较为简单。
其中,针对第二比特位的确定,可以按照以下方式确定:
获取预设时间内,每个缓存行组被执行读写操作的频率,并确定频率大于预设频率的多个目标缓存行组;并基于多个目标缓存行组对应的集合索引中各个比特位的值,确定第二比特位。
如上所述,一个缓存行组频繁出现读写操作时,表征这个缓存行组中的缓存行被多个物理地址争抢,也就是出现了上述<示例#1>的情况。因此,可以将读写频率大于预设频率的缓存行组筛选出来,并确定这些缓存行组实际对应的集合索引。
接着,比较多个目标缓存行组对应的集合索引中各个比特位的值的异同,将不一致的一个或多个比特位作为第二比特位。
示例地,具有三个目标缓存行组,集合索引是第9位到第16位,三个目标缓存行组分别对应的集合索引是:“01110001”、“01010001”、“11010001”,则不一致的第16位和第14位,则可以将第16位确定为第二比特位,或者将第14位确定为第二比特位,或者将二者都确定为第二比特位。
采用此种实施方式时,可以基于出现缓存miss较多的缓存行对应的索引标签之间的异同,确定出第二比特位,由此可以缓解被争抢较多的缓存行的存储压力,进而提高缓存的运行效率。
实际中,基于以上确定第一比特位和第二比特位的实施例,也可以对物理地址采用个性化的映射方案,具体实施时,可以基于每个缓存行组被执行读写操作的频率,确定频率大于预设频率的多个目标缓存行组所对应的物理地址,进而得到访问频率较高的应用程序,这些应用程序的特点是:访问频率较高、容易产生缓存行争抢,则可以按照本申请的地址映射方法,获取该应用程序所要访问的各个物理地址各自对应的目标缓存地址,也就是说将访问频率高的应用程序所需的数据尽量映射到更多的缓存行组中存储,以提高命中率。
而对于访问频率较低、不产生缓存行争抢的应用程序,可以按照相关技术的直接映射方式,获取其所要访问的各个物理地址各自对应的目标缓存地址,这样,可以将访问频率低的应用程序所需的数据尽量映射到较少的缓存行组中,从而为访问频率高的应用程序腾出较多的缓存空间,以支持访问频率高的应用程序的快速运行。
基于相同的发明构思,本申请还提供了一种数据处理方法,参照图4所示,示出了本申请的数据处理方法的步骤流程图,如图4所示,该方法仍然可以应用于多路组相联的CPU中,具体可以包括以下步骤:
步骤S401:响应于对目标物理地址的访问请求,确定目标物理地址所对应的缓存的目标缓存地址;其中,目标缓存地址是根据上述实施例所述的地址映射方法得到的;
步骤S402:基于目标缓存地址,对目标物理地址中的数据进行处理,其中,处理包括读处理和/或写处理。
其中,物理地址可以是主存中的物理地址,其主存可以包括内存和外存,在接收到对目标物理地址访问请求时,可以先确定目标物理地址所指示的内存块在缓存中对应的目标缓存地址,进而得到其指示的内存块所映射到的缓存行组,接着根据目标缓存地址中的标签,确定其位于缓存行组中的哪一路,若比较缓存行组中各个缓存行的标签位,确定缓存中不存在目标物理地址的数据,则需要将目标物理地址中的数据写入到缓存行中;若确定其存在目标物理地址的数据,则从该目标缓存地址所标识的缓存行中直接读取出该缓存行的数据返回给应用程序即可。
其中,基于目标缓存地址,对目标物理地址中的数据进行读取的过程可以参见相关技术即可,在此不再赘述;基于目标缓存地址,对目标物理地址中的数据写入到缓存行的过程也可以参见相关技术即可,在此不再赘述。
采用本申请实施例的数据处理方法,由于将多个物理地址映射为对应至少两个不同集合索引的多个目标缓存地址,这样,可以将原本映射到同一个缓存行组的多个物理地址,分散映射到了多个缓存行组,从而充分利用了缓存的存储资源,如此,在针对目标物理地址进行数据的访问时,可以提高缓存的命中率。其具体原理阐述可以详见<示例#2>,在此不再赘述。
在一种可选的示例中,在缓存中不存在目标缓存地址的情况下,对目标物理地址中的数据执行写处理;其中,写处理包括:将目标物理地址中的数据写入目标存储单元中,并将目标存储单元的原始目标缓存地址更新为目标缓存地址,目标存储单元为与目标缓存地址中的集合索引对应的缓存行组中的任一缓存行。
在缓存中存在目标缓存地址的情况下,从目标缓存地址中读取访问请求所需的数据。
具体地,由于数据的处理包括了读处理和/或写处理,实际中,若缓存的目标缓存地址中,未找到目标物理地址所对应的数据,则表征该数据未预先写入到缓存中。此种情况下,需要进行写处理,即将目标物理地址所存储的数据加载到缓存中,与目标缓存地址中集合索引对应的缓存行组中的任一缓存行中。并将该缓存行的标签变更为目标缓存地址中的标签,以便下一次针对目标物理地址进行访问时,可以直接从目标缓存地址对应的缓存行中获取数据。
若缓存的目标缓存地址中,找到目标物理地址所对应的数据,则表征该数据预先写入到缓存中,此种情况下,需要进行读处理,即依据目标缓存地址中的块偏移,从缓存行中获取对应的数据块返回给应用程序。
采用本申请实施例的地址映射方法以及上述的数据处理方法,具有以下优点:
第一,对于映射到同一个集合索引的多个不同物理地址而言,由于集合索引中的第二比特位的值根据标签中的第一比特位的值进行了调整,由此,可以使得原本映射到同一个缓存行组的多个不同物理地址,转而映射到至少两个缓存行组。这样,多个物理地址的数据便会加载到不同缓存行组中,避免多个物理地址都争抢一个缓存行组内的路组的问题,从而不仅大大减少了缓存行组的访问冲突,提高了缓存容量的利用率,进而提升了缓存命中率,并且也能优化CPU/GPU/SoC的运行。
第二,由于对于访问频率较高的应用程序,可以将该应用程序所要访问的各个物理地址映射到对应更多的缓存行组,这样,该应用程序的数据可以分散存储都更多的缓存行组中,继而提高了访问频率较高的应用程序在缓存中的命中率。而对于访问频率较低的应用程序,可以按照相关技术的直接映射方式进行目标缓存地址的映射,从而为访问频率高的应用程序腾出较多的缓存空间。如此,在同一个CPU中,可以对访问频率不同的应用程序采用不同的地址映射,进一步提高了缓存资源的利用率,使得缓存资源可以按照应用程序的访问需求,提供个性化的伸缩存储服务。
第三,由于本申请提出的是一种不同于相关技术的新的地址映射方式,通过该地址映射即可达到对缓存资源的充分利用,提高缓存的命中率,因此,避免了对缓存的硬件优化所带来的高昂成本。
基于相同的发明构思,本申请还提供了一种地址映射装置,参照图5所示,示出了该装置的结构示意图,如图5所示,具体可以包括以下模块:
地址确定模块501,用于确定对应同一个集合索引的多个物理地址,其中,所述集合索引用于指示所述物理地址指向的内存块映射在缓存中的缓存行组;
地址映射模块502,用于基于所述物理地址中对应标签的比特位段,将多个所述物理地址映射为对应至少两个不同集合索引的多个目标缓存地址;
其中,所述标签用于指示所述物理地址指向的内存块映射在所述缓存的所述缓存行组中的缓存行。
可选地,地址映射模块502,包括:
第一映射单元,用于对每个所述物理地址,确定该物理地址预映射的初始缓存地址,所述初始缓存地址从高位到低位依次包括标签、集合索引以及块偏移;
调整单元,用于对每个所述初始缓存地址,基于所述标签对应的比特位段中的至少一个第一比特位的值,对所述初始缓存地址的集合索引中的至少一个第二比特位的值进行调整,得到对应的目标缓存地址。
可选地,所述调整单元,包括:
运算子单元,用于针对每个所述第二比特位,对该第二比特位的值与所述至少一个第一比特位的值进行预设运算;
调整子单元,用于将所述预设运算的结果值作为所述第二比特位的调整后值,得到所述目标缓存地址。
可选地,所述预设运算包括异或运算。
可选地,所述装置还包括第一比特位确定模块,所述第一比特位确定模块包括:
第一物理地址确定单元,用于获取预设时间内,对同一个所述缓存行组进行读写操作时所针对的第一物理地址;
第一比特位确定单元,用于基于各个所述第一物理地址对应的读写频率,以及不同第一物理地址对应标签的比特位段中各个比特位的值,确定所述第一比特位。
可选地,所述装置还包括第二比特位确定模块,所述第二比特位确定模块包括:
缓存行组确定单元,用于获取预设时间内,每个所述缓存行组被执行读写操作的频率,并确定所述频率大于预设频率的多个目标缓存行组;
第二比特位确定单元,用于基于多个所述目标缓存行组对应的集合索引中各个比特位的值,确定所述第二比特位。
可选地,所述缓存被划分为多路,每一路缓存包括多个缓存行,所述装置还包括第三比特位确定模块,所述第三比特位确定模块包括:
跳转频率确定单元,用于获取预设时间内,所访问的第二物理地址中的数据在缓存中所位于的缓存行的跳转频率;其中,所述跳转频率用于表征所述数据从其中一路的缓存行跳转到另一路的缓存行的频率;
第三比特位确定单元,用于在所述跳转频率高于预设跳转频率的情况下,基于前后跳变的缓存行对应的标签,确定所述第一比特位。
可选地,所述地址映射模块502,包括:
调整单元,用于基于所述物理地址中对应标签的比特位段中的低位比特位的值,对所述物理地址中对应所述集合索引的比特位段中的高位比特位的值进行调整;
映射单元,用于基于调整后的所述高位比特位的值,将多个所述物理地址映射为对应至少两个不同集合索引的多个目标缓存地址。
基于相同的发明构思,本申请实施例还提供了一种数据处理装置,参照图6所示,示出了本申请的数据处理装置的结构示意图,如图6所示,该数据处理装置具体可以包括以下模块:
地址确定模块601,用于响应于对目标物理地址的访问请求,确定所述目标物理地址所对应的缓存的目标缓存地址;其中,所述目标缓存地址是根据上述所述的地址映射方法得到的;
数据处理模块602,用于基于所述目标缓存地址,对所述目标物理地址中的数据进行处理,其中,所述处理包括读处理和/或写处理。
可选地,所述数据处理模块602包括:
读处理单元,用于在所述缓存中不存在所述目标缓存地址的情况下,对所述目标物理地址中的数据执行写处理;
写处理单元,用于在所述缓存中存在所述目标缓存地址的情况下,从所述目标缓存地址中读取所述访问请求所需的数据;
其中,所述写处理包括:将所述目标物理地址中的数据写入目标存储单元中,并将所目标存储单元对应的原始目标缓存地址更新为所述目标缓存地址,所述目标存储单元为与所述目标缓存地址中的集合索引对应的缓存行组中的任一缓存行。
需要说明的是,装置实施例与方法实施例相近,故描述的较为简单,相关之处参见方法实施例即可。
基于同一发明构思,本申请实施例还可以提供一种CPU,在该CPU中植入有硬件逻辑,该硬件逻辑用于执行上述的地址映射方法的步骤和数据处理方法的步骤。
基于同一发明构思,本申请实施例提供一种电子设备,包括:存储器、处理器及存储在存储器上的计算机程序,处理器执行计算机程序以实现本申请实施例的地址映射方法的步骤或数据处理方法的步骤。
本申请在一个可选实施例中提供了一种电子设备,如图7所示,图7所示的电子设备700包括:处理器701和存储器703。其中,处理器701和存储器703相通信连接,如通过总线702相连。
处理器701可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegratedCircuit,专用集成电路),FPGA(Field-Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器701也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线702可包括一通路,在上述组件之间传送信息。总线702可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线702可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器703可以是ROM(Read-Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(random access memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(ElectricallyErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(CompactDiscRead-Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
可选地,电子设备700还可以包括收发器704。收发器704可用于信号的接收和发送。收发器704可以允许电子设备700与其他设备进行无线或有线通信以交换数据。需要说明的是,实际应用中收发器704不限于一个。
可选地,电子设备700还可以包括输入单元705。输入单元705可用于接收输入的数字、字符、图像和/或声音信息,或者产生与电子设备700的用户设置以及功能控制有关的键信号输入。输入单元705可以包括但不限于触摸屏、物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆、拍摄装置、拾音器等中的一种或多种。
可选地,电子设备700还可以包括输出单元706。输出单元706可用于输出或展示经过处理器701处理的信息。输出单元706可以包括但不限于显示装置、扬声器、振动装置等中的一种或多种。
虽然图7示出了具有各种装置的电子设备700,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
可选的,存储器703用于存储执行本申请方案的应用程序代码,并由处理器701来控制执行。处理器701用于执行存储器703中存储的应用程序代码,以实现本申请实施例提供的任一种地址映射方法的步骤或数据处理方法的步骤。
当然,在一实施例中,存储器703可以包括易失性存储器和非易失性存储器,其中,易失性存储器可以理解为是随机存取记忆体,用来存储和保存数据的。非易失性存储器是指当电流关掉后,所存储的数据不会消失的电脑存储器,当然,本申请的地址映射方法或数据处理方法的计算机程序可以存储在易失性存储器和非易失性存储器中,或者存在二者中的任意一个中。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如本申请实施例所述的地址映射方法的步骤或数据处理方法的步骤。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种地址映射方法、数据处理方法、装置、设备和存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (13)
1.一种地址映射方法,其特征在于,所述方法包括:
确定对应同一个集合索引的多个物理地址,其中,所述集合索引用于指示所述物理地址指向的内存块映射在缓存中的缓存行组;
基于所述物理地址中对应标签的比特位段,将所述多个物理地址映射为对应至少两个不同集合索引的多个目标缓存地址,所述标签用于指示所述物理地址指向的内存块映射在所述缓存的所述缓存行组中的缓存行。
2.根据权利要求1所述的方法,其特征在于,所述基于所述物理地址中对应标签的比特位段,将所述多个物理地址映射为对应至少两个不同集合索引的多个目标缓存地址,包括:
对每个所述物理地址,确定该物理地址预映射的初始缓存地址,所述初始缓存地址从高位到低位依次包括标签、集合索引以及块偏移;
对每个所述初始缓存地址,基于所述标签对应的比特位段中的至少一个第一比特位的值,对所述初始缓存地址的集合索引中的至少一个第二比特位的值进行调整,得到对应的目标缓存地址。
3.根据权利要求2所述的方法,其特征在于,所述基于所述标签对应的比特位段中的至少一个第一比特位的值,对所述初始缓存地址的集合索引中的至少一个第二比特位的值进行调整,得到对应的目标缓存地址,包括:
针对每个所述第二比特位,对该第二比特位的值与所述至少一个第一比特位的值进行预设运算;
将所述预设运算的结果值作为所述第二比特位的调整后值,得到所述目标缓存地址。
4.根据权利要求3所述的方法,其特征在于,所述预设运算包括异或运算。
5.根据权利要求2所述的方法,其特征在于,所述至少一个第一比特位是通过以下方式确定的:
获取预设时间内,对同一个缓存行组进行读写操作时所对应的第一物理地址;
基于各个所述第一物理地址对应的读写频率,以及不同第一物理地址对应标签的比特位段中各个比特位的值,确定所述至少一个第一比特位。
6.根据权利要求2所述的方法,其特征在于,所述至少一个第二比特位是通过以下方式确定的:
获取预设时间内,每个所述缓存行组被执行读写操作的频率,并确定所述频率大于预设频率的多个目标缓存行组;
基于所述多个目标缓存行组对应的集合索引中各个比特位的值,确定所述至少一个第二比特位。
7.根据权利要求2所述的方法,其特征在于,所述缓存被划分为多路,每一路缓存包括多个缓存行,所述至少一个第一比特位是通过以下方式确定的:
获取预设时间内,所访问的第二物理地址中的数据在所述缓存中所位于的缓存行的跳转频率;其中,所述跳转频率用于表征所述数据从其中一路的缓存行跳转到另一路的缓存行的频率;
在所述跳转频率高于预设跳转频率的情况下,基于前后跳变的缓存行对应的标签,确定所述至少一个第一比特位。
8.根据权利要求1-7任一所述的方法,其特征在于,所述基于所述物理地址中对应标签的比特位段,将所述多个物理地址映射为对应至少两个不同集合索引的多个目标缓存地址,包括:
基于所述物理地址中对应标签的比特位段中的低位比特位的值,对所述物理地址中对应所述集合索引的比特位段中的高位比特位的值进行调整;
基于调整后的所述高位比特位的值,将多个所述物理地址映射为对应至少两个不同集合索引的多个目标缓存地址。
9.一种数据处理方法,其特征在于,所述方法包括:
响应于针对目标物理地址的访问请求,确定所述目标物理地址所对应的目标缓存地址;其中,所述目标缓存地址是根据权利要求1-8任一所述的地址映射方法得到的;
基于所述目标缓存地址,对所述目标物理地址中的数据进行处理,其中,所述处理包括读处理和/或写处理。
10.根据权利要求9所述的方法,其特征在于,所述基于所述目标缓存地址,对所述目标物理地址中的数据进行处理,包括:
在所述缓存中不存在所述目标缓存地址的情况下,对所述目标物理地址中的数据执行写处理;
在所述缓存中存在所述目标缓存地址的情况下,从所述目标缓存地址中读取所述访问请求所需的数据;
其中,所述写处理包括:将所述目标物理地址中的数据写入目标存储单元中,并将所述目标存储单元对应的原始目标缓存地址更新为所述目标缓存地址,所述目标存储单元为与所述目标缓存地址中集合索引对应的缓存行组中的任一缓存行。
11.一种地址映射装置,其特征在于,所述装置包括:
地址确定模块,用于确定对应同一个集合索引的多个物理地址,其中,所述集合索引用于指示所述物理地址指向的内存块映射在缓存中的缓存行组;
地址映射模块,用于基于所述物理地址中对应标签的比特位段,将多个所述物理地址映射为对应至少两个不同集合索引的多个目标缓存地址;
其中,所述标签用于指示所述物理地址指向的内存块映射在所述缓存的所述缓存行组中的缓存行。
12.一种数据处理装置,其特征在于,所述装置包括:
地址确定模块,用于响应于针对目标物理地址的访问请求,确定所述目标物理地址所对应的目标缓存地址;其中,所述目标缓存地址是根据权利要求1-8任一所述的地址映射方法得到的;
数据处理模块,用于基于所述目标缓存地址,对所述目标物理地址中的数据进行处理,其中,所述处理包括读处理和/或写处理。
13.一种电子设备,其特征在于,包括:存储器、处理器及存储在存储器上的计算机程序,所述处理器执行所述计算机程序以实现权利要求1-8任一项所述的地址映射方法的步骤,或实现权利要求9-10任一所述的数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211697534.5A CN116126749A (zh) | 2022-12-28 | 2022-12-28 | 地址映射方法、数据处理方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211697534.5A CN116126749A (zh) | 2022-12-28 | 2022-12-28 | 地址映射方法、数据处理方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116126749A true CN116126749A (zh) | 2023-05-16 |
Family
ID=86303892
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211697534.5A Pending CN116126749A (zh) | 2022-12-28 | 2022-12-28 | 地址映射方法、数据处理方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116126749A (zh) |
-
2022
- 2022-12-28 CN CN202211697534.5A patent/CN116126749A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7870325B2 (en) | Cache memory system | |
US6170070B1 (en) | Test method of cache memory of multiprocessor system | |
US8954681B1 (en) | Multi-stage command processing pipeline and method for shared cache access | |
US11113145B2 (en) | Memory device, semiconductor device, and semiconductor system | |
CN115422098B (zh) | 基于扩展页表的gpu访存自适应优化方法及装置 | |
CN113900966B (zh) | 一种基于Cache的访存方法及装置 | |
JP2010033480A (ja) | キャッシュメモリおよびキャッシュメモリ制御装置 | |
CN102859504A (zh) | 有效分区存储缓存 | |
CN114036077B (zh) | 数据处理方法及相关装置 | |
CN102096562A (zh) | 数据写入方法及装置 | |
KR102580484B1 (ko) | 메모리에서의 동적 메타데이터 재배치 | |
US9965482B2 (en) | Hash based read and write operations in a storage system | |
CN114925001A (zh) | 处理器、页表预取方法、电子设备 | |
CN113656330A (zh) | 确定访问地址的方法和装置 | |
CN113515474A (zh) | 数据处理装置、方法、计算机设备和存储介质 | |
CN116126749A (zh) | 地址映射方法、数据处理方法、装置、设备及介质 | |
CN100356345C (zh) | 访问高速缓存管线的方法和系统 | |
CN114924794A (zh) | 一种存储部件的发射队列的地址存储、调度方法和装置 | |
US11669273B2 (en) | Memory access management | |
JP2008146330A (ja) | メモリコントローラ | |
CN102147777A (zh) | 访问控制装置、数据处理装置、访问控制方法和程序 | |
CN115964310B (zh) | 一种非线性多存储信道数据交织方法及交织模块 | |
CN116841922A (zh) | Tlb页表项管理方法 | |
US7404049B2 (en) | Method and system for managing address bits during buffered program operations in a memory device | |
KR20040007343A (ko) | 캐시 메모리 및 그 제어 방법 |
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 |