修志龙_ZenonXiu · 2022年12月17日 · 上海市

GIC-CPU的兼容性

https://developer.arm.com/doc...

Arm提供很多CPU和GIC IP,在选择CPU和GIC IP组合时,需要考虑它们的兼容性。我们推荐使用新的CPU采用对应的GIC,以便得到最多的功能支持。

CPUGIC-400GIC-500GIC-600GIC-700
Cortex-A5 Cortex-A7 Cortex-A8 Cortex-A9 Cortex-A15 Cortex-A17GICv2 only不支持不支持不支持
Cortex-A53 Cortex-A57 Cortex-A72 Cortex-A73 Cortex-A32 Cortex-A35 Cortex-A34GICv2 onlyGICv3 and GICv2GICv3 onlyGICv3 only
Cortex-A65不支持不支持GICv3 onlyGICv3 only
Cortex-A75 Cortex-A55 Neoverse N1 Cortex-A76 Cortex-A78GICv2 only (不推荐)不支持GICv3 onlyGICv3 only
Neoverse V1 Neoverse N2GICv2 only (不推荐)不支持GICv3 onlyGICv4.1
Cortex-A510 Cortex-A710 Cortex-A715GICv2 (不推荐)不支持GICv3 onlyGICv4.1

注:Arm CPU构架定义了MPIDR寄存器用来标识CPU ID。 GICv3 Redistributor寄存器GICR_TYPER可以标示是那个Redistributor。在CPU和GIC组合系统中,与一个CPU对应的Redistributor的GICR_TYPE.Affinity_Value应该和CPU的MPIDR的Affinity值匹配。

Cortex-A53 Cortex-A57 Cortex-A72 Cortex-A73 Cortex-A32 Cortex-A35 Cortex-A34 使用MPIDR affinity 1来标识哪个cluster ID, 使用affinity 0来标识cluster里面的哪个CPU。
对于Armv8.2的CPU,它们使用MPIDR affinity 2来标识哪个cluster ID, 使用affinity 1来标识cluster里面的哪个CPU,使用affinity 0来标识CPU里面的哪个hardware thread(目前只有A65和E1支持硬件多线程,其他CPU MPIDR affinity 0固定为0). 但是GIC-500的GICR_TYPE.Affinity_Value只能设置Affinity Level 1 和Affinity Level 0,其Affinity Level 2和Affinity Level 3值固定为0. 因而GIC-500不能和这些Armv8.2 CPU一起使用。

只支持ICC_SRE.SRE设置为1的CPU不能支持GICv3的GICv2模式。

推荐阅读
关注数
8629
内容数
51
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息