RISCV-CBQRI

发布于:2025-06-30 ⋅ 阅读:(18) ⋅ 点赞:(0)

第1章 介绍

服务质量(Quality of Service, QoS)被定义为预先通过服务水平协议(Service level agreement, SLA)保证一个工作负载的最小端到端性能。工作负载可以是单个应用程序、一组应用程序、一个虚拟机、一组虚拟机或这些应用程序的组合。性能以每周期指令数(instruction per cycle, IPC)、服务工作延迟等指标的形式进行测量。

可用缓存容量、内存带宽、互连带宽、CPU周期、系统内存等各种因素都会影响同时运行多个工作负载的计算系统的性能。此外,在对共享资源进行仲裁时,工作负载请求相对于其他竞争请求的优先级也可能影响工作负载的性能。这种由资源共享引起的干扰会导致不可预测的工作负载性能。

当多个工作负载在具有大量核心计数、多个缓存层次结构和多个内存控制器的现代处理器上并发运行时,工作负载的性能可能变得不那么确定,甚至不确定。之所以会出现这种情况,是因为工作负载性能取决于机器中竞争共享资源的其他工作负载的行为,这可能会导致干扰。在许多部署场景中,例如公共云服务器,工作负载所有者可能无法控制平台中其他工作负载的类型和位置。 

系统软件可以控制工作负载可以使用的部分资源,例如可用于执行的硬件线程数量,分配给工作负载的系统内存数量,以及用于执行的CPU周期数量。

系统软件需要额外的工具来控制对工作负载的干扰,从而通过资源分配能力减少由于其他工作负载的缓存容量使用、内存带宽使用、互连带宽使用等情况而导致的性能变化。资源分配能力使系统软件能够预留容量和/或带宽,以满足工作负载的性能目标。这样的控制可以通过将工作负载共同放置来提高系统的利用率,同时最大限度地减少一个工作负载对另一个工作负载的干扰。

资源分配能力的有效使用要求硬件提供资源监控能力,通过该能力可以表征满足特定性能目标所需的工作负载的资源需求。典型的使用模型包括通过使用资源监视功能来分析工作负载的资源使用情况,以及通过使用资源分配功能来为工作负载建立资源分配。

分配的形式可能是容量或带宽,这取决于资源的类型。对于缓存、tlb和目录,资源分配以存储容量的形式进行。对于互连线和内存控制器,资源分配以带宽的形式进行。

工作负载产生对共享资源的不同类型的访问。例如,一些请求可能用于访问指令,而其他请求可能用于访问工作负载所操作的数据。某些数据访问可能不具有时间局部性,而其他数据访问则有很高的重用概率。在某些情况下,您可以为每种访问类型提供唯一的资源分配,从而为每种访问类型提供区别对待。

RISC-V容量和带宽控制器QoS注册接口(CBQRI)规范指定了以下标识符和接口:

1. QoS标识符:用于标识请求共享资源的工作负载。这些QoS标识符包括一个用于资源分配配置的标识符和一个用于监视资源使用情况的监视计数器的标识符。这些标识符伴随工作负载对共享资源发出的每个请求。第2章指定了将标识符与工作负载关联的机制。
2. 访问类型标识符伴随访问共享资源的请求,以允许对每种访问类型进行区别处理(例如,代码和数据)。访问类型在第2章定义。
3. 控制器中用于容量分配的寄存器接口,如共享缓存、目录等。容量分配寄存器接口在第3章中指定。
4. 用于容量使用情况监控的注册接口。容量使用监控寄存器接口在第3章中已指定。
5. 在控制器中用于带宽分配的寄存器接口,如互连控制器和内存控制器。带宽分配寄存器接口在第4章中指定。
6. 注册接口用于监控带宽使用情况。带宽使用监控寄存器接口在第4章中已指定。 

用于资源分配和使用监控的容量和带宽控制器寄存器接口被定义为内存映射寄存器。每个支持CBQRI的控制器都提供了一组内存映射寄存器,从一个8字节对齐的物理地址开始。内存映射寄存器可以通过使用自然对齐的4字节或8字节内存访问来访问。当地址与访问的大小不一致,或者访问跨越多个寄存器,或者访问的大小不是4字节或8字节时,控制器的寄存器访问行为是未指定的。对寄存器的4字节访问必须是单副本原子的。对CBQRI寄存器的8字节访问是否为单副本原子性被认为是未指定的。在CBQRI实现内部,这种类型的访问看起来就像是执行了两次单独的4字节访问。

CBQRI寄存器的定义使得软件可以执行两个独立的4字节访问,或硬件可以执行两个独立的4字节事务,这两个事务是由8字节访问导致的,只要两个软件访问或两个硬件事务之间的寄存器语义(就副作用而言)是相互尊重的。

控制器寄存器使用小端字节序(即使所有hart都只使用大端字节序)。 

使用寄存器接口的big -end配置的harts可以实现由Zbb扩展定义的REV8字节反转指令。如果没有实现REV8,那么可以通过使用指令序列来实现端序转换。 

控制器可以支持CBQRI定义的功能子集。当不支持某个能力时,用于配置和/或控制此类能力的寄存器和/或字段被硬连接为0。每个控制器支持一个能力寄存器来枚举所支持的能力。 

第2章 QoS标识符 

监测或分配资源需要一种方法来识别访问资源请求的发起者。

CBQRI和Ssqosid扩展提供了一种机制,通过这种机制,工作负载可以与伴随工作负载对共享资源发出的每个请求的资源控制ID (RCID)和监视计数器ID (MCID)相关联。

为了给工作负载提供区分服务,CBQRI定义了一种机制来为资源控制器中的RCID配置资源使用限制(以支持的访问类型的容量或带宽的形式),该RCID控制对此类共享资源的访问。

为了通过工作负载监视资源的使用情况,CBQRI定义了一种机制来配置由MCID标识的计数器,以对资源控制器中控制对此类共享资源访问的事件进行计数。

第6.1节讨论了QoS IDs大小的指导方针,以及对用于监视的区分IDs的需求。所有支持的RCID和MCID在任何情况下都可以在系统中积极使用。

2.1. Associating RCID and MCID with requests

请求中的RCID由资源控制器用来确定要执行的资源分配(例如,缓存占用限制、内存带宽限制等)。

资源控制器使用请求中的MCID来标识计数器的ID,以便监视资源使用情况(例如,缓存占用、内存带宽等)。CBQRI支持两种操作模式。在直接模式下,请求携带的MCID是直接的
被控制器用来识别计数器,是有效的MCID。在rcid前缀模式下,控制器使用有效的MCID来标识要监控的计数器,计算如下:

合法的P值范围从0到12,在控制器的能力寄存器中枚举。软件应该使用有效的MCID作为控制器的MCID操作数,对监控计数器进行操作。

2.2. Access type (AT)

在某些使用中,除了提供不同工作负载之间的区分服务外,还可能需要区分相同工作负载所进行访问的资源使用情况。例如,可以将在共享缓存中为代码存储分配的容量与为数据存储分配的容量区分开来,从而避免代码因数据访问而从此类共享缓存中被驱逐。

当支持基于访问类型(例如,代码与数据)的区分时,请求也带有访问类型(AT)指示器。资源控制器可以为每种支持的访问类型配置单独的容量和/或带宽分配。CBQRI在寄存器接口中定义了一个3位AT字段,编码如表1所示,用于为每个AT配置不同的资源分配和监控。

第3章 Capacity-controller QoS Register Interface

支持容量分配和使用监控的控制器(如缓存控制器)提供了一个内存映射的容量控制器QoS寄存器接口。

容量控制器按容量单位的固定倍数分配容量。这些容量单元的一组称为容量块。可以为工作负载分配一个或多个容量块。当工作负载请求容量分配时,通过使用分配给工作负载的容量块内的容量单元来分配容量。容量块也可以在一个或多个工作负载之间共享。可选地,容量控制器可能允许配置分配给特定工作负载的容量块中可以占用的容量单元的最大数量。

例如,cache控制器按多个cache块分配容量。在这种情况下,一个缓存块作为容量单位,一组缓存块构成一个容量块。支持通过多种方式进行容量分配的缓存控制器可以以缓存的一种方式将容量块定义为缓存块。

3.1. Capacity-controller Capabilities

cc_capabilities寄存器是一个只读寄存器,用于保存capacity-controller能力。 

 

第4章 Bandwidth-controller QoS Register Interface

支持带宽分配和带宽使用监控的控制器,如内存控制器,提供了一个内存映射带宽控制器QoS寄存器接口。

 

第5章 IOMMU Extension for QoS ID
 

第6章 Hardware Guidelines

第7章 Software Guidelines


网站公告

今日签到

点亮在社区的每一天
去签到