CN104346294B - 基于多级缓存的数据读/写方法、装置和计算机系统 - Google Patents
基于多级缓存的数据读/写方法、装置和计算机系统 Download PDFInfo
- Publication number
- CN104346294B CN104346294B CN201310331344.6A CN201310331344A CN104346294B CN 104346294 B CN104346294 B CN 104346294B CN 201310331344 A CN201310331344 A CN 201310331344A CN 104346294 B CN104346294 B CN 104346294B
- Authority
- CN
- China
- Prior art keywords
- caching
- physical memory
- data block
- rank
- data
- 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
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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于多级缓存的数据读/写方法、装置和计算机系统,涉及计算机系统的数据读写领域,用以在数据读/写过程中提高Cache访问效率。所述方法包括:获取读/写数据所针对的第一物理内存数据块的第一查询地址;获取第一物理内存数据块的第一缓存位置属性;根据第一查询地址,按照第一缓存位置属性所指示的第一物理内存数据块所能进入的缓存级别从高到低的顺序依次查询缓存是否命中,直至一个缓存命中或所有缓存均未命中为止;若一个缓存命中,则针对所命中缓存中的第一物理内存数据块的第一查询地址读/写数据;或,若所有缓存均未命中,则针对内存中的第一物理内存数据块的第一查询地址读/写数据。
Description
技术领域
本发明涉及计算机系统的数据读写领域,尤其涉及一种基于多级缓存的数据读/写方法、装置和计算机系统。
背景技术
缓存(Cache,也称为高速缓冲存储器)位于中央处理器(CPU,Central ProcessingUnit)和内存(Memory)之间,主要是为了解决CPU运算速度和内存读写速度不匹配的问题。目前计算机最多采用三级Cache结构,其中L1(Level1)采用高速小容量的Cache,L2(Level2)采用速度中等容量较大的Cache,L3(Level3)采用低速大容量的Cache。
基于上述的多级Cache,现有技术中CPU执行读操作的具体过程如下:
当CPU Core(CPU核)在发出读数据请求时,通过逐层查找的方式,即先从L1Cache开始查找数据,如果Cache未命中(Cache miss),去L2Cache中查找,依次类推,直至查找到数据为止。
在上述的过程中,通常需要经过多次查找方可命中,例如假如读操作针对的数据存储在L3Cache中,这样必须在L1Cache和L2Cache均未命中的情况下才会到L3Cache查找数据,从而导致Cache访问效率比较低。
发明内容
本发明的实施例提供了一种基于多级缓存的数据读/写方法、装置和计算机系统,有助于提高Cache访问效率,进而有助于在数据读/写过程中降低Cache缺失率。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明提供了一种基于多级缓存的数据读/写方法,包括:
获取读/写数据所针对的第一物理内存数据块的第一查询地址;
获取所述第一物理内存数据块的第一缓存位置属性;所述第一缓存位置属性用于指示第一物理内存数据块所能进入缓存的级别;
根据所述第一查询地址,按照所述第一缓存位置属性所指示的第一物理内存数据块所能进入的缓存级别从高到低的顺序依次查询缓存是否命中,直至一个缓存命中或所有缓存均未命中为止;
若一个缓存命中,则针对所命中缓存中的第一物理内存数据块的第一查询地址读/写数据;或,若所有缓存均未命中,则针对内存中的第一物理内存数据块的第一查询地址读/写数据。
在第一种可能的实现方式中,根据第一方面,所述第一缓存位置属性为根据第一物理内存数据块的被访问情况,在页表缓存TLB中为所述第一物理内存数据块所设定的;
所述获取所述第一物理内存数据块的第一缓存位置属性包括:
根据页表缓存TLB中存储的物理内存数据块的属性信息,查询所述第一查询地址对应的第一缓存位置属性;所述TLB中存储有物理内存数据块的属性信息,其中包括:物理内存数据块的查询地址、物理内存数据块的缓存位置属性的对应关系。
在第二种可能的实现方式中,根据第一方面,所述第一缓存位置属性为根据第一物理内存数据块的被访问情况,在系统寄存器中为所述第一物理内存数据块所设定的;
所述获取所述第一物理内存数据块的第一缓存位置属性包括:
读取当前系统寄存器中存储的缓存位置属性,并其作为所述第一物理内存数据块的第一缓存位置属性;所述系统寄存器用于存储缓存位置属性。
在第三种可能的实现方式中,根据第一方面,所述针对所命中缓存中的第一物理内存数据块的第一查询地址读/写数据包括:通过与所命中缓存间的直接数据通路,针对所命中缓存中的第一物理内存数据块的第一查询地址读/写数据;或者,
所述针对内存中的第一物理内存数据块的第一查询地址读/写数据包括:通过与内存间的直接数据通路,针对内存中的第一物理内存数据块的第一查询地址读/写数据。
在第四种可能的实现方式中,结合第一方面或前三种可能的实现方式中的任一种,在读数据时,
若所命中缓存的级别是所述第一缓存位置属性指示的所能进入缓存级别中的非最高级别,则所述方法还包括:在所述第一缓存位置属性指示的所能进入的缓存级别中,将需要读的数据回填到级别高于所命中缓存的级别的缓存;或者,
若所命中缓存的级别是所述第一缓存位置属性指示的所能进入缓存级别中的最高级别,则不向其他缓存回填数据;或者,
若所有缓存均未命中,则所述方法还包括:将需要读的数据回填到所述第一缓存位置属性指示的所能进入的缓存中。
在第五种可能的实现方式中,结合第一方面或前三种可能的实现方式中的任一种,在写数据时,在针对所命中缓存中的第一物理内存数据块的第一查询地址写数据之后,所述方法还包括:
若所写的数据为共享数据,则在所述第一缓存位置属性指示的所能进入的缓存级别中,向级别等于和/或低于所命中缓存的级别的其他缓存发起共享数据一致性请求。
在第六种可能的实现方式中,结合第一方面或前五种可能的实现方式中的任一种,所述第一缓存位置属性标识第一物理内存数据块所能进入缓存级别中的最高级别,或者标识第一物理内存数据块不能进入的缓存级别。
第二方面,本发明提供了一种基于多级缓存的数据读/写装置,所述装置为包括多级缓存的中央处理器,包括:
第一获取单元,用于获取读/写数据所针对的第一物理内存数据块的第一查询地址;
第二获取单元,用于获取所述第一物理内存数据块的第一缓存位置属性;所述第一缓存位置属性用于指示第一物理内存数据块所能进入缓存的级别;
查询单元,用于根据所述第一获取单元得到的所述第一查询地址,按照第二获取单元得到的所述第一缓存位置属性所指示的所述第一物理内存数据块所能进入的缓存级别从高到低的顺序依次查询缓存是否命中,直至一个缓存命中或所有缓存均未命中为止;
读写单元,用于若一个缓存命中,则针对所述查询单元所命中缓存中的第一物理内存数据块的第一查询地址读/写数据;或,若所述查询单元的查询结果为所有缓存均未命中,则针对内存中的第一物理内存数据块的第一查询地址读/写数据。
在第一种可能的实现方式中,根据第二方面,所述第一缓存位置属性为根据第一物理内存数据块的被访问情况,在页表缓存TLB中为所述第一物理内存数据块所设定的;
所述第二获取单元,用于根据TLB中存储的物理内存数据块的属性信息,查询所述第一查询地址对应的第一缓存位置属性;所述TLB中存储有物理内存数据块的属性信息,其中包括:物理内存数据块的查询地址、物理内存数据块的缓存位置属性的对应关系。
在第二种可能的实现方式中,根据第二方面,所述第一缓存位置属性为根据第一物理内存数据块的被访问情况,在系统寄存器中为所述第一物理内存数据块所设定的;
所述第二获取单元,用于读取当前系统寄存器中存储的缓存位置属性,并其作为所述第一物理内存数据块的第一缓存位置属性;所述系统寄存器用于存储缓存位置属性。
在第三种可能的实现方式中,根据第二方面,所述读写单元,用于通过与所命中缓存间的直接数据通路,针对所命中缓存中的第一物理内存数据块的第一查询地址读/写数据;或者,所述读写单元用于通过与内存间的直接数据通路,针对内存中的第一物理内存数据块的第一查询地址读/写数据
在第四种可能的实现方式中,结合第二方面或前三种可能实现的方式中的任一种,所述读写单元,还用于在读数据时,
若所命中缓存的级别是所述第一缓存位置属性指示的所能进入缓存级别中的非最高级别,则在所述第一缓存位置属性指示的所能进入的缓存级别中,将需要读的数据回填到级别高于所命中缓存的级别的缓存中;或者,
若所命中缓存的级别是所述第一缓存位置属性指示的所能进入缓存级别中的最高级别,则不向其他缓存回填数据;或者,
若所有缓存均未命中,则将需要读的数据回填到所述第一缓存位置属性指示的所能进入的缓存中。
在第五种可能的实现方式中,结合第二方面或前三种可能实现的方式中的任一种,所述读写单元,还用于在写数据时,若所写的数据为共享数据,则在所述第一缓存位置属性指示的所能进入的缓存级别中,向级别等于和/或低于所命中缓存的级别的其他缓存发起共享数据一致性请求。
在第六种可能的实现方式中,结合第二方面或前五种可能实现的方式中的任一种,所述第一缓存位置属性标识第一物理内存数据块所能进入缓存级别中的最高级别,或者标识第一物理内存数据块不能进入的缓存级别。
第三方面,本发明提供了一种计算机系统,包括:内存以及上述的所述装置。
本发明实施例提供的一种基于多级缓存的数据读/写方法、装置和计算机系统,通过缓存位置属性指示的物理内存数据块所能进入缓存的级别,并按照其指示的所能进入的级别查询缓存是否命中,能够支持越过无需访问的Cache,较快地命中缓存,从而有助于提高Cache访问效率,进而有助于增强Cache命中率,换言之,有助于在数据读/写过程中降低Cache缺失率;尤其对于一些访问频率低的物理内存数据块而言,可以通过对缓存位置属性的限定,避免其进入资源紧缺的高级别缓存,进而有助于在数据读/写过程中降低Cache缺失率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于多级缓存的数据读/写方法的示意图;
图2为本发明实施例提供的一种计算机系统结构示意图;
图3为本发明实施例提供的一种基于多级缓存的数据读操作的方法示意图;
图4为本发明实施例提供的另一种基于多级缓存的数据读操作的方法示意图;
图5为本发明实施例提供的一种基于多级缓存的数据写操作的方法示意图;
图6为本发明实施例提供的另一种基于多级缓存的数据写操作的方法示意图;
图7为本发明实施例提供的一种基于多级缓存的数据读/写操作的装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种基于多级缓存的数据读/写方法,其执行主体可以为包含多级缓存的CPU中的CPU Core,也可以为包含多级缓存的CPU中的具有读/写功能的硬件设备。所述方法可以适用于单核计算机系统,也可以适用于多核计算机系统,如图1所示,包括:
S101、获取读/写数据所针对的第一物理内存数据块的第一查询地址。
其中,所述物理内存数据块是指在计算机系统中,将内存分成的若干用于存储数据的存储单元,示例的,可以是内存页、内存段、或者是直接来自I/O的数据信息等;这些存储单元的大小没有限定,可以相等或不等。所述查询地址可以为物理内存数据块的物理地址(PA,Physical Address)的高位比特,当然不限于此。
为了清楚描述,本发明实施例中,将一次读/写数据过程中相关的对象前加“第一”。例如,第一物理内存数据块是指在一次读/写数据过程中所针对的物理内存数据块,第一查询地址是指第一物理内存数据块的物理地址的高位比特。
示例的,CPU Core中可以包含TLB(Translation Lookaside Buffer,旁路转换缓冲或页表缓存);此步骤可以是,通过在TLB中得到一次读/写数据过程中的物理地址的高位比特。但TLB不限于设置在CPU Core中。
此步骤具体可以为:当CPU Core中的基于多级缓存的数据读/写的装置在发出一次数据读/写请求时,该装置会给出一个虚拟地址(VA,Virtual Address),用该VA的高位若干比特去TLB中进行查找,TLB负责将虚拟地址转化为物理内存数据块的物理地址的高位比特,从而使得该装置得到物理地址的高位比特。
S102、获取所述第一物理内存数据块的第一缓存位置属性;所述第一缓存位置属性用于标识所述第一物理内存数据块所能进入缓存的级别。
其中,所述第一缓存位置属性为根据所述第一物理内存数据块的被访问情况,为所述第一物理内存数据块所设定的。
一般而言,访问频率较高的物理内存数据块存在于高级别的缓存中,访问频率较低的物理内存数据块存在于低级别的缓存中。为合理设置缓存位置属性,上述缓存位置属性可以为根据物理内存数据块的被访问情况,为该物理内存数据块所设定的。其中,物理内存数据块的被访问情况可以但不限于物理内存数据块的访问频率,还可根据该数据块本身的属性,例如:流媒体数据,这些数据很大程度上是只需要访问一遍就可以被丢弃的,所以这些数据也不需要进入高级别的缓存中。
可选的,通常内存中存储有所有物理内存数据块的属性信息,本实施例可以在内存中的原有的物理内存数据块属性信息中添加若干比特,用此来标识各物理内存数据块的缓存位置属性,此时,物理内存数据块的属性信息中包括:物理内存数据块的查询地址、物理内存数据块的缓存位置属性的对应关系;该缓存位置属性可以根据物理内存数据块的被访问情况,由操作系统在划分数据块的时候直接设定。另外,内存会将添加了缓存位置属性的属性信息填入TLB用于存储属性项的空间中,可选的,若TLB原有空间存在保留比特(未被占用的比特)能够填入缓存位置属性,则直接填入即可,否则,可以增加原有空间的宽度用以填入缓存位置属性。
此时,此步骤可以为:当CPU Core中的基于多级缓存的数据读/写的装置在发出一次数据读/写请求时,根据所述TLB中存储的物理内存数据块的查询地址和物理内存数据块属性信息的对应关系,查询所述第一查询地址对应的第一缓存位置属性。
或者可选的,本发明实施例还可以为将缓存位置属性设置为CPU所包含的系统寄存器,也就是说,增设一系统寄存器用于存储缓存位置属性。通过一条新增的指令,或者在原指令集中添加一些比特专门来对缓存位置属性寄存器进行设置。
此时,此步骤可以为:当CPU Core中的基于多级缓存的数据读/写的装置发起一次数据读/写请求时,读取当前系统寄存器中存储的缓存位置属性,并其作为所述第一物理内存数据块的第一缓存位置属性。
进一步的,所述第一缓存位置属性标识第一物理内存数据块所能进入缓存级别中的最高级别,或者标识第一物理内存数据块不能进入的缓存级别。
例如,假定计算机系统中的共有三级缓存,为了区分可以分别用00、01、10表示一级缓存(L1Cache)、二级缓存(L2Cache)、三级缓存(L3Cache)。若所述缓存位置属性为01,且表示该内存数据块最高只能进入L2Cache,即该内存数据块可能进入L2Cache或者L3Cache,但是不能进入L1Cache。若所述缓存位置属性为01,且表示该内存数据块不能进入L2Cache,相应的,该缓存位置属性控制物理内存数据块进入缓存的级别包括L1Cache和L3Cache。
由于第一物理内存数据块与其第一缓存位置属性是一一对应的关系,则对于步骤S101和步骤S102,可以先获取读/写数据所针对的第一物理内存数据块的第一缓存位置属性,然后再获取所述第一物理内存数据块的第一查询地址;无论采取怎样的获取方式,都必须获取得到第一物理内存数据块的第一查询地址和第一缓存位置属性。
S103、根据所述第一查询地址,按照所述第一缓存位置属性所指示的第一物理内存数据块所能进入的缓存级别从高到低的顺序依次查询缓存是否命中,直至一个缓存命中或所有缓存均未命中为止。
对于具有N级缓存的计算机系统而言,一级缓存的级别最高,N级缓存的级别最低,一级缓存到N级缓存之间的缓存级别递减。
根据第一查询地址查询一个i(1≤i≤N)级缓存是否命中的过程可以为:利用虚拟地址的中间若干比特到该i级缓存中查找,选出一组Cache Line的标签(Tag),该Tag可以是物理地址PA的高位比特;然后将TLB得到的第一查询地址和选出的一组Tag进行比较,若某条Cache Line的Tag能和PA高位比特匹配上,则该i级缓存命中,否则,则该i级缓存未命中。
示例的,假定计算机系统中的共有三级缓存,S102中获取的所述缓存位置属性为01,且表示该内存数据块最高只能进入L2Cache。此时,此步骤具体可以为:CPU Core中的基于多级缓存的数据读/写的装置按照缓存位置属性忽略L1Cache,直接查询L2Cache是否命中,若L2Cache命中,则查询过程到此为止,若L2Cache未命中,则查询L3Cache是否命中;若L3Cache命中,则查询过程到此为止,若L3Cache未命中,由于L3Cache是最后一级缓存,则意味着第一缓存位置属性控制进入所有缓存均未命中,则查询过程也到此为止。
又示例的,假定计算机系统中的共有三级缓存,S102中获取的所述缓存位置属性为01,且表示该内存数据块不能进入L2Cache,相应的,该缓存位置属性控制物理内存数据块进入缓存的级别包括L1和L3。此时,此步骤具体可以为CPU Core中的基于多级缓存的数据读/写的装置按照缓存位置属性先查询L1Cache是否命中,若L1Cache命中,则查询过程到此为止,若L1Cache未命中,则查询L3Cache是否命中,由于L3Cache是最后一级缓存,故L3Cache命中或未命中,则查询过程均到此为止。
若此步骤中存在一个缓存命中,则进行步骤S104;若此步骤中所有缓存均未命中,则进行步骤S105。
S104、若一个缓存命中,则针对所命中缓存中的第一物理内存数据块的第一查询地址读/写数据。
优选的,可以预先增设各级别的缓存到CPU Core中的基于多级缓存的数据读/写的装置的直接数据通路,此时,此步骤可以为:通过所述装置与所命中缓存间的直接数据通路,针对所命中缓存中的第一物理内存数据块的第一查询地址读/写数据。
当然,采用现有技术中所建立的数据通路,针对所命中缓存中的第一物理内存数据块的第一查询地址读/写数据也是可以的。
S105、若所有缓存均未命中,则针对内存中的第一物理内存数据块的第一查询地址读/写数据。
由于内存中必然能找到第一物理内存数据块,故而当所有缓存均未命中的情况下,可以利用此步骤完成数据的读/写。
本发明实施例提供的一种基于多级缓存的数据读/写方法,通过缓存位置属性指示的物理内存数据块所能进入缓存的级别,并按照其指示的所能进入的级别查询缓存是否命中,能够支持越过无需访问的Cache,较快地命中缓存,从而有助于提高Cache访问效率,进而有助于增强Cache命中率,换言之,有助于在数据读/写过程中降低Cache缺失率;尤其对于一些访问频率低的物理内存数据块而言,可以通过对缓存位置属性的限定,避免其进入资源紧缺的高级别Cache,进而有助于在数据读/写过程中降低Cache缺失率。
进一步的,针对在读数据时,若所命中缓存的级别是所述第一缓存位置属性指示的所能进入缓存级别中的非最高级别,则在S104针对所命中缓存中的第一物理内存数据块读数据之后,所述方法还包括:在所述第一缓存位置属性指示的所能进入的缓存级别中,将需要读的数据回填到级别高于所命中缓存的级别的缓存中;或者,若所命中缓存的级别是所述第一缓存位置属性指示的所能进入缓存级别中的最高级别,则不向其他缓存回填数据;或者,若所有缓存均未命中,则所述方法还包括:将需要读的数据回填到所述第一缓存位置属性指示的所能进入的缓存中。
示例的,假定计算机系统中的共有三级缓存,且S102中获取的所述缓存位置属性为01,且表示该内存数据块最高只能进入L2Cache,也就是说,L2Cache是第一缓存位置属性指示的所能进入的最高级别。
若经过步骤S103所命中的缓存是L2Cache,由于L2Cache是第一缓存位置属性指示的所能进入的最高级别,则不向其他缓存(例如:L1Cache)回填数据。
若经过步骤S103所命中的缓存是L3Cache,则可以在S104针对L3Cache中的第一物理内存数据块读数据之后或同时,CPU Core中的基于多级缓存的数据读/写的装置在第一缓存位置属性指示的所能进入缓存的级别下,将需要读的数据回填到L2Cache中。这样,使得在再次针对第一物理内存数据块读/写数据时,就可以一次命中L2Cache。
若经过步骤S103所有缓存均未命中,则可以在S105针对内存中的第一物理内存数据块读数据之后或同时,CPU Core中的基于多级缓存的数据读/写的装置将需要读的数据回填到L3Cache和L2Cache中。这样使得可以在下一次读取该数据的过程中,经一次查询就可命中L2Cache。
通过对物理内存数据块进行合适的缓存位置级别限定,对于引起Cache缺失率高的应用,可以防止访问频率低的数据调入缺失率高的Cache中,避免了无谓的Cache数据回填。
进一步的,为维护共享数据的一致性,针对写数据时,在S104针对所命中缓存中的第一物理内存数据块的第一查询地址写数据之后,所述方法还包括:若所写的数据为共享数据,则在所述第一缓存位置属性指示的所能进入的缓存级别中,向级别等于和/或低于所命中缓存的级别的其他缓存发起共享数据一致性请求。
其中,所述共享数据为在多核处理器的缓存结构中,若其中一个CPU Core对某一数据进行了修改,而该数据同时在其他CPU Core的缓存中,则该数据为不同CPU Core间的共享数据。
示例的,假定计算机系统中有两个CPU Core(CPU Core0和CPU Core1),每个CPUCore包含有三级缓存,若CPU Core0对其缓存中的L1Cache的数据进行了修改,而该数据同时在CPU Core1的L1Cache中,则该数据为CPU Core0和CPU Core1的共享数据。
示例的,假定计算机系统中共有三级缓存,且S102中获取的所述缓存位置属性为01,且表示该内存数据块最高只能进入L2Cache,也就是说,在第一缓存位置属性指示的所能进入的缓存级别包括:L2、L3。
若经过步骤S103所命中的缓存是L2Cache,且经步骤S104所写入的数据为共享数据,则(1)在计算机系统中除了所命中的L2Cache外,还包含其他L2Cache的情况下,CPUCore中的基于多级缓存的数据读/写的装置向其他L2Cache以及L3Cache发起共享数据一致性请求;(2)在计算机系统中不包含其他L2Cache的情况下,该装置仅向L3Cache发起共享数据一致性请求。
若经过步骤S103所命中的缓存是L3Cache,且经步骤S104所写入的数据为共享数据,则(1)在计算机系统中除了所命中的L3Cache外,还包含其他L3Cache的情况下,CPUCore中的基于多级缓存的数据读/写的装置仅向其他L3Cache发起共享数据一致性请求;(2)在计算机系统中不包含其他L3Cache的情况下,该装置不发起共享数据一致性请求。
对于维护共享数据一致性的方法,主要有以下两种:
一种是写回(write back)的方式,具体的,在向命中的缓存中写入新的数据后,并按照上述描述在所述第一缓存位置属性指示的所能进入的缓存级别中,向级别等于和/或低于所命中缓存的级别的其他缓存发起共享数据一致性请求后,存在这些共享数据的其他缓存中的共享数据被置无效。
示例的,若上述若经过步骤S103所命中的缓存是L2Cache,且经步骤S104所写入的数据为共享数据,CPU Core中的基于多级缓存的数据读/写的装置向其他L2Cache以及L3Cache发起共享数据一致性请求,此时,其他L2Cache以及L3Cache都被置为无效。
另一种是写通过(write through)的方式,具体的,按照上述描述在所述第一缓存位置属性指示的所能进入的缓存级别中,向级别等于和/或低于所命中缓存的级别的其他缓存发起共享数据一致性请求后,级别等于所命中缓存级别的其它缓存中的共享数据被置无效,若所命中缓存级别不是所述第一缓存位置属性指示的所能进入的缓存级别中的最低级别,则低级别缓存中的共享数据被新写入的数据更新。
示例的,若经过上述步骤S103所命中的缓存是L2Cache,且经步骤S104所写入的数据为共享数据,CPU Core中的基于多级缓存的数据读/写的装置向其他L2Cache以及L3Cache发起共享数据一致性请求,此时,其他L2Cache中的共享数据被置无效,L3Cache中的共享数据更新。
因此,在多核系统环境中,通过对物理内存数据块设置缓存位置属性,能够有针对性的向可能拥有共享数据的Cache发起一致性请求,减少了对缓存的查找和侦测(snooping)。
本发明实施例提供了一种计算机系统,包括:内存以及基于多级缓存的数据读/写的装置,所述装置为包括多级缓存的CPU,该装置用于执行上述方法中的各个步骤。
下面,本发明还提供了具体实例,对上述读/写数据的方法进行详述。在各个具体实例中,以双核计算机系统为例,并且该双核计算机系统具有三个级别的缓存。参见图2,该计算机系统包括:
三个级别的缓存:L1Cache,包括I-Cache(Instruction-Cache,指令缓存)、D-Cache(Date-Cache,数据缓存),L2Cache,L3Cache;内存(Memory)以及CPU Core。
进一步的,该计算机系统还可以包括TLB:I-TLB(Instruction-TLB,指令旁路转换缓存)、D-TLB(Date-TLB,数据旁路转换缓存)。TLB负责将CPU Core发出的虚拟地址转化为物理内存数据块的物理地址的高位比特。
具体的,L1采用高速小容量的Cache,L2采用速度中等容量较大的Cache,L3采用低速大容量的Cache,并且L1/L2Cache为各个CPU Core私有,L3Cache为多个CPU Core共享。所谓私有缓存是为一个CPU Core所私有的,所谓共享缓存是为多个CPU Core所共享的。图2中上半部分虚框线中的L1、L2Cache是CPU Core0的私有缓存、图2中下半部分虚框线中的L1、L2Cache是CPU Core1的私有缓存,L3Cache为CPU Core0和CPU Core1的共享缓存。
另外,下面各实施例中以物理内存数据块为内存页(page)为例进行说明,一个内存页的属性信息存储于页表(page table)中,且内存中存储了所有内存页的页表。其中,内存页的属性信息可以表示该内存页是否为共享、能否被进入Cache等。
实施例一:
下面将根据上述计算机系统,针对基于多级缓存的数据读方法,提供一种具体的实施方案。
本实施例提供的基于多级缓存的数据读方法,上述的内存页的属性信息中还包括物理内存页的缓存位置属性信息,该缓存位置属性信息根据物理内存页被访问的情况进行设定。
如图3所示,基于多级缓存的数据读方法具体包括以下步骤:
步骤①、设置内存页的缓存位置属性。
在本具体实施例中,通过物理内存页面的被访问情况,在页表中添加若干比特用于标识缓存访问级别(CAL,Cache Access Level)信息,该CAL信息用于标识该内存页所能进入缓存级别中的最高能进入的缓存级别,其中,CAL信息可以由操作系统在分配页面的时候直接设定。在本实施例中,内存的页表如图3所示:物理地址的高位比特PA_1对应的CAL信息为“10”,物理地址的高位比特PA_2对应的CAL信息为“00”,物理地址的高位比特PA_3对应的CAL信息为“01”等。
步骤②、CPU Core将上述内存中的页表填入TLB条目(entry)中,用TLB entry中的保留比特标识CAL信息,如果没有保留比特,可以增加TLB entry的宽度。
需要说明的是,由于在本实施例中以PA_3为例进行描述,故而在图3的TLB entry中只示出PA_3相应的页表,其他页表在TLB entry中也是存在的。
以上两个步骤可以是在系统初始化时,或者在某一程序运行前进行,无需在每次进行数据读/写时执行。
步骤③、CPU Core中的基于多级缓存的数据读/写的装置查询内存页的物理地址的高位比特以及CAL信息。
在本具体实施例中,当CPU Core中的基于多级缓存的数据读/写的装置发起一次读数据的请求,给出虚拟地址VA_3,在TLB中查询到与此虚拟地址VA_3相对应的物理地址的高位比特PA_3、以及PA_3对应的CAL信息为“01”。
步骤④、根据PA_3、PA_3对应的CAL信息为“01”查询L2Cache是否命中。
在本具体实施例中,由于CAL信息“01”标识该内存页所能进入的缓存级别中最高为L2Cache,则忽略L1Cache,直接向L2Cache发起访问请求,送出物理地址的高位比特PA_3。将该物理地址的高位比特PA_3与L2Cache中Tag进行比较,得到L2Cache是否命中的结果。
若L2Cache命中,则继续进行步骤⑤。
步骤⑤、将所需的数据通过直接数据通路传送给CPU Core中的基于多级缓存的数据读/写的装置。
本发明实施例提供的一种基于多级缓存的数据读操作方法,通过缓存位置属性指示的物理内存数据块所能进入缓存的级别,使得CPU Core可以按照其指示的所能进入的级别查询缓存是否命中,从而有助于增强Cache命中率,有助于在数据读操作过程中降低Cache缺失率。
实施例二:
针对实施例一中经步骤④中L2Cache未命中,又提供一实施例。在本实施例中,前4个步骤可以参照实施例一中的前4个步骤,在此不加赘述。
若实施例一步骤④中L2Cache未命中,如图4所示,本实施例还包括:
步骤⑤、CPU Core中的基于多级缓存的数据读/写的装置利用物理地址的高位比特PA_3查询下一级L3Cache是否命中。
CPU Core中的基于多级缓存的数据读/写的装置将该物理地址的高位比特PA_3与L3Cache中Tag进行比较,得到L3Cache是否命中的结果。
若L3Cache命中,则继续进行步骤⑥;若L3Cache未命中,则继续进行步骤⑦。
步骤⑥、若L3Cache命中,将需要读的数据通过直接数据通路传送给CPU Core中的基于多级缓存的数据读/写的装置,同时将这些数据回填(refill)到L2Cache中。
步骤⑦、若L3Cache未命中,则CPU Core中的基于多级缓存的数据读/写的装置在内存PA_3对应的内存页中查找到需要读的数据,将这些数据通过直接数据通路传送给该装置,同时将这些数据回填到L2Cache和L3Cache中。
本发明实施例提供的一种基于多级缓存的数据读操作方法,通过缓存位置属性指示的物理内存数据块所能进入缓存的级别,并可以按照其指示的所能进入的级别查询缓存是否命中,能够支持越过无需访问的Cache,较快地命中缓存,从而有助于提高Cache访问效率,进而有助于增强Cache命中率,换言之,有助于在数据读操作过程中降低Cache缺失率;尤其对于一些访问频率低的物理内存数据块而言,可以通过对缓存位置属性的限定,避免其进入资源紧缺的高级别Cache,进而有助于在数据读操作过程中降低Cache缺失率,同时避免了无谓的Cache数据回填。
实施例三:
下面将根据上述计算机系统,针对基于多级缓存的数据写方法,提供一种具体的实施方案。
在本实施例中,采用和实施例一中相同的内存页缓存位置属性设置,即相同的页表。因此,在本实施例中,当CPU Core中的基于多级缓存的数据读/写的装置发起一次数据写请求时,前4个步骤可以参考实施例一中的前4个步骤,区别仅在于将读数据的请求改为写数据的请求,其他在此不加赘述。若经步骤④L2Cache命中,如图5所示,本实施例还包括:
步骤⑤:将数据写入到L2Cache中。
进一步的,若步骤⑤中所写入的数据为共享数据时,为了维护共享数据的一致性还可以进行下面的步骤。
步骤⑥:CPU Core中的基于多级缓存的数据读/写的装置向其他L2Cache以及L3Cache发起共享数据一致性请求。
若L2Cache采用写回的方式,则L3Cache和其他CPU Core的L2Cache中的共享数据被置为无效;若L2Cache采用写通过的方式,则L3Cache的共享数据被新写入的L2Cache的数据所更新,其他CPU Core的L2Cache中的共享数据被置为无效。
本发明实施例提供的一种基于多级缓存的数据写操作方法,通过缓存位置属性指示的物理内存数据块所能进入缓存的级别,并按照其指示的所能进入的级别查询缓存是否命中,能够支持越过无需访问的Cache,较快地命中缓存,从而有助于提高Cache命中效率,进而有助于增强Cache命中率,换言之,有助于在数据写操作过程中降低Cache缺失率;尤其对于一些访问频率低的物理内存数据块而言,可以通过对缓存位置属性的限定,避免其进入资源紧缺的高级别Cache,进而有助于在数据写操作过程中降低Cache缺失率;对于共享数据而言,能够有针对性的对可能拥有共享数据的Cache发起一致性请求,减少了Cache的查找和侦测。
实施例四:
针对实施例一、二、三中的CAL信息,还可以通过指令的方式进行设置,为CAL信息设置一个系统寄存器,而不将CAL信息存放在页表和TLB中,也就是说,增设一系统寄存器用于存储缓存位置属性,从而使得可以通过系统寄存器存储的缓存位置属性信息进行数据读/写。
如图6所示,本实施例提供了一种基于多级缓存的数据写操作方法,具体的步骤包括:
步骤①、在系统寄存器堆中申请一CAL寄存器(CALR,Cache Access LevelRegister),可以通过一条新增的指令,或者在原指令集中添加一些比特专门来对CALR进行设置,并且CALR保持不变直至重新设置。如图6所示,系统寄存器包括MIDR(Main IDRegister,设备标识寄存器)、PAR(Physical Address Register,物理地址寄存器)、CALR等。在本实施例中设置CALR=1(即CALR中的值为1,也就是说,CAL信息为1),且表示内存页最高只能进入L2Cache。
步骤②、CPU Core中的基于多级缓存的数据读/写的装置在发起一次数据写请求的过程中,从系统寄存器中得到CALR=1的信息。
步骤③、CPU Core中的基于多级缓存的数据读/写的装置查询内存页的物理地址的高位比特。
在本具体实施例中,CPU Core中的基于多级缓存的数据读/写的装置发起一次数据写请求,并给TLB送出虚拟地址VA_1。TLB负责将该装置发出的虚拟地址转化为物理地址的高位比特。如图6所示,TLB中存储了内存页的属性信息,包括:物理地址的高位比特为PA_1,PA_2,PA_3,PA_4等,但不包含CAL信息。该装置利用虚拟地址VA_1在TLB中进行查找,得到虚拟地址VA_1对应的物理地址高位比特PA_1。
步骤④、根据步骤②得到的CALR=1、以及步骤③得到的PA_1查询L2Cache是否命中。
具体的,将该物理地址的高位比特PA_1与L2Cache中Tag进行比较,得到L2Cache是否命中的结果。
若L2Cache命中,则继续进行步骤⑤。
步骤⑤、将数据直接写入到L2Cache。
若步骤⑤中所写入的数据为共享数据,则可以参考实施例三采用写回或写通过的方式,维持共享数据的一致性,在此不再赘述。
本发明实施例通过设置系统寄存器CALR,在基于多级缓存的数据读/写操作方法中,通过缓存位置属性指示的物理内存数据块所能进入缓存的级别,并按照其指示的所能进入的级别查询缓存是否命中,能够支持越过无需访问的Cache,较快地命中缓存,从而有助于提高Cache访问效率,进而有助于增强Cache命中率,换言之,有助于在数据写操作过程中降低Cache缺失率;尤其对于一些访问频率低的物理内存数据块而言,可以通过对缓存位置属性的限定,避免其进入资源紧缺的高级别Cache,进而有助于在数据写操作过程中降低Cache缺失率。
本发明实施例还提供了一种基于多级缓存的读/写装置,该装置可以是CPU Core的一个功能模块,该装置中的各个功能模块与上述方法中的步骤相对应,在此不进行详细描述。
如图7所示,所述装置70包括:
第一获取单元701,用于获取读/写数据所针对的第一物理内存数据块的第一查询地址;
第二获取单元702,用于获取所述第一物理内存数据块的第一缓存位置属性;所述第一缓存位置属性用于指示所述第一物理内存数据块所能进入缓存的级别;
查询单元703,根据所述第一获取单元701得到的第一查询地址,按照所述第二获取单元702得到的第一缓存位置属性所指示的第一物理内存数据块所能进入的缓存级别从高到低的顺序依次查询缓存是否命中,直至一个缓存命中或所有缓存均未命中为止;
读写单元704,用于若一个缓存命中,则针对所述查询单元703所命中缓存中的第一物理内存数据块的第一查询地址读/写数据;或,若所述查询单元703的查询结果为所有缓存均未命中,则针对内存中的第一物理内存数据块的第一查询地址读/写数据。
进一步的,所述第一缓存位置属性为根据第一物理内存数据块的被访问情况,在页表缓存TLB中为所述第一物理内存数据块所设定的;
所述第二获取单元702,用于根据TLB中存储的物理内存数据块的属性信息,查询所述第一查询地址对应的第一缓存位置属性;所述TLB中存储有物理内存数据块的属性信息,其中包括:物理内存数据块的查询地址、物理内存数据块的缓存位置属性的对应关系。
或者,进一步的,所述第一缓存位置属性为根据第一物理内存数据块的被访问情况,在系统寄存器中为所述第一物理内存数据块所设定的;
所述第二获取单元702,用于读取当前系统寄存器中存储的缓存位置属性,并其作为所述第一物理内存数据块的第一缓存位置属性;所述系统寄存器用于存储缓存位置属性。
进一步的,所述读写单元704,用于通过所述装置70与所命中缓存间的直接数据通路,针对所命中缓存中的第一物理内存数据块的第一查询地址读/写数据;或者,用于通过所述装置70与内存间的直接数据通路,针对内存中的第一物理内存数据块的第一查询地址读/写数据。
进一步的,所述读写单元704还用于在读数据时,
若所命中缓存的级别是所述第一缓存位置属性指示的所能进入缓存级别中的非最高级别,则在所述第一缓存位置属性指示的所能进入的缓存级别中,将需要读的数据回填到级别高于所命中缓存的级别的缓存中;或者,
若所命中缓存的级别是所述第一缓存位置属性指示的所能进入缓存级别中的最高级别,则不向其他缓存回填数据;或者,
若所有缓存均未命中,则将需要读的数据回填到所述第一缓存位置属性指示的所能进入的缓存中。
进一步的,所述读写单元704,还用于在写数据时,若所写的数据为共享数据,则在所述第一缓存位置属性指示的所能进入的缓存级别中,向级别等于和/或低于所命中缓存的级别的其他缓存发起共享数据一致性请求。
可选的,所述第一缓存位置属性标识第一物理内存数据块所能进入缓存级别中的最高级别,或者标识第一物理内存数据块不能进入的缓存级别。
本发明实施例提供的装置,通过缓存位置属性指示的物理内存数据块所能进入缓存的级别,使得装置中的查询单元可以按照其指示的所能进入的级别查询缓存是否命中,能够支持越过无需访问的Cache,较快的命中缓存,从而有助于提高Cache访问频率,进而有助于增强Cache命中率,换言之,有助于在数据读/写过程中降低Cache缺失率;尤其对于一些访问频率低的物理内存数据块而言,可以通过对缓存位置属性的限定,避免其进入资源紧缺的高级别缓存,进而有助于在数据读/写过程中降低Cache缺失率。
本发明还提供了一种计算机系统,所述系统包括:处理器以及和所述处理器相连的存储器;
其中,所述存储器可以为内存,且存储器中存储一组程序代码,且所述处理器用于调用所述存储器中存储的程序代码,所述程序代码用于实现上述提供的任一种基于多级缓存的数据读/写方法。
所述处理器用于调用所述基于多级缓存的数据读/写的程序代码,以获取读/写数据所针对的第一物理内存数据块的第一查询地址;获取所述第一物理内存数据块的第一缓存位置属性;所述第一缓存位置属性用于指示所述第一物理内存数据块所能进入缓存的级别;根据所述第一查询地址,按照所述第一缓存位置属性所指示的第一物理内存数据块所能进入的缓存级别从高到低的顺序依次查询缓存是否命中,直至一个缓存命中或所有缓存均未命中为止;若一个缓存命中,则针对所命中缓存中的第一物理内存数据块读/写数据;或,若所有缓存均未命中,则针对内存中的第一物理内存数据块读/写数据。
可选的,所述处理器还用于调用所述基于多级缓存的数据读/写的程序代码,根据第一物理内存数据块的被访问情况,在页表缓存TLB中为所述第一物理内存数据块所设定的;根据页表缓存TLB中存储的物理内存数据块的属性信息,查询所述第一查询地址对应的第一缓存位置属性;所述TLB中存储有物理内存数据块的属性信息,其中包括:物理内存数据块的查询地址、物理内存数据块的缓存位置属性的对应关系。
可选的,所述处理器还用于调用所述基于多级缓存的数据读/写的程序代码,根据第一物理内存数据块的被访问情况,在系统寄存器中为所述第一物理内存数据块所设定的;读取当前系统寄存器中存储的缓存位置属性,并其作为所述第一物理内存数据块的第一缓存位置属性;所述系统寄存器用于存储缓存位置属性。
具体的,所述处理器还用于调用所述基于多级缓存的数据读/写的程序代码,通过与所命中缓存间的直接数据通路,针对所命中缓存中的第一物理内存数据块的第一查询地址读/写数据;或者,通过与内存间的直接数据通路,针对内存中的第一物理内存数据块的第一查询地址读/写数据。
进一步的,所述处理器还用于调用所述基于多级缓存的数据读的程序代码,若所命中缓存的级别是所述第一缓存位置属性指示的所能进入缓存级别中的非最高级别,则所述方法还包括:在所述第一缓存位置属性指示的所能进入的缓存级别中,将需要读的数据回填到级别高于所命中缓存的级别的缓存;或者,若所命中缓存的级别是所述第一缓存位置属性指示的所能进入缓存级别中的最高级别,则不向其他缓存回填数据;或者,若所有缓存均未命中,则所述方法还包括:将需要读的数据回填到所述第一缓存位置属性指示的所能进入的缓存中。
进一步的,所述处理器还用于调用所述基于多级缓存的数据写的程序代码,若所写的数据为共享数据,则在所述第一缓存位置属性指示的所能进入的缓存级别中,向级别等于和/或低于所命中缓存的级别的其他缓存发起共享数据一致性请求。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (15)
1.一种基于多级缓存的数据读/写方法,其特征在于,包括:
获取读/写数据所针对的第一物理内存数据块的第一查询地址;
获取所述第一物理内存数据块的第一缓存位置属性;所述第一缓存位置属性用于指示第一物理内存数据块所能进入缓存的级别;
根据所述第一查询地址,按照所述第一缓存位置属性所指示的第一物理内存数据块所能进入的缓存级别从高到低的顺序依次查询缓存是否命中,直至一个缓存命中或所有缓存均未命中为止;
若一个缓存命中,则针对所命中缓存中的第一物理内存数据块的第一查询地址读/写数据;或,若所有缓存均未命中,则针对内存中的第一物理内存数据块的第一查询地址读/写数据。
2.根据权利要求1所述的方法,其特征在于,
所述第一缓存位置属性为根据第一物理内存数据块的被访问情况,在页表缓存TLB中为所述第一物理内存数据块所设定的;
所述获取所述第一物理内存数据块的第一缓存位置属性包括:
根据页表缓存TLB中存储的物理内存数据块的属性信息,查询所述第一查询地址对应的第一缓存位置属性;所述TLB中存储有物理内存数据块的属性信息,其中包括:物理内存数据块的查询地址、物理内存数据块的缓存位置属性的对应关系。
3.根据权利要求1所述的方法,其特征在于,
所述第一缓存位置属性为根据第一物理内存数据块的被访问情况,在系统寄存器中为所述第一物理内存数据块所设定的;
所述获取所述第一物理内存数据块的第一缓存位置属性包括:
读取当前系统寄存器中存储的缓存位置属性,并其作为所述第一物理内存数据块的第一缓存位置属性;所述系统寄存器用于存储缓存位置属性。
4.根据权利要求1所述的方法,其特征在于,所述针对所命中缓存中的第一物理内存数据块的第一查询地址读/写数据包括:
通过与所命中缓存间的直接数据通路,针对所命中缓存中的第一物理内存数据块的第一查询进行读/写数据;
或者,所述针对内存中的第一物理内存数据块的第一查询地址读/写数据包括:
通过与内存间的直接数据通路,针对内存中的第一物理内存数据块的第一查询地址读/写数据。
5.根据权利要求1-4任一项所述的方法,其特征在于,在读数据时,
若所命中缓存的级别是所述第一缓存位置属性指示的所能进入缓存级别中的非最高级别,则所述方法还包括:在所述第一缓存位置属性指示的所能进入的缓存级别中,将需要读的数据回填到级别高于所命中缓存的级别的缓存;或者,
若所命中缓存的级别是所述第一缓存位置属性指示的所能进入缓存级别中的最高级别,则不向其他缓存回填数据;或者,
若所有缓存均未命中,则所述方法还包括:将需要读的数据回填到所述第一缓存位置属性指示的所能进入的缓存中。
6.根据权利要求1-4任一项所述的方法,其特征在于,在写数据时,针对所命中缓存中的第一物理内存数据块写数据之后,所述方法还包括:
若所写的数据为共享数据,则在所述第一缓存位置属性指示的所能进入的缓存级别中,向级别等于和/或低于所命中缓存的级别的其他缓存发起共享数据一致性请求。
7.根据权利要求1-4任一项所述的方法,其特征在于,所述第一缓存位置属性标识第一物理内存数据块所能进入缓存级别中的最高级别,或者标识第一物理内存数据块不能进入的缓存级别。
8.一种基于多级缓存的数据读/写装置,所述装置为包括多级缓存的中央处理器CPU,其特征在于,包括:
第一获取单元,用于获取读/写数据所针对的第一物理内存数据块的第一查询地址;
第二获取单元,用于获取所述第一物理内存数据块的第一缓存位置属性;所述第一缓存位置属性用于指示第一物理内存数据块所能进入缓存的级别;
查询单元,根据所述第一获取单元得到的所述第一查询地址,按照第二获取单元得到的所述第一缓存位置属性所指示的所述第一物理内存数据块所能进入的缓存级别从高到低的顺序依次查询缓存是否命中,直至一个缓存命中或所有缓存均未命中为止;
读写单元,用于若一个缓存命中,则针对所述查询单元所命中缓存中的第一物理内存数据块的第一查询地址读/写数据;或,若所述查询单元的查询结果为所有缓存均未命中,则针对内存中的第一物理内存数据块的第一查询地址读/写数据。
9.根据权利要求8所述的装置,其特征在于,
所述第一缓存位置属性为根据第一物理内存数据块的被访问情况,在页表缓存TLB中为所述第一物理内存数据块所设定的;
所述第二获取单元,用于根据TLB中存储的物理内存数据块的属性信息,查询所述第一查询地址对应的第一缓存位置属性;所述TLB中存储有物理内存数据块的属性信息,其中包括:物理内存数据块的查询地址、物理内存数据块的缓存位置属性的对应关系。
10.根据权利要求8所述的装置,其特征在于,
所述第一缓存位置属性为根据第一物理内存数据块的被访问情况,在系统寄存器中为所述第一物理内存数据块所设定的;
所述第二获取单元,用于读取当前系统寄存器中存储的缓存位置属性,并其作为所述第一物理内存数据块的第一缓存位置属性;所述系统寄存器用于存储缓存位置属性。
11.根据权利要求8所述的装置,其特征在于,
所述读写单元,用于通过与所命中缓存间的直接数据通路,针对所命中缓存中的第一物理内存数据块的第一查询地址进行读/写数据;或者,所述读写单元,用于通过与内存间的直接数据通路,针对内存中的第一物理内存数据块的第一查询地址进行读/写数据。
12.根据权利要求8-11任一项所述的装置,其特征在于,所述读写单元,还用于在读数据时,
若所命中缓存的级别是所述第一缓存位置属性指示的所能进入缓存级别中的非最高级别,则在所述第一缓存位置属性指示的所能进入的缓存级别中,将需要读的数据回填到级别高于所命中缓存的级别的缓存;或者,
若所命中缓存的级别是所述第一缓存位置属性指示的所能进入缓存级别中的最高级别,则不向其他缓存回填数据;或者,
若所有缓存均未命中,则将需要读的数据回填到所述第一缓存位置属性指示的所能进入的缓存中。
13.根据权利要求8-11任一项所述的装置,其特征在于,
所述读写单元,还用于在写数据时,若所写的数据为共享数据,则在所述第一缓存位置属性指示的所能进入的缓存级别中,向级别等于和/或低于所命中缓存的级别的其他缓存发起共享数据一致性请求。
14.根据权利要求8-11任一项所述的装置,其特征在于,所述第一缓存位置属性标识第一物理内存数据块所能进入缓存级别中的最高级别,或者标识第一物理内存数据块不能进入的缓存级别。
15.一种计算机系统,其特征在于,包括:内存以及权利要求8-14任一项所述的装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310331344.6A CN104346294B (zh) | 2013-07-31 | 2013-07-31 | 基于多级缓存的数据读/写方法、装置和计算机系统 |
EP14832818.0A EP3029575A4 (en) | 2013-07-31 | 2014-07-31 | MULTI-STAGE DATA READING / WRITING PROCEDURE AND CACHE BASED DEVICE AND COMPUTER SYSTEM |
PCT/CN2014/083467 WO2015014302A1 (zh) | 2013-07-31 | 2014-07-31 | 基于多级缓存的数据读/写方法、装置和计算机系统 |
US15/010,376 US9864696B2 (en) | 2013-07-31 | 2016-01-29 | Multilevel cache-based data read/write method and apparatus, and computer system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310331344.6A CN104346294B (zh) | 2013-07-31 | 2013-07-31 | 基于多级缓存的数据读/写方法、装置和计算机系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104346294A CN104346294A (zh) | 2015-02-11 |
CN104346294B true CN104346294B (zh) | 2017-08-25 |
Family
ID=52431018
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310331344.6A Active CN104346294B (zh) | 2013-07-31 | 2013-07-31 | 基于多级缓存的数据读/写方法、装置和计算机系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9864696B2 (zh) |
EP (1) | EP3029575A4 (zh) |
CN (1) | CN104346294B (zh) |
WO (1) | WO2015014302A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12026099B2 (en) | 2021-02-22 | 2024-07-02 | Advanced Micro Devices, Inc. | System and method for storing cache location information for cache entry transfer |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6027562B2 (ja) * | 2014-02-24 | 2016-11-16 | 株式会社東芝 | キャッシュメモリシステムおよびプロセッサシステム |
CN105988730B (zh) * | 2015-03-02 | 2019-03-08 | 华为技术有限公司 | 一种读取缓存数据的方法、旁路装置及缓存系统 |
US9600417B2 (en) | 2015-04-29 | 2017-03-21 | Google Inc. | Data caching |
CN106354421B (zh) * | 2015-07-17 | 2019-11-12 | 龙芯中科技术有限公司 | 筛选方法、筛选器及数据一致性维护系统 |
CN107229546A (zh) * | 2016-03-23 | 2017-10-03 | 上海复旦微电子集团股份有限公司 | 缓存的模拟方法及装置 |
WO2017190266A1 (zh) | 2016-05-03 | 2017-11-09 | 华为技术有限公司 | 管理转址旁路缓存的方法和多核处理器 |
CN106055274A (zh) * | 2016-05-23 | 2016-10-26 | 联想(北京)有限公司 | 一种数据存储方法、数据读取方法及电子设备 |
US10956339B2 (en) * | 2016-07-14 | 2021-03-23 | Advanced Micro Devices, Inc. | System and method for storing cache location information for cache entry transfer |
CN109952565B (zh) * | 2016-11-16 | 2021-10-22 | 华为技术有限公司 | 内存访问技术 |
CN106708749B (zh) * | 2016-12-23 | 2019-08-23 | 量子云未来(北京)信息科技有限公司 | 一种数据查找方法 |
US10628313B2 (en) * | 2017-05-26 | 2020-04-21 | International Business Machines Corporation | Dual clusters of fully connected integrated circuit multiprocessors with shared high-level cache |
CN107291633A (zh) * | 2017-07-14 | 2017-10-24 | 长沙开雅电子科技有限公司 | 一种新型集群存储写缓存分级管理方法 |
CN109753445B (zh) * | 2017-11-02 | 2022-12-27 | 华为技术有限公司 | 一种缓存访问方法、多级缓存系统及计算机系统 |
US10558573B1 (en) | 2018-09-11 | 2020-02-11 | Cavium, Llc | Methods and systems for distributing memory requests |
CN109947367B (zh) * | 2019-03-15 | 2024-01-09 | 维沃移动通信有限公司 | 一种文件的处理方法及终端 |
CN112148665B (zh) | 2019-06-28 | 2024-01-09 | 深圳市中兴微电子技术有限公司 | 缓存的分配方法及装置 |
CN110472004B (zh) * | 2019-08-23 | 2022-07-08 | 国网山东省电力公司电力科学研究院 | 一种科技情报数据多级缓存管理的方法及系统 |
CN110955688A (zh) * | 2019-12-23 | 2020-04-03 | 北京奇艺世纪科技有限公司 | 代理服务器、数据查询方法及装置、电子设备和可存储介质 |
CN113377684B (zh) * | 2020-03-09 | 2024-03-08 | 瑞昱半导体股份有限公司 | 数据写入系统与方法 |
CN115605851A (zh) * | 2020-04-22 | 2023-01-13 | 美光科技公司(Us) | 用于读取操作的映射描述符 |
CN112181295B (zh) * | 2020-09-22 | 2022-02-18 | 杭州宏杉科技股份有限公司 | 数据访问方法、装置、存储设备及机器可读存储介质 |
CN112328632B (zh) * | 2020-10-09 | 2022-06-14 | 福建亿榕信息技术有限公司 | 一种分布式两级缓存的方法和系统 |
CN112433961B (zh) * | 2020-12-02 | 2022-07-08 | 海光信息技术股份有限公司 | 复合缓存目录系统及其管理方法 |
KR20220138760A (ko) * | 2021-04-06 | 2022-10-13 | 에스케이하이닉스 주식회사 | 컨트롤러 및 이를 포함하는 메모리 시스템 |
CN113836053A (zh) * | 2021-09-07 | 2021-12-24 | 上海砹芯科技有限公司 | 信息获取方法、装置和电子设备 |
CN117014504B (zh) * | 2023-08-11 | 2024-04-16 | 北京市合芯数字科技有限公司 | 数据传输方法、装置、设备、介质及产品 |
CN117573572A (zh) * | 2024-01-12 | 2024-02-20 | 北京开源芯片研究院 | 重填数据的处理方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101170555A (zh) * | 2006-10-25 | 2008-04-30 | 联发科技股份有限公司 | 地址解析协议高速缓存管理方法以及相关通信装置 |
US8018961B2 (en) * | 2009-06-22 | 2011-09-13 | Citrix Systems, Inc. | Systems and methods for receive and transmission queue processing in a multi-core architecture |
CN102369520A (zh) * | 2011-09-02 | 2012-03-07 | 华为技术有限公司 | 虚拟内存区域的查询、遍历方法及装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5689679A (en) * | 1993-04-28 | 1997-11-18 | Digital Equipment Corporation | Memory system and method for selective multi-level caching using a cache level code |
US6148372A (en) * | 1998-01-21 | 2000-11-14 | Sun Microsystems, Inc. | Apparatus and method for detection and recovery from structural stalls in a multi-level non-blocking cache system |
US20110153944A1 (en) * | 2009-12-22 | 2011-06-23 | Klaus Kursawe | Secure Cache Memory Architecture |
US9110810B2 (en) | 2011-12-06 | 2015-08-18 | Nvidia Corporation | Multi-level instruction cache prefetching |
WO2013097246A1 (zh) * | 2011-12-31 | 2013-07-04 | 华为技术有限公司 | 高速缓冲存储器控制方法、装置和系统 |
CN102662861B (zh) * | 2012-03-22 | 2014-12-10 | 北京北大众志微系统科技有限责任公司 | 末级高速缓存插入策略软件控制方法 |
CN103077131A (zh) * | 2012-12-31 | 2013-05-01 | 北京北大众志微系统科技有限责任公司 | 一种高速缓存分区域性能监视方法及监视器 |
-
2013
- 2013-07-31 CN CN201310331344.6A patent/CN104346294B/zh active Active
-
2014
- 2014-07-31 EP EP14832818.0A patent/EP3029575A4/en not_active Withdrawn
- 2014-07-31 WO PCT/CN2014/083467 patent/WO2015014302A1/zh active Application Filing
-
2016
- 2016-01-29 US US15/010,376 patent/US9864696B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101170555A (zh) * | 2006-10-25 | 2008-04-30 | 联发科技股份有限公司 | 地址解析协议高速缓存管理方法以及相关通信装置 |
US8018961B2 (en) * | 2009-06-22 | 2011-09-13 | Citrix Systems, Inc. | Systems and methods for receive and transmission queue processing in a multi-core architecture |
CN102369520A (zh) * | 2011-09-02 | 2012-03-07 | 华为技术有限公司 | 虚拟内存区域的查询、遍历方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12026099B2 (en) | 2021-02-22 | 2024-07-02 | Advanced Micro Devices, Inc. | System and method for storing cache location information for cache entry transfer |
Also Published As
Publication number | Publication date |
---|---|
WO2015014302A1 (zh) | 2015-02-05 |
US9864696B2 (en) | 2018-01-09 |
EP3029575A1 (en) | 2016-06-08 |
EP3029575A4 (en) | 2016-06-29 |
US20160147666A1 (en) | 2016-05-26 |
CN104346294A (zh) | 2015-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104346294B (zh) | 基于多级缓存的数据读/写方法、装置和计算机系统 | |
US6304945B1 (en) | Method and apparatus for maintaining cache coherency in a computer system having multiple processor buses | |
US10169232B2 (en) | Associative and atomic write-back caching system and method for storage subsystem | |
CN101331466B (zh) | 同经高速缓存的存储器数据一起高速缓存存储器属性指示符 | |
US5493660A (en) | Software assisted hardware TLB miss handler | |
CN101493796B (zh) | 存储器内、页面内目录高速缓存一致性配置 | |
KR102575913B1 (ko) | 비대칭 세트 결합된 캐시 | |
CN100573477C (zh) | 管理锁定的高速缓冲存储器中的组替换的系统和方法 | |
US7590802B2 (en) | Direct deposit using locking cache | |
US20070061549A1 (en) | Method and an apparatus to track address translation in I/O virtualization | |
JP3096414B2 (ja) | ディレクトリ内にアドレス・タグを記憶するためのコンピュータ | |
CN104487953A (zh) | 用于层次型存储器系统的存储器管理 | |
CN106462495A (zh) | 结合下一读取地址预取使用存储器容量和/或带宽压缩的存储器控制器,以及相关的基于处理器的系统和方法 | |
CN104252392A (zh) | 一种访问数据缓存的方法和处理器 | |
CN104809179A (zh) | 访问哈希表的装置和方法 | |
JP2003067357A (ja) | 不均一メモリ・アクセス(numa)データ処理システムおよびその操作方法 | |
US20080244193A1 (en) | Adaptive range snoop filtering methods and apparatuses | |
CN107771322A (zh) | 可编程集成电路中存储器资源的管理 | |
US20230102891A1 (en) | Re-reference interval prediction (rrip) with pseudo-lru supplemental age information | |
CN105446889A (zh) | 一种内存管理方法、装置以及内存控制器 | |
US20080040548A1 (en) | Method for Processor to Use Locking Cache as Part of System Memory | |
US20110055482A1 (en) | Shared cache reservation | |
US20140019690A1 (en) | Processor, information processing apparatus, and control method of processor | |
CN104285215A (zh) | 用于跟踪指令高速缓冲存储器中的附加数据权限的方法和设备 | |
US9507729B2 (en) | Method and processor for reducing code and latency of TLB maintenance operations in a configurable processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |