CN114902226A - 对更新或使用存储器系统部件资源控制参数的约束 - Google Patents

对更新或使用存储器系统部件资源控制参数的约束 Download PDF

Info

Publication number
CN114902226A
CN114902226A CN202080090852.8A CN202080090852A CN114902226A CN 114902226 A CN114902226 A CN 114902226A CN 202080090852 A CN202080090852 A CN 202080090852A CN 114902226 A CN114902226 A CN 114902226A
Authority
CN
China
Prior art keywords
resource control
memory system
constraint
system component
resource
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.)
Pending
Application number
CN202080090852.8A
Other languages
English (en)
Inventor
S·D·克吕格尔
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.)
ARM Ltd
Original Assignee
ARM 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 ARM Ltd filed Critical ARM Ltd
Publication of CN114902226A publication Critical patent/CN114902226A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • 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/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • 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/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/503Resource availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/504Resource capping

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Multimedia (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

可以利用分区标识符来标记存储器事务,该分区标识符根据哪个软件执行环境导致发出该存储器事务而被选择。存储器系统部件可根据所选择的一组存储器系统部件参数来控制用于处理该存储器事务的资源分配或管理对所述资源的竞争,该所选择的一组存储器系统部件参数是根据由该存储器事务指定的该分区标识符而选择的。可编程约束存储电路存储至少一个资源控制参数约束,该至少一个资源控制参数约束用于约束存储器系统部件资源控制参数的更新或使用。

Description

对更新或使用存储器系统部件资源控制参数的约束
背景技术
技术领域
本技术涉及数据处理领域。
技术背景
两个或更多个软件执行环境(诸如应用程序或虚拟机)可以通过对在软件执行环境之间共享的公共存储器系统的访问而在同一数据处理系统上执行。对于一些系统,一个重要的事实是一个软件执行环境的性能由于另一软件执行环境在共享存储器系统中使用过多的资源而不能保持。此问题可以被称为“吵闹的邻居”问题,并且对于例如企业网络或服务器系统可能特别明显。
发明内容
至少一些示例提供了一种装置,该装置包括:用于处理来自多个软件执行环境中的一个软件执行环境的指令的处理电路;和用于处理由处理电路响应于指令而发出的存储器事务的存储器系统部件;其中:响应于由处理电路发出的存储器事务指定根据哪个软件执行环境导致发出存储器事务而选择的分区标识符,该存储器系统部件被配置为:根据所选择的一组一个或多个存储器系统部件资源控制参数来控制用于处理存储器事务的资源分配或管理对所述资源的竞争,所述选择的组根据由存储器事务指定的分区标识符而从多组一个或多个存储器系统部件资源控制参数中选择;该存储器系统部件包括可编程约束存储电路以存储至少一个资源控制参数约束;以及基于存储在所述可编程约束存储电路中的所述至少一个资源控制参数约束,该存储器系统部件被配置为约束以下项中的至少一项:更新目标存储器系统部件资源控制参数;以及使用目标存储器系统部件资源控制参数来控制所述资源分配或管理对所述资源的竞争。
至少一些示例提供了一种装置,该装置包括:用于处理来自多个软件执行环境中的一个软件执行环境的指令的装置;和用于处理由用于处理的装置响应于指令而发出的存储器事务的装置;其中:响应于由用于处理的装置发出的存储器事务指定根据哪个软件执行环境导致发出存储器事务而选择的分区标识符,该用于处理存储器事务的装置被配置为:根据所选择的一组一个或多个存储器系统部件资源控制参数来控制用于处理存储器事务的资源分配或管理对所述资源的竞争,所述选择的组根据由存储器事务指定的分区标识符而从多组一个或多个存储器系统部件资源控制参数中选择;用于处理存储器事务的装置包括用于可编程地存储至少一个资源控制参数约束的装置;以及基于存储在用于可编程地存储的所述装置中的所述至少一个资源控制参数约束,该用于处理存储器事务的装置被配置为约束以下项中的至少一项:更新目标存储器系统部件资源控制参数;以及使用目标存储器系统部件资源控制参数来控制所述资源分配或管理对所述资源的竞争。
至少一些示例提供了一种方法,该方法包括:处理来自多个软件执行环境中的一个软件执行环境的指令;以及处理响应于该指令而发出的存储器事务;其中:响应于存储器事务指定根据哪个软件执行环境导致发出存储器事务而选择的分区标识符,存储器系统部件根据所选择的一组一个或多个存储器系统部件资源控制参数来控制用于处理存储器事务的资源分配或管理对所述资源的竞争,所述选择的组根据由存储器事务指定的分区标识符而从多组一个或多个存储器系统部件资源控制参数中选择;以及基于存储在可编程约束存储电路中的至少一个资源控制参数约束,约束以下项中的至少一项:更新目标存储器系统部件资源控制参数;以及使用目标存储器系统部件资源控制参数来控制所述资源分配或管理对所述资源的竞争。
本技术的另外的方面、特征和优点将从结合附图阅读的示例的以下描述中显而易见。
附图说明
图1示意性地示出了包括存储器系统的数据处理系统的示例;
图2示意性地示出了根据分配给与存储器事务相关联的软件执行环境的分区标识符来对存储器系统资源进行分区控制的示例;
图3示意性地示出了用于发出指定分区标识符的存储器事务的处理电路的示例;
图4示出了由处理电路执行的不同软件执行环境的示例;
图5示出了将分区标识符分配给不同软件执行环境的示例;
图6示出了使用基于在存储器访问请求中指定的分区标识符而选择的至少一个存储器系统部件资源控制参数来控制存储器系统资源的示例;
图7示出了用于更新存储器系统部件资源控制参数的编程接口;
图8是示出在存储器系统部件处响应存储器事务的方法的流程图;
图9示出了高速缓存的示例,该高速缓存根据分区标识符来控制高速缓存资源的分配和/或更新基于分区标识符而选择的性能监测数据;
图10是示出根据基于分区标识符而选择的容量阈值来控制对高速缓存的分配的方法的流程图;
图11示出了根据分区标识符来控制高速缓存的哪些部分可以分配有数据的示例;
图12示出了具有用于存储至少一个资源控制参数约束的可编程约束存储电路的存储器系统部件的示例;
图13是示出对资源控制参数约束进行编程的方法的流程图;
图14是示出基于资源控制参数约束来控制存储器系统部件资源控制参数的更新的方法的流程图;
图15示出了基于部分的资源分配控制参数的资源控制参数更新约束的示例;
图16示出了作为存储器系统部件资源控制参数的示例而提供的为基于分数的容量阈值设置的资源控制参数更新约束的示例;
图17示出了对最小和最大带宽阈值应用约束的示例;
图18是示出其中在使用资源控制参数来控制存储器事务的资源分配或竞争管理时应用资源控制参数约束的方法的流程图;并且
图19示出了由存储器事务指定的标识符的示例,该标识符可用于确定事务是否将受到资源控制参数的约束。
具体实施方式
一种装置可以具有用于处理来自多个软件执行环境中的一个软件执行环境的指令的处理电路,和用于处理由处理电路响应于指令而发出的存储器事务的存储器系统部件。可以将存储器事务分配给根据哪个软件执行环境导致发出该存储器事务而选择的分区标识符。存储器系统部件可以使用分区标识符根据基于分区标识符选择的一组存储器系统部件参数来控制资源的分配或对资源的竞争管理。另外,分区标识符可以用于控制是否响应于存储器事务而更新性能监测数据。
因此,该处理电路可以根据发出存储器事务的软件来将分区标识符呈现为该事务的标签。这意味着存储器系统中的资源可以在软件执行环境之间分配来避免一个软件执行环境获取多于其合理份额的资源,从而解决上述“吵闹的邻居”问题。
然而,可能的是,存在一个以上的软件执行环境,该软件执行环境被允许控制由存储器系统部件使用的存储器系统部件参数的相应集合的设置,以控制资源的分配或管理对资源的竞争,用于对应的分区标识符。因此,虽然一个软件执行环境可设置存储器系统部件参数的相应集合,以便准许与一个分区标识符相关联的软件执行环境比与另一个分区标识符相关联的软件执行环境具有更大的资源份额,但如果另一个控制软件执行环境能够随后更新存储器系统部件参数以便提供不同的资源份额,则这可能无效。这可能影响预期被分配更多资源份额的软件执行环境的运行。
例如,在一种使用情况下,第一控制软件执行环境可对存储器系统部件参数进行编程,以便分配资源的专用部分以供实时进程使用,该资源的专用部分不应被其他进程使用。这可帮助提供对由实时进程执行的某些操作所期望的最大时间的保证。然而,如果第二控制软件执行环境随后又改变存储器系统部件参数以允许其他非实时进程访问专用资源,则这可能违反实时软件执行环境所期望的专用使用,这可能使得实时处理更难满足其实时保证。在对控制设置进行编程的安全和非安全软件之间会出现类似的问题,其中只有在另一进程能够重写存储器系统部件参数以允许非安全软件访问期望为安全软件分配的资源的情况下,才会影响用于强制对来自安全软件的数据进行安全访问的任何资源划分。
在下文讨论的技术中,存储器系统部件(MSC)设置有用于存储至少一个资源控制参数约束的可编程约束存储电路,该至少一个资源控制参数约束可用于约束目标存储器系统部件资源控制参数的更新或使用。因此,资源控制参数约束提供对以下项强加某些界限的方式:(i)允许对为给定MSC维护的资源控制参数进行的更新,和/或(ii)在处理存储器事务时用来控制资源分配或管理对资源的竞争的资源控制参数的有效值。这可解决上文讨论的问题并且提供这样的保证:一旦已经建立了资源控制参数的特定集合,另一个控制软件执行环境就不能改变在可编程约束存储电路中指定的界限之外的那些参数(或者如果参数被改变超过界限,则这些更新的参数在使用时不会被观察到),从而可遵守先前设置的资源控制参数。
在更详细地讨论这种资源控制参数约束的使用之前,首先描述了用于设置用于软件执行环境的分区标识符并且使用这些分区标识符来控制存储器系统中的资源分配或管理和/或性能监测的通用架构。在已经描述了通用架构之后,将在标题为“资源控制参数约束”的部分中讨论基于资源控制参数约束来控制存储器系统部件资源控制参数的更新或使用的特征。
用于存储器资源和性能监测划分的通用架构
图1示意性地示出了包括N个处理集群4(N为1或更多)的数据处理系统2的示例,其中每个处理集群包括一个或多个处理单元6,诸如CPU(中央处理单元)或GPU(图形处理单元)。每个处理单元6可以具有至少一个高速缓存,例如1级数据高速缓存8、1级指令高速缓存10和共享2级高速缓存12。应当理解,这仅为可能的高速缓存分级结构的一个示例,并且可以使用其他高速缓存布置。同一集群内的处理单元6由集群互连件14耦接。该集群互连件可以具有用于高速缓存可由任何处理单元访问的数据的集群高速缓存16。
片上系统(SoC)互连件18耦接该N个集群和任何其他主设备22(诸如显示器控制器或直接存储器存取(DMA)控制器)。该SoC互连件可以具有用于高速缓存可由与其连接的任何主机访问的数据的系统高速缓存20。SoC互连件18根据任何已知的一致性协议来控制相应高速缓存8、10、12、16、20之间的一致性。SoC互连件还耦接到一个或多个存储器控制器24,每个存储器控制器用于控制对对应存储器25(如DRAM或SRAM)的访问。SoC互连件18还可以将事务引导到其他从设备,诸如用于提供加密/解密功能的密码单元。
因此,数据处理系统2包括用于存储数据并且响应于由处理单元6和其他主设备22发出的事务而提供对数据的访问的存储器系统。高速缓存8、10、12、16、20、互连件14、18、存储器控制器24和存储器装置25可以各自被视为该存储器系统的部件。存储器系统部件的其他示例可以包括存储器管理单元或转译后援缓冲器(在处理单元6本身内或进一步向下在系统互连件18或存储器系统的另一部分内),其用于转译用于存取存储器的存储器地址,并且因此也可以被视为存储器系统的一部分。通常,存储器系统部件可以包括数据处理系统的用于服务存储器事务以访问存储器数据或控制那些存储器事务的处理的任何部件。
存储器系统可以具有用于处理存储器事务的各种资源。例如,高速缓存8、10、12、16、20具有可用于高速缓存在处理器6中的一个处理器上执行的给定软件执行环境所需的数据的存储容量,以提供对数据或指令的比必须从主存储器25中获取它们的情况更快的访问。类似地,MMU/TLB可具有可供用于高速缓存地址转译数据的容量。而且,互连件14、18、存储器控制器24和存储器装置25可以各自具有可用于处理存储器事务的一定量的带宽。
当在处理元件6上执行的多个软件执行环境共享对存储器系统的访问时,可能期望防止一个软件执行环境使用多于其合理份额的资源,从而防止其他执行环境感知性能损失。这对于数据中心(服务器)应用可能特别重要,在此类应用中,存在对通过增加与给定量的存储器容量交互的独立软件进程的数量来减少资本支出的增加的需求,从而提高数据中心服务器的利用率。然而,仍然需要满足web应用程序尾延迟目标,并且如果在服务器上运行的一个进程可以将存储器系统资源独占到对其他进程有害的程度,则是不希望的。类似地,对于联网应用,将先前已经在单独的SoC上的多个功能组合到单个SoC上越来越常见。这再次导致期望限制软件执行环境之间的性能相互作用,以及监测这些软件执行环境如何需要允许那些独立进程访问共享存储器同时限制性能相互作用。
图2示意性地示出了根据发布对应存储器事务的软件执行环境来划分对存储器系统资源的分配的控制的示例。在此上下文中,软件执行环境可以是由数据处理系统内的处理单元执行的任何进程或进程的一部分。例如,软件执行环境可以包括应用程序、客户操作系统或虚拟机、主机操作系统或管理程序、用于管理系统的不同安全状态的安全监测器程序,或这些类型的进程中的任何一种进程的子部分(例如,单个虚拟机可以具有被认为是单独的软件执行环境的不同部分)。如图2所示,可为每个软件执行环境分配给定的分区标识符30,该分区标识符连同与该软件执行环境相关联的存储器事务被传送给存储器系统部件。
在存储器系统部件内,可以基于根据分区标识符选择的多个存储器系统部件参数组中的一个组来控制资源分配或竞争解决操作。例如,如图2所示,每个软件执行环境可以分配有分配阈值,该分配阈值表示可以分配用于与该软件执行环境相关联的数据/指令的高速缓存容量的最大量,其中基于与给定事务关联的分区标识符来选择当服务该事务时的相关分配阈值。例如,在图2中,与分区标识符0相关联的事务可以将数据分配给高速缓存的存储容量的最多50%,留下至少50%的高速缓存可用于其他目的。
类似地,在具有可用于服务存储器事务的有限量带宽的存储器系统部件(诸如存储器控制器24)中,可以为每个分区标识符指定最小和/或最大带宽阈值。如果在给定时间段内,指定给定分区标识符的存储器事务已经小于最小带宽量,则可将与该分区标识符相关联的存储器事务优先化,而如果已经为指定相同分区标识符的存储器事务使用了最大带宽或超过最大带宽,则可为该事务使用降低的优先级。
下文将更详细地讨论这些控制机制。应当理解,这些仅仅是可以基于发出对应事务的软件执行环境来划分存储器系统资源的控制的方式的两个示例。通常,通过允许不同的进程“看到”由存储器系统提供的资源的不同分割部分,这允许限制进程之间的性能相互作用以帮助解决上文所讨论的问题。
类似地,与存储器事务相关联的分区标识符可以用于存储器系统内的分区性能监测,使得可以为每个分区标识符跟踪单独的性能监测数据组,用于允许识别特定于给定软件执行环境(或软件执行环境组)的信息,使得可以比在所有软件执行环境作为整体来记录性能监测数据时更容易地识别潜在性能相互作用的源。这还可以帮助诊断潜在性能相互作用效应并且帮助识别可能的解决办法。
下文论述了用于控制分区标识符的设置、基于用于对应软件执行环境的分区标识符来标记存储器事务、将分区标识符路由通过存储器系统以及在存储器系统中的存储器系统部件处提供基于分区的控制的架构。此架构能够扩展到对分区标识符的宽泛的使用范围。分区标识符的使用旨在在不改变存储器系统的现有架构语义的情况下覆盖它们,并且因此由存储器系统使用的特定存储器协议施加的存储器事务的任何所需的寻址、一致性和排序将不会受到资源/性能监测划分的影响。当使用分区标识符控制资源分配时,尽管这可能影响在服务用于给定软件执行环境的存储器事务时实现的性能,但不会影响架构上有效的计算的结果。也就是说,分区标识符不改变存储器事务的效果或结果(例如,访问什么数据),而是仅影响为该存储器事务实现的定时或性能。
图3更详细地示出了处理单元6的示例。处理器包括处理管线,该处理管线包括多个管线级,包括:用于从指令高速缓存10获取指令的获取级40;用于解码所获取的指令的解码级42;发布级44,其包括发布队列46,该发布队列用于对指令进行排队,同时等待其操作数变得可用,并且在操作数可用时发出用于执行的指令;执行级48,其包括多个执行单元50,执行单元用于执行不同类别的指令来执行对应的处理操作;以及用于将处理操作的结果写入数据寄存器54的写回级52。可以由执行级48从寄存器54读取用于数据处理操作的源操作数。在此示例中,执行级48包括用于执行算术或逻辑操作的ALU(算术/逻辑单元),用于使用浮点值执行操作的浮点(FP)单元,和用于执行将数据从存储器系统加载到寄存器54中的加载操作或将数据从寄存器54存储到存储器系统的存储操作的加载/存储单元。应当理解,这些仅仅是可能的执行单元的一些示例,并且可以提供其他类型。类似地,其他示例可以具有管线级的不同配置。例如,在乱序处理器中,可以提供另外的寄存器重命名级,它用于将由指令指定的架构寄存器限定符重新映射到识别硬件中提供的寄存器54的物理寄存器限定符,以及用于跟踪以与从高速缓存10中获取的顺序不同的顺序执行的指令的执行和提交的重新排序缓冲器。类似地,仍然可以提供图1中未示出的其他机制,例如,可以在获取级提供分支预测功能,以基于分支指令的预测结果控制下一获取地址61的生成。
处理器6具有多个控制寄存器60,包括例如:程序计数器寄存器62,其用于存储指示正被执行的程序的当前执行点的程序计数器;异常级别寄存器64,其用于存储处理器正在以什么当前异常级别执行指令的指示;安全状态寄存器66,其用于存储处理器是处于非安全状态还是安全状态的指示;以及存储器划分和监测(MPAM)控制寄存器68(下文更详细地论述该MPAM控制寄存器),其用于控制存储器系统资源和性能监测划分。应当理解,还可以提供其他类型的控制寄存器。程序计数器寄存器62在图3中示出为由获取级40维护,但该寄存器也可以由其他级访问,例如执行级48。
该处理器具有存储器管理单元(MMU)70,其用于响应于存储器事务而控制对存储器系统的访问。例如,当遇到加载或存储指令时,加载/存储单元发出指定虚拟地址的相应存储器事务。该虚拟地址被提供给存储器管理单元(MMU)70,该MMU使用存储在一个或多个转译后备缓冲器(TLB)72、73、74中的地址映射数据将该虚拟地址转译为物理地址。TLB可以包括用作用于由加载/存储单元50启动的数据访问的级别1TLB的数据TLB 74,用作用于由获取级40启动的指令获取访问的级别1TLB的指令TLB 73,以及用作用于指令和数据访问的共享级别2TLB的主TLB 72,其在级别1TLB 73、74中发生缺失的基础上访问。TLB 72至74各自存储多个TLB条目。每个TLB条目不仅可以识别标识如何转译地址的映射数据,而且识别定义是否允许该处理器在地址空间的对应页面中读取或写入地址的相关联的访问权限数据。在一些示例中,可以存在多个地址转译级,并且因此可以存在多个TLB,例如,第1级TLB,其提供用于将由加载/存储单元50生成的虚拟地址映射到中间物理地址的第一转译级,以及第2级TLB,其提供用于将中间物理地址映射到由该存储器系统用来识别待访问的数据的物理地址的第二转译级。用于第1级TLB的映射数据可以在操作系统的控制下设置,而用于第2级TLB的映射数据可以在管理程序的控制下设置,例如,以支持虚拟化。应当理解,图3中所示的TLB的布置仅是一个示例,并且其他具体实施可以具有不同的TLB组。
除了包括TLB 72、73、74之外,MMU还可以包括其他类型的高速缓存,诸如页面行走缓存75,其用于高速缓存用于在页表行走期间被加载到TLB中的映射数据的数据。该存储器系统可以存储指定虚拟存储器地址空间的每个页面的地址映射数据的页表。TLB 72、73、74可以为多个最近访问的页面缓存这些页表条目的子集。如果处理器将存储器事务发布到不具有存储在TLB 72、73、74中的对应地址映射数据的页面,则页表行走单元76启动页表行走。这可相对慢,因为可能要在存储器中横穿多个级别的页表来识别所需页面的地址映射条目。要加快页表行走,页表的最近访问的页表条目可被放置在页面行走高速缓存75中。这些条目通常是除最终级别的页表条目之外的页表条目,最终级别的页表条目实际上指定了用于所需页面的映射。这些更高级别的页表条目通常指定在存储器中的哪里可以找到用于对应地址范围的其他页表条目。通过在页面行走高速缓存75中高速缓存在先前页表行走中所横穿的页表的至少一些级别,可以使用于共享页表行走的相同初始部分的其他地址的页表行走更快。另选地,页面行走高速缓存75不是高速缓存页表条目本身,而是可以高速缓存可以在存储器中找到那些页表条目的地址,因此同样可以比必须通过首先访问存储器中的其他页表条目来标识那些地址更快地访问给定页表条目。
图4示出了可由处理器6执行的不同软件执行环境的示例。在此示例中,该架构支持在权限级别中依次提高的四个不同的异常级别EL0至EL3(这样EL3具有最高权限异常级别,并且EL0具有最低权限异常级别)。通常,较高权限级别具有比较低权限级别更大的权限,并且因此可以访问不可用于较低权限级别的至少一些数据和/或执行不可用于较低权限级别的一些处理操作。应用程序80在最低权限级别EL0执行。许多客户操作系统82在权限级别EL1执行,其中每个客户操作系统82管理处于EL0的应用程序80中的一个或多个应用程序。虚拟机监测器(也称为管理程序或主机操作系统)84在异常级别EL2执行并且管理相应客户操作系统82的虚拟化。可以由处于EL2的主机操作系统直接管理处于EL0的一些应用程序,而无需处于EL1的中间操作系统。
从较低异常级别到较高异常级别的转变可能由异常事件引起(例如,由管理程序或主机操作系统处理的事件可能导致转变到EL2),而回到较低级别的转变可能由从处理异常事件返回而引起。可以在与获得一些类型的异常事件的级别相同的异常级别来服务它们,而其他类型可以触发到更高异常状态的转变。当前异常级别寄存器64指示处理电路6当前正在以异常级别EL0到EL3中的哪一级执行代码。
在此示例中,该系统还支持安全域90与正常(不太安全)域92之间的划分。可以通过将灵敏度数据或指令分配给被标记为只能由安全域90访问的存储器地址来保护它们,其中处理器具有用于确保在不太安全的域92中执行的进程不能访问该数据或指令的硬件机制。例如,在MMU 70中设置的访问权限可以控制安全域和非安全域之间的划分,或者另选地,完全单独的安全存储器管理单元可以用于控制安全状态划分,其中单独的安全和非安全MMU 70被提供用于相应安全状态内的子控制。可以通过在最高权限级别EL3执行的安全监测器进程94来管理安全域90和正常域92之间的转变。这允许紧密控制域之间的转变,以防止非安全操作80或操作系统82例如访问来自安全域的数据。在其他示例中,硬件技术可以用于在安全状态和轮询转变之间执行分离,使得正常域92中的代码可以直接转到安全域90中的代码而不用经由单独的安全监测器进程94来转变。然而,为了便于解释,下面的后续描述将参考确实使用处于EL3的安全监测器进程94的示例。在安全域90内,安全世界操作系统96在异常级别EL1执行,并且一个或多个可信应用程序98可以在操作系统96的控制下在异常级别EL0执行。在此示例中,在安全域90中没有异常级别EL2,因为在该安全域中不支持虚拟化,但是如果需要,仍然可以提供虚拟化。用于支持这种安全域90的架构的示例可以是由英国剑桥的
Figure BDA0003719877930000111
Limited提供的
Figure BDA0003719877930000112
架构。然而,应当理解,也可以使用其他技术。一些示例可以具有两个以上的安全状态,提供三个或更多个状态,这些状态具有与其相关联的不同级别的安全性。安全状态寄存器66指示当前域是安全域90还是非安全域92,并且这向MMU 70或其他控制单元指示使用哪些访问权限来控制是否可以访问某些数据或允许操作。
因此,图4示出了可以在该系统上执行的多个不同的软件执行环境80、82、84、94、96、98。这些软件执行环境中的每个软件执行环境可以分配有给定的分区标识符(分区ID或PARTID),或者一组两个或更多个软件执行环境可以分配有公共分区ID。在一些情况下,单个进程的单独部分(例如,不同功能或子例程)可以被视为单独的执行环境并且分配有单独的分区ID。例如,图5示出了一个示例,其中虚拟机VM 3和在其下执行的两个应用程序3741、3974全部都分配有PARTID 1,在第二虚拟机VM 7下执行的特定进程3974分配有PARTID 2,并且VM 7本身和在其下运行的另一进程1473分配有PARTID 0。不必将定制分区ID分配给每个软件执行环境。可以指定要用于未分配有分区ID的软件执行环境的默认分区ID。将分区ID空间的哪些部分分配给每个软件执行环境的控制由具有更高权限级别的软件执行,例如在EL2运行的管理程序控制将分区分配给在EL1运行的虚拟机操作系统。然而,在一些情况下,管理程序可以允许处于较低权限级别的操作系统为其自身代码的部分或为在其下运行的应用程序设置其自己的分区ID。而且,在一些示例中,安全世界90可以具有与正常世界92完全分离的分区ID空间,该分区ID空间由安全世界OS或监测程序EL3控制。
如图3所示,该CPU可以包括用于生成要与给定存储器访问事务相关联的MPAM相关信息的MPAM生成逻辑77。MPAM相关信息可包括至少PARTID,但在一些示例中也可包括其他信息(例如,性能监测组ID,其用于选择存储器系统部件应响应于给定存储器访问请求而更新哪组性能监测参数)。MPAM生成逻辑77可包括MPAM寄存器选择逻辑78,该MPAM寄存器选择逻辑用于在MPAM控制寄存器68的分区ID寄存器之间进行选择以确定应使用哪个寄存器来生成MPAM相关信息;以及分区ID虚拟化逻辑79,该分区ID虚拟化逻辑用于控制虚拟分区ID到物理分区ID的映射,该虚拟分区ID基于MPAM控制寄存器68中的信息,该物理分区ID由存储器系统部件使用以选择资源控制设置。MPAM生成逻辑77生成多条另选的MPAM相关信息,包括要用于指令获取访问的指令MPAM相关信息(I-MPAM),要用于数据访问的数据MPAM相关信息(D-MPAM),要用于由指令获取触发的页表行走访问的指令页表行走MPAM相关信息(I-PTW-MPAM),和要用于数据页表行走MPAM相关信息的数据页表行走MPAM相关信息(D-PTW-MPAM)。为页表行走存储器访问提供单独的MPAM相关信息I-PTW-MPAM和D-PTW-MPAM可以是有用的,使得页表行走存储器访问可根据为管理页表的进程而不是当前正在执行的进程定义的存储器系统部件参数来控制它们的资源使用。
应当理解,用于根据与请求相关联的软件执行环境来确定将哪个分区标识符分配给给定存储器请求的精确机制可以有很大的不同,并且可在处理元件(CPU)6处使用任何此类机制。从诸如高速缓存、互连件或存储器控制器的存储器系统部件的角度来看,如何在CPU处选择在给定存储器请求中指定的分区标识符并不重要。
附加到给定存储器事务的分区ID和性能监测组(以及在一些实施方案中,指定从其发出该事务的安全状态的安全状态指示)在整个存储器系统中随着存储器事务流动。因此,存储器系统的将存储器事务传递到该存储器系统的其他部件的节点的节点(例如,互连件)为传出存储器事务提供与在此类节点处接收的对应请求相同的分区ID、性能监测组和安全状态指示。对于存储器系统内的高速缓存,如果存在高速缓存命中,则这些节点的行为有时生成对请求的响应,并且如果存在高速缓存缺失,则这些节点在其他时间将请求传递到存储器系统的另一部分。它们还可以有时基于请求来分配新条目。当分配新条目时,高速缓存可以将引起该分配的请求的分区ID、性能监测组和安全指示与高速缓存的数据本身一起存储。当数据被写回另外的高速缓存或存储器时,生成写回事务,该写回事务指定与高速缓存中的已逐出数据相关联的分区ID、性能监测组和安全指示,而不是与触发该逐出的请求相关联的ID。这允许根据特定于将对应的数据分配给高速缓存的软件执行环境的参数来对要控制/监测的写回进行资源分配或性能监测。
注意,并非所有存储器系统部件(例如,高速缓存、互连件、存储器控制器、存储器装置或存储器管理单元)都可以支持划分。不支持划分的部件可以对所有软件执行环境以共同的方式来控制资源分配或监测性能。然而,传出请求仍采用与上文所讨论的相同的方式附接有分区ID,使得支持划分的下游存储器系统部件可以使用该分区ID来选择适当的一组参数。因此,无论系统设计者是否实际上选择在任何给定存储器系统部件处使用该分区ID,上文所讨论的处理元件架构和分区ID路由方案都提供了支持在存储器系统的不同点处实施划分的一系列具体实施的灵活性。然而,对于这些确实响应分区ID或性能监测组ID的存储器系统部件,它们可以基于分区ID来控制资源分配或竞争管理或性能监测。
性能监测器与资源划分控制不同地工作。性能监测器基于编程到监测器中的过滤器来测量、计数或计算性能度量。过滤器参数可以包括分区ID和性能监测组(或性能监测组,但不包括分区ID)。例如,对传输到存储器的字节进行计数的性能监测器可以过滤测量以仅对具有分区ID为5并且性能监测组为2的读取进行计数。因此,可以为共享相同的分区ID和性能监测组的不同软件执行环境或不同软件执行环境组收集性能测量。
另一方面,对于支持资源划分的系统部件,存储器系统部件基于分区ID来选择一组存储器系统部件参数。存储器系统部件参数可以是用于控制存储器系统资源(诸如带宽、高速缓存容量等)的分配或对这些资源的竞争(例如,所选择的存储器系统部件参数可以为与对应分区ID相关联的事务定义优先级集)的资源控制参数。
图6示出了使用基于分区ID(PARTID)选择的存储器系统部件参数来控制资源划分的示例。存储器系统部件100包括用于控制对受控资源104(例如,高速缓存容量、带宽)的访问的调节器102。存储器系统部件100具有设置表106,其提供多个条目,每个条目对应于给定分区ID。设置表106基于在接收的存储器访问请求中指定的PARTID进行索引。虽然图6示出了一个设置表,但控制一种以上形式的资源控制的其他示例可具有每个实现的资源控制的设置表106。设置表的每个条目为对应的PARTID指定一个或多个分区控制设置(存储器系统部件资源控制参数)108。这些设置可例如指定对于与对应的PARTID相关联的请求可使用多少高速缓存(或多少存储器总线带宽)。一些形式的控制(例如,基于给定PARTID的最大高速缓存占用)可取决于由测量电路110进行的资源使用测量(例如,已经为给定PARTID分配了多少高速缓存条目的计数)。其他形式的控制可能不需要测量电路110(例如,对于如下文进一步描述的基于部分的高速缓存控制机制,不需要测量)。因此,基于对设置表106中定义的给定PARTID的资源使用的限制,调节器102控制请求处理功能112如何处理传入请求,以避免分配给定PARTID的特定软件进程占用超过其对受控资源104的合理份额。
如果存储器系统部件是高速缓存8、10、16、20,则受控资源104可以是高速缓存存储容量。根据相关PARTID的设置表中所选的一组存储器系统部件资源控制参数108,调节器102可响应于存储器事务而控制数据到高速缓存的分配。如果存储器系统部件是互连件14、18或存储器控制器24,则调节器102可根据相关PARTID的设置表中所选的一组存储器系统部件资源控制参数108来控制用于处理存储器事务的带宽或缓冲器占用的分配。
图7示出了用于更新一个或多个设置表106中的控制设置的编程接口120。在该示例中,存在两个单独的设置表106-A和106-B,用于控制相应的调节器102-A、102-B以控制对相应类型的受控资源104-A、104-B的访问。编程接口120包括PARTID选择器130和多个设置接口寄存器132-A、132-B。为了设置或读取给定PARTID的控制设置,首先用给定PARTID写入PARTID选择器130内的寄存器,并且然后对与要更新的控制设置相对应的一个或多个接口寄存器132-A、132-B执行读取或写入操作(读取操作将从设置表的对应条目返回值,而写入操作将向设置表的对应条目写入新值)。PARTID选择器130基于其PARTID选择寄存器中指定的PARTID来选择设置表106的适当条目以进行写入或读取。
编程接口120的寄存器是存储器映射寄存器,其由发出加载/存储操作的CPU 6访问,该加载/存储操作指定映射到要读取/写入的对应寄存器的存储器地址作为其目标地址。因此,PARTID选择器130将一组公共的接口寄存器132连接到设置表106的相关行,从而避免了对每个单独的PARTID的单独的接口寄存器的需要。PARTID选择器130有效地在表中向上和向下移动用于访问设置表106的“键孔”,以选择要读取或写入的条目。
在支持分离安全和不太安全的地址空间的系统中,可分别为安全和不太安全的地址空间提供分离的设置表106和分离的编程接口120,以将不太安全的域与安全域隔离。
图8示出了用于基于分区ID来控制存储器系统部件的操作的方法。在步骤200处,存储器系统部件接收存储器事务,该存储器事务指定分区ID、性能监测组(PMG)和如上所述的安全状态指示。如果存储器系统部件支持存储器系统资源划分(步骤202),则在步骤204处,基于分区ID和安全状态来选择一组资源控制参数。该步骤不考虑性能监测组。在步骤206处,使用所选择的一组资源控制参数来控制资源的分配,或者使用所选择的一组资源参数来管理对这些资源的竞争。如果不支持存储器系统资源划分,则省略步骤204和206。
如果存储器系统部件支持性能监测组进行性能监测划分(步骤208),则在步骤210处,在该部件中实施的每个性能监测器对照其过滤器参数来测试该请求(其可以包括要应用于PMG和分区ID的测试)。满足其过滤器参数的每个监测器根据监测器被设计进行的测量、计数或计算来更新其内部状态。对于不支持性能监测划分的存储器系统部件,省略步骤210。在一些实施方案中,分区ID字段和PMG字段两者可以包括在过滤器参数中(使得PMG字段进一步限制分区ID字段)。另选地,PMG可以被解释为与分区ID字段分开的独立ID,在这种情况下,过滤器参数可以考虑PMG但不考虑分区ID。
支持资源监测划分的每个存储器系统部件可以具有一组参数寄存器,这组参数寄存器存储基于分区ID选择的不同存储器系统部件参数组。用于划分控制的控制参数在逻辑上是一系列按分区ID进行索引的控制参数。用于设置控制参数的接口可以被布置为一系列存储器映射寄存器,或者可以被布置有选择器寄存器,并且每个控制参数只有单个配置寄存器。在后一种情况下,配置软件首先将要配置的分区ID存储到选择器寄存器中,然后将期望的控制参数存储到一个或多个控制参数配置寄存器中。
图9示出了作为存储器系统部件的一个示例的高速缓存300的示例。高速缓存300可以是用于高速缓存指令或数据的高速缓存,诸如给定处理元件6的1级数据高速缓存8、1级指令高速缓存10或2级高速缓存12、集群高速缓存16或系统高速缓存20。高速缓存300还可以是用于地址转译的高速缓存,诸如MMU 70中的TLB 72或页面行走高速缓存74。虽然图3示出了在给定处理器核心内提供MMU 70的示例,但是也可以在存储器系统中进一步向下提供系统MMU,例如在SoC互连件18内。
高速缓存300具有用于存储要高速缓存的信息的高速缓存存储装置(高速缓存RAM)302。高速缓存RAM 302具有一定数量的存储条目304。
如图9所示,每个条目可以存储:
·高速缓存数据306(它可以是任何高速缓存的信息,不仅涵盖数据值,而且包括指令或地址转译数据,具体取决于高速缓存的类型),
·有效位308,它指定条目中的对应数据是否有效,
·标签字段310,它指示与高速缓存数据相关联的地址的一部分
·将数据分配到高速缓存中的存储器事务的分区ID 314
·分配存储器事务的性能监测组ID 316
·分配存储器事务的安全状态指示318(它指示存储器事务从哪个安全状态发出);
·系统设计可能需要为每个高速缓存行保持的其他信息,例如一致性状态或地址空间指示符(ASI)。
在从高速缓存逐出数据时,ID字段314、316、318用于导出用于写回事务的分区ID、性能监测组ID和安全状态指示。尽管在图9中未示出,但是每个高速缓存条目还可以存储指定高速缓存数据的一致性状态的一致性信息(例如,数据是清洁的还是脏的,用于确定是否需要写回)和/或用于在需要逐出时选择牺牲高速缓存行的牺牲选择数据(例如,用于跟踪哪些条目最近最少使用的数据)。
可以根据任何已知的高速缓存组织来控制将数据分配到高速缓存,包括直接映射、组相联或完全相联。图9中的示例示出了具有4种途径的组相联组织方案,但应当理解,这只是一个示例。对高速缓存的查找独立于与对应存储器事务相关联的分区ID而执行。因此,当接收到指定给定分区ID的存储器事务时,该事务可以命中已索引的高速缓存条目内的任何数据,而不考虑存储在缓存条目中的分区ID 314、非安全ID指示器318和性能监测组316。因此,性能资源的划分和/或性能监测不会阻止不同的软件进程共享对高速缓存数据的访问。
另一方面,当将数据分配给高速缓存时,高速缓存控制器312根据基于安全状态和对应的存储器事务的分区ID选择的一组资源控制参数来控制分配。高速缓存具有一组资源控制参数寄存器320(上述设置表106的示例),每个寄存器320存储用于对应的软件执行环境的资源控制参数。选择器322基于分区ID和需要将数据分配到高速缓存的传入存储器事务的安全状态来选择一个寄存器。存储在所选寄存器中的参数用于控制数据是否被分配给高速缓存以及如何分配。
在第一高速缓存分区控制模式中,使用最大容量阈值来控制分配,最大容量阈值是使用分区ID选择的,它识别高速缓存容量的允许分配有与对应分区ID相关联的数据的条目的最大数量。在支持安全状态和非安全状态的具体实施中,该阈值可以定义允许分配有与分区ID和非安全ID指示器的给定组合相关联的数据的最大容量。例如,最大容量阈值可以由较高权限进程设置,即用于给定操作系统的阈值可以由管理程序设置,并且用于给定应用程序的阈值可以由操作系统设置。
例如,图2示出了分别为分区ID 0、1和2分配50%、50%和40%的最大容量阈值的示例。注意,为不同软件执行环境定义的最大容量阈值的总和可以超过100%,因为这些阈值仅是对高速缓存的可以存储给定分区ID的数据而不是保证的分配的量的最大限制。在这种情况下,对应的软件执行环境不会同时使用其最大分配。
返回到图9,高速缓存300具有一组分配计数器326,它们用于跟踪有多少个高速缓存条目304已被分配用于与每个分区ID相关联的数据。在支持安全状态的情况下,可以基于安全状态来进一步划分这些计数器。当给定分区ID的数据值被分配给高速缓存时,对应的分配计数器326递增。当数据无效、被逐出或替换时,用于对应的分区ID的分配计数递减。当响应于给定存储器事务发生高速缓存缺失时,高速缓存控制器312读取对应于由该存储器事务指定的分区ID的分配计数器326和资源控制参数寄存器320,将分配计数与最大容量阈值进行比较,然后基于该比较的结果来控制分配。如果当前分配尚未超过阈值,则可以将所需数据分配给高速缓存。然而,如果分配计数等于或超过阈值,则高速缓存控制器312要么可以确定不为新请求分配任何数据,要么可以在分配新数据之前逐出或替换来自高速缓存的与相同分区ID相关联的其他数据,以防止高速缓存分配有大于与该分区ID相关联的条目阈值水平。如果需要逐出或替换,则可以使用存储在高速缓存的每个条目中的分区ID 314(以及如果提供的话,牺牲选择信息)来确定逐出什么数据。应当理解,上述对容量进行计数的方式仅仅是一个示例,并且也可以使用其他技术来跟踪高速缓存容量。
资源控制参数寄存器320可以采用不同方式来表示由最大容量阈值指示的最大条目数量。例如,它们可以直接指定可以分配给对应的分区ID数据的最大条目数量。另选地,它们可以根据高速缓存总容量的可以为该分区ID分配的一部分来指定该阈值。例如,该参数可以表示缩放百分比,其中该参数的宽度和比例因子在对应的存储器部件的ID寄存器362中指定。例如,部件可以支持8位容量控制按256缩放,在这种情况下,将容量的30%分配到给定分区,该分区的最大容量参数将为0.30*256=76.8,舍入为76以防止分配超过期望的百分比。
在支持多个安全状态的实施方案中,安全状态指示还用于与分区ID结合来选择合适的资源控制参数寄存器320和分配计数326。
图10示出了根据第一划分控制模式中的最大容量阈值来控制高速缓存分配的方法。在步骤330处,为给定的存储器事务检测到高速缓存缺失。在步骤332处,基于对应的分区ID和安全状态来选择一组资源控制参数320。在步骤334处,将由用于对应的安全状态和分区ID的计数器326维护的分配计数与所选择的一组资源控制参数320中的最大容量阈值进行比较,并且在步骤336处,确定该分配计数是否大于该最大容量阈值。如果不大于,则在步骤338处,响应于高速缓存缺失而将该请求的数据分配给高速缓存。另一方面,如果该分配大于或等于分配阈值,择在步骤340处,阻止将数据分配到高速缓存,或者另选地,在步骤342处,与和当前请求相同的分区ID相关联的数据可以被替换或逐出来让位于新分配的数据,并且在步骤338处可以将该数据分配为正常(尽管步骤340或342提供了限制,但分配计数有时可能会超过阈值,例如,如果该阈值最近已更新)。方法是前进到步骤340还是342是对于高速缓存的给定具体实施的具体实施选择。
另选地,如图11所示,可以使用第二高速缓存控制模式,其中基于分区ID选择的高速缓存容量部分位图350用于控制高速缓存分配。位图350具有多个字段352,每个字段指定高速缓存存储装置302的对应部分是否允许被分配用于存储与对应分区ID相关联的数据。例如,图11的示例的下部中所示的位图350具有32个字段352,每个字段对应于高速缓存容量的1/32。每个字段可以被设置为0以指示指定对应分区ID的事务不能将数据分配给高速缓存的该部分,或者被设置为1以指示允许该部分分配有用于该分区ID的数据。
如图11的顶部部分所示,通过为不同分区ID设置不同的位图350,这允许高速缓存的一些部分保留用于给定的分区ID,而其他部分可以在分区ID之间共享或完全未分配。例如,对于图11中所示的4个高速缓存部分的子集(这不是整个高速缓存容量),高速缓存的部分0仅分配到分区1,部分1被分配到分区1和分区2两者,使得它们可以竞争对高速缓存的此部分的分配,部分2仅被分配到分区2,并且部分3没有被分配到这些分区中的任一个。因此,当将数据分配给用于分区1的高速缓存时,高速缓存控制器312被限制为在部分0或1内选择位置,但不能分配到部分2或3。由该位图限定的“部分”可以是一个或多个高速缓存条目的任何组,该组的特性是任何给定的地址可以被分配到该组中的至少一个条目,例如,在组相联高速缓存中的整个途径(包括属于该途径的所有集合),或者完全相联高速缓存中的条目的更加任意的子集。
因此,利用第二分配控制模式,当检测到高速缓存缺失时,同样地选择用于对应分区ID和安全状态的一组控制参数,但是这时,读取高速缓存位图并且将其用于控制高速缓存的哪些部分可以分配有数据。
一些高速缓存具体实施可以仅支持上述第一和第二高速缓存分配控制模式中的一者(例如,直接映射的高速缓存可以实施第一模式但不实施第二模式)。其他具体实施可以支持使用这两种模式的选项。例如,这可能很有用,因为如果正在使用的特定高速缓存组织不支持提供许多部分(例如,关联性相对低的组相联高速缓存),则覆盖最大容量限制比单独的部分划分提供了更好的控制。
如上所述,高速缓存300可以具有用于控制如何执行资源划分的存储器映射配置寄存器360。这是上述编程接口120的示例。配置寄存器360包括用于识别高速缓存300的硬件能力的ID寄存器362,用于选择要更新的一组资源控制参数的选择器寄存器364,和用于指定要写入所选择的一组资源控制参数的参数的一个或多个配置寄存器366。
例如,ID寄存器362可以指定支持第一/第二高速缓存分配控制模式中的哪一者(阈值或基于位图的划分)。例如,不具有任何分配计数器326的高速缓存可以指示不支持第一模式。在这种情况下,控制处理器可以被限制为使用第二模式。其他高速缓存可以支持这两种模式,并且具有选择哪一者来用于给定进程的灵活性。在这种情况下,可以在对应的分区ID的资源控制参数寄存器320内指定使用哪个模式,并且使用配置寄存器360进行编程。
当设置用于给定分区ID的一组资源控制参数时,软件将该分区ID写入到选择器寄存器364并且将要写入的参数写入到对应的配置寄存器366,具体是通过发出指定映射到这些寄存器364、366的存储器地址的存储器事务。作为响应,高速缓存300从配置寄存器366读取参数并且将它们写入到由相关分区ID标识的对应资源控制参数寄存器320。当支持安全状态时,可以将选择器寄存器364和配置寄存器366备份,使得不同版本分别提供用于安全状态和不太安全状态,其中与存储器事务相关联的安全指示选择访问哪一组寄存器。
注意,这样的用于设置资源控制参数的选择器寄存器364和配置寄存器366仅仅是可以如何设置资源控制参数的一个示例。这种方法的优点在于它节省了存储器系统部件中的地址空间使用。然而,替代方案将使用更宽的接口,其中一系列控制设置显示为一系列N个控制设置寄存器,其中N是支持的最大分区ID数量。这更为简单,因为可以为具有单个写入的分区更新控制配置,并且因此不需要互斥来防止一个处理器访问选择器寄存器364和配置寄存器366,同时另一处理器配置存储器系统部件。例如,如果最大分区ID数量为216并且典型的存储器系统部件具有2至4个控制,则这种方法可以使用256KB的地址空间来用于这一系列资源控制参数。
对存储器映射配置寄存器360的访问可以由MMU 70控制,例如,以限制哪些操作状态可以发出存储器事务以更新配置寄存器360。例如,可能不允许在EL0执行的指令访问配置寄存器360,但是可以允许处于EL2的管理程序访问。当支持分区ID的虚拟化时,在高速缓存300内使用的分区ID是物理分区ID,而尝试设置用于对应应用程序的分区ID的资源控制参数的操作系统将指定虚拟分区ID。因此,为了防止操作系统更新错误的资源控制参数,可以使对映射到配置寄存器360的地址的访问陷入,并且可以触发异常以将处理切换到处于EL2的管理程序。管理程序中的异常处理程序然后可以发出具有正确的物理分区ID的对应存储器事务,以更新高速缓存300处的相关的一组参数320。为了实现这一点,在两级MMU转译过程中,可以将与存储器映射寄存器360相关联的地址放置在与存储器系统部件使用的其他地址空间不同的第2级地址页面上。
采用与资源控制划分类似的方式,可以基于性能监测组(和在PMG是分区ID的子属性的实施方案中,分区ID)和安全状态来划分高速缓存300中的性能监测。可以提供多个性能监测器380,每个性能监测器可被配置为基于在与性能监测器380相对应的一组过滤器参数382中编程的过滤器来测量、计数或计算性能度量。过滤器参数382可以包括用于指定PARTID和PMG的字段,以及在接收到存储器事务的情况下,如果过滤器参数382已经为PARTID/PMG字段设置了特定值,则性能监测器可以根据与该事务相关联的PARTID/PMG值是否匹配在过滤器参数382中匹配的值、基于该事务来确定是否更新其度量。注意,在支持第一高速缓存分配模式的具体实施中,在提供分配计数器326用于跟踪是否超过分配阈值的情况下,同一分配计数器326也可以用于性能监测。
在高速缓存300是地址转译高速缓存(诸如TLB或页面行走高速缓存)的情况下,以这种方式对高速缓存分配资源的划分可以是有用的,以确保一个软件执行环境无法分配多于为其分配的地址转译高速缓存容量百分比/部分,从而为其他软件执行环境留出空间并且减少“吵闹的邻居”效应。
虽然图9示出了高速缓存300的示例,但是其他存储器系统部件可以具有类似的用于配置与给定分区ID/性能监测组/安全状态相关联的存储器系统部件参数的一组存储器映射配置寄存器360,以及用于指定用于对应分区ID的配置数据组的资源控制参数寄存器320。
具体地,对于其他存储器系统部件(诸如存储器控制器24或互连件14、18),可以实施任何以下形式的资源划分:
存储器通道带宽划分
可以划分主存储器通道的带宽。可以提供两个带宽控制方案。存储器通道可以任选地实施以下中的一者或两者:
·分区所要求的最小带宽,即使在存在竞争的情况下
·存在竞争时,分区可用的最大带宽限制
这些控制方案的任何组合可以同时在支持它们的通道中使用。每个控制方案在下面的部分描述。
最小带宽控制方案
当分区的当前带宽低于最小值时,最小带宽控制方案给予来自该分区的请求优先权,并且当其高于其最小带宽时,允许其请求与其他普通请求竞争。因此,分区的低于其最小带宽的请求最可能在通道上被调度。最小带宽控制方案在计数期间跟踪存储器带宽。
·如果在计数周期期间跟踪的分区带宽使用当前小于该分区的最小值,则优先选择其请求以使用通道带宽。
·如果在计数周期期间跟踪的分区带宽使用当前大于该分区的最小值,则其请求与其他普通优先权请求竞争使用通道上的带宽。
在计数窗口期间未由分区使用的带宽不会累加。存储器系统部件内的寄存器可以将用于给定分区ID的最小带宽限制指定为每秒缩放兆字节。每秒兆字节的缩放值被计算为每秒所需的兆字节乘以可由硬件定义的比例因子。
最大带宽限制控制方案
最大带宽限制控制方案为在计数周期期间最多到其最大带宽限制的分区提供普通优先权。如果在计数周期期间跟踪的分区带宽使用当前小于该分区的最大值,则其请求以普通优先权竞争存储器通道上的调度。如果在计数周期期间跟踪的分区带宽使用当前大于该分区的最大带宽限制,则其请求与其他次优选的请求竞争使用通道上的带宽。
当分区的带宽使用低于最大带宽限制时,最大带宽限制控制方案给予来自该分区的请求普通优先权,并且当带宽使用超过最大带宽限制时,给予其请求非优先性。因此,在不存在对通道带宽的竞争的情况下,分区可以使用多于最大带宽。当分区的带宽使用低于其最大限制时的带宽请求是利用普通优先权调度的,因此根据竞争的请求,分区所请求的低于其最大限制的所有带宽不是都可以由通道调度器准予。在计数窗口期间未由分区使用的带宽不会累加。
同样,可以将用于最大带宽限制的控制参数指定为每秒缩放兆字节。每秒兆字节的缩放值被计算为每秒所需的兆字节乘以可由硬件定义的比例因子。
在实施最小带宽控制方案和最大带宽限制控制方案两者的情况下,下表显示了请求的优先情况:
Figure BDA0003719877930000231
*注意,虽然优先权通常可以被定义为“高”、“中”或“低”以增加先于“中”或“低”优先权请求来服务“高”优先权请求的可能性,但是具体实施在服务请求时仍然可以偏离优先顺序以满足具体实施的其他目标,诸如避免饥饿。
对于上文讨论的所有方案,用于带宽划分方案的控制参数可以全部以给定的单位来表达,例如每秒兆字节。该值也等于每微秒传输的字节。一个具体实施可能需要将每个带宽划分控制参数乘以恒定缩放因子,然后将所得值编程到用于分区ID的存储器系统部件的一个带宽控制寄存器中。可以在该存储器系统部件内的发现寄存器(类似于上述高速缓存的发现寄存器362)中指定该具体实施是否需要缩放控制参数和缩放因子(如果需要缩放的话)。
对于上述所有存储器带宽划分方案,存储器通道带宽调节可以在计数周期内发生。计数周期可以是固定的或是移动窗口。该窗口的宽度可以是可发现的常数,该常务可以从该存储器系统部件中的发现寄存器读取。例如,计数周期可以是至少一微秒,并且可以长达20微秒或更多。更长的计数周期可能需要更多硬件,尤其是在移动窗具体实施中,而更短的计数周期可能具有更多的边界效应,尤其是在固定窗具体实施中。
在固定窗口计算中,将带宽分配给请求,使得每个分区根据该分区的最小值和最大值来获得带宽。请求或本地优先级可用于解决对于带宽的发生冲突的请求。当达到计数窗口时段时,新窗口在一开始没有历史,除了先前尚未服务的任何请求队列之外。对于每个分区,新窗口开始从零累加带宽。
随着移动窗口计算,移动窗口保持来自在过去的窗口宽度中发出的所有命令的分区的带宽历史。没有重置每个分区的带宽的计算,而是在处理命令时添加带宽,并且在该命令移出窗户的历史时从计算中移除带宽。这种连续计算相对不含边界效应,但除了固定窗口所需的每个分区ID的带宽计数器之外,需要更多硬件来跟踪窗内的命令历史。
所有分区的最小带宽分配之和可以超过可用的带宽。当一些分区不使用其带宽分配时,这不是问题,因为未使用的分配可供其他分区使用。然而,当最小带宽被过度分配时,无法始终满足为分区编程的最小带宽。软件可以确保最小带宽未被过度分配以确保系统可以可靠地递送所编程的最小带宽分配。
由于可用带宽可能取决于许多系统中的一个或多个时钟频率,例如DDR时钟,因此软件可能希望在更改影响可用带宽的时钟时重新分配带宽。降低时钟速率而不改变分配可能导致带宽的过度分配。备注:DRAM通道上的可用带宽不是恒定的,而是随时钟速率而变化,是读取和写入和库命中率的混合。
所属领域的技术人员将看到,所述类型的带宽控制不限于仅在存储器通道控制器处使用,而是可以被部署为在任何存储器系统部件处控制带宽。
优先级划分
与本文档中列出的其他存储器系统资源不同,优先级不会直接影响存储器系统资源的分配,而是对访问资源时发生的冲突具有影响。正确配置的系统应很少由于优先级而受到明显的性能影响,但优先权确实在过度订阅的情况下发挥重要作用,无论是瞬时还是持续的。因此,“优先级划分”可以用作帮助隔离分区之间的存储器系统影响的工具。
可以在存储器系统中的每个部件(支持优先级划分)处为分区分配优先级。此划分控制允许存储器系统的不同部分被设置为处理具有不同优先级的请求。例如,可以将从处理器到系统高速缓存的请求设置为使用比从系统高速缓存到主存储器的请求更高的传输优先级。
可以为每个分区ID识别两种类型的优先级:
·内部优先级控制在此存储器系统部件的内部操作中使用的优先级。它们可以在存储器系统部件内使用以使内部操作优先化。例如,当带宽分配不选择明显的胜者时,存储器控制器可以使用内部优先级来在等待的请求之间进行选择。
·下游优先级控制向下游传递到另一个存储器系统部件(例如到互连件或存储器控制器)的优先级。“下游”是指用于请求的通信方向。“上游”响应通常使用与生成该响应的请求相同的传输优先级。存储器系统部件使用下游优先级来向不具有优先级划分的下游部件指示优先级。这可以用于为下游的互连部件设置传输优先级。
另一方面,如果部件未实施优先级划分,或它未实施下游优先级,则它可以使用“直通优先级”,即下游优先级与传入(上游)优先级或请求相同。类似地,传送经过存储器系统部件(从下游到上游)的响应的优先级与(从下游)接收到的响应具有相同的优先级。
资源控制参数约束
以上示例描述了各种存储器系统部件(MSC)资源控制参数,这些参数可用于控制资源的分配或对MSC中的资源的竞争的管理。例如,资源控制参数可包括上述图9至图11的高速缓存示例中所示的基于阈值容量的控制或基于部分的控制,或者可包括如图2的示例中所示的用于存储器带宽分配的最小或最大带宽控制,或者可包括基于优先级的控制。如上文图9的示例所示,可使用对MSC的某些存储器映射寄存器的存储器访问来更新资源控制参数。由页表(其用于由MMU 70控制存储器访问)定义的存储器映射可指定允许哪些软件进程访问映射到用于设置给定MSC的资源控制参数的配置寄存器的存储器地址。例如,一种方法可以是,在处理电路的特定操作状态下,软件进程的资源控制参数可由与该操作状态相关联的最高权限级别软件访问。例如,与安全分区标识符相关联的资源控制参数可由在诸如管理程序或操作系统的安全域中操作的最高权限级别代码(或第二最高权限)来更新。可能不允许将非安全代码写入控制与安全状态相关联的资源控制参数的更新的存储器映射寄存器。另一方面,可能允许在非安全域中操作的最高权限(或第二最高权限)代码设置与非安全分区相关联的资源控制参数。
因此,通过设置与安全软件执行环境的分区标识符相关联的资源控制参数,安全域中的软件可能够保留资源的某些部分(诸如高速缓存容量的一部分)以供其独占使用。例如,安全软件可设置如图11所示的高速缓存分区位图,以便留下高速缓存中能够为该安全进程分配的至少一部分,但其他进程的分区位图为该部分指定该部分不能被分配给那些其他进程。具体地,安全软件可为非安全分区ID设置分区位图,以留下未被分配用于那些其他分区ID的高速缓存的该专用部分。
然而,如果非安全软件也能够为非安全分区ID设置资源控制参数,则该非安全软件可随后更新那些非安全分区ID中的一者的分区位图以指示由安全软件保留的高速缓存的专用部分也可被分配用于非安全软件,从而实际上违反安全软件所期望的专用使用。
在某些实时软件被授予对某些资源的独占访问权的情况下,可能存在类似的问题,但随后通过更新用于那些其他分区ID的存储器系统部件资源控制参数来为与其他进程相关联的分区标识符分配对保留部分的访问,这可能使得实时软件难以满足其服务保证。
在以下示例中,存储器系统部件(MSC)设置有可编程约束存储电路,该可编程约束存储电路存储至少一个资源控制参数约束,该资源控制参数约束可用于约束可对用于管理资源的分配或竞争的资源控制参数进行的更新,或可用于约束在处理存储器事务时资源控制参数的使用。对存储在可编程约束存储电路中的资源控制参数约束的访问被限制在操作状态的特定子集,例如安全域。这允许操作状态的子集限制在其他状态中允许哪些资源控制参数,以减少先前设置的资源划分被对资源控制参数的后续更新影响的机会。这对于强制执行某些安全或实时软件的高速缓存或带宽资源的专门使用可能尤其有用。
图12示出了存储器系统部件的示例,其可以是高速缓冲存储器8、12、16、20中的一者或如上文示例中的存储器控制器24。对于高速缓存示例,应当理解,虽然图12中未示出,但图12的MSC也可包括图9所示的一些部件,诸如高速缓存存储装置302、分配计数寄存器326、存储器映射状态和配置寄存器360以及性能监测存储装置380、382。
MSC具有一组资源控制参数存储电路400(例如寄存器),其存储用于相应分区标识符的资源控制参数的相应集合。多路复用器402基于与使用存储器系统资源的请求相关联的分区标识符(和安全域指示符)在控制参数的集合之间进行选择。分区标识符和安全指示符由发出请求的处理元件生成,如上文所讨论的。资源控制电路404使用所选的一组资源控制参数来控制用于处理与指定分区标识符相关联的存储器事务或用于管理对资源的竞争的资源分配。由资源控制电路执行的特定控制可根据存储器系统部件的类型而变化,例如对于高速缓存,控制可以是哪些高速缓存条目可被分配用于存储与存储器事务相关联的数据,而对于存储器控制器,控制可以是总线上的带宽是否可被分配给事务。
MSC具有资源控制参数更新电路410,用于响应于从处理元件接收的参数更新请求412来控制资源控制参数400的更新。例如,参数更新请求412可以是存储存储器事务,其指定已被映射到资源控制参数寄存器400中的一个资源控制参数寄存器的存储器地址作为其目标地址。另选地,在使用存储器映射状态或配置寄存器360的示例中,如在图9所示的示例中,参数更新请求412可指定映射到配置寄存器360中的一个配置寄存器的地址,并且对这些配置寄存器360进行的更新然后可控制资源控制参数更新电路410来更新对应的资源控制参数寄存器400。与每个相应的资源控制参数寄存器具有其自己的存储器映射地址的情况相比,使用配置寄存器的这种方法可帮助减少需要暴露给存储器映射的地址的数量。因此,应当理解,存在其中可响应于参数更新请求来更新资源控制参数的多种方式。
当接收到指定要写入到与至少一个分区标识符相关联的至少一个目标资源控制参数的新值的参数更新请求时,在一些实施方案中,资源控制参数更新电路410基于存储在可编程约束存储电路420中的至少一个资源控制参数约束来控制是否允许该目标资源控制参数的更新。例如,资源控制参数约束可限制能够针对某些资源控制参数设置的最小或最大值,或可指定是否允许存储器系统资源的某些部分更新其对应的资源控制参数以指示允许将资源的该部分分配给任何分区标识符。因此,当响应于参数更新请求412更新目标资源控制参数时,资源控制参数更新电路410考虑该所请求的更新是否将满足可编程约束存储电路420中指定的约束,并且如果参数更新请求将违反这些约束,则资源控制参数更新电路410可拒绝该请求,或者资源控制参数更新电路410可仅在约束允许的程度上执行该请求。例如,代替设置违反约束的值,资源控制参数更新电路410可将资源控制参数设置为与所请求的值不同的值,其中不同的值确实满足约束。
因此,以这种方式,约束可用于确保一旦在MSC的寄存器400内建立了资源控制参数的特定集合,则随后的更新就不能在可编程约束存储电路420中定义的约束界限之外更新这些参数。这为特定关键安全软件提供了对期望资源划分的更好保证,诸如在安全域90中执行的安全软件,或需要例如响应延迟的特定界限的实时关键软件。
另选地,代替在更新资源控制参数时应用约束,可由资源控制电路404在使用资源控制参数400来控制存储器事务的处理时应用约束。这将在下文结合图18进一步描述。
无论在更新或使用资源控制参数时是否应用约束,可编程约束存储电路420都是可编程的,以响应由给定处理元件6的处理电路发出的约束更新请求422。例如,可编程约束存储电路420可包括MSC内的一个或多个存储器映射寄存器,其可通过发出将映射到这些寄存器中的一个寄存器的存储器地址指定为其目标地址的存储存储器事务来更新。当处理电路6在操作状态的受限子集中的一个操作状态(其排除处理电路6的至少一个操作状态)下发出该约束更新请求422时,可编程约束存储电路可响应于约束更新请求而可编程。因此,如果处理电路6在除了这些操作状态的受限子集中的一个操作状态之外的操作状态下发出约束更新请求42,则可响应于约束更新请求422来禁止可编程约束存储电路的编程。这确保了被允许设置资源控制参数400但不是操作状态的受限子集的一个操作状态的任何软件执行环境被迫遵守由在操作状态的受限子集的一个操作状态下执行的软件设置的约束,这提供了对由操作状态的受限子集强制执行的资源控制参数约束的更强的保证。
例如,如上文所讨论的,处理电路可在安全域90和不太安全的域92中的一者中操作,并且操作状态的受限子集可包括其中处理电路在安全域中操作的至少一个操作状态。因此,安全软件可能够设置存储在可编程约束存储电路420中的资源控制参数约束,但不太安全的域92中的非安全软件可能无法设置约束。这意味着由非安全软件执行的对资源控制参数400的更新受到安全软件施加的任何约束。这使得能够从施加在非安全软件上的对资源分配的任何上限或限制的安全域进行中央控制,并且限制非安全软件可改变由安全软件建立的先前建立的资源控制参数400的程度。
在一个示例中,可通过对由存储器管理单元70使用的页表中定义的存储器映射进行控制,来完成约束更新请求422仅在其从操作状态的受限子集(诸如安全域)发出时才可成功的实施。例如,映射到对应于可编程约束存储电路420的寄存器的地址可在任何页表结构中被定义为仅对安全代码是可访问的,并且对非安全代码可能是不可访问的。此外,这些地址也可进一步限制基于权限级别的访问,使得只有与给定权限级别或更高权限级别相关联的安全代码才可访问用于存储资源控制参数约束的存储器映射寄存器。
当可编程约束存储电路420被重新编程以将资源控制参数约束更新为新值时,可能的是,存储在寄存器400中的一些存储器系统部件资源控制参数的当前值可违反可编程约束存储电路420中设置的约束的新值。在这种情况下,尽管违反新的约束,也不需要改变寄存器400中的资源控制参数的旧值。优选的是,MSC保留违反约束的新值的任何给定MSC资源控制参数的当前值,而不管它现在在由资源控制参数约束420指示的界限之外的事实。这确保了允许能够设置约束的安全软件或其他软件首先在资源控制参数中设置某些富含资源的设置,该资源控制参数可管理其自己的资源分配或管理某些优选软件执行环境(诸如实时软件)的分配,并且然后将资源控制参数约束420设置为较不富含资源的阈值,以便将任何将来的更新约束到寄存器400中的资源控制参数,同时仍然保持先前设置的富含资源的控制。如果约束控制软件随后需要将新的富含资源的设置添加到违反当前约束值的资源控制参数400,则约束控制软件可暂时放松或移除(例如,对于分区的至少一个子集,诸如安全分区)在可编程约束存储电路420中定义的约束,然后将新的富含资源的资源控制参数添加到寄存器400,并且然后恢复可编程约束存储电路420中的约束,以防止其他软件对违反约束的资源控制参数设置进行编程。
图13是示出响应约束更新请求422的方法的流程图,该约束更新请求请求对可编程约束存储电路420中的资源控制参数约束进行更新。在步骤450处,接收约束更新请求,并且在步骤452处,确定约束更新请求是从安全域发出的还是从不太安全的域发出的。在通过MMU 70所使用的存储器映射来控制对可编程约束存储电路420的访问的一个示例中,步骤450和452然后可由MMU 70而不是由接收约束更新请求的MSC来有效地执行。将另选的是,不管检查到请求从哪个域发出,约束更新请求都可被转发到MSC,伴随有显示请求从其发出的域90、92的指示符,并且然后MSC处的一些电路可检查约束更新请求是否从安全域发出。在这种情况下,步骤452在MSC本身处执行。
因此,如果在步骤452处确定约束更新请求是从不太安全的域92发出的,则在步骤454处拒绝约束更新请求42。如果从安全域发出约束更新请求,则在步骤456处,MSC执行约束更新请求,其将存储在可编程约束存储电路420中的至少一个资源控制参数约束更新为如约束更新请求中指定的一个或多个新值。在对约束进行更新之后,在步骤458处,响应于约束更新请求,即使MSC资源控制参数400的任何旧值违反可编程约束存储电路420中的约束集的新值,也保留该MSC资源控制参数的任何旧值。这确保了即使将来的更新受到限制,也保留任何先前分配的富含资源的设置。
图14示出了流程图,该流程图示出了在MSC处接收的、请求对资源控制参数进行更新的参数更新请求412的处理。在该实施方案中,资源控制参数约束被用作资源控制参数更新约束,其约束参数更新请求的处理。在步骤470处,资源控制参数更新电路410接收参数更新请求412,其可以是例如如上文所讨论的存储器映射存储事务。参数更新请求指定要写入到与给定分区标识符相关联的一个或多个目标资源控制参数的一个或多个新值。在步骤472处,资源控制参数更新电路410检查所指定的新参数值是否违反可编程约束存储电路420中设置的任何资源控制参数更新约束。如果不是,则在步骤474处,可将新的参数值写入到寄存器400内的目标资源控制参数,以便提供该新的分区控制设置。
另一方面,如果在步骤472处,新参数值违反在可编程约束存储电路420中指定的任何资源控制参数更新约束,则不同的选项可用于响应该事件。在一个选项中,在步骤476处,可简单地拒绝参数更新请求412,从而保留目标资源控制参数的任何先前值,并且不进行参数更新请求412所请求的更新。
另选地,如步骤478所示,不是简单地拒绝参数更新请求,而是可在资源控制参数更新约束允许的程度上执行参数更新请求。因此,响应于参数更新请求412,当目标存储器系统部件资源控制参数的新值违反资源控制参数更新约束时,则MSC的资源控制参数更新电路410将目标MSC资源控制参数设置为满足资源控制参数更新约束的值,而不是使用违反约束的新值。例如,资源控制参数更新电路410可尝试设置目标MSC资源控制参数,以准许与约束所允许的一样多的对存储器系统资源的访问。例如,目标MSC资源控制参数可被设置为与资源控制参数更新约束中定义的阈值相匹配的值,而不是被设置为参数更新请求中指定的新参数值。因此,利用该方法,如果给定的软件进程请求更新参数以将太多的资源授予给定的分区标识符,则替代地,MSC授予与在可编程约束存储电路420中设置的约束的界限内允许的一样多的对资源的访问。该方法可提高性能(避免不必要的资源匮乏设置用于这样的进程,该进程可被授予更多的资源,同时仍然遵守诸如安全代码的某些约束控制软件强制执行的约束)。
无论采取步骤476和478中的哪一个选项,在步骤480处,资源控制参数更新电路410都可确定对于该特定MSC是否支持并且启用约束错误报告。如果支持并且启用约束错误,则在步骤482处执行错误报告动作。该错误报告动作可以是以下项中的至少一项:将错误报告信息记录在错误报告存储元件中和/或发信号通知中断。另一方面,如果在确实支持错误报告的具体实施中不支持或当前未启用错误报告,则在步骤484处不执行错误报告动作。
一般来讲,使软件知道以下情况可能是有用的:参数更新请求是否由于其指定违反参数更新约束的新参数值而尚未被完全执行。这对于调试目的可能是有用的,使得如果软件没有按预期运行,例如因为软件对存储器系统资源的访问比预期的少,那么就可确定其原因。这可有助于代码开发。
一些硬件具体实施可能根本不支持错误报告,并且在这种情况下,随后当用于参数更新请求的新参数值违反参数更新约束时,可不执行错误报告动作,并且因此对于这种具体实施,方法始终前进至步骤484。
然而,对于确实支持错误报告的其他具体实施,这对于提高调试能力可能是有用的,使得如果请求资源控制参数更新已经由于可编程约束存储电路中设置的约束而降级,则软件可接收通知。确实支持错误报告的一些此类具体实施可永久地启用错误报告,使得该方法始终前进至步骤482并且从不执行步骤484。
然而,在确实为错误报告提供硬件支持的其他具体实施中,是否启用或禁用错误报告可取决于存储在配置存储元件中的可编程配置信息。例如,配置存储元件可以是存储启用或禁用错误报告的参数的MSC的另一存储器映射寄存器。在一些情况下,该配置可简单地为是否完全执行错误报告。在其他示例中,配置信息也可指定错误报告的更详细的属性,诸如定义要采取的特定错误报告动作(例如,它可以是可配置的,即在执行错误报告动作时是否发信号通知中断,或者在没有发信号通知中断的情况下是否将错误简单地记录在错误报告存储元件中)。另一错误报告配置选项可以是报告一些类型的错误的发生而不报告其他类型的错误的发生。因此,约束错误可被配置为能够被报告或不被报告。
图12至图14的示例概括地讨论了资源控制参数约束。图15至图17示出了可施加在对应类型的MSC资源控制参数上的更具体类型的约束的示例。
图15示出了如上文讨论的图11的示例中那样将更新约束到使用部分位图的资源控制参数的示例。例如,图15示出了用于一个分区ID的高速缓存部分位图(CPBM)502,其可用于控制向高速缓存中分配与该分区ID相关联的请求,其中位图包括多个位,每个位对应于高速缓存容量的特定部分。当给定位的值为0时,这表示不允许用于对应分区ID的软件将数据分配给高速缓存的对应部分,而当该位的值为1时,则允许用于对应分区ID的软件将数据分配给高速缓存的对应部分。虽然图15示出了基于这种部分位图控制高速缓存分配的示例,但也将可能的是,为其他类型的存储器系统部件提供基于部分的资源分配控制参数。例如,可通过提供多个独立类型的总线积分并且使用基于部分的位图来指示允许特定分区标识符使用哪种类型的总线积分,来对存储器带宽分配施加基于部分的控制。因此,更一般地,可提供基于部分的资源分配控制参数,其针对资源的两个或更多个部分中的每个部分,指定是否允许分配资源的该部分以供与对应分区标识符相关联的软件执行环境使用。
如图15所示,当使用基于部分的资源分配控制参数时,则资源控制参数更新约束也可被定义为用作掩码的位图500,其掩蔽对指定为基于部分的资源分配控制参数的资源控制位图502的至少一个子集的更新。掩码位图(CPMBM)500用作基于部分的约束,其针对在部分位图502中具有对应位的资源部分中的部分子集中的每个部分,指定是否允许更新用于任何分区ID的任何基于部分的资源分配控制参数502,以指示允许分配该特定部分以供使用。例如,在图15所示的编码中,如果部分掩码位图500的给定位504是0,则允许将部分位图502的对应位设置为1,以指示允许对应的分区ID使用高速缓存或存储器资源的该对应部分。另一方面,当部分掩码位图500的给定位506具有值1时,这可指示不允许将对应位设置为1。注意,掩码位图500在与所有分区标识符相关联的所有部分位图502之间共享(图15仅示出了用于一个分区ID的部分位图502,但其他分区ID将各自具有其自己的部分位图),使得每个部分位图受到在部分掩码位图500中定义的相同更新约束。
因此,部分掩码位图500用作基于部分的约束,其约束可对基于部分的资源分配控制参数502进行哪些更新,以限制可在稍后的请求中请求的资源。这意味着一旦安全域软件已经将其自身或具有专用用途的特定其他软件执行环境分配给存储器系统部件资源的特定部分,并且已经设置了另一分区标识符的控制参数以将该其他分区排除在使用所保留的专用资源之外,则通过在对应于所保留部分的位置中以等于1的位来设置部分掩码位图500中的约束,这将防止任何其他控制软件随后更新任何分区ID的资源控制位图502以将对应于所保留部分的位从0改变为1。
在一个示例性具体实施中,当尝试更新部分位图502时,其中尝试将部分位图502的给定位设置为1,但部分掩码位图500的对应位指定这被禁止,则部分位图502的给定位保留其先前的值(因此,如果先前被设置为0,则尽管新部分位图值508的对应位为1,其仍将保持为0,但如果部分位图的给定位在更新之前是1,则其可在更新之后保持其值为1)。然而,这种行为不是必需的。
第二方法可以是,在更新部分位图502时,部分位图502的任何“被掩蔽掉的”位(其对应于指示禁止将部分位图502的对应位设置为1的部分掩码位图500的“1”位506)被清除为0,而不管它们的先前状态如何。换句话讲,当将更新应用于部分位图502时,应用掩码位图500,并且掩码位图500中的任何“不被允许的位”506迫使部分位图502中的对应“被掩蔽掉的”位被清除(以指示具有对应的分区ID的请求可能未被分配资源的该部分)。因此,如果采用这种方法,则部分位图502的“被掩蔽掉的”位的先前值无关紧要。这可能是有用的,因为可能的是,控制设置表中的相关条目正在被更新,因为对应的PARTID已经被再循环到新的软件环境,所以可能优选的是,确保如果先前软件环境的任何先前分配的设置违反在部分掩码位图500中定义的约束,则它们被清除。因此,对于该实施方案,由部分掩码位图502标识的“被掩蔽的”位指示部分位图500的新值508不能允许分区ID分配资源的该部分,使得在对用于分区ID的部分位图500的任何后续写入之后,新写入的部分位图500的对应位应当指示不允许分配资源的该部分(例如,在该实施方案中,该位应当为0)。
在该第二方法中,可通过组合在参数更新请求中指定的新位图值508和约束部分掩码位图500,来强制执行对部分位图502的更新的约束,使得新值与颠倒部分掩码位图500的对应位的结果进行逐位ANDed运算。换句话讲,CPBM′[PARTIDi]j=CPBMnewj AND(NOT(CPMBMj)),其中CPBM′[PARTIDi]j是为所请求的更新之后的分区ID i的部分位图500的位j设置的新值,CPBMnewj是被请求写入到分区ID i的部分位图500的新值508的位j,并且CPMBMj是约束部分掩码位图502的位j的值。该方法意味着新位图值508中对应于部分掩码位图500中的为1的位的任何位被清除为0。例如,在图15所示的特定实例中,在参数更新请求中指定的新部分位图值508请求更新位图502,以指示资源部分0和1能够被分配给对应的分区标识符,但由于部分掩码位图500中的位0和1被设置为1,因此这约束了更新并且改为将对应分区的部分位图502的位0和1清除为0。
注意,对于部分掩码位图500,具有与部分位图502相同的位数不是必需的。在实施过程中,控制约束存储电路420的软件将不太可能施加约束以便防止整个部分位图502从0改变为1,因为通常将需要为其他软件执行环境分配高速缓存或存储器部件中的至少一些资源。在实施过程中,对于在可编程约束存储电路420内实现部分掩码位图500的存储,以及还对于实现用于将部分掩码位图500的相应位与部分位图的新值508组合的逻辑,存在硬件成本。为了限制该硬件成本,可能存在对可由部分掩码位图约束的部分的数量的限制,并且因此对于延伸到由部分掩码位图500覆盖的范围之外的部分位图502的任何位,可隐含地假设用于那些部分的部分掩码位等于0,使得用于存储器系统部件资源的那些部分的更新不受约束。即,部分掩码位图(基于部分的约束)可有效地仅将更新约束到资源的部分的特定子集,并且该子集可排除资源的至少一部分,这在硬件方面可以是更有效的。在这种情况下,然后如果控制约束的安全软件希望保留资源的某些部分供其自己使用,或者供指定的其他软件执行环境使用,则它可能被迫选择对应于部分掩码位图500中显式存储的位的部分之一作为资源的保留部分。
因此,概括地说,在存储器系统部件资源控制参数包括基于部分的资源分配控制参数的情况下,针对资源的两个或更多个部分中的每个部分指定是否允许分配该部分以供与对应分区标识符相关联的软件执行环境使用,然后,约束可包括基于部分的约束,该约束为部分的子集中的每个部分指定是否允许更新对应的基于部分的资源分配控制参数,以指示该部分被允许分配。如果参数更新请求请求更新基于部分的资源分配控制参数以指示允许分配资源的给定部分,并且基于部分的约束指定禁止更新给定部分以指示允许分配给定部分,则可改为设置基于部分的资源分配控制参数以指示禁止分配资源的给定部分。在图15的底部示出了这种情况的示例,其中拒绝将部分位图502的位0和1设置为等于1的所请求的更新,并且改为在写入到部分位图502的新值中将这些位设置为等于0,因为将部分掩码位图500的位0和1设置为1以指示针对可用资源的那些部分0和1禁止基于部分的约束的0到1转换。
应当理解,图15所示的特定编码不是必需的。例如,其他具体实施可颠倒部分位图502和部分掩码位图500中的一者或两者中的0和1的含义。
如图16所示,如上文所讨论的,其他MSC可定义基于分数的资源控制参数,该参数对允许分配给与对应分区标识符相关联的软件的资源的最大分数设置限制。例如,图16示出了其中给定分区标识符的高速缓存分配的最大分数由高速缓存分配阈值520定义的示例,在该示例中高速缓存分配阈值被设置为高速缓存容量的40%。在于MSC资源控制参数中施加容量分数限制的情况下,则对应的参数更新约束可以是另一分数522,其对允许在分数控制520中指定的最大分数设置限制。同样,约束522可在每个分区ID的相应的分数控制参数520之间共享(为简洁起见,图16仅示出单个分区ID的分数控制参数520)。例如,在图16中,能够在资源控制参数520中设置的最大分数在约束存储522中被设置为50%。因此,更新资源控制参数520以分配具有大于50%的存储的任何分区的尝试可被拒绝,或仅在可编程约束522中设置的上限内允许的程度上被部分地执行。利用该方法,然后当由参数更新请求412指定要写入到基于分数的控制520的新值524时,该新值524可与由最小值确定电路526在参数更新约束522中指定的限制组合,该最小值确定电路输出值522、524中的最小值,并且然后将所得最小值528写入到用于对应的分区标识符的容量阈值分数值520。因此,如果所请求的新值524小于或等于参数更新约束522中指定的限制,则将该新值简单地写入到相关资源控制参数520,但如果该新值超过该限制,则将改为写入该限制值,使得不为对应的分区分配比该约束所允许的任何更多的资源。
如图17所示,在具有如上文所讨论的施加最小和最大带宽阈值530、532的存储器控制器或其他存储器系统部件的示例中,可在可编程约束电路420内提供对应的最小和最大约束限制534、536,其分别限制能够写入到最小和最大带宽值530、532中的每一者的最大值。同样,最小阈值限制534或最大阈值限制536的单个实例可在所有分区ID的带宽控制530、532之间共享。类似于图16,使用最小值确定电路542、544将约束值534、536与待写入到最小和最大带宽限制530、532中的一者的新值538、540组合,使得针对最小和最大带宽两者,将针对最小和最大带宽值写入到资源控制参数530、532的值限制在对应约束值534、536中指定的水平。因此,通过将对最大带宽的更新限制在某个级别,这防止了给定分区分配的存储器带宽份额超过约束控制软件(诸如安全域代码)所允许的存储器带宽份额。另外,通过防止最小带宽被设置高于某个阈值水平,这确保了当所分配的带宽小于最小阈值时,存储器事务可使其优先级提升的程度存在限制。
因此,图16和图17的示例是存储器系统部件资源控制参数组包括资源分配阈值参数的示例,该资源分配阈值参数指示用于控制由与对应分区标识符相关联的软件执行环境使用的资源分配或用于控制对资源的竞争的管理的最大或最小阈值。该资源分配阈值参数可以是最大阈值,其中如果它将导致对应的软件执行环境被分配大于最大阈值(如在图16和图17所示的示例520、532中)的资源量,则阻止资源的进一步分配。另选地,资源分配阈值参数可指示最小阈值,如在图17所示的示例530中,使得当分配给对应软件执行环境的资源的当前分数或量小于由资源分配阈值参数指示的最小阈值时,则可提升由对应软件执行环境发出的请求的优先级。
无论哪种方式,不管阈值是最小还是最大,资源控制参数更新约束都可指定指定阈值上限值的阈值上限约束(诸如图16和图17所示的示例522、534、536)。如果参数更新请求请求更新资源分配阈值参数520、530、532,则存储器系统部件可禁止更新资源分配阈值参数520、530、532,以指示大于由阈值上限约束522、534、536指示的阈值上限值的阈值作为最大或最小阈值。更具体地,当更新资源分配阈值参数时,存储器系统部件可将资源分配阈值参数设置为指示由参数更新请求指定的新阈值524、538、540和由阈值上限约束指示的阈值上限值522、534、536中的最小值。
应当理解,虽然图15至图17示出了MSC资源控制参数的类型的一些示例以及可被设置为包含对那些参数的更新的约束的对应示例,但这些不是可提供的唯一示例。在另一示例中,可定义成比例的跨度资源。成比例的跨度资源控制具有跨度减1参数(STRIDEM1)。STRIDEM1被表示为非负整数。STRIDEM1值为0时获得对资源的最多访问。STRIDEM1值为1时获得对资源的一半访问,STRIDEM1值为3时获得对资源的四分之一访问,以此类推。对成比例的跨度资源控制的约束也是非负整数。当为PARTID写入STRIDEM1的新值时,存储在控制设置存储装置中的值是新值和约束的最大值。
当处理系统被复位时(例如在上电时,或当接收到指示装置将被复位到某一已知预定状态的复位信号时),则可编程约束存储电路420的内容可被复位到指示相应组和存储器系统部件资源控制参数400的更新不受约束的值。因此,这可允许仅在上电或复位之后执行系统固件以在没有任何限制的情况下设置资源控制参数400的相应组,从而可在设置约束420之前强制执行对资源的某些部分的任何专用访问,该约束然后保护那些资源控制设置免除其他软件的后续更新。
另选地,在一些具体实施中,则可能不存在强制将约束复位为指示MSC资源控制参数的无约束更新的值的硬件电路。在这种情况下,在复位之后,可由在设备上执行的固件或其他平台软件负责相应地通过设置约束寄存器420来设置设备,以允许对资源控制参数的无约束更新,直到专用资源的任何分割已经被执行的点,并且然后随后在可编程约束存储电路420中设置约束以抑制随后的更新。
因此,在可编程约束存储电路的一种可能的使用中,在建立设备的复位固件之后,可设置约束寄存器420,使得它们根本不约束资源控制参数400中的控制设置。例如,对于图15的基于部分的位图,这可以是部分掩码位图500的所有位都可被设置为0。对于图16的示例中的基于分数的阈值控制,则这可以是将约束寄存器522中指定的限制值设置为其最大允许值,并且类似地,对于图17的示例,可将限制最小和最大带宽参数的约束寄存器534、536设置为所允许的最大约束值。如果系统固件随后需要从引导进程的早期分割出一些用于专用使用的资源,则它可随后设置适当的资源控制参数400以准许其自身或某些其他分区独占地访问存储器系统资源的某些部分,或者将相对高分数的资源授予其自身或其他进程,具体取决于控制类型。在已根据需要设置了资源控制参数之后,系统固件然后可设置约束以降低对控制参数的后续更新的灵活性,诸如通过在图15的部分掩码位图500中设置一些等于1的位,或者如图16和图17的示例中那样降低在参数更新约束寄存器522、534、536中定义的阈值。
一旦系统处于正常操作中,对约束的后续更新就可被限制到某段控制软件,例如在充当约束控制器的安全域中执行的潜在小段软件。约束控制器可从安全和非安全软件接收约束更新请求,并且决定是准许还是拒绝它们。此软件随后可根据需要改变特定存储器系统部件中的约束寄存器420的内容以强制执行约束。
在另一示例中,可为给定资源设置多个约束,每个约束由不同的控制器控制并且仅应用于来自较低权限环境的访问。例如,在具有安全/非安全域的系统中,安全控制器的约束可应用于安全域中的较低权限级别和非安全域中的所有权限级别。非安全控制器可指定应用于非安全环境中的较低权限但不应用于安全环境的约束。
虽然上文论述了对应于不同类型的资源控制参数的多个不同类型的约束,但应当了解,任何一个平台具体实施均可不使用所有这些示例,具体取决于所包含的特定存储器系统部件和资源划分控制。另外,一些具体实施可具有使用一种类型的约束的一些存储器系统部件和使用另一类型的其他存储器系统部件(具体取决于在每个存储器系统部件处实现的资源划分控制的类型)。
上文图14至图17的示例描述了在更新给定分区标识符的资源控制参数时应用的约束。如图18所示,另选的方法是允许资源控制参数的无约束设置,但使用在可编程约束存储电路420中定义的约束来约束在处理存储器事务时资源控制参数的使用。例如,如果要基于给定的资源控制参数来控制存储器事务,并且已经定义了对该给定的资源控制参数施加限制的约束,则即使给定的资源控制参数的存储值违反由约束定义的限制,该给定的资源控制参数也可被解释为具有在由约束定义的限制内的约束值,并且该约束值可用于控制资源分配或管理资源之间的竞争,而不是为给定的资源控制参数实际存储的值。
因此,在图18的示例中,可以与图14至图17的示例类似的方式来定义资源控制参数约束(例如,使用部分掩码位图500或阈值上限值522、534、536),但该约束可被解释为资源控制参数使用约束而不是资源控制参数更新约束。
图18更详细地示出了在一个实施方案中,当在图8的步骤206处使用资源控制参数来控制资源分配或管理对资源的竞争时执行的步骤。在步骤600处,存储器系统部件确定正被处理的存储器事务是否是受到在可编程约束存储电路中定义的任何约束的受约束类型的存储器事务。
如图19所示,除了分区标识符602之外,存储器事务还可指定一个或多个标识符,诸如指示与存储器事务相关联的权限级别的权限级别标识符604,指示与存储器事务相关联的安全域的安全域标识符606,和/或指示存储器事务是否基于对应的资源控制参数约束而被豁免约束的约束豁免标识符608。应当理解,这些仅仅是一些示例,并且并非必须使用所有这些标识符。在一个示例中,存储器系统部件可基于由存储器事务指定的标识符602、604、606、608中的至少一者来确定存储器事务是否是受约束类型的存储器事务。例如,一些特定的PARTID可被豁免约束,而其他PARTID可受到约束。另外,确定是否应用约束可基于存储器事务是从安全域发出的还是从非安全域发出的(例如,安全事务可以是无约束的,但不太安全的事务可以是受约束的)。另一种方法可以是,从低于某个阈值的权限级别发出的存储器事务可受到约束,但更多的权限进程可使它们的存储器事务不受约束。另外,约束豁免标识符608可允许一些软件进程单独地将特定事务标识为被豁免约束,而来自相同软件进程的其他事务可受到约束。在一些示例中,约束豁免标识符608可与其他标识符602、604、606中的一者结合使用,使得仅允许某些软件进程(例如,安全进程或权限大于阈值的进程)选择性地将其事务豁免约束,而其他软件进程可对其所有事务进行约束,而不管约束豁免标识符608的值如何。
存在可实现的大量选项。在一些具体实施中,确定存储器事务是受约束的还是不受约束的可取决于存储在控制寄存器中的可编程配置数据。例如,权限进程可对配置数据编程以指定应当或不应当对其应用约束的PARTID、权限级别或安全域,或者设置指示特定模式的“模式”指示符以确定存储器事务是否受约束(例如,一种模式可基于PARTID确定事务是否应受约束,另一种模式可基于权限级别确定事务是否应受约束,而其他模式可使用标识符的组合,诸如豁免标识符608与权限级别604组合)。
因此,不管用于区分受约束和不受约束类型的存储器事务的精确机制如何,都在步骤600处确定正在处理的特定存储器事务是否是受限类型的存储器事务。通过提供用于使一些存储器事豁免约束的机制,这允许一些优选进程(诸如安全域进程或实时关键进程)使用相对富含资源的设置,而其他进程被约束为使用某些界限内的设置。
如果存储器事务不是受约束类型的存储器事务,则在步骤610处,基于存储在设置表106中的所选的一组资源控制参数的无约束值来控制用于事务的资源分配或对资源的竞争管理。
如果存储器事务是受约束类型的存储器事务,则在步骤612处,确定所选的一组资源控制参数中的给定的资源控制参数是否违反存储在可编程约束存储电路420中的资源控制参数约束。如果给定的资源控制参数没有违反约束,则在步骤614处,可使用给定的资源控制参数(未经修改)来控制资源分配或管理对资源的竞争。如果给定的资源控制参数确实违反约束,则在步骤616处,可使用资源控制参数的约束值来控制资源分配或管理对资源的竞争,该资源控制参数的约束值是基于资源控制参数约束来确定的,并且在允许资源分配方面不如资源控制参数的存储值宽松。例如,对于基于阈值的资源控制参数,步骤616处使用的受约束的资源控制参数可以是由约束指定的阈值上限。对于基于部分的资源控制参数,步骤616使用的受约束的资源控制参数可以是经修改的位图,其中被指示为由对应的部分掩蔽位图掩蔽掉的任何位被假定为清零,使得资源的对应部分不能被分配给存储器事务。在步骤618处,如果错误报告既被硬件支持又被启用(如果支持错误报告被启用还是被禁用的配置,则该决定取决于配置设置),则采取错误报告动作(例如,记录错误报告信息和/或发信号通知中断),如在图14的步骤482处那样。
图18示出了步骤612、614、616处的逻辑流程,其中首先确定资源控制参数是否违反约束,并且然后使用未经修改的资源控制参数或受约束的资源控制参数来控制资源分配或管理对资源的竞争。如果不需要错误报告,则等效方法可以是省略对给定的资源控制参数是否违反约束的任何确定,但改为简单地将给定的资源控制参数与约束组合,其方式为使得组合的结果是原始给定的资源控制参数(在参数未违反约束的情况下)或对应于由约束指示的限制(在参数确实违反约束的情况下)。例如,对于基于部分的方法,用于控制资源分配的部分位图502的有效值可通过用表示约束的掩码位图500的逆对部分位图502进行逐位ANDing运算来生成,类似于上述用于控制先前示例中的部分位图502的更新的逐位AND函数(另选地,用部分位图502或掩码位图500的不同编码,可使用逻辑运算符的不同函数来组合它们以生成用于资源控制的有效值)。对于基于阈值的方法,用于处理资源分配或竞争管理的高速缓存容量或最小/最大带宽分配阈值的有效值可被确定为阈值的存储值和由约束表示的阈值中的最小值(类似于图16和图17中的方法)。因此,应当理解,如果不需要错误报告,则实际确定所存储的资源控制参数是否违反约束就不是必需的。
在本申请中,字词“被配置为…”用于意指装置的元件具有能够执行所限定的操作的配置。在该上下文中,“配置”意指硬件或软件的互连的布置或方式。例如,该装置可具有提供所限定的操作的专用硬件,或者可对处理器或其他处理设备进行编程以执行该功能。“被配置为”并不意味着装置元件需要以任何方式改变以便提供所限定的操作。
虽然本文已结合附图详细描述了本发明的示例性实施方案,但应当理解,本发明并不限于那些精确的实施方案,并且在不脱离所附权利要求书所限定的本发明的范围和实质的前提下,本领域的技术人员可在其中实现各种变化和修改。

Claims (20)

1.一种装置,所述装置包括:
用于处理来自多个软件执行环境中的一个软件执行环境的指令的处理电路;以及
用于处理由所述处理电路响应于所述指令而发出的存储器事务的存储器系统部件;其中:
响应于由所述处理电路发出的存储器事务指定根据哪个软件执行环境导致发出所述存储器事务而选择的分区标识符,所述存储器系统部件被配置为:根据所选择的一组一个或多个存储器系统部件资源控制参数来控制用于处理所述存储器事务的资源分配或管理对所述资源的竞争,所述选择的组根据由所述存储器事务指定的所述分区标识符而从多组一个或多个存储器系统部件资源控制参数中选择;
所述存储器系统部件包括可编程约束存储电路以存储至少一个资源控制参数约束;并且
基于存储在所述可编程约束存储电路中的所述至少一个资源控制参数约束,所述存储器系统部件被配置为约束以下项中的至少一项:
更新目标存储器系统部件资源控制参数;以及
使用所述目标存储器系统部件资源控制参数来控制所述资源分配或管理对所述资源的竞争。
2.根据权利要求1所述的装置,其中所述处理电路具有多个操作状态,所述多个操作状态包括操作状态的受限子集,所述受限子集包括所述多个操作状态中的至少一个操作状态;
当处于操作状态的所述受限子集中的一个操作状态下时,所述可编程约束存储电路响应于由所述处理电路发出的约束更新请求而可编程;并且
当处于操作状态的所述受限子集之外的操作状态下时,响应于由所述处理电路发出的约束更新请求来禁止所述可编程约束存储电路的编程。
3.根据权利要求2所述的装置,其中所述处理电路被配置为在安全域和不太安全的域中的一者中操作,并且当在所述不太安全的域中操作时,所述处理电路被配置为禁止对为所述安全域的访问而保留的地址的访问;并且
操作状态的所述受限子集包括其中所述处理电路在所述安全域中操作的至少一个操作状态。
4.根据任一前述权利要求所述的装置,其中当所述可编程约束存储电路被重新编程以将所述至少一个资源控制参数约束更新为新值,并且给定的存储器系统部件资源控制参数的当前值违反由所述至少一个资源控制参数约束的所述新值指示的约束时:
所述存储器系统部件被配置为保留所述给定的存储器系统部件资源控制参数的所述当前值,而不管由所述至少一个资源控制参数约束的所述新值指示的对所述约束的所述违反。
5.根据任一前述权利要求所述的装置,其中:
响应于请求更新所述目标存储器系统部件资源控制参数的参数更新请求,所述存储器系统部件被配置为基于存储在所述可编程约束存储电路中的所述至少一个资源控制参数约束来约束所述目标存储器系统部件资源控制参数的更新。
6.根据权利要求5所述的装置,其中:
响应于请求将所述目标存储器系统部件资源控制参数更新为新值的所述参数更新请求,当所述新值违反所述至少一个资源控制参数约束时,所述存储器系统部件被配置为将所述目标存储器系统部件资源控制参数设置为满足所述至少一个资源控制参数约束的值。
7.根据权利要求5所述的装置,其中:
响应于请求将所述目标存储器系统部件资源控制参数更新为新值的所述参数更新请求,当所述新值违反所述至少一个资源控制参数约束时,所述存储器系统部件被配置为执行错误报告动作;
所述错误报告动作包括以下项中的至少一项:
将错误报告信息记录在错误报告存储元件中;
以及
发信号通知中断。
8.根据权利要求7所述的装置,其中响应于请求将所述目标存储器系统部件资源控制参数更新为新值的所述参数更新请求,当所述新值违反所述至少一个资源控制参数约束时,所述存储器系统部件被配置为根据存储在配置存储元件中的可编程配置信息来选择是否执行所述错误报告动作。
9.根据任一前述权利要求所述的装置,其中响应于由所述处理电路发出的所述存储器事务,当所述存储器事务是受约束类型的存储器事务时,所述存储器系统部件被配置为:
当所选择的一组一个或多个存储器系统部件资源控制参数中的给定的资源控制参数满足对应的资源控制参数约束时,基于所述给定的资源控制参数来控制所述资源分配或管理对所述资源的竞争;以及
当所述给定的资源控制参数违反所述对应的资源控制参数约束时,根据基于所述对应的资源控制参数约束确定的受约束的资源控制参数来控制所述资源分配或管理对所述资源的竞争。
10.根据权利要求9所述的装置,其中所述存储器系统部件被配置为基于由所述存储器事务指定的至少一个标识符来确定所述存储器事务是否是所述受约束类型的存储器事务。
11.根据权利要求10所述的装置,其中所述至少一个标识符包括以下项中的至少一项:
所述分区标识符;
权限级别标识符,所述权限级别标识符指示与所述存储器事务相关联的权限的级别;
安全域标识符,所述安全域标识符指示与所述存储器事务相关联的安全域;以及
约束豁免标识符,所述约束豁免标识符指示所述存储器事务是否基于所述对应的资源控制参数约束而被豁免约束。
12.根据任一前述权利要求所述的装置,其中响应于指示所述装置将被复位到预定状态的复位信号,所述可编程约束存储电路被配置为将所述至少一个资源控制参数约束复位到指示对所述多组一个或多个存储器系统部件资源控制参数的更新或使用无约束的值。
13.根据任一前述权利要求所述的装置,其中对于给定的存储器系统部件,每组一个或多个存储器系统部件资源控制参数与对应的分区标识符相关联,并且包括基于部分的资源分配控制参数,所述基于部分的资源分配控制参数针对资源的多个部分中的每个部分,指定是否允许分配资源的所述部分以供与所述对应的分区标识符相关联的软件执行环境使用;
其中所述至少一个资源控制参数约束包括基于部分的约束,所述基于部分的约束针对资源的所述多个部分中的部分子集中的每个部分,指定以下项中的至少一项:
是否允许更新所述基于部分的资源分配控制参数以指示资源的所述部分被允许分配;以及
当使用所述基于部分的资源分配控制参数来控制针对受约束类型的存储器事务的所述资源分配时,所述给定的存储器系统部件是否应防止资源的所述部分被分配,即使所述基于部分的资源分配控制参数指定资源的所述部分被允许分配。
14.根据权利要求13所述的装置,其中部分的所述子集排除资源的所述多个部分中的至少一个部分。
15.根据权利要求13和14中任一项所述的装置,其中:
响应于请求更新所述基于部分的资源分配控制参数以指示允许分配资源的给定部分的参数更新请求,当所述基于部分的约束指定禁止更新所述基于部分的资源分配控制参数以指示允许分配所述给定部分时,所述给定的存储器系统部件被配置为设置所述基于部分的资源分配控制参数以指示禁止分配资源的所述给定部分。
16.根据任一前述权利要求所述的装置,其中对于给定的存储器系统部件,每组一个或多个存储器系统部件资源控制参数与对应的分区标识符相关联,并且包括资源分配阈值参数,所述资源分配阈值参数针对与所述对应的分区标识符相关联的软件执行环境,指示用于控制资源的分配或对资源的竞争的管理的最大或最小阈值;
所述至少一个资源控制参数约束包括指示阈值上限值的阈值上限约束;以及
以下项中的至少一项:
响应于请求更新所述资源分配阈值参数的所述参数更新请求,所述给定的存储器系统部件被配置为禁止更新所述资源分配阈值参数,以指示大于由所述阈值上限约束指示的所述阈值上限值的阈值作为所述最大或最小阈值;以及
响应于由所述处理电路发出的所述存储器事务,当所述存储器事务是受约束类型的存储器事务并且所述资源分配阈值参数违反所述阈值上限约束时,所述给定的存储器系统部件被配置为基于小于或等于由所述阈值上限约束指示的所述阈值上限值的受约束阈值来控制资源的分配或对资源的竞争的管理。
17.根据权利要求16所述的装置,其中响应于请求更新所述资源分配阈值参数的所述参数更新请求,所述给定的存储器系统部件被配置为将所述资源分配阈值参数设置为指示以下项中的最小值:
由所述参数更新请求指定的新阈值;以及
由所述阈值上限约束指示的所述阈值上限值。
18.根据权利要求16和17中任一项所述的装置,其中响应于由所述处理电路发出的所述存储器事务,当所述存储器事务是受约束类型的存储器事务时,所述给定的存储器系统部件被配置为基于由所述资源分配阈值参数指示的阈值和由所述阈值上限约束指示的所述阈值上限值中的最小值来控制资源的分配或对资源的竞争的管理。
19.一种装置,所述装置包括:
用于处理来自多个软件执行环境中的一个软件执行环境的指令的装置;以及
用于处理由用于处理的所述装置响应于所述指令而发出的存储器事务的装置;其中:
响应于由用于处理的所述装置发出的存储器事务指定根据哪个软件执行环境导致发出所述存储器事务而选择的分区标识符,用于处理存储器事务的所述装置被配置为:根据所选择的一组一个或多个存储器系统部件资源控制参数来控制用于处理所述存储器事务的资源分配或管理对所述资源的竞争,所述选择的组根据由所述存储器事务指定的所述分区标识符而从多组一个或多个存储器系统部件资源控制参数中选择;
用于处理存储器事务的所述装置包括用于可编程地存储至少一个资源控制参数约束的装置;并且
基于存储在用于可编程地存储的所述装置中的所述至少一个资源控制参数约束,用于处理存储器事务的所述装置被配置为约束以下项中的至少一项:
更新目标存储器系统部件资源控制参数;以及
使用所述目标存储器系统部件资源控制参数来控制所述资源分配或管理对所述资源的竞争。
20.一种方法,所述方法包括:
处理来自多个软件执行环境中的一个软件执行环境的指令;以及
处理响应于所述指令而发出的存储器事务;其中:
响应于存储器事务指定根据哪个软件执行环境导致发出所述存储器事务而选择的分区标识符,存储器系统部件根据所选择的一组一个或多个存储器系统部件资源控制参数来控制用于处理所述存储器事务的资源分配或管理对所述资源的竞争,所述选择的组根据由所述存储器事务指定的所述分区标识符而从多组一个或多个存储器系统部件资源控制参数中选择;并且
基于存储在可编程约束存储电路中的至少一个资源控制参数约束,约束以下项中的至少一项:
更新目标存储器系统部件资源控制参数;以及
使用所述目标存储器系统部件资源控制参数来控制所述资源分配或管理对所述资源的竞争。
CN202080090852.8A 2020-01-02 2020-12-11 对更新或使用存储器系统部件资源控制参数的约束 Pending CN114902226A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/732,654 2020-01-02
US16/732,654 US11442771B2 (en) 2020-01-02 2020-01-02 Constraints on updating or usage of memory system component resource control parameters
PCT/GB2020/053195 WO2021136924A1 (en) 2020-01-02 2020-12-11 Constraints on updating or usage of memory system component resource control parameters

Publications (1)

Publication Number Publication Date
CN114902226A true CN114902226A (zh) 2022-08-12

Family

ID=73855508

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080090852.8A Pending CN114902226A (zh) 2020-01-02 2020-12-11 对更新或使用存储器系统部件资源控制参数的约束

Country Status (5)

Country Link
US (1) US11442771B2 (zh)
EP (1) EP4085366B1 (zh)
JP (1) JP2023513665A (zh)
CN (1) CN114902226A (zh)
WO (1) WO2021136924A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11481156B1 (en) * 2020-02-26 2022-10-25 Marvell Asia Pte, Ltd. Throughput management of distributed storage system
KR20210123555A (ko) * 2020-04-03 2021-10-14 에스케이하이닉스 주식회사 메모리 시스템
US11481141B1 (en) 2021-04-26 2022-10-25 Micron Technology, Inc. Secure self-purging memory partitions
US11277355B1 (en) * 2021-07-27 2022-03-15 Beijing Tenate Electronic Technology Co., Ltd. Adjustable resource management system
CN113779692B (zh) * 2021-08-13 2024-06-04 北京交通大学 刚-弹性车辆轨道耦合多软件联动仿真系统及方法
US11899964B2 (en) 2021-09-01 2024-02-13 Qualcomm Incorporated Methods and systems for memory bandwidth control
KR20240048519A (ko) 2021-09-01 2024-04-15 퀄컴 인코포레이티드 메모리 대역폭 제어를 위한 방법들 및 시스템들

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180203807A1 (en) * 2017-01-13 2018-07-19 Arm Limited Partitioning tlb or cache allocation
US10268379B2 (en) 2017-01-13 2019-04-23 Arm Limited Partitioning of memory system resources or performance monitoring
US10394454B2 (en) 2017-01-13 2019-08-27 Arm Limited Partitioning of memory system resources or performance monitoring

Also Published As

Publication number Publication date
US20210208924A1 (en) 2021-07-08
US11442771B2 (en) 2022-09-13
WO2021136924A1 (en) 2021-07-08
EP4085366A1 (en) 2022-11-09
JP2023513665A (ja) 2023-04-03
EP4085366B1 (en) 2023-10-18

Similar Documents

Publication Publication Date Title
US11243892B2 (en) Partitioning TLB or cache allocation
CN110140111B (zh) 存储器系统资源或性能监测的划分
CN110168502B (zh) 用于存储器划分的装置和方法
CN110168501B (zh) 存储器系统资源或性能监测的划分
CN110168500B (zh) 存储器系统资源或性能监测的划分
EP4085366B1 (en) Constraints on updating or usage of memory system component resource control parameters
CN114375439A (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