ARM技术论坛
直播中

刘静

7年用户 1293经验值
私信 关注
[经验]

深入理解MPIDR_EL1寄存器中的affinity

官方文档(ARM ARM文档)的介绍如下所示

在这里插入图片描述

翻译一下MPIDR_EL1相关的英文,如下所示:

作用:
在多处理器系统中,为调度提供一个额外的PE(process element)识别机制
属性:
MPIDR_EL1是一个64位的寄存器
域值:
[63:40]:Reserved, RES0.
[39:32]:Affinity level 3。有关更多信息,请参阅Aff0的描述。
[31]:Reserved, RES1.
[30]:U。表示一个单处理器系统,与多处理器系统中的pe0不同。这个位的可能值是:
0b0 :处理器是多处理器系统的一部分。
0b1 :处理器是单处理器系统的一部分。
[29:25]:Reserved, RES0.
[24]:MT。指示关联的最低级别是否由使用多线程类型方法实现的逻辑PEs组成。这个位的值可能是:
0b0 当PEs的性能关联级别最低,或者使用MPIDR_EL1.MT的PEs被设置为1时,级别0的不同值或者级别1的相同值或更高级别,是相互独立的
0b1 当PEs的性能关联级别最低,或者使用MPIDR_EL1.MT的PEs被设置为1时,级别0的不同值或者级别1的相同值或更高级别的相关性非常高
[23:16] Affinity level 2.
[15:8] Affinity level 1.
[7:0] Affinity level 0. 这个Affinity等级对于确定PE行为最为重要。更高级别的affinity 等级的重要性越低。分配给MPIDR的值的域的集合{Aff2, Aff1, Aff0}在整个系统中必须是不同的
访问MPIDR_EL1:MRS , MPIDR_EL1

以上总结 :看完了其实还不知所以然。其实也就总结两点:aff0/aff1/aff2/aff3这里的值越小越重要,{Aff3, Aff2, Aff1, Aff0} 这个组合的值要唯一。

我们继续查阅Core TRM手册(以A78 TRM为例),终于找到答案。

在这里插入图片描述

总结一下 ,其实就是:
1、aff0 :表示一个core中的第几个thread,大多数core都是single-threaded core,所以大多数core中的该值是0.
2、aff1:表示一个cluster中的第几个cpu
3、aff2/aff3:表示系统中的第几个cluster,这个值由SOC厂商给core的输入信号决定。

原作者:baron

更多回帖

发帖
×
20
完善资料,
赚取积分