CN104809076A - Cache的管理方法及装置 - Google Patents

Cache的管理方法及装置 Download PDF

Info

Publication number
CN104809076A
CN104809076A CN201410032035.3A CN201410032035A CN104809076A CN 104809076 A CN104809076 A CN 104809076A CN 201410032035 A CN201410032035 A CN 201410032035A CN 104809076 A CN104809076 A CN 104809076A
Authority
CN
China
Prior art keywords
cache
data
visited
subelement
access
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.)
Granted
Application number
CN201410032035.3A
Other languages
English (en)
Other versions
CN104809076B (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
Institute of Computing Technology of CAS
Original Assignee
Huawei Technologies Co Ltd
Institute of Computing Technology of CAS
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, Institute of Computing Technology of CAS filed Critical Huawei Technologies Co Ltd
Priority to CN201410032035.3A priority Critical patent/CN104809076B/zh
Priority to PCT/CN2015/071344 priority patent/WO2015110046A1/zh
Priority to EP15740109.2A priority patent/EP3089039B1/en
Publication of CN104809076A publication Critical patent/CN104809076A/zh
Priority to US15/218,826 priority patent/US20160335177A1/en
Application granted granted Critical
Publication of CN104809076B publication Critical patent/CN104809076B/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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3452Performance evaluation by statistical analysis
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0886Variable-length word access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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/1041Resource optimization
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency 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/28Using a specific disk cache architecture
    • G06F2212/281Single cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/282Partitioned cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/603Details of cache memory of operating mode, e.g. cache mode or local memory mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Computer Hardware Design (AREA)
  • Probability & Statistics with Applications (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种Cache的管理方法及装置,涉及通信领域,用于解决如何提高cache资源利用率的问题。本发明提供的方法包括:接收访问请求,确定所述访问请求需要访问的待访问数据;判断所述待访问数据的空间局部性的强弱等级;根据所述待访问数据的空间局部性的强弱等级,为待访问数据分配与所述等级对应的cache子单元。本发明适用于通信领域,用于实现Cache的管理。

Description

Cache的管理方法及装置
技术领域
本发明涉及通信领域,尤其涉及一种Cache(高速缓冲存储器)的管理方法及装置。
背景技术
在计算机技术发展过程中,主存储器存取速度一直比CPU(处理器)处理速度慢得多,使的CPU的高速处理能力不能充分发挥,整个计算机系统的工作效率受到影响。为了缓和CPU和主存储器之间速度不匹配的矛盾,一种较常用的方法是在存储层次上采用cache(高速缓存器)进行缓存。例如,可以将cache可以集成在CPU中,以便于CPU较快的获取数据。图1提供了一种N路(way)组相联的Cache的结构示意图。如图1所示,cache中所有的cache行(Cacheline)的大小都是相同的,每个cache行包括tag域和data域,所述tag域用于标识cache行,所述data域用于存储待缓存数据。具体的,cache行具体的大小一般由经验值决定,主要跟CPU的性能有关;CPU的性能越高,cache行越大。cache行的大小决定了相同容量下cache行的行数,同时也决定了数据从内存读到cache、以及数据在不同层次cache间传输的功耗。一般的,cache行的规格大于单个访问请求所访问数据的规格。
目前,cache的缓存机制是:接收一个访问请求,为该访问请求分配一个cache行;根据所述访问请求的地址(该地址对应的数据即为待访问数据),基于空间局部性原理,从内存中读取待访问数据、以及所述待访问数据相邻地址的数据,将其一并写入为该访问请求分配的cache行中。如果接下来的访问请求需要访问的数据已经缓存在该cache行中,则直接从该cache行读取;如果接下来的访问请求需要访问的数据没有缓存到该cache行中,则按照上述缓存机制为接下来的访问请求分配cache行并从内存中读取数据。
在采用上述方法进行缓存时,存在如下问题:当待访问数据的空间局部性较强时,cache行无法缓存足够多的相邻地址数据,导致在接收到后续访问请求时仍然需要重新分配cache行并从内存中读取数据,一方面会影响数据读取速度,另一方面,在cache行有限的情况下,会使得cache行中的数据被频繁替换,影响cache行的寿命;当待访问数据的空间局部性较差时,缓存到cache行中的数据很可能不会被后续访问请求所访问,造成cache行资源的浪费,同时会浪费内存和cache之间的内存带宽。
发明内容
本发明的实施例提供一种Cache的管理方法及装置,能够解决如何提高cache资源利用率的问题。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明实施例提供了一种cache(高速缓存器)的管理方法,所述cache中设置多个cache子单元,每个所述cache子单元包括多个cache行;其中,每个cache子单元中所包括的cache行长度与其他cache子单元所包括的cache行长度互不相同;每个所述的cache子单元用于存储对应等级的数据,所述等级为数据的空间局部性强弱等级,其中,所述cache子单元与所述等级的对应关系为:所述cache子单元中包括的cache行长度与数据的空间局部性强度正相关;所述方法包括:
接收访问请求,确定所述访问请求需要访问的待访问数据;
判断所述待访问数据的空间局部性的强弱等级;
根据所述待访问数据的空间局部性的强弱等级,为待访问数据分配与所述等级对应的cache子单元。
结合第一方面,在第一种可能的实现方式中,所述判断所述待访问数据的空间局部性的强弱等级,包括:
记录各访问请求需要访问的待访问数据的地址,统计所述待访问数据的地址的访问规律,所述访问规律包括所述地址的相邻地址数据被其他访问请求所访问的次数或概率;
按照所述待访问数据的地址的相邻地址数据被其他访问请求所访问的次数或概率,对所述待访问数据的空间局部性进行等级划分。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述方法还包括:
在预设时间段内,统计待访问数据的空间局部性的强弱等级,计算第一比值,所述第一比值用于表征不同等级空间局部性的待访问数据之间的比例关系;
计算第二比值,所述第二比值用于表征所述cache中包括不同cache行长度的cache子单元之间的比例关系;
当所述第一比值和第二比值的差距大于预设阈值时,对所述cache子单元中的cache行数量进行调整,直至调整后的第二比值和所述第一比值之间的差距在所述预设阈值范围内。
结合第一方面、或第一方面的第一种可能的实现方式、或第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述接收访问请求,确定所述访问请求需要访问的待访问数据之后,还包括:
根据所述待访问数据的空间局部性的强弱等级,确定待缓存数据的大小;
根据所述待缓存数据的大小,对cache子单元中的cache行长度进行调整,将调整后的cache行分配给所述待缓存数据;所述调整后的cache行长度与所述待缓存数据的大小相匹配;
基于cache子单元中cache行长度的变化,建立并维护索引位图,所述索引位图用于指示cache行中的tag域和data域。
结合第一方面,在第四种可能的实现方式中,所述cache中设置多个cache子单元,包括:
在所述cache中按路way、和/或组set进行划分,确定所述多个cache子单元,设定每个cache子单元的cache行长度。
结合第一方面的第三种可能的实现方式,在第五种可能的实现方式中,所述访问请求中包括物理地址,所述物理地址用于标识所述待访问数据,所述物理地址中包括所述待访问数据的tag域和set域;
所述方法还包括:
将所述访问请求发送给每个所述cache子单元;
确定所述待访问数据的set域在每个所述cache子单元中对应的一个或多个cache行,将所述一个或多个cache行的tag域与所述待访问数据的tag域进行比较,将所述一个或多个cache行中与所述待访问数据的tag域相同的cache行确定为存储有所述待访问数据cache行。
结合第一方面的第三种可能的实现方式,在第六种可能的实现方式中,所述访问请求中包括物理地址,所述物理地址用于标识所述待访问数据,所述物理地址中包括所述待访问数据的tag域和set域;
所述方法还包括:
为每个cache子单元维护一个列表,所述列表用于记录每个cache子单元中所存储数据的特征值;
当接收到访问请求时,确定所述访问请求需要访问的待访问数据的特征值;
将记录有所述待访问数据的特征值的列表对应的cache子单元确定为目标cache子单元;
将所述访问请求发送给所述目标cache子单元,确定所述待访问数据的set域在所述目标cache子单元中对应的一个或多个cache行,将所述一个或多个cache行的tag域与所述待访问数据的tag域进行比较,将所述一个或多个cache行中与所述待访问数据的tag域相同的cache行确定为存储有所述待访问数据cache行。
第二方面,本发明实施还提供了一种高速缓存器cache的管理装置,所述装置用于管理设置有多个cache子单元的高速缓存器,所述高速缓存器cache中每个所述cache子单元包括多个cache行;其中,每个cache子单元中所包括的cache行长度与其他cache子单元所包括的cache行长度互不相同;每个所述的cache子单元用于存储对应等级的数据,所述等级为数据的空间局部性强弱等级,其中,所述cache子单元与所述等级的对应关系为:所述cache子单元中包括的cache行长度与数据的空间局部性强度正相关;
所述装置包括:
接收单元,用于接收访问请求;
第一确定单元,用于确定所述访问请求需要访问的待访问数据;
判断单元,用于判断所述待访问数据的空间局部性的强弱等级;
分配单元,用于根据所述待访问数据的空间局部性的强弱等级,为待访问数据分配与所述等级对应的cache子单元。
结合第二方面,在第一种可能的实现方式中,所述判断单元包括:
统计模块,用于记录各访问请求需要访问的待访问数据的地址,统计所述待访问数据的地址的访问规律,所述访问规律包括所述地址的相邻地址数据被其他访问请求所访问的次数或概率;
划分模块,用于按照所述待访问数据的地址的相邻地址数据被其他访问请求所访问的次数或概率,对所述待访问数据的空间局部性进行等级划分。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述装置还包括:
计算单元,用于在预设时间段内,统计待访问数据的空间局部性的强弱等级,计算第一比值,所述第一比值用于表征不同等级空间局部性的待访问数据之间的比例关系;
所述计算单元,还用于计算第二比值,所述第二比值用于表征所述cache中包括不同cache行长度的cache子单元之间的比例关系;
第一调整单元,用于当所述计算单元计算得到的所述第一比值和第二比值的差距大于预设阈值时,对所述cache子单元中的cache行数量进行调整,直至调整后的第二比值和所述第一比值之间的差距在所述预设阈值范围内。
结合第二方面、或第二方面的第一种可能的实现方式、或第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述装置还包括:
第二确定单元,用于根据所述判断单元得到的所述待访问数据的空间局部性的强弱等级,确定待缓存数据的大小;
第二调整单元,用于根据所述第二确定单元确定的所述待缓存数据的大小,对cache子单元中的cache行长度进行调整,将调整后的cache行分配给所述待缓存数据;所述调整后的cache行长度与所述待缓存数据的大小相匹配;
索引位图处理单元,用于基于cache子单元中cache行长度的变化,建立并维护索引位图,所述索引位图用于指示cache行中的tag域和data域。
结合第二方面,在第四种可能的实现方式中,所述装置还包括:
划分单元,用于在所述cache中按路way、和/或组set进行划分,确定所述多个cache子单元,设定每个cache子单元的cache行长度。
结合第二方面的第三种可能的实现方式,在第五种可能的实现方式中,所述接收单元接收的所述访问请求中包括物理地址,所述物理地址用于标识所述待访问数据,所述物理地址中包括所述待访问数据的tag域和set域;
所述装置还包括:
发送单元,用于将所述访问请求发送给每个所述cache子单元;
第一查找单元,用于确定所述待访问数据的set域在每个所述cache子单元中对应的一个或多个cache行,将所述一个或多个cache行的tag域与所述待访问数据的tag域进行比较,将所述一个或多个cache行中与所述待访问数据的tag域相同的cache行确定为存储有所述待访问数据cache行。
结合第二方面的第三种可能的实现方式,在第六种可能的实现方式中,所述接收单元接收的所述访问请求中包括物理地址,所述物理地址用于标识所述待访问数据,所述物理地址中包括所述待访问数据的tag域和set域;
所述装置还包括:
列表维护单元,用于为每个cache子单元维护一个列表,所述列表用于记录每个cache子单元中所存储数据的特征值;
第三确定单元,用于当接收到访问请求时,确定所述访问请求需要访问的待访问数据的特征值;
第四确定单元,用于遍历所述列表维护单元所维护的各列表,将记录有所述待访问数据的特征值的列表对应的cache子单元确定为目标cache子单元;
第二查找单元,用于将所述访问请求发送给所述目标cache子单元,确定所述待访问数据的set域在所述目标cache子单元中对应的一个或多个cache行,将所述一个或多个cache行的tag域与所述待访问数据的tag域进行比较,将所述一个或多个cache行中与所述待访问数据的tag域相同的cache行确定为存储有所述待访问数据cache行
采用本实施例提供的cache的管理方法及装置,一方面,当待访问数据的空间局部性较强时,为待访问数据分配长度较大的cache行;由于待访问数据的空间局部性较强时,待访问数据的相邻地址数据被访问的概率较大,同时由于为该待访问数据分配的cache行长度较大,所以可以将该待访问数据的更多相邻地址的数据缓存至所分配的cache行,从而在将数据从内存写入cache的过程中,能够减少cache行的读写次数,降低所述待缓存数据的访问延迟、以及节省内存和cache之间的传输带宽。另一方面,当待访问数据的空间局部性较弱时,为待访问数据分配长度较小的cache行;由于待访问数据的空间局部性较弱时,待访问数据的相邻地址数据被访问的概率较小,同时由于为该待访问数据分配的cache行长度较小,所以仅将该待访问数据的少量相邻地址的数据缓存至所分配的cache行,从而减少cache行中的无效数据,提高cache行的利用率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中cache行组织结构的示意图;
图2为本发明实施例一提供的cache中不同cache行长度的组织方式示意图;
图3为本发明实施例一提供的cache的管理方法的流程示意图;
图4为本发明实施例二提供的cache的管理方法的流程示意图;
图5为本发明实施例二提供的空间局部性分析模块的示意图;
图6为本发明实施例二提供的对cache中各cache子单元的容量进行实时更改的方法流程示意图;
图7为本发明实施例二提供的索引位图与cache的对应关系示意图;
图8为本发明实施例二提供的一种查找cache行的方法的流程示意图;
图9为本发明实施例二提供的另一种查找cache行的方法的流程示意图;
图10为本发明实施例二提供的cache种类示意图;
图11-图16本发明实施例三提供的cache的管理装置结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本实施例提供了一种cache的管理方法。本实施例中,在高速缓存器cache中设置多个cache子单元,每个所述cache子单元包括多个cache行;其中,每个cache子单元中所包括的cache行长度与其他cache子单元所包括的cache行长度互不相同;每个所述的cache子单元用于存储对应等级的数据,所述等级为数据的空间局部性强弱等级,其中,所述cache子单元与所述等级的对应关系为:所述cache子单元中包括的cache行长度与数据的空间局部性强度正相关。
为了便于理解,本实施例提供了一种cache中不同cache行长度的组织方式示意图以供参考。如图2所示,cache子单元201、cache子单元202、和cache子单元203组成了cache单元200;所述cache单元200可以是cache的一部分,也可以是一个完整的cache。每个cache子单元中包括多个cache行,不同子单元中的cache行长度不同。如图2所示,cache子单元201的cache行长度小于cache子单元202的cache行长度,cache子单元202的cache行长度小于cache子单元203的cache行长度。
需要强调的是,图2所示的各个cache子单元是按way(路)对cache进行划分后得到的。实际应用中,还可以按set(组)将cache划分为多个cache子单元,或者结合set和way对cache进行划分,此处不再赘述。
如图3所示,本实施例提供的cache的管理方法包括:
301、接收访问请求,确定所述访问请求需要访问的待访问数据。
具体的,所述访问请求中携带由待访问数据的物理地址,可以根据该物理地址在内存中进行寻址,确定所述访问请求需要访问的待访问数据。
302、判断所述待访问数据的空间局部性的强弱等级。
其中,所述待访问数据的空间局部性越强,则所述待访问数据的相邻地址数据被访问的概率越大;所述待访问数据的空间局部性越弱,则所述待访问数据的相邻地址数据被访问的概率越小。
303、根据所述待访问数据的空间局部性的强弱等级,为待访问数据分配与所述等级对应的cache子单元。
具体的,通过步骤303,为空间局部性强的待访问数据分配长度大的cache行,为空间局部性弱的待访问数据分配长度小的cache行。
例如,所述多个cache子单元至少包括第一cache子单元和第二cache子单元,所述第一cache子单元的cache行长度大于第二cache子单元的cache行长度;所述cache接收的访问请求至少包括第一访问请求和第二访问请求;其中,所述第一访问请求需要访问第一待访问数据,所述第二访问请求需要访问第二待访问数据,所述第一待访问数据的空间局部性高于所述第二访问请求的空间局部性;通过步骤303,所述cache将所述第一cache子单元中的空闲cache行分配给第一访问请求,将所述第二cache子单元中的空闲cache行分配给第二访问请求。
值得说明的是,本实施例提供的方法可以通过功能模块实现,该功能模块可以集成在cache中;还可以通过终端设备中设置独立器件来实现本实施例提供的方法,但不仅限于此。
采用本实施例提供的cache的管理方法,一方面,当待访问数据的空间局部性较强时,为待访问数据分配长度较大的cache行;由于待访问数据的空间局部性较强时,待访问数据的相邻地址数据被访问的概率较大,同时由于为该待访问数据分配的cache行长度较大,所以可以将该待访问数据的更多相邻地址的数据缓存至所分配的cache行,从而在将数据从内存写入cache的过程中,能够减少cache行的读写次数,降低所述待缓存数据的访问延迟、以及节省内存和cache之间的传输带宽。另一方面,当待访问数据的空间局部性较弱时,为待访问数据分配长度较小的cache行;由于待访问数据的空间局部性较弱时,待访问数据的相邻地址数据被访问的概率较小,同时由于为该待访问数据分配的cache行长度较小,所以仅将该待访问数据的少量相邻地址的数据缓存至所分配的cache行,从而减少cache行中的无效数据,提高cache行的利用率。
实施例二
在图3所示实施例的基础上,本发明实施例进一步提供了一种cache的管理方法。如图4所示,本实施例提供的方法包括:
401、在cache中设置多个cache子单元;其中,每个cache子单元包括多个cache行,每个cache子单元中所包括的cache行长度与其他cache子单元所包括的cache行长度互不相同。
具体的,可以在所述cache中按路way进行划分,确定所述多个cache子单元,设定每个cache子单元的cache行长度;
和/或,在所述cache中按组set进行划分,确定所述多个cache子单元,设定每个cache子单元的cache行长度。
402、cache接收访问请求,确定所述访问请求需要访问的待访问数据。
值得说明的是,本实施例提供的方法可以通过功能模块实现,该功能模块可以集成在cache中;还可以通过终端设备中设置独立器件来实现本实施例提供的方法,但不仅限于此。
为了便于理解,本实施例以功能模块的形式进行描述;也就是说,在cache中设置有相应的功能模块,该功能模块用于对cache进行管理。
403、cache确定所述待访问数据的空间局部性的强弱等级。
具体的,可以通过在cache中设置空间局部性分析模块来确定待访问数据的空间局部性的强弱等级。如图5所示,空间局部性分析模块50中包括:数据访问规律统计模块501、空间局部性预测模块502、cache行大小调整决策模块503。通过空间局部性分析模块50实现步骤403的步骤如下:
S1、数据访问规律统计模块501记录各访问请求需要访问的待访问数据的地址,统计所述地址的访问规律。具体包括:统计各访问请求需要访问的待访问数据的相邻地址数据被其他访问请求所访问的次数或概率。
S2、空间局部性预测模块502根据所述访问规律对所述待访问数据的空间局部性进行预测。具体包括:按照待访问数据的相邻地址数据被其他访问请求所访问的次数或概率,对所述待访问数据的空间局部性进行等级划分。
例如,可以通过预先设定两个判定阈值T1和T2,T1小于T2。当待访问数据的相邻地址数据被其他访问请求所访问的次数或概率低于T1时,判定所述待访问数据的空间局部性为“低”;当待访问数据的相邻地址数据被其他访问请求所访问的次数或概率达到T1、未达到T2时,判定所述待访问数据的空间局部性为“中”;当待访问数据的相邻地址数据被其他访问请求所访问的次数或概率达到T2时,判定所述待访问数据的空间局部性为“高”。
404、所述cache根据所述待访问数据的空间局部性的强弱等级为所述访问请求分配cache行。
具体的,为空间局部性强的待访问数据分配长度大的cache行,为空间局部性弱的待访问数据分配长度小的cache行。例如,按照cache行长度从大到小的顺序对cache子单元进行排序,依次为:cache子单元203、cache子单元202、cache子单元201。基于图2所示的cache行组织方式,当步骤403中确定待访问数据的空间局部性为“高”时,则为相应的访问请求分配cache子单元203中的空闲cache行;当确定待访问数据的空间局部性为“中”时,则为相应的访问请求分配cache子单元202中的空闲cache行;当确定待访问数据的空间局部性为“低”时,则为相应的访问请求分配cache子单元201中的空闲cache行。
通过以上步骤,一方面,当待访问数据的空间局部性较高时,可以将所述待访问数据、以及所述待访问数据相邻地址的数据一起确定为待缓存数据(待访问数据的空间局部性越高,其对应的待缓存数据越大),并将所述待缓存数据缓存至预先分配的cache行;由于预先分配的cache行长度较大,所以在将所述待缓存数据从内存写入cache的过程中,能够减少cache行的读写次数,从而降低所述待缓存数据的访问延迟、以及节省内存和cache之间的传输带宽。另一方面,当待访问数据的空间局部性较差时,可以将所述待访问数据确定为待缓存数据(或者,将所述待访问数据、以及所述待访问数据相邻地址的少部分数据一起确定为待缓存数据),并将所述待缓存数据缓存至预先分配的cache行,由于预先分配的cache行长度较小,所以能够减少cache行中的无效数据,提高cache行的利用率。
本实施例中,cache中cache行的组织形式可以是固定的,如图2中cache子单元201-203的容量是固定不变的。采用这样的方法,能够提高cache行的利用率,同时还可以确保cache的复杂度较低,便于实现。
可选的,作为一种优化方案,还可以根据在预设时间段内接收到的多个访问请求对应的待访问数据的空间局部性强弱等级,对cache中各cache子单元的容量进行实时更改,以进一步的提高cache行的利用率。具体如下,如图6所示:
601、在预设时间段内,统计待访问数据的空间局部性的强弱等级,计算第一比值,所述第一比值用于表征不同等级空间局部性的待访问数据之间的比例关系;
602、计算第二比值,所述第二比值用于表征所述cache中包括不同cache行长度的cache子单元之间的比例关系;
603、当所述第一比值和第二比值的差距大于预设阈值时,对所述cache子单元中的cache行数量进行调整,直至调整后的第二比值和所述第一比值之间的差距在所述预设阈值范围内。
为了便于理解,基于图2所示的cache行组织方式,对上述步骤601-603进行举例说明。例如,通过步骤601,确定cache中各cache子单元的容量的比例关系为:
cache子单元201:cache子单元202:cache子单元203=1:1:1,
通过步骤602,确定在预设时间段内,cache接收到的各类空间局部性的访问请求数量的比例关系为:
空间局部性为“高”的访问请求:空间局部性为“中”的访问请求:空间局部性为“低”的访问请求=1:2:3,
基于以上情况,可以通过步骤603,对各cache子单元在整个cache中所占比例进行调整,使得cache中各cache子单元的容量的比例关系变更为:
cache子单元201:cache子单元202:cache子单元203=1:2:3。
通过以上处理,可以避免将空间局部性较强(较弱)的数据写入长度较小(较大)的cache行,进一步的提高各cache子单元中cache行的利用率。
图6所示的方法可以通过图5中的cache行大小调整决策模块503实现。
作为另一种优化方案,基于图4所示的cache管理方法,在通过步骤403确定待访问数据的空间局部性之后,可以将步骤404替换为如下方法:
S1、根据所述待访问数据的空间局部性的强弱等级,确定待缓存数据的大小。
当待访问数据的空间局部性较强时,可以将所述待访问数据、以及所述待访问数据相邻地址的多个数据一起确定为待缓存数据;当待访问数据的空间局部性较差时,可以仅将所述待访问数据确定为待缓存数据(或者,将所述待访问数据、以及所述待访问数据相邻地址的少部分数据一起确定为待缓存数据)。
S2、根据所述待缓存数据的大小,对cache子单元中的cache行长度进行调整,将调整后的cache行分配给所述待缓存数据;所述调整后的cache行长度与所述待缓存数据的大小相匹配。
S3、基于cache子单元中cache行长度的变化,建立并维护索引位图,所述索引位图用于指示cache行中的tag域和data域。
为了便于理解,本实施例提供了一种索引位图的示意图、以及与所述索引位图对应的cache行以供参考。例如,如图7所示,所述索引位图中的0表示对应的字节块为data;所述索引位图中的1表示对应的字节块为tag,所述tag中记录有相应待缓存数据的起始字节和结束字节。值得说明的是,所述索引位图是可以配置的,既可以是以寄存器或端口或其他的方式提供给操作系统或是用户,也可以是以其他方式与系统或用户进行交互。
通过以上步骤S1-S3,能够根据待缓存数据的大小、为待缓存数据划分为相应的cache行,能够充分利用cache行资源。
通过以上描述,可以实现根据待访问数据的空间局部性强弱等级为访问请求分配cache行。基于本实施例提供的cache行的分配方案,本实施例还提供了cache行的查找方案,具体如下:
方案一,如图8所示:
801、cache接收访问请求,从所述访问请求中获取待访问数据的物理地址。
其中,所述访问请求中包括物理地址,所述物理地址用于标识所述待访问数据,所述物理地址中包括所述待访问数据的tag域和set域,所述tag域是待访问数据的标识,所述set域用于表征所述待访问数据在cache中所属的set(组)。
802、cache确定所述待访问数据的set域在每个所述cache子单元中对应的一个或多个cache行,将所述一个或多个cache行的tag域与所述待访问数据的tag域进行比较,将所述一个或多个cache行中与所述待访问数据的tag域相同的cache行确定为存储有所述待访问数据cache行。
方案二,如图9所示:
901、cache接收访问请求,从所述访问请求中获取待访问数据的物理地址。
其中,所述访问请求中包括物理地址,所述物理地址用于标识所述待访问数据,所述物理地址中包括所述待访问数据的tag域和set域,所述tag域是待访问数据的标识,所述set域用于表征所述待访问数据在cache中所属的set(组)。
902、cache为每个cache子单元维护一个列表,所述列表用于记录每个cache子单元中所存储数据的特征值。
其中,所述特征值用于对cache子单元中存储的数据进行标识,即特征值与数据之间存在对应关系。例如,可以利用哈希函数对各数据的物理地址进行计算,将计算得到的值确定为各数据对应的特征值。
903、当cache接收到访问请求时,确定所述访问请求需要访问的待访问数据的特征值。
904、cache将记录有所述待访问数据的特征值的列表对应的cache子单元确定为目标cache子单元。
905、cache将所述访问请求发送给所述目标cache子单元,确定所述待访问数据的set域在所述目标cache子单元中对应的一个或多个cache行,将所述一个或多个cache行的tag域与所述待访问数据的tag域进行比较,将所述一个或多个cache行中与所述待访问数据的tag域相同的cache行确定为存储有所述待访问数据cache行。
通过图8和图9所示方法,可以实现cache行的查找。
值得说明的是,本实施例提供的cache的管理方法适用于多种不同种类的cache。图10提供了一种不同种类cache采用不同cache行大小的组织方式。如图10所示,不同种类的cache包括如下多种情况:
(1)同一CPU内不同功能的cache,如指令cache(Icache)1001和数据cache(Dcache)1002;
(2)同一CPU内不同层次的cache,如指令cache1001和L2cache1004;
(3)不同CPU同一层次的cache,如指令cache1001和指令cache1003;
(4)不同CPU私有cache和共享cache,如L3cache1005和其他cache单元。
上述不同种类的cache既可以采用相同的cache行配置,也可以采用不同的cache行配置,具体配置情况可以根据需要来进行设定。
实施例三
本发明实施例提供了一种cache的管理装置,能够实现本发明提供的cache的管理方法。
本实施例提供的装置用于管理设置有多个cache子单元的高速缓存器,所述高速缓存器cache中每个所述cache子单元包括多个cache行;其中,每个cache子单元中所包括的cache行长度与其他cache子单元所包括的cache行长度互不相同;每个所述的cache子单元用于存储对应等级的数据,所述等级为数据的空间局部性强弱等级,其中,所述cache子单元与所述等级的对应关系为:所述cache子单元中包括的cache行长度与数据的空间局部性强度正相关;
如图11所示,本实施例提供的装置110包括:
接收单元1101,用于接收访问请求;
第一确定单元1102,用于确定所述访问请求需要访问的待访问数据;
判断单元1103,用于判断所述待访问数据的空间局部性的强弱等级;
分配单元1104,用于根据所述待访问数据的空间局部性的强弱等级,为待访问数据分配与所述等级对应的cache子单元。
进一步的,如图12所示,所述判断单元1103包括:
统计模块11031,用于记录各访问请求需要访问的待访问数据的地址,统计所述待访问数据的地址的访问规律,所述访问规律包括所述地址的相邻地址数据被其他访问请求所访问的次数或概率;
划分模块11032,用于按照所述待访问数据的地址的相邻地址数据被其他访问请求所访问的次数或概率,对所述待访问数据的空间局部性进行等级划分。
如图13所示,所述装置110还包括:
计算单元1105,用于在预设时间段内,统计待访问数据的空间局部性的强弱等级,计算第一比值,所述第一比值用于表征不同等级空间局部性的待访问数据之间的比例关系;
所述计算单元1105,还用于计算第二比值,所述第二比值用于表征所述cache中包括不同cache行长度的cache子单元之间的比例关系;
第一调整单元1106,用于当所述计算单元1105计算得到的所述第一比值和第二比值的差距大于预设阈值时,对所述cache子单元中的cache行数量进行调整,直至调整后的第二比值和所述第一比值之间的差距在所述预设阈值范围内。
在图11-图13的基础上,进一步,如图14所示,所述装置110还包括:
第二确定单元1107,用于根据所述判断单元1103得到的所述待访问数据的空间局部性的强弱等级,确定待缓存数据的大小;
第二调整单元1108,用于根据所述第二确定单元1107确定的所述待缓存数据的大小,对cache子单元中的cache行长度进行调整,将调整后的cache行分配给所述待缓存数据;所述调整后的cache行长度与所述待缓存数据的大小相匹配;
索引位图处理单元1109,用于基于cache子单元中cache行长度的变化,建立并维护索引位图,所述索引位图用于指示cache行中的tag域和data域。
值得说明的是,为了描述简洁,图14中并没有体现图12、图13中增加的部分单元模块,但图14所述装置可以包括图12、图13中增加的部分单元模块。
可选的,所述装置110中还可以包括:
划分单元,用于在所述cache中按路way、和/或组set进行划分,确定所述多个cache子单元,设定每个cache子单元的cache行长度。
图11-图14中,所述接收单元1101接收的所述访问请求中包括物理地址,所述物理地址用于标识所述待访问数据,所述物理地址中包括所述待访问数据的tag域和set域;
基于图14,进一步的,如图15所示,所述装置110还包括:
发送单元1110,用于将所述访问请求发送给每个所述cache子单元;
第一查找单元1111,用于确定所述待访问数据的set域在每个所述cache子单元中对应的一个或多个cache行,将所述一个或多个cache行的tag域与所述待访问数据的tag域进行比较,将所述一个或多个cache行中与所述待访问数据的tag域相同的cache行确定为存储有所述待访问数据cache行。
基于图14,进一步的,如图16所示,所述装置110还包括:
列表维护单元1112,用于为每个cache子单元维护一个列表,所述列表用于记录每个cache子单元中所存储数据的特征值;
第三确定单元1113,用于当接收到访问请求时,确定所述访问请求需要访问的待访问数据的特征值;
第四确定单元1114,用于遍历所述列表维护单元所维护的各列表,将记录有所述待访问数据的特征值的列表对应的cache子单元确定为目标cache子单元;
第二查找单元1115,用于将所述访问请求发送给所述目标cache子单元,确定所述待访问数据的set域在所述目标cache子单元中对应的一个或多个cache行,将所述一个或多个cache行的tag域与所述待访问数据的tag域进行比较,将所述一个或多个cache行中与所述待访问数据的tag域相同的cache行确定为存储有所述待访问数据cache行。
采用本实施例提供的cache的管理装置,一方面,当待访问数据的空间局部性较强时,为待访问数据分配长度较大的cache行;由于待访问数据的空间局部性较强时,待访问数据的相邻地址数据被访问的概率较大,同时由于为该待访问数据分配的cache行长度较大,所以可以将该待访问数据的更多相邻地址的数据缓存至所分配的cache行,从而在将数据从内存写入cache的过程中,能够减少cache行的读写次数,降低所述待缓存数据的访问延迟、以及节省内存和cache之间的传输带宽。另一方面,当待访问数据的空间局部性较弱时,为待访问数据分配长度较小的cache行;由于待访问数据的空间局部性较弱时,待访问数据的相邻地址数据被访问的概率较小,同时由于为该待访问数据分配的cache行长度较小,所以仅将该待访问数据的少量相邻地址的数据缓存至所分配的cache行,从而减少cache行中的无效数据,提高cache行的利用率。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (14)

1.一种高速缓存器cache的管理方法,其特征在于,所述高速缓存器cache中设置多个cache子单元,每个所述cache子单元包括多个cache行;其中,每个cache子单元中所包括的cache行长度与其他cache子单元所包括的cache行长度互不相同;每个所述的cache子单元用于存储对应等级的数据,所述等级为数据的空间局部性强弱等级,其中,所述cache子单元与所述等级的对应关系为:所述cache子单元中包括的cache行长度与数据的空间局部性强度正相关;所述方法包括:
接收访问请求,确定所述访问请求需要访问的待访问数据;
判断所述待访问数据的空间局部性的强弱等级;
根据所述待访问数据的空间局部性的强弱等级,为待访问数据分配与所述等级对应的cache子单元。
2.根据权利要求1所述的方法,其特征在于,所述判断所述待访问数据的空间局部性的强弱等级,包括:
记录各访问请求需要访问的待访问数据的地址,统计所述待访问数据的地址的访问规律,所述访问规律包括所述地址的相邻地址数据被其他访问请求所访问的次数或概率;
按照所述待访问数据的地址的相邻地址数据被其他访问请求所访问的次数或概率,对所述待访问数据的空间局部性进行等级划分。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在预设时间段内,统计待访问数据的空间局部性的强弱等级,计算第一比值,所述第一比值用于表征不同等级空间局部性的待访问数据之间的比例关系;
计算第二比值,所述第二比值用于表征所述cache中包括不同cache行长度的cache子单元之间的比例关系;
当所述第一比值和第二比值的差距大于预设阈值时,对所述cache子单元中的cache行数量进行调整,直至调整后的第二比值和所述第一比值之间的差距在所述预设阈值范围内。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述接收访问请求,确定所述访问请求需要访问的待访问数据之后,还包括:
根据所述待访问数据的空间局部性的强弱等级,确定待缓存数据的大小;
根据所述待缓存数据的大小,对cache子单元中的cache行长度进行调整,将调整后的cache行分配给所述待缓存数据;所述调整后的cache行长度与所述待缓存数据的大小相匹配;
基于cache子单元中cache行长度的变化,建立并维护索引位图,所述索引位图用于指示cache行中的tag域和data域。
5.根据权利要求1所述的方法,其特征在于,所述cache中设置多个cache子单元,包括:
在所述cache中按路way、和/或组set进行划分,确定所述多个cache子单元,设定每个cache子单元的cache行长度。
6.根据权利要求4所述的方法,其特征在于,所述访问请求中包括物理地址,所述物理地址用于标识所述待访问数据,所述物理地址中包括所述待访问数据的tag域和set域;
所述方法还包括:
将所述访问请求发送给每个所述cache子单元;
确定所述待访问数据的set域在每个所述cache子单元中对应的一个或多个cache行,将所述一个或多个cache行的tag域与所述待访问数据的tag域进行比较,将所述一个或多个cache行中与所述待访问数据的tag域相同的cache行确定为存储有所述待访问数据cache行。
7.根据权利要求4所述的方法,其特征在于,所述访问请求中包括物理地址,所述物理地址用于标识所述待访问数据,所述物理地址中包括所述待访问数据的tag域和set域;
所述方法还包括:
为每个cache子单元维护一个列表,所述列表用于记录每个cache子单元中所存储数据的特征值;
当接收到访问请求时,确定所述访问请求需要访问的待访问数据的特征值;
将记录有所述待访问数据的特征值的列表对应的cache子单元确定为目标cache子单元;
将所述访问请求发送给所述目标cache子单元,确定所述待访问数据的set域在所述目标cache子单元中对应的一个或多个cache行,将所述一个或多个cache行的tag域与所述待访问数据的tag域进行比较,将所述一个或多个cache行中与所述待访问数据的tag域相同的cache行确定为存储有所述待访问数据cache行。
8.一种高速缓存器cache的管理装置,其特征在于,所述装置用于管理设置有多个cache子单元的高速缓存器,所述高速缓存器cache中每个所述cache子单元包括多个cache行;其中,每个cache子单元中所包括的cache行长度与其他cache子单元所包括的cache行长度互不相同;每个所述的cache子单元用于存储对应等级的数据,所述等级为数据的空间局部性强弱等级,其中,所述cache子单元与所述等级的对应关系为:所述cache子单元中包括的cache行长度与数据的空间局部性强度正相关;
所述装置包括:
接收单元,用于接收访问请求;
第一确定单元,用于确定所述访问请求需要访问的待访问数据;
判断单元,用于判断所述待访问数据的空间局部性的强弱等级;
分配单元,用于根据所述待访问数据的空间局部性的强弱等级,为待访问数据分配与所述等级对应的cache子单元。
9.根据权利要求8所述的装置,其特征在于,所述判断单元包括:
统计模块,用于记录各访问请求需要访问的待访问数据的地址,统计所述待访问数据的地址的访问规律,所述访问规律包括所述地址的相邻地址数据被其他访问请求所访问的次数或概率;
划分模块,用于按照所述待访问数据的地址的相邻地址数据被其他访问请求所访问的次数或概率,对所述待访问数据的空间局部性进行等级划分。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
计算单元,用于在预设时间段内,统计待访问数据的空间局部性的强弱等级,计算第一比值,所述第一比值用于表征不同等级空间局部性的待访问数据之间的比例关系;
所述计算单元,还用于计算第二比值,所述第二比值用于表征所述cache中包括不同cache行长度的cache子单元之间的比例关系;
第一调整单元,用于当所述计算单元计算得到的所述第一比值和第二比值的差距大于预设阈值时,对所述cache子单元中的cache行数量进行调整,直至调整后的第二比值和所述第一比值之间的差距在所述预设阈值范围内。
11.根据权利要求8-10中任一项所述的装置,其特征在于,所述装置还包括:
第二确定单元,用于根据所述判断单元得到的所述待访问数据的空间局部性的强弱等级,确定待缓存数据的大小;
第二调整单元,用于根据所述第二确定单元确定的所述待缓存数据的大小,对cache子单元中的cache行长度进行调整,将调整后的cache行分配给所述待缓存数据;所述调整后的cache行长度与所述待缓存数据的大小相匹配;
索引位图处理单元,用于基于cache子单元中cache行长度的变化,建立并维护索引位图,所述索引位图用于指示cache行中的tag域和data域。
12.根据权利要求8所述的装置,其特征在于,所述装置还包括:
划分单元,用于在所述cache中按路way、和/或组set进行划分,确定所述多个cache子单元,设定每个cache子单元的cache行长度。
13.根据权利要求11所述的装置,其特征在于:
所述接收单元接收的所述访问请求中包括物理地址,所述物理地址用于标识所述待访问数据,所述物理地址中包括所述待访问数据的tag域和set域;
所述装置还包括:
发送单元,用于将所述访问请求发送给每个所述cache子单元;
第一查找单元,用于确定所述待访问数据的set域在每个所述cache子单元中对应的一个或多个cache行,将所述一个或多个cache行的tag域与所述待访问数据的tag域进行比较,将所述一个或多个cache行中与所述待访问数据的tag域相同的cache行确定为存储有所述待访问数据cache行。
14.根据权利要求11所述的装置,其特征在于:
所述接收单元接收的所述访问请求中包括物理地址,所述物理地址用于标识所述待访问数据,所述物理地址中包括所述待访问数据的tag域和set域;
所述装置还包括:
列表维护单元,用于为每个cache子单元维护一个列表,所述列表用于记录每个cache子单元中所存储数据的特征值;
第三确定单元,用于当接收到访问请求时,确定所述访问请求需要访问的待访问数据的特征值;
第四确定单元,用于遍历所述列表维护单元所维护的各列表,将记录有所述待访问数据的特征值的列表对应的cache子单元确定为目标cache子单元;
第二查找单元,用于将所述访问请求发送给所述目标cache子单元,确定所述待访问数据的set域在所述目标cache子单元中对应的一个或多个cache行,将所述一个或多个cache行的tag域与所述待访问数据的tag域进行比较,将所述一个或多个cache行中与所述待访问数据的tag域相同的cache行确定为存储有所述待访问数据cache行。
CN201410032035.3A 2014-01-23 2014-01-23 Cache的管理方法及装置 Active CN104809076B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201410032035.3A CN104809076B (zh) 2014-01-23 2014-01-23 Cache的管理方法及装置
PCT/CN2015/071344 WO2015110046A1 (zh) 2014-01-23 2015-01-22 Cache的管理方法及装置
EP15740109.2A EP3089039B1 (en) 2014-01-23 2015-01-22 Cache management method and device
US15/218,826 US20160335177A1 (en) 2014-01-23 2016-07-25 Cache Management Method and Apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410032035.3A CN104809076B (zh) 2014-01-23 2014-01-23 Cache的管理方法及装置

Publications (2)

Publication Number Publication Date
CN104809076A true CN104809076A (zh) 2015-07-29
CN104809076B CN104809076B (zh) 2018-02-06

Family

ID=53680830

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410032035.3A Active CN104809076B (zh) 2014-01-23 2014-01-23 Cache的管理方法及装置

Country Status (4)

Country Link
US (1) US20160335177A1 (zh)
EP (1) EP3089039B1 (zh)
CN (1) CN104809076B (zh)
WO (1) WO2015110046A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109739780A (zh) * 2018-11-20 2019-05-10 北京航空航天大学 基于页级映射的动态二级缓存闪存转换层地址映射方法
CN109952565A (zh) * 2016-11-16 2019-06-28 华为技术有限公司 内存访问技术
CN110782934A (zh) * 2019-09-27 2020-02-11 东南大学 采用时序推测型SRAM阵列的Cache行映射与替换方法
CN114860785A (zh) * 2022-07-08 2022-08-05 深圳云豹智能有限公司 缓存数据处理系统、方法、计算机设备和存储介质

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9794889B2 (en) * 2014-05-09 2017-10-17 Huawei Device Co., Ltd. Power adjustment method and apparatus
US10114692B2 (en) * 2015-01-27 2018-10-30 Quantum Corporation High/low energy zone data storage
US10303605B2 (en) * 2016-07-20 2019-05-28 Intel Corporation Increasing invalid to modified protocol occurrences in a computing system
JP6717152B2 (ja) * 2016-10-06 2020-07-01 富士通株式会社 インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法
US10133669B2 (en) 2016-11-15 2018-11-20 Intel Corporation Sequential data writes to increase invalid to modified protocol occurrences in a computing system
US11086526B2 (en) * 2018-06-07 2021-08-10 Micron Technology, Inc. Adaptive line width cache systems and methods
US11847053B2 (en) * 2020-03-27 2023-12-19 Intel Corporation Apparatuses, methods, and systems for a duplication resistant on-die irregular data prefetcher
US11294808B2 (en) * 2020-05-21 2022-04-05 Micron Technology, Inc. Adaptive cache
US11442937B2 (en) * 2020-06-11 2022-09-13 Google Llc Optimal admission control for caches
CN115328821B (zh) * 2022-10-18 2022-12-23 北京红山微电子技术有限公司 基于GPU的可重构Cache系统、访存系统及访存方法
CN117539803A (zh) * 2023-11-29 2024-02-09 沐曦集成电路(上海)有限公司 一种可变换Cache存储系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6393521B1 (en) * 1997-08-26 2002-05-21 Kabushiki Kaisha Toshiba Information processing apparatus
US6549983B1 (en) * 1998-05-20 2003-04-15 Samsung Electronics Co., Ltd. Cache memory system and method for managing the same
US20060059309A1 (en) * 2004-09-13 2006-03-16 International Business Machines Corporation Cache memory system and control method of the cache memory system
CN101088074A (zh) * 2004-12-27 2007-12-12 英特尔公司 用于具有不同高速缓存位置长度的高速缓存中高速缓存一致性的系统和方法
CN101571835A (zh) * 2009-03-26 2009-11-04 浙江大学 基于程序的需求来改变Cache组相联度的实现方法
US20110208919A1 (en) * 2010-02-24 2011-08-25 Arvind Pruthi Caching based on spatial distribution of accesses to data storage devices

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6243791B1 (en) * 1998-08-13 2001-06-05 Hewlett-Packard Company Method and architecture for data coherency in set-associative caches including heterogeneous cache sets having different characteristics
US20100185816A1 (en) * 2009-01-21 2010-07-22 Sauber William F Multiple Cache Line Size
US8185693B2 (en) * 2009-03-17 2012-05-22 Microsoft Corporation Cache-line aware collection for runtime environments
US8793434B2 (en) * 2011-07-08 2014-07-29 Advanced Micro Devices, Inc. Spatial locality monitor for thread accesses of a memory resource
US9430394B2 (en) * 2013-12-12 2016-08-30 Mediatek Singapore Pte. Ltd. Storage system having data storage lines with different data storage line sizes

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6393521B1 (en) * 1997-08-26 2002-05-21 Kabushiki Kaisha Toshiba Information processing apparatus
US6549983B1 (en) * 1998-05-20 2003-04-15 Samsung Electronics Co., Ltd. Cache memory system and method for managing the same
US20060059309A1 (en) * 2004-09-13 2006-03-16 International Business Machines Corporation Cache memory system and control method of the cache memory system
CN101088074A (zh) * 2004-12-27 2007-12-12 英特尔公司 用于具有不同高速缓存位置长度的高速缓存中高速缓存一致性的系统和方法
CN101571835A (zh) * 2009-03-26 2009-11-04 浙江大学 基于程序的需求来改变Cache组相联度的实现方法
US20110208919A1 (en) * 2010-02-24 2011-08-25 Arvind Pruthi Caching based on spatial distribution of accesses to data storage devices

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109952565A (zh) * 2016-11-16 2019-06-28 华为技术有限公司 内存访问技术
CN109952565B (zh) * 2016-11-16 2021-10-22 华为技术有限公司 内存访问技术
US11210020B2 (en) 2016-11-16 2021-12-28 Huawei Technologies Co., Ltd. Methods and systems for accessing a memory
CN109739780A (zh) * 2018-11-20 2019-05-10 北京航空航天大学 基于页级映射的动态二级缓存闪存转换层地址映射方法
CN110782934A (zh) * 2019-09-27 2020-02-11 东南大学 采用时序推测型SRAM阵列的Cache行映射与替换方法
CN114860785A (zh) * 2022-07-08 2022-08-05 深圳云豹智能有限公司 缓存数据处理系统、方法、计算机设备和存储介质
CN114860785B (zh) * 2022-07-08 2022-09-06 深圳云豹智能有限公司 缓存数据处理系统、方法、计算机设备和存储介质

Also Published As

Publication number Publication date
CN104809076B (zh) 2018-02-06
EP3089039A4 (en) 2017-03-01
WO2015110046A1 (zh) 2015-07-30
EP3089039A1 (en) 2016-11-02
EP3089039B1 (en) 2020-05-20
US20160335177A1 (en) 2016-11-17

Similar Documents

Publication Publication Date Title
CN104809076A (zh) Cache的管理方法及装置
CN113424160B (zh) 一种处理方法、装置及相关设备
CN110134514B (zh) 基于异构内存的可扩展内存对象存储系统
TWI684099B (zh) 剖析快取替代
US8271729B2 (en) Read and write aware cache storing cache lines in a read-often portion and a write-often portion
US20140089631A1 (en) Power savings via dynamic page type selection
CN105740164A (zh) 支持缓存一致性的多核处理器、读写方法、装置及设备
EP2388705A1 (en) Method and apparatus for accessing cache memory
US20190004968A1 (en) Cache management method, storage system and computer program product
US20090132769A1 (en) Statistical counting for memory hierarchy optimization
US9699254B2 (en) Computer system, cache management method, and computer
CN109478164A (zh) 用于存储用于高速缓存条目传输的高速缓存位置信息的系统和方法
US9747049B2 (en) Computer memory management method and system
US6360302B1 (en) Method and system for dynamically changing page types in unified scalable shared-memory architectures
US9798672B1 (en) Data managment for cache memory
CN117561504A (zh) 高速缓存探测事务过滤
Ghandeharizadeh et al. Cache replacement with memory allocation
US7080212B1 (en) Closed loop adaptive prestage method, system, and product for prestaging cache blocks
CN113918483B (zh) 一种多主设备缓存控制方法及系统
CN116775560B (zh) 写分配方法、缓存系统、片上系统、电子组件及电子设备
US11422935B2 (en) Direct mapping mode for associative cache
US20230100746A1 (en) Multi-level partitioned snoop filter
KR20210079176A (ko) 기입 항목들을 선호하고/하거나 커스텀화된 온도 유도 속도 세팅들을 갖는 영역들을 포함하는 메모리 측 캐시를 갖는 nvram 시스템 메모리
CN116069719A (zh) 处理器、内存控制器、片上系统芯片和数据预取方法
CN115129230A (zh) 一种缓存管理方法及存储设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant