Cortex - M3與Cortex - M4對比
1).32位乘法累加(MAC)
32位乘法累加(MAC)包括新的指令集和針對Cortex-M4硬件執(zhí)行單元的優(yōu)化它是能夠在單周期內(nèi)完成一個32×32+64->64的操作或兩個16×16的操作。如下表列出了這個單元的計算能力。
2).SIMD
Cortex-M4支持SIMD指令集,這在上一代的Cortex-M系列是不可用的。上述表中的指令,有的屬于SIMD指令。與硬件乘法器一起工作(MAC),使所有這些指令都能在單個周期內(nèi)執(zhí)行。受益于SIMD指令的支持,Cortex-M4處理器是能在單周期完成高達(dá)32×32+64->64的運算,為其他任務(wù)釋放處理器的帶寬,而不是被乘法和加法消耗運算資源??紤]以下復(fù)雜的算術(shù)運算,其中兩個16×16乘法加上一個32位加法,被編譯成由一個單一指令執(zhí)行:SUM=SUM+(A*C)+(B*D)
3).FPU
FPU是Cortex-M4浮點運算的可選單元。因此它是一個專用于浮點任務(wù)的單元。這個單元通過硬件提升性能,能處理單精度浮點運算,并與IEEE754標(biāo)準(zhǔn)兼容。這完成了ARMv7-M架構(gòu)單精度變量的浮點擴展。FPU擴展了寄存器的程序模型與包含32個單精度寄存器的寄存器文件。這些可以被看作是:
- 16個64位雙字寄存器,D0-D15
- 32個32位單字寄存器,S0-S31該FPU提供了三種模式運作,以適應(yīng)各種應(yīng)用
- 全兼容模式(在全兼容模式,F(xiàn)PU處理所有的操作都遵循IEEE754的硬件標(biāo)準(zhǔn))
- Flush-to-zero沖洗到零模式(設(shè)置FZ位浮點狀態(tài)和控制寄存器FPSCR[24]到flush-to-zero模式。在此模式下,F(xiàn)PU在運算中將所有不正常的輸入操作數(shù)的算術(shù)CDP操作當(dāng)做0.除了當(dāng)從零操作數(shù)的結(jié)果是合適的情況。VABS,VNEG,VMOV不會被當(dāng)做算術(shù)CDP的運算,而且不受flush-to-zero模式影響。結(jié)果是微小的,就像在IEEE754標(biāo)準(zhǔn)的描述的那樣,在目標(biāo)精度增加的幅度小于四舍五入后最低正常值,被零取代。IDC的標(biāo)志位,F(xiàn)PSCR[7],表示當(dāng)輸入Flush時變化。UFC標(biāo)志位,F(xiàn)PSCR[3],表示當(dāng)Flush結(jié)束時變化)
- 默認(rèn)的NaN模式(DN位的設(shè)置,F(xiàn)PSCR[25],會進入NaN的默認(rèn)模式。在這種模式下,如對任何算術(shù)數(shù)據(jù)處理操作的結(jié)果,涉及一個輸入NaN,或產(chǎn)生一個NaN結(jié)果,會返回默認(rèn)的NaN。僅當(dāng)VABS,VNEG,VMOV運算時,分?jǐn)?shù)位增加保持。所有其他的CDP運算會忽略所有輸入NaN的小數(shù)位的信息)
下表顯示的是FPU指令集
3.debug調(diào)試
與Cortex-M3的相同,Cortex-M4的設(shè)備是通過標(biāo)準(zhǔn)JTAG或串行線調(diào)試連接器調(diào)試。要連接到主機的接口,一個簡單,標(biāo)準(zhǔn)化外部連接器是必要的。
pid控制相關(guān)文章:pid控制原理
評論