《stm32嵌入式系统开发实战指南》一1.1 ARM内核处理器沿革

简介: 本节书摘来自华章出版社《stm32嵌入式系统开发实战指南》一书中的第1章,第1.1节,作者 李志明 檀永 徐石明,更多章节内容可以访问云栖社区“华章计算机”公众号查看

1.1 ARM内核处理器沿革

ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,1991成立于英国剑桥,该公司主要出售芯片设计技术的授权。人们将采用ARM技术知识产权(IP)核的微处理器称为ARM 微处理器。ARM公司利用独特的商业模式在全球范围内拥有极其广泛的合作伙伴。ARM公司将其技术授权给世界上许多著名的半导体、软件和OEM厂商,每个厂商得到的都是ARM公司提供的一套独一无二的ARM相关技术及服务,这些合作伙伴又保证了大量的开发工具和丰富的第三方资源。利用这种合作关系,ARM公司很快成为许多全球性RISC标准的缔造者。
以ARM为处理器的应用领域已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM 技术的微处理器应用约占据了32位RISC微处理器75 %以上的市场份额。世界上的主流半导体厂商已先后发布了基于ARMv4、ARMv5、ARMv6、ARMv7四个架构的10多个家族的主流嵌入式微控制器和微处理器产品,其中包括以经典的ARM7、ARM9、ARM11为内核的和以最新发布的Cortex为内核的种类繁多的微控制器和微处理器,如图1.1所示。目前,以ARM为内核的处理器大概有上千种,接下来简要介绍ARM处理器中的几个重要内核版本。
image

提示?为方便起见,若无特别说明,后面内容对处理器和控制器不做详细区分,读者可根据上下文含义理解。对于二者的区别前文有简要的论述,读者可参阅。

1.1.1 传统ARM处理器

1.ARM7处理器
ARM7处理器采用了ARMv4T(冯?诺依曼)体系结构。这种体系结构将程序指令存储器和数据存储器合并在一起。主要特点就是程序和数据共用一个存储空间,程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,采用单一的地址及数据总线,程序指令和数据的宽度相同。这样,处理器在执行指令时,必须先从存储器中取出指令进行译码,再取出操作数执行运算。总体来说,ARM7体系结构的特点是:三级流水处理、空间统一的程序指令与数据Cache、平均功耗为0.6mW/MHz、时钟频率为66MHz、每条指令平均执行1.9个时钟周期等。其中ARM710、ARM720和ARM740均为内置Cache的ARM核。ARM7指令集与Thumb指令集扩展组合在一起,可以减少内存容量和系统成本。同时,ARM7还利用嵌入式ICE调试技术简化系统设计,并通过一个DSP增强扩展来改进性能。ARM7体系结构是小型、快速、低能耗、集成式的RISC内核结构。该产品主要用于早期的数字蜂窝电话和硬盘驱动器等,主流的ARM7内核是ARM7TDMI、ARM7TDMI-S、ARM7EJ-S、ARM720T。市场上用得最多的ARM7处理器有Samsung公司的S3C44B0X与S3C4510、Atmel公司的AT91FR40162系列、Cirrus公司的EP73xx系列等。目前,市场上以ARM7为处理器的产品大多已升级为Cortex内核的处理器。
2.ARM9、ARM9E处理器
ARM9处理器采用ARMv4T(哈佛)体系结构。这种体系结构将程序指令存储和数据存储分开,是一种并行体系结构。主要特点是程序和数据存储在不同的存储空间中,即程序存储器和数据存储器。它们是两个相互独立的存储器,每个存储器独立编址,独立访问。与两个存储器相对应的是体系结构中的4套总线:程序的数据总线和地址总线,数据的数据总线和地址总线。这种分离的程序总线和数据总线允许在一个机器周期内同时获取指令字和操作数,从而提高了执行速度,使数据的吞吐量提高了一倍。又由于程序存储器和数据存储器在两个分开的物理空间中,因而取指和执行能完全重叠。ARM9体系结构的特点是:五级流水处理、分离的Cache结构、平均功耗为0.7mW/MHz、时钟频率为120~200MHz、每条指令平均执行1.5个时钟周期。与ARM7处理器系列相似,ARM9中的ARM920、ARM940和ARM9E处理器均为内置Cache的CPU核,性能为132MIPS(120MHz时钟频率,3.3V供电)或220MIPS(200MHz时钟频率)。ARM9处理器同时也配备Thumb指令集扩展、调试和Harvard总线。在生产工艺相同的情况下,性能是ARM7TDMI处理器的两倍之多。ARM9常用于无线设备、仪器仪表、联网设备、机顶盒设备、高端打印机及数码相机应用中。ARM9E内核是在ARM9内核的基础上增加了紧密耦合存储器TCM及DSP部分。目前主流的ARM9内核是ARM920T、ARM922T、ARM940。市场上相关的处理器有Samsung公司的S3C2510、Cirrus公司的EP93xx系列等。主流的ARM9E内核是ARM926EJ-S、ARM946E-S、ARM966E-S等。市场上早期的PDA多采用此类处理器。
3.ARM10E处理器
ARM10E处理器采用ARMv5T体系结构,特点是:六级流水处理、采用指令与数据分离的Cache结构、平均功耗为1000mW/MHz、时钟频率为300MHz、每条指令平均执行1.2个时钟周期等。ARM10TDMI与所有ARM核在二进制级代码中兼容,内带高速32×16 MAC,预留DSP协处理器接口。其中的VFP10(向量浮点单元)为七级流水处理体系结构。ARM10E中的ARM1020T处理器由ARMl0TDMI、32KB指令、数据Cache及MMU部分构成。ARM10E时钟频率高达300MHz,指令Cache和数据Cache分别为32KB,数据宽度为64位,支持多种商用操作系统,主要用于无线设备、数字消费品、成像设备、工业控制、通信和信息系统等领域。主流的ARM10内核是ARM1020E、ARM1022E、ARM1026EJ-S等。
4.SecurCore处理器
SecurCore系列处理器提供了基于高性能的32位RISC技术的安全解决方案。主要特点是:体积小、功耗低、代码密度大和性能高等。另外,最为特别的就是SecurCore系列处理器提供了安全解决方案的支持。SecurCore系列处理器采用软内核技术,以提供最大限度的灵活性,以及防止外部对其进行扫描探测,提供面向智能卡的和低成本的存储保护单元MPU,可以灵活地集成用户自己的安全特性和其他协处理器。
5.StrongARM处理器
StrongARM处理器采用ARMv4T的五级流水处理体系结构,主要有SA110、SA1100、SA1110这3个版本。另外Intel公司基于ARMv5TE体系结构的Xscale PXA27x系列处理器,与StrongARM相比增加了I/D Cache,并且加入了部分DSP功能,更适合于移动多媒体应用。早期市场上的大部分智能手机的核心处理器就是Xscale系列处理器。
6.ARM11处理器
ARM11处理器采用ARMv6体系结构,可以在使用130nm代工厂技术、小至2.2mm2芯片面积和低至0.24mW/MHz的前提下达到高达500MHz的性能表现。ARM11处理器系列以众多消费产品市场为目标,推出了许多新技术,包括针对媒体处理的SIMD、用以提高安全性能的TrustZone技术、智能能源管理(IEM),以及需要非常高的、可升级的超过2600 Dhrystone 2.1 MIPS 性能的系统多处理技术。主要的ARM11处理器有ARM1136JF-S、ARM1156T2F-S、ARM1176JZF-S、ARM11 MCORE等多种。

1.1.2 Cortex内核处理器

ARM公司将经典处理器ARM11以后的产品命名为Cortex,分成A、R和M三个系列,旨在为各种不同的市场提供服务。Cortex系列属于ARMv7体系结构,这是ARM公司最新的指令集体系结构。ARMv7体系结构定义了三大分工明确的系列:A系列面向尖端的基于虚拟内存的操作系统和用户应用;R系列针对实时系统;M系列针对微控制器。由于应用领域不同,基于ARMv7体系结构的Cortex处理器系列所采用的技术也不相同,基于ARMv7A的称为Cortex-A系列,基于ARMv7R的称为Cortex-R系列,基于ARMv7M的称为Cortex-M系列。
Cortex-M 系列处理器主要是针对微控制器领域开发的,该类处理器具有低功耗、良好的中断行为、卓越性能以及与现有平台的高兼容性等特点。Cortex-M 系列处理器作为微控制器主要应用于混合信号设备、智能传感器、汽车电子等场合。而Cortex-R 系列处理器的开发则面向深层嵌入式实时应用,并对这些需求进行了平衡考虑。Cortex-R 系列处理器主要适用于汽车制动系统、动力传动、高档轿车的组件、大型发电机控制器、机器手臂控制器、联网等对实时性和可靠性要求较高的应用场合。ARM Cortex-A 系列应用型处理器可向托管丰富的操作系统平台的设备和用户应用提供全方位的解决方案,包括智能手机、移动计算平台、数字电视、机顶盒、企业网络、打印机和服务器解决方案等。
需要注意的是,ARM体系结构版本号和处理器命名中的数字含义并不相同。比如,ARM7TDMI是基于ARMv4T体系结构的(T表示支持“Thumb指令集”);ARMv5TE体系结构率先应用于ARM9E处理器家族。ARM9E家族成员包括ARM926E-S和ARM946E-S,该体系结构添加了“服务于多媒体应用增强的DSP指令”。
后来又出现了ARM11,ARM11是基于ARMv6体系结构建成的。基于ARMv6体系结构的处理器包括ARM1136J(F)-S、ARM1156T2(F)-S,以及ARM1176JZ(F)-S。ARMv6是ARM进化史上的一个重要里程碑:从那时起,引进许多突破性的新技术,存储器系统加入了很多崭新的特性,从v6开始首次引入单指令流多数据流(SIMD)指令。而最前卫的新技术就是经过优化的Thumb-2指令集,它专门针对低成本的单片机及汽车组件市场。
ARM体系结构从最初开发到现在有了很大改进,并仍在完善和发展中。为了清楚地表达每个ARM应用实例所使用的指令集,ARM公司定义了7种主要的ARM指令集体系结构版本,以版本号v1~v7表示。
(1)ARM版本Ⅰ:v1体系结构
该版体系结构只在原型机ARM1中出现过,其只有26位寻址空间,没有用于商业产品。基本性能有:
基本的数据处理指令(无乘法);
基于字节、半字和字的Load/Store指令;
转移指令,包括子程序调用及链接指令;
供操作系统使用的软件中断指令SWI;
寻址空间:64MB。
(2)ARM版本Ⅱ: v2体系结构
该版体系结构对v1版进行了扩展,例如ARM2和ARM3(v2a)体系结构。包含了对32位乘法指令和协处理器指令的支持。v2a是v2的变种,ARM3芯片采用了v2a,是第一片采用片上Cache的ARM处理器。v2同样为26位寻址空间,现在已经废弃不再使用。v2体系结构与v1相比,增加了以下功能:
乘法和乘法累加指令;
支持协处理器操作指令;
快速中断模式;
SWP/SWPB的最基本存储器与寄存器交换指令;
寻址空间:64MB。
(3)ARM版本Ⅲ:v3体系结构
ARM作为独立的公司,在1990年设计的第一个微处理器采用的是v3的ARM6。ARM6是IP核、独立的处理器、具有片上高速缓存、MMU和写缓冲的集成CPU。变种版本有v3G和v3M。v3G是不与v2a向前兼容的v3,v3M引入了有符号和无符号数乘法和乘法累加指令,这些指令产生全部64位结果。v3体系结构(目前已废弃)对ARM体系结构做了较大的改动:
寻址空间增至32位(4GB);
当前程序状态信息从原来的R15寄存器移到当前程序状态寄存器(Current Program Status Register,CPSR)中;
增加了程序状态保存寄存器(Saved Program Status Register,SPSR);
增加了中止和未定义指令异常的两种处理器模式,使操作系统代码可方便地使用数据访问中止异常、指令预取中止异常和未定义指令异常;
增加了MRS/MSR指令,以访问新增的CPSR/SPSR寄存器;
增加了从异常处理返回的指令功能。
(4)ARM版本Ⅳ:v4体系结构
v4体系结构在v3上做了进一步扩充。v4体系结构是目前应用最广的ARM体系结构,ARM7、ARM8、ARM9和StrongARM都采用该体系结构。v4不再强制要求与26位地址空间兼容,而且明确了哪些指令会引起未定义指令异常。指令集中增加了以下功能:
符号化和非符号化半字及符号化字节的存/取指令;
增加了T变种,处理器可工作在Thumb状态,增加了16位Thumb指令集;
完善了软件中断SWI指令的功能;
处理器系统模式引进特权方式时使用用户寄存器操作;
把一些未使用的指令空间捕获为未定义指令。
(5)ARM版本Ⅴ:v5体系结构
v5体系结构是在v4基础上增加了一些新的指令,ARM10和Xscale都采用v5体系结构。这些新增指令有:
带有链接和交换的转移BLX指令;
计数前导零CLZ指令;
BRK中断指令;
增加了数字信号处理指令(v5TE版);
为协处理器增加更多可选择的指令;
改进了ARM/Thumb状态之间的切换效率;
增强型DSP指令集,包括全部算法操作和16位乘法操作;
支持新的Java,提供字节代码执行的硬件和优化软件加速功能。
(6)ARM版本Ⅵ:v6体系结构
v6体系结构是2001年发布的,首先应用于2002年春季发布的ARM11处理器中。在降低耗电量的同时,还强化了图形处理性能。通过追加有效进行多媒体处理的SIMD(Single Instruction Multiple Data,单指令多数据)功能,将语音及图像的处理功能提高到原型机的4倍。此体系结构在v5基础上增加了以下功能:
THUMBTM:35%代码压缩;
DSP扩充:高性能定点DSP功能;
JazelleTM:Java性能优化,可提高8倍;
Media扩充:音频/视频性能优化,可提高4倍。
(7)ARM版本Ⅶ:v7体系结构
ARMv7体系结构是在ARMv6体系结构的基础上诞生的。该体系结构采用了Thumb-2指令集技术——在ARM的Thumb代码压缩技术的基础上发展起来,并且保持了对现存ARM解决方案的完整的代码兼容性。主要新增功能如下:
Thumb-2指令集技术;
NEON技术;
向量浮点运算V3;
支持动态编译器。
ARMv7体系结构在设计时充分考虑了与早期ARM处理器软件的兼容性。ARM Cortex-M系列支持Thumb-2指令集(Thumb指令集的扩展集),对基于早期处理器编写的代码具有良好的兼容性。通过一个前向的转换方式,为ARM Cortex-M系列处理器所写的用户代码可以与ARM Cortex-R系列微处理器完全兼容。ARM Cortex-M系列系统代码(如实时操作系统)可以很容易地移植到基于ARM Cortex-R系列的系统上。ARM Cortex-A和Cortex-R系列处理器还支持ARM 32位指令集,向后完全兼容早期的ARM处理器。
需要注意的是,在v7体系结构中,Thumb-2指令集技术比纯32位代码少使用31%的内存,减小了系统开销,同时能够提供比已有的基于Thumb指令集技术的解决方案高出38%的性能。ARMv7体系结构还采用了NEON技术,将DSP和媒体处理能力提高了近4倍。ARMv7体系结构支持改良的浮点运算,满足下一代3D图形、游戏物理应用以及传统嵌入式控制应用的需求。此外,ARMv7还支持改良的运行环境,以迎合不断增加的JIT(Just In Time)和DAC(Dynamic Adaptive Compilation)技术。图1.2为v5~v7体系结构的处理器技术比较。由于应用领域不同,基于v7体系结构的Cortex处理器系列所采用的技术也不相同。

image

相关实践学习
实时数据及离线数据上云方案
本实验通过使用CANAL、DataHub、DataWorks、MaxCompute服务,实现数据上云,解决了数据孤岛问题,同时把数据迁移到云计算平台,对后续数据的计算和应用提供了第一步开山之路。
相关文章
|
7月前
|
存储 编译器 C语言
STM32开发 -- Keil基本使用
STM32开发 -- Keil基本使用
308 0
|
4月前
|
传感器 数据采集 物联网
基于STM32的光敏传感器数据采集系统-嵌入式系统与设计课程设计2
基于STM32的光敏传感器数据采集系统-嵌入式系统与设计课程设计
218 0
|
1月前
|
存储 机器学习/深度学习 人工智能
嵌入式中一文搞懂ARM处理器架构
嵌入式中一文搞懂ARM处理器架构
38 1
|
2月前
|
存储 缓存 物联网
DP读书:鲲鹏处理器 架构与编程(二)服务器与处理器——高性能处理器的并行组织结构、ARM处理器
DP读书:鲲鹏处理器 架构与编程(二)服务器与处理器——高性能处理器的并行组织结构、ARM处理器
251 0
|
3月前
|
缓存 编译器 程序员
嵌入式开发环境Vscode开发STM32单片机程序
嵌入式开发环境Vscode开发STM32单片机程序
55 0
|
3月前
|
芯片
嵌入式系统中STM32时钟系统详解
嵌入式系统中STM32时钟系统详解
48 0
|
3月前
|
缓存 算法
内存系列学习(七):ARM处理器的快速上下文切换技术
内存系列学习(七):ARM处理器的快速上下文切换技术
46 0
|
3月前
|
存储 缓存 Linux
内存系列学习(六):ARM处理器存储访问一致性问题
内存系列学习(六):ARM处理器存储访问一致性问题
64 0
|
3月前
|
存储 算法 Linux
内存系列学习(五):ARM处理器中的Cache和Write Buffer
内存系列学习(五):ARM处理器中的Cache和Write Buffer
60 0
内存系列学习(五):ARM处理器中的Cache和Write Buffer
|
3月前
|
存储 缓存 Linux
内存系列学习(三):ARM处理器地址变换过程
内存系列学习(三):ARM处理器地址变换过程
62 0