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