当前位置:   article > 正文

嵌入式1. arm 架构分析_哈佛架构和arm架构

哈佛架构和arm架构

 计算机体系结构

冯·诺依曼体系

结构模型:

冯·诺依曼体系的特点:

1、数据与指令都存储在同一存储区中,取指令与取数据利用同一数据总线。

2、被早期大多数计算机所采用。

3、ARM7——冯诺依曼体系结构简单,但速度较慢。取指不能同时取数据。

哈佛体系

结构模型:

结构特点:

1、程序存储器与数据存储器分开.

2、提供了较大的存储器带宽,各自有自己的总线。

3、适合于数字信号处理.

4、大多数DSP都是哈佛结构.

5、ARM9是哈佛结构,取指和取数在同一周期进行,提高速度,改进哈佛体系结构分成三个存储区:程序、数据、程序和数据共用。

指令集

指令集(Complex Instruction Set Computer)

特点:

1、具有大量的指令和寻址方式

2、8/2原则:80%的程序只使用20%的指令

3、大多数程序只使用少量的指令就能够运行。

4、CISC CPU 包含有丰富的单元电路,因而功能强、面积大、功耗大。

RISC精简指令集(Reduced Instruction Set Computer)

特点:

1、在通道中只包含最有用的指令,只提供简单的操作。

2、确保数据通道快速执行每一条指令。

3、Load-store结构—— 处理器只处理寄存器中的数据,load-store指令用来完成数据在寄存器和外部存储器之间的传送。

4、使CPU硬件结构设计变得更为简单, RISC CPU包含较少的单元电路,因而面积小、功耗低。

RISC与CISC主要差别

1、寄存器方面

RISC指令集:拥有更多的通用寄存器,每个可以存放数据和地址,寄存器为所有的数据操作提供快速的存储访问。

CISC指令集:多用于特定目的的专用寄存器。

2、LOAD –STORE结构方面

RISC结构:Cpu 仅处理寄存器中的数据,采用独立的、专用的LOAD –STORE 指令来完成数据在寄存器和外存之间的传送。(访存费时,处理和存储分开,可以反复的使用保存在寄存器中的数据,而避免多次访问外存)。

CISC结构:能直接处理存储器中的数据。

在更为复杂的应用上,X86构架处理器的优势短时间内是无可取代的。最关键的一点,在于ARM架构处理器的乱序执行能力远不及X86架构处理器。比如电脑在操作的时候多是随机且不可预测的,X86构架处理器在这方面就加强了乱序指令执行的能力,而且,X86构架还有一个特点就是单核心双线程的设计,让其在处理乱序指令的时候效率更高。但是这样的缺点也显而易见,那就是随时都要准备着应对乱序指令的执行,因此它的耗电量也比较大。

ARM概况

下表描述了ARM的三种系列架构:A,R,M。

A系列(应用)    R系列(实时)    M系列(微控制器)

Cortex-A系列(Application)

面向应用场景的架构(Application Profile)。该系列支持基于内存管理单元(MMU)的虚拟内存系统体系结构(VMSA)。它支持A64、A32和T32指令集。面向性能密集型系统的应用处理器内核。主要针对日益增长的消费娱乐和无线产品设计,用于具有高计算要求、运行丰富操作系统及提供交互媒体和图形体验的应用领域,如智能手机、平板电脑、汽车娱乐系统、数字电视,智能本、电子阅读器、家用网络、家用网关和其他各种产品。

Cortex-R系列(Real-time)

面向实时应用的高性能内核。主要针对需要运行实时操作的系统应用,面向如汽车制动系统、动力传动解决方案、大容量存储控制器等深层嵌入式实时应用。R系列,面向实时场景的架构配置。该系列支持基于内存保护单元(MPU)的受保护内存系统体系结构(PMSA)。它支持A32和T32指令集。

Cortex-M系列(Microcontroller)

面向各类嵌入式应用的微控制器内核。该系列面向微控制器领域,主要针对成本和功耗敏感的应用,如智能测量、人机接口设备、汽车和工业控制系统、家用电器、消费性产品和医疗器械等。M系列,面向微处理器的架构。该系列实现了一个为低延迟中断处理而设计的程序员模型(programmers' model),该模型具有寄存器硬件堆栈和对中断处理程序的高级语言支持。它支持T32指令集的变种。

Cortex-SC系列(SecurCore)

除了上述三大系列之外,还有一个主打安全的Cortex-SC系列(SC:SecureCore),主要用于政府安全芯片。


 

Xilinx Zynq-7000系列是一个基于ARM Cortex-A9内核处理器和FPGA结构的SoC家族,自2012年推出以来,我们已经看到了基于入门级的Zynq-7010或Zynq-7020 SoCs的开发板。 

 ARM处理器核的结构

ARM体系结构有三组总线,可以方便地扩充各种处理器、DSP或I/O。

  • AHB: Advanced High performance Bus
  • ASB: Advanced System Bus
  • APB: Advanced Peripherial Bus

4 ARM处理器的运行模式

运行不同的程序所需的硬件资源不同,因此ARM处理器可以为程序提供7种不同的硬件资源组合,每一种硬件资源组合叫做一种运行模式。

  • USR(用户模式):ARM处理器正常程序执行模式。
  • FIQ(快速中断模式):用于高速数据传输或通道处理
  • IRQ(中断模式):用于通用的中断处理
  • SVC(管理模式):操作系统使用的保护模式
  • ABT(终止模式):当数据或指令预取出错时进入的模式。
  • SYS(系统模式):运行具有特权的操作系统任务。
  • UND(未定义指令中止模式):当处理器试图执行未定义指令时进入的模式

现代计算机系统都有用户模式,只为用户程序提供了有限硬件资源的运行模式。相对于用户模式来说,对硬件资源的使用有某种特权的运行模式叫做特权模式(除了用户模式其他六种运行模式都是特权模式)。

5 ARM的两种工作状态

ARM的RISC体系结构的发展中已经提供了低功耗、小体积、高性能的方案。而为了解决代码长度的问题,ARM体系结构又增加了T变种,开发了一种新的指令体系,这就是Thumb指令集,它是ARM技术的一大特色。

Thumb是ARM体系结构的扩展。它有从标准32位ARM指令集抽出来的36条指令格式,可以重新编成16位的操作码。这能带来很高的代码密度。

支持Thumb的ARM体系结构的处理器状态可以方便的切换、运行到Thumb状态,在该状态下指令集是16位的Thumb指令集。

ARM指令集对比Thumb指令集:

  • 完成相同的操作,Thumb指令通常需要更多的指令,因此在对系统运行时间要求苛刻的应用场合ARM指令集更为适合;
  • Thumb指令集没有包含进行异常处理时需要的一些指令,因此在异常中断时,还是需要使用ARM指令,这种限制决定了Thumb指令需要和ARM指令配合使用。

ARM处理器的工作状态由程序状态寄存器CPSR的D5位的值控制,ARM指令集和Thumb指令集都设有处理器工作状态切换指令,以供程序在执行过程中对处理器进行状态切换。启动时,处理器默认状态为ARM状态。

Thumb指令与ARM指令的时间效率和空间效率对比:

  • Thumb代码所需的存储空间为ARM代码的60%~70%;
  • Thumb代码使用的指令数比ARM代码多30%~40%;
  • 使用32位的存储器,ARM代码比Thumb代码快约40%;
  • 若使用16位存储器,则Thumb代码比ARM代码快40%~50%;
  • 与ARM代码相比较,使用Thumb代码,存储器的功耗会降低约30%。

若对系统的性能有较高要求,则应使用32位存储系统和ARM指令集;若对系统的成本及功耗有较高要求,则应使用16位存储系统和Thumb指令集。当然,若两者结合使用,充分发挥各自的优点,则会取得更好的效果。

6 ARM处理器的寄存器

ARM处理器共有37个寄存器,但是每种模式下最多只能看到 18 个寄存器,其他寄存器虽然名字相同,但是在当前模式不可见。

根据处理器的工作状态,这37个寄存器有两种不同的组织方式:ARM方式和Thumb方式。

6.1 ARM状态下寄存器的组织方式

虽然ARM处理器共有37个寄存器,但是根据处理器的运行模式,程序能够真正使用的只是其中的18个或者17个。

6.1.1 基础寄存器

两种或两种以上运行模式所共享的寄存器叫做基础寄存器。他们是R0~R15和CPSR,其中R0~R7、R15和CPSR为所有运行模式共享;R8~R12为除了快中断模式之外的其他所有运行模式共享;R13和R14为用户模式和系统模式共享,如下图所示:

Current Program State Register

Saved Program Status Register

6.1.2 模式私有寄存器

为了对数据进行保护,ARM为某些运行模式设置了一些只能在该运行模式下使用的私有寄存器,上图中带有后缀的寄存器均为私有寄存器。

ARM规定,当处理器在某种模式运行时,凡是与该模式私有寄存器序号相同的基本寄存器都将被禁用。例如在终止模式下,与该模式私有寄存器R13_abt~R14_abt序号相同的基础寄存器R13和R14就处于禁用状态。为了减少寄存器名称的数量,ARM规定,寄存器名称统一写为R<序号>方式,但是这个名称所对应的实际物理寄存器与处理器当前运行模式相关。也就是说,程序中的一个寄存器名称可能对应着多个物理寄存器,程序中的这个名称究竟指的是哪个物理寄存器,则由系统根据当前运行的模式来决定。

6.1.3 程序计数器R15(PC)

在ARM中,基础寄存器R15固定得作为程序计数器来使用。为了提高程序的可读性,通常用PC来标识。在CPU中,一条指令的执行简单的划分为:取指-译码-执行,三个部分([2])。PC中存放的是下一条将要“执行”的指令的地址,这里的执行并不是取指-译码-执行中的第三个步骤,而是指的将存放于内存中的指令输送进CPU中“准备执行”,那么第一步就要取指,PC中存放的是从内存中取指所需要的地址。ARM处理器的字长是32位,则一条汇编指令的长度也是32位,也就是四个字节,而内存中一个地址单元是一个字节,也就是说一条指令要占据4个地址单元。

假设程序顺序执行(一条接一条,没有跳转),假设当前正在CPU中执行的指令A的首地址是0,也就是说指令A的存放位置是内存中的0—3这4个地址单元。假设指令A后面紧跟着指令B,指令B后面紧跟指令C,如果顺序执行,按理来说pc中存放的地址应该是指令B的首地址,也就是PC=0+4。

但是由于ARM处理器中采用了流水线的技术,假设是3级流水线,那么执行A处于三个步骤中的“执行”时,指令B已经开始进行“译码”,而真正开始“取指”的是指令C。也就是说,当指令A在运行的时候,PC中存放的地址应该是指令C的地址,也就是说PC=0+8。

6.1.4 程序状态寄存器PSR

基础寄存器R16专门用作程序状态寄存器。为了提高程序的可读性,程序中也可以称为PSR。

CPSR格式

ARM处理器中有6个PSR,当前程序状态寄存器CPSR是所有运行模式所共享的,而另外5个PSR为模式私有,用来对CPSR进行备份的寄存器叫做SPSR。

由于CPSR中保存的是程序当前运行模式的状态信息,所以当前运行模式发生变化时,为了防止这些信息丢失,ARM对每种异常运行模式都设置了一个与CPSR的格式完全相同的备份寄存器SPSR(Saved Progarm Status Register)。即当处理器进入异常运行模式时,系统会自动把CPSR的当前值转存到SPSR;当从异常模式退出时,再自动把当初保存到SPSR中的状态信息存回CPSR。

由于用户模式和系统模式不属于异常模式,所以这两个模式没有SPSR。

6.1.5 堆栈指针R13(SP)

堆栈是计算机存储数据的一种数据结构,SP的作用就是指示当前要出栈或入栈的数据,并在操作执行后自动递增或递减。

计算机中的堆栈主要用来保存临时数据,局部变量和中断/调用子程序程序的返回地址。程序中栈主要是用来存储函数中的局部变量以及保存寄存器参数。

  • 保存现场;
  • 传递参数:汇编代码调用 C 函数时,需传递参数;
  • 保存临时变量:包括函数的非静态局部变量以及编译器自动生成的其他临时变量;

6.1.6 链接寄存器R14(LR)

寄存器R14也称为子程序链接寄存器(Subroutine Link Register)或链接寄存器LR。当执行子程序调用指令BL时,R14会备份R15(程序计数器PC)的内容,以便子程序结束后能使程序正确地返回。

6.2 Thumb状态下寄存器的组织方式

Thumb状态下的寄存器同样也分为模式相关寄存器和模式无关寄存器两种,其命名及使用方式也与ARM状态下的方式一样。但Thumb状态下的寄存器集是ARM状态下寄存器集的一个子集。

指令流水线 


(1) 流水线的发展
ARM7采用 3 级流水线

ARM9采用 5 级流水线

Cortex-A9采用 8 级流水线

注意:虽然流水线的级数越来越多,本质还是三级流水线,只不过是在三级流水线的基础上进行了细分。

(2) 流水线的局限性
指令流水线机制的引入确实可以大大提升指令执行的速度,但是在实际执行程序的过程中,很多情况下流水线是无法形成的。比如异常发生时,处理器要切换模式,保存上下文内容,然后跳转异常处理程序,在开始执行处理程序之前,流水线都无法正常运作。

因此,流水线的引入只能是优化了原本的流程,流水线的级数也不能太多,流水线级数越多,芯片设计的复杂程度也越高,芯片的功耗也越高。

ARM CPU 三级流水线(基于ARMV7)

3级流水线如上图所示(PC为程序计数器),流水线使用3个阶段,因此指令分3个阶段执行。

⑴ 取指-从存储器装载一条指令

⑵ 译码-识别将要被执行的指令

⑶ 执行-处理指令并将结果写回寄存器或者存储器

以前学过的51单片机,因为比较简单,所以它的处理器只能完成一条指令的读取和执行后,才会执行下一条指令。这样,PC始终指向的正在“执行”的指令。

而对于ARMV7来说因为是3级流水线,所以把指令的处理分为了上面所述的3个阶段。

所以处理时实际是这样的:ARM正在执行第1条指令的同时对第2条指令进行译码,并将第3条指令从存储器中取出。

所以,ARMV7流水线只有在取第4条指令时,第1条指令才算完成执行。

下图生动形象的说明了3级流水线的处理机制。

下面一句话很关键:无论处理器处于何种状态,程序计数器R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或者“正在译码”的指令

人们一般会习惯性的将正在执行的指令作为参考点,即当前第1条指令。

所以,PC总是指向第3条指令,或者说PC总是指向当前正在执行的指令地址再加2条指令的地址。

处理器处于ARM状态时,每条指令为4个字节,所以PC值为正在执行的指令地址加8字节,即是:

PC值 = 当前程序执行位置 + 8字节

处理器处于Thumb状态时,每条指令为2字节,所以PC值为正在执行的指令地址加4字节,即是:

PC值 = 当前程序执行位置 + 4字节

下面一个例子就很好的说明了这个问题。

  1. 0x4000 ADD PC,PC,#4 ;正在被执行的指令,将地址值PC+4写入PC

  2. 0x4004 ...;正在被译码的指令

  3. 0x4008 ...;正在被取指的指令,PC=0x4008

  4. 0x400C ...;PC+4=0x400C

另外补充说明就是根据以上描述,流水线只有被指令填满时才能发挥最大效能,即每时钟周期完成一条指令的执行(仅单周期指令)。

如果程序发生跳转,流水线会被清空,这将需要几个时钟才能使流水线被再次填满。因此,尽量地少使用跳转指令可以提高程序的执行效率。

首先看下ARM7和ARM9的流水线区别和联系:

    

    相比ARM7,ARM9采用了更高效的五级流水线设计,在取指令、译码、执行之后,又增加了LS1和LS2阶段,LS1负责加载和存储指令中制定的数据,LS2则负责提取、符号扩展,通过字节或半字加载命令来加载数据,但是LS1和LS2仅对加载(LDR)和存储命令(STR)有效,其他的指令是不需要执行这两个阶段的。

   ARM9五级流水线中,读寄存器的操作转移到译码阶段,将三级流水中的执行阶段进一步细化,减少每个始终周期内必须要完成的工作量,这样可以使流水线的各个阶段在功能上更加平衡,避免数据的访问和取指的总线冲突,每条指令的平均周期明显减少。

    

    

ARM存储格式

作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB(232字节)。从零字节到三字节放置第一个存储的字数据,从第四个字节到第七个字节放置第二个存储的字数据,依次排列。

ARM体系结构可以用两种方法存储字数据,称为大端格式和小端格式。

大端格式(big-endian):字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。

小端格式(low-endian):与大端存储格式相反。低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。缺省设置为小端格式。

Thumb技术

ARM的RISC体系结构的发展中已经提供了低功耗、小体积、高性能的方案。而为了解决代码长度的问题,ARM体系结构又增加了T变种,开发了一种新的指令体系,这就是Thumb指令集,它是ARM技术的一大特色。

Thumb是ARM体系结构的扩展。它有从标准32位ARM指令集抽出来的36条指令格式,可以重新编成16位的操作码。这能带来很高的代码密度。

支持Thumb的ARM体系结构的处理器状态可以方便的切换、运行到Thumb状态,在该状态下指令集是16位的Thumb指令集。

9 ARM体系结构版本及系列

9.1 ARM体系结构版本

ARM架构包含了指令集、寄存器集、存异常模型、内存模型等内容。

ARM体系结构版本指的是ARM对应的各种指令集。迄今为止,ARM体系结构定义了ARMv1~ARMv8共八个版本。

“指令集架构”命名

| ARMv | n | variants | x(variants) |

  • 分成四个组成部分:
  • ARMv -- 固定字符,即ARM Version
  • n -- 指令集版本号。迄今为之,ARM架构版本发布了8个系列,所以n=[1:8]。
  • variants -- 变种。
  • x(variants) -- 排除x后指定的变种

常见的variants有以下字母可选:

  • T -- Thumb指令集
  • M -- 长乘法指令
  • E -- 增强型DSP指令
  • J -- Java加速器Jazelle
  • SIMD -- ARM媒体功能扩展

ARMv1:1985年发布,最早的ARM架构。

ARMv2:1986年发布,改进了ARMv1,增加了32位地址总线和指令集扩展(增加了一些指令)。

ARMv3:1992年发布,支持虚拟内存、增加了指令集扩展,包括支持协处理器(coprocessor)。

ARMv4:1994年发布,增加了Java虚拟机指令集扩展(Jazelle)和Thumb指令集,提高了代码密度。

ARMv5:1997年发布,增加了支持嵌入式Java的指令集扩展(Jazelle-RCT)、增加了支持浮点运算的指令集扩展(VFP)。

ARMv6:2002年发布,增加了Thumb-2指令集,提高了代码密度和执行效率,同时也增加了一些指令集扩展,包括支持Jazelle-DBX。

ARMv7:2004年发布,增加了基于TrustZone的安全扩展、NEON指令集扩展,支持向量浮点运算(VFPv3)等。

ARMv8:2011年发布,增加了AArch64架构,支持64位处理器,同时保留了AArch32架构,提高了性能和能耗效率。

ARMv9:2021年发布,增加了Confidential Compute Architecture(CCA)和Realms技术,提高了安全性和隔离性。
 


 01

ARM版本I:V1版架构

该架构只在原型机ARM1出现过,有26位的寻址空间目前未曾用于商业用途。

基本性能:

  • 基本的数据处理指令(无乘法)

  • 基于字节、半字节和字的Load/Store指令

  • 转移指令,包括子程序调用及链接指令

  • 供操作系统使用的软件中断指令SWI

  • 寻址空间:64MB(226)

02

ARM版本II:V2版架构

V2版本架构是对V1版本架构的发展和拓展。例如ARM2和ARM3(V2a)架构,包含了对32位乘法指令和协处理器指令的支持。版本2a是版本2的变种,ARM3芯片采用了版本2a,是第一片采用片上Cache的ARM处理器。同样为26位寻址空间,但现在已经被废弃了。

V2版本架构在V1版本架构的基础上增加了许多新功能:

  • 乘法和乘加指令

  • 支持协处理器操作指令

  • 快速中断模式

  • SWP/SWPB的最基本储存器和寄存器交换指令

  • 寻址空间:64MB

03

ARM版本III:V3版架构

ARM公司设计的第一个微型处理器ARM6采用的就是V3版本,它作为IP核、独立的处理器、具有片上高速缓存、MMU和写缓冲的集成CPU。变种版本有3G和3M。版本3G是不与版本2a向前兼容的版本3,版本3M引入了有符号和无符号数乘法和乘加指令,这些指令产生全部64位结果。 

虽然V3版本目前也已经废弃,但其却对ARM体系结构进行了很大的改动:

  • 当前程序状态信息从原来的R15寄存器移到当前程序状态寄存器CPSR中(Current Program Status Register)

  • 增加了程序状态保存寄存器SPSR(Saved Program Status Register)

  • 增加了两种异常模式,使操作系统代码可方便地使用数据访问中止异常、指令预 取中止异常和未定义指令异常。

  • 增加了MRS/MSR指令,以访问新增的CPSR/SPSR寄存器

  • 增加了从异常处理返回的指令功能

  • 寻址空间增至32位(4GB)

04

ARM版本IV:V4版架构

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

指令集中增加的功能:

  • 符号化和非符号化半字及符号化字节的存/取指令

  • 增加了T变种,处理器可工作在Thumb状态,增加了16位Thumb指令集

  • 完善了软件中断SWI指令的功能

  • 处理器系统模式引进特权方式时使用用户寄存器操作

  • 把一些未使用的指令空间捕获为未定义指令

05

ARM版本V:V5版架构

ARM10和Xscale都采用的是V5版本架构,其又在V4版本基础上增加了一些新命令:

  • 带有链接和交换的转移BLX指令

  • 计数前导零CLZ指令;BRK中断指令

  • 增加了数字信号处理指令(V5TE版)

  • 为协处理器增加更多可选择的指令

  • 改进了ARM/Thumb状态之间的切换效率

  • E----增强型DSP指令集,包括全部算法操作和16位乘法操作

  • J----支持新的JAVA,提供字节代码执行的硬件和优化软件加速功能

06

ARM版本VI:V6版架构

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

V45版本架构有也在V5版本架构的基础上增加了许多新功能:

  • THUMBTM:35%代码压缩;

  • DSP扩充:高性能定点DSP功能;

  • JazelleTM:Java性能优化,可提高8倍;

  • Media扩充:音/视频性能优化,可提高4倍

07

ARM版本VII:V7版架构

V7版本架构采用了Thumb-2技术,它是在ARM的Thumb代码压缩技术的基础上发展起来的, 并且保持了对现存ARM解决方案的完整的代码兼容性。Thumb-2技术比纯32位代码少使用31%的内存,减小了系统开销。同时能够提供比已有的基于Thumb技术的解决方案高出38%的性能。

另外,ARMv7架构还采用了NEON技术,将DSP和媒体处理能力提高了近4倍,并支持改良的浮点运算,满足下一代3D图形、游戏物理应用以及传统嵌入式控制应用的需求。此外,ARMv7还支持改良的运行环境,迎合不断增加的JIT(Just In Time)和DAC(DynamicAdaptive Compilation)技术的使用。

08

ARM版本VIII:V8版架构

V8版本架构是在32位ARM架构上进行开发的,将被首先用于对扩展虚拟地址和64位数据处理技术有更高要求的产品领域,如企业应用、高档消费电子产品。ARMv8架构包含两个执行状态:AArch64和AArch32。AArch64执行状态针对64位处理技术,引入了一个全新指令集A64;而AArch32执行状态将支持现有的ARM指令集。目前的ARMv7架构的主要特性都将在ARMv8架构中得以保留或进一步拓展,如:TrustZone技术、虚拟化技术及NEON advanced SIMD技术等。

9.2 ARM处理器系列

目前,基于ARM体系结构的ARM处理器包括ARM7、ARM9、ARM9E、ARM10E、SecurCore和Intel公司的Xscale等多个系列。他们除了具有ARM体系结构的共同特点之外,每个系列还都有各自的特点和应用领域。

在 ARMv7 以后时期,公司改革了以前的冗长的命名方法,用看起来比较整齐的办法,统一用 Cortex 作为主名


经典处理器都是按照数字命名的,直到ARM11。也就是推出架构v7的时候,ARM公司把产品并分为三大产品线,分别是Cortex-A、Cortex-R和Cortex-M。

近两年推出的cortex-X并不是单独的产品线,它可看做cortex-A的升级版,两者的市场定位是一样的。
 

性能

9.3 架构和系列的映射关系

 

AEM内核(架构)版本及处理器版本

ARMv1:ARM1

ARMv2:ARM2、ARM3

ARMv3:ARM6、ARM7

ARMv4:StrongARM、ARM7TDMI、ARM9TDMI

ARMv5:ARM7EJ、ARM9E、ARM10E、XScale

ARMv6:ARM11、ARMCortex-M

ARMv7:ARMCortex-A、ARMCortex-M、ARMCortex-R

ARMv8:ARMCortex-A30、ARMCortex-A50、ARMCortex-A70

9.4 ARM 指令

 ARM指令集仍在不断发展当中。2011年,ARM发布了ARMv8架构。它包含了一些新的指令集用于64位操作。当前ARMv8架构仅限于Cortex-A处理器,Cortex-M处理器暂不包含这种架构。

指令集是指处理器能够识别并执行的指令集合。

ARM,Advanced RISC Machines,先进精简指令集机器,其中RISC是Reduced Instruction Set Computer的缩写,意为精简指令集处理器,ARM是RISC最突出的代表,其它比较有名的RISC指令集还有:MIPS,PowerPC,SPARC,RISC-V。

与RISC相对的是CISC,Complex Instruction Set Computer,复杂指令集处理器,闻名世界的X86指令集就是一种CISC指令集。

ARM指令集也是一个统称,实际上ARM指令集还分为 ARM64指令集、 ARM32指令集、THUMB指令集、THUMB-2指令集、NEON指令集、VFP指令集、DSP指令集。不同版本架构支持不同指令集。

9.5 ARM 命名规则

提到的命名规则,应该分成两类。

1、基于ARM Architecture版本的“指令集架构”命名规则;

2、基于ARM Architecture版本的“处理器系列”命名规则

比如: s3c2410采用ARMv4T架构版本,ARM920T处理器系列

1、“指令集架构”命名

| ARMv | n | variants | x(variants) |

分成四个组成部分:

·ARMv -- 固定字符,即ARM Version

·n -- 指令集版本号。迄今为之,ARM架构版本发布了8个系列,所以n=[1:8]。

·variants -- 变种。

·x(variants) -- 排除x后指定的变种

常见的variants有以下字母可选:

·T -- Thumb指令集

·M -- 长乘法指令

·E -- 增强型DSP指令

·J -- Java加速器Jazelle

·SIMD -- ARM媒体功能扩展

比如:ARMv5TxM表示ARM指令集版本为5,支持T变种,不支持M变种

2、“处理器系列”命名

2.1 在 ARMv3 ~ ARMv6 时期

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

·x -- 处理器系列

·y -- 存储管理/保护单元

·z -- cache

·T -- 支持Thumb指令集

·D -- 支持片上调试

·M -- 支持快速乘法器

·I -- 支持Embedded ICE,支持嵌入式跟踪调试

·E -- 支持增强型DSP指令

·J -- 支持Jazelle

·F -- 具备向量浮点单元VFP

·-S -- 可综合版本

比如:ARM926, 属于ARMv5指令集架构的,CPU是 ARM9系列的,

2个存储管理/保护单元,6个 Cache【?不确定】

2.2 在 ARMv7 以后时期

公司改革了以前的冗长的命名方法,用看起来比较整齐的办法,统一用 Cortex 作为主名。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/568139
推荐阅读
相关标签
  

闽ICP备14008679号