新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM平臺處理器簡介

        ARM平臺處理器簡介

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

        本文引用地址:http://www.104case.com/article/201611/317954.htm

        1.總體情況

        先從ARM的wiki上抄個表過來:

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

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

        現在把重點放在ARMv7,更確切的,是ARMv7中的Cortex-A系列核心上來。Cortex-M系列處理面向嵌入式應用,而Cortex-R系列則面向實時應用,Cortex-A,則面向廣大的手機用戶。

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

        核心Cortex-A5Cortex-A7Cortex-A8Cortex-A9Cortex-A15
        發布年份2009年2011年

        2006年

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

        單核

        1-4核最多4核每cluster,每物理核最多2個cluster
        流水線

        8級(in-order)

        8-10級

        13級(整點

        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
        大物理地址擴展
        浮點部件VFPv4VFPv4VFPv3VFPv3VFPv4

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

        *A15的流水線前12級是in-order的,后面則是out-of-order的多種流水線,級數從3到12不等。A7類似,NEON部件的流水線是10級,整點則是8級。

        現在來分析一下各個核心的參數。首先是Cortex-A后面的編號,大體上,這個編號代表該核心的性能,或者說在ARM產品線中的位置。比如A5面向低端應用,編號最?。籄15是目前ARMv7性能中性能最高的核心;A7雖然發布晚于A8,而且規格接近,但由于限制了雙發帶寬,其性能預期是低于A8的。總的來看,A5的定位最低端,取代ARMv7之前的產品;A15最高端,A7性能低于A8,但更加節能,成本也更低;A8/A9則可能被取代,不過目前仍然是主流;A15則是目前為止ARM處理器中規格最高的了。

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

        3.浮點和高級SIMD部件

        ARMv7開始使用VFPv3版本的浮點部件,而ARMv7中更新的核心則使用了VFPv4( 見前面表格)。VFPv2則用于ARMv7之前的核心,現在還有一部分低端手機使用這種處理器;而使用VFPv1浮點部件的核心已經基本淘汰掉了。ARM的高級SIMD部件稱為NEON,從ARMv7開始出現

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

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

        上表中所說的32位寄存器和64位寄存器并不是獨立的,前16個64位寄存器每個可以視為2個32位寄存器,同時,兩個64位寄存器可以視為一個128位寄存器。下圖來自ARM官方文檔,展示了32位寄存器和64位寄存器的關系:

        對于VFPv3-D16、VFPv3-D16-FP16和VFPv4-D16來說,上圖中的D16~D31是不存在的。除了上表中的版本,VFPv3還有單精度版本,只實現了單精度浮點數的運算指令,gcc中稱這種版本的VFPv為“vfpv3xd”,相應的,還有vfpv3xd-fp16。不過這種實現的ARM處理比較少見。

        NEON部件和浮點部件關系密切,在兩者同時存在時,使用的是同一套寄存器。不過,NEON的寄存器數目是固定的,和VFPv3/VFPv-FP16/VFPv4相同。這意味著,NEON不能和VFPv3-D16/VFPv3-D16-FP16這種寄存器閹割版共存。當沒有浮點部件時,NEON部件只能進行整點運算。下表是NEON和VFP部件可能的組合:

        NEON部件VFP部件說明
        僅整型未實現
        整型和單精度浮點單精度浮點
        整型和單精度浮點單精度和雙精度浮點
        未實現單精度浮點
        未實現單精度和雙精度浮點

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

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

        高級SIMDv1:兩者均未實現

        高級SIMDv1帶半精度擴展:實現了半精度擴展

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

        而NEON半精度和Fused Multiply-Ad擴展的實現情況與VFP部件是相關的。

        總結一下VFP和NEON的特點:

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

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

        3.NEON部件單獨存在時只能進行整點運算

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

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



        關鍵詞: ARM平臺處理

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 陆川县| 科技| 浙江省| 精河县| 台山市| 萨迦县| 当阳市| 安国市| 静安区| 双桥区| 日喀则市| 黔东| 新晃| 鸡泽县| 铁岭市| 平泉县| 阿克陶县| 安泽县| 平定县| 眉山市| 芦溪县| 西乌珠穆沁旗| 崇州市| 嫩江县| 呈贡县| 新昌县| 舟曲县| 普安县| 苍山县| 永靖县| 齐齐哈尔市| 师宗县| 长丰县| 阳信县| 金堂县| 凉山| 墨竹工卡县| 根河市| 鸡泽县| 怀安县| 武山县|