CN110795221B - 缓存管理方法、缓存控制器及处理器、存储介质 - Google Patents

缓存管理方法、缓存控制器及处理器、存储介质 Download PDF

Info

Publication number
CN110795221B
CN110795221B CN201911025619.7A CN201911025619A CN110795221B CN 110795221 B CN110795221 B CN 110795221B CN 201911025619 A CN201911025619 A CN 201911025619A CN 110795221 B CN110795221 B CN 110795221B
Authority
CN
China
Prior art keywords
cache
load flow
load
classifying
level
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
CN201911025619.7A
Other languages
English (en)
Other versions
CN110795221A (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.)
Chengdu Haiguang Integrated Circuit Design Co Ltd
Original Assignee
Chengdu Haiguang Integrated Circuit Design 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 Chengdu Haiguang Integrated Circuit Design Co Ltd filed Critical Chengdu Haiguang Integrated Circuit Design Co Ltd
Publication of CN110795221A publication Critical patent/CN110795221A/zh
Application granted granted Critical
Publication of CN110795221B publication Critical patent/CN110795221B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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/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/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/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明实施例公开了一种缓存管理方法、缓存控制器及处理器、存储介质,所述缓存管理方法包括:基于计算设备的缓存层次架构及所述缓存所处缓存层次特性,并根据所述缓存上负载流的差异性,将所述缓存上的负载流进行分类,并对分类后的负载流进行相应的优先级配置;按照所配置的优先级分配缓存资源及进行缓存管理。采用上述方案,可以提升缓存的服务质量。

Description

缓存管理方法、缓存控制器及处理器、存储介质
技术领域
本发明实施例涉及缓存管理技术领域,尤其涉及一种缓存管理方法、缓存控制器及处理器、存储介质。
背景技术
对于计算设备来说,利用缓存存储需要经常访问的数据及其地址是一种有效的提高计算设备运行速度的方法。缓存层次结构传统上是为单个应用程序、线程或核心而设计的。随着多线程(MT)和多核(CMP)平台体系结构的出现,它们的工作负载范围从单线程和多线程应用程序到复杂虚拟机(VMs),这些异构负载流具有不同的局部性和不同的缓存敏感性。因此,即使对于具有良好局部性的应用程序来说,将所有缓存访问都一视同仁的缓存管理方法也会导致空间利用率低和性能差。
目前,为了提高计算设备的服务质量(Quality of Service,QoS),通过在处理器的最后一级共享缓存(Last Level Cache,LLC)中应用相应的缓存管理方案。
然而,上述缓存管理方案的服务质量仍有待提高。
发明内容
本发明实施例为提升缓存的服务质量,提供了一种缓存管理方法、缓存控制器及处理器、存储介质。
本发明实施例提供了一种缓存管理方法,包括:基于所述计算设备的缓存层次架构及所述缓存所处缓存层次特性,并根据所述缓存上负载流的差异性,将所述缓存上的负载流进行分类,并对分类后的负载流进行相应的优先级配置;按照所配置的优先级分配缓存资源及进行缓存管理。
可选地,所述方法还包括:监控所述缓存的资源分配状况,根据监控结果调整所述缓存的资源分配。
可选地,所述根据监控结果调整所述缓存的资源分配及进行缓存管理,包括以下至少一种:根据监控结果调整所述缓存上负载流的分类方式,并根据调整后的分类方式对负载流进行相应的优先级配置;根据监控结果调整所述缓存上负载流的优先级配置。
可选地,所述方法还包括:监控所述计算设备多个缓存层次的资源分配状况,根据监控结果调整相应的一个或多个缓存层次的资源分配。
可选地,所述根据监控结果调整相应的一个或多个缓存层次的资源分配,包括:当监测到某个缓存层次上的缓存分配未达到预设的缓存服务质量要求时,执行以下至少一种调整操作:调整所述缓存层次上的缓存的资源分配;调整所述缓存层次之上至少一个缓存层次的缓存的资源分配。
可选地,所述根据监控结果调整相应的一个或多个缓存层次的资源分配,包括以下至少其中一种:根据监控结果调整所述缓存层次的负载流的分类方式,并根据调整后的分类方式对负载流进行相应的优先级配置;根据监控结果调整所述缓存层次上负载流的优先级配置;根据监控结果调整所述缓存层次之上的至少一个缓存层次的负载流的分类方式,并根据调整后的分类方式对负载流进行相应的优先级配置;根据监控结果调整所述缓存层次之上的至少一个缓存层次上的负载流的优先级配置。
可选地,所述基于所述计算设备的缓存层次架构及所述缓存所处缓存层次特性,并根据所述缓存上负载流的差异性,将所述缓存上的负载流进行分类,包括以下至少其中一种:将所述缓存上的负载流基于应用的不同进行分类;将所述缓存上的负载流基于内核的不同进行分类;将所述缓存上的负载流基于线程的不同进行分类;将所述缓存上的负载流基于所涉及的数据结构类型进行分类;将所述缓存上的负载流基于应用的事务或所处阶段进行分类;将所述缓存上的负载流基于数据访问的类型进行分类;将所述缓存上的负载流基于访问的来源进行分类。
可选地,所述按照所配置的优先级分配缓存资源及进行缓存管理,包括以下至少一种:按照所配置的优先级对相应负载流执行预设的缓存空间管理策略;按照所配置的优先级对相应负载流对应的缓存行执行预设的基于年龄的优先级策略。
可选地,所述按照所配置的优先级对相应负载流执行预设的缓存空间管理策略,包括以下至少一种:按照所配置的优先级为相应负载流设置相应的缓存分区;按照所配置的优先级为相应负载流设置所占用的缓存行数;按照所配置的优先级为相应负载流分配相应结构类型的缓存。
可选地,所述计算设备包括处理器,所述处理器包括多个物理内核和与所述多个物理内核耦接的共享缓存,所述物理内核包括至少一级中间级缓存。
可选地,所述基于所述计算设备的缓存层次架构及所述缓存所处缓存层次特性,并根据所述缓存上负载流的差异性,将所述缓存上的负载流进行分类,并对分类后的负载流进行相应的优先级配置包括:对于所述共享缓存,基于线程或基于内核或基于访问的来源对负载流进行分类;对于所述物理内核的至少一级中间级缓存,基于访问的来源对负载流进行分类。
可选地,所述按照所配置的优先级分配缓存资源及进行缓存管理,包括:对于所述中间级缓存,采用指令和数据分离的方式进行存储。
可选地,所述缓存的缓存行中包含所述负载流的分类标识,并适于传递至下一个缓存层次。
可选地,所述负载流的分类标识包括:线程标识,所述线程标识适于存储于缓存行的硬件线程标识或内核标识或地址空间标识符并与缓存行一起传递至下一个缓存层次。
可选地,所述方法还包括:在接收到预设的缓存管理功能查询指令时,反馈所述计算设备采用的缓存管理方法。
本发明实施例还提供了一种缓存控制器,所述缓存控制器包括:分类单元,适于基于缓存层次架构及所述缓存所处缓存层次特性,并根据所述缓存上负载流的差异性,将所述缓存上的负载流进行分类;优先级配置单元,适于对分类后的负载流进行相应的优先级配置;缓存管理单元,适于按照所配置的优先级分配缓存资源及进行缓存管理。
可选地,所述缓存控制器还包括:第一监控单元,适于监控所述缓存的资源分配状况;第一调整单元,适于根据监控结果调整所述缓存的资源分配。
可选地,所述第一调整单元包括以下至少一种:第一调整子单元,适于根据监控结果调整所述缓存上负载流的分类方式,并根据调整后的分类方式对负载流进行相应的优先级配置;第二调整子单元,适于根据监控结果调整所述缓存上负载流的优先级配置。
可选地,所述缓存控制器还包括:第二监控单元,适于监控多个缓存层次的资源分配状况;第二调整单元,适于根据第二监控单元的监控结果调整相应的一个或多个缓存层次的资源分配。
可选地,所述第二调整单元包括以下至少一种:第三调整子单元,适于当所述第二监控单元监测到某个缓存层次上的缓存分配未达到预设的缓存服务质量要求时,调整所述缓存层次上的缓存的资源分配;第四调整子单元,适于当所述第二监控单元监测到某个缓存层次上的缓存分配未达到预设的缓存服务质量要求时,调整所述缓存层次之上至少一个缓存层次的缓存的资源分配。
可选地,所述第三调整子单元适于执行如下至少一种:根据监控结果调整所述缓存层次的负载流的分类方式,并根据调整后的分类方式对负载流进行相应的优先级配置;根据监控结果调整所述缓存层次上负载流的优先级配置。
可选地,所述第四调整子单元适于执行如下至少一种:根据监控结果调整所述缓存层次之上的至少一个缓存层次的负载流的分类方式,并根据调整后的分类方式对负载流进行相应的优先级配置;根据监控结果调整所述缓存层次之上的至少一个缓存层次上的负载流的优先级配置。
可选地,所述分类单元包括以下至少其中一种:第一分类子单元,适于将所述缓存上的负载流基于应用的不同进行分类;第二分类子单元,适于将所述缓存上的负载流基于内核的不同进行分类;第三分类子单元,适于将所述缓存上的负载流基于线程的不同进行分类;第四分类子单元,适于将所述缓存上的负载流基于所涉及的数据结构类型进行分类;第五分类子单元,适于将所述缓存上的负载流基于应用的事务或所述阶段进行分类;第六分类子单元,适于将所述缓存上的负载流基于数据访问的类型进行分类;第七分类子单元,适于将所述缓存上的负载流基于访问的来源进行分类。
可选地,所述缓存管理单元包括以下至少一种:空间管理子单元,适于按照所配置的优先级对相应负载流执行预设的缓存空间管理策略;年龄管理子单元,适于按照所配置的优先级对相应负载流对应的缓存行执行预设的基于年龄的优先级策略。
本发明实施例还提供了一种处理器,所述处理器包括:多个物理内核;多级缓存,包括耦接于所述多个物理内核之间的共享缓存,以及设置于所述物理内核内部的至少一级中间级缓存;缓存控制器,适于基于所述处理器的缓存层次架构及所述缓存层次特性,并根据所述缓存上负载流的差异性,将所述缓存上的负载流进行分类,并对分类后的负载流进行相应的优先级配置,按照所配置的优先级分配缓存资源及进行缓存管理。
可选地,所述缓存控制器,还适于监控所述缓存的资源分配状况,根据监控结果调整所述缓存的资源分配。
可选地,所述缓存控制器适于根据监控结果调整所述缓存上负载流的优先级配置;或/和根据监控结果调整所述缓存上负载流的分类方式,并根据调整后的分类方式对负载流进行相应的优先级配置。
可选地,所述缓存控制器还适于监控所述处理器多个缓存层次的资源分配状况,根据监控结果调整相应的一个或多个缓存层次的资源分配。
可选地,所述缓存控制器适于当监测到某个缓存层次上的缓存分配未达到预设的缓存服务质量要求时,执行以下至少一种调整操作:调整所述缓存层次上的缓存的资源分配;调整所述缓存层次之上至少一个缓存层次的缓存的资源分配。
可选地,所述缓存控制器适于执行以下至少其中一种:根据监控结果调整所述缓存层次的负载流的分类方式,并根据调整后的分类方式对负载流进行相应的优先级配置;根据监控结果调整所述缓存层次上负载流的优先级配置;根据监控结果调整所述缓存层次之上的至少一个缓存层次的负载流的分类方式,并根据调整后的分类方式对负载流进行相应的优先级配置;根据监控结果调整所述缓存层次之上的至少一个缓存层次上的负载流的优先级配置。
可选地,所述缓存控制器适于执行以下至少一种分类方式:将所述缓存上的负载流基于应用的不同进行分类;将所述缓存上的负载流基于内核的不同进行分类;将所述缓存上的负载流基于线程的不同进行分类;将所述缓存上的负载流基于应用的事务或所处阶段进行分类;将所述缓存上的负载流基于数据访问的类型进行分类;将所述缓存上的负载流基于访问的来源进行分类。
可选地,所述缓存控制器适于按照如下至少一种方式进行缓存资源分配及缓存管理:按照所配置的优先级对相应负载流执行预设的缓存空间管理策略;按照所配置的优先级对相应负载流对应的缓存行执行预设的基于年龄的优先级策略。
可选地,所述缓存控制器适于执行如下至少一种缓存空间管理策略:按照所配置的优先级对相应负载流设置相应的缓存分区;按照所配置的优先级为相应负载流设置所占用的缓存行数;按照所配置的优先级为相应负载流分配相应结构类型的缓存。
可选地,所述缓存控制器适于基于线程或基于内核或基于访问的来源对共享缓存的负载流进行分类;基于访问的来源对中间级缓存的负载流进行分类。
可选地,所述缓存控制器适于控制所述中间级缓存采用指令和数据分离的方式进行存储。
可选地,所述缓存的缓存行中包含所述负载流的分类标识,并适于传递至下一个缓存层次。
可选地,所述负载流的分类标识包括线程标识,所述线程标识适于存储于所述缓存行的硬件线程标识或内核标识或地址空间标识符并与缓存行一起传递至下一缓存层次。
可选地,所述处理器还包括:功能反馈接口,适于在接收到预设的缓存管理功能查询指令时,反馈所述处理器所支持的缓存管理功能。
本发明实施例还提供了一种处理器可读的存储介质,其上存储有指令,当通过处理器执行所述指令时,适于执行上述任一实施例所述的缓存管理方法。
采用本发明实施例,基于计算设备的缓存层次架构及所述缓存所处缓存层次特性,并根据所述缓存上负载流的差异性,将所述缓存上的负载流进行分类,并对分类后的负载流进行相应的优先级配置,按照所配置的优先级分配缓存资源及进行缓存管理。由于这一方案不是独立地对某一个缓存层次进行单独管理,而是统筹考虑到整体的缓存层次架构,以及所述缓存所处缓存层次的特性和所述缓存上负载流的差异性,将缓存管理分散到多个缓存层次级别,因而可以优化缓存分配和管理方案,满足负载流差异化的服务质量需求,提升各级缓存整体服务质量;并且,由于缓存管理基于整体的缓存层次架构,从而实现系统级的缓存管理,并且可以适应缓存拓扑结构的变化,故具有较强的灵活性和可扩展性。
附图说明
图1示出了本发明实施例中一种缓存管理方法的流程图;
图2示出了本发明实施例中一种处理器的结构示意图;
图3示出了本发明实施例中一种通过软硬件结合方式实现缓存管理的系统架构图;
图4示出了本发明实施例中一种通过软硬件结合方式实现缓存管理的流程图;
图5示出了本发明实施例中一种缓存控制器的结构示意图;
图6示出了本发明实施例中一种处理器的结构示意图。
具体实施方式
如前所述,目前,对于多核处理器等计算设备,缓存管理基本上均是针对LLC进行,例如在LLC应用预设的缓存分配策略和代码和数据分离(Instruction Data Separation,IDS)的QoS管理方案。目前上述方案的缓存管理的服务质量仍有待提高。
为提升缓存管理的服务质量,本发明实施例不是独立地对某一个缓存层次进行单独管理,而是统筹考虑整体的缓存层次架构,以及所述缓存所处缓存层次特性和所述缓存上负载流的差异性,将缓存管理分散到多个缓存层次级别,从而可以满足负载差异化的服务质量需求,提升各级缓存整体服务质量。
为使本领域技术人员更好地理解和实现本发明实施例,以下参照附图,通过具体步骤进行详细说明。
S11,基于计算设备的缓存层次架构及所述缓存所处缓存层次特性,并根据所述缓存上负载流的差异性,将所述缓存上的负载流进行分类,并对分类后的负载流进行相应的优先级配置。
在具体实施中,根据计算设备的缓存层次架构及所述缓存所处缓存层次特性,根据所述缓存上负载流的差异性,可以采用适当的方式对缓存上的负载流进行分类。在本发明实施例中,对于某一缓存层次,可以采用如下其中一种或多种分类方式对负载流进行分类:
1)基于应用的不同进行分类:
在实际应用中,计算设备如云服务中心,处理的可能有邮件、网页、文件、音视频或各种应用(APP)等,不同的应用可能有不同的服务质量需求。在本发明实施例中,可以基于具体应用的不同进行分类,也可以基于应用的不同特点,基于应用的类型不同进行分类。例如,如果多种应用程序作为一个整体很大程度上是同构的,则可以归为一类并配置相同的优先级别。
2)基于内核的不同进行分类:
在具体实施中,可以根据内核的性能差异性、结构差异性或内核的功能不同进行分类。例如,对于多个核心的共享缓存,可以将帮助应用程序的专用内核与主应用程序内核分为不同类别,并配置不同的优先级别。
3)基于线程的不同进行分类:
在具体实施中,可以根据线程的时延需求,将时延性的差别对线程进行分类,将时延性需求在同一区间内的分为一类,并配置相应的优先级别。
4)基于所涉及的数据结构类型进行分类:
计算设备在运行过程中,典型的缓存访问流涉及的数据结构根据访问频率可以分为三类:(1)频繁类型;(2)一般类型;(3)冷门数据。在具体实施中,应用程序开发人员或编译器可以对应用程序进行概要分析并识别出应用所涉及的数据结构类型,将不同数据结构类型的负载流可以配置相应的优先级。
5)基于应用的事务或所处阶段进行分类:
在具体实施中,开发人员可以为应用程序处理的每个阶段或事务配置相应的优先级。
6)基于数据访问的类型进行分类:
例如,可以区分出负载流是预取流或访问流。对于访问流,可以配置更高的优先级别。
7)基于访问的来源进行分类:
在具体实施中,程序片段根据功能可以分为指令和数据,进而可以将指令流与数据流配置不同的优先级。
在具体实施中,上述多种分类方式在某一个缓存层次,可以单独使用,也可以根据需要采用多种分类方式,多种分类方式也可以配合使用。
例如在某一个缓存层次,可以对负载流基于访问的来源进行分类,同时也根据线程的不同进行分类。进而这两种分类方式可以配合使用,基于一个统一的优先级体系,配置各个不同类别的优先级。
在具体实施中,硬件识别上述负载流的分类标识,例如内核标识CoreID或线程标识Tid,并将包含上述负载流的分类标识的缓存行进行存储或加载,或传递至下一缓存层次。
S12,按照所配置的优先级分配缓存资源及进行缓存管理。
在具体实施中,基于不同的优先级,可以设置相应的缓存资源分配策略及缓存管理策略。例如,可以按照所配置的优先级对相应负载流执行预设的缓存空间管理策略,或者按照所配置的优先级对相应负载流对应的缓存行执行预设的基于年龄(Age)的优先级策略。可以理解的是,在具体实施中,可以根据需要,例如优先级配置的精细度或者缓存分配的颗粒度,将两种或多种策略结合使用。
对于任一级缓存空间,根据需要,可以灵活设置相应的缓存空间管理策略。例如,可以采用如下其中任意一种或多种:按照所配置的优先级为相应负载流设置相应的缓存分区;按照所配置的优先级为相应负载流设置所占用的缓存行数;按照所配置的优先级为相应负载流分配相应结构类型的缓存,如集关联缓存(Set-associative Cache)、流缓冲区(Stream Buffer)或淘汰缓存/缓冲区(Victim Cache/Buffer)。
采用本发明实施例,统筹考虑到整体的缓存层次架构,以及所述缓存所处缓存层次的特性和所述缓存上负载流的差异性,将缓存管理分散到多个缓存层次级别,因而可以优化缓存分配和管理方案,满足负载流差异化的服务质量需求,提升各级缓存整体服务质量;并且,由于缓存管理基于整体的缓存层次架构,因而可以适应缓存拓扑结构的变化,故具有较强的灵活性和可扩展性;此外也可以减少软件或硬件控制的复杂性。
在本发明实施例中,所述计算设备可以包括处理器,所述处理器可以包括多个物理内核和与所述多个物理内核耦接的共享缓存,所述物理内核包括至少一级中间级缓存(Middle Level Cache,MLC)。可以采用上述实施例所述方法对所述处理器的缓存进行管理,优化缓存服务质量,提升缓存管理方案的灵活性和可扩展性。
以下通过一个处理器具体的缓存架构进行详细介绍。参照图2所示的处理器架构示意图,包括内核0、内核1、内核2、内核3共四个内核,各内核内部分别包含一级缓存L1和二级缓存L2,各内核之间共享最后一级缓存(LLC)。一级缓存L1中采用IDS策略,指令I和数据D分离存储,因此一级缓存L1包括一级指令缓存L1I和一级数据缓存L1D。
对上述处理器中的缓存架构进行研究可知,虽然二级缓存L2对于处理器而言是一个私有缓存,但是对于一级指令缓存L1I和一级数据缓存L1D而言是共享缓存。二级缓存L2也被核内运行的两个线程共享。缓存L2和L3的访问延迟非常显著,例如,缓存L2的访问延迟可能是12个时钟周期,而缓存L3的访问延迟是34个时钟周期。
基于以上三级缓存层次架构以及同步多线程(Simultaneous Multi-Threading,SMT)在当今顶级处理器中是相当通用的。针对具有上述架构的处理器,在本发明一实施例中,考虑到上述缓存层次架构,及每一缓存层次的不同特点,可以采用与之相适应的缓存分配及管理策略。
具体而言,在二级缓存L2,可以基于访问的来源对负载流进行分类,即采用指令和数据分离(IDS)的方式进行存储,指令和数据可以根据所配置的优先级分配相应的缓存分区;在二级缓存L2,也可以基于线程进行分类,不同的线程配置不同的优先级,不同优先级的线程对应不同的时延。
而对于所述共享缓存L3,则可以有更大的自由度选择基于何种缓存管理策略。例如可以基于线程(Thread Based)的不同进行缓存管理,忽略指令或数据的(Ignoring I orD)差异;或基于内核(Core Based)的不同进行缓存管理;或基于访问的来源(按照指令和数据分类)进行缓存管理;或采用静态配置(Static Partitioning)的方式并支持基于再次访问时间间隔预测距离(Re-reference Interval Prediction Distance,RD)的高级密码引擎(Advanced Cryptography Engine,ACE)(RD-Based ACE)功能。
可以理解的是,以上仅限举例说明,并不用于限制本发明实施例所采取的缓存管理策略。例如对于L2等中间级缓存(MLC),可以基于应用的不同进行缓存管理,或基于访问的来源的不同进行缓存管理,可以基于应用的不同进行分类,或基于所涉及的数据结构类型进行分类,如此等等。根据所处缓存级别及负载流的特性均可进行分类,只要能够便于缓存资源利用的优化,提升缓存服务质量即可。
同样地,内核之间的共享缓存(如LLC)也可以根据负载流的特性及缓存服务质量要求对负载流进行分类,并进行相应的缓存管理。需要说明的是,多个缓存层次之间,各级缓存相对于其上一级缓存,缓存管理分类及资源配置过程中具有更大的自由度,其可以基于上一级或多级的资源分配情况对本级缓存的资源进行更加合理的分配及调度。如此一来,对于一个应用的各个线程,可以在其运行的每一级缓存均进行缓存管理,从而可以实现在空间纵向层次上的全方位的缓存管理,也可以从所述应用的全生命周期对其资源应用进行闭环控制,从而可以实现缓存服务质量的精细化管理。
为使缓存层次架构的每一层次均可有更大的自由度及灵活性进行缓存管理,可以在相应的缓存行中设置相应的负载流分类标识,并适于传递至下一个缓存层次。
在具体实施中,采用本发明实施例对于现有微架构而言可能存在一些挑战。例如在中间缓存驱逐(Eviction)过程中,可能存在线程标识(threadID)Tid等负载流标识丢失的情形。
针对这一问题,本发明实施例采用在中间级缓存行中设置相应的负载类别标识,并可以随所述缓存行传递至其他缓存层次。
在本发明一实施例中,在中间级缓存中设置1位线程信息(thread info)Tid用于区分负载流所属的线程,在传输至下一缓存层次时,为降低系统开销,可以将其放进内核标识(CoreID),之后与缓存行一起(可以包括1位线程标识Tid和已存在的IDS分离标识)通过CoreID传递至下一个缓存层次。
在本发明另一实施例中,利用现有的标签传递负载流的分类标识,如地址空间标识符(Address Space Identifer,ASID),由于ASID已经在标签数组中,因此不需要额外的存储开销,从而可以节约存储资源。
面向缓存的QoS系统架构比较复杂。在具体实施中,为便于进行缓存管理,可以采用资源隔离技术与参与(Resource Isolation Technology and Engagement,RITE)技术,RITE技术并非仅是一种硬件技术,而是由硬件、内核支持层和用户接口层组成的系统级体系结构。在本发明实施例中,参照图3所示的是通过软硬件结合方式进行缓存管理的系统架构图。如图3所示,采用RITE技术允许操作系统或虚拟机管理器来分配应用程序可以使用的硬件资源的数量,包括共享缓存的容量和位置等。在软件方面,可以使用CPUID枚举给定平台的功能,并决定支持哪些服务级别,应用程序可以选择其想要的QoS级别,并请求系统管理员进行分配,就像一个客户(Client)与一个服务提供商签署服务级别协议(ServiceLevel Agreement,SLA)一样。
参照图4所述的是一种通过软硬件结合方式实现缓存管理的流程图,以下结合图3和图4进行详细说明。
如图4所示,软硬件结合实现缓存管理,可以通过三个阶段实现。
首先是系统配置阶段S41。在系统配置(Configuration)阶段S41,具体可以执行如下环节:
S411,CPUID枚举和系统配置(System Configure,SYSCFG)功能启用。
S412,对于系统管理员而言,可以进行指定域和初始化配置,如容量位元屏蔽(Capacity Bit Mask,CBM),RD等,例如为QSL_MSR0~QSL_MSR0分别配置CBM和RD等。
在绑定(BINDING)阶段S42,具体可以执行如下环节:
S421,操作系统(OS)可以执行上下文切换(Context Switch)。
S422,对于虚拟机监控程序而言,可以选择一个空的服务级别或者选择一个具有相同配置的已存在的服务级别,将ACE服务级别的值(SL value)写入到所绑定的模式状态寄存器(ACE_BIND_Mode Status Register,ACE_BIND_MSR)中。
接下来,即可进入参与(Engagement)阶段S43,具体可以包括如下环节:
S431,应用程序发出内存使用请求。
S432,将其标记为ACE服务级别。
S433,事务和操作系统分配的ACE服务级别的值作为负载流一起传递至相应的缓存。
S434,根据对应的ACE服务级别的值采用相应的缓存分配及管理策略。
在本实施例中,ACE服务级别即对应本发明实施例中的优先级别。在具体实施中相应的缓存分配及管理策略包括缓存空间的分配(Allocation)、路径的替换(ReplacementWay)、数据集(Set)、RRIP设置等。
在接收到预设的缓存管理功能查询指令时,可以反馈所述计算设备所采用的缓存管理方法。在具体实施中,为增强与现有系统的兼容性,可以考虑利用现有体系架构/软件的惯用接口进行交互。例如,为增强与X86体系架构的兼容性,可以通过CPUID指令来向开发人员反馈本发明实施例所实现的QoS管理功能。
以上实施例示例了包含4个内核的处理器的缓存层次架构及其缓存管理方案。可以理解的是,在具体实施中,处理器中内核的数量可以为2个以上均可,各个内核内部的缓存层次架构可以相同,也可以不同,各个内核之间可以有一级或多级共享缓存。不论内核数量多少及具体的缓存层次架构,均可根据需要,采用本发明实施例的缓存管理方法提升缓存服务质量。
在具体实施中,还可以对上述实施例作进一步的扩展,以下通过具体实施例进行说明。
在本发明实施例中,除了可以基于缓存整体层次架构进行缓存管理外,还可以根据缓存情况的实际变化对缓存管理方案进行适应性调整。
在具体实施中,可以监控所述缓存的资源分配状况,根据监控结果调整所述缓存的资源分配。具体而言,可以根据监控结果调整所述缓存上负载流的分类方式,并根据调整后的分类方式对负载流进行相应的优先级配置;或者,根据监控结果调整所述缓存上负载流的优先级配置。可以理解的是,上述调整方案也可以根据需要配合使用。
在具体实施中,还可以监控所述计算设备多个缓存层次的资源分配状况,根据监控结果调整相应的一个或多个缓存层次的资源分配。例如,当监测到某个缓存层次上的缓存分配未达到预设的缓存服务质量要求时,执行以下至少一种调整操作:调整所述缓存层次上的缓存的资源分配;调整所述缓存层次之上至少一个缓存层次的缓存的资源分配。
在具体实施中,所述根据监控结果调整相应的一个或多个缓存层次的资源分配,可以有多种方式。例如,可以根据需要采用如下一种或多种方式:根据监控结果调整所述缓存层次的负载流的分类方式,并根据调整后的分类方式对负载流进行相应的优先级配置;根据监控结果调整所述缓存层次上负载流的优先级配置;根据监控结果调整所述缓存层次之上的至少一个缓存层次的负载流的分类方式,并根据调整后的分类方式对负载流进行相应的优先级配置;根据监控结果调整所述缓存层次之上的至少一个缓存层次上的负载流的优先级配置。
为使本领域技术人员更好地理解和实现本发明实施例,以下参照附图对可以实现本发明实施例缓存管理方法的缓存控制器进行相应介绍。
参照图5所示的是缓存控制器的结构示意图,本发明一实施例的缓存控制器50包括:分类单元51、优先级配置单元52和缓存管理单元53,其中:
分类单元51,适于基于缓存层次架构及所述缓存所处缓存层次特性,并根据所述缓存上负载流的差异性,将所述缓存上的负载流进行分类;
优先级配置单元52,适于对分类后的负载流进行相应的优先级配置;
缓存管理单元53,适于按照所配置的优先级分配缓存资源及进行缓存管理。
采用上述缓存控制器,统筹考虑到整体的缓存层次架构,以及所述缓存所处缓存层次的特性和所述缓存上负载流的差异性,将缓存管理分散到多个缓存层次级别,因而可以优化缓存分配和管理方案,满足负载流差异化的服务质量需求,提升各级缓存整体服务质量;并且,由于缓存管理基于整体的缓存层次架构,从而实现系统级的缓存管理,并且可以适应缓存拓扑结构的变化,故具有较强的灵活性和可扩展性。
在具体实施中,参照图5,缓存控制器50还可包括:第一监控单元54,适于监控所述缓存的资源分配状况;第一调整单元55,适于根据监控结果调整所述缓存的资源分配。
在具体实施中,所述第一调整单元55可以包括以下至少一种:
第一调整子单元(未示出),适于根据监控结果调整所述缓存上负载流的分类方式,并根据调整后的分类方式对负载流进行相应的优先级配置;
第二调整子单元(未示出),适于根据监控结果调整所述缓存上负载流的优先级配置。
在具体实施中,参照图5所示的缓存控制器,缓存控制器50还可包括:第二监控单元56,适于监控各个缓存层次的资源分配状况;第二调整单元57,适于根据第二监控单元的监控结果调整相应的一个或多个缓存层次的资源分配。
在具体实施中,所述第二调整单元57可以包括以下至少一种:
第三调整子单元(未示出),适于当所述第二监控单元监测到某个缓存层次上的缓存分配未达到预设的缓存服务质量要求时,调整所述缓存层次上的缓存的资源分配;
第四调整子单元(未示出),适于当所述第二监控单元监测到某个缓存层次上的缓存分配未达到预设的缓存服务质量要求时,调整所述缓存层次之上至少一个缓存层次的缓存的资源分配。
在本发明一实施例中,所述第三调整子单元(未示出)适于执行如下至少一种:根据监控结果调整所述缓存层次的负载流的分类方式,并根据调整后的分类方式对负载流进行相应的优先级配置;根据监控结果调整所述缓存层次上负载流的优先级配置。
在本发明一实施例中,所述第四调整子单元(未示出)适于执行如下至少一种:根据监控结果调整所述缓存层次之上的至少一个缓存层次的负载流的分类方式,并根据调整后的分类方式对负载流进行相应的优先级配置;根据监控结果调整所述缓存层次之上的至少一个缓存层次上的负载流的优先级配置。
所述分类单元51可以包括以下至少其中一种:
第一分类子单元(未示出),适于将所述缓存上的负载流基于应用的不同进行分类;
第二分类子单元(未示出),适于将所述缓存上的负载流基于内核的不同进行分类;
第三分类子单元(未示出),适于将所述缓存上的负载流基于线程的不同进行分类;
第四分类子单元(未示出),适于将所述缓存上的负载流基于所涉及的数据结构类型进行分类;
第五分类子单元(未示出),适于将所述缓存上的负载流基于应用的事务或所述阶段进行分类;
第六分类子单元(未示出),适于将所述缓存上的负载流基于访问的来源进行分类;
第七分类子单元(未示出),适于将所述缓存上的负载流基于数据访问的类型进行分类。
在具体实施中,所述缓存管理单元53可以包括以下至少一种:空间管理子单元531,适于按照所配置的优先级对相应负载流执行预设的缓存空间管理策略;年龄管理子单元532,适于按照所配置的优先级对相应负载流对应的缓存行执行预设的基于年龄的优先级策略。
在具体实施中,所述空间管理子单元531可以包括以下至少一种:第一空间管理模块(未示出),适于按照所配置的优先级对相应负载流设置相应的缓存分区;第二空间管理模块(未示出),适于按照所配置的优先级为相应负载流设置所占用的缓存行数;第三空间管理模块(未示出),适于按照所配置的优先级为相应负载流分配相应结构类型的缓存。
在具体实施中,所述缓存的缓存行中可以包含所述负载流的分类标识,并适于传递至下一个缓存层次。
在本发明一实施例中,所述负载流的分类标识包括线程标识,所述线程标识适于存储于缓存行的硬件线程标识(HW-Thread ID)或内核标识(CoreID)或地址空间标识符(Address Space Identifier,ASID)并与缓存行一起传递至下一个缓存层次。
本发明实施例还提供了采用上述缓存管理方法的处理器,以下通过具体实施例进行对应介绍。
参照图6所述的处理器的结构示意图,在本发明实施例中,处理器60可以包括:多个物理内核(如:内核0~4);多级缓存(L1、L2、L3),包括耦接于所述多个物理内核之间的共享缓存(如L3),以及设置于所述物理内核内部的至少一级中间级缓存(如L2);缓存控制器61,适于基于所述处理器60的缓存层次架构及所述缓存层次特性,并根据所述缓存上负载流的差异性,将所述缓存上的负载流进行分类,并对分类后的负载流进行相应的优先级配置,按照所配置的优先级分配缓存资源及进行缓存管理。
在具体实施中,所述缓存控制器61,还适于监控所述缓存的资源分配状况,根据监控结果调整所述缓存的资源分配。例如,所述缓存控制器61适于根据监控结果调整所述缓存上负载流的优先级配置;或/和根据监控结果调整所述缓存上负载流的分类方式,并根据调整后的分类方式对负载流进行相应的优先级配置。
在具体实施中,所述缓存控制器61还适于监控所述处理器多个缓存层次的资源分配状况,根据监控结果调整相应的一个或多个缓存层次的资源分配。例如,所述缓存控制器适于当监测到某个缓存层次上的缓存分配未达到预设的缓存服务质量要求时,执行以下至少一种调整操作:调整所述缓存层次上的缓存的资源分配;调整所述缓存层次之上至少一个缓存层次的缓存的资源分配。
在具体实施中,所述缓存控制器61适于执行以下至少其中一种:
根据监控结果调整所述缓存层次的负载流的分类方式,并根据调整后的分类方式对负载流进行相应的优先级配置;
根据监控结果调整所述缓存层次上负载流的优先级配置;
根据监控结果调整所述缓存层次之上的至少一个缓存层次的负载流的分类方式,并根据调整后的分类方式对负载流进行相应的优先级配置;
根据监控结果调整所述缓存层次之上的至少一个缓存层次上的负载流的优先级配置。
在具体实施中,所述缓存控制器61适于执行以下至少一种分类方式:
将所述缓存上的负载流基于应用的不同进行分类;
将所述缓存上的负载流基于内核的不同进行分类;
将所述缓存上的负载流基于线程的不同进行分类;
将所述缓存上的负载流基于应用的事务或所处阶段进行分类;
将所述缓存上的负载流基于数据访问的类型进行分类;
将所述缓存上的负载流基于访问的来源进行分类。
在具体实施中,所述缓存控制器71适于按照如下至少一种方式进行缓存资源分配及缓存管理:按照所配置的优先级对相应负载流执行预设的缓存空间管理策略;按照所配置的优先级对相应负载流对应的缓存行执行预设的基于年龄的优先级策略。
在具体实施中,所述缓存控制器71适于执行如下至少一种缓存空间管理策略:
按照所配置的优先级对相应负载流设置相应的缓存分区;
按照所配置的优先级为相应负载流设置所占用的缓存行数;
按照所配置的优先级为相应负载流分配相应结构类型的缓存。
在具体实施中,所述缓存控制器71适于基于线程或基于内核或基于访问的来源对共享缓存的负载流进行分类;基于访问的来源对中间级缓存的负载流进行分类。
在本发明一实施例中,所述缓存控制器73控制所述中间级缓存采用指令和数据分离的方式进行存储。
在具体实施中,所述缓存的缓存行中可以包含所述负载流的分类标识,并适于传递至下一个缓存层次。例如,所述负载流的分类标识可以包括线程标识,所述线程标识适于存储于所述缓存行的HW-Thread ID或CoreID或ASID并传递至下一缓存层次。
在具体实施中,为增强处理器与现有X86系统架构的兼容性,参照图6,所述处理器还可以包括:功能反馈接口62,适于在接收到预设的缓存管理功能查询指令时,反馈所述处理器所支持的缓存管理功能。
在本发明一实施例中,对于X86系统,所述功能反馈接口62适于在接收到以EAX=07H,ECX=0H为输入的CPUID指令时,通过输出相应的CPUID的EBX的第15位的值为1,反馈处理器支持基于共享处理器资源的软件控制功能;并通过CPUID指令的叶子10H枚举可用资源类型、服务类别和功能位掩码的其他详细信息;在接收到以EAX=10H,ECX=2为输入的CPUID指令时,通过输出相应的CPUID的ECX的第2位为1,反馈相应中间级缓存支持指令和数据分离。
采用本发明实施例,基于计算设备的缓存层次架构及所述缓存所处缓存层次特性,并根据所述缓存上负载流的差异性,将所述缓存上的负载流进行分类,并对分类后的负载流进行相应的优先级配置,按照所配置的优先级分配缓存资源及进行缓存管理。由于这一方案不是独立地对某一个缓存层次进行单独管理,而是统筹考虑到整体的缓存层次架构,以及所述缓存所处缓存层次的特性和所述缓存上负载流的差异性,将缓存管理分散到多个缓存层次级别,因而可以优化缓存分配和管理方案,满足负载流差异化的服务质量需求,提升各级缓存整体服务质量;并且,由于缓存管理基于整体的缓存层次架构,从而实现系统级的缓存管理,并且可以适应缓存拓扑结构的变化,故具有较强的灵活性和可扩展性。
进一步地,通过监控所述缓存的资源分配情况,根据监控结果调整所述缓存的资源分配,从而可以根据缓存上的负载流的变化进行适应性变化,因而上述缓存管理方案具有较强的可适应性,保持缓存服务质量的稳定性,进而也可以提高所述计算设备所处理业务的柔韧性。
进一步地,根据监控结果调整所述缓存上负载流的分类方式,并根据调整后的分类方式对负载流进行相应的优先级配置,从而可以适应负载流类型的变化,故上述缓存管理方法具有较强的可适应性及可靠性,保持缓存服务质量的稳定性。
进一步地,根据监控结果调整所述缓存上负载流的优先级配置,可以适应负载流优先级级别的变化,从而可以提升缓存管理方案的可适应性及可靠性,保持缓存服务质量的稳定性。
进一步地,通过监控所述计算设备多个缓存层次的资源分配状况,根据监控结果调整相应的一个或多个缓存层次的资源分配,从而可以优化所述计算设备整体的缓存性能,在保证负载流服务质量的同时使得计算设备整体的缓存性能得到最大化地发挥。
进一步地,当监测到某个缓存层次上的缓存分配未达到预设的缓存服务质量要求时,调整所述缓存层次之上至少一个缓存层次的缓存的资源分配,可以减轻所述缓存层次上的资源分配和管理压力,发挥多个缓存层次的协同作用。
进一步地,基于所述计算设备的缓存层次架构及所述缓存所处缓存层次特性,并根据所述缓存上负载流的差异性,可以将所述缓存上的负载流基于应用的不同进行分类,或者基于内核的不同进行分类,或者基于线程的不同进行分类,或基于所涉及的数据结构类型进行分类,或基于应用的事务或所处阶段进行分类,或基于访问的来源进行分类,或基于数据访问的类型进行分类,如此可以根据负载流的具体特点进行分类,并配置相应的优先级,从而可以满足负载流的多样化的服务质量需求。
进一步地,按照所配置的优先级对相应负载流执行预设的缓存空间管理策略,可以提升缓存空间的利用效率;而按照所配置的优先级对相应负载流对应的缓存行执行预设的基于年龄的优先级策略,可以满足负载流多样化的服务质量需求。
进一步地,按照所配置的优先级对相应负载流设置相应的缓存分区,或者按照所配置的优先级为相应负载流设置所占用的缓存行数,或者按照所配置的优先级为相应负载流分配相应结构类型的缓存,可以实现缓存的精细化管理,进一步提升缓存服务质量,并最大化地提升缓存的利用效率。
进一步地,对于多个物理内核之间耦接的共享缓存,基于线程或基于内核或基于访问的来源对负载流进行分类,而对于所述物理内核的至少一级中间级缓存,基于访问的来源对负载流进行分类,这一缓存管理方式充分考虑缓存层次架构及每一层次的缓存特性,一方面,通过中间级缓存的服务质量管理可以减轻共享缓存的服务质量管理压力;另一方面,共享缓存具有缓存管理配置的最大自由度,从而可以尽可能地提升缓存服务质量。
进一步地,通过缓存的缓存行中包含负载流的分类标识,并传递至下一个缓存层次,可以提升下一缓存层次架构进行缓存管理的自由度。
进一步地,通过缓存行的硬件线程标识或内核标识或地址空间标识符等传递缓存标识至下一个缓存层次,可以减小微架构的存储及带宽资源开销。
进一步地,通过预设的缓存管理功能查询指令,可以获取所述计算设备所采用的缓存管理方法,从而便于应用开发人员了解所述计算设备所支持的缓存管理功能并应用,增强易用性,提高用户交互体验。
可以理解的是,本发明实施例可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用的硬件,但很多情况下前者可能是优选的实施方式。基于这样的理解,本发明的技术方案本质上以软件、硬件、固件或它们的任意组合的方式体现,该计算机软件产品存储在可读取的存储介质中,如磁性存储介质(例如硬盘)或电子存储介质(例如ROM、闪存)等,包括若干指令用以使得一台计算设备(可以是计算机、服务器或者网络设备等)执行本发明各个实施例所述的方法。
本领域内技术人员应明白,本发明的实施例可实现为方法、系统、或计算机程序产品。因此,本发明的实施例可以为硬件、软件、固件或它们任意组合的形式。而且,本发明的实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。其应理解为可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器得到机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

Claims (18)

1.一种缓存管理方法,其特征在于,包括:
基于计算设备的缓存层次架构及缓存所处缓存层次特性,并根据所述缓存上负载流的差异性,将所述缓存上的负载流进行分类,所述将所述缓存上的负载流进行分类,包括以下至少其中一种:
将所述缓存上的负载流基于应用的不同进行分类;
将所述缓存上的负载流基于内核的不同进行分类;
将所述缓存上的负载流基于线程的不同进行分类;
将所述缓存上的负载流基于所涉及的数据结构类型进行分类;
将所述缓存上的负载流基于应用的事务或所处阶段进行分类;
将所述缓存上的负载流基于数据访问的类型进行分类;
将所述缓存上的负载流基于访问的来源进行分类;
并对分类后的负载流进行相应的优先级配置;
按照所配置的优先级分配缓存资源及进行缓存管理,所述按照所配置的优先级分配缓存资源及进行缓存管理,包括以下至少一种:
按照所配置的优先级对相应负载流执行预设的缓存空间管理策略;
按照所配置的优先级对相应负载流对应的缓存行执行预设的基于年龄的优先级策略。
2.根据权利要求1所述的缓存管理方法,其特征在于,还包括:监控所述缓存的资源分配状况,根据监控结果调整所述缓存的资源分配。
3.根据权利要求2所述的缓存管理方法,其特征在于,所述根据监控结果调整所述缓存的资源分配及进行缓存管理,包括以下至少一种:
根据监控结果调整所述缓存上负载流的分类方式,并根据调整后的分类方式对负载流进行相应的优先级配置;
根据监控结果调整所述缓存上负载流的优先级配置。
4.根据权利要求1所述的缓存管理方法,其特征在于,还包括:监控所述计算设备多个缓存层次的资源分配状况,根据监控结果调整相应的一个或多个缓存层次的资源分配。
5.根据权利要求4所述的缓存管理方法,其特征在于,所述根据监控结果调整相应的一个或多个缓存层次的资源分配,包括:
当监测到某个缓存层次上的缓存分配未达到预设的缓存服务质量要求时,执行以下至少一种调整操作:
调整所述缓存层次上的缓存的资源分配;
调整所述缓存层次之上至少一个缓存层次的缓存的资源分配。
6.根据权利要求5所述的缓存管理方法,其特征在于,所述根据监控结果调整相应的一个或多个缓存层次的资源分配,包括以下至少其中一种:
根据监控结果调整所述缓存层次的负载流的分类方式,并根据调整后的分类方式对负载流进行相应的优先级配置;
根据监控结果调整所述缓存层次上负载流的优先级配置;
根据监控结果调整所述缓存层次之上的至少一个缓存层次的负载流的分类方式,并根据调整后的分类方式对负载流进行相应的优先级配置;
根据监控结果调整所述缓存层次之上的至少一个缓存层次上的负载流的优先级配置。
7.根据权利要求1所述的缓存管理方法,其特征在于,所述按照所配置的优先级对相应负载流执行预设的缓存空间管理策略,包括以下至少一种:
按照所配置的优先级为相应负载流设置相应的缓存分区;
按照所配置的优先级为相应负载流设置所占用的缓存行数;
按照所配置的优先级为相应负载流分配相应结构类型的缓存。
8.根据权利要求1所述的缓存管理方法,其特征在于,所述计算设备包括处理器,所述处理器包括多个物理内核和与所述多个物理内核耦接的共享缓存,所述物理内核包括至少一级中间级缓存。
9.根据权利要求8所述的缓存管理方法,其特征在于,所述基于所述计算设备的缓存层次架构及所述缓存所处缓存层次特性,并根据所述缓存上负载流的差异性,将所述缓存上的负载流进行分类,并对分类后的负载流进行相应的优先级配置包括:
对于所述共享缓存,基于线程或基于内核或基于访问的来源对负载流进行分类;
对于所述物理内核的至少一级中间级缓存,基于访问的来源对负载流进行分类。
10.根据权利要求9所述的缓存管理方法,其特征在于,所述按照所配置的优先级分配缓存资源及进行缓存管理,包括:
对于所述中间级缓存,采用指令和数据分离的方式进行存储。
11.根据权利要求9所述的缓存管理方法,其特征在于,所述缓存的缓存行中包含所述负载流的分类标识,并适于传递至下一个缓存层次。
12.根据权利要求11所述的缓存管理方法,其特征在于,所述负载流的分类标识包括:线程标识,所述线程标识适于存储于缓存行的硬件线程标识或内核标识或地址空间标识符并与缓存行一起传递至下一个缓存层次。
13.根据权利要求1所述的缓存管理方法,其特征在于,还包括:在接收到预设的缓存管理功能查询指令时,反馈所述计算设备采用的缓存管理方法。
14.一种缓存控制器,其特征在于,包括:
分类单元,适于基于计算设备的缓存层次架构及缓存所处缓存层次特性,并根据所述缓存上负载流的差异性,将所述缓存上的负载流进行分类,所述将所述缓存上的负载流进行分类,包括以下至少其中一种:
将所述缓存上的负载流基于应用的不同进行分类;
将所述缓存上的负载流基于内核的不同进行分类;
将所述缓存上的负载流基于线程的不同进行分类;
将所述缓存上的负载流基于所涉及的数据结构类型进行分类;
将所述缓存上的负载流基于应用的事务或所处阶段进行分类;
将所述缓存上的负载流基于数据访问的类型进行分类;
将所述缓存上的负载流基于访问的来源进行分类;
优先级配置单元,适于对分类后的负载流进行相应的优先级配置;
缓存管理单元,适于按照所配置的优先级分配缓存资源及进行缓存管理,所述按照所配置的优先级分配缓存资源及进行缓存管理,包括以下至少一种:按照所配置的优先级对相应负载流执行预设的缓存空间管理策略;
按照所配置的优先级对相应负载流对应的缓存行执行预设的基于年龄的优先级策略。
15.根据权利要求14所述的缓存控制器,其特征在于,还包括:
第一监控单元,适于监控所述缓存的资源分配状况;
第一调整单元,适于根据监控结果调整所述缓存的资源分配。
16.根据权利要求15所述的缓存控制器,其特征在于,所述第一调整单元包括以下至少一种:
第一调整子单元,适于根据监控结果调整所述缓存上负载流的分类方式,并根据调整后的分类方式对负载流进行相应的优先级配置;
第二调整子单元,适于根据监控结果调整所述缓存上负载流的优先级配置。
17.一种处理器,其特征在于,包括:
多个物理内核;
多级缓存,包括耦接于所述多个物理内核之间的共享缓存,以及设置于所述物理内核内部的至少一级中间级缓存;
缓存控制器,适于基于计算设备的缓存层次架构及缓存所处缓存层次特性,并根据所述缓存上负载流的差异性,将所述缓存上的负载流进行分类,所述将所述缓存上的负载流进行分类,包括以下至少其中一种:将所述缓存上的负载流基于应用的不同进行分类;
将所述缓存上的负载流基于内核的不同进行分类;
将所述缓存上的负载流基于线程的不同进行分类;
将所述缓存上的负载流基于所涉及的数据结构类型进行分类;
将所述缓存上的负载流基于应用的事务或所处阶段进行分类;
将所述缓存上的负载流基于数据访问的类型进行分类;
将所述缓存上的负载流基于访问的来源进行分类;
并对分类后的负载流进行相应的优先级配置;
按照所配置的优先级分配缓存资源及进行缓存管理,所述按照所配置的优先级分配缓存资源及进行缓存管理,包括以下至少一种:
按照所配置的优先级对相应负载流执行预设的缓存空间管理策略;
按照所配置的优先级对相应负载流对应的缓存行执行预设的基于年龄的优先级策略。
18.一种处理器可读的存储介质,其上存储有指令,其特征在于,当通过处理器执行所述指令时,适于执行权利要求1-13任一项所述的缓存管理方法。
CN201911025619.7A 2019-04-19 2019-10-25 缓存管理方法、缓存控制器及处理器、存储介质 Active CN110795221B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/389,135 US11099999B2 (en) 2019-04-19 2019-04-19 Cache management method, cache controller, processor and storage medium
US16/389,135 2019-04-19

Publications (2)

Publication Number Publication Date
CN110795221A CN110795221A (zh) 2020-02-14
CN110795221B true CN110795221B (zh) 2022-04-12

Family

ID=69441403

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911025619.7A Active CN110795221B (zh) 2019-04-19 2019-10-25 缓存管理方法、缓存控制器及处理器、存储介质

Country Status (2)

Country Link
US (1) US11099999B2 (zh)
CN (1) CN110795221B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111858070B (zh) * 2020-08-05 2023-12-01 中国工商银行股份有限公司 计算资源配置方法、装置、设备以及存储介质
CN114217743B (zh) * 2021-09-17 2024-05-31 支付宝(杭州)信息技术有限公司 用于分布式图学习架构的数据存取方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102968390A (zh) * 2012-12-13 2013-03-13 东南大学 基于预先解码分析的配置信息缓存管理方法及系统
CN103685062A (zh) * 2013-12-02 2014-03-26 华为技术有限公司 缓存管理方法及装置
CN103870394A (zh) * 2012-12-13 2014-06-18 Arm有限公司 基于保留优先级的缓存替换策略
CN107943719A (zh) * 2017-11-28 2018-04-20 杭州电子科技大学 一种基于请求分类的闪存转换层控制方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7725657B2 (en) * 2007-03-21 2010-05-25 Intel Corporation Dynamic quality of service (QoS) for a shared cache
US7856530B1 (en) * 2007-10-31 2010-12-21 Network Appliance, Inc. System and method for implementing a dynamic cache for a data storage system
CN104252425B (zh) * 2013-06-28 2017-07-28 华为技术有限公司 一种指令缓存的管理方法和处理器
US9769050B2 (en) * 2014-12-23 2017-09-19 Intel Corporation End-to-end datacenter performance control
US20170039144A1 (en) * 2015-08-07 2017-02-09 Intel Corporation Loading data using sub-thread information in a processor
US9942631B2 (en) * 2015-09-25 2018-04-10 Intel Corporation Out-of-band platform tuning and configuration
US10204175B2 (en) * 2016-05-18 2019-02-12 International Business Machines Corporation Dynamic memory tuning for in-memory data analytic platforms
CN106775942B (zh) * 2016-12-09 2020-06-16 中国科学院软件研究所 一种云应用导向的固态盘缓存管理系统及方法
US10372622B2 (en) * 2017-01-27 2019-08-06 International Business Machines Corporation Software controlled cache line replacement within a data property dependent cache segment of a cache using a cache segmentation enablement bit and cache segment selection bits
US10545796B2 (en) * 2017-05-04 2020-01-28 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing a scheduler with preemptive termination of existing workloads to free resources for high priority items
US11294726B2 (en) * 2017-05-04 2022-04-05 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing a scalable scheduler with heterogeneous resource allocation of large competing workloads types using QoS
US20180091631A1 (en) * 2017-08-02 2018-03-29 Akamai Technologies, Inc. Systems and methods for writing prioritized http/2 data to a socket buffer
US10613972B2 (en) * 2017-12-29 2020-04-07 Intel Corporation Dynamic configuration of caches in a multi-context supported graphics processor
US10601903B2 (en) * 2018-05-17 2020-03-24 International Business Machines Corporation Optimizing dynamical resource allocations based on locality of resources in disaggregated data centers
US11888710B2 (en) * 2018-09-25 2024-01-30 Intel Corporation Technologies for managing cache quality of service
CN109491929A (zh) * 2018-11-15 2019-03-19 广东小天才科技有限公司 一种缓存数据读写方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102968390A (zh) * 2012-12-13 2013-03-13 东南大学 基于预先解码分析的配置信息缓存管理方法及系统
CN103870394A (zh) * 2012-12-13 2014-06-18 Arm有限公司 基于保留优先级的缓存替换策略
CN103685062A (zh) * 2013-12-02 2014-03-26 华为技术有限公司 缓存管理方法及装置
CN107943719A (zh) * 2017-11-28 2018-04-20 杭州电子科技大学 一种基于请求分类的闪存转换层控制方法

Also Published As

Publication number Publication date
US11099999B2 (en) 2021-08-24
US20200334160A1 (en) 2020-10-22
CN110795221A (zh) 2020-02-14

Similar Documents

Publication Publication Date Title
US11194626B2 (en) Dynamic resource allocation based on data transferring to a tiered storage
US20210255948A1 (en) Charging users for computer memory usage
US9619287B2 (en) Methods and system for swapping memory in a virtual machine environment
US8893148B2 (en) Performing setup operations for receiving different amounts of data while processors are performing message passing interface tasks
Yeh et al. KubeShare: A framework to manage GPUs as first-class and shared resources in container cloud
US8312464B2 (en) Hardware based dynamic load balancing of message passing interface tasks by modifying tasks
US7334230B2 (en) Resource allocation in a NUMA architecture based on separate application specified resource and strength preferences for processor and memory resources
US8127300B2 (en) Hardware based dynamic load balancing of message passing interface tasks
US7222343B2 (en) Dynamic allocation of computer resources based on thread type
US9135159B2 (en) Management of memory pool in virtualization environment
US8453132B2 (en) System and method for recompiling code based on locality domain and thread affinity in NUMA computer systems
US20090063885A1 (en) System and Computer Program Product for Modifying an Operation of One or More Processors Executing Message Passing Interface Tasks
US20090064166A1 (en) System and Method for Hardware Based Dynamic Load Balancing of Message Passing Interface Tasks
CN110795221B (zh) 缓存管理方法、缓存控制器及处理器、存储介质
US20110296428A1 (en) Register allocation to threads
US20110231614A1 (en) Accelerating memory operations using virtualization information
US20180239646A1 (en) Information processing device, information processing system, task processing method, and storage medium for storing program
US9015418B2 (en) Self-sizing dynamic cache for virtualized environments
US20150220442A1 (en) Prioritizing shared memory based on quality of service
Sagana et al. Performance enhancement in live migration for cloud computing environments
CN113268356B (zh) 基于LINUX系统的多GPU板卡bounding的系统、方法及介质
CN110447019B (zh) 存储器分配管理器及由其执行的用于管理存储器分配的方法
US11663026B2 (en) Allocation of accelerator resources based on job type
CN107273188B (zh) 一种虚拟机中央处理单元cpu绑定方法及装置
CN117311910B (zh) 一种高性能虚拟密码机运行方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant