嵌入式Linux--ARM架构

架构内核位宽第三方Cortex profile
ARMv132ARM1
ARMv232ARM2,
ARM250,
ARM3
ARMv332ARM6,
ARM7
ARMv432ARM11
ARMv4T32ARM7TDMI,
ARM9TDMI,
SecurCore SC100
ARMv5TE32ARM7EJ,
ARM9E,
ARM10E
XScale,
FA626TE,
Feroceon
ARMv632ARM11
ARMv6-M32ARM Cortex-M0,
ARM Cortex-M0+,
ARM Cortex-M1,
SecurCore SC000
ST stm8Microcontroller
ARMv7-M32ARM Cortex-M3,
SecurCore SC300
ST stm32f1Microcontroller
ARMv7E-M32ARM Cortex-M4,
ARM Cortex-M7
ST stm32f4/f7,
Nordic nrf52
Microcontroller
ARMv7-R32ARM Cortex-R4,
ARM Cortex-R5,
ARM Cortex-R7
Real-time
ARMv7-A32ARM Cortex-A5,
ARM Cortex-A7,
ARM Cortex-A8,
ARM Cortex-A9,
ARM Cortex-A12,
ARM Cortex-A15,
ARM Cortex-A17
Krait,
Scorpion,
Apple A6/A6x,
NXP i.mx6/mx7/mx8
Application
ARMv8-A64ARM Cortex-A35,
ARM Cortex-A53,
ARM Cortex-A57,
ARM Cortex-A72
X-Gene,
Nvidia Project Denver,
AMD K12,
Apple A7/A8/A9/A9x,
Cavium Thunder x,
Qualcomm Kryo
Application
ARMv8.1-A64TBAApplication
ARMv8-R32TBAReal-time
ARMv8-M32TBAMicrocontroller

产品分类

 ARM产品的分类可以按照ARMv1、ARMv2、ARMv3、ARMv4等构架来分类。从1983年开始,ARM内核共有ARM1、ARM2、ARM6、ARM7、ARM9、ARM10、ARM11和Cortex以及对应的修改版或增强版组成,越靠后的内核,初始频率越高、架构越先进,功能也越强。架构和内核对应关系如下图(截取自维基百科:https://en.wikipedia.org/wiki/List_of_ARM_microarchitectures )所示:

ARM 自己设计的内核

在这里插入图片描述

ARM内核发布时间

在这里插入图片描述

由具有ARM架构许可证的公司独立开发的内核

 除了 ARM 公司自己设计的内核,还有些内核实现了ARM指令集,是由具有ARM架构许可证的公司独立开发

在这里插入图片描述

经典ARM系列和Cortex系列

 ARM 处理器产品分为经典ARM处理器系列和最新的Cortex处理器系列:

在这里插入图片描述

Classic处理器介绍

 ARM7微处理器系列:1994年推出,使用范围最广的 32 位嵌入式处理器系列。 0.9MIPS/MHz的三级流水线和冯诺依曼结构。ARM7系列包括ARM7TDMI、ARM7TDMI-S、带有高速缓存处理器宏单元的ARM720T。该系列处理器提供Thumb 16位压缩指令集和EmbededICE软件调试方式,适用于更大规模的SoC设计中。ARM7TDMI基于ARM体系结构V4版本,是目前低端的ARM核。

 ARM9微处理器系列:ARM9采用哈佛体系结构,指令和数据分属不同的总线,可以并行处理。在流水线上,ARM7是三级流水线,ARM9是五级流水线。由于结构不同,ARM7的执行效率低于ARM9。基于Arm9内核的处理器,是具有低功耗,高效率的开发平台。广泛用于各种嵌入式产品。它主要应用于音频技术以及高档工业级产品,可以跑Linux以及Wince等高级嵌入式系统,可以进行界面设计,做出人性化的人机互动界面,像一些网络产品和手机产品。

 ARM9E微处理器系列:ARM9E中的E就是Enhance instrcTIons,意思是增强型DSP指令,说明了ARM9E其实就是ARM9就一个扩充,变种。ARM9E系列微处理器为可综合处理器,使用单一的处理器内核提供了微控制器、DSP、Java应用系统的解决方案,极大的减少了芯片的面积和系统的复杂程度。ARM9E系列微处理器提供了增强的DSP处理能力,很适合于那些需要同时使用DSP和微控制器的应用场合。

 ARM10E微处理器系列:ARM10E系列微处理器为可综合处理器,使用单一的处理器内核提供了微控制器、DSP、Java应用系统的解决方案,极大的减少了芯片的面积和系统的复杂程度。ARM9E系列微处理器提供了增强的DSP处理能力,很适合于那些需要同时使用DSP和微控制器的应用场合。ARM10E与ARM9E区别在于,ARM10E使用哈佛结构,6级流水线,主频最高可达325MHz,1.35MIPS/HZ。

 ARM11微处理器系列:ARM公司近年推出的新一代RISC处理器,它是ARM新指令架构——ARMv6的第一代设计实现。该系列主要有ARM1136J,ARM1156T2和ARM1176JZ三个内核型号,分别针对不同应用领域。ARM11的媒体处理能力和低功耗特点,特别适用于无线和消费类电子产品;其高数据吞吐量和高性能的结合非常适合网络处理应用;另外,也在实时性能和浮点处理等方面ARM11可以满足汽车电子应用的需求。

Cortex系列介绍

 ARM公司在经典处理器ARM11以后的产品改用Cortex命名,并分成A、R和M三类,旨在为各种不同的市场提供服务。Cortex系列属于ARMv7架构,由于应用领域不同,基于v7架构的Cortex处理器系列所采用的技术也不相同,基于v7A的称为Cortex-A系列,基于v7R的称为Cortex-R系列,基于v7M的称为Cortex-M系列。

 Application Processors(应用处理器):面向移动计算,智能手机,服务器等市场的的高端处理器。这类处理器运行在很高的时钟频率(超过1GHz),支持像Linux,Android,MS Windows和移动操作系统等完整操作系统需要的内存管理单元(MMU)。 如果规划开发的产品需要运行上述其中的一个操作系统,你需要选择ARM 应用处理器.

 Real-time Processors (实时处理器):面向实时应用的高性能处理器系列,例如硬盘控制器,汽车传动系统和无线通讯的基带控制。多数实时处理器不支持MMU,不过通常具有MPU、Cache和其他针对工业应用设计的存储器功能。实时处理器运行在比较高的时钟频率(例如200MHz 到 >1GHz ),响应延迟非常低。虽然实时处理器不能运行完整版本的Linux和Windows操作系统, 但是支持大量的实时操作系统(RTOS)。

 Microcontroller Processors(微控制器处理器):微控制器处理器通常设计成面积很小和能效比很高。通常这些处理器的流水线很短,最高时钟频率很低(虽然市场上有此类的处理器可以运行在200Mhz之上)。 并且,新的Cortex-M处理器家族设计的非常容易使用。因此,ARM 微控制器处理器在单片机和深度嵌入式系统市场非常成功和受欢迎。

 Cortex-M 处理器家族更多的集中在低性能端,但是这些处理器相比于许多微控制器使用的传统处理器性能仍然很强大。例如,Cortex-M4 和 Cortex-M7 处理器应用在许多高性能的微控制器产品中,最大的时钟频率可以达到400Mhz。

在这里插入图片描述
三个处理器系列的主要特征

在这里插入图片描述


一、ARM架构与ARM内核

1.1 ARM架构与内核关系

 目前为止,ARM总共发布8种架构:ARMv1、ARMv2、ARMv3、ARMv4、ARMv5、ARMv6、ARMv7 、ARMv8,这是ARM架构指令集的多个v版本。

 基于不同的ARM架构可以设计出不同特点的内核处理器p***essor。比如基于ARMv3架构设计出的处理器ARM6、ARM7,这两款处理器适用于不同的场景,硬件可能不同,但是架构指令集是一样的。

 好比你盖房子,刚开始因为水平低流行盖平房,这就是一种架构(ARMv5),然后这种平房架构你可以设计出一款独立卫生间的款式, 这叫ARM7内核。 然后其他人(芯片设计公司)想盖房子的就买你这个图纸去盖,接着过一段时间,有人觉得光独立卫生间还不够啊, 我还想有个小院子! 好吧,那ARM就满足你们的要求,出个带小院子的款式(ARM9)。

 即ARMv1/2/3等是指令集的架构,ARM7/9等是基于架构设计出的内核处理器。ARM的架构都是基于RISC指令集而设计的,内核是实现这一指令集的硬件架构的基础。

1.2 ARM各架构之间区别

1.2.1 ARM版本Ⅰ: V1版架构

 该版架构只在原型机ARM1出现过,只有26位的寻址空间,没有用于商业产品。其基本性能有:

  • 基本的数据处理指令(无乘法);
  • 基于字节、半字和字的Load/Store指令;
  • 转移指令,包括子程序调用及链接指令;
  • 供操作系统使用的软件中断指令SWI;
  • 寻址空间:64MB(226)。

1.2.2 ARM版本Ⅱ: V2版架构

 该版架构对V1版进行了扩展,例如ARM2和ARM3(V2a)架构。包含了对32位乘法指令和协处理器指令的支持。版本2a是版本2的变种,ARM3芯片采用了版本2a,是第一片采用片上Cache的ARM处理器。同样为26位寻址空间,现在已经废弃不再使用。V2版架构与版本V1相比,增加了以下功能:

  • 乘法和乘加指令;
  • 支持协处理器操作指令;
  • 快速中断模式;
  • SWP/SWPB的最基本存储器与寄存器交换指令;
  • 寻址空间:64MB。

1.2.3 ARM版本Ⅲ : V3版架构

 ARM作为独立的公司,在1990年设计的第一个微处理器采用的是版本3的ARM6。它作为IP核、独立的处理器、具有片上高速缓存、MMU和写缓冲的集成CPU。

 变种版本有3G和3M。版本3G是不与版本2a向前兼容的版本3,版本3M引入了有符号和无符号数乘法和乘加指令,这些指令产生全部64位结果。

 V3版架构( 目前已废弃 )对ARM体系结构作了较大的改动:

  • 寻址空间增至32位(4GB);
  • 当前程序状态信息从原来的R15寄存器移到当前程序状态寄存器CPSR中(Current Program Status Register);
  • 增加了程序状态保存寄存器SPSR(Saved Program Status Register);
  • 增加了两种异常模式,使操作系统代码可方便地使用数据访问中止异常、指令预取中止异常和未定义指令异常。;
  • 增加了MRS/MSR指令,以访问新增的CPSR/SPSR寄存器;
  • 增加了从异常处理返回的指令功能。

1.2.4 ARM版本Ⅳ : V4版架构

 V4版架构在V3版上作了进一步扩充,V4版架构是目前应用最广的ARM体系结构,ARM7、ARM8、ARM9和StrongARM都采用该架构。V4不再强制要求与26位地址空间兼容,而且还明确了哪些指令会引起未定义指令异常。

 指令集中增加了以下功能:

  • 符号化和非符号化半字及符号化字节的存/取指令;
  • 增加了T变种,处理器可工作在Thumb状态,增加了16位Thumb指令集;
  • 完善了软件中断SWI指令的功能;
  • 处理器系统模式引进特权方式时使用用户寄存器操作;
  • 把一些未使用的指令空间捕获为未定义指令

1.2.5 ARM版本Ⅴ : V5版架构

 V5版架构是在V4版基础上增加了一些新的指令,ARM10和Xscale都采用该版架构。

 这些新增命令有:

  • 带有链接和交换的转移BLX指令;
  • 计数前导零CLZ指令;
  • BRK中断指令;
  • 增加了数字信号处理指令(V5TE版); 为协处理器增加更多可选择的指令
  • 改进了ARM/Thumb状态之间的切换效率;
  • E—增强型DSP指令集,包括全部算法操作和16位乘法操作;
  • J—支持新的JAVA,提供字节代码执行的硬件和优化软件加速功能。

1.2.6 ARM版本Ⅵ : V6版架构

 V6版架构是2001年发布的,首先在2002年春季发布的ARM11处理器中使用。在降低耗电量地同时,还强化了图形处理性能。通过追加有效进行多媒体处理的SIMD(Single Instruction, Multiple Data,单指令多数据 )功能,将语音及图像的处理功能提高到了原型机的4倍。

 此架构在V5版基础上增加了以下功能:

  • THUMBTM:35%代码压缩;
  • DSP扩充:高性能定点DSP功能;
  • JazelleTM:Java性能优化,可提高8倍;
  • Media扩充:音/视频性能优化,可提高4倍

二、ARM产品型号

2.1 内核产品型号

基于各ARM架构设计的内核型号如下图所示:

https://blog.csdn.net/kinsor/article/details/37761989

https://blog.csdn.net/ZCShouCSDN/article/details/84393473

ARMv7之前均为32位总线位宽,从ARMv8开始扩展为64位总线位宽(数据总线、地址总线、控制总线位宽均为64位,一般寻址空间不会用满)。

2.2 产品命名规则

arm处理器命名格式:

ARM x y z T D M I E J F -S

x:序列

y:2:带MMU, 4带MPU,6没有

z:0:标准cache,2:减小的cache, 6可变的cache

T:处理器支持Thumb指令集

D:支持JTAG调试器

M:支持长乘法指令

I:有嵌入式跟踪宏单元

E:支持增强指令(基于TDMI)

J:支持JAVA硬件加速(Jazelle)

F:支持向量浮点单元

S:可综合版本

2.3 内核产品应用

ARM7:ARMv4架构,ARM9:ARMv5架构,ARM11:ARMv6架构,ARM-Cortex 系列:ARMv7架构。

ARM7没有MMU(内存管理单元),只能叫做MCU(微控制器),不能运行诸如Linux、WinCE等这些现代的多用户多进程操作系统,因为运行这些系统需要MMU,才能给每个用户进程分配进程自己独立的地址空间。ucOS、ucLinux这些精简实时的RTOS不需要MMU,当然可以在ARM7上运行。

ARM9、ARM11,是嵌入式CPU(处理器),带有MMU,可以运行诸如Linux等多用户多进程的操作系统,应用场合也不同于ARM7。

到了ARMv7架构的时候开始以Cortex来命名,并分成Cortex-A、Cortex-R、Cortex-M三个系列。三大系列分工明确:“A”系列面向尖端的基于虚拟内存的操作系统和用户应用;“R”系列针对实时系统;“M”系列对微控制器。简单的说Cortex-A系列是用于移动领域的CPU,Cortex-R和Cortex-M系列是用于实时控制领域的MCU

(1)Cortex-M系列:M-Profile,即"Mic***ontroller" -Profile,侧重微控制器单片机方面的场合。

(2)Cortex-R系列:R-Profile,即"Real-Time"-Profile,侧重于实时系统的场合。

(3)Cortex-A系列:A-Profile,即“Application”-Profile,侧重于应用功能的场合。


参考博客:https://blog.csdn.net/ZCShouCSDN/article/details/84393473

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页