飛思卡爾處理器K60學習筆記(二)---------Cortex-M內核比較

本文主要分析Cortex-M系列處理器的異同點,在上一篇的基礎上增加對Cortex-M4的認識和了解。所謂無圖無真相,直接上圖說話。

圖1:CORTEX-M0/M1------>  CORTEX-M3 --------->CORTEX-M4三者內核功能的比較:

從圖上可以看出三者功能上的異同點。它們的不同點也決定了三者的不同應用場合。M4相比較前兩者主要的變化在於數字運算能力上的增強,增加了DSP運算指令、SIMD(Single Instruction Multiple Data,單指令多數據流)指令集、FPU(浮點運算單元,可選)。

圖2:CORTEX-M0/M1------>  CORTEX-M3 --------->CORTEX-M4 三個內核之間的所支持指令功能的對比。

從圖中足以看出M4內核的強大,同時Cortex-M 系列處理器都是二進制向上兼容的,這使得軟件重用以及從一個 Cortex-M 處理器無縫發展到另一個成爲可能(圖3):

下面就增強的三個功能進行說明:

1、DSP指令集

所謂集成DSP功能並不是說M4內核是一個M3+DSP的雙核處理器(目前個人知道的這類處理器是TI的達芬奇系列,主要應用於語音、視頻圖像有關的數字多媒體領域)。而是隻是增加了DSP功能的指令集(單週期的運算指令),能在一個週期內完成指令操作。在官方的CMSIS標準工程庫中已經集成,可以直接使用(有關內容在以後文章中介紹)。

圖表展示了處理器運行在相同的速度下Cortex - M3和Cortex - M4在數字信號處理能力方面的相對性能比較。

在下面的數字,Y軸代表執行給出的計算用的相對的週期數。 因此,循環數越小,性能越好。以Cortex - M3作爲參考,Cortex - M4的性能計算,性能比大概爲其週期計數的倒數。舉例說明,PID功能,Cortex - M4的週期數是與Cortex - M3的約0.7倍,因此相對性能是1/0.7,即1.4倍。

Cortex - M系列16位循環計數功能


Cortex - M系列32位循環計數功能

這很清楚的表明,Cortex - M4在數字信號處理方面對比Cortex - M3的16位或32位操作有着很大的優勢。

Cortex-M4執行的所有的DSP指令集都可以在一個週期完成,Cortex - M3需要多個指令和多個週期才能完成的等效功能。即使是PID算法——通用DSP運算中最耗費資源的工作,Cortex - M4也能提供了一個1.4倍的性能得改善 。另一個例子,MP3解碼在Cortex-M3需要20-25Mhz,而在Cortex-M4只需要10-12MHz。

2.  32位乘法累加(MAC 

32位乘法累加(MAC)包括新的指令集和針對Cortex - M4硬件執行單元的優化它是能夠在單週期內完成一個 32 × 32 + 64 - > 64 的操作 或 兩個16 × 16 的操作。如下表列出了這個單元的計算能力。


3 .SIMD

(Single Instruction Multiple Data,單指令多數據流)能夠複製多個操作數,並把它們打包在大型寄存器的一組指令集,例:3DNow!、SSE。以同步方式,在同一時間內執行同一條指令。
SIMD在性能上的優勢:
以加法指令爲例,單指令單數據(SISD)的CPU對加法指令譯碼後,執行部件先訪問內存,取得第一個操作數;之後再一次訪問內存,取得第二個操作數;隨後才能進行求和運算。而在SIMD型的CPU中,指令譯碼後幾個執行部件同時訪問內存,一次性獲得所有操作數進行運算。這個特點使SIMD特別適合於多媒體應用等數據密集型運算。
如:AMD公司引以爲豪的3D NOW! 技術實質就是SIMD,這使K6-2、雷鳥、毒龍處理器在音頻解碼、視頻回放、3D遊戲等應用中顯示出優異的性能。

4.FPU

FPU是Cortex - M4浮點運算的可選單元。因此它是一個專用於浮點任務的單元。這個單元通過硬件提升性能,能處理單精度浮點運算,並與IEEE 754標準 兼容。這完成了ARMv7 - M架構單精度變量的浮點擴展。FPU擴展了寄存器的程序模型與包含32個單精度寄存器的寄存器文件。這些可以被看作是:

·16個64位雙字寄存器,D0 - D15

 ·32個32位單字寄存器,S0 - S31 該FPU提供了三種模式運作,以適應各種應用

 ·全兼容模式(在全兼容模式,FPU處理所有的操作都遵循IEEE754的硬件標準)

 ·Flush-to-zero 沖洗到零模式(設置FZ位浮點狀態和控制寄存器FPSCR [24]到flush-to-zero 模式。在此模式下,FPU 在運算中將所有不正常的輸入操作數的算術CDP操作當做0.除了當從零操作數的結果是合適的情況。VABS,VNEG,VMOV 不會被當做算術CDP的運算,而且不受flush-to-zero 模式影響。結果是微小的,就像在IEEE 754 標準的描述的那樣,在目標精度增加的幅度小於四捨五入後最低正常值,被零取代。IDC的標誌位,FPSCR [7],表示當輸入Flush時變化。UFC標誌位,FPSCR [3],表示當Flush結束時變化)

 ·默認的NaN模式(DN位的設置,FPSCR [25],會進入NaN的默認模式。在這種模式下,如對任何算術數據處理操作的結果,涉及一個輸入NaN,或產生一個NaN結果,會返回默認的NaN。僅當VABSVNEGVMOV運算時,分數位增加保持。所有其他的CDP運算會忽略所有輸入NaN的小數位的信息)。具體指令請自行查看手冊。


PS:本文主要轉載於以下文檔

1、百度百科SIMD目錄

2、CORTEX-M目錄

3、博客:古月居:http://blog.csdn.net/hcx25909/article/details/7102689


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章