Arm CPU Model
随着AWS使用ARM平台的云主机的逐渐增多,连华为都研发了鲲鹏Arm服务器处理器了。自动armv8进入64位以后,越来越多的跨平台的应用(Java或者Golang)的应用逐渐开始跑在Arm平台了。Hadoop体系的全家桶在Arm平台下运行良好,各种GPU AI加速版也越来越采用Arm平台,低功耗的收益也使Arm平台越来越受欢迎,目前所知三大运营商的大数据平台都是X64和Arm64双备份的,切换毫无压力。
Arm自动进入Armv8以后,就进入了x64的时代,Centos8也原生支持了arm64,虽然比Debian晚了那么几年。有了OS层的支持,加上Arm JDK的蓬勃发展,最新消息是,苹果也要换回Arm了,苹果最早用的是PowePC的处理器,后来转换为Intel的X86平台。目前也在转战Arm的话,能效比看还是吸引人的,目前所知Arm平台在自动驾驶领域肯定是Top1,AI芯片应该是一哥。
目前所知,华为的麒麟和鲲鹏应该是居于公版Armv8进行研发的,三星和高通是魔改的Armv8,当然,这个并不是说华为的技术不如三星和高通,只是将更多的精力放置到了SOC和基带的研发而已,况且三星和高通的魔改的刀工也不行,有时候还真的跑不过公版的设计,就像有些人写Spark用的RDD操作效率和一些新手写DataSet或者Datastream还要慢很多,路漫漫其修远兮,华为慢慢加油吧。
ARM处理器内核
家族 | 架构 | 内核 | 特色 | 缓存 (I/D)/MMU | 常规 MIPS 于 MHz | 应用 |
---|---|---|---|---|---|---|
ARM1 | ARMv1 | ARM1 | 无 | |||
ARM2 | ARMv2 | ARM2 | Architecture 2 加入了MUL(乘法)指令 | 无 | 4 MIPS @ 8MHz | Acorn Archimedes,Chessmachine |
ARMv2a | ARM250 | Integrated MEMC (MMU),图像与IO处理器。Architecture 2a 加入了SWP和SWPB(置换)指令。 | 无,MEMC1a | 7 MIPS @ 12MHz | Acorn Archimedes | |
ARM3 | ARMv2a | ARM2a | 首次在ARM架构上使用处理器缓存 | 均为4K | 12 MIPS @ 25MHz | Acorn Archimedes |
ARM6 | ARMv3 | ARM610 | v3 架构首创支持寻址32位的存储器(针对26比特) | 均为4K | 28 MIPS @ 33MHz | Acorn Risc PC 600,Apple Newton |
ARM7 | ARMv3 | |||||
ARM7TDMI | ARMv4T | ARM7TDMI(-S) | 三级流水线 | 无 | 15 MIPS @ 16.8 MHz | Game Boy Advance,Nintendo DS,iPod |
ARM710T | 均为8KB, MMU | 36 MIPS @ 40 MHz | Acorn Risc PC 700,Psion 5 series,Apple eMate 300 | |||
ARM720T | 均为8KB, MMU | 60 MIPS @ 59.8 MHz | Zipit | |||
ARM740T | MPU | |||||
ARMv5TEJ | ARM7EJ-S | Jazelle DBX | 无 | |||
StrongARM | ARMv4 | |||||
ARM8 | ARMv4 | |||||
ARM9TDMI | ARMv4T | ARM9TDMI | 五级流水线 | 无 | ||
ARM920T | 16KB/16KB, MMU | 200 MIPS @ 180 MHz | Armadillo,GP32,GP2X(第一颗内核), Tapwave Zodiac(Motorola i. MX1) | |||
ARM922T | 8KB/8KB, MMU | |||||
ARM940T | 4KB/4KB, MPU | GP2X(第二颗内核) | ||||
ARM9E | ARMv5TE | ARM946E-S | 可变动,tightly coupled memories, MPU | Nintendo DS,Nokia N-Gage Conexant 802.11 chips | ||
ARM966E-S | 无缓存,TCMs | ST Micro STR91xF,包含Ethernet [1] | ||||
ARM968E-S | 无缓存,TCMs | |||||
ARMv5TEJ | ARM926EJ-S | Jazelle DBX | 可变动,TCMs, MMU | 220 MIPS @ 200 MHz | 移动电话:Sony Ericsson(K, W系列),明基西门子(x65 系列和新版的) | |
ARMv5TE | ARM996HS | 无振荡器处理器 | 无缓存,TCMs, MPU | |||
ARM10E | ARMv5TE | ARM1020E | (VFP),六级流水线 | 32KB/32KB, MMU | ||
ARM1022E | (VFP) | 16KB/16KB, MMU | ||||
ARMv5TEJ | ARM1026EJ-S | Jazelle DBX | 可变动,MMU or MPU | |||
XScale | ARMv5TE | 80200/IOP310/IOP315 | I/O处理器 | |||
80219 | 400/600MHz | Thecus N2100 | ||||
IOP321 | 600 BogoMips @ 600 MHz | Iyonix | ||||
IOP33x | ||||||
IOP34x | 1-2核,RAID加速器 | 32K/32K L1, 512K L2, MMU | ||||
PXA210/PXA250 | 应用处理器,七级流水线 | Zaurus SL-5600 | ||||
PXA255 | 32KB/32KB, MMU | 400 BogoMips @ 400 MHz | Gumstix,Palm Tungsten E2 | |||
PXA26x | 可达 400 MHz | Tungsten T3 | ||||
PXA27x | 800 MIPS @ 624 MHz | HTC Universal、Zaurus SL-C1000、3000、3100、3200、Dell Axim x30、x50和 x51 系列 | ||||
PXA800(E)F | ||||||
Monahans | 1000 MIPS @ 1.25 GHz | Mavell PXA300/PXA310/PXA320, Max frequency : PXA300@624Mhz, PXA310/PXA320@806Mhz | ||||
PXA900 | Blackberry 8700, Blackberry Pearl (8100) | |||||
IXC1100 | Control Plane Processor | |||||
IXP2400/IXP2800 | ||||||
IXP2850 | ||||||
IXP2325/IXP2350 | ||||||
IXP42x | NSLU2 | |||||
IXP460/IXP465 | ||||||
ARM11 | ARMv6 | ARM1136J(F)-S | SIMD, Jazelle DBX, (VFP),八级流水线 | 可变动,MMU | ?? @ 532-665MHz (i.MX31 SoC) | Nokia N93,Zune,Nokia N800 |
ARMv6T2 | ARM1156T2(F)-S | SIMD, Thumb-2, (VFP),九级流水线 | 可变动,MPU | |||
ARMv6KZ | ARM1176JZ(F)-S | SIMD, Jazelle DBX, (VFP) | 可变动,MMU+TrustZone | |||
ARMv6K | ARM11 MPCore | 1-4核对称多处理器,SIMD, Jazelle DBX, (VFP) | 可变动,MMU | |||
Cortex-A (32 bit) | ARMv7-A | Cortex-A7 | 1.75 DMIPS/MHz 1 GHz到1.2GHz | 全志a31、MediaTek MT6589,MT6572、Hisilicon Hi3516, Hi3556V200, Hi3559V200、Rockchip RV1109, RV1126 | ||
Cortex-A8 | Application profile, VFP, NEON, Jazelle RCT, Thumb-2, 13-stage pipeline | 可变动 (L1+L2), MMU+TrustZone | 2.0 DMIPS/MHz 从600 MHz到超过1 GHz | Texas Instruments OMAP3、Apple A4 | ||
Cortex-A9 | 2.50 DMIPS @ 1GHz | Apple A5、Apple A5X、MediaTek MT6577,MT6575、Rockchip RK3088,RK3188 VIA Elite-E1000 | ||||
Cortex-A12 | 大约3.00 DMIPS @ 1.4GHz 28nm | 预估等同Apple A6、Apple A6X水平。 | ||||
Cortex-A15 | Thumb-2 TrustZone® NEON DSP & SVFPv4 | 从3.50 DMIPS到超过4.0 DMIPS @ 从1.4MHz到超过2.5GHz | Tegra 4 Exynos5250 | |||
Cortex-A9 MPCore | ||||||
Cortex-R | ARMv7-R | Cortex-R4(F) | Embedded profile, (FPU) | 可变动缓存,MMU可选配 | 600 DMIPS | Broadcom is a user |
Cortex-M | ARMv7-M | Cortex-M3 | Microcontroller profile | 无缓存,(MPU) | 120 DMIPS @ 100MHz | Luminary Micro[2] 微控制器家族 |
ARMv6-M | Cortex-M0 | |||||
Cortex-M1 | ||||||
ARMv7-ME | Cortex-M4 | Optional 8 region MPU with sub regions and background region | 1.25 DMIPS/MHz | |||
家族 | 架构 | 内核 | 特色 | 缓存 (I/D)/MMU | 常规 MIPS 于 MHz | 应用 |
ARM核心时间线
下表列出每个核心发布年份[21][22]。未包括ARM7之前的核心。
年份 | 经典核心 | Cortex核心 | |||||||
---|---|---|---|---|---|---|---|---|---|
ARM7 | ARM8 | ARM9 | ARM10 | ARM11 | 微控制器 | 实时 | 应用 (32位) | 应用 (64位) | |
1993 | ARM700 | ||||||||
1994 | ARM710 ARM7DI ARM7TDMI | ||||||||
1995 | ARM710a | ||||||||
1996 | ARM810 | ||||||||
1997 | ARM710T ARM720T ARM740T | ||||||||
1998 | ARM9TDMI ARM940T | ||||||||
1999 | ARM9E-S ARM966E-S | ||||||||
2000 | ARM920T ARM922T ARM946E-S | ARM1020T | |||||||
2001 | ARM7TDMI-S ARM7EJ-S | ARM9EJ-S ARM926EJ-S | ARM1020E ARM1022E | ||||||
2002 | ARM1026EJ-S | ARM1136J(F)-S | |||||||
2003 | ARM968E-S | ARM1156T2(F)-S ARM1176JZ(F)-S | |||||||
2004 | Cortex-M3 | ||||||||
2005 | ARM11MPCore | Cortex-A8 | |||||||
2006 | ARM996HS | ||||||||
2007 | Cortex-M1 | Cortex-A9 | |||||||
2008 | |||||||||
2009 | Cortex-M0 | Cortex-A5 | |||||||
2010 | Cortex-M4(F) | Cortex-A15 | |||||||
2011 | Cortex-R4 Cortex-R5 Cortex-R7 | Cortex-A7 | |||||||
2012 | Cortex-M0+ | Cortex-A53 Cortex-A57 | |||||||
2013 | Cortex-A12 | ||||||||
2014 | Cortex-M7(F) | Cortex-A17 | |||||||
2015 | Cortex-A35 Cortex-A72 | ||||||||
2016 | Cortex-M23 Cortex-M33(F) | Cortex-R8 Cortex-R52 | Cortex-A32 | Cortex-A73 | |||||
2017 | Cortex-A55 Cortex-A75 | ||||||||
2018 | Cortex-M35P | Cortex-A76 |
ARM内核的授权与应用
ARM内核 | 设备 | 产品 |
---|---|---|
ARM1 | ARM1 | BBC Micro的ARM Evaluation System第二处理器 |
ARM2 | ARM2 | Acorn Archimedes、Chessmachine |
ARM250 | ARM250 | Acorn Archimedes |
ARM3 | ARM3 | Acorn Archimedes |
ARM60 | ARM60 | 3DO Interactive Multiplayer、Zarlink GPS Receiver |
ARM610 | ARM610 | Acorn Risc PC 600、Apple Newton 100 series |
ARM700 | ARM700 | Acorn Risc PC prototype CPU card |
ARM710 | ARM710 | Acorn Risc PC 700 |
ARM7TDMI(-S) | Atmel AT91SAM7、恩智浦半导体LPC2000及LH754xx、Actel CoreMP7 | Game Boy Advance、Nintendo DS、Apple iPod、Lego NXT, Juice Box、Garmin导航设备(1990s – early 2000s) |
ARM710a | ARM7100、ARM 7500和ARM7500FE | Acorn Risc PC 700、Apple eMate 300、Psion Series 5(ARM7100)、Acorn A7000(ARM7500)、Acorn A7000+(ARM7500FE)、Acorn Network Computer(ARM7500FE) |
StrongARM | Digital SA-110, SA-1100, SA-1110 | SA-110: Apple Newton 2x00 series、Acorn Risc PC、Rebel/Corel Netwinder、Chalice CATS,SA-1100: Psion netBook,SA-1110: LART、Intel Assabet、Ipaq H36x0、Balloon2、Zaurus SL-5x00、HP Jornada 7xx、Jornada 560 series、Palm Zire 31 |
ARM810 | Acorn Risc PC prototype CPU card | |
ARM710T | Psion Series 5mx、Psion Revo/Revo Plus/Diamond Mako | |
ARM720T | 恩智浦半导体LH7952x | Zipit Wireless Messenger |
ARM940T | GP2X(second core)、Meizu M6 Mini Player[23][24] | |
ARM966E-S | 意法半导体STR91xF[25] | |
ARM920T | Atmel AT91RM9200、AT91SAM9、Cirrus Logic EP9302、EP9307、EP9312、EP9315、Samsung S3C2442 and S3C2410 | Armadillo、GP32、GP2X(first core)、Tapwave Zodiac(Motorola i.MX1)、Hewlett-Packard HP-49/50 Calculators、Sun SPOT、HTC TyTN、FIC Neo FreeRunner[26])、Garmin导航设备(mid–late 2000s)、TomTom导航设备[27] |
ARM922T | 恩智浦半导体LH7A40x | |
ARM926EJ-S | 新唐科技(Nuvoton)NuMicro Family,[28]德州仪器OMAP1710、OMAP1610、OMAP1611、OMAP1612、OMAP-L137、OMAP-L138;Qualcomm MSM6100、MSM6125、MSM6225、MSM6245、MSM6250、MSM6255A、MSM6260、MSM6275、MSM6280、MSM6300、MSM6500、MSM6800;Freescale i.MX21、i.MX27、i.MX28、Atmel AT91SAM9、恩智浦半导体、Samsung S3C2412 LPC30xx, NEC C10046F5-211-PN2-A SoC –未文件化的内核有可能将ATi Hollywood绘图芯片用于Wii,[[29]](https://zh.wikipedia.org/wiki/ARM架構#cite_note-29)Telechips TCC7801、TCC7901、[ZiiLABS](https://zh.wikipedia.org/wiki/ZiiLABS) ZMS-05、[Rockchip](https://zh.wikipedia.org/w/index.php?title=Rockchip&action=edit&redlink=1) RK2806及RK2808、[NeoMagic](https://zh.wikipedia.org/w/index.php?title=NeoMagic&action=edit&redlink=1) MiMagic Family MM6、MM6+、MM8、MTV;[全志科技](https://zh.wikipedia.org/wiki/全志科技)F-serial(F1E200/F1C100、F20、F13、F10、F18)[[30]](https://zh.wikipedia.org/wiki/ARM架構#cite_note-30);[信骅科技ASPEED](http://www.aspeedtech.com/)([页面存档备份](https://web.archive.org/web/20140925222136/http://www.aspeedtech.com/),存于[互联网档案馆](https://zh.wikipedia.org/wiki/互联网档案馆)) (AST1510、AST2050、AST2150、AST2300/1050、AST2400/1250、AST3100)[[31]](https://zh.wikipedia.org/wiki/ARM架構#cite_note-31). | 移动电话:Sony Ericsson(K, W series);Siemens以及Benq(x65系列和更新版本);LG Arena;GPH Wiz;Squeezebox Duet Controller (Samsung S3C2412)。Squeezebox Radio;Buffalo TeraStation Live (NAS); Drobo FS (NAS),Western Digital MyBook I World Edition;Western Digital MyBook II World Edition;Seagate FreeAgent DockStar STDSD10G-RK;Seagate FreeAgent GoFlex Home;Chumby Classic |
ARM946E-S | Nintendo DS、Nokia N-Gage、Canon PowerShot A470、Canon EOS 5D Mark II,[32]Conexant 802.11 chips、Samsung S5L2010 | |
XScale | Intel 80200、80219、PXA210、PXA250、PXA255、PXA263、PXA26x、PXA27x、PXA3xx、PXA900、IXC1100、IXP42x | 80219: Thecus N2100,OP321: Iyonix,PXA210/PXA250: Zaurus SL-5600、iPAQ H3900、Sony CLIÉ NX60、NX70V、NZ90,PXA255: Gumstix basix & connex、Palm Tungsten E2、Zaurus SL-C860、Mentor Ranger & Stryder、iRex ILiad,PXA263: Sony CLIÉ NX73V, NX80V,PXA26x: Tungsten T3,PXA27x: Gumstix verdex、“Trizeps-Modules”(页面存档备份,存于互联网档案馆)、“eSOM270-Module”(页面存档备份,存于互联网档案馆),PXA270 COM、HTC Universal、HP hx4700、Zaurus SL-C1000、3000、3100、3200、Dell Axim x30、x50、and x51 series、Motorola Q、Balloon3、Trolltech Greenphone、Palm TX、Motorola Ezx Platform A728、A780、A910、A1200、E680、E680i、E680g、E690、E895、Rokr E2、Rokr E6、Fujitsu Siemens LOOX N560、Toshiba Portégé G500、Trēo 650-755p、Zipit Z2、HP iPaq 614c Business Navigator、I-mate PDA2,PXA3XX: Samsung Omnia、Samsung SGH-i780,PXA900: Blackberry 8700、Blackberry Pearl(8100),IXP42x: NSLU2 |
ARM1026EJ-S | Conexant so4610以及so4615 ADSL SoC | |
ARM1136J(F)-S | 德州仪器OMAP2420, Qualcomm MSM7200, MSM7201A, MSM7227, Freescale i.MX31以及MXC300-30 | OMAP2420: Nokia E90、Nokia N93、Nokia N95、Nokia N82、Zune、BUGbase,[33]Nokia N800、Nokia N810,Motorola Q9 Freescale i.MX31: original Zune 30 GB, Toshiba Gigabeat S and Kindle DX ,Freescale MXC300-30 :Nokia E63、Nokia E71、Nokia 5800、Nokia E51、Nokia 6700 Classic、Nokia 6120 Classic、Nokia 6210 Navigator、Nokia 6220 Classic、Nokia 6290、Nokia 6710 Navigator、Nokia 6720 Classic、Nokia E75、Nokia N97、Nokia N81 Qualcomm MSM7200: Eten Glofiish、HTC TyTN II、HTC Nike,Qualcomm MSM7201A: HTC Dream、HTC Magic、Motorola i1、Motorola Z6、HTC Hero、Samsung SGH-i627 (Propel Pro)、Sony Ericsson Xperia X10 Mini Pro,Qualcomm MSM7227: ZTE Link, HTC Legend、HTC Aria、Viewsonic ViewPad 7[[34]](https://zh.wikipedia.org/wiki/ARM架構#cite_note-34)[[35]](https://zh.wikipedia.org/wiki/ARM架構#cite_note-35) |
ARM968E-S | 恩智浦半导体LPC29xx | |
ARM1176JZ(F)-S | Conexant CX2427X、Nvidia GoForce 6100;[36];Telechips TCC9101、TCC9201、TCC8900;Fujitsu MB86H60;Samsung S3C6410、S3C6430、[37];Qualcomm MSM7627;Infineon X-GOLD 213;MediaTek MT6573;信骅科技ASPEED(页面存档备份,存于互联网档案馆)(AST1520、AST2500、AST3200);Broadcom BCM2835、BCM21553 | Apple iPhone (original and 3G)、Apple iPod touch (1st and 2nd Generation)、Motorola RIZR Z8、Motorola RIZR Z10、Nintendo 3DS S3C6410: Samsung Omnia II、Samsung Moment、Samsung M910 Intercept、SmartQ 5, Qualcomm MSM7627: Palm Pixi、LG Optimus V(VM670)Motorola Calgary/Devour MediaTek MT6573: Lenovo-A60 BCM2835: Raspberry Pi |
ARM11 MPCore | Nvidia APX 2500(Tegra) |
1.ArmV7 -> ArmV8
ArmV7 -> ArmV8 : 新增64位指令集,可以跑Arm64和Arm32,4G以上大内存有了新用途,服务器行业可以使用了
特性 | ARM V8 | ARM V7 |
---|---|---|
指令集 | 64位指令集 AArch64, 并且兼容32位指令集 AArch32 | 32位指令集 A32 和16位指令集 T16 |
支持地址长度 | 64位 | 32位 |
通用寄存器 | 31个 x0-x30(64位)或者 w0-w30(32位) | 15个, r0-r14 (32位) |
异常模式 | 4层结构 EL0-EL3 | 2层结构vector table |
NEON | 默认支持 | 可选支持 |
LAPE | 默认支持 | 可选支持 |
Virtualization | 默认支持 | 可选支持 |
big.LITTLE | 支持 | 支持 |
TrustZone | 默认支持 | 默认支持 |
SIMD寄存器 | 32个 X 128位 | 32个 X 64位 |
Company | Core | Released | Revision | Decode | Pipeline depth | Out-of-order execution | Branch prediction | big.LITTLE role | Exec. ports | SIMD | Fab (in nm) | Simult. MT | L0 cache | L1 cache Instr + Data (in KiB) | L2 cache | L3 cache | Core configu- rations | DMIPS/ MHz[note 1] | ARM part number (in the main ID register) | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Have it | Entries | |||||||||||||||||||
ARM Holdings | Cortex-A32 (32-bit)[1] | 2017 | ARMv8.0-A (only 32-bit) | 2-wide | 8 | No | 0 | LITTLE | ? | 28[2] | No | No | 8–64 + 8–64 | 0–1 MiB | No | 1-4+ | 0xD01 | |||
Cortex-A34 (64-bit)[3] | 2019 | ARMv8.0-A (only 64-bit) | 2-wide | 8 | No | 0 | LITTLE | ? | No | No | 8–64 + 8–64 | 0–1 MiB | No | 1-4+ | 0xD02 | |||||
Cortex-A35[4] | 2017 | ARMv8.0-A | 2-wide[5] | 8 | No | 0 | Yes | LITTLE | ? | 28 / 16 / 14 / 10 | No | No | 8–64 + 8–64 | 0 / 128 KiB–1 MiB | No | 1–4+ | 1.78 | 0xD04 | ||
Cortex-A53[6] | 2014 | ARMv8.0-A | 2-wide | 8 | No | 0 | Conditional+ Indirect branch prediction | big/LITTLE | 2 | 28 / 20 / 16 / 14 / 10 | No | No | 8–64 + 8–64 | 128 KiB–2 MiB | No | 1–4+ | 2.24 | 0xD03 | ||
Cortex-A55[7] | 2017 | ARMv8.2-A | 2-wide | 8 | No | 0 | big/LITTLE | 2 | 28 / 20 / 16 / 14 / 12 / 10 / 5[8] | No | No | 16–64 + 16–64 | 0–256 KiB/core | 0–4 MiB | 1–8+ | 2.65[9] | 0xD05 | |||
Cortex-A57[10] | 2013 | ARMv8.0-A | 3-wide | 15 | Yes 3-wide dispatch | Two-level | big | 8 | 28 / 20 / 16[11] / 14 | No | No | 48 + 32 | 0.5–2 MiB | No | 1–4+ | 4.6 | 0xD07 | |||
Cortex-A65[12] | 2019 | ARMv8.2-A | ? | ? | Yes | Two-level | ? | 2 | ? | No | No | ? | ? | ? | ? | ? | 0xD06 | |||
Cortex-A65AE[13] | 2019 | ARMv8.2-A | ? | ? | Yes | Two-level | ? | 2 | ? | SMT2 | No | 16-64 + 16-64 | 64-256 KiB | 0-4 MB | 1–8 | ? | 0xD43 | |||
Cortex-A72[14] | 2015 | ARMv8.0-A | 3-wide | 15 | Yes 5-wide dispatch | Two-level | big | 8 | 28 / 16 | No | No | 48 + 32 | 0.5–4 MiB | No | 1–4+ | 4.72 | 0xD08 | |||
Cortex-A73[15] | 2016 | ARMv8.0-A | 2-wide | 11–12 | Yes 4-wide dispatch | Two-level | big | 7 | 28 / 16 / 10 | No | No | 64 + 32/64 | 1–8 MiB | No | 1–4+ | ~6.35 | 0xD09 | |||
Cortex-A75[7] | 2017 | ARMv8.2-A | 3-wide | 11–13 | Yes 6-wide dispatch | Two-level | big | 8? | 28 / 16 / 10 | No | No | 64 + 64 | 256–512 KiB/core | 0–4 MiB | 1–8+ | 8.2-9.5[16] | 0xD0A | |||
Cortex-A76[17] | 2018 | ARMv8.2-A | 4-wide | 11–13 | Yes 8-wide dispatch | 128 | Two-level | big | 8 | 10 / 7 | No | No | 64 + 64 | 256–512 KiB/core | 1–4 MiB | 1–4 | 10.7-12.4[18] | 0xD0B | ||
Cortex-A76AE[19] | 2018 | ARMv8.2-A | ? | ? | Yes | 128 | Two-level | big | ? | ? | SMT2 | No | ? | ? | ? | ? | ? | 0xD0E | ||
Cortex-A77[20] | 2019 | ARMv8.2-A | 4-wide | 11–13 | Yes 10-wide dispatch | 160 | Two-level | big | 12 | 2*128b | 7 | No | 1.5K entries | 64 + 64 | 256–512 KiB/core | 1–4 MiB | 1-4 | ? | 0xD0D | |
Cortex-A78[21][22] | 2020 | ARMv8.2-A | 4-wide | Yes | 160 | Yes | big | 13 | 2*128b | No | 1.5K entries | 32/64 + 32/64 | 256–512 KiB/core | 1–4 MiB | 1-4 | ? | 0xD41 | |||
Cortex-X1[23] | 2020 | ARMv8.2-A | 5-wide[23] | ? | Yes | 224 | Yes | big | 15 | 4*128b | No | 3K entries | 64 + 64 | up to 1 MiB[23] | up to 8 MiB[23] | custom[23] | ? | 0xD44 | ||
Apple Inc. | Cyclone[24] | 2013 | ARMv8.0-A | 6-wide[25] | 16[25] | Yes[25] | 192 | Yes | No | 9[25] | 28[26] | No | No | 64 + 64[25] | 1 MiB[25] | 4 MiB[25] | 2[27] | ? | ||
Typhoon | 2014 | ARMv8.0‑A | 6-wide[28] | 16[28] | Yes[28] | Yes | No | 9 | 20 | No | No | 64 + 64[25] | 1 MiB[28] | 4 MiB[25] | 2, 3 (A8X) | ? | ||||
Twister | 2015 | ARMv8.0‑A | 6-wide[28] | 16[28] | Yes[28] | Yes | No | 9 | 16 / 14 | No | No | 64 + 64[28] | 3 MiB[28] | 4 MiB[28] No (A9X) | 2 | ? | ||||
Hurricane | 2016 | ARMv8.1‑A | 6-wide[29] | 16 | Yes | “big” (In A10/A10X paired with “LITTLE” Zephyr cores) | 9 | 16 (A10) 10 (A10X) | No | No | 64 + 64[30] | 3 MiB[30] (A10) 8 MiB (A10X) | 4 MiB[30] (A10) No (A10X) | 2x Hurricane + 2x Zephyr (A10) 3x Hurricane + 3x Zephyr (A10X) | ? | |||||
Zephyr | 2016 | ARMv8.1‑A | 3-wide | 12 | Yes | LITTLE | 5 | 16 (A10) 10 (A10X) | No | No | 32 + 32[31] | 1 MiB | 4 MiB[30] (A10) No (A10X) | 2x Hurricane + 2x Zephyr (A10) 3x Hurricane + 3x Zephyr (A10X) | ? | |||||
Monsoon | 2017 | ARMv8.2‑A[32] | 7-wide | 16 | Yes | “big” (In Apple A11 paired with “LITTLE” Mistral cores) | 13 | 10 | No | No | 64 + 64[31] | 8 MiB | No | 2x Monsoon + 4× Mistral | ? | |||||
Mistral | 2017 | ARMv8.2‑A[32] | 3-wide | 12 | Yes | LITTLE | 5 | 10 | No | No | 32 + 32[31] | 1 MiB | No | 2x Monsoon + 4× Mistral | ? | |||||
Vortex | 2018 | ARMv8.3‑A[33] | 7-wide | 16 | Yes | “big” (In Apple A12/Apple A12X/Apple A12Z paired with “LITTLE” Tempest cores) | 13 | 7 | No | No | 128 + 128[31] | 8 MiB | No | 2x Vortex + 4x Tempest (A12) 4x Vortex + 4x Tempest (A12X/A12Z) | ? | |||||
Tempest | 2018 | ARMv8.3‑A[33] | 3-wide | 12 | Yes | LITTLE | 5 | 7 | No | No | 32 + 32[31] | 2 MiB | No | 2x Vortex + 4x Tempest (A12) 4x Vortex + 4x Tempest (A12X/A12Z) | ? | |||||
Lightning | 2019 | ARMv8.4‑A [34] | 8-wide | 16 | Yes | 560 | “big” (In Apple A13 paired with “LITTLE” Thunder cores) | 13 | 7 | No | No | 128 + 128[35] | 8 MiB | No | 2x Lightning + 4x Thunder | ? | ||||
Thunder | 2019 | ARMv8.4‑A [36] | 3-wide | 12 | Yes | LITTLE | 5 | 7 | No | No | 96 + 48[37] | 4 MiB | No | 2x Lightning + 4x Thunder | ? | |||||
Firestorm | 2020 | ARMv8.5‑A | 8-wide[38] | 630[39] | 5 | No | 2x Firestorm + 4x Icestorm | ? | ||||||||||||
Icestorm | 2020 | ARMv8.5‑A | 5 | No | 2x Firestorm + 4x Icestorm | ? | ||||||||||||||
Nvidia | Denver[40][41] | 2014 | ARMv8‑A | 2-wide hardware decoder, up to 7-wide variable- length VLIW micro-ops | 13 | Not if the hardware decoder is in use. Can be provided by dynamic software translation into VLIW. | Direct+ Indirect branch prediction | No | 7 | 28 | No | No | 128 + 64 | 2 MiB | No | 2 | ? | |||
Denver 2[42] | 2016 | ARMv8‑A | ? | 13 | Not if the hardware decoder is in use. Can be provided by dynamic software translation into VLIW. | Direct+ Indirect branch prediction | “Super” Nvidia’s own implementation | ? | 16 | No | No | 128 + 64 | 2 MiB | No | 2 | ? | ||||
Carmel | 2018 | ARMv8.2‑A | ? | Direct+ Indirect branch prediction | ? | 12 | No | No | 128 + 64 | 2 MiB | (4 MiB @ 8 cores) | 2 (+ 8) | ? | |||||||
Cavium | ThunderX[43][44] | 2014 | ARMv8-A | 2-wide | 9[44] | Yes[43] | Two-level | ? | 28 | No | No | 78 + 32[45][46] | 16 MiB[45][46] | No | 8–16, 24–48 | ? | ||||
ThunderX2 [47](ex. Broadcom Vulcan[48]) | 2018[49] | ARMv8.1-A [50] | 4-wide “4 μops”[51][52] | ? | Yes[53] | Multi-level | ? | ? | 16[54] | SMT4 | No | 32 + 32 (data 8-way) | 256 KiB per core[55] | 1 MiB per core[55] | 16-32[55] | ? | ||||
Marvell | ThunderX3 | 2020[56] | ARMv8.3+[56] | 8-wide | ? | Yes 4-wide dispatch | Multi-level | ? | 7 | 7[56] | SMT4[56] | ? | 64 + 32 | 512 KiB per core | 90 MiB | 60 | ? | |||
AppliedMicro | Helix | 2014 | ? | ? | ? | ? | ? | ? | ? | 40 / 28 | No | No | 32 + 32 (per core; write-through w/parity)[57] | 256 KiB shared per core pair (with ECC) | 1 MiB/core | 2, 4, 8 | ? | |||
X-Gene | 2013 | ? | 4-wide | 15 | Yes | ? | ? | ? | 40[58] | No | No | 8 MiB | 8 | 4.2 | ||||||
X-Gene 2 | 2015 | ? | 4-wide | 15 | Yes | ? | ? | ? | 28[59] | No | No | 8 MiB | 8 | 4.2 | ||||||
X-Gene 3[59] | 2017 | ? | ? | ? | ? | ? | ? | ? | 16 | No | No | ? | ? | 32 MiB | 32 | ? | ||||
Qualcomm | Kryo | 2016 | ARMv8-A | ? | ? | Yes | Two-level? | “big” or “LITTLE” Qualcomm’s own similar implementation | ? | 14[60] | No | No | 32+24[61] | 0.5–1 MiB | 2, 4 | 6.3 | ||||
Kryo 2XX | 2017 | ARMv8-A | 2-wide | 11–12 | Yes 7-wide dispatch | Two-level | big | 7 | 14 / 11 / 10 [62] | No | No | 64 + 32/64? | 512 KiB/Gold Core | No | 4 | ? | ||||
2-wide | 8 | No | 0 | Conditional+ Indirect branch prediction | ? | 2 | 8–64? + 8–64? | 256 KiB/Silver Core | 4 | ? | ||||||||||
Kryo 3XX | 2018 | ARMv8.2-A | 3-wide | 11–13 | Yes 8-wide dispatch | Two-level | big | 8 | 10[62] | No | No | 64+64[62] | 256 KiB/Gold Core | 2 MiB | 4 | ? | ||||
2-wide | 8 | No | 0 | Conditional+ Indirect branch prediction | ? | 28 | 16–64? + 16–64? | 128 KiB/Silver | 4 | ? | ||||||||||
Kryo 4XX | 20182019 | ARMv8.2-A | 4-wide | 11–13 | Yes 8-wide dispatch | Yes | big | 8 | 11 / 8 / 7 | No | No | 64 + 64 | 512 KiB/Gold Prime256 KiB/Gold | 2 MiB | 1+3 | ? | ||||
2-wide | 8 | No | 0 | Conditional+ Indirect branch prediction | ? | 2 | 16–64? + 16–64? | 128 KiB/Silver | 4 | ? | ||||||||||
Kryo 5XX | 2019 | ARMv8.2-A | 4-wide | 11–13 | Yes 8-wide dispatch | Yes | big | 8 | No | ? | 512 KiB/Gold Prime256 KiB/Gold | 3 MiB | 1+3 | |||||||
2-wide | 8 | No | 0 | Conditional+ Indirect branch prediction | 2 | ? | 128 KiB/Silver | 4 MiB | ||||||||||||
Kryo 6XX | 2020 | ARMv8.2-A | Yes | big | ? | 64 + 64 | 1024 KiB/Gold Prime512 KiB/Gold | 4 MiB | 1+3+4 | |||||||||||
Falkor[63][64] | 2017[65] | “ARMv8.1-A features”;[64] AArch64 only (not 32-bit)[64] | 4-wide | 10–15 | Yes 8-wide dispatch | Yes | ? | 8 | 10 | No | 24 KiB | 88[64] + 32 | 500KiB | 1.25MiB | 40-48 | ? | ||||
Samsung | M1[66][67] | 2015 | ARMv8-A | 4-wide | 13[68] | Yes 9-wide dispatch[69] | 96 | big | 8 | 14 | No | No | 64 + 32 | 2 MiB[70] | no | 4 | ? | |||
M2[66][67] | 2017 | ARMv8-A | 100 | Two-level | big | 10 | 64 + 64 | |||||||||||||
M3[68][71] | 2018 | ARMv8.2-A | 6-wide | 15 | Yes 12-wide dispatch | 228 | Two-level | big | 12 | 10 | No | No | 64 + 64 | 512 KiB per core | 4096KB | 4 | ? | |||
M4[72] | 2019 | ARMv8.2-A | 6-wide | 15 | Yes 12-wide dispatch | 228 | Two-level | big | 12 | 8 / 7 | No | No | 64 + 64 | 512 KiB per core | 4096KB | 2 | ? | |||
M5[73] | 2020 | Yes 12-wide dispatch | 228 | Two-level | big | No | 64 + 64 | |||||||||||||
Fujitsu | A64FX[74][75] | 2019 | ARMv8.2-A | 4/2-wide | 7+ | Yes 5-way? | Yes | n/a | 8+ | 512b[76] | 7 | No | No | 64 + 64 | 8MiB per 12+1 cores | No | 48+4 | 1.9GHz+; 15GF/W+. | ||
HiSilicon | TaiShan V110[77] | 2019 | ARMv8.2-A | 4-wide | ? | Yes | n/a | 8 | 7 | No | No | 64 + 64 | 512 KiB per core | 1 MiB per core | ? | ? | ||||
Company | Core | Released | Revision | Decode | Pipeline depth | Out-of-order execution | Branch prediction | big.LITTLE role | Exec. ports | SIMD | Fab (in nm) | Simult. MT | L0 ca |
2.ArmV8 -> ArmV9
ArmV8 -> ArmV9:安全性升级
安全性升级对于 Armv9 来说,其重要性相当于 64 位对于 Armv8。
自 2011 年 10 月 Arm 首次公布 Armv8 架构以来,已经有近 10 年的时间了,这是计算领域相当多变的 10 年,因为指令集架构通过移动领域到服务器领域的应用越来越多,现在开始在笔记本电脑和即将到来的台式机等消费设备市场上普及。这些年来,Arm 对 ISA 进行了各种更新和扩展,有些是重要的,有些也许很容易被忽略。
作为 Arm Vision Day 活动的一部分,Arm 公布了全新的 Armv9 架构,为 Arm 希望在未来十年成为下一代 3000 亿颗芯片的计算平台奠定基础。
Armv9 与 Armv8 到底有什么区别,才会在 ISA 的命名上有如此大的跳跃?
外媒分析称,说实话,单纯从 ISA 的角度来看,v9 可能并不像 v8 相比 v7 那样有根本性的跳跃,v8 曾用 AArch64 引入了完全不同的执行模式和指令集,而 AArch64 比 AArch32 有更大的微观架构影响,比如扩展寄存器、64 位虚拟地址空间等许多改进。
Armv9 延续了 AArch64 作为基准指令集的使用,然而在功能上增加了一些非常重要的扩展,值得在架构编号上做一个增量,可能让 Arm 也实现了一种软件的重新垒砌,不仅是新的 v9 功能,也包括我们这些年看到的各种 v8 扩展的发布。
Armv9 拥有三大新支柱,Arm 认为新架构的主要目标是:安全、AI 以及改进矢量和 DSP 能力。安全性是 v9 的一个非常大的话题,值得更深入地介绍新的扩展和功能细节,但谈到 DSP 和 AI 功能,可以是很直接的。
承诺与 Armv9 兼容的新 CPU 最大的新特性可能是开发者和用户马上就能看到的,那就是 SVE2 作为 NEON 的后续产品的基线。
可伸缩矢量扩展,也就是 SVE,在第一次实现的时候,早在 2016 年就宣布了,并首次在富士通的 A64FX CPU 核心中实现,现在日本的世界第一超级计算机 Fukagu 就采用了 SVE。SVE 的问题在于,这个新的可变向量长度 SIMD 指令集的首次迭代范围相当有限,而且更多的是针对 HPC 工作负载,缺少了许多通用性较强的指令,而这些指令仍然被 NEON 所覆盖。
SVE2 早在 2019 年 4 月就公布了,希望通过补充新的可扩展 SIMD 指令集所需的指令来解决这个问题,以服务于目前仍在使用 NEON(指 128 位 SIMD 单指令多数据扩展结构)的更多样的 DSP 类工作负载。
SVE 和 SVE2 除了增加各种现代 SIMD(单指令多数据)能力之外,好处在于它们的可变向量大小,从 128b 到 2048b 不等,允许可变 128b 粒度的向量,而不管实际硬件运行在什么地方。纯粹从矢量处理和编程的角度来看,这意味着软件开发者只需要编译一次代码,如果未来 CPU 会出现比如原生 512b 的 SIMD 执行流水线,代码就已经可以利用单位的全部宽度了。另外,同样的代码也能在更保守的设计上运行,并具有更低的硬件执行宽度能力,这对 Arm 公司来说非常重要,因为他们设计了从物联网、移动设备到数据中心的 CPU。此外,它还能在 Arm 架构的 32b 编码空间内完成所有这些工作,而在 x86 上的其他实现则必须根据向量大小增加新的扩展和指令。
机器学习也被视为 Armv9 的一个重要部分,因为 Arm 看到未来几年越来越多的 ML 工作负载将变得普遍。在专用加速器上运行 ML 工作负载自然仍然是性能或能效关键的要求,然而,仍然会有大量新的较小范围的 ML 工作负载采用,这些工作负载将在 CPU 上运行。
矩阵乘法指令是这里的关键,并将代表着在整个生态系统中看到更大规模采用的重要一步,作为 v9 CPU 的基线功能。
一般来说,SVE2 可能是保证跳转到 v9 命名法的最重要因素,因为它是一个更明确的 ISA 功能,在日常使用中区别于 v8 CPU,这将保证软件生态系统去实际分化现有的 v8 堆栈。这其实已经成为 Arm 在服务器领域的一个相当大的问题,因为软件生态系统仍然是以 v8.0 为基础的软件包,可惜缺少了最重要的 v8.1 大系统扩展。
让整个软件生态系统向前发展,并且能够假设新的 v9 硬件具有新架构扩展的能力,这将有助于推动事情的发展,可能会解决目前的一些情况。
然而 v9 不仅仅是 SVE2 和新的指令,它还有一个非常大的重点就是安全,在这里我们会看到一些比较彻底的变化。
新的 Arm 保密计算架构 (CCA)试图通过基于硬件的安全环境保护敏感数据。这些所谓的 “领域”可以动态创建,以保护重要数据和代码不受系统其余部分的影响。
除了这些更具体的改进外,Arm 还承诺在 Armv9 基础上进行更全面的性能提升。该公司预计,在未来两次迭代中,CPU 性能将提高 30% 以上,并通过软件和硬件优化进一步提升性能。Arm 表示,所有现有软件都可以在基于 Armv9 的处理器上运行,没有任何问题。