新闻中心

EEPW首页 > 嵌入式系统 > 业界动态 > 选择最适处理器核心架构 嵌入式应用提高性价比

选择最适处理器核心架构 嵌入式应用提高性价比

作者:时间:2016-05-23来源:新电子收藏

  现阶段半导体晶片商多采用ARM的核心,来制造旗下或微控制器等产品。ARM的核心可分为A、R、M三个系列,各有不同性能,因此晶片商也须依各自瞄准的市场、功耗需求和作业系统等差异,来选择较适合的核心,藉以制造性价比佳的产品。

本文引用地址:http://www.eepw.com.cn/article/201605/291453.htm

  现今应用内须用到诸多,因此半导体厂商也积极投入布局,举例来说安谋国际(ARM)的处理器便广泛应用于领域。ARM Cortex-A系列处理器经常使用在需要多功能作业系统(Rich OS)或高效能的应用中,Cortex-R系列处理器拥有较佳的即时效能,Cortex-M系列处理器则用于微控制器等类型的小型应用。

  目前采用Cortex-M的产品范围涵盖非常多样化的选项,从外型设计小巧、功耗低的Cortex-M0,其使用在深层嵌入、对成本敏感的应用如智慧型感测器节点上,到应用在大众市场的微控制器的Cortex-M3及Cortex-M4。最佳的则是Cortex-M7,其具备更高的效能,可以执行密集运算的工作负载,像是讯号处理等。

  Cortex-M处理器采用的ARMv6-M和ARMv7-M架构,是更为简易且逻辑化的程式设计模型,专为简易使用所设计。处理器核心本身在设定上较弹性,能够用于更多样化的实作。

  虽然Cortex-M核心的简易性对大部分的应用来说是较佳的优势,但仍有其他应用需要更多功能、效能更高的环境。此类应用同样重视效率和耗电量,且经常需要Linux或Android等类型的平台作业系统。采用此类型的作业系统,则能够使用应用范围更广、更具多功能且复杂的软体生态系统,开发新的契机。

  Cortex-M处理器的设计并非针对这些高阶的作业系统,因此未包含其所需要的特定必要功能。举例来说,这些处理器未具备记忆体管理单元(MMU),在无法支援虚拟记忆体环境的情况下,当然也就不支援这一类的作业系统。若某项应用需要更多功能的作业环境,首选的通常是较高效率的Cortex-A核心。这些核心提供平台作业系统所需的较进阶功能,同时仍相当重视功耗,整体来说是更为高阶且弹性化的程式设计模型。

  有鉴于此,ARM Cortex-A处理器多部署于各种深度嵌入的应用,尤其是在需要Linux或其他多功能作业系统的市场。

  图1显示Cortex-A处理器目前的应用范围,重点在于其中的较低功耗核心。本文以此一系列中的最新型Cortex-A32处理器为主。

  

 

  图1 Cortex-A处理器与架构

  Cortex-A32是进入Cortex-A系列较理想的入门款,可用于需要多功能作业系统环境,或从Cortex-A处理器所提供的效能及功能中获益的应用。该处理器为目前拥有低功耗的ARMv8-A处理器,为穿戴式装置、物联网(IoT)和多功能嵌入式应用,尤其是需要Linux这一类平台作业系统之应用的较佳选择。

  抢攻32位元运算市场 A系列新处理器功耗更低

  Cortex-A32在ARM架构中扮演着独特的角色。其采用ARMv8-A架构,但仅支援32位元的运算。图2显示Cortex-A32如何融入ARMv8-A架构设定,以及与Cortex-A35的差异。

  

 

  图2 Cortex-A32与Cortex-A35比较

  Cortex-A35同时采用32位元的AArch32和64位元的AArch64两种执行状态,能够完整提供ARMv8-A架构的64位元功能。另一方面,Cortex-A32则只采用32位元的AArch32执行状态。移除了64位元的功能以后,不仅体积缩减,对于不需要64位元功能的使用来说,更能降低其功耗。尽管嵌入式领域中有许多应用都可从64位元的执行中获益,但有许多仍着重在32位元,且将在可预见的未来保持现况,而这些应用便是Cortex-A32的目标市场。

  AArch32执行状态为更早期的Cortex-A处理器所采用的ARMv7-A架构的进化版。据了解,Cortex-A32即使不具备64位元的功能,但仍提供某些重要的强化,因此功耗还是优于Cortex-A7和Cortex-A5。

  此外,对于仍采用这些旧版ARM处理器的延伸设计,或以此相同市场为目标的新设计而言,Cortex-A32仍是理想选择。

  AArch32优于ARMv7-A的特点包括:

  .新增许多新指令,加密演算功能效能更佳

  .新加入Load Acquire和Store Release指令,提供更有效率的记忆体排序功能,符合最新的C++11记忆体排序语法

  .额外的纯量与SIMD浮点指令

  .广泛的系统控制指令

  这些额外功能提供更佳的效能,更胜旧版32位元ARMv7-A处理器。

  Cortex-A32汇流排介面加入了先进同步扩展(ACE),因此能通过Cortex-A32来建构完全同步的多重处理系统,提高所需要的更高效能。

  假如空间或耗电量为主要的限制,Cortex-A32也有变体版本,特别针对单处理器应用最佳化,省略互连逻辑,以节省更多的功耗。

  Cortex-A32透过Large Physical Address Extension(LPAE)扩大了定址实体记忆体空间,超越Cortex-A5所提供的32位元(4GB)空间,可提供40位元定址空间。

  核心本身也整合其他多项有助于改善功耗的进阶功能,包括更弹性化的电源管理、更细微分布的电力区域,并使用保存功率闸级。

  ARMv7-M与ARMv8-A AArch32架构比较

  下文将比较ARMv7-M与ARMv8-A AArch32的架构特色与差异。

  ARMv7-M架构特色

  ARM Cortex-M处理器系采用ARMv7-M架构设定,Cortex-M0和Cortex-M0+则采用类似的ARMv6-M架构。

  此架构与先前的ARM架构有许多共同的特色,且经过特殊设计,以支援深层嵌入、低成本的即时微控制器应用。所以移除了旧架构的许多功能,但也加入新功能,制造出一个更像类微控制器的程式设计模型。

  举体来说,从旧型处理器(像是常见的ARM7TDMI)的变动可总结如下:

  .作业模式的数量从七个以上大幅减少到两个:Handler模式和Thread模式。其中一项模式(Handler模式)具选择性优先权限。

  .暂存器档经过简化。虽然开放供程式设计人员使用的暂存器基本上仍同样是十六个,旧型架构中所用的备份暂存器复制机制也大幅减少,因此只有Stack Pointer(r13)会在两个作业模式中加以暂存。备份暂存器为选择性使用,甚至可以省略。

  .最大的变动在于异常模式。由于一般的微控制器应用可能会有大量的晶片周边中断,所以标准的巢状向量中断控制器(Nested Vectored Interrupt Controller, NVIC)规格会包含在架构中,所有的Cortex-M核心均包含该规格。同样地,异常处理模式已在包含处理常式位址的向量表上加以标准化。内容的储存与回复作业完全在硬体上实作,简化写入中断处理的软体工作,如此可在实作时达到非常低且可预测的中断延迟时间。

  .ARMv7-M定义选择性的记忆体保护架构,该架构与某些旧型ARM处理器所用的架构类似。裸机系统或在即时作业系统(RTOS)下运作的系统由于通常不需要虚拟记忆体,因此不支援虚拟记忆体。

  .为支援各种即时作业系统的运作和执行,有些标准的晶片周边也会在架构中加以定义,如SysTick Timer。

  .为缩小处理器核心的大小,ARMv7-M处理器的运行限缩到只有Thumb指令集(包含Thumb-2延伸),仅执行最小的子集,进而实现最小的核心。

  ARMv8-A AArch32特色

  Cortex-A处理器采用ARMv7-A或ARMv8-A架构设定。ARMv8-A处理器提供AArch32执行状态,为32位元ARMv7-A架构的向下相容演化版。这些架构可实现专门设计用来支援Linux、Android、Windows等平台作业系统的功能,而这些系统需要虚拟记忆体环境。

  其与Cortex-M处理器核心截然不同的特定功能包括:

  .有七个以上的作业模式:User、Supervisor、阻断要求(IRQ)、快速中断(Fast Interrupt, FIQ)、Undefined、Abort、System。每一模式皆用于处理特定类型事件(例如IRQ模式便是设计用于处理IRQ中断)。AArch32亦支援Hyp和Monitor这两个额外的模式,这两个模式分别用于虚拟化及ARM TrustZone技术。

  .除了可用的登录数量相同(16),AArch32还有许多与上述作业模式相关的“备份”暂存器。进入相关的作业模式时,这些暂存器将取代User模式下的暂存器。如此可简化许多异常处理工作,但也表示机器的管理和初始化工作将增加。

  .其异常模式极为不同,其原型存在于最早的ARM架构装置中。具体来说,向量表包含一组可执行的指令集,而不是位址,且内容的储存与回复Restore工作几乎完全交给程式设计人员执行。

  .最大的差异是加入了记忆体管理单元,可执行核心所核发之虚拟位址,以及记忆体系统所需要的实体位址间的转译。如此便能实作完全的随选分页虚拟记忆体环境,以供Linux等平台作业系统使用。

  ARMv7-M与AArch32的差异

  从采用Cortex-M处理器的系统转换到采用Cortex-A32处理器时,有许多新功能值得关注。

  虽然这两种架构有许多类似之处(如备份暂存器和指令集之间有许多相同点),但重要的是ARMv8-A架构的AArch32执行状态所含的许多功能,均是以旧型架构的功能为基础。

  接下来说明AArch32所具备,但为ARMv7-M所无或差异极大的功能。

  作业模式

  如图3所示,ARMv7-M只定义两个作业模式:Thread模式与Handler模式。若无需要,Handler模式可选择性取消优先权限,虽然这项功能未必须要在软体内使用。Handler模式适用于处理异常,Thread模式则用于使用者处理程序。这两个模式转换基本上是自动的,会在特定事件下发生,如图3所示。例如,发生异常时会自动进入Handler模式,异常处理完成时则会退出Handler模式。SVCall指令为主要的方法,软体用其来进入Handler模式(也可将启用的IRQ设定为待处理状态,以执行Handler)。

  

 

  图3 ARMv7-M作业模式

  图4则显示AArch32执行状态支援的作业模式。与ARMv7-M相较,AArch32有七个基本模式,其中五个指定用于处理特定异常。例如,取得FIQ异常时会进入FIQ模式;若发生未定义指令等情形,会进入Undef模式。

  

 

  图4 AArch32作业模式

  模式的转换通常为自动发生,但也可在Current Program Status Register(CPSR)中写入Mode栏位,用软体控制来完整切换模式。其细节描述如下。与SVCall指令类似,SVC指令用于让软体引发SVC异常并进入SVC模式。

  图4中未显示AArch32所支援的另两个模式(为节省空间),也就是Hyp模式(用于Hypervisor)与Monitor模式(用于TrustZone安全性)。相关主题较为复杂,本文不予讨论。


上一页 1 2 下一页

关键词: 处理器 嵌入式

评论


相关推荐

技术专区

关闭