总是有人在说,我是搞ARM的,到底是说的ARM架构还是ARM系列,这点要搞清楚!
在Dock看来,ARM有两个概念,ARM架构、ARM系列,不同的架构,不同的系列在性能、功耗、尤其是价格方面有着很大的不同。
1. ARM公司
ARM
(Advanced RISC Machine)公司作为半导体行业最为著名的公司,你不能不知道。详情看度娘ARM。
下面我们重点说架构
和系列
两个概念。
2. ARM架构
ARM架构指的就是这颗芯片内核所用的指令集的版本。C++语言还有C++10
、C++11
版本之说,更何况内核呢?
最为显著的就是总线宽度。"Thumb指令集"为16位,"ARM指令集"为32位,以及"ISA指令集"为64位。这也就从根本上区分了每一个ARM内核有所不同。当然ARM还有很多很多不同的拓展功能,如Java加速器-Jazelle
、TrustZone技术
、SIMD
等,这些不同的组合就组成了不同的ARM架构。
2.1 ARMv4 ARMv5 ARMv6 ARMv7
这是市面上最老的ARM架构版本了。只支持32位地址空间,ARM7系列的一些芯片用到了这个指令集。
ARMv5相较于v4架构增加了DSP指令优化。
ARMv6 在存储系统、异常处理等方面做了很多改进,最为重要的是增加了对多媒体处理的支持。
ARMv7增加了NEON GPU多媒体处理支持,将DSP和媒体处理能力提高了近四倍,并且支持改良的浮点运算。满足下一代3D图形应用的需求,也就是从v7开始,ARMv7架构的处理器芯片开始应用于智能终端设备。
2.2 ARMv8
2011年11月,ARM公司发布了新一代处理器架构ARMv8的部分技术细节。这是ARM公司的首款支持64位指令集的处理器架构。但其支持AArch32 AArch64两套指令集,为的就是向前兼容32位的应用。
2.3 拓展
有时候我们又能看到ARMv5TEJ
等词汇,这又是什么意思,后面的每一个字母代表一种拓展功能。如 T-Thumb指令集、E-增强型DSP指令 J-Java加速器。
3. ARM系列
在相同的指令集下,搭配不同的部件就可以组成不同的功能的处理器。比如有无内存管理,有无调试功能等。
3.1 ARM7-11
ARM7 - ARM11是比较老的一些处理器器了。其主要的分别大致如下:
- ARM7是低功耗的32位处理器,主要特点是没有MMU(内存管理),如果有人给你说他用ARM7跑系统,你就可以
呵呵
了。 - 相较于ARM7,增加了MMU和Cache,指令集执行效率相比于ARM7有很大提高,最高可达300MIPS。
- ARM11,基于ARMv6指令集架构,在实时性和浮点处理方面有很大提高。
3.2 ARM-Cortex
在ARM11以后,ARM就不再以数字进行ARM处理器系列进行区分,而是使用Cortex
进行命名。主要区分为一下三个系列:
- Cortex-A 和 Cortex-A50 系列 - 面向开放式操作系统的高性能处理器。
- Cortex-R 系列- 面向实时应用的卓越性能。
- Cortex-M 系列 - 面向具有确定性的微控制器应用的成本功耗敏感型解决方案。
ARM Cortex-A 内核基于ARMv7-A架构,基本上都可以支持ARM、Thumb-2、Thumb指令集、Java加速扩展的Jazelle技术、ThustZone的安全扩展、针对浮点FPU的VFP硬件扩展、DSP & SIMD 扩展、并行多数据SIMD的NEON多媒体处理器扩展、主流的嵌入式OS(Linux、Android、Windows Mobile、Windows Phone、Symbian)、以及支持分支预测branch prediction。但各处理器在VFP/NEON的类型、半精度浮点(16-bit half precision floating-point)的支持、多核MPCore、流水线pipeline、单MHz处理性能、L1/L2 cache控制器、乱序执行、指令dual-issue并发等方面有略有不同。
Cortex-R系列的内核接触不多,主要用于实时控制领域。我所知道的在Xilinx的MPSOC芯片中就使用了两颗R-5内核作为对A-9内核的实时增强。
Cortex-M处理器家族更多的集中在低性能端,但是这些处理器相比于许多微控制器使用的传统处理器性能仍然很强大。例如,Cortex-M4和Cortex-M7处理器应用在许多高性能的微控制器产品中,最大的时钟频率可以达到400Mhz。如我们最熟悉的Stm32就是基于Cortex-M系列处理器。