ARM 64位處理器架構(gòu)ARMv8技術(shù)淺析
當(dāng)?shù)貢r(shí)間10月25-27日,ARM在美國(guó)加州圣克拉拉舉行了一場(chǎng)技術(shù)大會(huì)“ARM TechCon 2011”,正式宣布了自己的第一款64位處理器架構(gòu)“ARMv8”。ARM公司院士、首席架構(gòu)師Richard Grisenthwaite隨即對(duì)新架構(gòu)做了比較深入的技術(shù)講解。
ARM表示,ARMv8 ISA(指令集架構(gòu))的引入只是其64位產(chǎn)品發(fā)展途中的第一步,計(jì)劃今年提供GNU工具和64位Linux系統(tǒng)內(nèi)核,并發(fā)布新的標(biāo)準(zhǔn)規(guī)范和模型,然后2012年著重開(kāi)發(fā)完善生態(tài)系統(tǒng),2013年及以后陸續(xù)放出原型系統(tǒng)。
ARMv8完全向下兼容現(xiàn)有的32位ARMv7軟件,而且運(yùn)行于ARMv8上的64位操作系統(tǒng)也可以簡(jiǎn)單、高效地支持現(xiàn)有的32位軟件。但愿向下兼容不會(huì)成為ARM的累贅。
ARMv8是下一個(gè)版本的ARM處理器架構(gòu),在32位指令的基礎(chǔ)上增加64位操作能力,擁有AArch32、AArch64兩種執(zhí)行狀態(tài),而且都專注于ARM最擅長(zhǎng)、最讓人喜歡的高能效。
ARM處理器架構(gòu)歷史演化圖:ARMv8集成了之前的各種技術(shù)特性,尤其是兼容ARMv7-A的關(guān)鍵特性。
AArch32、AArch64分別采用A32T32、A64指令集,均包含標(biāo)量浮點(diǎn)單元和高級(jí)SIMD。
ARMv8現(xiàn)在還只是個(gè)概念,ARM自己還沒(méi)有宣布任何時(shí)機(jī)產(chǎn)品,僅僅給開(kāi)發(fā)人員提供了一個(gè)預(yù)覽,需要很長(zhǎng)的時(shí)間去開(kāi)發(fā)、去構(gòu)筑整個(gè)生態(tài)系統(tǒng),包括ARM自己及其合作伙伴的共同努力,因此ARMv7-A架構(gòu)仍然有著廣闊的發(fā)展天地。ARMv8的完整規(guī)范將在2012年下半年公布。
ARM透露說(shuō),早在2007年他們就已經(jīng)開(kāi)始了64位架構(gòu)的開(kāi)發(fā)工作,而之所以到現(xiàn)在才正式宣布,是因?yàn)樾枰紤]的因素太多太多,包括解決超大虛擬尋址空間的支持、預(yù)測(cè)ARM傳統(tǒng)市場(chǎng)的未來(lái)需求、拓展ARM的市場(chǎng)空間等等。
AArch64是一套新的指令集,支持ARMv7架構(gòu)中的所有功能,包括TrustZone、虛擬化等等,而且內(nèi)存翻譯系統(tǒng)也是基于ARMv7而來(lái)的,采用LPAE表格式,翻譯表寄存器最高支持48位虛擬尋址。
AArch64指令集的長(zhǎng)度固定為32-bit,在語(yǔ)法上也和AArch32基本一樣,只在必要的地方做了修改,此外隨時(shí)都可以訪問(wèn)31個(gè)通用寄存器,而且寬度都是64-bit的。
A64、A32不同之處在于,新指令都支持64-bit操作,條件指令要少得多,沒(méi)有任意長(zhǎng)度的載入/存儲(chǔ)多重指令。
A64的高級(jí)SIMD和浮點(diǎn)指令集與A32基本類似,高級(jí)SIMD同樣共享浮點(diǎn)寄存器文件,并有三處重要改進(jìn):32個(gè)128-bit寬度寄存器、支持雙精度浮點(diǎn)執(zhí)行、完整支持IEEE754標(biāo)準(zhǔn)。
A64的通用寄存器文件和媒體寄存器文件。
指令級(jí)支持加密AES、SHA-1、SHA-256。
意外模型。有四種意外級(jí)別,EL3到EL0。
分組寄存器。
意外模型結(jié)構(gòu)圖。
意外模型命名規(guī)則。
MMU內(nèi)存管理單元支持:最高48位虛擬尋址,最大16EB容量。
頁(yè)面表信息。
AArch64/AArch32架構(gòu)關(guān)系。
ARM特別強(qiáng)調(diào)說(shuō),ARMv8新架構(gòu)并不意味著AArch32的終結(jié),事實(shí)上后者還有所增強(qiáng),帶來(lái)了多項(xiàng)與寄存器寬度無(wú)關(guān)的新功能。