作者:郑振宇
根据ARM CPU官方技术手册,ARM CPU的CPU型号、Vendor、版本等信息存于MIDR_EL1
寄存器中:
其中从低至高第0-3 bit表示revision
,代表固件版本的小版本号,如r1p3中的p3;
第4-15 bit表示part number(id)
,代表这款CPU在所在vendor
产品中定义的产品代码,如在HiSilicon
产品中,part_id=0xd01
代表Kunpeng-920
芯片;
第16-19 bit表示architecture
,即架构版本,0x8
即ARMv8;
第20-23 bit表示variant
,即固件版本的大版本号,如r1p3中的r1;
第24-31 bit表示implementer
,即vendor id
,如vendor_id=0x48
表示HiSilicon
。
想要知道一款ARM CPU的具体型号,则需要首先解析vendor_id(implementer)
然后再在该Vendor的所有型号中匹配part_id
,才能获取到具体的信息;这里列出目前系统中已有的Vendor列表和其ID对应关系,以及主流厂商的主要型号映射关系:
Vendor映射关系:
Vendor Name |
Vendor ID |
ARM |
0x41 |
Broadcom |
0x42 |
Cavium |
0x43 |
DigitalEquipment |
0x44 |
HiSilicon |
0x48 |
Infineon |
0x49 |
Freescale |
0x4D |
NVIDIA |
0x4E |
APM |
0x50 |
Qualcomm |
0x51 |
Marvell |
0x56 |
Intel |
0x69 |
型号映射关系
ARM
Part ID |
Model Name |
0xd03 |
Cortex-a53 |
0xd07 |
Cortex-a57 |
0xd08 |
Cortex-a72 |
Broadcom
Part ID |
Model Name |
0x0f |
Brahma B15 |
0x100 |
Brahma B53 |
Cavium
Part ID |
Model Name |
0x0af |
Thunder X2 29xx |
Qualcomm
Part ID |
Model Name |
0xc00 |
Falkor |
HiSilicon
Part ID |
Model Name |
0xd01 |
Kunpeng-920 |