论坛风格切换切换到宽版
发帖 回复
返回列表  提醒:不能用迅雷等P2P下载,否则下载失败标(二级)的板块,需二级才能下载,没二级不要购买,下载不了
  • 769阅读
  • 2回复

[零组件/半导体]浅谈处理器核心构架,嵌入应用又有啥新招 [复制链接]

上一主题 下一主题
离线zoudzy
 

性别:
帅哥
发帖
490
金币
487
提示:会员销售的附件,下载积分 = 版块积分 + 销售积分       只看楼主 倒序阅读 使用道具 0楼 发表于: 2016-12-22
浅谈处理器核心构架,嵌入应用又有啥新招
XzW\p8D^u  
"`V:4uz  
q3D,hG_  
:cA8[!  
现阶段半导体晶片商多采用ARM处理器核心,来制造旗下处理器或微控制器等产品。ARM的核心可分为A、R、M三个系列,各有不同性能,因此晶片商也须依各自瞄准的市场、功耗需求和作业系统等差异,来选择较适合的核心,藉以制造性价比佳的产品。 }}LjEOvL=  
cS>xT cj  
现今嵌入式应用内须用到诸多处理器,因此半导体厂商也积极投入布局,举例来说安谋国际(ARM)的处理器便广泛应用于嵌入式领域。ARM Cortex-A系列处理器经常使用在需要多功能作业系统(Rich OS)或高效能的应用中,Cortex-R系列处理器拥有较佳的即时效能,Cortex-M系列处理器则用于微控制器等类型的小型应用。  
m'eM&1Ba  
q4niA  
目前采用Cortex-M的产品范围涵盖非常多样化的选项,从外型设计小巧、功耗低的Cortex-M0,其使用在深层嵌入、对成本敏感的应用如智慧型感测器节点上,到应用在大众市场的微控制器的Cortex-M3及Cortex-M4。最佳的则是Cortex-M7,其具备更高的效能,可以执行密集运算的工作负载,像是讯号处理等。   R=C+]  
2E.D0E Cu  
Cortex-M处理器采用的ARMv6-M和ARMv7-M架构,是更为简易且逻辑化的程式设计模型,专为简易使用所设计。处理器核心本身在设定上较弹性,能够用于更多样化的实作。   +vYVx<uTQ  
7Q|v5@;pU  
虽然Cortex-M核心的简易性对大部分的嵌入式应用来说是较佳的优势,但仍有其他应用需要更多功能、效能更高的环境。此类应用同样重视效率和耗电量,且经常需要Linux或Android等类型的平台作业系统。采用此类型的作业系统,则能够使用应用范围更广、更具多功能且复杂的软体生态系统,开发新的契机。   (r-PkfXvIf  
L,3%}_  
Cortex-M处理器的设计并非针对这些高阶的作业系统,因此未包含其所需要的特定必要功能。举例来说,这些处理器未具备记忆体管理单元(MMU),在无法支援虚拟记忆体环境的情况下,当然也就不支援这一类的作业系统。若某项应用需要更多功能的作业环境,首选的通常是较高效率的Cortex-A核心。这些核心提供平台作业系统所需的较进阶功能,同时仍相当重视功耗,整体来说是更为高阶且弹性化的程式设计模型。   '/fueku  
D.YT u$T  
有鉴于此,ARM Cortex-A处理器多部署于各种深度嵌入的应用,尤其是在需要Linux或其他多功能作业系统的市场。   q+)s  
36d6KS 7  
图1显示Cortex-A处理器目前的应用范围,重点在于其中的较低功耗核心。本文以此一系列中的最新型Cortex-A32处理器为主。  
Bam 4%G5  
 -K4uqUp  
图1 Cortex-A处理器与架构
<%"CQT6g %  
Cortex-A32是进入Cortex-A系列较理想的入门款,可用于需要多功能作业系统环境,或从Cortex-A处理器所提供的效能及功能中获益的应用。该处理器为目前拥有低功耗的ARMv8-A处理器,为穿戴式装置、物联网(IoT)和多功能嵌入式应用,尤其是需要Linux这一类平台作业系统之应用的较佳选择。   Ku8qn \2"  
h@{CMe  
抢攻32位元运算市场 A系列新处理器功耗更低   W3xObt3w\  
Cortex-A32在ARM架构中扮演着独特的角色。其采用ARMv8-A架构,但仅支援32位元的运算。图2显示Cortex-A32如何融入ARMv8-A架构设定,以及与Cortex-A35的差异。  
{qFAX<{D  
bKQ-PM&I/t  
图2 Cortex-A32与Cortex-A35比较
zrV~7$HL  
Cortex-A35同时采用32位元的AArch32和64位元的AArch64两种执行状态,能够完整提供ARMv8-A架构的64位元功能。另一方面,Cortex-A32则只采用32位元的AArch32执行状态。移除了64位元的功能以后,不仅体积缩减,对于不需要64位元功能的使用来说,更能降低其功耗。尽管嵌入式领域中有许多应用都可从64位元的执行中获益,但有许多仍着重在32位元,且将在可预见的未来保持现况,而这些应用便是Cortex-A32的目标市场。   T*#<p;  
~g&Gi)je  
AArch32执行状态为更早期的Cortex-A处理器所采用的ARMv7-A架构的进化版。据了解,Cortex-A32即使不具备64位元的功能,但仍提供某些重要的强化,因此功耗还是优于Cortex-A7和Cortex-A5。   `o%Ua0x2  
fn.}LeeS>  
此外,对于仍采用这些旧版ARM处理器的延伸设计,或以此相同市场为目标的新设计而言,Cortex-A32仍是理想选择。   t.] e8=dE  
;h4w<OqcM  
AArch32优于ARMv7-A的特点包括: b(_PV#@$  
.新增许多新指令,加密演算功能效能更佳   $kh6-y@  
GTW5f  
.新加入Load Acquire和Store Release指令,提供更有效率的记忆体排序功能,符合最新的C++11记忆体排序语法   0*:4@go0}i  
= $6pL  
.额外的纯量与SIMD浮点指令   gal.<SVW  
mg *kB:p  
.广泛的系统控制指令   <a=k"'0  
zg{  
这些额外功能提供更佳的效能,更胜旧版32位元ARMv7-A处理器。   M!iYj+nrP  
h|.*V$3  
Cortex-A32汇流排介面加入了先进同步扩展(ACE),因此能通过Cortex-A32来建构完全同步的多重处理系统,提高所需要的更高效能。   s ]Db<f  
5x}Or fDU  
假如空间或耗电量为主要的限制,Cortex-A32也有变体版本,特别针对单处理器应用最佳化,省略互连逻辑,以节省更多的功耗。   I< Rai"  
ea!Znld]  
Cortex-A32透过Large Physical Address Extension(LPAE)扩大了定址实体记忆体空间,超越Cortex-A5所提供的32位元(4GB)空间,可提供40位元定址空间。   ,IG?(CK|  
lR3JyYY{X  
核心本身也整合其他多项有助于改善功耗的进阶功能,包括更弹性化的电源管理、更细微分布的电力区域,并使用保存功率闸级。   _pR7sNeV  
<9Pf] G=  
pAd SOR2  
下文将比较ARMv7-M与ARMv8-A AArch32的架构特色与差异。   !S[7IBk%  
ARMv7-M架构特色   d=:&tOCg2  
ARM Cortex-M处理器系采用ARMv7-M架构设定,Cortex-M0和Cortex-M0+则采用类似的ARMv6-M架构。   G8F43!<  
+FYhDB~m  
此架构与先前的ARM架构有许多共同的特色,且经过特殊设计,以支援深层嵌入、低成本的即时微控制器应用。所以移除了旧架构的许多功能,但也加入新功能,制造出一个更像类微控制器的程式设计模型。   N2`u ]*"0  
M2y"M,k4  
举体来说,从旧型处理器(像是常见的ARM7TDMI)的变动可总结如下:   ZTP&*+d  
\:91BQP c  
.作业模式的数量从七个以上大幅减少到两个:Handler模式和Thread模式。其中一项模式(Handler模式)具选择性优先权限。   AME6Zu3Y  
;Z}V}B  
.暂存器档经过简化。虽然开放供程式设计人员使用的暂存器基本上仍同样是十六个,旧型架构中所用的备份暂存器复制机制也大幅减少,因此只有Stack Pointer(r13)会在两个作业模式中加以暂存。备份暂存器为选择性使用,甚至可以省略。   _z \PVTT  
oF#]<Z\  
.最大的变动在于异常模式。由于一般的微控制器应用可能会有大量的晶片周边中断,所以标准的巢状向量中断控制器(Nested Vectored Interrupt Controller, NVIC)规格会包含在架构中,所有的Cortex-M核心均包含该规格。同样地,异常处理模式已在包含处理常式位址的向量表上加以标准化。内容的储存与回复作业完全在硬体上实作,简化写入中断处理的软体工作,如此可在实作时达到非常低且可预测的中断延迟时间。   #zc{N"!  
L51uC ,QF  
.ARMv7-M定义选择性的记忆体保护架构,该架构与某些旧型ARM处理器所用的架构类似。裸机系统或在即时作业系统(RTOS)下运作的系统由于通常不需要虚拟记忆体,因此不支援虚拟记忆体。   0x8aKq\'  
UZqk2D  
.为支援各种即时作业系统的运作和执行,有些标准的晶片周边也会在架构中加以定义,如SysTick Timer。   @|J+ f5O  
ue#Y h  
.为缩小处理器核心的大小,ARMv7-M处理器的运行限缩到只有Thumb指令集(包含Thumb-2延伸),仅执行最小的子集,进而实现最小的核心。   a |+q:g0M  
i:,37INMt  
ARMv8-A AArch32特色 s1NRUV2E  
Cortex-A处理器采用ARMv7-A或ARMv8-A架构设定。ARMv8-A处理器提供AArch32执行状态,为32位元ARMv7-A架构的向下相容演化版。这些架构可实现专门设计用来支援Linux、Android、Windows等平台作业系统的功能,而这些系统需要虚拟记忆体环境。   -4'yC_8t  
}mSfg  
其与Cortex-M处理器核心截然不同的特定功能包括:   cakb.Q  
.有七个以上的作业模式:User、Supervisor、阻断要求(IRQ)、快速中断(Fast Interrupt, FIQ)、Undefined、Abort、System。每一模式皆用于处理特定类型事件(例如IRQ模式便是设计用于处理IRQ中断)。AArch32亦支援Hyp和Monitor这两个额外的模式,这两个模式分别用于虚拟化及ARM TrustZone技术。   ~85Pgb<  
p*Hbc|?{Q&  
.除了可用的登录数量相同(16),AArch32还有许多与上述作业模式相关的“备份”暂存器。进入相关的作业模式时,这些暂存器将取代User模式下的暂存器。如此可简化许多异常处理工作,但也表示机器的管理和初始化工作将增加。   Z CS{D  
p;m2RHYF  
.其异常模式极为不同,其原型存在于最早的ARM架构装置中。具体来说,向量表包含一组可执行的指令集,而不是位址,且内容的储存与回复Restore工作几乎完全交给程式设计人员执行。   (3+:/,{'$  
1?bX$$y l;  
.最大的差异是加入了记忆体管理单元,可执行核心所核发之虚拟位址,以及记忆体系统所需要的实体位址间的转译。如此便能实作完全的随选分页虚拟记忆体环境,以供Linux等平台作业系统使用。   _<1uO=km6  
Um9]X@z  
ARMv7-M与AArch32的差异 P(&9S`I  
从采用Cortex-M处理器的系统转换到采用Cortex-A32处理器时,有许多新功能值得关注。 f,}]h~w\  
@(H  
虽然这两种架构有许多类似之处(如备份暂存器和指令集之间有许多相同点),但重要的是ARMv8-A架构的AArch32执行状态所含的许多功能,均是以旧型架构的功能为基础。 BKQI|i  
_o-D},f*e  
接下来说明AArch32所具备,但为ARMv7-M所无或差异极大的功能。 V_"K  
|KxFi H  
作业模式 h_Cac@F0  
如图3所示,ARMv7-M只定义两个作业模式:Thread模式与Handler模式。若无需要,Handler模式可选择性取消优先权限,虽然这项功能未必须要在软体内使用。Handler模式适用于处理异常,Thread模式则用于使用者处理程序。这两个模式转换基本上是自动的,会在特定事件下发生,如图3所示。例如,发生异常时会自动进入Handler模式,异常处理完成时则会退出Handler模式。SVCall指令为主要的方法,软体用其来进入Handler模式(也可将启用的IRQ设定为待处理状态,以执行Handler)。
^UAL5}CQt  
=D2x@ank[  
图3 ARMv7-M作业模式
aPMqJ#fIr  
图4则显示AArch32执行状态支援的作业模式。与ARMv7-M相较,AArch32有七个基本模式,其中五个指定用于处理特定异常。例如,取得FIQ异常时会进入FIQ模式;若发生未定义指令等情形,会进入Undef模式。 kM T73OI>_  
$!_]mz6*  
图4 AArch32作业模式
4_w+NI,;  
模式的转换通常为自动发生,但也可在Current Program Status Register(CPSR)中写入Mode栏位,用软体控制来完整切换模式。其细节描述如下。与SVCall指令类似,SVC指令用于让软体引发SVC异常并进入SVC模式。 ;f7;U=gl,  
Z;#Ei.7p|  
图4中未显示AArch32所支援的另两个模式(为节省空间),也就是Hyp模式(用于Hypervisor)与Monitor模式(用于TrustZone安全性)。相关主题较为复杂,本文不予讨论。 + B#3!  
)m Uc !TP  
备份暂存器 :5`BhFAd  
图5显示ARMv7-M和AArch32的备份暂存器。可看出,许多暂存器为共有,因为这两种架构均是沿袭自ARMv6及先前的架构。
A+lP]Oy0S  
4^0L2BVcv  
图5 ARMv7-M登录集
@i[z4)"S  
多数指令可存取十三个通用型的暂存器r0-r12。在这两种架构中,r13保留为Stack Pointer(SP),r14保留为Link Register(LR),r15则保留为Program Counter(PC)。在ARMv7-M中,这些特殊暂存器的存取仅限于某些反映这些暂存器功能的特定使用状况;在AArch32中,这些暂存器的存取则类似任何其他通用的暂存器(虽然变更Program Counter的数值可能造成非预期的副作用)。 JS<4%@  
1wpeYn7>W  
ARMv7-M指定小部分额外特殊用途的暂存器PRIMASK、FAULTMASK、xPSR、CONTROL和BASEPRI,用于控制及设定处理器,及用于管理异常处理。 $MEKt}S  
t<6`?\Gk  
指令集 `%x6;Ha  
图5与图6分别是ARMv7-M与AArch32登录集,两相比较可看出AArch32也提供许多与特定作业模式关联的暂存器。这些暂存器会在进入相关的模式时与其在User模式下的暂存器交换。除了少数特殊指令,其他指令均无法存取这些暂存器,但也无法直接存取。其数值在模式变更时亦会保留,有助于处理异常。每个异常模式皆有自己的专属SP,每个异常均可在独立的堆叠上处理,因此异常处理的程式设计更为稳固且安全。取得异常时,相关模式下的LR设定为异常传回位址。
/v1Rn*VF!  
|? !Ew# w  
图6 AArch32登录集
{yy ^DlHb  
每个异常模式下会出现的还有叫SPSR的额外暂存器。SPSR用于在进入例外时取得目前CPSR数值的快照,搭配LR使用下,可提供自动化的内容储存。 1Yy5bg6+E  
$#dPM*E  
AArch32图中未显示Mon和Hyp模式,其各自支援备份暂存器的R13和R14,如同其他的模式。 $:%?-xy(  
-VESe}c:nQ  
在Cortex-A中,另有一个与ARM NEON SIMD指令集(如下所述)相关的备份暂存器,共包含三十二个128位元宽度的暂存器。每个暂存器均可定址为字组、双字组或四字组,且NEON指令集从位元组到四字组均支援向量作业。 s wdW70  
2016-05-23 15:41:07 来源:新电子 VR>;{>~  
lbv9 kk[  
[ 此帖被zoudzy在2016-12-22 08:09重新编辑 ]


评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

一般

差劲
离线krh

性别:
人妖
发帖
456
金币
391
提示:会员销售的附件,下载积分 = 版块积分 + 销售积分       只看该作者 1楼 发表于: 2016-12-22
可以 $ +h~VC  


离线lozgwn

性别:
帅哥
发帖
3509
金币
1930
提示:会员销售的附件,下载积分 = 版块积分 + 销售积分       只看该作者 2楼 发表于: 2016-12-22
学习,


快速回复
限150 字节
 
上一个 下一个