麻豆一区二区三区蜜桃免费_中文字幕Va一区二区三区 _国产成人综合久久二区_丰满多毛的大隂户毛茸茸_国产麻豆剧果冻传媒免费老狼_无码人妻精品一区二区三区久久久 _亚洲中文无码精品卡通_蜜臀亚洲AV永久无码精品老司机

arm編譯器構(gòu)架分析
發(fā)布時(shí)間:2019-11-13

一、 引 言

  隨著近兩年各種智能手機(jī)、平板電腦、車載電子等各種消 費(fèi)品的蓬勃發(fā)展,ARM編譯器體系結(jié)構(gòu)的處理器,作為這些消費(fèi)品的處理核心,也得到了長(zhǎng)足的進(jìn)步,甚至擊敗了Intel,在移動(dòng)嵌入式領(lǐng)域獨(dú)占鰲頭。本文將首先介紹ARM編譯器體系結(jié)構(gòu)的發(fā)展歷程,然后將著重梳理其先進(jìn)的Cortex系列處理器的體系結(jié)構(gòu),以及這些結(jié)構(gòu)對(duì)于各種軟件平臺(tái)如JAVA、.NET的支持等。

二、 ARM編譯器體系結(jié)構(gòu)的歷史即其新進(jìn)展

  2.1 ARM編譯器體系結(jié)構(gòu)市場(chǎng)前景

來(lái)自英國(guó)的ARM(Acorn RISC Machine)公司雖然以ARM編譯器處理器著稱,但是它獨(dú)特的商業(yè)模式卻決定了ARM編譯器公司本身并不生產(chǎn)處理器,這點(diǎn)與從研發(fā)到生產(chǎn)到出貨垂直整合的Intel公司有很大不同,ARM編譯器公司采取的是授權(quán)與提成的商業(yè)模式(Intellectual Property Core 簡(jiǎn)寫(xiě)IP-Core):公司自己研發(fā)處理器體系架構(gòu),然后將這套架構(gòu)的知識(shí)產(chǎn)權(quán)有償授權(quán)給處理器制造廠商如高通、三星等半導(dǎo)體廠商,這些廠商造出的每一塊使用ARM體系結(jié)構(gòu)的芯片只需向ARM編譯器公司交付低廉的提成即可。由于這種創(chuàng)新的商業(yè)模式和低廉的成本,加上ARM編譯器體系的低功耗特點(diǎn),讓ARM編譯器體系在對(duì)價(jià)格敏感和續(xù)航能力敏感的32位嵌入式電子消費(fèi)品市場(chǎng)如虎添翼,基本占據(jù)了32位嵌入式消費(fèi)平的市場(chǎng)份額。發(fā)展到如今,ARM編譯器芯片甚至在對(duì)運(yùn)算速度要求更高的的上網(wǎng)本、平板電腦也大有跟Intel的ATOM處理器一較高低的實(shí)力。近來(lái)紅得發(fā)紫的蘋(píng)果iPad就是采用的ARM深度定制的一款處理器架構(gòu),其它還有很多運(yùn)行著Android系統(tǒng)的平板產(chǎn)品、智能手機(jī)產(chǎn)品等也都采用ARM體系結(jié)構(gòu)的處理核心。由此可見(jiàn)ARM編譯器體系結(jié)構(gòu)在移動(dòng)電子消費(fèi)品市場(chǎng)無(wú)與倫比的優(yōu)勢(shì)。
??????

  ARM編譯器

2.2 ARM編譯器體系發(fā)展歷史

  1985——誕生了第一顆ARM編譯器芯片,ARM1 Sample版。
  1986——ARM2,具有32位數(shù)據(jù)總線,26位地址總線,16個(gè)32位寄存器的處理器實(shí)現(xiàn)產(chǎn)能量產(chǎn)。
  20世紀(jì)80年代晚期——蘋(píng)果電腦開(kāi)始與Acorn合作開(kāi)發(fā)新版的ARM編譯器核心。
  1991——與蘋(píng)果的合作造就了ARM6,并進(jìn)入了蘋(píng)果的Apple Newton PDA和Acorn Risc-PC成為了它們的處理器。在該年正式成立了ARM公司,作為Acorn的一家子公司。
  1991——至今ARM的產(chǎn)品已經(jīng)橫貫應(yīng)用程序處理器,嵌入式處理器,專家系統(tǒng)等各種計(jì)算領(lǐng)域,成為了移動(dòng)電子消費(fèi)品市場(chǎng)、復(fù)雜工業(yè)控制應(yīng)用的處理器體系架構(gòu)。

  2.3 ARM編譯器產(chǎn)品系列簡(jiǎn)介

  ??2.3.1 經(jīng)典ARM 處理器

  ??這一系列包括的處理器架構(gòu)有:

  l ARM11 系列 —— 基于ARMv6 體系結(jié)構(gòu)的高性能處理器

  l ARM9 系列 —— 基于ARMv5 體系結(jié)構(gòu)的常用處理器

  l ARM7 系列 —— 面向普通應(yīng)用的經(jīng)典處理器

  該系列適用于那些希望在新應(yīng)用中追求穩(wěn)定的產(chǎn)品。這些處理器提供了許多的特性、卓越的功效和范圍廣泛的操作能力,適用于成本敏感型解決方案。這些處理器每年都有數(shù)十億的發(fā)貨量,因此可確保設(shè)計(jì)者獲得體系和資源,從而減少集成過(guò)程中出現(xiàn)的問(wèn)題并縮短上市時(shí)間。

  2.3.2 ARM編譯器 Cortex 嵌入式處理器

  這一系列的處理器架構(gòu)有:

  l Cortex-R 系列 —— 面向?qū)崟r(shí)應(yīng)用的卓越性能

  l Cortex-M 系列 —— 面向具有確定性的微控制器應(yīng)用的成本敏感型解決方案

  Cortex-M 系列處理器主要是針對(duì)微控制器領(lǐng)域開(kāi)發(fā)的,在該領(lǐng)域中,既需進(jìn)行快速且具有高確定性的中斷管理,又需將門(mén)數(shù)和可能功耗控制在最低;而Cortex-R 系列處理器的開(kāi)發(fā)則面向深層嵌入式實(shí)時(shí)應(yīng)用,對(duì)低功耗、良好的中斷行為、卓越性能以及與現(xiàn)有平臺(tái)的高兼容性這些需求進(jìn)行了平衡考慮。

  ?2.3.3 ARM編譯器 Cortex 應(yīng)用程序處理器

  這一系列包括的處理器架構(gòu)只有

  l Cortex-A 系列- 開(kāi)放式操作系統(tǒng)的高性能處理器

  Cortex-A在高級(jí)工藝節(jié)點(diǎn)中可實(shí)現(xiàn)高達(dá)2GHZ+的主頻,也正是由于如此卓越的性能,該處理器架構(gòu)可用于下一代Internet設(shè)備,而且該系列提供單核和多核多種種類,并且提供NEON多媒體處理模塊的四種選擇和高級(jí)浮點(diǎn)執(zhí)行單元和處理單元。

 ? 2.3.4 ARM編譯器 專家處理器

  這一系列包括的處理器架構(gòu)只有

  l SecurCore - 面向高安全性應(yīng)用的處理器

  l FPGA 內(nèi)核- 面向FPGA 的處理器

  該系列的處理器主要是為了滿足一些特定市場(chǎng)的苛刻需求。SecurCore可以用于手機(jī)SIM卡和其他識(shí)別應(yīng)用,集成了多種既可以為用戶提供卓越性能,又可以檢測(cè)和避免安全攻擊的技術(shù)。

2.4 ARM指令集

  談到ARM編譯器的指令系統(tǒng),必須先明確一點(diǎn)的就是,ARM編譯器體系結(jié)構(gòu)不同于x86,它是RISC(Reduced InstrucTIon Set Computer)體系結(jié)構(gòu)。所以,在ARM指令體系中,各指令相對(duì)來(lái)說(shuō)更加規(guī)整、對(duì)稱、簡(jiǎn)單。而且指令小于100條,基本尋址方式只有2~3中,而且指令字長(zhǎng)都比較一直,并都在單個(gè)時(shí)鐘周期內(nèi)完成,以便于流水操作。在ARM7中采用的是3級(jí)流水線:取值、譯碼、執(zhí)行。而ARM9和ARM10則是五級(jí)流水線和六級(jí)流水線。ARM編譯器的訪存采用的都是LOAD-STORE結(jié)構(gòu),這樣可以把每條指令的執(zhí)行時(shí)間都平均化,有助于高效的流水線的實(shí)現(xiàn),采用這種結(jié)構(gòu)也就同時(shí)意味著指令都要在寄存器間進(jìn)行操作,所以ARM體系中有大量的寄存器(不少于32個(gè))。

  ?2.4.1 ARM編譯器指令與Thumb指令

  ARM編譯器指令集可以是32位長(zhǎng)的ARM指令,也可以是16位長(zhǎng)的Thumb指令,這主要是為了兼容數(shù)據(jù)總線為16位的應(yīng)用系統(tǒng)。所有的Thumb指令都有對(duì)應(yīng)的ARM指令,Thumb只是ARM的一個(gè)真子集,而且Thumb指令舍棄了ARM指令集的一些特性,如大多數(shù)Thumb指令都是無(wú)條件執(zhí)行的,而幾乎所有的ARM指令都是有條件執(zhí)行的,又如大多數(shù)的Thumb指令由于長(zhǎng)度有限,目的寄存器是源寄存器中的一個(gè),這跟x86的匯編指令集相似。

  Thumb指令的優(yōu)點(diǎn)在于它可以在保留32位代碼優(yōu)勢(shì)的同時(shí),大大節(jié)省系統(tǒng)的存儲(chǔ)空間,因?yàn)樵赥humb指令集中的操作數(shù)仍然是32位的,指令地址也是32位的,只是指令編碼變成了16位,而ARM指令則為32位,所以,相比之下,實(shí)現(xiàn)同樣的功能,Thumb指令的條數(shù)要比ARM略多,Thumb的存儲(chǔ)空間僅僅是ARM存儲(chǔ)空間的60%~70%,但是Thumb的指令條數(shù)比ARM指令條數(shù)多30%~50%,如果使用32位的存儲(chǔ)器,由于指令條數(shù)較少等原因,ARM指令會(huì)比Thumb指令快40%左右,而使用16位存儲(chǔ)器時(shí),Thumb指令則會(huì)快40%~50%。同時(shí)與ARM比較Thumb指令的功耗會(huì)降低約30%。但是Thumb指令也有其局限性。第一、偏移范圍,在Thumb指令中條件轉(zhuǎn)移偏移只有8位,也就是說(shuō)只能在256Byte的范圍內(nèi)有條件地轉(zhuǎn)移,在無(wú)條件轉(zhuǎn)移中可以有16位的偏移,而這些在ARM指令中都是32位,大大提高了靈活性。同時(shí),在Thumb指令中不支持乘法和累加,沒(méi)有協(xié)處理器指令沒(méi)有信號(hào)量指令也沒(méi)有CPSR指令。

  在面臨二者的取舍的時(shí)候,同其它無(wú)數(shù)的案例一樣,發(fā)揮各自的長(zhǎng)處是完美的解法。如果系統(tǒng)對(duì)性能要求較高,應(yīng)采用32位的存儲(chǔ)器和ARM編譯器指令集,而對(duì)功耗和成本要求較高,則應(yīng)使用Thumb指令集。但是如果兩者結(jié)合使用,讓它們充分發(fā)揮各自的優(yōu)點(diǎn),則會(huì)取得更好的效果。

  ARM編譯器指令的基本格式如下:

  《opcode》 {《cond》} {S} 《Rd》 ,《Rn》{,《operand2》}

  其中《》號(hào)內(nèi)的項(xiàng)是必須的,{}號(hào)內(nèi)的項(xiàng)是可選的,opcode為指令助記符;cond是該動(dòng)作的執(zhí)行條件;S表示影響CPSR寄存器(程序狀態(tài)寄存器)的值,如果不加則表示不影響 CPSR的值;Rd表示運(yùn)算結(jié)果的目標(biāo)寄存器;Rn表示第1個(gè)操作數(shù)的寄存器;operand2表示第2個(gè)操作數(shù),可選。

  同時(shí),ARM編譯器芯片還支持協(xié)處理器,在ARM指令集中有對(duì)協(xié)處理器的數(shù)據(jù)操作、數(shù)據(jù)讀取、數(shù)據(jù)寫(xiě)入和CPU與協(xié)處理器的寄存器傳送的相應(yīng)指令。

  2.5?ARM編譯器體系結(jié)構(gòu)對(duì)運(yùn)行平臺(tái)的支持 ——Jazelle技術(shù)

  運(yùn)行Java虛擬機(jī)(JVM)解釋Java字節(jié)碼這種方式對(duì)大多數(shù)嵌入式應(yīng)用來(lái)說(shuō)占用空間過(guò)多,運(yùn)行速度過(guò)慢。而系統(tǒng)發(fā)展的趨勢(shì)及市場(chǎng)的需求決定了Java應(yīng)用需要有更強(qiáng)的圖形處理能力以及一個(gè)強(qiáng)大的Java虛擬機(jī)。于是催生出了Jazelle技術(shù),從硬件上對(duì)Java虛擬機(jī)提供支持。 Jazelle DBX(Direct Bytecode eXecuTIon)是一種硬件架構(gòu)擴(kuò)展技術(shù),為ARM處理器引入了第三套指令集—Java字節(jié)碼。新指令集建立了一種新的狀態(tài),處理器在此狀態(tài)下處理Java字節(jié)碼取指令、譯碼和維護(hù)Java操作數(shù)棧等任務(wù)。允許它們?cè)谀承┘軜?gòu)的硬件上加速執(zhí)行Java字節(jié)碼,就如其他執(zhí)行模式般,它能在現(xiàn)存的ARM編譯器與Thumb模式之間互相切換。為了降低芯片尺寸并提高性能,Jazelle DBX沒(méi)有設(shè)計(jì)成傳統(tǒng)形式的微引擎,而是融入流水線中的一個(gè)有限狀態(tài)機(jī)。

  Jazelle DBX技術(shù)增加了一條新的“Branch-to-Java”指令來(lái)進(jìn)入Java狀態(tài)。此指令支持條件執(zhí)行,先檢查條件標(biāo)志,如果條件滿足,處理器進(jìn)入Java狀態(tài),跳轉(zhuǎn)到指定目標(biāo)地址,開(kāi)始執(zhí)行Java字節(jié)碼。在Java狀態(tài)下,PC寄存器仍是32位尋址Java字節(jié)代碼。字節(jié)碼的取指、譯碼分別在兩個(gè)流水段完成(對(duì)應(yīng)ARM/Thumb狀態(tài)下為一個(gè)譯碼流水級(jí))。32位的取指令操作一次性可以取4個(gè)Java字節(jié)碼,性能優(yōu)勢(shì)十分明顯,對(duì)于一個(gè)高度優(yōu)化的商業(yè)Java虛擬機(jī),運(yùn)行評(píng)測(cè)程序或復(fù)雜的MIDP2.0應(yīng)用,Jazelle DBX技術(shù)通??蓭?lái)約2~4倍的性能提升。Jazelle DBX技術(shù)允許所有的Java指令是“可重新開(kāi)始”的。這樣在執(zhí)行Java指令過(guò)程中,即刻響應(yīng)中斷,從而減少中斷延遲,確保實(shí)時(shí)性能。

  在ARM處理器的Java狀態(tài)下,有若干個(gè)ARM編譯器寄存器可以功能復(fù)用(包括棧指針、棧頂四項(xiàng)(top4 elements of stack)、局部變量0等)。正是這些硬件復(fù)用設(shè)計(jì),才使得只用了很少的額外邏輯(約一萬(wàn)兩千門(mén))就實(shí)現(xiàn)了一個(gè)Java機(jī)。把所有Jazelle DBX擴(kuò)展所需的狀態(tài)用ARM寄存器保存,也保證了和現(xiàn)有操作系統(tǒng)、中斷處理程序和異常處理代碼的兼容性。把棧頂四項(xiàng)保存在ARM寄存器中也能提高Java性能。大量的程序分析顯示,大多數(shù)程序的棧深度是很小的,所以這項(xiàng)策略可以盡量減少內(nèi)存訪問(wèn),硬件也可自動(dòng)處理?xiàng)R绯龌蛳乱纭?/span>

  和Java協(xié)處理器或其它專用Java處理器設(shè)計(jì)不同的是,Jazelle DBX和主處理器共用緩存,這一方面能夠降低功耗,而且還可以提高性能。另一個(gè)重要的設(shè)計(jì)考慮是確保Jazelle DBX技術(shù)不會(huì)影響實(shí)時(shí)中斷性能,仍保持與操作系統(tǒng)中已有ARM編譯器異常處理代碼的兼容。
?
?
關(guān)于億道電子

? ? 億道電子是國(guó)內(nèi)全面的開(kāi)發(fā)工具提供商, 致力于將全球先進(jìn)的軟件產(chǎn)品引薦給國(guó)內(nèi)研發(fā)型企業(yè)使用,為企業(yè)提供研發(fā)、設(shè)計(jì)、管理過(guò)程中使用的各種軟件工具,并致力于和客戶一同提高研發(fā)、設(shè)計(jì)效率,縮短設(shè)計(jì)周期。億道電子先后與ARM、Altium、Ansys、QT、TestPlant、CollabNet、Parasoft以及TouchGFX等多家全球知名公司建立戰(zhàn)略合作伙伴關(guān)系,并成為他們?cè)谥袊?guó)區(qū)的重要分銷合作伙伴。

? ? 億道電子專注開(kāi)發(fā)、設(shè)計(jì)、管理工具數(shù)十年,客戶超過(guò)6000家,具有豐富的工具使用及客戶支持經(jīng)驗(yàn)積累,可以為客戶提供從ARM開(kāi)發(fā)、EDA板級(jí)設(shè)計(jì)、軟件編譯及測(cè)試工具、結(jié)構(gòu)設(shè)計(jì)工具、多物理場(chǎng)仿真工具以及嵌入式GUI工具等產(chǎn)品與服務(wù)。億道電子在北京、上海、深圳設(shè)有分公司,業(yè)務(wù)遍布全國(guó)。