<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ARM的嵌入式系統(tǒng)程序開發(fā)要點(diǎn)

          基于ARM的嵌入式系統(tǒng)程序開發(fā)要點(diǎn)

          作者: 時間:2016-12-02 來源:網(wǎng)絡(luò) 收藏
          因?yàn)榍度胧綉?yīng)用領(lǐng)域的多樣性,每一個系統(tǒng)都具有各自的特點(diǎn)。在進(jìn)行系統(tǒng)程序設(shè)計(jì)的時候,一定要進(jìn)行具體分析,充分利用這些特點(diǎn),揚(yáng)長避短。

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

          1.ARM 還是 Thumb?

          在討論 ARM 還是 Thumb 之前,先說明 ARM 內(nèi)核型號和 ARM 結(jié)構(gòu)體系之間的區(qū)別和聯(lián)系。

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


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

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

          在ARM的體系結(jié)構(gòu)版本4與5中, 還可以再細(xì)分出幾個小的擴(kuò)展版本: V4T、V5TE和V5TEJ,其區(qū)別如圖-2中所示,這些后綴名也反映在各自擁有的處理器型號上面,可以進(jìn)行直觀的分辨。V6 結(jié)構(gòu)體系因?yàn)榘艘郧鞍姹镜乃刑匦?,所以不需要再進(jìn)行分類。


          圖-2 結(jié)構(gòu)體系特征

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

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


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

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

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

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

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

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

          上一頁 1 2 3 4 下一頁

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();