<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è) > 嵌入式系統 > 設計應用 > 基于A(yíng)RM的嵌入式系統程序開(kāi)發(fā)要點(diǎn)

基于A(yíng)RM的嵌入式系統程序開(kāi)發(fā)要點(diǎn)

作者: 時(shí)間:2016-12-02 來(lái)源:網(wǎng)絡(luò ) 收藏
因為嵌入式應用領(lǐng)域的多樣性,每一個(gè)系統都具有各自的特點(diǎn)。在進(jìn)行系統程序設計的時(shí)候,一定要進(jìn)行具體分析,充分利用這些特點(diǎn),揚長(cháng)避短。

結合ARM架構本身的一些特點(diǎn),在這里討論幾個(gè)常見(jiàn)的要點(diǎn)。

1.ARM 還是 Thumb?

在討論 ARM 還是 Thumb 之前,先說(shuō)明 ARM 內核型號和 ARM 結構體系之間的區別和聯(lián)系。

如圖-1所示,ARM 的結構體系主要從版本 4 開(kāi)始,發(fā)展到了現在的版本 6,結構體系的變化,對程序員而言最直接的影響就是指令集的變化。結構體系的演變意味著(zhù)指令集的不斷擴展,值得慶幸的是 ARM 結構體系的發(fā)展一直保持了向上兼容,不會(huì )造成老版本程序在新結構體系上的不兼容。


圖-1 ARM 結構體系和處理器家族的演變發(fā)展

在圖中的橫坐標上,顯示了每一個(gè)體系結構上都含有眾多的處理器型號,這是在同一體系結構下根據硬件配置和存儲器系統的不同而作的進(jìn)一步細分。 需要注意的是通常我們用來(lái)區分 ARM 處理器家族的 ARM7、ARM9 或 ARM10,可能跨越不同的體系結構。

在A(yíng)RM的體系結構版本4與5中, 還可以再細分出幾個(gè)小的擴展版本: V4T、V5TE和V5TEJ,其區別如圖-2中所示,這些后綴名也反映在各自擁有的處理器型號上面,可以進(jìn)行直觀(guān)的分辨。V6 結構體系因為包含了以前版本的所有特性,所以不需要再進(jìn)行分類(lèi)。


圖-2 結構體系特征

上面介紹了整個(gè) ARM 處理器家族的分布,主要是說(shuō)明在一個(gè)特定的平臺上編寫(xiě)程序的時(shí)候,一定要先弄清楚目標的特性和一些細微的差別,特別是需要具體優(yōu)化特征的時(shí)候。

從 ARM 體系結構 V4T 以后,最大的變化是增加了一套 16 位的指令集——Thumb。到底在一個(gè)具體應用中要否采用 Thumb呢?首先我們來(lái)分析一下 ARM和 Thumb 各自的特點(diǎn)和優(yōu)勢。先看下面一張性能分析圖:


圖-3 ARM 和 Thumb指令集的比較

圖中的縱坐標是測試向量 Dhrystone 在 20MHz 頻率下運行 1 秒鐘的結果, 其值越大表明性能越好;橫坐標是系統存儲器系統的數據總線(xiàn)寬度。結果表明:
(a) 當系統具有32 位的數據總線(xiàn)寬度時(shí),ARM 比 Thumb有更好的性能表現。
(b) 當系統的數據總線(xiàn)寬度小于32 位時(shí),Thumb比 ARM 的性能更好。

由此可見(jiàn), 并不是32位的ARM指令集性能一定強于16位的Thumb指令集,要具體情況具體分析??疾靷€(gè)中的原因,其實(shí)不難發(fā)現,因為當在一個(gè) 16 位存儲器系統里面取1 條 32位指令的時(shí)候,需要耗費2 個(gè)存儲器訪(fǎng)問(wèn)周期;比之 32位的系統,其速度正好大概下降一半左右。而 16 位指令在 32 位存儲器系統或16 位存儲器系統里的表現基本相同。正是存儲器造成的系統瓶頸導致了這個(gè)有趣的差別。

除了在窄帶寬系統里面的性能優(yōu)勢外, Thumb 指令的另外一個(gè)好處是代碼尺寸。同樣一段 C 代碼,用 Thumb 指令編譯的結果,其長(cháng)度大約只占 ARM 編譯結果的 65%左右,可以明顯地節省存儲器空間。在大多數情況下,緊湊的代碼和窄帶寬的存儲器系統,還會(huì )帶來(lái)功耗上的優(yōu)勢。

當然,如果在 32 位的系統上面,并且對系統性能要求很高的情況下,ARM是一個(gè)更好的選擇。畢竟在這種情況下,只有 32 位的指令集才能完全發(fā)揮 32位處理器的優(yōu)勢來(lái)。

因此,選擇 ARM 還是 Thumb,需要從存儲器開(kāi)銷(xiāo)和性能要求兩方面加以權衡考慮。

上一頁(yè) 1 2 3 4 下一頁(yè)

評論


技術(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>