<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > ARM平臺處理器簡(jiǎn)介

ARM平臺處理器簡(jiǎn)介

作者: 時(shí)間:2016-11-09 來(lái)源:網(wǎng)絡(luò ) 收藏
初次接觸到ARM的時(shí)候,我直接被眾多的處理器版本、系列搞暈了,查了好多資料才理清?,F在在這里總結一下,希望能幫到別人。

本文引用地址:http://dyxdggzs.com/article/201611/317954.htm

1.總體情況

先從ARM的wiki上抄個(gè)表過(guò)來(lái):

ArchitectureFamily
ARMv1ARM1
ARMv2ARM2,ARM3
ARMv3ARM6,ARM7
ARMv4StrongARM,ARM7TDMI,ARM9TDMI
ARMv5ARM7EJ,ARM9E,ARM10E,XScale
ARMv6ARM11, Cortex-M
ARMv7Cortex-A,Cortex-M,Cortex-R
ARMv8-

左側的一列可以視作是ARM處理器的各個(gè)“代”,而右側則是同一代的各個(gè)“家族”(或者說(shuō)“系列”)?,F在基本已是ARMv7的時(shí)代,ARMv6及更早的Architecture只在一些低端的設備上能見(jiàn)到了。而ARMv8則是ARM平臺的未來(lái)時(shí),被設計為64位的架構,顯然不是主要面向移動(dòng)設備的。不過(guò)到現在為止ARMv8也只是有一些資料,離真正面世還有一段時(shí)間。

現在把重點(diǎn)放在A(yíng)RMv7,更確切的,是ARMv7中的Cortex-A系列核心上來(lái)。Cortex-M系列處理面向嵌入式應用,而Cortex-R系列則面向實(shí)時(shí)應用,Cortex-A,則面向廣大的手機用戶(hù)。

2.Cortex-A系列的眾多核心們

核心Cortex-A5Cortex-A7Cortex-A8Cortex-A9Cortex-A15
發(fā)布年份2009年2011年

2006年

2007年2011年
核心1-4核1-4核

單核

1-4核最多4核每cluster,每物理核最多2個(gè)cluster
流水線(xiàn)

8級(in-order)

8-10級

13級(整點(diǎn)

in-order)

8級(out-of-order)

12級in-order加3-12級out-of-order

硬件虛擬化

L1 Cache4-64K/4-64K8-64K/8-64K16-32K/16-32K16-64K/16-64K32K/32K
大物理地址擴展
浮點(diǎn)部件VFPv4VFPv4VFPv3VFPv3VFPv4

*發(fā)布年份是ARM公布核心的時(shí)間(可能不太準確)。

*A15的流水線(xiàn)前12級是in-order的,后面則是out-of-order的多種流水線(xiàn),級數從3到12不等。A7類(lèi)似,NEON部件的流水線(xiàn)是10級,整點(diǎn)則是8級。

現在來(lái)分析一下各個(gè)核心的參數。首先是Cortex-A后面的編號,大體上,這個(gè)編號代表該核心的性能,或者說(shuō)在A(yíng)RM產(chǎn)品線(xiàn)中的位置。比如A5面向低端應用,編號最??;A15是目前ARMv7性能中性能最高的核心;A7雖然發(fā)布晚于A(yíng)8,而且規格接近,但由于限制了雙發(fā)帶寬,其性能預期是低于A(yíng)8的??偟膩?lái)看,A5的定位最低端,取代ARMv7之前的產(chǎn)品;A15最高端,A7性能低于A(yíng)8,但更加節能,成本也更低;A8/A9則可能被取代,不過(guò)目前仍然是主流;A15則是目前為止ARM處理器中規格最高的了。

再看一下較新的核心中幾個(gè)重要的特性。A7和A15支持硬件虛擬化,以A7的定位來(lái)說(shuō)硬件虛擬化的支持似乎沒(méi)有太多用武之地,不過(guò)對于A(yíng)15來(lái)說(shuō)則表明A15可能用于傳說(shuō)中的ARM服務(wù)器(不過(guò)算算時(shí)間似乎也沒(méi)有太多A15發(fā)揮的余地,畢竟64位的ARMv8更適合用于服務(wù)器)。大物理地址擴展(LPAE)和x86上的PAE相似,允許32位的ARM處理器最大尋址2^40bit的內存(1TB)。這又是一個(gè)表明A15可用于服務(wù)器的跡象,畢竟4G的尋址空間對現在的服務(wù)器來(lái)說(shuō)完全不夠用啊。

3.浮點(diǎn)和高級SIMD部件

ARMv7開(kāi)始使用VFPv3版本的浮點(diǎn)部件,而ARMv7中更新的核心則使用了VFPv4( 見(jiàn)前面表格)。VFPv2則用于A(yíng)RMv7之前的核心,現在還有一部分低端手機使用這種處理器;而使用VFPv1浮點(diǎn)部件的核心已經(jīng)基本淘汰掉了。ARM的高級SIMD部件稱(chēng)為NEON,從ARMv7開(kāi)始出現

ARM浮點(diǎn)部件的一個(gè)問(wèn)題是對很多核心來(lái)說(shuō)是可選的,一些處理器并沒(méi)有浮點(diǎn)部件。不僅如此,盡管ARMv7的處理器基本都實(shí)現了浮點(diǎn)部件,但浮點(diǎn)部件也有多個(gè)可選實(shí)現,再加上NEON部件也是可選的,最后導致市面上的ARM處理器對浮點(diǎn)/SIMD的支持并不一致。下表列出了主要的VFPv3實(shí)現的版本(VPFv4的資料需要補充):

版本寄存器其他特性
VFPv3(-D32)32個(gè)64位寄存器,32個(gè)32位寄存器
VFPv3-FP16同上半精度擴展(FP16的含義)
VFPv4(-D32)同上VFPv4總是實(shí)現半精度擴展和Fused Multiply-Add 擴展
VFPv3-D1616個(gè)64位寄存器,32個(gè)32位寄存器
VFPv3-D16-FP16同上半精度擴展
VFPv4-D16同上同VFPv4

上表中所說(shuō)的32位寄存器和64位寄存器并不是獨立的,前16個(gè)64位寄存器每個(gè)可以視為2個(gè)32位寄存器,同時(shí),兩個(gè)64位寄存器可以視為一個(gè)128位寄存器。下圖來(lái)自ARM官方文檔,展示了32位寄存器和64位寄存器的關(guān)系:

對于VFPv3-D16、VFPv3-D16-FP16和VFPv4-D16來(lái)說(shuō),上圖中的D16~D31是不存在的。除了上表中的版本,VFPv3還有單精度版本,只實(shí)現了單精度浮點(diǎn)數的運算指令,gcc中稱(chēng)這種版本的VFPv為“vfpv3xd”,相應的,還有vfpv3xd-fp16。不過(guò)這種實(shí)現的ARM處理比較少見(jiàn)。

NEON部件和浮點(diǎn)部件關(guān)系密切,在兩者同時(shí)存在時(shí),使用的是同一套寄存器。不過(guò),NEON的寄存器數目是固定的,和VFPv3/VFPv-FP16/VFPv4相同。這意味著(zhù),NEON不能和VFPv3-D16/VFPv3-D16-FP16這種寄存器閹割版共存。當沒(méi)有浮點(diǎn)部件時(shí),NEON部件只能進(jìn)行整點(diǎn)運算。下表是NEON和VFP部件可能的組合:

NEON部件VFP部件說(shuō)明
僅整型未實(shí)現
整型和單精度浮點(diǎn)單精度浮點(diǎn)
整型和單精度浮點(diǎn)單精度和雙精度浮點(diǎn)
未實(shí)現單精度浮點(diǎn)
未實(shí)現單精度和雙精度浮點(diǎn)

從上面這個(gè)表可以看出,即使VFP部件實(shí)現了雙精度運算的功能,NEON部件也只能進(jìn)行單精度運算。不止如此,gcc的手冊之處,NEON的浮點(diǎn)運算不完全符合IEEE 754標準,在某些情況下會(huì )損失精度,因此即使使用了自動(dòng)向量化的選項,浮點(diǎn)運算的向量化默認也是關(guān)閉的。

依據半精度和Fused Multiply-Ad擴展的實(shí)現情況,NEON部件可以分為3種版本:

高級SIMDv1:兩者均未實(shí)現

高級SIMDv1帶半精度擴展:實(shí)現了半精度擴展

高級SIMDv2:同時(shí)實(shí)現了半精度和Fused Multiply-Ad擴展

而NEON半精度和Fused Multiply-Ad擴展的實(shí)現情況與VFP部件是相關(guān)的。

總結一下VFP和NEON的特點(diǎn):

1.VFPv3/VFPv4分為根據寄存器情況分為D16和D32兩個(gè)版本,D16的雙精度(64位)寄存器只有16個(gè)。

2.D16版本的VFP不能和NEON部件共存。

3.NEON部件單獨存在時(shí)只能進(jìn)行整點(diǎn)運算

4.實(shí)現了半精度擴展的VFPv3稱(chēng)為FP16版本,如果連Fused Multiply-Ad擴展也實(shí)現了,就是VFPv4了。

除了上面所說(shuō)的,ARMv7處理器還有很多特性。由于我了解的不多,就不多說(shuō)了



關(guān)鍵詞: ARM平臺處理

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>