[经验] 深入理解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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值