作者:郑振宇
根据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 |