历史上的今天
返回首页

历史上的今天

今天是:2025年04月08日(星期二)

正在发生

2020年04月08日 | 技术文章—Arm内核解析

2020-04-08 来源:EEWORLD

Arm 架构已经主导了当今嵌入式处理和计算市场,但在过去的几十年里,Arm 架构却走过了漫长的道路。从20世纪80年代开始,它起初是作为家用电脑处理器,然后在20世纪90年代成为手机芯片的基础。如今,在几乎所有技术细分市场,Arm都是一个强有力的竞争者。许多人认为,Arm 架构已成为 32 位或 64 位处理器的首选。由于这种广泛应用,现在已经有成千上万种基于Arm架构的变体。了解这些内核彼此之间的不同是做出选择决策的重要一环。

 

早在 2004 年,最初的 Cortex 家族就使 Arm架构分化为三个内核产品组,每个产品组都针对不同类型的应用。最早集成到芯片的是Cortex-M,它已成为基于Arm微控制器(MCU)生态系统的支柱。尽管Cortex-M系列首次推出的是基于版本7架构的内核,但后来针对超低成本设备(即M0、M0+和M1)的新产品则是基于早期版本6架构。所有Cortex-M处理器仅执行Thumb指令集。另外两个系列被设计为支持Thumb和完整的A32指令集。

 

image.png?imageView2/2/w/550

图1:Silicon Labs的EFM  Tiny Gecko(小壁虎)。

 

自推出以来,Cortex-M3已经得到许多MCU供应商的采用,Cortex-M3内核帮助这些MCU厂商定义其32位产品。现在市场可用的MCU包括相对简单但又具备高性价比的产品,例如针对低功耗系统的Silicon Labs 的 EFM Tiny Gecko,以及赛普拉斯(Cypress)半导体的 PSoC5片上系统,它使传统的MCU外设与高度灵活的可编程模拟功能结合在一起。

 

随着MCU应用开始要求提供更高的数字信号处理(DSP)性能,Arm推出Cortex-M4以满足市场的需求。该内核可为浮点运算提供支持,得到许多厂商的采用。一种常见的配置是将强大的Cortex-M4F内核与较为简单的Cortex-M0或Cortex-M0+整合在一起,为用户提供高效的电源管理和资源分配。

 

在赛普拉斯 PSoC6 或恩智浦(NXP)LPC5411x等器件中,M0+内核可以处理中断(interrupts),使M4或M4F可自由处理 DSP 任务,而不会产生中断,从而能够最大限度地提高数据吞吐量。这种责任划分也使更强大的M4内核能够在活动突发之间进行较长时间睡眠。低功耗M0+ 可在相对有限的运行期间处理比较简单的系统管理任务。

 

image.png?imageView2/2/w/550

图 2:来自赛普勒斯半导体的 PSoC6。

 

2014 年,Arm推出了M7内核,将 Cortex-M 的性能提高到新的层级。此内核采用六级超标量(superscalar)流水线架构,支持乱序操作,并通过完整的浮点运算单元来进一步增强。意法半导体的STM32F730x8集成了M7内核、各种外设和公司专有的ART加速器技术(能够实现闪存的零等待状态执行)。

 

Cortex-A

 

2005 年,出于满足手机业务向智能手机和平板电脑方向发展的需求变化,Arm推出了Cortex-A家族的首个成员。Cortex-A 旨在提供一系列针对应用处理器定制的功能,也为在服务器和其他高端计算系统中部署 Arm内核铺平了道路。

 

Cortex-A 处理器与其他系列处理器之间的一个主要区别是支持分页内存管理单元(MMU)。Linux和类似的操作系统都需要MMU,因为它能够将程序及其数据在现实内存中映射到不同虚拟地址空间,这提供了一定程度的安全保护功能,可防止不同任务使用的数据被破坏,此外还能够将物理内存视为大型缓存。尽管程序是动态加载和卸载,它还能够避免内存碎片化引起的问题。

 

使用分页虚拟地址的一个潜在缺点是它们可能干扰实时操作,因此在Cortex-A处理器中增加了MMU,但在具有更强嵌入式系统功能的产品系列中却没有。Cortex-A架构从诞生之初的一个关键创新是TrustZone,由此可实现一个基于硬件的安全层,如果没有所需的安全证书,虚拟设备管理器(hypervisor)能够拒绝任何任务对处理器和内存某些部分的访问。TrustZone可将加密操作和其他敏感操作纳入受硬件防火墙保护的虚拟处理器。

 

在内核方面,范围从相对简单的Cortex-A5到高性能超标量处理器,如Cortex-A72整合了同时发出三个指令的能力和执行无序操作,简化了调度以实现最高效率。

 

Cortex-A家族的第二个重大创新是LITTLE框架,它是在2011年推出,这主要反映了针对应用处理器市场的M4引入后不同Cortex-M内核的耦合,增强了支持应用处理器需求的其他功能。

 

对于较大LITTLE,Arm采用了将低端内核(如A5或A7)与高性能,且通常是超标量实施相结合的方法。在可能的情况下,操作系统会保持低功耗处理器的活动时间尽可能长,然后在工作负载超过特定阈值时才激活高功率内核。与传统的双核架构不同,任务可以根据系统条件从一个处理器迁移到另一个处理器。随着对性能需求的增加,越来越多的Cortex-A实施都是围绕处理器复合体采用四个高端内核。通过在性能要求比较平静的期间关闭一个或多个内核,这种安排可以节省功率。

 

Cortex-R

 

Cortex-R是Arm公司第三大系列内核,通过采用实时且高度可靠的功能,能够支持新一代复杂的汽车和网络系统。在一些目标应用中需要一些确定性性能,意味着通常用于加快其他 Arm 处理器的缓存并不总是最佳方案。由于缓存会动态地将指令和数据值替换为最近使用的条目,因此,当中断服务例程或实时任务需要时,关键信息可能不在缓存中。Cortex-R家族通过支持紧密耦合存储器(TCM)库克服了这一问题。因此,关键信息可以在操作过程中存储在其中,并且通过软件管理,避免了指令和数据被缓存管理子系统替换的风险。

 

自从最初的Cortex-R4诞生以来,这个家族已经发生了很多进化,其中Cortex-R5和R7内核具有低延迟外围端口。大多数内核都设计为与Arm 硬件总线 (AHB)等片上总线配合使用,或者在最近的内核中,结合使用高级可扩展接口(AXI)基础架构。低延迟端口将内核直接连接到重要的外围设备,无需对总线进行仲裁,或等待其他总线访问活动完成,即可进行访问。

 

为了支持高度可靠的操作,Cortex-R内核上的缓存、TCM 和系统总线可以使用错误修改编码来透明地更正单位(single-bit)错误并检测双位错误。由于模块化冗余是安全关键型系统的核心部分,Cortex-R 系列内核设计为可使用副本在锁定步骤中工作。如果片上监视器检测到输出差异,它可以警告存在的问题,以便软件能够采取纠正措施。采用Cortex-R 系列而生产的一个芯片例证是赛普拉斯半导体的Traveo S6J33xx系列 MCU,它集成有Cortex-R5F内核,运行在高达240MHz的频率,并集成有针对汽车仪表板中驱动仪表群集而优化的外围设备。

 

Arm v8 

 

在2011 年,随着版本8体系架构的创建,迎来了Arm内核产品的第二波更改,包括增强了具体应用在64位模式下运行的能力,极大地扩展了应用处理器的最大可寻址内存空间。具有64位能力的Arm v8 处理器可以在 32位或 64位模式下运行。32位运行与为版本7处理器编写的应用提供向后兼容性。由于Cortex-M 系列中的版本8处理器专注于MCU应用,因而不支持64位寻址。但是,它们确实增加了许多额外的指令和功能,以提高性能并增强安全操作。

 

其中一个重要的进步是重新设计的内存保护单元(MPU),它允许更灵活地管理分区。另一个是完全支持仅执行内存(execute-only-memory),以帮助防止反向工程和黑客攻击。但是,安全性方面最大的变化是支持专门针对深度嵌入式处理器而优化的TrustZone机制。

 

对于Cortex-M 版本中TrustZone,无需软件虚拟设备管理器来管理安全状态和非安全状态之间的转换。相反,可使用专用指令从不安全的任务传递数据到安全的功能,以保护允许在特权模式下运行。如果没有正确的权限,即使高优先级中断也无法读取到寄存器中的安全数据。安全功能允许创建保护良好的 IoT 设备,这些都可以通过基于Cortex-M23和Cortex-M33等内核的MCU实现。

 

Microchip的 SAML11 MCU采用了Cortex-M23增强型片上加密控制器,可为传感器节点和类似设计提供硬件安全保证。Nordic Semiconductor的nRF9160采用Cortex-M33来提供需要安全射频通信的器件处理功能。

 

image.png?imageView2/2/w/550

图 3:Microchip公司的 SAML11 MCU 示例。

 

结论

 

毫无疑问,Arm是全球电子行业中最伟大的成功案例之一。为了满足许多不同市场的需求,Arm提供的广泛产品组合继续向多个方向扩展。Cortex-A、Cortex-M和Cortex-R等细分产品系列的进一步区分,已证明是这种快速增长的基础,并且将继续推动Arm内核在不断出现的新领域得到广泛应用。

Arm
推荐阅读

史海拾趣

Auctor Corp公司的发展小趣事

Auctor Corp公司深知品质是企业生存和发展的关键。因此,公司从原材料采购、生产流程控制到产品出厂检验,每一个环节都严格把控品质。同时,公司还建立了完善的品质管理体系,通过持续改进和优化生产流程,确保产品质量的稳定性和可靠性。这种对品质的执着追求,使得Auctor Corp的产品在市场上赢得了良好的口碑。

ABCO公司的发展小趣事

ABCO公司深知产品质量是企业生存的根本。因此,公司建立了一套严格的质量管理体系,从原材料采购到产品生产、检测、出厂等各个环节都进行严格把控。同时,公司还注重持续改进,不断优化生产流程,提高生产效率,确保产品质量始终保持在行业前列。

DDK公司的发展小趣事

人才是企业发展的根本。DDK公司深知人才的重要性,因此一直致力于人才培养和引进。公司建立了完善的人才培养机制,通过内部培训、外部引进等多种方式,不断吸引和培养了一批批优秀的电子工程师、研发人员和管理人才。这些人才为公司的发展提供了强大的智力支持和人才保障。

泰科天润(GPT)公司的发展小趣事

在电子行业中,产品质量是企业生存和发展的关键。DDK公司深知这一点,因此始终将产品质量放在首位。公司建立了严格的质量管理体系,从原材料采购到产品生产、检测的每一个环节都严格把控,确保每一件产品都符合高标准、严要求。这种对品质的执着追求,让DDK公司的产品在市场上赢得了良好的声誉,赢得了消费者的信任和忠诚。

Hirel Systems Ltd公司的发展小趣事

在电子行业中,产品质量是企业生存和发展的关键。DDK公司深知这一点,因此始终将产品质量放在首位。公司建立了严格的质量管理体系,从原材料采购到产品生产、检测的每一个环节都严格把控,确保每一件产品都符合高标准、严要求。这种对品质的执着追求,让DDK公司的产品在市场上赢得了良好的声誉,赢得了消费者的信任和忠诚。

GaN Systems公司的发展小趣事

GAIA盖亚电源深知质量是企业生存和发展的基石,因此一直将质量管理放在首位。公司通过了ISO9001 V2008等国际质量管理体系认证,并建立了完善的质量管理体系。在生产过程中,GAIA盖亚电源采用高标准流程和自动化制造能力,确保每一个产品都符合严格的质量标准。此外,公司还定期对产品进行严格的测试和验证,以确保其在实际应用中的可靠性和稳定性。

问答坊 | AI 解惑

飞电容:模拟信号隔离方法之一

问题的由来 在电子工程专辑的论坛里,有个网友提问:如何解决4-20MA信号的隔离问题。我立刻想到了20多年前解剖的一个美国产品的过程,感觉在这里写个帖子,可能会对大家有启发。 这里要声明的是本文所论述的内容应该算是转述,有关“飞电容”概念的提 ...…

查看全部问答>

新生代工程师的技术人生(一)

一、成长--从摇滚青年到设计精英 9月的一天,在一场技术研讨会上,A君一边老到地翻看着Demo板,一边询问着一些技术细节,俨然一个技术高手,可是谁能想到,3年前,他曾是一个痴迷音乐的摇滚青年。 那是2003年的时候,他经常穿着 ...…

查看全部问答>

FPGA专用术语汇总

FPGA专用术语汇总…

查看全部问答>

请教触摸屏触摸不准的问题

我用的SAM9263Ek的开发板,触摸屏控制芯片是ads7843,Linux内核版本是2.6.20,前面接的一个320×240的屏,驱动正常,现在换成了一个800×600的屏,触摸的坐标不准,打印后发现一直在(65,90)附件。请问有没有哪位大侠知道原因,请指点一下。谢谢 ...…

查看全部问答>

光纤通信中的曼彻斯特解码问题。

我在光纤的接收端做了一个曼彻斯特解码模块(Verilog写的),没有任何校验算法加入。误码率很高,基本上是1%左右,哪位做过这东西,帮忙解释解释。谢谢…

查看全部问答>

关于驱动2次安装问题

按照网上各种网址上的安装介绍,装驱动连续安装2次就行了,可是我使用厂家给的驱动只能装1次  第二次装不了。。。得到截图如下,悲催的  怎么解决啊 USB型的430仿真器…

查看全部问答>

RS485总线隔离模块MRT485DLT在STM32F103VET系统中的使用

注意:在低功耗系统中需要主要在进入低功耗状态时,需要将MCU的串口设置为高阻态状态,以避免I/O口泄露的电流造成的不必要功耗。 点击这里下载PDF文档 http://www.miractech.com/soft/STM32_MRT485DLT.pdf 点击这里下载Protel99se格式文件 ht ...…

查看全部问答>

无线通信

新手求教,要求无线传输距离在200-1000m,请问用什么无线芯片或者模块号呢…

查看全部问答>

出一块FPGA开发板

本帖最后由 2638823746 于 2014-6-11 11:19 编辑 出一块zedboad 开发板,基本全新,包装在,所有的配件也在,光盘也在,基本是全新的,需要的联系我的QQ 2638823746,另外送一本书,嵌入式系统软硬件协同设计实战指南:基于Xilinx Zynq(附光盘) 照 ...…

查看全部问答>

【视频】演示在Altera SoC上面的Android应用程序

$(\'flv_Eoz\').innerHTML=(AC_FL_RunContent(\'width\', \'500\', \'height\', \'375\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', \'http://player.youku.com/player.php/sid/XNjA1ODg4MDc2/v.swf\', \'qu ...…

查看全部问答>