基本介绍
基于页面的硬件属性 (PBHA:page based hardware attributes) 是一项可选的、由实现定义的功能。
它允许软件在转换表中设置最多四位,然后通过事务通过内存系统传播这些位,并可在系统中用于控制系统组件。这些位的含义特定于系统设计。
有关如何设置和启用转换表中的 PBHA 位的信息,请参阅《Arm® Architecture Reference Manual Armv8, for A-profile architecture》。禁用时,在总线上传播的 PBHA 值为 0。
对于由转换表遍历引起的内存访问,AHTCR、ATTBCR 和 AVTCR 寄存器控制 PBHA 值。
(注:对于aarch64,应该看ATCR_EL1、ATCR_EL2、ATCR_EL3、AVTCR_EL2、ATCR_EL12)
别名不匹配的问题
如果通过多个虚拟地址映射访问同一物理地址,并且映射中的 PBHA 位不同,则结果是不可预测的。总线上发送的 PBHA 值可以用于任一映射
白话总结:
PBHA是一种由SOC厂商实现定义的属性,实现并打开其feature之后,在不同异常级别的虚拟内存访问的时候,不同的系统可以通过改变ATCR_EL1、ATCR_EL2、ATCR_EL3、AVTCR_EL2寄存器的值来控制页表中的PBHA[3:0]比特位,而PBHA[3:0]的四个比特位又可以通过DSU透传到内存系统中去,即在ACE/CHI总线上,也有这4个比特。
注意在cache tag、TLB Tag中也需要有相关比特的支持。
白话再总结:
其实就是操作系统或hypervisor或TF-A 通过对ATCR寄存器的操控,来影响到总线PBHA[3:0]的值,然后整个大系统再根据这几个值做出不同的决策或响应。