CN115087961A - 用于相干及非相干存储器请求的仲裁方案 - Google Patents

用于相干及非相干存储器请求的仲裁方案 Download PDF

Info

Publication number
CN115087961A
CN115087961A CN202080091091.8A CN202080091091A CN115087961A CN 115087961 A CN115087961 A CN 115087961A CN 202080091091 A CN202080091091 A CN 202080091091A CN 115087961 A CN115087961 A CN 115087961A
Authority
CN
China
Prior art keywords
coherent
coherent memory
requests
memory
memory requests
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
CN202080091091.8A
Other languages
English (en)
Other versions
CN115087961B (zh
Inventor
索努·阿罗拉
本杰明·特西恩
亚历山大·J·布拉诺维尔
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN115087961A publication Critical patent/CN115087961A/zh
Application granted granted Critical
Publication of CN115087961B publication Critical patent/CN115087961B/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
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • 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/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • 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/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • G06F11/3062Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations where the monitored property is the power consumption
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0653Configuration or reconfiguration with centralised address assignment
    • 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
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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/5022Mechanisms to release resources
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • 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/1008Correctness of operation, e.g. memory ordering
    • 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/1028Power efficiency
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)

Abstract

系统中的处理器响应于具有多个条目的相干存储器请求缓冲器来存储来自客户端模块的相干存储器请求,且响应于具有多个条目的非相干存储器请求缓冲器来存储来自所述客户端模块的非相干存储器请求。所述客户端模块对相干存储器请求及非相干存储器请求进行缓冲,并基于所述处理器或其高速缓存中的一者的一个或多个条件来释放所述存储器请求。基于与所述相干存储器缓冲器相关联的第一水印以及与所述非相干存储器缓冲器相关联的第二水印,将所述存储器请求释放到中央数据结构并进入所述系统中。

Description

用于相干及非相干存储器请求的仲裁方案
背景技术
为了高效利用计算机资源,服务器或其他处理系统可实施虚拟化计算环境,其中处理系统并发地执行多个虚拟机或访客端。将处理系统的资源以时分复用或其他仲裁的方式提供给访客端,使得资源对于每一访客端来说显现为专用的一组硬件资源。然而,访客端的并发执行会使每一访客端容易受到未经授权的访问。为了保护私有访客端信息,基于虚拟化的安全(VBS)及其他虚拟化安全机制对处理系统提出了安全要求,包括地址转译要求。举例来说,除了由访客端操作系统执行的地址转译以外,VBS要求管理程序或其他访客端管理器为虚拟寻址提供额外地址转译层。然而,这些地址转译需求可大大增加整个处理系统的存储器业务量,包括增加相干性探测业务量,由此非所期望地增加了系统的功率消耗,同时也降低了整体处理效率。
附图说明
通过参考附图,可更好地理解本公开,并且其众多特征及优点对所属领域的技术人员来说变得显而易见。在不同附图中使用相同参考符号指示类似或等同物品。
图1是根据一些实施方案的具有相干及非相干批量控制器的系统的框图。
图2是图解说明根据一些实施方案的用于相干转译请求的仲裁方案的方法的时序图。
图3是根据一些实施方案的单独的相干及非相干存储器带宽监视器的框图。
图4是图解说明根据一些实施方案的用于相干及非相干存储器请求的仲裁方案的方法的流程图。
图5是根据一些实施方案的图1的系统的处理器的框图。
图6是根据一些实施方案的相干及非相干控制器的框图。
图7是根据一些实施方案的支持多个直接存储器访问(DMA)客户端的客户端装置的框图。
图8是根据一些实施方案的地址转译系统的框图。
具体实施方式
图1到图8公开了用于通过针对相干及非相干存储器业务而实施单独缓冲器及水印阈值来管理处理系统的互连之上的存储器业务的技术。由此,处理系统以不同速率并取决于不同处理系统条件(例如接收业务的处理器核心是否处于低功率状态)来提供不同类型的业务(也就是说,相干及非相干请求)。通过这样做,可降低整体系统功率消耗并提高存储器性能。
为了进行图解说明,在一些实施方案中,处理系统采用互连在不同系统模块之间(例如在系统中的中央处理单元(CPU)、图形处理单元(GPU)与系统存储器之间)携载存储器业务,包括存储器访问请求及相干性探测。GPU是在系统中生成存储器请求的客户端模块或客户端装置的一个实例。存储器“请求”及“探测”在本文中被同义地使用,其中“探测”及“相干性探测”的使用通常是指涉及确定特定存储器值(存储器位置中的数据)的相干性状态或者携载相干性状态连同用于读取及写入存储器活动的数据的存储器请求。广义上将存储器业务归为两个种类:需要在不同系统模块之间维持相干性的相干存储器业务;以及不需要维持相干性的非相干业务。举例来说,以CPU与GPU之间共享的页表为目标的存储器请求是相干业务,因为必须在CPU与GPU的本地高速缓存之间维持相干性,以确保执行程序的正常运行。相比来说,仅由GPU访问的目标帧缓冲器数据的存储器访问是非相干业务,因为其他系统模块不访问帧缓冲器数据。相干存储器业务趋向于生成若干个相干性探测,其中在访问给定的一组数据之前,系统模块的存储器控制器根据指定相干性协议来确定其他系统模块处的数据的相干性状态。然而,服务于这些相干性探测会消耗系统功率,例如通过要求CPU(或一个或多个其他模块)退出低功率状态以便服务于相干性探测。
为了降低功率消耗,处理系统施行通信协议,其中取决于CPU或其一部分的功率状态,以分组或“断续”方式将存储器业务提供给CPU。举例来说,当CPU处于低功率模式时,在知道或不知道低功率模式的情况下,处理系统将存储器业务保存在缓冲器中,直到阈值量的业务未决为止。阈值量在本文中称为“水印”或“水印阈值”。通过保存存储器业务直到达到水印为止,业务在CPU、高速缓存、互连等等处得到更高效处理。然而,因为非相干存储器业务不生成相干性探测,所以非相干存储器业务在随时间的功率消耗方面对CPU不具有相同影响,使得对非相干存储器业务使用较低水印级别更高效,如本文中进一步所描述。因此,使用本文中所描述的技术,处理系统对相干及不相干存储器业务采用不同缓冲器及对应不同水印,由此提高处理效率。对所有存储器业务使用传统共享构造会导致跨越客户端模块以及相干存储器业务与非相干存储器业务之间的性能降低,这就是为什么对个别类型业务的门控是针对每个客户端模块单独执行的原因。
图1是代表电子装置执行若干组指令(例如,计算机程序的指令、操作系统过程的指令)以执行任务的处理系统100的框图。因此,在不同实施方案中,将处理系统100合并到各种不同类型的电子装置中的一者中,例如桌上型计算机、膝上型计算机、服务器、智能手机、平板电脑、游戏控制台、电子书阅读器等等。为了支持对若干组指令的执行,处理系统100包括中央处理单元(CPU)110、系统存储器130、第一客户端模块140及第二客户端模块150。CPU 110是根据指定指令架构(例如x86架构或基于ARM的架构)来执行通用指令的处理单元。客户端模块140及150是代表CPU 110执行指定操作的模块,例如额外处理单元、引擎等等。举例来说,在一些实施方案中,客户端模块140是执行图形及矢量处理操作的图形处理单元(GPU),并且客户端模块150是代表其自身、CPU 110或一个或多个其他装置执行输入及输出操作的输入/输出(I/O)引擎。系统存储器130中的指令包括CPU指令133及GPU指令134中的一者或多者。
为了进一步支持指令的执行,处理系统100包括具有若干个层级的存储器阶层,其中每一层级对应于不同的一组存储器模块。在所图解说明的实例中,存储器阶层包括系统存储器130及CPU 110处的第三层级(L3)高速缓存112。在一些实施方案中,存储器阶层包括额外层级,例如在CPU 110及客户端模块140、150中的一者或多者处的第一层级(L1)高速缓存及第二层级(L2)高速缓存。
为了访问存储器阶层,装置(CPU 110及客户端模块140、150中的任一者)生成存储器访问请求,例如将数据写入到存储器位置的写入请求或者从存储器位置检索数据的读取请求。每一存储器访问请求包括指示请求所针对的数据的存储器位置的存储器地址。在一些实施方案中,利用虚拟地址来生成存储器请求,所述虚拟地址指示由正被执行的计算机程序使用的虚拟地址空间中的存储器位置。如本文中进一步所描述,处理系统100将虚拟地址转译成物理地址,以识别及访问存储请求所针对的数据的物理存储器位置。为了处理存储器访问请求,CPU 110包括存储器控制器113,并且系统存储器130包括存储器控制器131。类似地,客户端模块140及150包括可操作以处理存储器访问请求的存储器管理器145及155。
为了确保不同装置(CPU 110及客户端模块140、150)对共享的一组数据进行操作,存储器控制器113及131以及存储器管理器145及155(统称为存储器管理器)一起实施指定相干性方案,例如MESI方案或MOESI方案。因此,存储器管理器监视每一存储器位置的相干性状态,并基于由指定相干性方案定义的规则来调整存储器位置的相干性状态。
为了维持相干性,存储器管理器中的每一者识别给定存储器访问请求是以需要保持相干的数据(本文中称为“相干数据”)为目标还是不需要跨越系统100而保持相干的数据(本文中称为“非相干数据”)为目标。相干数据的实例是通过用于将虚拟存储器地址转译成物理存储器地址的页表(例如,系统存储器130的页表132)访问的一组数据,因为这些表通常在CPU 110与客户端模块140及150之间共享。非相干数据的实例是由GPU(客户端模块140)生成的帧缓冲器数据,其操作是基于CPU指令133及GPU指令134中的一者或多者。处理系统100的其他装置不访问非相干数据。作为相干数据的实例,响应于识别出存储器访问请求是相干访问请求,对应存储器管理器145、155生成一组相干性探测,以确定在存储器阶层的不同层级处的目标相干数据的相干性状态。将所述探测传递到不同存储器管理器,所述存储器管理器识别存储目标数据的任何存储器位置的相干性状态,且用来自相应位置的相干性状态信息来响应于所述探测。原始存储器管理器然后基于相干性探测响应而采取由指定相干性方案定义的适当行动。数据由系统存储器130中的一个或多个指令操作,所述指令包括CPU指令133及GPU指令134中的一者或多者。
在系统100中,相干性探测及存储器访问请求经由中央数据结构120在不同装置与系统存储器130之间传递。中央数据结构120与输入-输出存储器管理单元(IOMMU)123通信,所述IOMMU 123服务于去往及来自系统存储器130的存储器业务142以及去往及来自客户端模块140、150的存储器业务中的至少一些。举例来说,IOMMU123充当表遍历器,并跨越页表132而执行表遍历,作为相干存储器请求的一部分,所述相干存储器请求致使系统100中的CPU高速缓存(例如,L3高速缓存112)及其他高速缓存的探测获取当前相干性状态。去往及来自客户端模块140、150的存储器业务包括业务频道146,所述业务频道146通过IOMMU 123及存储器控制器113、131更新各种相干性状态。去往及来自客户端模块140、150的存储器业务包括存储器地址转译直接存储器访问(DMA)业务147,当DMA业务147是相干存储器访问请求或以其他方式生成相干存储器访问请求时,DMA业务147与系统100中的系统存储器130及其他存储器高速缓存的内容相关。一些DMA业务147是相干业务,并且一些DMA业务147是非相干业务。
如上所述,在一些情形中,相干性探测及其他存储器业务增加了例如CPU 110的处理装置中的功率消耗。为了进行图解说明,在一些实施方案中,处理系统100使用功率管理器(图1处未示出)来响应于所定义系统条件(例如检测到CPU 110在阈值时间量内没有执行操作)将CPU 110的一个或多个模块(例如,核心111及L3高速缓存112中的一者或多者)置于低功率状态。响应于相干性探测,处理系统将CPU 110的一个或多个模块返回到活动的较高功率模式以处理所述探测。因此,随着时间分散的大数目的相干性探测将致使CPU 110的模块在相对大时间量内维持在活动模式中,从而消耗功率。因此,如下文进一步所描述,客户端模块140及150在将业务提供给中央数据结构120之前对相干性探测及其他存储器业务进行分组、分批或断续。这一分组允许CPU 110在相对小的集中时间周期中处理探测及其他存储器业务。这又增加了CPU 110的模块保持在低功率模式中的时间量,由此节省了功率。针对以下各项执行这一分组:针对来自客户端模块140、150的所有存储器业务;针对来自客户端模块140、150的所有DMA业务;或者针对来自客户端模块140、150的所有相干DMA业务。
然而,如上所述,非相干性存储器业务不会导致相干性探测,并且因此不会致使将CPU 110置于活动模式中。举例来说,第一客户端模块(GPU)140直接写入到系统存储器130及从系统存储器130读取,例如写入到系统存储器130中的专用图形帧缓冲器及从所述专用图形帧缓冲器读取。因此,如下文进一步所描述,处理系统100以不同方式管理(例如,分组及门控)相干及非相干存储器业务的通信,以不同速率且在不同时间将不同类型的存储器业务提供给中央数据结构120,且对于相干及非相干存储器业务以相同或不同大小的批量这样做。出于描述的目的,假设相干存储器业务是指定类型的业务,且特别是存储器地址转译请求,有时被称为或以其他方式包括页表遍历请求或生成相干业务的一个或多个页表遍历。一些地址转译业务是非相干业务。应了解,本文中所描述的技术适用于不同于其他类型的存储器业务的任何类型的相干存储器业务。
每一存储器管理器145、155执行例如地址转译及遍历地址转译表的功能,且操作为一种类型的存储器管理单元(MMU)。客户端模块140、150的一些实施方案使用存储器管理器145、155作为虚拟管理器(VM)及一个或多个对应转译后备缓冲器(TLB)(为了清楚起见未经图解说明)来执行虚拟到物理地址的转译。举例来说,在一些情形中,将VM及一个或多个TLB实施为第一地址转译层的一部分,所述第一地址转译层从虚拟地址生成域物理地址,所述虚拟地址包括于相应客户端模块140、150处所接收的存储器访问请求中或者由客户端模块140、150自身生成。在客户端模块140、150外部实施VM及TLB的一些实施方案。虽然为了方便起见未经图解说明,但客户端模块140、150也包括并使用地址转译缓冲器来保存各种存储器请求。客户端模块转译缓冲器通常不能保存页表阶层的所有层。
客户端模块140、150还在物理上可能满足一个或多个客户端模块服务质量(QoS)要求的情况下执行一定量的页表132预取。举例来说,QoS要求是在预定时间量内成功处理最少数目的DMA请求。通过对客户端模块140、150的预取存储器请求来执行预取,并且这些请求可以是非相干及相干类型的预取存储器请求。根据预取策略来执行预取,所述预取策略是相应存储器管理器145、155的预取缓冲器的大小的主题。预取缓冲器是用于取决于可访问数据的性质的数据(例如,数据是否在特定存储器中的连续或邻接范围中)。
在操作中,客户端模块140、150使用不同缓冲器来对存储器访问进行缓冲。在相干缓冲器141、151中对涉及存储器相干性状态的相干存储器访问进行缓冲。在非相干缓冲器142、152中对不涉及相干性状态的非相干存储器访问(包括涉及系统存储器130的一些类型的DMA指令)进行缓冲。在相应缓冲器141、151、142、152中每一者中取决于其相干性/非相干性特性对预取存储器请求及需求存储器请求两者进行缓冲,并且这些缓冲器位于相应客户端模块存储器或者为了清楚起见而未经图解说明的其他构造中。举例来说,需求存储器请求是在系统运行时基本上实时地无延迟地生成及释放的请求。对客户端模块140、150中的存储器指令或“请求”进行缓冲及释放,以分别基于用于非相干及相干存储器操作的非相干及相干监视器的操作来执行,其中监视器分别是相干批量控制器143、153及非相干批量控制器144、154的一部分,如本文中进一步所解释。对存储器请求进行批量发送或释放。从客户端装置140、150释放的每一批量可包括一组非相干存储器请求及一组相干存储器请求,或者可仅仅是一种类型或另一种类型。广义上,相干批量控制器143、153根据需要跟踪CPU110及其部件以及系统100中的其他部件的状态。针对某些存储器地址表执行地址转译,所述存储器地址表例如是客户端模块存储器、系统存储器130或系统100中的存储器组合中的一组客户端存储器地址表。共享系统存储器130中的地址转译表遍历可以是相干的且可在CPU中(如果存在)进行高速缓存,并且因此需要探测例如L3高速缓存112的高速缓存。
对于非共享存储器位置及一些直接访问存储器位置,非相干批量控制器144、154对包括相对于相应非相干阈值在非相干缓冲器142、152中排队或缓冲的任何非相干地址转译请求的非相干请求进行门控或节流。以类似方式,相干批量控制器143、153对在每一客户端模块140、150生成的相干缓冲器141、151中排队或缓冲的存储器探测请求进行门控或节流。相干批量控制器143、153对指向系统100的其他部件中的一者或多者的存储器探测请求进行门控或节流。相对于相应相干阈值,相干探测响应于CPU 110及其部件的状态以及系统100中任何其他副本的状态中的一个或多个状态。
图2是图解说明根据一些实施方案的用于相干转译存储器请求的仲裁方案的方法200的时序图。在系统(例如,系统100)中,根据例如CPU 110及例如L3高速缓存112的CPU高速缓存的部件的某些状态来执行方法200的步骤。各种部件的状态随时间发生改变,其中沿着水平轴线221标记时间。方法200中所涉及的存储器请求都是相干的且需要地址转译。举例来说,将一些DMA请求归为这一种类中。
出于参考目的,包括一些DMA类型的存储器请求的相干转译请求的常规时序在图的顶部部分210中进行图解说明且标题为“不对相干转译请求进行分批”。在常规时序的第一状态201中,例如核心111中的一者或核心复合体的核心保持加电,且在方法200中被标记为全功率。与核心相关联的L3高速缓存在非省电状态下也保持加电。常规方案的第一状态201中的核心及L3高速缓存在不进行分批的情况下继续接收及服务于相干及非相干存储器请求。在第二状态202中,系统100将核心置于低功率状态中,并且将L3高速缓存置于仅保留模式中,其中高速缓存相干性状态及内容通过核心111保持不改变。常规方案的第二状态202中的核心及L3高速缓存继续接收及服务于相干及非相干存储器请求。在第三状态203及第四状态204中,系统100将核心保持在低功率状态中。然而,在第三状态203及第四状态204中,L3高速缓存退出保留模式以接收及服务于传入的相干请求(例如,相干性探测)。如由第五状态205所表示,在将核心111置于低功率状态中之后的某个时间,例如在相对CPU不活动的时间期间,L3高速缓存被刷新,并且中央数据结构(DF)120的相关部分被功率门控,以在核心111及其支持结构处于其低功率状态时进一步保护系统的功率消耗。
代替常规方案,在图的底部部分220中实施并图解说明用于相干转译请求的分批方案。这一方案的标题是“对相干转译请求进行分批”。就时序来说,在第一分批状态211中,核心或核心复合体处于全功率下,直到被置于低功率状态为止,如第二分批状态212中所示。在这一第二状态212中,部件继续接收及服务于相干及非相干存储器请求。举例来说,相干转译请求及直接视频数据请求都由系统100服务。然而,系统100基于第一客户端模块140的缓冲器141、142及批量控制器143、144中的一者或多者的操作而继续或开始对存储器地址相干转译请求进行分批。针对第二客户端模块150的相同操作由其相应部件151到155执行。
在达到某个时间或某个阈值数目的相干转译请求之后,在第三分批状态213中,系统即刻释放相干转译请求,并且L3高速缓存112退出其保留模式以服务于相干转译请求(在方法200中标记为“转译”)。在第四状态214中,L3高速缓存112保持在保留模式中或返回到保留模式以保护功率,并且任何传入的请求(例如,相干性探测)继续被分批并在后续状态中被释放。因此,在第二状态212及第四状态214中的一者或多个者中,系统100通过至少对转译请求进行分批来节省功率消耗。如由第五状态215所表示,在将核心111置于低功率状态中之后的某个时间,L3高速缓存被刷新,并且中央DF 120的相关部分被功率门控,由此进一步增加功率节省。
图3是根据一些实施方案的单独的相干及非相干批量控制器310、320的框图300。批量控制器310、320中的每一者中的一者都作为一对监视器提供给系统100中的每一客户端模块140、150。根据一些实施方案,针对每一客户端模块140、150的每一数据处理或数据生成单元而提供一对批量控制器310、320,如本文中进一步所解释。批量控制器310、320跟踪系统100中针对特定客户端模块的相应数目的存储器请求。
根据一些实施方案,每一批量控制器310、320跟踪或监视预取请求301及需求请求311。非相干批量控制器310对请求301进行分批(分组),并以与相干批量控制器320及其相干紧急阈值313相同或不同的紧急阈值303将请求301释放为紧急302。相干批量控制器320对请求311进行分批,并在达到或超过相干紧急阈值313时将请求释放为紧急312。在一些实施方案中,对所有转译业务或所有DMA转译业务执行分批。
在由方法200中的状态所表示的时间窗结束时,或者在检测到特定监视事件(例如满足或超过相应阈值)之后,即刻完成特定释放时序。批量控制器310、320在相应请求频道上断言一批量的请求的紧急性或释放。每一批量控制器310、320具有其自身相应相干及非相干缓冲器水印,所述相干及非相干缓冲器水印是缓冲器310、320中的请求301、311的相应实际数目。当相干及非相干水印达到或超过其相应紧急阈值303、313时,发出一批量的请求以供完成。也就是说,当批量控制器310、320在其存储器请求缓冲器中检测到若干个经缓冲相干或非相干存储器请求时,批量控制器310、320采取一个或多个额外行动。
图4是图解说明将在例如系统100的系统中执行的根据一些实施方案的用于相干及非相干存储器请求的仲裁方案的方法400的流程图。方法400图解说明系统中的缓冲器141、142及批量控制器143、144以及例如客户端模块(例如,客户端模块140)的第一DMA客户端的DMA客户端的操作。存储器访问请求由DMA客户端或客户端模块140、150生成。在框401处,系统从客户端模块接收存储器访问请求。
在框402处,系统确定处理器核心及其处理器高速缓存各自是否处于活动功率状态(非低功率状态)。如果是,那么在框403处,系统100不对存储器请求进行分批。
关于框402及403,系统100以多种方式中的一种确定处理器核心111及其高速缓存112中的一者或多者的功率状态。举例来说,关于客户端模块140,客户端模块140的批量控制器143、144各自接收处理器核心111处于特定功率状态(例如,活动功率状态、低功率状态)的第一信号。基于这一信号,系统前进到框403、404中的一者。当信号涉及活动或全功率状态时,批量控制器143、144及缓冲器141、142与存储器管理器145(对于客户端模块140)协作操作,活动功率状态的信号的缺失导致分批及对准,如本文中进一步所描述。
关于对准,客户端模块140释放同一批量中的任何当前经缓冲非相干存储器请求(例如,DMA存储器请求)中的至少一些,以及至少一些相干存储器请求(例如,高速缓存相干性探测)。释放是基于由例如客户端模块140或其部件(对于关于一个或多个阈值303、313的阈值事件)、或者CPU 110或其部件(例如核心111或核心复合体)生成的释放信号(对于方法200中的状态事件或状态改变)。通过实例方式,当紧急阈值313被跨越以释放具有相干请求的非相干请求(如果有)时,或者当例如在CPU 110中检测到或发信号通知部件功率状态改变时,释放会发生。在一些实施方案中,请求的对准是将非相干存储器请求与相干存储器请求对准,例如在客户端模块140的操作的时间窗的边缘处。除非特别指示,否则如本文中所提及的“对准”并非将相干存储器请求的时序与非相干存储器请求对准或协调。用于缓冲及释放存储器请求的操作的时间窗(例如,由状态211到215中的一者表示)包括系统100、中央数据结构120、客户端模块140、150或CPU 110的多个时钟操作周期。
在框404处,当处理器核心及其高速缓存处于低功率状态或被调度为低功率状态时,执行分批,并且将某些存储器请求与来自系统100中的其他客户端的请求对准。举例来说,系统对客户端的相干请求进行分批,对非相干请求进行分批,并将来自客户端的非相干请求与同一客户端的相干请求对准。分批包括对相应请求进行缓冲並释放一群组中的请求。举例来说,缓冲包括在第一缓冲器中对非相干请求及相干请求进行缓冲。在另一实例中,缓冲包括在第一缓冲器(例如,非相干缓冲器142)中对非相干请求进行缓冲,以及在第二缓冲器(例如,相干缓冲器141)中对相干请求进行缓冲。
在框404之后,当处理器核心及其高速缓存处于低功率状态时,系统100执行进一步行动。在框405处开始到框407,基于批量控制器143、144的操作来执行某些行动,如关于框图300所解释。在框405处,当非相干缓冲器中的非相干客户端存储器请求的非相干水印(当前水平)低于或以其他方式跨越紧急非相干水印阈值时,系统或客户端发信号通知非相干请求的紧急性。作为实例,非相干水印是非相干DMA存储器操作或非相干共享存储器操作的非相干地址转译水印阈值。也就是说,当在单位时间中没有完成足够的非相干请求时,非相干请求被提交以供完成,并具有紧急指示,使得系统经由中央数据结构120以及时方式完成来自客户端140、150的非相干请求。
在框406处,当相干缓冲器中的相干客户端存储器请求的相干水印(当前水平)超过或跨越紧急相干水印阈值时,系统或客户端还发信号通知相干请求的紧急性。举例来说,紧急相干水印阈值是探测水印阈值。紧急非相干水印阈值采用与紧急相干水印阈值相同或不同的值,并且对于相干及非相干缓冲器,阈值彼此独立地操作。在相干及非相干请求的相应请求频道上断言紧急性。阈值存储在系统100的部件中的一者中的相应寄存器中,例如存储在客户端模块140、150、中央数据结构120、CPU 110及系统存储器130中的一者或多者中。
在框407处,对于特定系统或软件应用程序,例如以有限的探测存储器带宽及高速率或相对高速率的相干存储器请求运行的系统或软件应用程序,系统针对相干存储器请求而设置每单位时间或每分组的特定带宽上限或最大值。响应于检测到系统100中例如关于特定客户端模块140、150的相干存储器请求活动的量,执行这一上限。这一上限用于在系统100中随时间分散来自特定客户端模块140、150的探测请求,且由此更保守地消耗相干存储器带宽。在框408处,系统100确定处理器高速缓存112是否被刷新。如果是,那么不再如在框404到407中那样执行批量缓冲及释放。而是,在框409处,对相干及非相干请求一起进行分批,以最大化结构断续效率。不考虑CPU高速缓存,因为这些高速缓存被刷新,且没有上下文信息来提供相干存储器请求。在一些系统中,当处理器高速缓存112已被刷新时,分批不再提供实质性功率节省。如果处理器高速缓存112没有被刷新,那么如框404到407中的活动继续,直到经调度高速缓存刷新为止或者直到处理器核心111及其L3高速缓存112从低功率模式释放(例如,往回置于全功率模式中)为止。
方法400适用于生成相干及非相干存储器请求的任何装置。虽然未经图解说明,但应理解,当处理器核心111处于低功率状态并且其L3高速缓存112处于活动功率状态时,系统100的一种状态会出现。这种状态是各种存储器高速缓存服务于存储器请求时的常见状态。如在框404中,操作在系统100中继续,并且随着时间的推移,L3高速缓存112有机会被临时置于低功率或非活动状态中以节省功率消耗,如参考图2所解释。广义上,应理解,执行方法400的系统的各种部件包括执行框401到409的各种活动的电路系统,包括其变体。
图5是根据一些实施方案的系统100的CPU 110的框图。除了L3存储器高速缓存112及存储器控制器113之外,CPU 110包括功率管理器517以及第一核心复合体521及第二核心复合体522。第一核心复合体521包括第一处理核心511、第一层级(标记为L1)存储器高速缓存513及第二层级(标记为L2)存储器高速缓存515。第二核心复合体522包括第二处理核心512、第二L1存储器高速缓存514及第二L2存储器高速缓存516。L3存储器高速缓存112跨越核心复合体521、522而进行共享。至少L3高速缓存112是客户端模块140、150用于其相应存储器请求的CPU相干上下文的一部分。在一些实施方案中,至少L2及L3高速缓存是CPU相干上下文的一部分。在至少加电状态与低功率状态之间向其供电方面对第一核心复合体521及第二核心复合体522中的每一者进行独立控制。到核心复合体521、522的功率例如由功率管理器517控制。在其他实施方案中,功率由针对每一核心复合体521、522提供的相应功率管理器管理。当CPU 110不处于重工作负荷下时,核心复合体521、522中的一者或两者被置于低功率状态中,以例如通过功率管理器517的操作来降低功率消耗。
当复合体521、522中的一者或两者处于低功率状态时,客户端模块140、150仍可从系统存储器130读取及写入到系统存储器130,且因此仍可受益于具有CPU 110的高速缓存中的条目的当前相干性状态。在预定时间之后,与低功率核心复合体相关联的一个或多个高速缓存中的条目被刷新,这是因为假设其中的数据及指令是陈旧的且需要被刷新。偶尔,中央数据结构120将CPU状态传递给客户端模块140、150。CPU状态包括CPU 110的活动或低功率状态(或核心复合体521、522中的每一者的活动或低功率状态)以及其高速缓存状态,包括CPU 110的一个或多个高速缓存是否被刷新。举例来说,将CPU状态传递给存储器管理器145、155。基于CPU或处理器状态,相应控制器143、144、153、154触发客户端模块140、150的相干及非相干存储器请求的对准及释放,这与本文中进一步所描述的方案或时间表一致。状态包括在处理期间使用的状态信息。举例来说,当处于低功率状态(核心511、512或核心复合体521、522离线)并且CPU高速缓存(高速缓存112、515、516中的一者或多者)处于未刷新状态时,在这一状态期间发送到CPU 110的相干存储器探测使一个或多个低功率高速缓存脱离其保留状态,并且所述探测触发中央数据结构120与CPU高速缓存通信。在这一过程中,将某些存储器请求一起进行分批,以减少CPU高速缓存脱离高速缓存保留(低功率)状态以服务于存储器地址转译请求的时间。
图6是根据一些实施方案的客户端模块610中的非相干及相干批量控制器144、143的框图。非相干批量控制器144包括一组非相干(存储器地址)水印601、一组非相干水印阈值602及(非相干)批量控制逻辑603,所述(非相干)批量控制逻辑603包括用于系统100中的客户端模块的监视逻辑,由此监视非相干(例如,非相干转译)请求。
相干批量控制器143包括一组相干水印611、一组相干水印阈值612及(相干)批量控制逻辑613,所述批量控制逻辑包括用于系统100中的客户端模块的监视逻辑。批量控制逻辑603、613将相应水印601、611(存储器请求的数目)与其来自特定客户端模块的匹配水印阈值602、612进行比较。举例来说,针对系统100中的客户端模块140、150中的每一者而提供批量控制逻辑。虽然本文中使用了术语水印,但水印是指由相应批量控制逻辑603、613监视的存储器(例如,相干、非相干、转译、探测)请求的当前数目。
IOMMU 123包括地址转译器621及一个或多个转译后备缓冲器(TLB)622。地址转译器621通常被称为表遍历器或以其他方式包括表遍历器(未经图解说明),由此地址转译器621将(模块或装置)虚拟存储器地址转换成物理存储器地址,例如物理存储器中的地址,如所属领域的技术人员通过对某些页表(例如系统存储器130的页表132)进行遍历所理解。当使用虚拟地址时,在处理系统100中执行指令(例如,CPU指令133、GPU指令134)的每一过程具有对应页表132。过程的页表132将所述过程正在使用的装置所生成的(例如,虚拟)地址转译成系统存储器130中的物理地址。举例来说,IOMMU 123执行页表132的表遍历,以确定存储器访问请求中的地址转译。IOMMU 123所频繁使用的转译存储在系统存储器130中的TLB 622或TLB中,所述系统存储器用于对频繁请求的地址转译进行高速缓存。根据TLB替换策略,将条目从TLB 622驱逐,以便为新条目腾出空间。将TLB 622描绘为IOMMU 123的集成部分。然而,在其他实施方案中,在可由IOMMU 123访问的独立结构及部件中实施TLB 622。
对于客户端模块140、150,中央数据结构120及IOMMU 123将转译界面提供给系统100的其他部分。在一些实施方案中,客户端模块140、150是高带宽类型的装置,其生成显著量的存储器业务,包括显著量的IOMMU业务。虽然为了清楚起见未进行图解说明,但中央数据结构120包括一个或多个总线控制器作为外围控制器,所述外围控制器可包括系统控制器及PCIe控制器,以与客户端模块140、150及系统100的其他部件通信。客户端总线控制器双向连接到输入/输出(I/O)集线器及总线,并促进各种部件间的通信。通过I/O集线器,各种部件可对例如第一客户端模块140的批量控制器143、144以及系统100中的各种部件的寄存器及存储器位置进行直接发送及接收数据。
图7是根据一些实施方案的支持多个DMA客户端的多客户端装置710的框图。装置710是系统100的客户端模块140、150的另一实施方案。装置710包括至少一个客户端虚拟管理器(VM)701、至少一个存储器地址转译高速缓存702及多个DMA客户端714、724。第一DMA客户端714包括其自身相干预取缓冲器711、非相干预取缓冲器712及MMU 713。第二DMA客户端724包括第二相干预取缓冲器721、第二非相干预取缓冲器722及第二MMU 723。DMA客户端714、724中的每一者对系统存储器130进行独立读取及写入。DMA客户端714、724中的每一者由中央数据结构120的相应转译监视器121及探测监视器122跟踪。第一DMA客户端714耦合到例如显示器720的第一外部装置并与其相关联。第二DMA客户端724耦合到例如照相机730的第二外部装置并与其相关联。第一MMU 713对显示器720的系统存储器130的专用部分及系统存储器130的相干共享部分中的一者或两者进行读取及/或写入。第二MMU 723对照相机730的系统存储器130的专用部分及系统存储器130的相干共享部分中的一者或两者进行读取及/或写入。
图8是根据一些实施方案的地址转译系统800的框图。系统800使用系统100的部件将来自第一客户端模块140的客户端模块虚拟地址801转译成客户端模块物理地址802,且然后转译成系统存储器130中的系统物理地址803。存储器访问请求包含装置所生成的地址,例如由在第一客户端模块140上执行或与第一客户端模块140相关联的应用程序使用的客户端虚拟地址801。在所图解说明的实施方案中,VBS兼容机制使用两层级转译过程来提供存储器保护(例如,针对内核模式恶意软件),所述两层级转译过程包括:(1)由OS或装置驱动器810管理的第一层级转译815;及(2)由管理程序820管理的第二层级转译825。VBS地址转译业务及这一业务消耗的探测存储器带宽因此增加了CPU高速缓存功率需求,且当VBS用于访问例如系统存储器130中的相干存储器时有可能降低数据访问的存储器性能。第一层级转译815将装置所生成的地址(例如存储器访问请求中的虚拟地址)转译成客户端物理地址802。客户端物理地址也被称为域物理地址,例如GPU物理地址。在一些实施方案中,第一层级转译815由客户端模块VM及相关联TLB执行,通常与访客端VM相关联,如本文中所论述。
将客户端物理地址802传送到第二层级转译825,所述第二层级转译825将客户端物理地址802转译成指示系统存储器130内的位置的系统物理地址803。如本文中所论述,第二层级转译825还验证所述装置被授权访问由系统物理地址803指示的系统存储器130的特定区域,例如,使用编码到用于执行第二层级转译825的相关联页表及转译后备缓冲器(TLB)中的条目中的许可信息。在一些实施方案中,这一转译系统800由例如IOMMU 123的IOMMU支持或调解。基于与OS或装置驱动器810相关联的设置804,相对于第一客户端模块140的开始值来设置或调整水印阈值602、612中的一者或两者。虽然为了方便起见在OS或装置驱动器810中进行图解说明,但设置804可替代地在管理程序820中或与管理程序820相关联。在一些实施方案中,设置804存储在系统存储器130的寄存器中,或者存储在客户端模块(例如,GPU 140、I/O引擎150)中其自身专用存储器寄存器中。虽然示出了单个设置804,但在某些实施方案中,设置804可替代地是与特定客户端模块140、150(例如,GPU、I/O引擎)的一个或多个QoS值相关的多个值。设置804由用户设置,或者通过从外部装置(例如耦合到客户端模块150的显示器720及照相机730)读取或配置检测硬件、固件或软件值而以编程方式获得。设置804可在初始化与外部装置的通信之后即刻被确定,并在系统100的操作期间被更新,以调整例如第一客户端模块140的控制器143、144的行为。
在一些实施方案中,上文所描述的设备及技术在包括一个或多个集成电路(IC)装置(也称为集成电路封装或微芯片)的系统中实施,例如上文参考图1到图8所描述的CPU110、系统存储器130及客户端装置或模块140、150、710。虽然描述了用于存储或以其他方式保存或跟踪存储器请求的缓冲器,但如所属领域的技术人员所理解,可用另一种特定类型的结构、装置或机制来代替。举例来说,代替例如用于客户端模块140、150的缓冲器141、142、151、152的缓冲器,使用了表、存储器块、存储器寄存器、经链接列表等等。这同样适用于上文所描述的其他电路、部件、模块、装置等等。
电子设计自动化(EDA)及计算机辅助设计(CAD)软件工具可用于所描述IC装置的设计及制作。这些设计工具通常表示为一个或多个软件程序。一个或多个软件程序包含代码,所述代码可由计算机系统执行,以操纵计算机系统来对表示一个或多个IC装置的电路系统的代码进行操作,以便执行用于将制造系统设计或调适为制造电路的过程的至少一部分。这一代码可包含指令、数据或指令与数据的组合。表示设计工具或制作工具的软件指令通常存储在可由计算系统访问的计算机可读存储介质中。同样地,表示IC装置的设计或制造的一个或多个阶段的代码可存储在同一计算机可读存储介质或不同计算机可读存储介质中,以及从同一计算机可读存储介质或不同计算机可读存储介质进行访问。
计算机可读存储介质可包括在使用期间可由计算机系统访问以将指令及/或数据提供到计算机系统的任何非暂时性存储介质或非暂时性存储介质的组合。此类存储介质可包括但不限于光学介质(例如,压缩光盘(CD)、数字通用光盘(DVD)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘)、易失性存储器(例如,随机存取存储器(RAM)或高速缓存)、非易失性存储器(例如,只读存储器(ROM)或闪存存储器)或基于微机电系统(MEMS)的存储介质。计算机可读存储介质可嵌入在计算系统中(例如,系统RAM或ROM),固定地附接到计算系统(例如,磁性硬盘驱动器),可移除地附接到计算系统(例如,光盘或基于通用串行总线(USB)的闪存存储器),或者通过有线或无线网络耦合到计算机系统(例如,网络可访问存储装置(NAS))。
在一些实施方案中,上文所描述的技术的某些方面可由执行软件的处理系统的一个或多个处理器实施。软件包括存储或以其他方式有形地体现在非暂时性计算机可读存储介质上的一组或多组可执行指令。软件可包括当由一个或多个处理器执行时操纵所述一个或多个处理器来执行上文所描述技术的一个或多个方面的指令及某些数据。非暂时性计算机可读存储介质可包括例如磁盘或光盘存储装置、例如闪存存储器的固态存储装置、高速缓存、随机存取存储器(RAM)或其他一个或多个非易失性存储器装置等。存储在非暂时性计算机可读存储介质上的可执行指令可呈现源代码、汇编语言代码、对象代码或由一个或多个处理器解译或以其他方式执行的其他指令格式。
应注意,并不需要上文在一般描述中所描述的所有活动或元件,特定活动或装置的一部分可能是不需要的,并且可执行一个或多个其他活动,或者可包括除了所描述的那些元件以外的元件。此外,所列出的活动的次序不一定是执行活动的次序。而且,已参考具体实施方案描述了概念。然而,所属领域的普通技术人员应了解,在不脱离如所附权利要求书中所陈述的本公开的范围的情况下,可做出各种修改及改变。因此,本说明书及附图将被视为说明性而非限制性的,并且所有这类修改都旨在包含于本公开的范围内。
上文已关于具体实施方案描述了益处、其他优点以及问题的解决方案。然而,所述益处、优点、问题解决方案以及可致使任何益处、优点或问题解决方案出现或变得更突出的任何特征都不应被解释为是任何或所有权利要求的关键、必需或必要特征。此外,以上所公开的特定实施方案只是说明性的,因为所公开的主题可按受益于本文中的教导的所属领域的技术人员显而易知的不同但等效的方式来修改及实践。除了如所附权利要求书中所描述的之外,并不旨在限制本文中的构造或设计的细节。因此,显而易见的是,上文所公开的特定实施方案可被更改或修改,并且所有此类变化都被认为是在所公开的主题的范围内。因此,在下文的权利要求书中陈述了本文中所寻求的保护。

Claims (20)

1.一种处理器,其包括:
相干存储器请求缓冲器,其具有用以存储来自客户端模块的相干存储器请求的多个条目;
非相干存储器请求缓冲器,其具有用以存储来自所述客户端模块的非相干存储器请求的多个条目;及
所述客户端模块,其被配置为:
在所述相干存储器请求缓冲器中对相干存储器请求进行缓冲;
在所述非相干存储器请求缓冲器中对非相干存储器请求进行缓冲;且
基于与所述相干存储器请求缓冲器相关联的第一水印以及与所述非相干存储器请求缓冲器相关联的第二水印,将多个所述请求从所述相干存储器请求缓冲器及所述非相干存储器请求缓冲器中的一者释放到中央数据结构及系统中的一者,所述第一水印不同于所述第二水印。
2.根据权利要求1所述的处理器,其中所述客户端模块被进一步配置为:
接收处理器核心处于指定功率状态的指示;且
基于所述接收的指示,开始对所述相干存储器请求进行缓冲并对所述非相干存储器请求进行缓冲。
3.根据权利要求1或2所述的处理器,其进一步包括:
客户端模块存储器;
一组存储器地址表;及
存储器管理器,其用作表遍历器,所述表遍历器用于使用所述一组存储器地址表将所述相干存储器请求及所述非相干存储器请求中的至少一者的客户端模块虚拟存储器地址转译成所述客户端模块存储器的物理客户端模块存储器地址。
4.根据前述权利要求中任一项所述的处理器,其中:
所述非相干存储器请求包括非相干预取存储器请求。
5.根据前述权利要求中任一项所述的处理器,其中:
将基于与基于虚拟化的安全(VBS)机制相关联的第一存储器地址转译及第二存储器地址转译来转译所述非相干存储器请求中的每一者。
6.根据前述权利要求中任一项所述的处理器,其中所述客户端模块被进一步配置为:
当以下各项中的至少一者时释放所述多个请求:
所述第一水印指示所述相干存储器请求缓冲器中的第一数目的经缓冲相干存储器请求超过相干水印阈值;及
所述第二水印指示在接收到处理器核心处于低功率状态的信号之后,所述非相干存储器请求缓冲器中的第二数目的经缓冲非相干存储器请求超过非相干水印阈值。
7.根据前述权利要求中任一项所述的处理器,其中所述客户端模块被进一步配置为:
基于相干存储器请求活动的量,限制从所述相干存储器请求缓冲器释放的相干存储器请求的数目。
8.一种系统,其包括:
相干存储器请求缓冲器,其具有用以存储来自客户端模块的相干存储器请求的多个条目;
非相干存储器请求缓冲器,其具有用以存储来自所述客户端模块的非相干存储器请求的多个条目;及
所述客户端模块,其被配置为:
在所述相干存储器请求缓冲器中对相干存储器请求进行缓冲;
在所述非相干存储器请求缓冲器中对非相干存储器请求进行缓冲;
相对于相干水印阈值来监视所述相干存储器请求缓冲器中的相干存储器请求的相干水印;
相对于非相干水印阈值来监视所述非相干存储器请求缓冲器中的非相干存储器请求的非相干水印;且
基于所述相干水印及所述非相干水印,在同一批量中释放来自所述非相干存储器请求缓冲器的第一组非相干存储器请求以及来自所述相干存储器请求缓冲器的第二组相干存储器请求。
9.根据权利要求8所述的系统,其中所述客户端模块被进一步配置为:
响应于指示所述系统中的处理器核心处于低功率状态的信号,开始对所述相干存储器请求进行缓冲并对所述非相干存储器请求进行缓冲。
10.根据权利要求8或9所述的系统,其中:
所述非相干存储器请求中的每一者包括非相干预取存储器请求及需求非相干存储器请求中的至少一者。
11.根据权利要求8至10中任一项所述的系统,其中:
所述非相干存储器请求中的每一者都需要与基于虚拟化的安全(VBS)机制一致的第一存储器地址转译及第二存储器地址转译。
12.根据权利要求8至11中任一项所述的系统,其中所述非相干存储器请求及所述相干存储器请求的所述释放是响应于接收到释放信号,所述释放信号是基于以下各项生成的。
13.根据权利要求12所述的系统,其中所述释放信号是基于以下各项中的至少一者生成的:
所述相干存储器请求缓冲器中的第一数目的经缓冲相干存储器请求超过所述相干水印阈值;及
在接收到处理器核心处于低功率状态的信号之后,所述非相干存储器请求缓冲器中的第二数目的经缓冲非相干存储器请求超过所述非相干水印阈值。
14.根据权利要求8至13中任一项所述的系统,其中所述客户端模块被进一步配置为:
检测所述系统中的相干存储器请求活动的量;及
响应于接收到所述释放信号,在检测到相干存储器请求活动的所述量之后,限制从所述相干存储器请求缓冲器释放的相干存储器请求的数目。
15.一种用于仲裁装置生成的相干及非相干存储器请求的方法,所述方法包括:
检测处理器核心及处理器共享高速缓存的功率状态;及
响应于检测到所述处理器核心的低功率状态:
在相干存储器请求缓冲器中对相干存储器请求进行缓冲;
在非相干存储器请求缓冲器中对非相干存储器请求进行缓冲;
相对于相干水印阈值来监视所述相干存储器请求缓冲器中的相干存储器请求的相干水印;
相对于非相干水印阈值来监视所述非相干存储器请求缓冲器中的非相干存储器请求的非相干水印;且
从所述非相干存储器请求缓冲器释放第一组非相干存储器请求,以及从所述非相干存储器请求缓冲器释放第二组相干存储器请求。
16.根据权利要求15所述的方法,其进一步包括:
基于所述低功率状态来释放所述第一组非相干存储器请求及所述第二组相干存储器请求。
17.根据权利要求15或16所述的方法,其中:
所述非相干存储器请求中的每一者包括非相干预取存储器请求及需求非相干存储器请求中的至少一者。
18.根据权利要求15至17中任一项所述的方法,其进一步包括:
在释放所述非相干存储器请求之后,针对所述非相干存储器请求中的每一者而执行与基于虚拟化的安全(VBS)机制一致的第一存储器地址转译及第二存储器地址转译。
19.根据权利要求15至18中任一项所述的方法,其中释放所述非相干存储器请求及所述相干存储器请求是基于以下各项中的至少一者:
检测到所述相干存储器请求缓冲器中的第一数目的经缓冲相干存储器请求超过相干水印阈值;及
检测到在接收到处理器核心处于低功率状态的信号之后,所述非相干存储器请求缓冲器中的第二数目的经缓冲非相干存储器请求超过非相干水印阈值。
20.根据权利要求19所述的方法,其中所述非相干水印阈值不同于所述相干水印阈值。
CN202080091091.8A 2019-12-20 2020-12-11 用于相干及非相干存储器请求的仲裁方案 Active CN115087961B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/723,185 2019-12-20
US16/723,185 US11513973B2 (en) 2019-12-20 2019-12-20 Arbitration scheme for coherent and non-coherent memory requests
PCT/US2020/064483 WO2021126690A1 (en) 2019-12-20 2020-12-11 Arbitration scheme for coherent and non-coherent memory requests

Publications (2)

Publication Number Publication Date
CN115087961A true CN115087961A (zh) 2022-09-20
CN115087961B CN115087961B (zh) 2023-10-27

Family

ID=76438302

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080091091.8A Active CN115087961B (zh) 2019-12-20 2020-12-11 用于相干及非相干存储器请求的仲裁方案

Country Status (6)

Country Link
US (1) US11513973B2 (zh)
EP (1) EP4078382A4 (zh)
JP (1) JP2023507096A (zh)
KR (1) KR20220125247A (zh)
CN (1) CN115087961B (zh)
WO (1) WO2021126690A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11914517B2 (en) * 2020-09-25 2024-02-27 Advanced Micro Devices, Inc. Method and apparatus for monitoring memory access traffic

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1902566A (zh) * 2003-12-30 2007-01-24 英特尔公司 用于计算机系统中的功率管理的方法和设备
US20100281231A1 (en) * 2009-04-29 2010-11-04 Guhan Krishnan Hierarchical memory arbitration technique for disparate sources
US20110193988A1 (en) * 2008-10-15 2011-08-11 Panasonic Corporation Semiconductor device and semiconductor integrated circuit
US20180357169A1 (en) * 2017-06-13 2018-12-13 Microsoft Technology Licensing, Llc Low power multi-core coherency
CN110573989A (zh) * 2017-07-28 2019-12-13 超威半导体公司 多客户端系统中实时流的动态仲裁方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002045322A2 (en) * 2000-11-29 2002-06-06 Pulsent Corporation Method and apparatus for combining dedicated and shared networks for efficient data transmission
US20030167348A1 (en) 2001-07-02 2003-09-04 Globespanvirata, Inc. Communications system using rings architecture
US7298777B2 (en) * 2003-06-06 2007-11-20 Texas Instruments Incorporated Searching in a spread spectrum communications
US20090249046A1 (en) 2008-03-31 2009-10-01 Mips Technologies, Inc. Apparatus and method for low overhead correlation of multi-processor trace information
US9176913B2 (en) 2011-09-07 2015-11-03 Apple Inc. Coherence switch for I/O traffic
WO2015018003A1 (en) * 2013-08-07 2015-02-12 Qualcomm Incorporated Ltr/obff design scheme for ethernet adapter application
US9360523B2 (en) 2014-04-18 2016-06-07 Breker Verification Systems Display in a graphical format of test results generated using scenario models
US9824015B2 (en) 2015-05-29 2017-11-21 Qualcomm Incorporated Providing memory management unit (MMU) partitioned translation caches, and related apparatuses, methods, and computer-readable media
WO2017135962A1 (en) 2016-02-05 2017-08-10 Hewlett Packard Enterprise Development Lp Allocating coherent and non-coherent memories
US10509736B2 (en) * 2016-07-29 2019-12-17 Advanced Micro Devices, Inc. Controlling access by IO devices to pages in a memory in a computing device
US10768962B2 (en) * 2016-12-19 2020-09-08 Vmware, Inc. Emulating mode-based execute control for memory pages in virtualized computing systems
US11188255B2 (en) * 2018-03-28 2021-11-30 Intel Corporation Dynamic major mode for efficient memory traffic control
US11013056B2 (en) * 2018-04-13 2021-05-18 Qualcomm Incorporated Dynamic prioritization of uplink traffic
US11256644B2 (en) * 2018-09-05 2022-02-22 Fungible, Inc. Dynamically changing configuration of data processing unit when connected to storage device or computing device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1902566A (zh) * 2003-12-30 2007-01-24 英特尔公司 用于计算机系统中的功率管理的方法和设备
US20110193988A1 (en) * 2008-10-15 2011-08-11 Panasonic Corporation Semiconductor device and semiconductor integrated circuit
US20100281231A1 (en) * 2009-04-29 2010-11-04 Guhan Krishnan Hierarchical memory arbitration technique for disparate sources
US20180357169A1 (en) * 2017-06-13 2018-12-13 Microsoft Technology Licensing, Llc Low power multi-core coherency
CN110573989A (zh) * 2017-07-28 2019-12-13 超威半导体公司 多客户端系统中实时流的动态仲裁方法

Also Published As

Publication number Publication date
WO2021126690A1 (en) 2021-06-24
US11513973B2 (en) 2022-11-29
KR20220125247A (ko) 2022-09-14
CN115087961B (zh) 2023-10-27
US20210191879A1 (en) 2021-06-24
JP2023507096A (ja) 2023-02-21
EP4078382A1 (en) 2022-10-26
EP4078382A4 (en) 2024-01-17

Similar Documents

Publication Publication Date Title
US11210253B2 (en) PCIe traffic tracking hardware in a unified virtual memory system
JP6944983B2 (ja) ハイブリッドメモリ管理
US10474583B2 (en) System and method for controlling cache flush size
US11341059B2 (en) Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations
US10133677B2 (en) Opportunistic migration of memory pages in a unified virtual memory system
US11907542B2 (en) Virtualized-in-hardware input output memory management
US9830262B2 (en) Access tracking mechanism for hybrid memories in a unified virtual system
KR20130032402A (ko) 전력-최적화된 인터럽트 전달
US20140181461A1 (en) Reporting access and dirty pages
US11003588B2 (en) Networked input/output memory management unit
CN115087961B (zh) 用于相干及非相干存储器请求的仲裁方案
CN114080587A (zh) 输入-输出存储器管理单元对访客操作系统缓冲区和日志的访问
US10514751B2 (en) Cache dormant indication
KR20220001016A (ko) 게스트 운영체제에 입출력 메모리 관리 유닛 레지스터 복사본을 제공하는 방법
US20220197506A1 (en) Data placement with packet metadata
TWI828307B (zh) 用於記憶體管理機會與記憶體交換任務之運算系統及管理其之方法
JP7357148B2 (ja) サービスダーティライン追跡の品質
US20210191641A1 (en) Systems and methods for reducing instruction code memory footprint for multiple processes executed at a coprocessor

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