1. Utility Bus (优提乐思巴斯)
Utility Bus为DynamIQ™ Shared Unit-120(DSU-120)中的各种系统组件和DSU-120 DynamIQ™ 集群内的核心提供对控制寄存器的访问。Utility Bus实现为64位AMBA AXI5从端口,控制寄存器通过内存映射到Utility Bus。
Utility Bus提供对以下系统功能的访问:
- 电源策略单元(Power Policy Unit, PPU):集群和每个核心的寄存器
- 集群控制寄存器:包括L3缓存电源相关的监控
- 可靠性、可用性和可服务性(Reliability, Availability, and Serviceability, RAS):核心和集群的寄存器
- 内存分区和监控(Memory Partitioning and Monitoring, MPAM):集群的寄存器
- 活动监视单元(Activity Monitor Unit, AMU):核心和集群的寄存器
- 最大功率缓解机制(Max Power Mitigation Mechanism, MPMM):核心和集群的寄存器
注:关于集群中核心的PPU寄存器的信息在本文件中提供。有关通过Utility Bus访问的所有其他核心寄存器的信息,请参阅核心技术参考手册(Technical Reference Manual, TRM)。
1.1 Utility Bus访问
Utility Bus上的事务符合AXI 5总线协议的一个子集。访问大小必须是32位或64位。任何其他大小的访问都会从Utility Bus产生一个SLVERR响应。
访问Utility Bus时,必须遵守以下要求:
- 仅支持ReadNoSnoop和WriteNoSnoop事务类型。
- 仅支持32位访问或64位访问。因此,ARSIZEU或AWSIZEU必须为0b010(32位大小访问)或0b011(64位大小访问)。任何其他访问大小都会从Utility Bus产生一个SLVERR响应。
- 仅支持单节突发访问。因此,ARLENU或AWLENU必须为0b000000000。任何其他突发长度都会从Utility Bus产生一个SLVERR响应。
- 某些系统组件控制寄存器仅支持安全状态或根状态下的访问,详见本文最后一张表。确保以适当的安全设置访问任何系统组件寄存器。在错误的安全状态下的任何寄存器都被视为RAZ/WI。
Arm®推荐在访问Utility Bus时遵循以下要求:
- ARCACHEU或AWCACHEU为0b0000或0b0001,尽管其他值也被接受。
- ARBURSTU 或 AWBURSTU 是 0b01,虽然接受其他值。
- ARLOCKU 或 AWLOCKU 设为低电平,因为不存在独占监视器。
下表描述了Utility Bus的接受能力:
1.1.1 核心访问系统组件寄存器
一些系统组件寄存器仅通过Utility Bus上的内存映射访问可用。对于这些寄存器,核心无法直接访问它们。如果需要从核心进行内存映射访问,Arm®建议允许互连提供环回地址映射,以便核心通过互连访问Utility Bus。
下表显示了哪些系统组件可以直接通过系统寄存器访问指令从核心访问,以及哪些可以通过Utility Bus访问。
下图展示了核心通过互连访问Utility Bus的内存映射寻址示例。
1.1.2 集群和核心PPU寄存器访问
当集群断电时,每个核心和集群的电源策略单元(PPU)寄存器仍然可以访问。
如果某个核心没有通电,那么对该核心寄存器(不包括PPU寄存器)的任何访问都会被视为RAZ/WI。同样地,如果集群断电,那么对集群寄存器(不包括PPU寄存器)的任何访问都会被视为RAZ/WI。
注意:
- 集群和每个核心的PPU在集群断电时仍然可以访问。
- 核心的PPU寄存器在该核心断电时仍然可以访问。
1.2 系统组件的基地址
每组系统寄存器分布在独立的64KB页面边界上,允许通过内存管理单元(MMU)进行访问控制。
下表显示了每组系统组件寄存器的基地址以及应从哪个安全状态进行访问。
- 每组核心电源策略单元(PPU)寄存器的基地址取决于核心实例编号,范围从0到CN。
- 在下表中,任何未记录的地址空间都视为RAZ/WI。
- 关于核心寄存器的基地址,它们映射在0x90000到0xF0000之间,请参阅您的核心技术参考手册(TRM)。
- 下表中的基地址是通过Utility Bus接口访问的地址。系统互连通常根据系统地址映射将这些地址映射到特定的地址范围内。因此,软件必须将此处列出的基地址添加到系统地址范围基地址中,以获得寄存器的绝对物理地址。
- 如果核心支持Realm管理扩展(RME)且集群处于直接连接状态,则支持RME。有关RME的更多信息,请参见第30页的2.4.1 Realm管理扩展。