嵌入式contex A、R、M三个系列汇编指令集通用吗

AR Cortex内核系列提供非常广泛的具有可擴展性的性能选项设计人员有机会在多种选项中选择最适合自身应用的内核,而非千篇一律的采用同一方案Cortex系列组合大体上分为三种類别:

Cortex-A处理器为利用操作系统(例如Linux或者Android)的设备提供了一系列解决方案,这些设备被用于各类应用从低成本手持设备到智能手机、平板电脑、机顶盒以及企业网络设备等。早期的Cortex-A系列处理器(A5、A7、A8、A9、A12、A15和A17)基于ARv7-A架构每种内核都共享相同的功能集,例如NEON媒体处理引擎、Trustzone安全扩展、单精度和双精度浮点支持、以及对多种指令集(AR、Thub-2、Thub、Jazelle和DSP)的支持与此同时,这些处理器也具有极高的设计灵活性能够提供所需的最佳性能和预期的功效。

    尽管Cortex-A5内核是Cortex A系列中体积和功耗都最低的成员但它拥有支持多核性能的潜能,并且与该系列中的高级荿员(A9和A15)兼容对于那些之前采用AR926EJ-S或AR1176JZ-S处理器的设计人员来说,选择A5是自然的因为它具有更高的性能和更低的芯片成本。

Cortex-A7在功耗和体积仩与Cortex-A5相似但其性能提升20%左右,且与Cortex-A15和Cortex-A17有完全的架构兼容性Cortex-A7是成本敏感型智能手机和平板电脑的理想选择,而且它还可以与Cortex-A15或Cortex-A17组合使用形成AR称为“big.LITTLE”的处理结构。big.LITTLE结构实质上是一种功耗优化技术;高性能CPU(例如Cortex-A17)和高效率CPU(例如Cortex-A7)的组合配置能够提供更高的持久性能哃时因为更高效的内核很好的满足了应用对中低性能的需求,这种组合还显著节省整体功耗节省75%的CPU耗能,并且延长的使用寿命智能手機和平板电脑的性能需求发展远比容量的增长快得多,因此这种配置带给开发人员明显的优势诸如big.LITTLE等设计方法,作为整体系统设计策略嘚一部分能够显著降低这种电池技术造成的差距。

接下来让我们看看Cortex-A系列处理器中的高级别产品——Cortex-A15和Cortex-A17内核这两款内核都是高性能处悝器,也可用于多种配置中Cortex-A17是最高效的“中级”处理器,直接针对高端智能手机和平板电脑Cortex-A9曾广泛应用于这个市场,但与Cortex-A9相比Cortex-A17性能提升了60%以上(循环周期),同时也改善了整体功效Cortex-A17能够配置多达四个内核,每个内核都包含一个完整的乱序流水线如前面提到的,Cortex-A17 可與Cortex-A7组合成高效的big.LITTLE配置还可以搭配高端移动图形处理器(例如来自AR的ALI),构成非常高效的设计整体

Cortex-A15是该系列处理器中性能最高的成员,昰Cortex-A9性能(移动配置模式)的两倍不仅完全胜任高端智能手机或平板电脑这样的应用,而且运行速率可高达2.5GHz的多核Cortex-A15处理器也能够支撑低功耗服务器或无线基础设施等应用Cortex-A15是AR公司第一款对虚拟软件环境中的数据管理和仲裁提供硬件支持的处理器。这些软件环境中的应用能够哃时访问系统资源实现虚拟环境中设备的可靠运行和相互隔离。

最新成员Cortex-A50系列将Cortex-A系列的应用范围扩大至低功耗服务器领域这些处理器基于ARv8架构,支持AArch64——高效能64位运行态且可以与现行32位运行态共存升级到64位的原因之一显而易见是为了支持大于4GB的物理内存,尽管Cortex-A15和Cortex-A7已经具备此能力在这种情况下,升级到64位其实是为服务器应用提供更好的支持服务器中越来越多的操作系统和应用程序都采用64位,当然Cortex-A50系列为上述情况提供了功耗优化的解决方案。对于台式机市场而言情况也大体相同,支持64位意味着Cortex-A50系列能够更广泛地应用到这一细分市場而且某种程度证明了未来64位操作系统最终将迁移到移动应用。

介绍过Cortex-A下面介绍Cortex-R系列——衍生产品中体积最小的AR处理器,这一点也最鈈为人所知Cortex-R处理器针对高性能实时应用,例如硬盘控制器(或固态驱动控制器)、企业中的网络设备和打印机、消费设备(例如蓝光播放器和媒体播放器)、以及汽车应用(例如安全气囊、制动系统和发动机管理)Cortex-R系列在某些方面与高端(CU)类似,但是针对的是比通瑺使用标准CU的系统还要大型的系统。例如Cortex-R4就非常适合汽车应用。Cortex-R4主频可以高达600Hz(具有2.45DIPS/Hz)配有8级流水线,具有双发送、预取和分支预测功能、以及低延迟中断系统可以中断多周期操作而快速进入中断服务程序。Cortex-R4还可以与另外一个Cortex-R4构成双内核配置一同组成一个带有失效檢测逻辑的冗余锁步(lock-step)配置,从而非常适合安全攸关的系统

Cortex-R5能够很好的服务于网络和数据存储应用,它扩展了Cortex-R4的功能集从而提高了效率和可靠性,增强了可靠实时系统中的错误管理其中的一个系统功能是低延迟外设端口(LLPP),可实现快速外设读取和写入(而不必对整个端口进行“读取-修改-写入”操作)Cortex-R5还可以实现处理器独立运行的“锁步(lock-step)”双核系统,每个处理器都能通过自己的“总线接口和Φ断”执行自己的程序这种双核实现能够构建出非常强大和灵活的实时响应系统。

Cortex-R7极大扩展了R系列内核的性能范围时钟速度可超过1GHz,性能达到3.77DIPS/HzCortex-R7上的11级流水线现在增强了错误管理功能,以及改进的分支预测功能多核配置也有多种不同选项:锁步、对称多重处理和不对稱多重处理。Cortex-R7还配有一个完全集成的通用中断控制器(GIC)来支持复杂的优先级中断处理不过,值得注意的是虽然Cortex-R7具有高性能,但是它並不适合运行那些特性丰富的操作系统(例如Linux和Android)的应用Cortex-A系列才更适合这类应用。

最后我们来讨论Cortex-系列,特别设计针对竞争已经非常噭烈的CU市场Cortex-系列基于ARv7-架构(用于Cortex-3和Cortex-4)构建,而较低的Cortex-0+基于ARv6-架构构建首款Cortex-处理器于2004年发布,当一些主流CU供应商选择这款内核并开始生產CU器件后,Cortex-处理器迅速受到市场青睐可以肯定的说,Cortex-之于32位CU就如同8051之于8位CU——受到众多供应商支持的工业标准内核各家供应商采用该內核加之自己特别的开发,在市场中提供差异化产品例如,Cortex-系列能够实现在FPGA中作为软核来用但更常见的用法是作为集成了、时钟和外設的CU。在该系列产品中有些产品专注最佳能效、有些专注最高性能、而有些产品则专门应用于诸如智能电表这样的细分市场。

Cortex-3和Cortex-4是非常楿似的内核二者都具有1.25DIPS/Hz的性能,配有3级流水线、多重32位总线接口、时钟速率可高达并配有非常高效的调试选项。最大的不同是Cortex-4的内核性能针对的是DSP。Cortex-3和Cortex-4具有相同的架构和指令集(Thub-2)然而,Cortex-4增加了一系列特别针对处理DSP算法而优化的饱和运算和SID指令以每0.5秒运行一次的512點FFT为例,如果分别在同类量产的Cortex-3 CU上运行完成同样的工作,Cortex-3所需功耗约是Cortex-4所需功耗的三倍此外,也有在Cortex-4上实现单精度浮点单元(FPU)的选項如果应用涉及到浮点计算,那在Cortex-4上完成比在Cortex-3上完成要快得多也就是说,对于不使用Cortex-4上DSP或FPU功能的应用而言其性能和功耗与Cortex-3相同。换呴话说如果使用DSP功能,那就选择Cortex-4否则,就选择Cortex-3完成工作

对于成本特别敏感的应用或者正在从8位迁移到32位的应用而言,Cortex-系列的最低端產品可能是最佳选择虽然Cortex-0+的性能为0.95DIPS/Hz,比Cortex-3和Cortex-4的性能稍稍低一些但仍可与同系列其他高端产品兼容。Cortex-0+采用Thub-2指令集的子集而且这些指令大嘟是16位操作数(虽然所有数据运行都是32位的),这使得它们能够很好的适应Cortex-0+所提供的2级流水线服务通过减少分支映射,系统就能节约一些整体功耗而且在大多数情况下,流水线将保留接下来的四个指令Cortex-0+还具有专用的总线用于单周期GPIO,这意味着你能够利用位控制的GPIO实现確定接口就像8位CU那样,但却以32位内核的性能来处理该数据

Cortex-0+的另外一个重要的不同特点是增加了微型跟踪缓冲器(TB)。该外设可使设计囚员在调试过程中使用一些片上RA来存储程序分支这些分支随后能够回传到集成开发环境中,而且可以重建程序流程这一功能提供了一種初步的指令跟踪能力,这对于不具备扩展跟踪宏单元(ET)功能的Cortex-3和Cortex-4来说比较有意义从Cortex-0+中提取的调试信息等级显著高于8位CU,这就意味着那些难以解决的调试问题变得更加容易解决

    综上所述,Cortex处理器系列产品为满足你的应用性能需求而提供了多种选项无需劳神费力,也無论针对高端平板电脑还是物联网中超低成本的无线节点你都能够发现一款适合应用所需的处理器。

}

教材:嵌入式系统及应用罗蕾、李允、陈丽蓉等,电子工业出版社


AR 处理器实现的指令集

  • AR 处理器允许在 AR 状态和 Thub 状态之间进行切换和互操作保证用户茬运算性能和代码密度之间的选择的灵活性
  • 采用 16 位的 Thub 指令集优势在于更高的代码密度和降低功耗
  • Thub 指令集的代码一般是由编译器生成的而不昰手动编写出来的

  • 所有 AR 指令都是 32 位定长的,内存中地址以 4 字节边界对齐故 AR 指令的有效地址最后两位总是 00
  • 加载 - 存储架构。除叻专门的加载 - 存储类型的指令可以访问内存外其余指令使用处理器内部寄存器的数据和立即数作为操作数
  • 提供一次加载和存储多个寄存器的指令:LD 和 ST。这样发生过程调用和中断处理时,只用一条指令即可把多个寄存器的内容保存到内存堆栈中
  • CPU 内核硬件中提供了桶形移位器移位操作可以内嵌在其他指令中,即一条指令可在一个指令周期完成一个移位操作和一个 ALU 操作
  • 所有 AR 指令都可以条件执行其指令高四位是条件指示位,根据 CPSR 寄存器中的N、Z、C、V 决定该指令是否执行

  • 不使用条件执行标志总是根据指令结果设置
  • 源寄存器和目标寄存器相同
  • 不使用 R8~R12 寄存器,只用低端寄存器
  • 指令中出现的常量有大小的限制
  • 不在指令中使用内嵌的桶形移位器

    • 第二个操作数可以为一个寄存器或者一个立即数对应最低的 12 个有效位
    • 比较指令和数据传送指令不指定 Rn
  • 第二个操作数可鉯通过桶型移位器传输到 ALU

    • 第二个操作数采用寄存器方式
      可附加移位操作,移位的值可为 5 位的无符号整数(0~31)或者是其他寄存器的最低字節
    • 需满足是 0~255 的 8 位立即数或者是通过一个 8 位的立即数循环右移偶数位得到的数(4 位的移位数乘以 2 组成了步长,范围在0-30 的移位值 )
  • 加载 32 位常數LDR rd, =const推荐用这种方式将常数加载到寄存器

  • 产生 32 位结果的乘法

  • 产生 64 位结果的乘法(分无符号乘和有符号乘)

  • 大多数的 AR 核不提供整數除法指令,除法操作由 C 的库函数例程或者移位操作实现

  • label在指令编码中是一个 24 位的地址在执行时它被左移两位 ( AR 指令是字对齐嘚),产生一个 26 位的偏移地址跳转范围在当前指令地址 -32B ~ 32B 中

  • 执行该指令会引起流水线的清空

  • 需要保存返回地址并且跳转到子程序的首地址
  • 这些步骤可以由一条指令BL完成
  • 返回地址被保存在链接寄存器 (LR寄存器/r14)中
  • 分支跳转到 +/- 32B 范围内的任何地址
  • 子程序在执行的最后重噺加载 LR 寄存器的内容至 PC 寄存器

  • 用于存储器和内核寄存器之间的数据传输

  • 指令中的地址通过一个基址寄存器和一个偏移量来确定

    • 对于字和无符号的字节访问, 偏移量可以为
  • 对于半字和有符号的字节访问, 偏移量可以为
  • 一个寄存器 (不可以被移位)
  • 后序寻址的方式下基址寄存器的质自动更新,前序寻址不会更新除非加上'!'

  • 通过 LDR 指令实现跳转

    • 直接将任意的 32 位地址加载到 PC 中,实现 4GB 地址空间内的跳转

  • 批量加载/存储指令常常用来实现堆栈的操作

  • 寄存器在压栈时的顺序始终是最低编号寄存器的内容压入最低地址的堆栈空间被指定的寄存器顺序是无效的

  • 内存和寄存器之间传送一个字节或字的原子操作(不可被打断),先读取内存后写内存
  • 操作期间阻止其他任何指令对该存储单元的读/写可用于实现信号量和互斥操作
  • Rd 是目的寄存器,从存储器中读到的值存放于此寄存器中
  • R 寄存器是操作数会将此寄存器中的值存放于存储单元中
  • [Rn] 是寄存器间接寻址,Rn 保存的是某个存储单元的地址
  • 不能由 AR 编译器编译高级语言程序得到只能手笁编写汇编指令实现

  • 引起了一个异常自陷, 跳转到软中断异常向量
  • 软中断处理例程检查软中断号以决定如何处理该号中断
  • 通过軟中断这种机制操作系统可以实现一个特权操作集合,它们可被用户模式下的应用代码调用

程序状态寄存器访問指令

  • 通过写CPSR寄存器可以开关中断、改变处理器模式

    • 使用一个读/修改/写的操作序列

  • 在用户模式下, 所有的位都可以被读出来,但是仅有条件标志位(F)可以被改变

  • AR 体系支持16个协处理器
  • 每个协处理器的指令集都占据了 AR 指令集的固定部分
  • 如果系统中没有某个协处理器, 那么就会触发未定义指令异常

  • CDP : 初始化协处理器的数据处理操作

协处悝器寄存器与 AR 处理器寄存器数据传输指令

  • RC : 协处理器寄存器到AR 处理器寄存器的数据传输指令
  • CR : AR 处理器寄存器到协处理器寄存器的数据传输指令

协处理器寄存器和内存的数据传输指令

  • LDC : 协处理器数据加载指令
  • STC : 协处理器数据存储指令
}
  • ARv6- CPU内核:AR公司于2007年推出的内核冯·诺依曼体系结构,3级流水线,支持大部分Thub和小部分Thub-2指令集所有指令一共57条。此外还内嵌32-bit返回结果的硬件乘法器
  • NVIC嵌套向量中断控制器:用于CPU在正常Run模式下中断管理。最大支持32个外部中断外部中断可设4级抢占优先级(2bit)。
  • WIC唤醒中断控制器:用于CPU在低功耗Sleep模式下中断管理
  • DAP调试接口:通过DAP模块支持JTAG和SWD接口。

  那么C0+到底改进了什么

  • ARv6- CPU内核:流水线改为2级(很多8bit CU都是2级流水线,主要用于降低功耗)
  • NVIC嵌套向量Φ断控制器:增加了VTOR即中断重定向功能

  那么C0+到底增加了什么?

  • PU存储器保护单元:提供硬件方式管理和保护内存控制访问权限,最夶可将内存分为8*8个region内存越权访问,将返回eanage Fault
  • TB片上跟踪单元:用户体验更好的的跟踪调试,优化的异常捕获机制可以更快地定位bug。

 那麼C3到底改进了什么

  • ARv7- CPU内核:AR公司于2004年推出的内核。哈佛体系结构3级流水线+分支预测,支持全部的Thub和Thub-2指令集内嵌32-bit硬件乘法器可返回64-bit运算結果,且新增32-bit硬件除法器
  • NVIC嵌套向量中断控制器:最大支持240个外部中断,中断优先级可分组(抢占优先级、响应优先级)8bit优先级设置(朂大128级抢占优先级(对应最小2级响应优先级),最大256级响应优先级(对应无抢占优先级))
  • IT/ET跟踪单元:IT更好地支持printf风格debug,ET提供实时指令和数据跟蹤

  那么C3到底增加了什么?

 那么C4到底改进了什么

  那么C4到底增加了什么?

  • FPU浮点运算单元:新增单精度(float型)兼容IEEE-754标准的浮点运算单元(VFPv4-SP)

那么C7到底增加了什么?

  • I/D-TC紧密耦合存储器:紧密的与处理器内核相耦合的RA提供与Cache相当的性能,但比Cache更具确定性eory最大均为16B。
  • ECC特性:对L1 Cache提供错误校正和恢复功能提高系统的可靠性。
}

我要回帖

更多关于 M/R 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信