存储器系统资源或性能监测的划分的制作方法

文档序号:18516484发布日期:2019-08-24 09:29阅读:138来源:国知局
存储器系统资源或性能监测的划分的制作方法
本技术涉及数据处理的领域。
背景技术
:可以在同一数据处理系统上执行两个或更多个软件执行环境,例如,应用或虚拟机,该数据处理系统可以访问在软件执行环境之间共享的公共存储器系统。对于一些系统,一个软件执行环境的性能不会由于使用共享存储器系统中的过多资源的另一软件执行环境而受到阻碍可能是重要的。该问题可以称为“嘈杂邻居”问题,并且对于企业网络或服务器系统尤其重要。技术实现要素:至少一些示例提供了一种装置,包括:处理电路,用于以多个操作状态之一来处理指令;至少一个存储器系统组件,用于处理用于访问数据的存储器事务;以及多个分区标识符寄存器,每个分区标识符寄存器与所述多个操作状态中的相应的一个操作状态相对应,并且指定与该操作状态相关联的分区标识符;其中,处理电路被配置为发布指定取决于存储在选择的分区标识符寄存器中的分区标识符的分区标识符的存储器事务,选择的分区标识符寄存器是根据处理电路的当前操作状态来选择的;并且响应于要处理的存储器事务,所述至少一个存储器系统组件被配置为根据选择的一组存储器系统组件参数来控制用于处理存储器事务的资源的分配或管理对所述资源的争用,或者根据所述分区标识符来控制是否响应于存储器事务更新性能监测数据,其中,所述选择的一组存储器系统组件参数是根据由存储器事务指定的分区标识符来选择的。至少一些示例提供了一种装置,包括:用于以多个操作状态之一来处理指令的装置;用于处理用于访问数据的存储器事务的装置;以及多个用于存储分区标识符的装置,每个用于存储的装置与所述多个操作状态中的相应的一个操作状态相对应,并且指定与该操作状态相关联的分区标识符;其中,用于处理的装置被配置为发布指定取决于存储在选择的用于存储的装置中的分区标识符的分区标识符的存储器事务,选择的用于存储的装置是根据用于处理的装置的当前操作状态来选择的;其中,所述用于处理存储器事务的装置被配置为根据由要处理的存储器事务指定的分区标识符来选择多组存储器系统组件参数中的一组;并且响应于要处理的存储器事务,所述用于处理存储器事务的装置被配置为根据选择的一组存储器系统组件参数来控制用于处理存储器事务的资源的分配或管理对所述资源的争用,或者根据所述分区标识符来控制是否响应于存储器事务更新性能监测数据,其中,所述选择的一组存储器系统组件参数是根据由存储器事务指定的分区标识符来选择的。至少一些示例提供了一种数据处理方法,包括:以多个操作状态之一来处理指令;将分区标识符存储在多个分区标识符寄存器,每个分区标识符寄存器与所述多个操作状态中的相应的一个操作状态相对应,并且指定与该操作状态相关联的分区标识符;向至少一个存储器系统组件发布存储器事务,所述存储器事务指定取决于存储在选择的分区标识符寄存器中的分区标识符的分区标识符,选择的分区标识符寄存器是根据处理电路的当前操作状态来选择的;根据由要处理的存储器事务指定的分区标识符来选择多组存储器系统组件参数中的一组;以及响应于要处理的存储器事务,所述至少一个存储器系统组件被配置为根据选择的一组存储器系统组件参数来控制用于处理存储器事务的资源的分配或管理对所述资源的争用,或者根据所述分区标识符来控制是否响应于存储器事务更新性能监测数据,其中,所述选择的一组存储器系统组件参数是根据由存储器事务指定的分区标识符来选择的。在结合附图阅读时,本技术的其他方面、特征和优点从以下示例的描述将是明显的。附图说明图1示意性地示出了包括存储器系统的数据处理系统的示例;图2示意性地示出了根据被分配给与存储器事务相关联的软件执行环境的分区标识符的对存储器系统资源的划分控制的示例;图3示意性地示出了用于发布指定分区标识符的存储器事务的处理电路的示例;图4示出了由处理电路执行的不同软件执行环境的示例;图5示出了将分区标识符分配给不同软件执行环境的示例;图6示出了用于控制哪个分区标识符被指定用于给定存储器事务的控制寄存器的示例;图7是示出从主设备发布存储器事务的方法的流程图;图8示意性地示出了根据处理电路的当前操作状态选择分区标识符寄存器;图9示意性地示出了将虚拟分区标识符重新映射到物理分区标识符的示例;图10是示出将虚拟分区标识符映射到物理分区标识符的方法的流程图;图11示意性地示出了针对指令和数据存储器事务生成单独的分区标识符的示例;图12是示出在存储器系统组件处响应存储器事务的方法的流程图;图13示出了根据分区标识符控制缓存资源的分配和/或更新基于分区标识符选择的性能监测数据的缓存的示例;图14是示出根据依据分区标识符选择的容量阈值来控制对缓存的分配的方法的流程图;图15示出了根据分区标识符来控制缓存的哪些部分可以被分配数据的示例;图16以流程图的形式示出了用于基于由分区标识符设置的限制来选择存储器事务的优先级的过程;图17示意性地示出了传送事务的存储器系统;图18示意性地示出了使用计数器电路来测量超过限制的使用;图19示出了存储器系统组件使用缓冲器用于存储器事务;以及图20以流程图的形式示出了用于基于分区标识符执行数据处理的过程。具体实施方式图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上执行的多个软件执行环境共享对存储器系统的访问时,可能希望防止一个软件执行环境使用超过其公平份额的资源,以防止其他执行环境感知性能损失。这对于数据中心(服务器)应用可能尤其重要,其中,增长地需求通过增加与给定量的存储器容量交互的独立软件进程的数量来减少资本支出,以提高数据中心服务器的利用率。然而,仍然需要满足网络应用机制降低目标,因此不期望在服务器上运行的一个进程可以以损害其他进程的程度来独占存储器系统资源。类似地,对于联网应用,将多个功能组合到单个soc上越来越常见,这些功能以前可能在单独的soc上。这再次使得希望限制软件执行环境之间的性能交互,并监测这些软件执行环境如何需要允许这些独立进程访问共享存储器,同时限制性能交互。图2示意性地示出了根据发布相应存储器事务的软件执行环境来划分对存储器系统资源的分配的控制的示例。在此上下文中,软件执行环境可以是由数据处理系统内的处理单元执行的任何过程或过程的一部分。例如,软件执行环境可以包括应用、客户操作系统或虚拟机、主机操作系统或管理程序、用于管理系统的不同安全状态的安全监测器程序、或者任何这些类型的处理的子部分(例如,单个虚拟机可以具有被视为单独的软件执行环境的不同部分)。如图2所示,可以为每个软件执行环境分配给定的分区标识符30,该分区标识符30和与该软件执行环境相关联的存储器事务一起被传递到存储器系统组件。在存储器系统组件内,可以基于根据分区标识符选择的多组存储器系统组件参数之一来控制资源分配或争用解决操作。例如,如图2所示,可以为每个软件执行环境指派分配阈值,该分配阈值表示可以为与该软件执行环境相关联的数据/指令分配的最大缓存容量,并且服务给定事务的相关分配阈值是基于与事务相关联的分区标识符来选择的。例如,在图2中,与分区标识符0相关联的事务可以将数据分配到高达50%的缓存存储容量,留下至少50%的缓存可用于其他目的。类似地,在具有可用于服务存储器事务的有限量带宽的存储器系统组件中,例如,存储器控制器24,可以为每个分区标识符指定最小和/或最大带宽阈值。在给定的时间段内,如果指定给定分区标识符的存储器事务使用小于最小量的带宽,则可以优先处理与该分区标识符相关联的存储器事务,而如果针对指定同一分区标识符的事务已使用或超出最大带宽,则可以将降低的优先级用于存储器事务。这些控制方案将在下面更详细地讨论。应当理解,这些仅是可以基于发布相应事务的软件执行环境来划分对存储器系统资源的控制的方式的两个示例。通常,通过允许不同的进程“看到”由存储器系统提供的资源的不同划分部分,这允许限制进程之间的性能交互以帮助解决上面讨论的问题。类似地,与存储器事务相关联的分区标识符可用于存储器系统内的分区性能监测,从而可以为每个分区标识符跟踪单独的性能监测数据集,以允许标识特定于给定软件执行环境(或软件执行环境组)的信息,以使得可以比如果跨所有软件执行环境作为整体来记录性能监测数据更容易标识潜在性能交互的来源。这还可以帮助诊断潜在的性能交互效果,并帮助标识可能的解决方案。下面讨论用于控制分区标识符的设置、基于相应软件执行环境的分区标识符设置来标记存储器事务、通过存储器系统路由分区标识符、以及在存储器系统中的存储器系统组件处提供基于分区的控制的架构。该架构可扩展到分区标识符的广泛用途。对分区标识符的使用旨在层叠在存储器系统的现有架构语义上而不改变它们,因此由存储器系统使用的特定存储器协议所施加的寻址、一致性和存储器事务的任何所需排序将不受资源/性能监测划分的影响。当使用分区标识符控制资源分配时,虽然这可能影响为给定软件执行环境服务存储器事务时所实现的性能,但它不会影响架构有效计算的结果。也就是说,分区标识符不改变存储器事务的输出或结果(例如,访问什么数据),而仅影响为该存储器事务实现的时序或性能。图3更详细地示意性地示出了处理单元6的示例。处理器包括具有多个流水线阶段的处理流水线,这些流水线阶段包括用于从指令缓存10提取指令的提取阶段40、用于解码所提取的指令的解码阶段42、包括用于排队指令同时等待它们的操作数变得可用并在操作数可用时发布指令以执行的包括发布队列46的发布阶段44、用于执行不同类的指令以执行相应处理操作的包括多个执行单元50的阶段48、以及用于将处理操作的结果写回数据寄存器54的写回阶段52。可以由执行阶段48从寄存器54读取用于数据处理操作的源操作数。在该示例中,执行阶段48包括用于执行算术或逻辑运算的alu(算术/逻辑单元)、用于使用浮点值执行运算的浮点(fp)单元、以及用于执行加载操作以将数据从存储器系统加载到寄存器54中或执行存储操作以将数据从寄存器54存储到存储器系统的加载/存储单元。应当理解,这些仅是可能的执行单元的一些示例,并且可以提供其他类型。类似地,其他示例可以具有不同的流水线阶段配置。例如,在无序处理器中,可以提供附加的寄存器重命名阶段,以用于将由指令指定的架构寄存器指定符重新映射到标识在硬件中提供的寄存器54的物理寄存器指定符,以及重新排序缓冲器,以用于跟踪以从缓存10中提取的顺序不同的顺序执行的指令的执行和提交。类似地,仍可以提供图1中未示出的其他机制,例如,分支预测功能。处理器6具有多个控制寄存器60,包括例如用于存储指示正在执行的程序的当前执行点的程序计数器的程序计数器寄存器62、用于存储对处理器正在执行指令的当前异常等级的指示的异常等级寄存器64、用于存储对处理器处于非安全状态还是安全状态的指示的安全状态寄存器66、以及用于控制存储器系统资源和性能监测划分的存储器划分和监测(mpam)控制寄存器68(mpam控制寄存器将在下面详细讨论)。应当理解,还可以提供其他控制寄存器。处理器具有存储器管理单元(mmu)70,用于响应于存储器事务控制对存储器系统的访问。例如,当遇到加载或存储指令时,加载/存储单元发出指定虚拟地址的相应存储器事务。虚拟地址被提供给存储器管理单元(mmu)70,其使用存储在转换后备缓冲器(tlb)72中的地址映射数据将虚拟地址转换为物理地址。每个tlb条目不仅可以标识识别如何转换地址的映射数据,还可以标识相关联的访问许可数据,其限定了是否允许处理器读取或写入地址空间的相应页面中的地址。在一些示例中,可以存在多个地址转换阶段,并因此可以存在多个tlb,例如,阶段1tlb提供用于将由加载/存储单元50生成的虚拟地址映射到中间物理地址的第一转换阶段,并且阶段2tlb提供用于将中间物理地址映射到存储器系统用来标识要访问的数据的物理地址第二转换阶段。可以在操作系统的控制下设置阶段1tlb的映射数据,而可以在管理程序的控制下设置阶段2tlb的映射数据,例如,以支持虚拟化。虽然图3为了简洁性示出了响应于由加载/存储单元触发的数据访问而访问mmu,但是当提取阶段40需要提取尚未存储在指令缓存10中的指令时,或者如果指令缓存10发起指令预提取操作以在提取阶段40实际需要之前将指令预提取到缓存中,也可以访问mmu。因此,可以使用mmu70类似地将要执行的指令的虚拟地址转换为物理地址。除了tlb72之外,mmu还可以包括其他类型的缓存,例如,用于缓存用于在页表遍历期间标识要加载到tlb中的映射数据的数据的页面遍历缓存74。存储器系统可以存储指定虚拟存储器地址空间的每个页面的地址映射数据的页表。tlb72可以缓存多个最近访问的页面的那些页表条目的子集。如果处理器向不具有存储在tlb72中的相应地址映射数据的页面发布存储器事务,则发起页表遍历。这可能相对较慢,因为可能存在多个等级的页表来在存储器中穿过,以标识所需页面的地址映射条目。为了加速页表遍历,可以将页表的最近访问的页表条目放置在页面遍历缓存74中。这些将通常是除最终等级页表条目之外的页表条目,其实际上指定了所需页面的映射。这些更高等级页表条目将通常将指定存储器中可以找到相应的地址范围的其他页表条目的位置。通过将在先前的页表遍历中穿过的至少一些等级的页表缓存在页面遍历缓存74中,可以使得共享页表遍历的同一初始部分的其他地址的页表遍历更快。替代地,不是缓存页表条目本身,页面遍历缓存74可以缓存在存储器中可以找到那些页表条目的地址,以使得可以比如果必须通过首先访问存储器中的其他页表条目来标识那些地址更快地访问给定页表条目。图4示出了可由处理器6执行的不同软件执行环境的示例。在此示例中,架构支持在权限等级方面增加的四个不同的异常等级el0到el3(使得el3具有最高权限异常等级,并且el0具有最低权限异常等级)。通常,较高权限等级具有比较低权限级别更大的权限,因此可以访问对于较低权限等级不可用的至少一些数据和/或执行对于较低权限等级不可用的一些处理操作。应用80在最低权限等级el0处执行。许多客户操作系统82在权限等级el1处执行,每个客户操作系统82管理el0处的应用80中的一个或多个。虚拟机监测器(也称为管理程序或主机操作系统)84在异常等级el2处执行,并管理相应的客户操作系统82的虚拟化。从较低异常等级到较高异常等级的转换可能是由异常事件引起的(例如,需要由管理程序处理的事件可能导致转换到el2),而转换回较低等级可能是由从处理异常事件返回引起的。一些类型的异常事件可以在与它们取得的等级相同的异常等级处进行服务,而其他异常事件可以触发向更高异常状态的转换。当前异常等级寄存器64指示处理电路6当前正在异常等级el0到el3中的哪一个中执行代码。在该示例中,系统还支持安全域90和普通(较不安全)域92之间的划分。可以通过将敏感数据或指令分配给被标记为仅安全域90可访问的存储器地址来对其进行保护,并且处理器具有用于确保在较不安全的域92中执行的进程不能访问数据或指令的硬件机制。例如,mmu70中的访问许可设置可以控制安全域和非安全域之间的划分,或者替代地,可以使用完全独立的安全性存储器管理单元来控制安全状态划分,并且单独的安全和非安全mmu70被提供用于相应的安全状态内的子控制。安全域和正常域90、92之间的转换可以由在最高权限等级el3处执行的安全监测器进程94来管理。这允许严格地控制域之间的转换,以防止非安全操作80或操作系统82例如从安全域访问数据。在其他示例中,可以使用硬件技术来强制安全状态和警察转换(policetransition)之间的分离,使得正常域92中的代码可以直接分支到安全域90中的代码,而无需通过单独的安全监测器进程94来转换。然而,为了便于解释,下面的后续描述将参考使用el3处的安全监测器进程94的示例。在安全域90内,安全世界操作系统96在异常等级el1处执行,并且一个或多个受信应用98可以在异常等级el0处在该操作系统96的控制下执行。在该示例中,在安全域90中没有异常等级el2,因为在安全域中不支持虚拟化,尽管如果需要仍然可以提供虚拟化。用于支持这样的安全域90的架构的示例可以是由英国剑桥的有限公司提供的trustzone架构。然而,应当理解,还可以使用其他技术。一些示例可能具有两个以上的安全状态,从而提供具有与之相关联的不同安全等级的三个或更多个状态。安全状态寄存器66指示当前域是安全域90还是非安全域92,并且这向mmu70或其他控制单元指示使用什么访问许可来管理是否可以访问某些数据或允许操作。因此,图4示出了可以在系统上执行的许多不同的软件执行环境80、82、84、94、96、98。可以为这些软件执行环境中的每一个分配给定的分区标识符(分区id或partid),或者可以为一组两个或更多个软件执行环境分配公共分区id。在一些情况下,单个进程的各个部分(例如,不同的功能或子例程)可以被视为单独的执行环境并被分配单独的分区id。例如,图5示出了这样的示例,其中,虚拟机vm3和在其下执行的两个应用3741、3974都被分配partid1,在第二虚拟机vm7下执行的特定进程3974被分配partid2,并且vm7本身和在其下运行的另一进程1473被分配partid0。不必为每个软件执行环境分配定制的分区id。可以指定默认分区id用于未分配专用分区id的软件执行环境。对分区id空间的哪些部分被分配给每个软件执行环境的控制由更高权限等级处的软件执行,例如,在el2处运行的管理程序控制分区到在el1处运行的虚拟机操作系统的分配。然而,在一些情况下,管理程序可以允许处于较低权限等级的操作系统为其自己的代码的部分或者在其下运行的应用设置自己的分区id。此外,在一些示例中,安全世界90可以具有与正常世界92完全分离的分区id空间,由安全世界os或监测程序el3控制。图6示出了mpam控制寄存器68的示例。mpam控制寄存器68包括多个分区id寄存器100(也称为mpam系统寄存器),各自对应于处理电路的相应操作状态。在该示例中,分区id寄存器100包括与非安全域92中的各个异常等级el0至el3相对应的寄存器mpam0_el1至mpam3_el3,以及与安全域90中的异常等级el1相对应的可选的附加分区id寄存器mpam1_el1_s。在该示例中,在安全域中未针对el0提供分区id寄存器,因为假设安全域中的受信应用98与运行那些应用98的安全世界操作系统96紧密相关,因此它们可以用相同的分区id进行标识。然而,在其他实现方式中,可以在安全世界中为el0提供单独的分区id寄存器。每个分区id寄存器100包括最多三个分区id的字段,如下表1所示:表1:id名称描述partid_d用于数据请求的分区id。partid_i用于指令请求的分区id。pmg性能监测组id。下面的表2总结了哪个分区id寄存器100被用于在每个操作状态下执行的存储器事务,以及从其控制每个分区id寄存器100的操作状态(即哪个操作状态可以更新由该寄存器指定的信息):表2:分区id寄存器的命名约定mpamx_ely指示在分区id寄存器mpamx_ely中指定的分区id被用于由处理电路6在操作状态elx时发布的存储器事务,并且状态ely是可以访问分区id寄存器mpamx_ely的最低异常等级。然而,在当前异常等级是非安全域中的el0时,可以覆盖mpam0_el1-当mpam-el1中的配置值plk_el0设置被设置为1时,在ns_el0中执行时使用mpam1_el1中的分区id。因此,在需要时,el1的控制可以覆盖el0的控制。这对于限制在特定虚拟机下运行的所有应用使用同一分区id,以避免每次在同一虚拟机内的应用之间存在上下文切换时需要更新mpam0_el1可能非常有用。虽然在该示例中配置参数plk_el0被描述为存储在mpam1_el1中(与设置该配置参数的较高异常等级相对应的分区id寄存器),但是它也可以存储在另一控制寄存器中。通常,当在同一状态下执行的不同进程(例如,el0处的不同应用或el1处的不同客户操作系统)之间切换时,异常事件会触发切换到更高异常状态,其中,在该状态下运行的进程(例如,el1处的操作系统或el2处的管理程序)然后在将进程返回到较低异常状态以允许新进程继续之前,更新相关分区id寄存器100中的分区id。因此,与给定进程相关联的分区id可以有效地被视为与该进程相关联的上下文信息的一部分,当从该进程切换或切换到该进程时,其作为处理器的架构状态的一部分而被保存和恢复。然而,通过提供与系统的不同操作状态相对应的多个分区id寄存器100,不必每次在上下文切换以外的时间存在操作状态变化时更新单个分区id寄存器的内容,例如,当操作系统(os)临时地受制于(trap)管理程序以供管理程序在返回到同一os之前执行一些动作。这种受制于管理程序在虚拟化系统中可能相当普遍,例如,如果管理程序必须介入以为操作系统提供在硬件中实际提供的物理资源的不同视图。因此,通过提供多个分区id寄存器100,在安全/非安全状态的异常等级变化之后自动地用分区id标记存储器系统事务,从而产生较快性能,因为不需要每次异常等级或安全状态发生变化时更新分区id。此外,出于安全原因,提供单独的安全且较不安全分区id寄存器可能是优选的,例如,通过防止较不安全的进程从所使用的分区id推断关于安全域的信息。然而,堆积每个安全状态的分区id寄存器是可选的,并且其他实施例可以仅提供在安全域和较不安全域之间共享的给定分区id寄存器的单个版本(例如,可使用mpam1_el1,省略mpam1_el1_s)。在这种情况下,当在安全域和较不安全域之间切换时,在el3处执行的监测器代码可以上下文切换分区id寄存器中的信息。此外,通常,在与给定操作状态相关联的分区id寄存器100内指定的控制信息(例如,分区id和任何相关联的配置信息)是响应于在比与分区id寄存器100相关联的异常等级更高的异常等级执行的指令而设置的。然而,对于一些寄存器,可以推翻该一般前提,其中,较高异常等级代码可以设置配置参数el1_wrinh、el2_wrinh或el1_s_wrinh,其控制在给定操作状态下执行的代码是否可以在相应的分区id寄存器中设置其自己的分区id。也就是说,wrinh配置值指定是否允许给定执行环境来设置分配给其自身的分区id。虽然下面的示例示出了用于通过给定异常等级来控制分区id的设置的wrinh标志被存储在与下一最高异常等级相关联的分区id寄存器100中,以及该异常等级的分区id,将理解,这些标志还可以存储在单独的控制寄存器中。更具体地,表3列出了每个分区id寄存器100中所包括的信息,并且表4总结了每个分区id寄存器100可以读取或写入哪个状态。一些寄存器100包括如下所示的特定于该寄存器的信息。表3:表4:其中,星号表示:·当mpam2_el2中的el1_wrinh=0时,可以从ns_el1写入mpam1_el1,但是当el1_wrinh=1时,从ns_el1写入mpam1_el1受制于el2;·当mpam3_el3中的el2_wrinh=0时,可以从el2写入mpam2_el2,但是当el2_wrinh=0时,从el2写入mpam2_el2受制于el3;·当mpam3_el3中的el1_s_wrinh=0时,可以从s_el1写入mpam1_el1_s,但是当el1_s_wrinh=1时,从s_el1写入mpam1_el1_s受制于el3。因此,当较高异常状态不允许时,尝试从同一异常状态设置分区id寄存器100导致异常事件,该异常事件触发切换到该较高异常状态。然后,处于较高异常状态的异常处理程序可以决定应如何设置分区id。注意,在省略mpam_el1_s的上述替代实施例中,mpam1_el1将是从ns_el1和s_el1二者可访问的r(w*)(其中el1_wrinh控制是否可以从el1进行写入访问),并且el1_s_wrinh配置参数可以从寄存器mpam3_el3中省略。通常,当处理电路6生成存储器事务时,基于如上所述的当前操作状态选择分区id寄存器100之一。如果存储器事务用于访问指令,则使用从所选分区id寄存器的partid_i字段导出的分区id来标记事务。由用于指令访问的tlb72中的未命中触发的页表遍历存储器事务将使用与指令访问相同的分区id。如果存储器事务用于访问数据,则使用从所选分区id寄存器100的partid_d字段导出的分区id来标记事务(并且同样地,由数据访问之后的mmu触发的任何页表遍历访问将使用与数据访问本身相同的分区id)。注意,无论发布页表遍历访问的mmu本身是否支持基于分区id的资源/性能监测划分,它仍然可以将相关的partid_d或partid_i标识符附加到相应的存储器事务,以允许存储器系统的另一部分中的存储器系统组件执行这种划分。给定分区id寄存器的partid_d和partid_i字段可以被设置为相同的分区id或不同的分区id。允许针对同一软件执行环境的数据和指令访问定义单独的分区id可以是有用的,使得不同的资源控制参数可以用于相应的指令和数据访问。替代方法是作为整体将单个分区id与软件执行环境相关联,但根据访问用于指令还是数据来附加0或1的附加位,并且这将允许存储器系统组件分别为指令和数据访问选择不同的控制参数。然而,对于基于分区id选择的给定数量的控制参数集,该方法将意味着在数据和指令之间将具有分区id空间的50-50划分。实际上,通常期望具有比指令分区更多的数据分区,因为多个软件执行环境使用同一代码但用不同的数据输入来执行可能相对常见,因此能够在多个软件执行环境之间共享单个指令分区id,同时允许这些环境中的每一个使用不同的数据分区可以特别有用。附加0或1位以指示指令或数据访问的方法将在于环境要求针对公共代码的每个单独实例在存储器系统组件处定义多组相同的配置信息。相反,通过在分区id寄存器100中提供单独的指令和数据分区字段,其中从公共id空间中选择指令和数据分区id,可以在不同的软件执行环境之间重新使用同一分区id,并根据需要划分数据和指令之间的分区id空间,而不将其限制为五十-五十划分。尽管每个分区id寄存器100中的两个分区id字段可能需要一些额外的存储容量,但是该方法可以节省存储器系统组件处的资源,因为通过在多个执行环境的指令访问之间共享一个分区,存储器系统组件需要更少的控制参数集(并且因此较少的存储)。无论事务用于指令还是数据访问,该事务还被标记有从所选分区id寄存器100的pmg字段导出的性能监测分区id。这使得存储器系统组件能够划分性能监测,例如,通过使用存储器事务的性能监测id作为用于确定是否应该响应于存储器事务来更新给定性能监测器的标准的一部分。在一个实施例中,pmg字段可以被视为完全独立于partid_d和partid_i字段。在这种情况下,实现性能监测的存储器系统组件可以仅根据性能监测分区id来确定存储器事务是否导致给定性能监测器的更新,而独立于包括在同一存储器事务中的数据/指令分区id。这将提供以下优点:用于指令/数据访问的不同分区仍然可以共享同一性能监测id,这将支持收集在存储器系统组件处需要不同指令/数据访问配置的多个进程的组合性能统计。因此,通过指定与用于控制存储器系统组件处的资源分配的分区id分开的性能监测组id,这允许使用一组公共性能计数器来跟踪多个不同的软件执行环境,即使它们的资源被单独地分配。替代地,另一方法可以是将pmg字段解释为要附加到从partid_d或partid_i字段导出的相应分区id的后缀。使用该方法,当事务被发布到存储器时,事务附加有两个id,一个基于所选的partid_i或partid_d字段,并且另一个基于pmg字段,但pmg字段被视为指令/数据分区id的属性,而不是id本身。因此,在这种情况下,存储器系统组件可以基于从partid_i或partid_d导出的第一分区id来执行资源划分,但基于从pmg导出的第一分区id和第二分区id的组合来执行性能监测划分。使用该方法,不同的指令/数据分区id不再可能共享同一性能监测id,但优点是可以使用较短pmg字段来节省硬件成本,因为pmg字段不需要区分所有可能的性能监测分区-pmg字段仅区分共享同一指令/数据分区id的分区。例如,这可以允许使用1或2位pmg字段而不是更大字段,这不仅节省了控制寄存器68中的成本,而且节省了将存储器事务运载通过存储器系统的线路中的成本。在一些实施例中,可以分别对应于partid_d和partid_i字段来提供单独的pmg后缀字段pmg_d和pmg_i,以允许分别为数据和指令访问定义单独的性能监测组属性。无论哪种方式,为每个数据/指令分区id定义多个性能监测分区的能力都是有用的。另一方面,应当理解,其他示例可以完全省略单独的性能监测id字段,而是使用同一分区id来控制资源管理和性能监测二者。图7是示出控制从处理元件(例如,cpu6、gpu、或用作存储器事务源的其他主机)发布存储器事务,特别是控制用存储器事务指定哪个分区id的方法的流程图。在步骤110处,处理元件确定需要发布的存储器事务。例如,这可能是因为加载/存储指令在执行阶段48处被执行,或者是由用于将指令预提取到指令缓存中的指令预提取操作引起的。在步骤112处,处理元件根据其当前操作状态选择分区id寄存器100中的一个。图8示意性地示出了至少根据当前异常等级64和存储在分区id寄存器mpam1_el1中的配置参数114plk_el0来选择应使用哪个分区id寄存器100来生成当前存储器事务的分区id的示例。用于选择哪个寄存器100是所选寄存器的标准如下:·如果当前异常等级为el0且plk_el0=0,则mpam0_el1为所选寄存器;·如果(i)当前异常等级为el1或(ii)当前异常为el0且plk_el0=1,则mpam1_el1为所选寄存器;·如果当前异常状态为el2,则所选寄存器为mpam2_el2;·如果当前异常状态为el3,则所选寄存器为mpam3_el3。提供plk_el0配置参数是可选的,并且在不支持此功能的系统中,在当前异常等级在非安全状态是el0时选择mpam0_el1,而不是mpam1_el1。此外,在如上所述的具有单独的安全分区id寄存器mpam1_el1_s的实施例中,选择还将取决于当前安全状态,当在安全域中在el0或el1处进行处理时选择寄存器mpam1_el1_s,否则选择将如上所列。在步骤114处,处理元件确定存储器访问是指令访问还是数据访问。如果访问是指令访问,则在步骤116处,读取在步骤112处选择的寄存器的pmg和partid_i字段,而如果访问是数据访问,则在步骤118处,读取pmg和partid_d字段。因此,用于资源划分的分区id取决于访问用于数据还是指令(但在一些情况下两者可能指定同一分区id)。在步骤120处,处理元件确定在当前操作状态下是否针对读取分区id(pmg和partid_i或partid_d)启用了虚拟化。mpam控制寄存器68包括虚拟化控制寄存器116(mpam_vcr_el2)、重新映射有效寄存器124、用于重新映射分区id以用于性能资源划分的分区id重新映射寄存器126、以及用于重新映射分区id以用于性能监测划分的性能监测id重新映射寄存器128。虚拟化控制寄存器116包括虚拟化启用标志,其指定针对el1和el0是否启用虚拟化。如果为el0启用了虚拟化并且操作状态是el0,或者如果为el1启用了虚拟化并且操作状态是el1,则在步骤122处,在步骤116或118处读取的分区id中的至少一个被映射到附加到要发布到存储器系统的存储器事务的物理分区id。否则,省略步骤12。图9中示出了分区id的虚拟化重新映射的示例。全局分区id空间可以由el2处的管理程序控制,具有用于资源分区id和性能监测组id的单独id空间。虚拟化可以应用于两种类型的分区id-为简明起见,后续解释将使用术语“分区标识符”来指代任一类型。然而,例如,一些实施例可以仅支持资源分区id的虚拟化,但可能不支持性能监测组的重新映射。管理程序可以限制在el1处执行的客户操作系统仅使用小范围的分区id(例如,从零开始),并且重新映射寄存器126、128定义重新映射表,其提供用于将该客户操作系统使用的虚拟分区id映射到全局id空间中的物理分区id的多个重新映射条目。每个重新映射寄存器可以存储一个或多个虚拟id的重新映射条目(取决于与单个分区id的宽度相比的寄存器的相对大小)。基于操作系统所使用的虚拟分区id来索引重新映射表,并返回全局id空间中的相应的物理分区id。这使得每个客户操作系统能够为其自己的应用设置id,而不知道它是被虚拟化的并且与可能使用类似的id值的其他客户操作系统一起执行。各个客户操作系统可以通过管理程序在重新映射表中的映射设置来将其冲突的虚拟id映射到不同的全局物理分区id。因此,图9示出了可以如何扩展图8的选择电路以支持虚拟化。多路复用器101以与图8中所示的相同的方式在分区id寄存器100之间进行选择。来自寄存器mpam2_el2和mpam3_el3的分区id直接以与图8中相同的方式来直接提供给多路复用器101。然而,来自寄存器mpam0_el1和mpam1_el1的id通过重新映射电路130来传递。在mpam0_el1或mpam1_el1中指定的虚拟分区id用于从重新映射寄存器128中选择相应的重新映射条目。在该示例中,每个重新映射寄存器128包括四个重新映射条目,因此虚拟分区id的两个位选择重新映射寄存器128内的特定重新映射条目,并且剩余的位选择哪个重新映射寄存器128被选择。然而,其他示例可能针对每个寄存器具有不同数量的条目。从选择的重新映射条目中读取物理分区id并将其提供给多路复用器132,其根据虚拟化控制寄存器116中的配置参数el0_rmen或el1_rmen(其指定是否分别针对el0或el1启用虚拟化),在从mpam0_el1或mpam1_el1读取的原始虚拟分区id与相应的重新映射的物理分区id之间进行选择。当未启用虚拟化时,原始虚拟分区id被传递到多路复用器101,而当启用虚拟化时,使用物理分区id。虽然图9示出了针对el0和el1提供单独的重新映射电路130,但在其他情况下,可以使用公共重新映射电路。每个重新映射条目与重新映射有效寄存器124中的相应有效位相关联。给定重新映射条目的有效位指定该虚拟到物理分区id映射是否有效。当处理元件发布指定无效虚拟分区id的存储器事务时,这可能触发异常情况,其导致切换到更高异常状态(el2),使得管理程序可以更新重新映射条目以限定将用于该虚拟分区id的物理分区id。替代地,当el1处的操作系统尝试将分区id寄存器mpam0_el1、mpam1_el1中的一个设置为与无效重新映射条目相对应的虚拟id时,而不是在发布存储器事务时,可以触发受制于较高异常状态。无论哪种方式,通过为重新映射条目有效的信令提供有效位,这使得管理程序能够以惰性(lazy)方式分配虚拟到物理分区id映射,使得不必一次性限定给定操作系统的所有映射。相反,管理程序可以等待,直到操作系统在定义相应的id映射之前实际尝试使用给定虚拟分区id。由于操作系统通常不会使用理论上可用的所有虚拟分区id,因此这种惰性分配通过避免花费时间来为从未使用的虚拟id设置重新映射寄存器,可以在上下文切换到给定操作系统时提高性能。用于处理指定无效虚拟分区id的请求的另一方法可以是重新映射电路将无效虚拟分区id重新映射到某个预定物理分区id。因此,不是使用异常机制来处理无效虚拟分区id,重新映射电路简单地使用“出错情况”值用于物理分区id,其与相应的存储器请求一起被传递给存储器系统组件,并被视为有效分区id。预定物理分区id可以是分区id的某个“默认”值,例如,用于软件执行环境的同一默认分区id,它没有分配给它们的定制分区id。例如,预定物理分区id可以是零。替代地,控制寄存器(partid_on_error)可以定义物理分区id的特定值,以在出错时用作预定物理分区id。尽管图6示出了其中有效位被存储在与重新配置寄存器126、128分开的寄存器124中的示例,但在其他实现方式中,每个重新映射条目本身可以包括有效位,使得有效位与相应的物理分区id一起存储在重新映射寄存器126、128中。在这种情况下,可以省略重新映射有效寄存器124。因此,通常,每个重新映射条目可以与有效位相关联,但存储有效位的位置可以根据实现方式选择而变化。虚拟化控制寄存器116可以包括分别用于异常等级el0和异常等级el1的单独启用参数,每个启用参数定义是否针对在相应的异常状态中发布的存储器事务启用分区id寄存器的重新映射。类似地,可以提供单独的启用参数以用于控制是否分别重新映射用于资源划分的分区id和用于执行监测划分的性能监测组id。因此,在一些情况下,虚拟化控制寄存器116可以指定:·el0_partid_rmen:在mpam0_el1中启用partid的重新映射·el1_partid_rmen:在mpam1_el1中启用partid的重新映射。可选地,还可以支持pmg字段中的性能监测id的虚拟化重新映射,在这种情况下,进一步的虚拟化控制参数el0_pmg_rmen和el1_pmg_rmen可以被指定用于分别启用在el0和el1处的重新映射性能监测id。然而,在其中pmg字段被视为partid的子属性的实施例中,可能不需要用于启用性能监测id的重新映射的附加控制。因此,应当理解,虽然图7出于简洁性而示出了用于在步骤122处确定是否重新映射id的单个决策步骤120,但实际上,可以对附加到同一存储器事务的不同id做出单独的决策-例如,可以重新映射性能监测id(pmg)而不重新映射资源划分id(partid),反之亦然。此外,虽然图7为了便于理解而示出了将步骤122作为有条件的步骤的顺序过程,但实际上,如图9所示,可以针对每个存储器事务计算物理分区id,并且重新映射和非重新映射版本的分区id都可以被提供给多路复用器132,其基于相关的启用参数在它们之间进行选择。这可能比等待直到在查找物理分区id之前确定是否启用虚拟化更快。本领域技术人员可以理解,如图9所示的级联多路复用器可以以不同方式连接以实现相同的效果,包括组合成具有更多输入的单个多路复用器。图10是更详细地说明步骤122的流程图。在步骤140处,确定被重新映射的分区id是否超出范围。例如,虚拟化控制寄存器116或另一mpam控制寄存器68(例如,用于向软件标识在硬件中提供什么能力的发现寄存器142,将在下面更详细地讨论)可以指定允许由当前上下文指定的最大id值。例如,管理程序可以定义分区id可重新映射范围,其可以由在其下执行的操作系统使用,例如,基于在硬件中提供了多少重新映射寄存器128。如果被重新映射的分区id(即从图7的步骤112中选择的寄存器读取的id)超出范围,则在步骤144处,发信号通知异常事件以使的受制于较高异常等级。通常,较高异常等级将是el2,使得管理程序中的异常处理程序可以采取动作来处理不适当的分区id。例如,管理程序可以发信号通知已经发生错误,或者将超出范围的分区id重新映射到允许操作系统使用的全局分区id空间中的另一分区id(例如,用于尚未分配特定id的进程的默认分区id)。如果虚拟分区id在允许范围内,则在步骤146处,确定相应的重新映射条目是否有效,例如,基于重新映射有效寄存器124中的相应有效位。如果当前id无效,则再次在步骤144处,发信号通知异常事件以受制于el2,使得与管理程序相关联的异常处理程序可以处理无效分区id。例如,管理程序可以通过在将执行返回到el1以允许操作系统继续新分配的映射之前向该虚拟分区id分配物理分区id并更新相应的有效位来响应,以指示该映射现在有效。另一方面,当虚拟id在允许范围内并且有效时,则在步骤148处,将虚拟id映射到在与虚拟id相对应的重新映射条目中指定的物理id。如图11所示,虽然partid_i和partid_d在分区id寄存器100中单独指定,但是重新映射电路130可以对两种类型的id使用公共重新映射表126、128。因此,不必为指令和数据访问提供单独的重新映射寄存器组126、128。总之,通过提供用于将较小空间的虚拟id重新映射到存储器系统组件所使用的全局id空间中的物理id的重新映射硬件(重新映射寄存器126、128和重新映射电路130),这允许多个客户操作系统共存并同时使用冲突的分区id,同时提高性能,因为不需要每个存储器事务都受制于管理程序以重新映射分区id。在图7的步骤150处,发布指定pmg和partid的存储器事务(以从所选的分区id寄存器读取的原始形式,或者在步骤122处的重新映射之后),以及指示发布事务的安全状态的安全状态指示。包括安全状态指示,使得在安全域中分配的分区id可以使用与被分配用于较不安全域的分区id完全分离的分区id空间(而不是将一些分区id从单个id空间分配给安全进程,这可能允许非安全进程推断有关所提供的安全进程的信息)。通过提供安全和较不安全性世界之间的完全分离,可以提高安全性。与事务一起提供的安全指示指示事务从哪个安全状态发布。注意,即使在没有mpam_el1_s寄存器的实施例中,安全状态指示也可以与事务一起提供,因为这样的实施例仍然可以支持用于安全/非安全状态的单独分区id(安全状态转换下的分区id的上下文切换是用于为每个状态强制不同id,而不是提供单独的分区id寄存器的机制)。该安全性指示可以与指示事务的目标地址是安全的还是非安全的任何基于地址的安全性指示分开提供。也就是说,存储器地址空间的区域可以被指定为安全或非安全,其中安全区域仅可以从安全域访问,而非安全区域在安全域和非安全域中都是可访问的。这种基于地址的安全性指示可以与事务一起被包括,只要存储器系统包括其他控制结构,例如,系统mmu),其根据地址是在安全区域还是非安全区域来控制访问。然而,由于安全域可以访问地址空间的非安全和安全区域二者,因此这种基于地址的安全性指示不足以标识发布事务的进程是安全的还是非安全的。因此,存储器事务可以单独地标识从其发布事务的域(mpam_ns)和与目标地址相关联的安全状态(ns):在接收到存储器事务时,存储器系统组件然后可以使用mpam_ns安全性指示来在不同参数集之间进行选择以分别用于安全域和非安全域,以避免跨域共享控制参数,如果非安全代码可以为安全代码设置性能控制参数或访问性能接触数据,则可能带来安全性风险。返回图6,发现寄存器142标识各种能力参数,其标识相应的处理元件(pe)的硬件能力。这允许软件来查询在给定硬件实现方式中提供的mpam资源,使得可以跨多个不同的硬件平台执行同一代码。例如,发现寄存器142可以指定是否提供某些mpam特征(例如,虚拟化、或单独的安全/非安全id空间),或者提供什么大小的资源(例如,分区id中的位数、或映射寄存器126、128的数量)。例如,发现寄存器142可以指定:·partid_max:pe的硬件实现方式所支持的最大分区id;·has_vcr:是否提供虚拟化功能(并因此是否提供虚拟化控制寄存器116、重新映射有效寄存器124、重新映射寄存器126、128和重新映射电路130);·partid_remap_max:pe的硬件实现方式所支持的最大虚拟分区id;·pmg_max:pe的硬件方式所实现支持的最大pmg值;·pmg_remap_max:(可选)-在支持pmg字段的重新映射的实施例中,pe的硬件实现方式所支持的最大虚拟性能监测分区id;·has_mpamf:表示在pe中存在mpam分区控制设施。例如,如果pe具有内部缓存、tlb、或具有mpam分区控制设施的其他内部存储器系统组件,则可以设置此项。可以将分区id附加到存储器事务以供其他存储器系统组件使用的pe(但它们本身没有利用分区id来划分存储器资源或性能监测资源的任何分区控制设施)将清除has_mpamf。·has_s:指定是否支持安全状态。当支持安全状态时,可以提供另外的安全发现寄存器mpam_sidr160以标识用于安全状态的mpam的进一步能力:·s_partid_max:安全状态下最大partid值·s_pmg_max:安全状态下最大pmg值。发现寄存器142可以从除el0之外的任何异常状态可读,但是只读的-发现寄存器142不能被写入,因为它定义了特定硬件实现方式所固有的参数。例如,发现寄存器142可以在设备的制造期间被硬连线。安全发现寄存器160可以从el3读取,但是对于其他操作状态是不可访问的。当支持虚拟化时,可能希望防止el1处的操作系统直接读取发现寄存器142,因为partid_max和pmg_max的实际值可能大于管理程序允许操作系统使用的分区id的范围。因此,在el1处执行的尝试访问发现寄存器142(或者至少尝试访问partid_max或pmg_max字段,其定义允许被指定用于存储器事务的最大分区id和性能监测组)的指令可能触发异常,其受制于管理程序,管理程序然后可以提供不同的值(例如,partid_remap_max或pmg_remap_max)来代替最大值,以模拟操作系统可见的分区id的数量。替代地,当分区id超出范围时,不是触发异常,这可以通过按照与如上所述的处理无效虚拟分区id的类似方式将分区id映射到预定“出错情况”值(例如,id=0)来处理。因此,虚拟化控制寄存器116定义配置参数trap_mpam_idr_el1,其控制从el1对发现寄存器142的这种访问是否受制于el2。通过设置该配置参数,el2处的管理程序或el3处的安全监测器可以控制el1处的客户os是否可以直接访问发现寄存器(idr)142,或者管理程序是否必须介入。提供选择idr访问是否受制于el2的灵活性对于在os适于通过避免不必要的受制于el2来直接访问idr的情况下(例如,虚拟化被禁用时)改善性能是有用的。虽然上面在el2设置虚拟到物理id映射以供el1或el0使用的上下文中讨论了虚拟化,但通常该技术可以用于具有不同权限等级的任何软件执行环境对,使得较高权限等级环境可以控制将虚拟分区id重新映射到物理分区id,以用于由较低权限软件执行环境发布的事务。此外,除非另有说明,否则上面针对分区id讨论的技术在一些实施例中也可以用于性能监测组,但这不是必需的。因此,除非另有说明,否则术语分区标识符可以被解释为包含性能监测组标识符。附加到给定存储器事务的分区id和性能监测组,以及指定从其发布事务的安全状态的安全状态指示,与存储器事务一起流过整个存储器系统。因此,将存储器事务传递到存储器系统的其他组件的存储器系统的节点(例如,互连)提供具有与在这样的节点处接收的相应请求相同的分区id、性能监测组和安全状态指示的传出存储器事务。对于存储器系统内的缓存,这些缓存具有这样的行为,如果存在缓存命中,则有时生成对请求的响应,并且如果存在缓存未命中,则在其他时间将其传递到存储器系统的另一部分。它们有时也可以基于请求来分配新条目。在分配新条目时,缓存可以存储引起分配的请求的分区id、性能监测组和安全性指示,以及所缓存的数据本身。当数据被写回到另一缓存或存储器时,生成回写事务,其指定与缓存中的被逐出的数据相关联的分区id、性能监测组和安全性指示,而不是与触发逐出的请求相关联的id。这允许根据特定于将相应数据分配给缓存的软件执行环境的参数来控制/监测用于写回的资源分配或性能监测。注意,并非所有存储器系统组件(例如,缓存、互连、存储器控制器、存储器设备、或存储器管理单元)都支持分区。不支持分区的组件可以以通用方式控制所有软件执行环境的资源分配或监测性能。然而,传出请求仍以与上述相同的方式附加有分区id,使得支持分区的下游存储器系统组件可以使用分区id来选择适当的参数集。因此,无论系统设计者是否实际上选择在任何给定存储器系统组件处使用分区id,上面讨论的处理元件架构和分区id路由方案都提供了支持一系列实现方式的灵活性,这些实现方式在存储器系统的不同点处实现划分。然而,对于响应分区id或性能监测组id的这种存储器系统组件,这些组件可以基于分区id来控制资源分配或争用管理、或性能监测。性能监测器的工作方式与资源划分控制不同。性能监测器基于编程在监测器中的过滤器来测量、计数或计算性能指标。过滤器参数可以包括分区id和性能监测组(或性能监测视组,但没有分区id)。例如,对传输到存储器的字节数进行计数的性能监测器可以将测量过滤为仅计数分区id为5且性能监测组为2的读取。因此,性能测量可以被分配用于共享同一分区id和性能监测组的不同软件执行环境、或不同的软件执行环境组。另一方面,对于支持资源划分的系统组件,存储器系统组件基于分区id选择一组存储器系统组件参数。存储器系统组件参数可以是资源控制参数,其用于控制存储器系统资源(例如,带宽、缓存容量等)的分配或对这些资源的争用(例如,选择的存储器系统组件参数可以定义与相应的分区id相关联的事务的优先级设置)。图12示出了用于基于分区id来控制存储器系统组件的操作的方法。在步骤200处,存储器系统组件接收存储器事务,其指定如上所述的分区id、性能监测组和安全状态指示。如果存储器系统组件支持存储器系统资源划分(步骤202),则在步骤204处,基于分区id和安全状态选择一组资源控制参数。在此步骤中不考虑性能监测组。在步骤206处,使用选择的该组资源控制参数来控制对资源的分配,或者使用选择的该组资源参数来管理对这些资源的争用。如果不支持存储器系统资源划分,则省略步骤204和206。如果存储器系统组件支持性能监测组的性能监测划分(步骤208),则在步骤210处,在组件中实现的每个性能监测器针对其过滤器参数测试该请求(其可以包括要应用于pmg字段和分区id字段的测试)。满足其过滤器参数的每个监测器根据该监测器被设计为进行的测量、计数或计算来更新其内部状态。对于不支持性能监测划分的存储器系统组件,省略步骤210。如上所述,在一些实施例中,分区id字段和pmg字段都可以被包括在过滤器参数中(使得pmg字段进一步限制分区id字段)。替代地,pmg可以被解释为与分区id字段分开的独立id,在这种情况下,过滤器参数可以考虑pmg而不空滤分区id。支持资源监测划分的每个存储器系统组件可以具有一组参数寄存器,其存储基于分区id选择的不同的存储器系统组件参数集。用于划分控制的控制参数在逻辑上是由分区id索引的控制参数阵列。用于设置控制参数的接口可以被布置为存储器映射寄存器的阵列,或者可以布置有选择器寄存器并且每个控制参数仅单个配置寄存器。在后一情况下,配置软件首先存储分区id以配置到选择器寄存器中,并然后将所需的控制参数存储到一个或多个控制参数配置寄存器中。图13示出了缓存300的示例,其是存储器系统组件的一个示例。缓存300可以是用于缓存指令或数据的缓存,例如,给定处理元件6的等级1数据缓存8、等级1指令缓存10或等级2缓存12,集群缓存16或系统缓存20。缓存300还可以是用于地址转换的缓存,例如,mmu70中的tlb72或页面遍历缓存74。尽管图3示出了在给定处理器核内提供mmu70的示例,但是也可以在存储器系统中更靠后地提供系统mmu,例如,在soc互连18内。缓存300具有缓存存储装置(缓存ram)302,用于存储要缓存的信息。缓存ram302具有一定数量的存储条目304。如图13所示,每个条目可以存储:·缓存数据306(其可以是任何缓存信息-不仅包括数据值,还包括指令或地址转换数据,取决于缓存的类型),·有效位308,指定条目中的相应数据是否有效,·标记字段310,指示与缓存数据相关联的地址的一部分·将数据分配到缓存中的存储器事务的分区id314·分配存储器事务的性能监测组id316·分配存储器事务的安全状态指示318(其指示从其发布存储器事务的安全状态);·系统设计可能需要为每个缓存行保留的其他信息,例如,一致性状态或地址空间指示符(asi)。在从缓存中逐出数据时,id字段314、316、318被用于导出回写事务的分区id、性能监测组id和安全状态指示。尽管未在图13中示出,但是每个缓存条目还可以存储指定缓存数据的一致性状态的一致性信息(例如,数据干净还是肮脏,以确定是否需要回写)、和/或用于在需要逐出时选择受害者缓存行的受害者选择数据(例如,用于跟踪哪些条目最近最少使用的数据)。可以根据任何已知的缓存组织来控制对缓存的数据分配,包括直接映射、集合关联或完全关联。图13中的示例示出了具有4个通路(way)的集合关联组织方案,但是应该理解,这只是一个示例。独立于与相应的存储器事务相关联的分区id来执行对缓存的查找。因此,当接收到指定给定分区id的存储器事务时,事务可以命中索引的缓存条目内的任何数据,而不考虑存储在缓存条目中的分区id314、非安全id指示符318和性能监测组316。因此,对性能资源和/或性能监测的划分不会阻止不同的软件进程来共享对缓存数据的访问。另一方面,在将数据分配给缓存时,缓存控制器312根据基于相应的存储器事务的安全状态和分区id选择的一组资源控制参数来控制分配。如上所述,缓存具有一组资源控制参数寄存器320,每个寄存器320存储相应的软件执行环境的资源控制参数。选择器322基于请求将数据分配给缓存的传入存储器事务的分区id和安全状态来选择寄存器之一。存储在所选寄存器中的参数用于控制是否以及如何将数据分配给缓存。在第一缓存划分控制模式中,使用根据分区id选择的最大容量阈值来控制分配,该最大容量阈值标识允许被分配有与相应分区id相关联的数据的缓存容量的条目的最大数量。在支持安全和非安全状态的实现方式中,阈值可以定义允许被分配与分区id和非安全id指示符的给定组合相关联的数据的最大容量。例如,最大容量阈值可以由较高权限进程来设置,即给定操作系统的阈值可以由管理程序来设置,并且给定应用的阈值可以由操作系统来设置。例如,图2示出了其中分区id0、1和2分别被分配了50%、50%和40%的最大容量阈值的示例。注意,为不同软件执行环境定义的最大容量阈值的总和可能超过100%,因为这些仅是可以存储给定分区id的数据的缓存量的最大限制,而不是保证的分配。在这种情况下,相应的软件执行环境不会同时使用它们的最大分配。返回图13,缓存300具有一组分配计数器326,用于跟踪多少缓存条目304已被分配用于与每个分区id相关联的数据。在支持安全状态的情况下,可以基于安全状态进一步划分计数器。当给定分区id的数据值被分配给缓存时,相应的分配计数器326递增。当数据无效、逐出或替换时,相应的分区id的分配计数递减。当响应于给定存储器事务而发生缓存未命中时,缓存控制器312读取与由存储器事务指定的分区id相对应的分配计数器326和资源控制参数寄存器320,将分配计数与最大容量阈值进行比较,并基于比较结果控制分配。如果当前分配尚未超过阈值,则可以将所需数据分配给缓存。然而,如果分配计数等于或超过阈值,则缓存控制器312可以确定不为新请求分配任何数据,或者可以在分配新数据之前从缓存中逐出或替换与同一分区id相关联的其他数据,以防止缓存被分配多于与该分区id关联的阈值等级的条目。如果需要逐出或替换,则存储在缓存的每个条目中的分区id314(以及如果提供,受害者选择信息)可用于确定逐出什么数据。可以理解,对容量进行计数的上述方式仅是一个示例,可以使用其他技术来跟踪缓存容量。资源控制参数寄存器320可以以不同方式表示由最大容量阈值指示的条目的最大数量。例如,它们可以直接指定能够分配给相应分区id数据的条目的最大数量。替代地,它们可以根据可以为该分区id分配的缓存的总容量的一小部分来指定阈值。例如,参数可以表示缩放百分比,其中,参数的宽度和缩放因子在相应的存储器组件的id寄存器362中指定。例如,组件可以支持缩放256的8位容量控制,在这种情况下,为了将30%的容量分配给给定分区,分区的最大容量参数将是.30*256=76.8,向下舍入到76以防止分配超过所需的百分比。在支持多个安全状态的实施例中,还结合分区id使用安全状态指示来选择适当的资源控制参数寄存器320和分配计数326。图14示出了在第一划分控制模式中根据最大容量阈值来控制缓存分配的方法。在步骤330处,针对给定存储器事务检测到缓存未命中。在步骤332处,基于响应的分区id和安全状态选择一组资源控制参数320。在步骤334处,将计数器326为相应的安全状态和分区id维护的分配计数与选择的一组资源控制参数320中的最大容量阈值进行比较,并且在步骤336处,确定分配计数是否大于最大容量阈值。若否,则在步骤338处,响应于缓存未命中将用于该请求的数据分配给缓存。另一方面,如果分配大于或等于分配阈值,则在步骤340处,防止将数据分配给缓存,或者替代地,在步骤342处,可以替换或逐出与和当前请求相同的分区id相关联的数据,以便为新分配的数据让路,并且在步骤338处可以正常地分配数据(尽管步骤340或342提供了限制,但分配计数有时也可以超过阈值,例如,如果阈值最近已被更新)。方法是否进行到步骤340或342是给定缓存实现方式的实现方式选择。替代地,如图15所示,可以使用第二缓存控制模式,其中,基于分区id选择的缓存容量部分位图350被用于控制缓存分配。位图350具有多个字段352,每个字段指定缓存存储装置302的相应部分是否允许被分配用于存储与相应的分区id相关联的数据。例如,图15的示例的下部中示出的位图350具有32个字段352,各自对应于1/32nd的缓存容量。每个字段可以被设置为0以指示指定相应分区id的事务不能将数据分配给缓存的该部分,或者被设置为1以指示允许该部分被分配该分区id的数据。如图15的顶部所示,通过为不同的分区id设置不同的位图350,这允许缓存的一些部分被保留用于给定分区id,而其他部分可以在分区id之间共享或完全未分配。例如,对于图15中所示的4个缓存部分的子集(这不是整个缓存容量),缓存的部分0仅被分配给分区1,部分1被分配给分区1和分区2二者,使得它们可以竞争对该部分缓存的分配,部分2仅被分配给分区2,并且部分3不被分配给这些分区中的任何一个。因此,在将数据分配给用于分区1的缓存时,缓存控制器312被限制为选择部分0或1内的位置,但不能分配给部分2或3。由位图定义的“部分”可以是一个或多个缓存条目的任何组,其具有可以将任何给定地址分配给该组的至少一个条目的属性,例如,集合关联缓存中的整个通路(包括属于该通路的所有集合),或者完全关联缓存中的更任意的条目子集。因此,利用第二分配控制模式,当检测到缓存未命中时,再次选择用于相应的分区id和安全状态的一组控制参数,但这次读取缓存位图并用于控制缓存的哪些部分可以分配有数据。一些缓存实现方式可仅支持上述第一和第二缓存分配控制模式中的一个(例如,直接映射缓存可以实现第一模式而非第二模式)。其他实现方式可以支持使用两种模式的选项。例如,这可能是有用的,因为如果所使用的特定缓存组织不支持给出许多部分(例如,相对低关联性的集合关联缓存),则覆盖最大容量限制给出比单独的部分划分更多的控制。如上所述,缓存300可以具有存储器映射配置寄存器360,用于控制如何执行资源划分。配置寄存器360包括用于标识缓存300的硬件能力的id寄存器362、用于选择一组资源控制参数以进行更新的选择器寄存器364、以及用于指定要写入选择的一组资源控制参数的参数一个或多个配置寄存器366。例如,id寄存器362可以指定支持第一/第二缓存分配控制模式中的哪一个(基于阈值或基于位图的划分)。例如,不具有任何分配计数器326的缓存可以指示不支持第一模式。在这种情况下,控制处理器可以被限制为使用第二模式。其他缓存可以支持这两种模式,并且可以灵活地选择用于给定进程的模式。在这种情况下,可以在用于相应分区id的资源控制参数寄存器320内指定使用哪种模式,并使用配置寄存器360对其进行编程。当针对给定分区id设置该组资源控制参数时,软件通过发布指定将映射到那些寄存器364、366的存储器地址的存储器事务,将该分区id写入选择器寄存器364并将要写入的参数写入相应的配置寄存器366。作为响应,缓存300从配置寄存器366读取参数,并将它们写入由相关分区id标识的相应的资源控制参数寄存器320。当支持安全状态时,可以堆积选择器寄存器364和配置寄存器366,使得针对安全和较不安全状态分别提供不同的版本,并且与存储器事务相关联的安全性指示选择访问哪组寄存器。注意,用于设置资源控制参数的这种选择器寄存器364和配置寄存器366仅是可以如何设置资源控制参数的一个示例。该方法的优点是它节省了存储器系统组件中的地址空间使用。然而,替代方法是使用较宽接口,其中,控制设置阵列作为n个控制设置寄存器的阵列,其中n是所支持的最大分区id数。这更简单,因为可以利用单次写入针对分区更新控制配置,因此不需要互斥以防止一个处理器在另一处理器正在配置存储器系统组件时访问选择器寄存器364和配置寄存器366。例如,如果最大分区id数是216并且典型的存储器系统组件具有2到4个控制,则该方法可以使用256kb的地址空间用于资源控制参数阵列。例如,对存储器映射配置寄存器360的访问可以由mmu70控制,以限制哪些操作状态可以发布用于更新配置寄存器360的存储器事务。例如,可以不允许在el0处执行的指令访问配置寄存器360,但是可以允许el2处的管理程序。当支持分区id的虚拟化时,在缓存300内使用的分区id是物理分区id,而尝试设置将用于相应应用的分区id的资源控制参数的操作系统将指定虚拟分区id。因此,为了防止操作系统更新错误的资源控制参数,可以限制对映射到配置寄存器360的地址的访问,并且可以触发异常以将处理切换到el2处的管理程序。然后,管理程序中的异常处理程序可以发布具有正确物理分区id的相应存储器事务,以更新缓存300处的相关参数集320。为了实现这一点,在两级mmu转换过程中,与存储器映射寄存器360相关联的地址可以被放置在第二级地址页面上,该地址页面与存储器系统组件使用的其他地址空间不同。以与资源控制划分类似的方式,可以基于性能监测组(以及在pmg是分区id的子属性的实施例中,分区id)和安全状态来划分缓存300中的性能监测。可以提供多个性能监测器380,每个性能监测器可配置为基于在对应于该性能监测器380的一组过滤器参数382中编程的过滤器来测量、计数或计算性能度量。过滤器参数382可以包括用于指定partid和pmg的字段,并且在接收存储器事务时,如果过滤器参数382已经为partid/pmg字段设置了特定值,则性能监测器可以根据与该事务相关联的partid/pmg值是否与过滤器参数382中的值设置相匹配,基于该事务来确定是否更新其度量。注意,在支持第一缓存分配模式的实现方式中,其中,提供分配计数器326以用于跟踪是否超过分配阈值,同一分配计数器326还可以用于性能监测。在缓存300是地址转换缓存(例如,tlb或页面遍历缓存)的情况下,以这种方式对缓存分配资源进行划分可以是有用的,以确保一个软件执行环境不能分配超过其所分配的百分比/部分的地址转换缓存容量,以便为其他软件执行环境留出空间并减少“嘈杂邻居”效应。虽然图13示出了缓存300的示例,但是其他存储器系统组件可以具有类似的一组存储器映射配置寄存器360和资源控制参数寄存器320,其中,存储器映射配置寄存器360用于配置与给定分区id/性能监测组/安全状态相关联的存储器系统组件参数,并且资源控制参数寄存器320用于指定相应分区id的配置数据集。具体地,对于其他存储器系统组件(例如,存储器控制器24或互连14、18),可以实现任何以下形式的资源划分:存储器信道带宽划分可以划分主存储器信道的带宽。可以提供两种带宽控制方案。存储器信道可选地可以实现以下列项中的一项或两项:·分区所声明的最小带宽,即使存在争用·存在争用时可用于分区的最大带宽限制这些控制方案的任何组合可以在支持它们的信道中同时使用。每个控制方案在下面的部分中描述。最小带宽控制方案最小带宽控制方案在其当前带宽低于最小值时提供来自分区优先级的请求,并允许其请求在高于其最小带宽时与其他普通请求竞争。因此,低于其最小带宽的分区请求最有可能在信道上被调度。最小带宽控制方案在计费周期跟踪存储器带宽。·如果在计费周期期间跟踪的分区的带宽使用当前小于分区的最小值,则其请求被优先选择以使用信道带宽。·如果在计费周期期间跟踪的分区的带宽使用当前大于分区的最小值,则其请求与其他普通优选请求竞争以使用信道上的带宽。计费窗口期间分区未使用的带宽不会累积。存储器系统组件内的寄存器可以将给定分区id的最小带宽限制指定为每秒缩放的兆字节。每秒兆字节的缩放值被计算为每秒期望兆字节乘以可由硬件定义的比例因子。最大带宽限制控制方案最大带宽限制控制方案在计费周期期间给出分区普通优先级,直到其最大带宽限制。如果在计费周期期间跟踪的分区的带宽使用当前小于分区的最大值,则其请求与普通优先级竞争存储器信道上的调度。如果在计费周期期间跟踪的分区的带宽使用当前大于分区的最大带宽限制,则其请求与其他较不优选请求竞争以使用信道上的带宽。当带宽使用低于最大带宽限制时,最大带宽限制控制方案给出来自分区普通优先级的请求,并且当带宽使用超过最大带宽限制时,给出来自非优先级的请求。因此,在没有对信道带宽的争用的情况下,分区可以使用多于最大带宽。分区的带宽使用低于其最大限制时的带宽请求以普通优先级进行调度,因此根据竞争请求,并非低于其最大限制的所有分区的请求带宽都可以由信道调度器授权。计费窗口期间分区未使用的带宽不会累积。同样,最大带宽限制的控制参数可以被指定为每秒缩放的兆字节。每秒兆字节的缩放值被计算为每秒期望的兆字节乘以可由硬件定义的比例因子。如果实现了最小带宽控制方案和最大带宽限制控制方案二者,则下表示出了请求的优先级:*注意,尽管优先级通常可以被定义为高、中或低以增加高优先级请求在中或低优先级请求之前被服务的可能性,但实现方式仍可以在服务请求时偏离优先级顺序以满足实现方式的其他目标,例如,避免互斥等待(starvation)。对于上面讨论的所有方案,带宽划分方案的控制参数都可以用给定单位表示,例如,每秒兆字节。该值也等于每微秒传输的字节。实现方式可能要求在将结果值编程到存储器系统组件的带宽控制寄存器之一中以用于分区id之前,将每个带宽划分控制参数乘以恒定缩放因子。可以在存储器系统组件内的发现寄存器中指定实现方式是否需要缩放控制参数,以及缩放因子(如果需要)(类似于上述缓存的发现寄存器362)。对于上述所有存储器带宽划分方案,存储器信道带宽调节可以在计费周期内发生。计费周期可以是固定窗口或移动窗口。窗口的宽度可以是可发现常数,其可以从存储器系统组件中的发现寄存器读取。例如,计费周期可以是至少一微秒,并且可以高达20微秒或更多。较长计费周期可能需要更多硬件,尤其是在移动窗口实现方式中,而较短计费周期可能具有更多边界效应,尤其是在固定窗口实现方式中。在固定窗口计费中,带宽被分配给请求,使得每个分区根据该分区的最小值和最大值获得带宽。请求或本地优先级可用于解决冲突的带宽请求。在达到计费窗口的周期时,新窗口开始,没有历史记录,除了先前未提供服务的任何请求队列。新窗口开始为每个分区从零累积带宽。通过移动窗口计费,移动窗口保持来自在过去的窗口宽度中发布的所有命令的分区的带宽历史。不是每个分区都重置带宽计费,而是在处理命令时添加带宽,并在该命令移出窗口历史时从计费中移除。这种连续计费相对没有边界效应,但除了固定窗口所需的每个分区id的带宽计数器之外,还需要更多硬件来跟踪窗口内命令的历史。所有分区的最小带宽分配可以共计比可用带宽更多。当一些分区未使用其带宽分配时这不是问题,因为未使用的分配可供其他分区使用。然而,当最小带宽被过渡分配时,不能始终满足为分区编程的最小带宽。软件可确保最小带宽不被过度分配,以确保系统可以可靠地传送所编程的最小带宽分配。因为在许多系统中可用带宽可能取决于一个或多个时钟频率,例如,ddr时钟,因此软件可能希望在改变影响可用带宽的时钟时重新分配带宽。在不改变分配的情况下降低时钟速率可能导致带宽的过度分配。注意:dram信道上的可用带宽不是常数,而是随时钟速率、读写混合和存储器命中率而变化。本领域技术人员将会看到,所描述类型的带宽控制不限于仅在存储器信道控制器处使用,而是可以被部署为控制任何存储器系统组件处的带宽。优先级划分与本文档中列出的其他存储器系统资源不同,优先级不会直接影响存储器系统资源的分配,而是会影响对资源访问的冲突。正确配置的系统由于优先级化而应很少产生实质的性能影响,但优先级在瞬时或持续的超额预订的情况下确实发挥重要作用。因此,“优先级划分”可以用作帮助隔离分区之间的存储器系统效果的工具。可以为(支持优先级划分的)存储器系统中的每个组件分配优先级。该划分控制允许设置存储器系统的不同部分以处理具有不同优先级的请求。例如,从处理器到系统缓存的请求可以被设置为使用比从系统缓存到主存储器的更高的传输优先级。可以为每个分区id标识两种类型的优先级:·内部优先级控制在该存储器系统组件的内部操作中使用的优先级。它们可以在存储器系统组件中使用以对内部操作进行优先级化。例如,当带宽分配未挑选明显的赢家时,存储器控制器可以使用内部优先级来在等待请求之间进行选择。·下游优先级控制被下游传送到另一存储器系统组件的优先级(例如,到互连或存储器控制器)。“下游”是指请求的传送方向。“上游”响应通常使用与生成它的请求相同的传输优先级。存储器系统组件使用下游优先级来向没有优先级划分的下游组件指示优先级。这可用于为下游的互连组件设置传输优先级。另一方面,如果组件未实现优先级划分,或者它没有实现下游优先级,则它可以使用“直通优先级”-下游优先级与传入(上游)优先级或请求相同。类似地,(从下游到上游)运送通过存储器系统组件的响应的优先级与(从下游)接收的响应的优先级相同。更一般地,根据一个示例配置,提供了一种装置,包括:处理电路,用于响应于多个软件执行环境之一的指令执行数据处理;至少一个存储器系统组件,用于处理用于访问数据的存储器事务,每个存储器事务指定被分配给与所述存储器事务相关联的软件执行环境的分区标识符,所述至少一个存储器系统组件被配置为选择与由将处理的存储器事务指定的所述分区标识符相关联的多组存储器事务进展参数中的一个;以及存储器事务进展控制电路,用于根据所述选择的一组存储器事务进展参数来控制所述存储器事务的进展。在上面的示例中,存在许多软件执行环境。这些可能包括应用、操作系统和虚拟机。每个环境都可以访问同一存储器系统。存储器系统可以包括主存储器,并且还可以包括一个或多个缓存。缓存(如果存在)可以按层级排列,以便在访问主存储器(如果存在)之前,在访问较大、较慢缓存之前访问较小、较快缓存。在一些示例中,可以共享存储器系统的部分(或全部),并且存储器系统的一些部分仅可用于某些组件。从存储器系统访问数据的每个存储器事务指定分区标识符。分区标识符是根据发布存储器事务的环境而提供的。例如,可以为每个环境分配其自己的分区标识符(或多个分区标识符),其中一个是针对每个存储器事务提供的。然后,存储器事务进展控制电路通过选择与事务标识符相关联的存储器事务进展参数(也称为“存储器系统组件划分控制设置”),基于分区标识符来控制存储器事务的进展。通过这种方式,可以直接控制一组资源。这样做可以更容易理解,使得可以以效果明确的方式控制资源集,并且可以将资源连接到软件环境的可测量行为。注意,存储器事务进展控制电路可以是单独的设备,可以连接到至少一个存储器系统组件,或者可以是至少一个存储器系统组件本身。在一些实施例中,所述一组存储器事务进展参数包括优先级配置,以指示处理所述存储器事务的优先级。与较低优先级事务相比,较高优先级事务被更重要地处理,因此可能更快地传输。优先级通常表示为数字。然而,请注意,术语“较高”和“较低”是指事务的相对重要性,而不是与事务相关联的任何数值。因此,高优先级事务可以与数值“0”相关联,并且低优先级事务可以与数值“9”相关联。通过表达与事务相关联的优先级,可以在多个事务关于哪个应被允许继续而被约束时解决时序冲突。可选地,还可以使用优先级来表达是否应该花费资源来解决事务或者该事务应该优先于其他事务的程度。例如,与一些分区标识符相关联的事务可以比具有其他分区标识符的事务更快地进行。以这种方式,不被阻止的软件执行环境可以比其他软件执行环境更快地使其存储器事务进行。在一些实施例中,所述优先级配置包括内部优先级;并且所述至少一个存储器系统组件将以所述内部优先级处理所述存储器事务。内部优先级涉及至少一个存储器系统组件本身处理存储器事务的优先级。在一些实施例中,内部优先级替换任何传入优先级(例如,其可以基于事务的总线qos优先级)。在一些实施例中,所述优先级配置包括处理所述存储器事务的下游优先级。存储器系统组件通常向下游传递事务,直到事务到达能够处理该事务的存储器系统组件-例如,通过提供对所请求数据的访问。在典型的存储器层级中,下游可以被认为是朝向主存储器。通过提供处理存储器事务的特定下游优先级,可以在事务通过存储器系统的更多元件时改变事务的优先级。类似地,以这种方式,可以控制除了执行选择的存储器系统组件之外的存储器系统组件来以给定优先级处理事务。在一些实施例中,下游优先级可以覆盖或替换任何传入优先级。下游优先级还可以用作与较旧存储器系统组件接口的机制,较旧存储器系统组件作为参数实现对服务质量(qos)的支持。替代地,不是指定应该处理事务的优先级,而是可以仅声明优先级应保持不变。同样,在这种情况下,可以控制存储器系统组件,而不主动使这些组件执行选择。具体地,在这样的实施例中,当所述至少一个存储器系统组件将所述存储器事务传递给至少一个其他下游存储器系统组件时,所述事务与以下指示一起被传递:所述存储器事务将以与选择多组存储器事务进展参数中的所述一组的存储器系统组件处理所述存储器事务相同的优先级进行处理。在一些实施例中,所述一组存储器事务进展参数包括多个优先级配置,每个优先级配置与所述至少一个存储器系统组件之一相关联;并且所述至少一个存储器系统组件中的每一个将根据该相关联的优先级配置来处理所述存储器事务。以这种方式,可以为每个存储器系统组件提供不同的优先级配置,从而为当事务通过存储器系统时如何对其进行处理提供了的增加的灵活性。例如,对于一些应用,考虑到同一系统上的其他竞争应用,可能的情况是短延迟是可接受的,甚至是适当的。因此,可能适当的是在附近(上游存储器系统组件)为这样的执行环境分配低优先级。然而,如果不希望允许较长延迟,则可以为其他系统组件分配较高优先级。以这种方式,可能导致短暂延迟,以便优先考虑来自其他执行环境的存储器事务。然而,不鼓励较长延迟,因为其他存储器系统组件具有提高的优先级。在一些实施例中,所述一组存储器事务进展参数包括与所述至少一个存储器系统组件相关联的限制。该限制可以例如关于与该至少一个存储器系统组件相关联的资源,该资源在存储器事务的处理和/或传递期间用完。注意,与每个分区关联的限制不需要总计为所实际实现、配置或可能分配的资源的总数量。实际上,限制的总和可以落在实际限制之下,从而实现一些松弛,或者可能超过实际限制,在这种情况下,资源在竞争分区之间共享,并且在一些时候或在一些竞争请求的条件下,可能不满足一些分配。这种共享可以是等同的,可以加权以支持分配,或者可以整体分配给第一请求环境,其余的在其他请求环境之间共享。例如,在一些实施例中,所述限制是所述至少一个存储器系统组件的带宽限制。带宽可以被表示为在一段时间内传入、传出、或进入和离开至少一个存储器系统组件的数据量。在其他示例中,带宽可以被表示为信道的理论最大带宽的百分比,或者在固定时段内测量的所传输的字节的速率,或者实际请求所消耗的信道的理论最大带宽被实际、低效的传输所消耗的机会。当前带宽可以被认为是在一段时间内(例如,一个或多个微秒或几分钟)对所表达的带宽的测量。在一些实施例中,带宽限制可以包括最大带宽。例如,在一些实施例中,当用于响应指定所述相关联分区标识符的事务的所述存储器系统组件的当前带宽使用超过所述最大带宽时,所述存储器事务进展控制电路将降低对指定所述相关联分区标识符的事务的带宽的访问的优先级。在该(以及一些其他)示例中,最大带宽不必是绝对限制,而是与和未超过最大带宽的事务相关联的其他事务相比,事务被赋予用于访问带宽的较低优先级的点。当然,最大带宽在分区之间可以不同,使得一些分区可以比其他分区访问更多的带宽。在另一示例中,带宽限制可包括最小带宽。例如,在一些实施例中,当用于响应指定所述相关联分区标识符的事务的所述存储器系统组件的当前带宽使用低于所述最小带宽时,所述存储器事务进展控制电路提高指定所述相关联分区标识符的事务的优先级。在这样的示例实施例中,最小带宽限制不作为要求,而是作为分区接收高优先级的带宽。除非存在比可用带宽更多的此类请求,否则可以预期服务高优先级请求。为实现这一点,如果分区尚未满足最小带宽,则标识该分区的任何事务都被赋予比标识已满足其最小带宽的分区的事务更高的优先级。当然,最小带宽在分区之间可以不同,使得一些分区可以访问比其他分区更多的带宽。在又一示例中,所述带宽限制包括下限和上限,所述下限低于所述上限;所述存储器事务路由控制电路用于基于用于响应指定给定分区标识符的事务的所述存储器系统组件的当前带宽使用来设置指定所述给定分区标识符的事务的优先级,其中,当所述当前带宽使用低于所述下限时,所述存储器事务路由控制电路将指定所述给定分区标识符的所述事务的优先级设置为第一等级;当所述当前带宽使用在所述下限和所述上限之间时,所述存储器事务路由控制电路将指定所述给定分区标识符的所述事务的优先级设置为第二等级,该第二等级重要性低于所述第一等级;以及当所述当前带宽使用高于所述上限时,所述存储器事务路由控制电路将指定所述给定分区标识符的所述事务的优先级设置为第三等级,该第三等级的重要性低于所述第二等级。在这样的实施例中,提供了至少三个不同的优先级等级-第一等级、高于第一等级的第二等级、以及高于第二等级的第三等级。然后提供了两个带宽限制-最小带宽限制和最大带宽限制。当尚未满足分区的最小带宽限制时,指定该分区标识符的事务被赋予第三(较高)优先级,并因此被赋予相比于具有第二或第一优先级的事务的带宽优先级。否则,如果尚未满足分区的最大带宽限制,则指定该分区标识符的事务被赋予第二优先级,并因此被赋予相比于具有第一优先级的事务的带宽优先级。否则,如果已满足分区的最大带宽限制,则指定该分区标识符的事务被赋予第一优先级。通过这种方式,分区始终能够发布事务。然而,尚未满足较低(最小)带宽限制的那些分区被赋予更多优先级,而已经超过(最大)带宽限制的那些分区被赋予较少优先权。在一些实施例中,所述限制是所述至少一个存储器系统组件的未完成事务限制;并且所述至少一个存储器系统组件被配置为将关于其他存储器系统组件的与所述分区标识符相关联的未完成事务的数量限制为所述未完成事务限制。未完成事务可以被认为是已经由存储器系统组件转发(即下游),针对其尚未返回结果的事务。此类事务通常被称为“飞行中”。在这些实施例中,可以为每个分区允许一定数量的“飞行中”事务。将导致超出限制的事务可以被“保持”,直到飞行中事务的数量下降到限制以下的时间,此时它们被转发到下游(并从而变未为未完成/飞行中)。例如,这可以使用计数器来实现,如稍后所述。在一些实施例中,所述至少一个存储器组件包括用于所发布的事务的缓冲器;并且所述限制是所述缓冲器的缓冲器深度。存储器系统组件可以使用缓冲器来保存许多传入事务(例如,通过处理电路或通过i/o),然后由该存储器系统组件处理(通过响应于事务,或通过进一步下游转发事务)。例如,在作为存储器系统组件的示例的互连中,可能存在一个或多个缓冲器。每个缓冲器可以根据多个事务来测量其自己的深度(大小),并且每个分区可以被分配该缓冲器中的特定数量的条目。在一些实施例中,所述限制是可以在不可屏蔽状态下发送,使得它们不被其他事务阻止的事务的数量。一些事务可能被标记为不可屏蔽。例如,此类事务可以使得它们不会被其他事务阻止。这可以用于创建“虚拟信道”。预期不可屏蔽事务被快速解决,因为它们不必等待其他事务被解决(除了可能的其他不可屏蔽事务)。然而,明显地,并非所有事务都可以具有这种状态,或者状态将变得毫无意义。因此,可能希望限制对发送此类事务的能力的访问。存在多种方式来确定针对限制的使用。然而,在一个实施例中,该装置还包括:计数器,用于对由所述限制限制的资源的使用进行计数;并且所述计数器在每个预定的时间段内重置。这样的系统提供“静态窗口”,其在每个时间段内重置,并且在每个窗口期间计数针对限制的使用。在其他实施例中,提供了一种计数器,用于在先前预定时间段内对所述限制所限制的资源的使用进行计数。因此,可以使用这种“浮动窗口”,以便通过考虑最近的历史来更准确地测量当前使用。相反,尽管静态窗口可能更容易实现,但它每隔预定时间段丢失所有历史记录。图16示出了流程图354,其示出了用于基于由分区标识符设置的限制来为存储器事务选择优先级的过程。在步骤356中,分析选择的下一事务,并确定哪个分区标识符被存储器事务引用。然后使用该标识符来选择存储器事务参数。在该实施例中,存储器事务参数表示带宽限制。在步骤358处,确定当前带宽(即具有同一分区标识符的存储器事务所使用的带宽)是否小于相关联存储器事务参数中的最小带宽限制。如果是,则在步骤360处,优先级被设置为1(高),因为分区尚未满足其最小带宽分配。否则,在步骤362处,确定当前带宽是否大于相关联存储器事务参数中的最大带宽限制。如果是,则在步骤364处,存储器事务的优先级被设置为3(低),因为分区已超过分配给它的最大带宽。注意,仍然允许存储器事务继续进行,但是将以低优先级处理,因此仅在不需要处理具有更高优先级的其他事务时才能继续。否则,分区已经超过其最小容限,但未超过其最大容限,因此在步骤366处,事务被赋予优先级2(中)。作为该过程的结果,其相关联事务未被分配对带宽的访问的分区经历其当前带宽使用的减少。因此,事务不会被阻止,而是延迟了它们的带宽消耗。图17示意性地示出了传递事务t的存储器系统。事务从集群互连14传递到片上系统(soc)互连18,并传递到存储器控制器24。在该实施例中,soc互连18基于由事务t提供的分区标识符来执行存储器事务参数的选择。在该实施例中,提供第一优先级(1)用于soc互连18处的事务的内部处理。因此,在确定是否可以处理事务时,soc互连18本身为事务赋予高优先级。然而,如果soc互连18确定必须向下游传递事务,则事务与第二优先级(3)一起被传递,存储器控制器24将利用该第二优先级来处理事务。以这种方式,可以控制由不执行存储器事务参数的选择的存储器系统组件处理事务的优先级。图18示意性地示出了使用计数器电路368来测量相对于极限的使用。例如,测量可以针对未完成事务,其与(未完成事务)的限制进行比较。在该实施例中,选择电路370作为单独的组件被提供给存储器系统组件,即等级1数据缓存8。然而,应当理解,在其他实施例中,选择电路可以是存储器系统组件本身。此外,在该实施例中,选择电路370使用计数器电路368来跟踪已经针对每个分区标识符发布的未完成事务的数量。在该实施例中,如果组件已向前(即下游)转发事务但尚未接收到对该事务的响应,则该组件认为该事务是未完成的。因此,每次转发事务时,与该事务所指定的分区相关联的计数器递增,并且每次接收到响应时,关于相关联分区标识符的计数器递减。当要向下游转发指定分区标识符的新事务时,可以将该分区标识符的计数器与该分区标识符的未完成事务的限制进行比较。如果达到或超过限制,则不转发事务,直到计数器落到低于限制为止,这在接收到响应使得其中一个未完成事务易不再未完成时发生。因此,事务将被有效地“保留”而不被转发。在上面的示例中,计数器仅跟踪当前未完成的事务的数量。然而,在其他实施例中,计数器与一段时间相关联。例如,计数器和限制可以针对在一段时间内传输的数据。在这样的示例实施例中,计数器可以在每个时间段内重置,从而提供“静态窗口”,或者计数器可以测量在先前时间段内的针对限制的使用,从而提供“浮动窗口”。在前一情况下,与窗口的长度相比,可能非常快地达到限制,这可能导致“突发”行为。在后一情况下,通过测量在先前的一段时间内的使用,可以持续地释放少量的分配,其可以预期产生更温和/连续/可预测的使用。图19示出了使用一个或多个缓冲器374、376用于存储器事务的存储器系统组件372,在这种情况下是互连。互连用于使得发布存储器事务的一个或多个主设备(m1、m2)能够访问一个或多个从设备(s1、s2、s3),并且至少一个从设备在主设备之间共享。互连具有一个或多个缓冲器374、376,每个缓冲器与每个主设备相关联,其对事务进行排队,直到它们可由相关从设备发送/接收/完成。缓冲器存储装置的数量可以被分配达到分区使用的限制。在图19中,每个事务由该事务的目标从设备表示。如果队列前端的事务由于从设备占用(可能参与来自另一主设备的另一事务)而无法被传输到该从设备,则队列中的事务将被停止或阻塞。例如,主设备1的缓冲器374中的前端事务指向从设备s1。然而,如果s1占用,则事务不能继续,因此该缓冲器374中的其他事务将被阻止。同时,与第二主设备m2相关联的缓冲器376的前端的事务可以继续。在该实施例中,主设备是处理器,每个处理器提供多个执行环境。每个执行环境与分区相关联,并且这些分区具有相关联的缓冲器深度限制。此外,在该实施例中,主设备1被示出为执行针对s1的非阻塞事务378。在该实施例中,非阻塞事务使得它总是移动到缓冲器的前端,并且还使得阻塞事务被取消,使得它可以立即继续而不被阻止。可以针对每个分区发布的非阻塞事务的数量是可以与每个分区相关联的限制的另一示例。还可以使用本技术以不同的方式处理在互连中发生的阻塞行为,特别是通过一个或多个虚拟信道的实现方式。虚拟信道提供如同它是单独信道而行为的传输。例如,这可以通过以不可屏蔽状态发送一些事务,使得它们不会被其他事务阻止来实现。例如,单个物理信道可以被视为两个虚拟信道,并且在事务经由未被阻塞的虚拟信道但经由被阻塞的物理信道被发送时,应用不可屏蔽状态。图20示出了流程图380,其示出了用于基于分区标识符执行数据处理的过程。在步骤382处,接收用于访问数据的存储器事务。在步骤384处,根据由存储器事务指定的分区标识符选择存储器事务进展参数。在步骤386处,根据选择的存储器事务进展参数来控制存储器事务的进展。以这种方式,每个分区都能够控制由该分区发布的事务通过存储器系统的通路,考虑诸如优先级或带宽之类的事项。尽管本文已经参考附图详细描述了本发明的说明性实施例,但应该理解,本发明不限于这些精确的实施例,并且本领域技术人员可以在其中实现各种改变和修改,而不脱离由所附权利要求限定的本发明的范围和精神。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1