CN104932990B - 一种高速缓冲存储器中数据块的替换方法和装置 - Google Patents

一种高速缓冲存储器中数据块的替换方法和装置 Download PDF

Info

Publication number
CN104932990B
CN104932990B CN201510299437.4A CN201510299437A CN104932990B CN 104932990 B CN104932990 B CN 104932990B CN 201510299437 A CN201510299437 A CN 201510299437A CN 104932990 B CN104932990 B CN 104932990B
Authority
CN
China
Prior art keywords
way
mode
replaced
available
cache
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
Application number
CN201510299437.4A
Other languages
English (en)
Other versions
CN104932990A (zh
Inventor
信恒超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201510299437.4A priority Critical patent/CN104932990B/zh
Publication of CN104932990A publication Critical patent/CN104932990A/zh
Priority to PCT/CN2016/084580 priority patent/WO2016192658A1/zh
Priority to US15/828,712 priority patent/US20180089106A1/en
Application granted granted Critical
Publication of CN104932990B publication Critical patent/CN104932990B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment

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

本发明公开了一种Cache中数据块的替换方法和装置,属于存储技术领域。所述替换方法包括:每隔设定时间从第一模式的可用way中选择一个可用way,作为第一模式的待替换way,且第一模式的各个可用way作为第一模式的待替换的way的概率均等,第一模式为多个模式中的一个,第一模式的可用way为配置给第一模式使用的way;接收第一数据访问请求,第一数据访问请求包括第一模式的标识;当Cache中没有存储第一数据访问请求访问的数据块时,将第一数据访问请求访问的数据块存储在第一模式的待替换way中。本发明采用第一模式的各个可用way实现第一模式的数据块替换的概率均等。

Description

一种高速缓冲存储器中数据块的替换方法和装置
技术领域
本发明涉及存储技术领域,特别涉及一种高速缓冲存储器中数据块的替换方法和装置。
背景技术
高速缓冲存储器(Cache)是存在于主存储器(Main memory)与中央处理器(Central Processing Unit,简称CPU)之间的存储器。Cache的存储空间分为若干组(set),各set均包括若干路(way)且各set包括的way的数量相同,way为Cache中存储数据的最小单位。与set相对的,主存储器的存储空间划分为若干区,各区均包括若干块且各区包括的块的数量均等于Cache中set的数量,每个区包括的各块均与各set存在地址映射,每个区的某块存储的数据均可以存储到与该块存在地址映射的set包括的任意一个way中。
目前的Cache可以支持多模隔离,多模隔离是多个模式(网络制式或虚拟机(Virtual Machine,简称VM))的数据可以存储在一个Cache中。当主存储器中的数据块存储到配置给某个模式的way中时,由于一般配置给各个模式的way不是Cache中的所有way,因此通常采用如下方式实现:先根据主存储器中存储该数据块的块,将Cache中与该块存在地址映射的set,确定为存储该数据块的set;若确定的set包括的所有way中均存储有数据,则从所有way中,随机选择一个way;再从配置给该模式的way中,将距离选择的way最近的一个way,确定为存储该数据块的way;将该数据块替换确定的way中原先存储的数据。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
若配置给该模式的way未均匀分布在所有way时,则会造成配置给该模式的各个way进行数据块替换的概率不均等,影响系统性能;而若要将配置给各个模式的way均匀分布在所有way中,则实现难度较大。
发明内容
为了解决现有技术各个way进行数据替换的概率不均等的问题,本发明实施例提供了一种Cache中数据块的替换方法和装置。所述技术方案如下:
一方面,本发明实施例提供了一种Cache中数据块的替换方法,所述Cache包括若干路way,所述若干way配置给多个模式使用,所述模式为网络制式或虚拟机VM,所述替换方法包括:
每隔设定时间从第一模式的可用way中选择一个可用way,作为所述第一模式的待替换way,且所述第一模式的各个可用way作为所述第一模式的待替换的way的概率均等,所述第一模式为所述多个模式中的一个,所述第一模式的可用way为配置给所述第一模式使用的way;
接收第一数据访问请求,所述第一数据访问请求包括所述第一模式的标识;
当所述Cache中没有存储所述第一数据访问请求访问的数据块时,将所述第一数据访问请求访问的数据块存储在所述第一模式的待替换way中。
在本发明实施例一种可能的实现方式中,每隔设定时间选择的可用way周期性循环变化或随机变化。
在本发明实施例另一种可能的实现方式中,所述每隔设定时间从第一模式的可用way中选择一个可用way,作为所述第一模式的待替换way,包括:
采用一个掩码替换路产生器MRWG确定所述第一模式的待替换way,所述MRWG的输入为表示所述第一模式的可用way的掩码,所述MRWG的输出为表示所述第一模式的待替换way的指示信号。
可选地,所述当所述Cache中没有存储所述第一数据访问请求访问的数据块时,将所述第一数据访问请求访问的数据块存储在所述第一模式的待替换way中,包括:
根据第一模式的标识与MRWG的标识的对应关系,选择与所述第一模式对应的MRWG;
将选择的MRWG的输出表示的way作为所述第一模式的待替换way;
将所述第一数据访问请求访问的数据块存储在所述第一模式的待替换way中。
在本发明实施例又一种可能的实现方式中,所述替换方法还包括:
当所述从第一模式的可用way中选择一个可用way,作为所述第一模式的待替换way时,从第二模式的可用way中选择一个可用way,作为所述第二模式的待替换way,且所述第二模式的各个可用way作为所述第二模式的待替换的way的概率均等,所述第二模式为所述多个模式中的一个,所述第二模式的可用way为配置给所述第二模式使用的way。
在本发明实施例又一种可能的实现方式中,所述替换方法还包括:
接收第二数据访问请求,所述第二数据访问请求包括第三模式的标识,所述第三模式为所述多个模式中的一个;
当所述Cache中没有存储所述第二数据访问请求访问的数据块时,采用预设的规则,从设定的way中选择一个way,作为所述第三模式的待替换way;
将所述第二数据访问请求访问的数据块存储在所述第三模式的待替换way中。
另一方面,本发明实施例提供了一种Cache中数据块的替换装置,所述Cache包括若干路way,所述若干way配置给多个模式使用,所述模式为网络制式或虚拟机VM,所述替换装置包括:
第一确定模块,用于每隔设定时间从第一模式的可用way中选择一个可用way,作为所述第一模式的待替换way,且所述第一模式的各个可用way作为所述第一模式的待替换的way的概率均等,所述第一模式为所述多个模式中的一个,所述第一模式的可用way为配置给所述第一模式使用的way;
第一接收模块,用于接收第一数据访问请求,所述第一数据访问请求包括所述第一模式的标识;
第一存储模块,用于当所述Cache中没有存储所述第一数据访问请求访问的数据块时,将所述第一数据访问请求访问的数据块存储在所述第一模式的待替换way中。
在本发明实施例一种可能的实现方式中,每隔设定时间选择的可用way周期性循环变化或随机变化。
在本发明实施例另一种可能的实现方式中,所述第一确定模块用于,
采用一个掩码替换路产生器MRWG确定所述第一模式的待替换way,所述MRWG的输入为表示所述第一模式的可用way的掩码,所述MRWG的输出为表示所述第一模式的待替换way的指示信号。
可选地,所述第一存储模块用于,
选择单元,用于根据第一模式的标识与MRWG的标识的对应关系,选择与所述第一模式对应的MRWG;
确定单元,用于将选择的MRWG的输出表示的way作为所述第一模式的待替换way;
存储单元,用于将所述第一数据访问请求访问的数据块存储在所述第一模式的待替换way中。
在本发明实施例又一种可能的实现方式中,所述替换装置还包括:
第二确定模块,用于当所述从第一模式的可用way中选择一个可用way,作为所述第一模式的待替换way时,从第二模式的可用way中选择一个可用way,作为所述第二模式的待替换way,且所述第二模式的各个可用way作为所述第二模式的待替换的way的概率均等,所述第二模式为所述多个模式中的一个,所述第二模式的可用way为配置给所述第二模式使用的way。
在本发明实施例又一种可能的实现方式中,所述替换装置还包括:
第二接收模块,用于接收第二数据访问请求,所述第二数据访问请求包括第三模式的标识,所述第三模式为所述多个模式中的一个;
选择模块,用于当所述Cache中没有存储所述第二数据访问请求访问的数据块时,采用预设的规则,从设定的way中选择一个way,作为所述第三模式的待替换way;
第二存储模块,用于将所述第二数据访问请求访问的数据块存储在所述第三模式的待替换way中。
本发明实施例提供的技术方案带来的有益效果是:
通过每隔设定时间从第一模式的可用way中选择一个可用way,作为第一模式的待替换way,且第一模式的各个可用way作为第一模式的待替换way的概率均等,也就是说,第一模式的待替换way是第一模式的任意一个可用way的概率是均等的。由于当Cache中没有存储第一数据访问请求访问的数据块时,会将第一数据访问请求访问的数据块存储在第一模式的待替换way中,因此第一数据访问请求访问的数据块存储在第一模式的各个可用way的概率是均等的,即采用第一模式的各个可用way实现第一模式的数据块替换的概率均等。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的Cache中数据块的替换方法的应用场景图;
图2是本发明实施例提供的CPU请求与Cache结构之间的关系示意图;
图3是本发明实施例提供的主存储器与Cache结构之间的关系示意图;
图4是本发明实施例一提供的一种Cache中数据块的替换方法的流程图;
图5是本发明实施例二提供的一种Cache中数据块的替换方法的流程图;
图6是本发明实施例二提供的选择第一模式的待替换way的硬件实现示意图;
图7是本发明实施例三提供的一种Cache中数据块的替换装置的结构示意图;
图8是本发明实施例四提供的一种Cache中数据块的替换装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
下面先结合图1简单介绍一下本发明实施例提供的Cache中数据块的替换方法的应用场景。如图1所示,一个或多个Cache 1设置在CPU 2和主存储器3之间。当有多个Cache1时,各个Cache 1依次设置在CPU 2和主存储器3之间,分别称为第一级Cache、第二级Cache……,依此类推。其中,沿从CPU 2到主存储器3方向,各个Cache 1的访问速度依次递减、容量依次递增。例如,与CPU 2距离最近的第一级Cache是各个Cache 1中访问速度最快但容量最小的,与主存储器3距离最近(即与CPU 2距离最远)的最后一个Cache 1(如图1所示的第三级Cache)是各个Cache 1中访问速度最慢但容量最大的。
各个Cache 1均可以存储主存储器3中的数据块。当CPU 2访问主存储器3中的某个数据块时,CPU 2不会直接将请求发送给主存储器3,而是先将请求发送给第一级Cache。若第一级Cache中存储有该数据块,则第一级Cache根据请求对该数据块进行读操作或写操作(CPU 2完成对该数据块的访问);若第一级Cache中没有存储该数据块,则第一级Cache将该请求转发给第二级Cache,并且第一级Cache在CPU 2完成对该数据块的访问之后存储该数据块。若第二级Cache接收到该请求,则第二级Cache会判断是否存储有该数据块。若第二级Cache中存储有该数据块,则第二级Cache根据请求对该数据块进行读操作或写操作;若第二级Cache中没有存储该数据块,则第二级Cache将该请求转发给第三级Cache,并且第二级Cache在CPU 2完成对该数据块的访问之后存储该数据块……,依此类推。若主存储器3接收到该请求,则主存储器3会根据请求对该数据块进行读操作或写操作。
容易知道,CPU 2的处理速度远远快于主存储器3的访问速度,CPU 2与主存储器3之间速度的不匹配严重限制了计算机的整体性能。与主存储器3相比,Cache 1的容量小但速度快(特别是第一级Cache,一般接近CPU的速度),Cache1设置在CPU 2和主存储器3之间,可以降低CPU访问存储器的延迟,有效缓解CPU 2与主存储器3之间的速度差距,提升计算机的整体性能。
需要说明的是,本发明实施例提供的Cache中数据块的替换方法可以适用于上述的任意一个Cache 1,如第一级Cache,本发明对此不作限制。
对于一个Cache来说,如图2所示,内部的存储空间分为若干set,各set均包括若干way且各set包括的way的数量相同,way为Cache中存储数据的最小单位。与set相对的,主存储器的空间划分为若干区(或页),如图3所示,各区均包括若干块且各区包括的块的数量均等于Cache中set的数量,每个区包括的各块均与各set存在地址映射,每个区的某块存储的数据均可以存储到与该块存在地址映射的set包括的任意一个way中。具体地,参见图2,每个way包括标签(tag)字段和数据(data)字段,data字段用于存储数据块,tag字段用于存储data字段存储的数据块在主存储器中的高位地址,如区号(或页号)。
根据set和way的数量,Cache分为三种结构,分别为直接映射结构、全相联结构和组相联结构。直接映射结构的Cache中各set包括的way的个数为1,全相联结构的Cache中set的个数为1,组相联结构的Cache中set和way的个数均大于1。
又如图2所示,CPU访问数据的请求中的地址(address)部分包括标签(tag)、索引(index)和偏移量(offset)三个字段。index字段包括访问的数据块在主存储器中的低位地址,如块号。由于主存储器中的块与Cache中的set存在地址映射,因此index字段可以用于索引到某个set。tag字段包括数据块在主存储器中的高位地址,如区号(或页号)。由于Cache中各个way的tag字段存储有各个way存储的数据块在主存储器中的高位地址,因此请求中的tag字段可以用于与Cache中各个way的tag字段进行比较,以确定各个way存储的数据块是否为访问的数据块;offset为访问的数据在数据块内的地址。
Cache在接收到CPU访问数据的请求之后,首先根据请求的address部分中的index字段,确定访问的数据块所在的set。然后将请求的address部分中的tag字段与确定的set中每个way的tag进行比较。若请求的address部分中的tag字段与某个way的tag相同,则表示访问的数据块存储在Cache中,称为hit;若请求的address部分中的tag字段与该set中所有way的tag均不同,则表示访问的数据块没有存储在Cache中,称为miss。出现miss时,Cache先将请求转发给其它存储器,然后在CPU完成对数据块的访问之后,将访问的数据块(即主存储器中的数据块)写入之前确定的set中的一个way进行存储(若写入的way原先存储有数据,则写入为数据块替换过程)。若该确定的set包括多个way,此时需要先从确定的set包括的多个way中选出一个way,然后将访问的数据块存储在选出的way中。
由于直接映射结构的Cache中各set包括的way的个数为1,不能进行way的选择,因此本发明实施例提供的Cache中数据块的替换方法主要应用于全相联结构的Cache和组相联结构的Cache,特别是组相联结构的Cache。
实施例一
本发明实施例提供了一种Cache中数据块的替换方法,Cache的存储空间分为若干set,各set均包括若干way且各set包括的way相同,Cache的存储空间按way划分给多个模式使用,每个模式均可以使用所有set中相同的若干way,即若干way配置给多个模式使用,该模式为网络制式或VM,参见图4,该替换方法包括:
步骤101:每隔设定时间从第一模式的可用way中选择一个可用way,作为第一模式的待替换way,且第一模式的各个可用way作为第一模式的待替换way的概率均等。该步骤101可以一直执行。
在本实施例中,第一模式为多个模式中的一个,可以为一个网络制式,也可以为一个VM。需要说明的是,在配置有Cache的way的多个模式中,第一模式的个数可以为一个,也可以为多个。具体地,网络制式包括全球移动通信系统(Global System for MobileCommunication,简称GSM)、码分多址(Code Division Multiple Access,简称CDMA)、第三代移动通信技术(3rd-Generation wireless telephone technology,简称3G)、长期演进(Long Term Evolution,简称LTE)等。VM为在一台计算机的操作系统上通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的一个计算机系统。
第一模式的可用way为配置给第一模式使用的way。例如,Cache的所有way为way0-15。配置给网络制式1(如GSM)使用的way为way0-7,配置给网络制式2(如CDMA)使用的way为way8-15。若第一模式为网络制式2,则第一模式的可用way为way8-15。或者,配置给VM 1使用的way为way0、way4、way8、way12,配置给VM 2使用的way为way1、way5、way9、way13,配置给VM 3使用的way为way2、way6、way10、way14,配置给VM 4使用的way为way3、way7、way11、way15。若第一模式为VM3,则第一模式的可用way为way2、way6、way10、way14。
通常Cache中的way可以有两种配置方式:一种是默认配置,按照默认的方式将所有或部分way配置给某个模式(网络制式或者VM)使用。采用默认配置方式配置给各个模式使用的way相同。例如,默认配置的way为way0-15、或者way0和way1,则采用默认配置的方式配置给所有模式使用的way均为way0-15,或者均为way0和way1。另一种是与默认配置相对的单独配置,单独将所有或部分way配置给某个模式使用。采用单独配置方式配置给各个模式使用的way可以相同,也可以完全不同,还可以部分相同,部分不同。在本实施例中,采用单独配置的方式配置第一模式使用的way。
步骤102:接收第一数据访问请求,第一数据访问请求包括第一模式的标识。该步骤102与步骤101没有先后顺序。
步骤103:当Cache中没有存储第一数据访问请求访问的数据块时,将第一数据访问请求访问的数据块存储在第一模式的待替换way中。
容易知道,当Cache中没有存储第一数据访问请求访问的数据块时,Cache会先将第一数据访问请求转发给其它Cache或者主存储器。在CPU在其它Cache或者主存储器中完成对第一数据访问请求访问的数据块的访问之后,Cache再将第一数据访问请求访问的数据块按照步骤103的要求存储在自身的way中。
本发明实施例通过每隔设定时间从第一模式的可用way中选择一个可用way,作为第一模式的待替换way,且第一模式的各个可用way作为第一模式的待替换way的概率均等,也就是说,第一模式的待替换way是第一模式的任意一个可用way的概率是均等的。由于当Cache中没有存储第一数据访问请求访问的数据块时,会将第一数据访问请求访问的数据块存储在第一模式的待替换way中,因此第一数据访问请求访问的数据块存储在第一模式的各个可用way的概率是均等的,即采用第一模式的各个可用way实现第一模式的数据块替换的概率均等。
实施例二
本发明实施例提供了一种Cache中数据块的替换方法,Cache的存储空间分为若干set,各set均包括若干way且各set包括的way相同,Cache的存储空间按way划分给多个模式使用,每个模式均可以使用所有set中相同的若干way。例如,Cache包括set0-7,set0-7均包括way0-15,way0-7是配置给模式1使用的,way8-15是配置给模式2的,则模式1可以使用set0-7中的way0-7,模式2可以使用set0-7中的way8-15。即若干way配置给多个模式使用,该模式为网络制式或VM,参见图5,具体实现过程如下:
步骤201:每隔设定时间从第一模式的可用way中选择一个可用way,作为第一模式的待替换way,且第一模式的各个可用way作为第一模式的待替换way的概率均等。该步骤201可以一直执行。
在本实施例中,第一模式为多个模式中的一个,可以为一个网络制式,也可以为一个VM。需要说明的是,在配置有Cache的way的多个模式中,第一模式的个数可以为一个,也可以为多个。具体地,网络制式包括GSM、CDMA、3G、LTE等。VM为在一台计算机的操作系统上通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的一个计算机系统。
第一模式的可用way为配置给第一模式使用的way。例如,Cache的所有way为way0-15。配置给网络制式1(如GSM)使用的way为way0-7,配置给网络制式2(如CDMA)使用的way为way8-15。若第一模式为网络制式2,则第一模式的可用way为way8-15。或者,配置给VM 1使用的way为way0、way4、way8、way12,配置给VM 2使用的way为way1、way5、way9、way13,配置给VM 3使用的way为way2、way6、way10、way14,配置给VM 4使用的way为way3、way7、way11、way15。若第一模式为VM3,则第一模式的可用way为way2、way6、way10、way14。
通常Cache中的way可以有两种配置方式:一种是默认配置,按照默认的方式将所有或部分way配置给某个模式(网络制式或者VM)使用。采用默认配置方式配置给各个模式使用的way相同。例如,默认配置的way为way0-15、或者way0和way1,则采用默认配置的方式配置给所有模式使用的way均为way0-15,或者均为way0和way1。另一种是与默认配置相对的单独配置,单独将所有或部分way配置给某个模式使用。采用单独配置方式配置给各个模式使用的way可以相同,也可以完全不同,还可以部分相同,部分不同。在本实施例中,采用单独配置的方式配置第一模式使用的way。
而对于配置有同一个Cache中的way使用的所有模式(网络制式或VM)来说,可以给所有模式都采用单独配置的方式配置way,也可以给部分模式采用单独配置的方式配置way,给其余模式采用默认配置的方式配置way。例如,给不大于设定个数(如16)的模式采用单独配置的方式配置way,给其余模式采用默认配置的方式配置way。具体地,采用单独配置的方式配置way的模式可以为需要拥有独立资源的模式、容易对其他模式产生干扰的模式中的至少一种。可以理解地,采用单独配置的方式比采用默认配置的方式占用的资源和开销要多,因此只给不大于设定个数的模式采用单独配置的方式配置way,与给所有模式都采用单独配置的方式配置way相比,可以减少资源的占用和开销。
在本实施例的一种实现方式中,每隔设定时间选择的第一模式的可用way可以周期性循环变化。
例如,配置给模式1的way为way0、way4、way8、way12,每隔设定时间选择的模式1的可用way依次为way0、way4、way8、way12、way0、way4、way8、way12……,以此循环。
在具体实现中,上述实现方式可以采用循环计数器实现,循环计数器的输入为某个模式的所有可用way的标号(可能为一个,也可能为多个),循环计数器的输出即为该模式的待替换way的标号。每隔设定时间,循环计数器输出一个新的标号,新的标号代替旧的标号作为该模式的待替换way的标号。
在本实施例的另一种实现方式中,每隔设定时间选择的第一模式的可用way可以随机变化。
在具体实现中,上述实现方式可以采用随机数生成器实现,随机数生成器的输入为某个模式的所有可用way的标号,随机数生成器的输出即为该模式的待替换way的标号。
可以理解地,采用上述两种实现方式中的任一种,均可以实现第一模式的各个可用way被选为待替换way的概率都是均等的。
具体地,该步骤201可以包括:
采用一个掩码替换路产生器(Masked Replace Way Generator,简称MRWG)确定第一模式的待替换way,该MRWG的输入为表示第一模式的可用way的掩码,该MRWG的输出为表示第一模式的待替换way的指示信号。
例如,模式1的可用way为way0、way4、way8、way12。将掩码0111_0111_0111_0111输入与模式1对应的MRWG,其中,掩码的各位依次表示各个way是否为模式1的可用way,0表示是,1表示不是,比如,掩码的第1位为0,表示模式1的可用way包括way0;掩码的第2位为1,表示模式1的可用way不包括way1。与模式1对应的MRWG接收到输入的掩码,依次输出0x0、0x4、0x8、0x12、0x0、0x4、0x8、0x12……,如此循环。输出的数值即为待替换way的标号。
在本实施例的一种实现方式中,该替换方法还可以包括:
当从第一模式的可用way中选择一个可用way,作为第一模式的待替换way时,从第二模式的可用way中选择一个可用way,作为第二模式的待替换way,且第二模式的各个可用way作为第二模式的待替换的way的概率均等,第二模式为多个模式中的一个,第二模式的可用way为配置给第二模式使用的way。
在上述实现方式中,第二模式与第一模式一样,也是采用单独配置的方式配置way。而两者之间的不同之处在于,第一模式为数据访问请求访问的模式(详见步骤202),而第二模式不是。需要说明的是,在配置有Cache的way的多个模式中,第二模式的个数可以为一个,也可以为多个。
同样地,从第二模式的可用way中选择一个可用way,作为第二模式的待替换way,可以包括:
采用一个MRWG确定第二模式的待替换way,该MRWG的输入为表示第二模式的可用way的掩码,该MRWG的输出为表示第二模式的待替换way的指示信号。
也就是说,Cache中会设置多个MRWG,各个MRWG与各个采用单独配置的方式配置way的模式一一对应,无论是否接收到数据访问请求,MRWG都会每隔设定时间都会确定一次对应的模式的待替换way。
具体地,MRWG i的输入为模式j的可用way的掩码mask i,MRWG i的输出为表示模式j的待替换way的指示信号way jk,0≤i≤采用单独配置的方式配置way的模式的个数(如16)且i为整数,模式j为采用单独配置的方式配置way的所有模式中的任意一个,way jk为模式j的可用way中的任意一个。如图6所示,MRWG 1的输入为模式1的可用way的掩码mask 1(0111_0111_0111_0111),MRWG 1的输出为表示模式1的待替换way的指示信号way 0;MRWG2的输入为模式2的可用way的掩码mask 2(1011_1011_1011_1011),MRWG 2的输出为表示模式2的待替换way的指示信号way 1;MRWG 3的输入为模式3的可用way的掩码mask 3(1101_1101_1101_1101),MRWG 3的输出为表示模式3的待替换way的指示信号way 2;MRWG 4的输入为模式4的可用way的掩码mask 4(1110_1110_1110_1110),MRWG 4的输出为表示模式4的待替换way的指示信号way 3。需要说明的是,图6仅为示例,本发明并不限制于此。
在具体应用中,MRWG可以为循环计数器,也可以为随机数生成器。容易知道,各个可用way选择为待替换way的概率是相同的。
在实际应用中,给各个模式配置way之后,会建立或更新一张配置表,配置表中列出了各个模式与给各个模式配置的所有way(即各个模式的可用way)之间的对应关系。直接查询该配置表,即可获取各个模式的可用way,进而产生表示各个模式的可用way的掩码,并将其输入各自对应的MRWG。
步骤202:接收第一数据访问请求,第一数据访问请求包括第一模式的标识。该步骤202与步骤201的执行没有先后顺序。
如前应用场景部分所述,第一数据访问请求中的address部分包括tag、index和offset三个字段。如前所述,index字段用于索引到某个set;tag字段用于与Cache中的各个way的tag字段进行比较,以确定各个way存储的数据块是否为访问的数据块;offset为访问的数据在数据块内的地址。
步骤203:根据第一数据访问请求,判断Cache中是否存储有第一数据访问请求访问的数据块。当Cache中存储有第一数据访问请求访问的数据块时,执行步骤2041;当Cache中没有存储第一数据访问请求访问的数据块时,执行步骤2042-2043。
具体地,该步骤203可以包括:
根据第一数据访问请求的address部分中的index字段,确定第一数据访问请求访问的数据块所在的set;
将第一数据访问请求的address部分中的tag字段与确定的set中各个way的tag字段进行比较;
若第一数据访问请求的address部分中的tag字段与确定的set中某个way的tag字段相同,判定Cache中存储有第一数据访问请求访问的数据块;
若第一数据访问请求的address部分中的tag字段与确定的set中所有way的tag字段均不同,判定Cache中没有存储第一数据访问请求访问的数据块。
步骤2041:在Cache中对第一数据访问请求访问的数据块进行读操作或写操作。
具体地,该步骤2041可以包括:
当第一数据访问请求为读数据时,将Cache中存储的第一数据访问请求访问的数据块发送给CPU;
当第一数据访问请求为写数据时,用第一数据访问请求中的数据更新Cache中存储的第一数据访问请求访问的数据块。
步骤2042:将第一数据访问请求转发给其它存储器。
具体地,将第一数据访问请求发送给下一级存储器。当CPU与主存储器之间只设置了一个Cache时,下一级存储器为主存储器。当CPU与主存储器之间设置有多层Cache时,下一级存储器为与该Cache相邻且与主存储器的距离比该Cache近的一个存储器(Cache或主存储器)。
容易知道,当Cache中没有存储第一数据访问请求访问的数据块时,Cache会先将第一数据访问请求转发给其它Cache或者主存储器。在CPU在其它Cache或者主存储器中完成对第一数据访问请求访问的数据块的访问(即在其它Cache或者主存储器中对第一数据访问请求访问的数据块进行读操作或写操作)之后,Cache再将第一数据访问请求访问的数据块存储在自身的way中(详见步骤2043)。
步骤2043:将第一数据访问请求访问的数据块存储在Cache中。
在本实施例的一种实现方式中,当第一数据访问请求访问的数据块所在的set中,配置给第一模式的所有way中存在没有存储数据块的空way时,该步骤2043可以包括:
将第一数据访问请求访问的数据块存储在第一模式的任意一个空way中。
在本实施例的另一种实现方式中,当第一数据访问请求访问的数据块所在的set中,配置给第一模式的所有way中均存储有数据块时,该步骤2043可以包括:
根据第一模式的标识,从各个模式的待替换way中,选择第一模式的待替换way;
将第一数据访问请求访问的数据块存储在第一模式的待替换way中。
如前步骤201部分所述,Cache中不止一个待替换way,至少包括第一模式的待替换way和第二模式的待替换way。当接收到第一数据访问请求时,需要先根据第一数据访问请求包括的第一模式的标识,从所有待替换way中,选出第一模式的待替换way,然后才能将第一数据访问请求访问的数据块存储在第一模式的待替换way中。
例如,配置给模式1的way为way0-7,配置给模式2的way为way8-15,模式1的待替换way为way0,模式2的待替换way为way15,第一模式为模式2,先从way0和way15中选出way15,然后再将第一数据访问请求访问的数据块存储在way15中。
如前步骤201部分所述,第一模式和第二模式均设有一一对应的MRWG确定其待替换way,因此,根据第一模式的标识,选择第一模式的待替换way,可以包括:
根据第一模式的标识与MRWG的标识的对应关系,选择与第一模式对应的MRWG;
将选择的MRWG的输出表示的way作为第一模式的待替换way;
将第一数据访问请求访问的数据块存储在第一模式的待替换way中。
容易知道,第一模式与其标识(即第一模式的标识)、MRWG与标识(MRWG的标识)均是一一对应的,由于MRWG与各个模式一一对应设置,因此第一模式的标识与MRWG的标识之间存在对应关系,直接根据这个对应关系和第一数据访问请求中的第一模式的标识,就可以确定MRWG的标识,选择与第一模式对应的MRWG。
在具体实现中,待替换way的选择可以采用数据选择器(MUX)实现。具体地,各个MRWG输出的待替换way的标识输入MUX,MUX根据MRWG的标识(如一个数字number),从输入的所有待替换way中,选择MRWG的标识对应的待替换way。如图6所示,number为1,对应1的MRWG输出的标号为0,因此选择的待替换way为way 0。至于如何确定MRWG的标识,可以采用如下方式实现:
在一种实现方式中,可以建立一种对照表,表中将各个模式的标识与各个模式一一对应设置的MRWG的标识对应(即建立第一模式的标识与MRWG的标识的对应关系),当获取到第一数据访问请求包括的第一模式的标识时,直接按照第一模式的标识,找到对应的MRWG的标识发送给MUX。然后MUX再根据MRWG的标识,将该标识对应的MRWG输出的way作为第一模式的待替换way。
可以理解地,上述实现方式不需要限定各个模式的标识与MRWG的标识完全相同的,例如模式1对应的MRWG可以为MRWG 2,模式2对应的MRWG可以为MRWG 1。可以理解地,在需要执行步骤201时,各个模式的标识与对应的MRWG的标识基本上不可能完全相同,此时采用上述适用性好的实现方式较好。
在另一种实现方式中,也可以直接将各个模式对应的MRWG的标识设置为其自身的标识相同,例如模式1对应的MRWG为MRWG 1,模式2对应的MRWG为MRWG 2。在该种实现方式中,可以直接将第一数据访问请求包括的第一模式的标识发送给MUX,MUX根据第一模式的标识(此种实现方式中等于MRWG的标识),将该MRWG输出的way作为第一模式的待替换way。
可以理解地,上述方式实现更为简单。
在实际应用中,具体实现过程中还可以包括以下步骤:
接收第二数据访问请求,第二数据访问请求包括第三模式的标识,第三模式为多个模式中的一个;
当Cache中没有存储第二数据访问请求访问的数据块时,采用预设的规则,从设定的way中选择一个way,作为第三模式的待替换way;
将第二数据访问请求访问的数据块存储在第三模式的待替换way中。
在上述实现方式中,第三模式与第一模式和第二模式的不同之处在于,第三模式采用默认配置的方式配置way。容易知道,设定的way属于配置给第三模式使用的way。需要说明的是,在配置有Cache的way的多个模式中,第三模式的个数可以为一个,也可以为多个。
在具体实现中,设定的way可以为Cache中的所有way,也可以为Cache中部分way,如Cache包括way0-15,将所有way(way0-15)、开始的两个way(way0和way1)、或者最后的两个way(way14和way15)。
预设的规则可以为:当设定的way中存在空way时,从空way中任选一个way;当设定的way中不存在空way时,从设定的way中任选一个way。
本发明实施例通过每隔设定时间从第一模式的可用way中选择一个可用way,作为第一模式的待替换way,且第一模式的各个可用way作为第一模式的待替换way的概率均等,也就是说,第一模式的待替换way是第一模式的任意一个可用way的概率是均等的。由于当Cache中没有存储第一数据访问请求访问的数据块时,会将第一数据访问请求访问的数据块存储在第一模式的待替换way中,因此第一数据访问请求访问的数据块存储在第一模式的各个可用way的概率是均等的,即采用第一模式的各个可用way实现第一模式的数据块替换的概率均等。
实施例三
参见图7,本发明实施例提供了一种Cache中数据块的替换装置,Cache包括若干way,若干way配置给多个模式使用,该模式为网络制式或VM,该替换装置包括:
第一确定模块301,用于每隔设定时间从第一模式的可用way中选择一个可用way,作为第一模式的待替换way,且第一模式的各个可用way作为第一模式的待替换的way的概率均等,第一模式为多个模式中的一个,第一模式的可用way为配置给第一模式使用的way;
第一接收模块302,用于接收第一数据访问请求,第一数据访问请求包括第一模式的标识;
第一存储模块303,用于当Cache中没有存储第一数据访问请求访问的数据块时,将第一数据访问请求访问的数据块存储在第一模式的待替换way中。
在本实施例中,第一模式为多个模式中的一个,可以为一个网络制式,也可以为一个VM。具体地,网络制式包括GSM、CDMA、3G、LTE等。VM为在一台计算机的操作系统上通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的一个计算机系统。
第一模式的可用way为配置给第一模式使用的way。例如,Cache的所有way为way0-15。配置给网络制式1(如GSM)使用的way为way0-7,配置给网络制式2(如CDMA)使用的way为way8-15。若第一模式为网络制式2,则第一模式的可用way为way8-15。或者,配置给VM 1使用的way为way0、way4、way8、way12,配置给VM 2使用的way为way1、way5、way9、way13,配置给VM 3使用的way为way2、way6、way10、way14,配置给VM 4使用的way为way3、way7、way11、way15。若第一模式为VM3,则第一模式的可用way为way2、way6、way10、way14。
通常Cache中的way可以有两种配置方式:一种是默认配置,按照默认的方式将所有或部分way配置给某个模式(网络制式或者VM)使用。采用默认配置方式配置给各个模式使用的way相同。例如,默认配置的way为way0-15、或者way0和way1,则采用默认配置的方式配置给所有模式使用的way均为way0-15,或者均为way0和way1。另一种是与默认配置相对的单独配置,单独将所有或部分way配置给某个模式使用。采用单独配置方式配置给各个模式使用的way可以相同,也可以完全不同,还可以部分相同,部分不同。在本实施例中,采用单独配置的方式配置第一模式使用的way。
容易知道,当Cache中没有存储第一数据访问请求访问的数据块时,Cache会先将第一数据访问请求转发给其它Cache或者主存储器。在CPU在其它Cache或者主存储器中完成对第一数据访问请求访问的数据块的访问之后,Cache再通过第一存储模块303将第一数据访问请求访问的数据块存储在自身的way中。
本发明实施例通过每隔设定时间从第一模式的可用way中选择一个可用way,作为第一模式的待替换way,且第一模式的各个可用way作为第一模式的待替换way的概率均等,也就是说,第一模式的待替换way是第一模式的任意一个可用way的概率是均等的。由于当Cache中没有存储第一数据访问请求访问的数据块时,会将第一数据访问请求访问的数据块存储在第一模式的待替换way中,因此第一数据访问请求访问的数据块存储在第一模式的各个可用way的概率是均等的,即采用第一模式的各个可用way实现第一模式的数据块替换的概率均等。
实施例四
参见图8,本发明实施例提供了一种Cache中数据块的替换装置,Cache包括若干way,若干way配置给多个模式使用,该模式为网络制式或VM,该替换装置包括:
第一确定模块401,用于每隔设定时间从第一模式的可用way中选择一个可用way,作为第一模式的待替换way,且第一模式的各个可用way作为第一模式的待替换的way的概率均等,第一模式为多个模式中的一个,第一模式的可用way为配置给第一模式使用的way;
第一接收模块402,用于接收第一数据访问请求,第一数据访问请求包括第一模式的标识;
第一存储模块403,用于当Cache中没有存储第一数据访问请求访问的数据块时,将第一数据访问请求访问的数据块存储在第一模式的待替换way中。
在本实施例中,第一模式为多个模式中的一个,可以为一个网络制式,也可以为一个VM。具体地,网络制式包括GSM、CDMA、3G、LTE等。VM为在一台计算机的操作系统上通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的一个计算机系统。
第一模式的可用way为配置给第一模式使用的way。例如,Cache的所有way为way0-15。配置给网络制式1(如GSM)使用的way为way0-7,配置给网络制式2(如CDMA)使用的way为way8-15。若第一模式为网络制式2,则第一模式的可用way为way8-15。或者,配置给VM 1使用的way为way0、way4、way8、way12,配置给VM 2使用的way为way1、way5、way9、way13,配置给VM 3使用的way为way2、way6、way10、way14,配置给VM 4使用的way为way3、way7、way11、way15。若第一模式为VM3,则第一模式的可用way为way2、way6、way10、way14。
通常Cache中的way可以有两种配置方式:一种是默认配置,按照默认的方式将所有或部分way配置给某个模式(网络制式或者VM)使用。采用默认配置方式配置给各个模式使用的way相同。例如,默认配置的way为way0-15、或者way0和way1,则采用默认配置的方式配置给所有模式使用的way均为way0-15,或者均为way0和way1。另一种是与默认配置相对的单独配置,单独将所有或部分way配置给某个模式使用。采用单独配置方式配置给各个模式使用的way可以相同,也可以完全不同,还可以部分相同,部分不同。在本实施例中,采用单独配置的方式配置第一模式使用的way。
容易知道,当Cache中没有存储第一数据访问请求访问的数据块时,Cache会先将第一数据访问请求转发给其它Cache或者主存储器。在CPU在其它Cache或者主存储器中完成对第一数据访问请求访问的数据块的访问之后,Cache再通过第一存储模块403将第一数据访问请求访问的数据块存储在自身的way中。
在本实施例的一种实现方式中,每隔设定时间选择的可用way中可以周期性循环变化。
在本实施例的另一种实现方式中,每隔设定时间选择的可用way中可以随机变化。
可以理解地,采用上述两种实现方式中的任一种,对于多个模式中每个模式来说,均可以实现各个可用way成为待替换way的概率都是均等的。
在本实施例的又一种实现方式中,第一确定模块401可以用于,
采用一个MRWG确定第一模式的待替换way,该MRWG的输入为表示第一模式的可用way的掩码,该MRWG的输出为表示第一模式的待替换way的指示信号。
在具体实现中,MRWG可以采用循环计数器或随机数生成器实现。
可选地,第一存储模块403可以用于,
选择单元,用于根据第一模式的标识与MRWG的标识的对应关系,选择与第一模式对应的MRWG;
确定单元,用于将选择的MRWG的输出表示的way作为第一模式的待替换way;
存储单元,用于将第一数据访问请求访问的数据块存储在第一模式的待替换way中。
在具体实现中,选择单元可以采用MUX实现。
在本实施例的又一种实现方式中,该替换装置还可以包括:
第二确定模块404,用于当从第一模式的可用way中选择一个可用way,作为第一模式的待替换way时,从第二模式的可用way中选择一个可用way,作为第二模式的待替换way,且第二模式的各个可用way作为第二模式的待替换的way的概率均等,第二模式为多个模式中的一个,第二模式的可用way为配置给第二模式使用的way。
可选地,第二确定模块404可以用于,
采用一个MRWG确定第二模式的待替换way,该MRWG的输入为表示第二模式的可用way的掩码,该MRWG的输出为表示第二模式的待替换way的指示信号。
也就是说,Cache中会设置多个MRWG,各个MRWG与各个采用单独配置的方式配置way的模式一一对应,无论是否接收到数据访问请求,MRWG都会每隔设定时间都会确定一次对应的模式的待替换way。
在本实施例的又一种实现方式中,该替换装置还可以包括:
第二接收模块,用于接收第二数据访问请求,第二数据访问请求包括第三模式的标识,第三模式为多个模式中的一个;
选择模块,用于当Cache中没有存储第二数据访问请求访问的数据块时,采用预设的规则,从设定的way中选择一个way,作为第三模式的待替换way;
第二存储模块,用于将第二数据访问请求访问的数据块存储在第三模式的待替换way中。
本发明实施例通过每隔设定时间从第一模式的可用way中选择一个可用way,作为第一模式的待替换way,且第一模式的各个可用way作为第一模式的待替换way的概率均等,也就是说,第一模式的待替换way是第一模式的任意一个可用way的概率是均等的。由于当Cache中没有存储第一数据访问请求访问的数据块时,会将第一数据访问请求访问的数据块存储在第一模式的待替换way中,因此第一数据访问请求访问的数据块存储在第一模式的各个可用way的概率是均等的,即采用第一模式的各个可用way实现第一模式的数据块替换的概率均等。
需要说明的是:上述实施例提供的Cache中数据块的替换装置在替换Cache中数据块时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的Cache中数据块的替换装置与Cache中数据块的替换方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (12)

1.一种高速缓冲存储器Cache中数据块的替换方法,所述Cache包括若干路way,所述若干way配置给多个模式使用,所述模式为网络制式或虚拟机VM,其特征在于,所述替换方法包括:
每隔设定时间从第一模式的可用way中选择一个可用way,作为所述第一模式的待替换way,且所述第一模式的各个可用way作为所述第一模式的待替换的way的概率均等,所述第一模式为所述多个模式中的一个,所述第一模式的可用way为配置给所述第一模式使用的way;
接收第一数据访问请求,所述第一数据访问请求包括所述第一模式的标识;
当所述Cache中没有存储所述第一数据访问请求访问的数据块时,将所述第一数据访问请求访问的数据块存储在所述第一模式的待替换way中。
2.根据权利要求1所述的替换方法,其特征在于,每隔设定时间选择的可用way周期性循环变化或随机变化。
3.根据权利要求1或2所述的替换方法,其特征在于,所述每隔设定时间从第一模式的可用way中选择一个可用way,作为所述第一模式的待替换way,包括:
采用一个掩码替换路产生器MRWG确定所述第一模式的待替换way,所述MRWG的输入为表示所述第一模式的可用way的掩码,所述MRWG的输出为表示所述第一模式的待替换way的指示信号。
4.根据权利要求3所述的替换方法,其特征在于,所述当所述Cache中没有存储所述第一数据访问请求访问的数据块时,将所述第一数据访问请求访问的数据块存储在所述第一模式的待替换way中,包括:
根据第一模式的标识与MRWG的标识的对应关系,选择与所述第一模式对应的MRWG;
将选择的MRWG的输出表示的way作为所述第一模式的待替换way;
将所述第一数据访问请求访问的数据块存储在所述第一模式的待替换way中。
5.根据权利要求1或2所述的替换方法,其特征在于,所述替换方法还包括:
当所述从第一模式的可用way中选择一个可用way,作为所述第一模式的待替换way时,从第二模式的可用way中选择一个可用way,作为所述第二模式的待替换way,且所述第二模式的各个可用way作为所述第二模式的待替换的way的概率均等,所述第二模式为所述多个模式中的一个,所述第二模式的可用way为配置给所述第二模式使用的way。
6.根据权利要求1或2所述的替换方法,其特征在于,所述替换方法还包括:
接收第二数据访问请求,所述第二数据访问请求包括第三模式的标识,所述第三模式为所述多个模式中的一个;
当所述Cache中没有存储所述第二数据访问请求访问的数据块时,采用预设的规则,从设定的way中选择一个way,作为所述第三模式的待替换way;
将所述第二数据访问请求访问的数据块存储在所述第三模式的待替换way中。
7.一种高速缓冲存储器Cache中数据块的替换装置,所述Cache包括若干路way,所述若干way配置给多个模式使用,所述模式为网络制式或虚拟机VM,其特征在于,所述替换装置包括:
第一确定模块,用于每隔设定时间从第一模式的可用way中选择一个可用way,作为所述第一模式的待替换way,且所述第一模式的各个可用way作为所述第一模式的待替换的way的概率均等,所述第一模式为所述多个模式中的一个,所述第一模式的可用way为配置给所述第一模式使用的way;
第一接收模块,用于接收第一数据访问请求,所述第一数据访问请求包括所述第一模式的标识;
第一存储模块,用于当所述Cache中没有存储所述第一数据访问请求访问的数据块时,将所述第一数据访问请求访问的数据块存储在所述第一模式的待替换way中。
8.根据权利要求7所述的替换装置,其特征在于,每隔设定时间选择的可用way周期性循环变化或随机变化。
9.根据权利要求7或8所述的替换装置,其特征在于,所述第一确定模块用于,
采用一个掩码替换路产生器MRWG确定所述第一模式的待替换way,所述MRWG的输入为表示所述第一模式的可用way的掩码,所述MRWG的输出为表示所述第一模式的待替换way的指示信号。
10.根据权利要求9所述的替换装置,其特征在于,所述第一存储模块用于,
选择单元,用于根据第一模式的标识与MRWG的标识的对应关系,选择与所述第一模式对应的MRWG;
确定单元,用于将选择的MRWG的输出表示的way作为所述第一模式的待替换way;
存储单元,用于将所述第一数据访问请求访问的数据块存储在所述第一模式的待替换way中。
11.根据权利要求7或8所述的替换装置,其特征在于,所述替换装置还包括:
第二确定模块,用于当所述从第一模式的可用way中选择一个可用way,作为所述第一模式的待替换way时,从第二模式的可用way中选择一个可用way,作为所述第二模式的待替换way,且所述第二模式的各个可用way作为所述第二模式的待替换的way的概率均等,所述第二模式为所述多个模式中的一个,所述第二模式的可用way为配置给所述第二模式使用的way。
12.根据权利要求7或8所述的替换装置,其特征在于,所述替换装置还包括:
第二接收模块,用于接收第二数据访问请求,所述第二数据访问请求包括第三模式的标识,所述第三模式为所述多个模式中的一个;
选择模块,用于当所述Cache中没有存储所述第二数据访问请求访问的数据块时,采用预设的规则,从设定的way中选择一个way,作为所述第三模式的待替换way;
第二存储模块,用于将所述第二数据访问请求访问的数据块存储在所述第三模式的待替换way中。
CN201510299437.4A 2015-06-03 2015-06-03 一种高速缓冲存储器中数据块的替换方法和装置 Active CN104932990B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201510299437.4A CN104932990B (zh) 2015-06-03 2015-06-03 一种高速缓冲存储器中数据块的替换方法和装置
PCT/CN2016/084580 WO2016192658A1 (zh) 2015-06-03 2016-06-02 一种高速缓冲存储器中数据块的替换方法和装置
US15/828,712 US20180089106A1 (en) 2015-06-03 2017-12-01 Method and apparatus for replacing data block in cache

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510299437.4A CN104932990B (zh) 2015-06-03 2015-06-03 一种高速缓冲存储器中数据块的替换方法和装置

Publications (2)

Publication Number Publication Date
CN104932990A CN104932990A (zh) 2015-09-23
CN104932990B true CN104932990B (zh) 2018-05-11

Family

ID=54120161

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510299437.4A Active CN104932990B (zh) 2015-06-03 2015-06-03 一种高速缓冲存储器中数据块的替换方法和装置

Country Status (3)

Country Link
US (1) US20180089106A1 (zh)
CN (1) CN104932990B (zh)
WO (1) WO2016192658A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104932990B (zh) * 2015-06-03 2018-05-11 华为技术有限公司 一种高速缓冲存储器中数据块的替换方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1490730A (zh) * 2002-10-16 2004-04-21 国际商业机器公司 非均匀存储器访问计算机系统的可重构高速缓存控制器
CN1552025A (zh) * 2002-03-22 2004-12-01 英特尔公司 高速缓存中上下文标识符的使用
CN101470670A (zh) * 2007-12-28 2009-07-01 富士通株式会社 具有扇区功能的高速缓冲存储器
CN102521161A (zh) * 2011-11-21 2012-06-27 华为技术有限公司 一种数据的缓存方法、装置和服务器

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7549023B2 (en) * 2003-04-21 2009-06-16 Intel Corporation Method and apparatus to update a cache for security records
CN100552025C (zh) * 2007-10-19 2009-10-21 浙江工商大学 一种减缓黑芥子酶失活的方法
US8549208B2 (en) * 2008-12-08 2013-10-01 Teleputers, Llc Cache memory having enhanced performance and security features
US9348766B2 (en) * 2011-12-21 2016-05-24 Intel Corporation Balanced P-LRU tree for a “multiple of 3” number of ways cache
CN102541761B (zh) * 2012-01-17 2014-10-22 苏州国芯科技有限公司 应用于嵌入式芯片的只读高速缓冲存储器
CN104932990B (zh) * 2015-06-03 2018-05-11 华为技术有限公司 一种高速缓冲存储器中数据块的替换方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1552025A (zh) * 2002-03-22 2004-12-01 英特尔公司 高速缓存中上下文标识符的使用
CN1490730A (zh) * 2002-10-16 2004-04-21 国际商业机器公司 非均匀存储器访问计算机系统的可重构高速缓存控制器
CN101470670A (zh) * 2007-12-28 2009-07-01 富士通株式会社 具有扇区功能的高速缓冲存储器
CN102521161A (zh) * 2011-11-21 2012-06-27 华为技术有限公司 一种数据的缓存方法、装置和服务器

Also Published As

Publication number Publication date
WO2016192658A1 (zh) 2016-12-08
CN104932990A (zh) 2015-09-23
US20180089106A1 (en) 2018-03-29

Similar Documents

Publication Publication Date Title
CN105283855B (zh) 一种寻址方法及装置
CN105183662B (zh) 一种无cache一致性协议的分布式共享片上存储架构
US10740247B2 (en) Method for accessing entry in translation lookaside buffer TLB and processing chip
US10585726B2 (en) Parameter-sharing apparatus and method
CN104346285A (zh) 内存访问处理方法、装置及系统
KR102594657B1 (ko) 비순차적 리소스 할당을 구현하는 방법 및 장치
US20160246730A1 (en) Efficient Memory Management System for Computers Supporting Virtual Machines
EP2645259A1 (en) Method, device and system for caching data in multi-node system
US8868835B2 (en) Cache control apparatus, and cache control method
CN103777925A (zh) 多线程处理单元中的高效存储器虚拟化
CN103365631A (zh) 用于存储器访问的动态库模式寻址
CN115422098B (zh) 基于扩展页表的gpu访存自适应优化方法及装置
CN110187832B (zh) 一种数据操作的方法、设备和系统
CN112799977B (zh) 计算机的缓存分区和缓存访问实时性保护方法及装置
CN104834505A (zh) 一种多核多线程环境下numa感知的同步方法
CN104216684B (zh) 一种多核并行系统及其数据处理方法
US20170364442A1 (en) Method for accessing data visitor directory in multi-core system and device
CN104516826B (zh) 一种虚拟大页面与物理大页面的对应方法及装置
US9959212B2 (en) Memory system
CN104932990B (zh) 一种高速缓冲存储器中数据块的替换方法和装置
US11256630B2 (en) Cache address mapping method and related device
CN101546271B (zh) 动态二进制翻译系统中超级块的寄存器分配方法
US8762647B2 (en) Multicore processor system and multicore processor
JP4363081B2 (ja) メモリアクセス制御装置およびこれを有する演算システム
US10606822B2 (en) Dynamically updating metadata

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