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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM 架構(gòu)/特性(處理器)全解

          ARM 架構(gòu)/特性(處理器)全解

          作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò) 收藏

          是構(gòu)建每個(gè) ARM 的基礎(chǔ)。ARM 架構(gòu)隨著時(shí)間的推移不斷發(fā)展,其中包含的架構(gòu)功能可滿足不斷增長(zhǎng)的新功能、高性能需求以及新興市場(chǎng)的需要。有關(guān)最新公布版本的信息,請(qǐng)參閱 ARMv8 架構(gòu)。

          本文引用地址:http://www.ex-cimer.com/article/201609/303287.htm

          支持跨躍多個(gè)性能點(diǎn)的實(shí)現(xiàn),并已在許多細(xì)分市場(chǎng)中成為主導(dǎo)的架構(gòu)。支持非常廣泛的性能點(diǎn),因而可以利用最新的微架構(gòu)技術(shù)獲得極小的 ARM 實(shí)現(xiàn)和極有效的高級(jí)設(shè)計(jì)實(shí)現(xiàn)。實(shí)現(xiàn)規(guī)模、性能和低功耗是 ARM 架構(gòu)的關(guān)鍵。

          ARM 已經(jīng)開發(fā)了架構(gòu)擴(kuò)展,從而為 Java 加速 (Jazelle®)、安全性 (TrustZone®)、SIMD 和高級(jí) SIMD (NEON™) 技術(shù)提供支持。ARMv8-A 架構(gòu)增加了密碼擴(kuò)展作為可選功能。

          ARM 架構(gòu)與精簡(jiǎn)指令集計(jì)算 (RISC) 架構(gòu)類似,因?yàn)樗韵碌湫?RISC 架構(gòu)特征:

          統(tǒng)一寄存器文件加載/存儲(chǔ)架構(gòu),其中的數(shù)據(jù)處理操作只針對(duì)寄存器內(nèi)容,并不直接針對(duì)內(nèi)存內(nèi)容。

          簡(jiǎn)單尋址模式,所有加載/存儲(chǔ)地址只通過(guò)寄存器內(nèi)容和指令字段確定。

          對(duì)基本 RISC 架構(gòu)的增強(qiáng)使 ARM 可以實(shí)現(xiàn)較高性能、較小代碼大小、較低功耗和較小硅面積的良好平衡。

          1.jpg

          A32(ARM)架構(gòu)/

          ARM(通常稱為 A32)是一種固定長(zhǎng)度(32 位)的指令集。它是 ARMv4T、ARMv5TEJ 和 ARMv6 架構(gòu)中使用的基礎(chǔ) 32 位 ISA。在這些架構(gòu)中,該指令集用于需要高性能的應(yīng)用領(lǐng)域,或用于處理硬件異常,如中斷和處理器啟動(dòng)。

          對(duì)于性能關(guān)鍵應(yīng)用和舊代碼,Cortex 架構(gòu)的 Cortex™-A 和 Cortex-R 配置文件也支持 ARM ISA。其多數(shù)功能都包括在與 Thumb-2 技術(shù)一起引入的 Thumb 指令集中。Thumb (T32) 從改進(jìn)的代碼密度中獲益。

          ARM 指令的長(zhǎng)度為 32 位,需要 4 字節(jié)邊界對(duì)齊。

          可以對(duì)大多數(shù) ARM 指令進(jìn)行“條件化”,使其僅在以前的指令設(shè)置了特定條件代碼時(shí)執(zhí)行。這意味著,如果應(yīng)用程序狀態(tài)寄存器中的 N、Z、C 和 V 標(biāo)志滿足指令中指定的條件,則指令僅對(duì)程序員的模型操作、內(nèi)存和協(xié)處理器發(fā)揮其正常作用。如果這些標(biāo)記不滿足此條件,則指令會(huì)用作 NOP,即執(zhí)行過(guò)程正常進(jìn)入下一指令(包括將對(duì)異常進(jìn)行任意相關(guān)檢查),但不發(fā)揮任何其他作用。此條件化指令允許對(duì) if 和 while 語(yǔ)句的一小部分進(jìn)行編碼,而無(wú)需使用跳轉(zhuǎn)指令。

          條件代碼N:否定條件代碼,如果結(jié)果為否定的,則設(shè)置為 1

          條件代碼Z:零條件代碼,如果指令的結(jié)果為 0,則設(shè)置為 1

          條件代碼C:進(jìn)位條件代碼,如果指令生成進(jìn)位條件,則設(shè)置為 1

          條件代碼V:溢出條件代碼,如果指令生成溢出條件,則設(shè)置為 1。

          T32(Thumb)架構(gòu)/

          成本敏感型嵌入式控制應(yīng)用領(lǐng)域(例如手機(jī)、磁盤驅(qū)動(dòng)器、調(diào)制解調(diào)器和尋呼機(jī))一直在尋求通過(guò)某些方式在兼顧內(nèi)存占用空間的前提下以最低成本實(shí)現(xiàn) 32 位性能和地址空間。

          Thumb (T32) 指令集提供已壓縮至 16 位寬操作碼的、最常用的 32 位 ARM 指令的子集。在執(zhí)行時(shí),這些 16 位指令實(shí)時(shí)、透明地解壓縮為完整 32 位 ARM 指令,且無(wú)性能損失。

          Thumb 可向設(shè)計(jì)人員提供:

          卓越的代碼密度,可實(shí)現(xiàn)最小的系統(tǒng)內(nèi)存大小和最低的成本。

          在 8 位或 16 位總線上的 8 位或 16 位內(nèi)存中實(shí)現(xiàn) 32 位性能,從而降低系統(tǒng)成本。

          建立的 ARM 功能

          行業(yè)領(lǐng)先的 MIPS/Watt,以盡可能延長(zhǎng)電池壽命和增加 RISC 性能

          小的芯片面積,以進(jìn)行集成和盡可能降低芯片成本

          全球多合作伙伴源,可提供安全保證。

          設(shè)計(jì)人員可以同時(shí)使用 16 位 Thumb 和 32 位 ARM 指令集,這樣,他們就可以靈活地根據(jù)應(yīng)用需求在子例程級(jí)別上增強(qiáng)性能或調(diào)整代碼大小。

          Thumb ISA 受 ARM 生態(tài)體系的廣泛支持,包括完善的 Windows 軟件開發(fā)環(huán)境以及開發(fā)和評(píng)估卡。

          改進(jìn)了代碼密度,具有性能效率和功效

          Thumb-2 技術(shù)使 Thumb 成為混合(32 位和 16 位)長(zhǎng)度指令集,是所有 ARMv7 兼容的 ARM Cortex 實(shí)現(xiàn)所通用的指令集。Thumb-2 提升了眾多嵌入式應(yīng)用程序的性能、能效和代碼密度。

          該技術(shù)與現(xiàn)有 ARM 和 Thumb 解決方案向后兼容,同時(shí)顯著擴(kuò)展了 Thumb 指令集的可用功能,從而使更多應(yīng)用程序從 Thumb 的同類最佳代碼密度中獲益。為獲得性能優(yōu)化的代碼,Thumb-2 技術(shù)使用少于 31% 的內(nèi)存以降低系統(tǒng)成本,同時(shí),提供比現(xiàn)有高密度代碼高出 38% 的性能,因此可用于延長(zhǎng)電池壽命,或豐富產(chǎn)品功能集。



          關(guān)鍵詞: ARM 架構(gòu) 特性 處理器

          評(píng)論


          相關(guān)推薦

          技術(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); })();