ARM在今年5月份新推出的Cortex A77架構(gòu),,采用TSMC 7nm工藝,3GHz峰值頻率,,性能提升20%,。之前一篇文章介紹過X86最強(qiáng)處理器ZEN的架構(gòu),詳見,。本文基于同樣原則來分析ARM架構(gòu)最強(qiáng)處理器A77,,深入探討其設(shè)計(jì)方案以及和X86架構(gòu)的異同。
首先簡(jiǎn)要介紹下ARM指令集架構(gòu),。目前通用處理器基本上分為2個(gè)陣營(yíng),,一個(gè)是以INTEL,AMD為首的CISC(Complex Instruction Set Computer)指令集,,另一個(gè)是以ARM為首的RISC(Reduced Instruction Set Computer)指令集,。兩者之間的主要區(qū)別是指令的功能單一性。RISC ISA通常一條指令完成簡(jiǎn)單獨(dú)立的一種運(yùn)算或控制,,指令長(zhǎng)度固定,,格式較為統(tǒng)一。而CISC ISA指令的功能要復(fù)雜的多,,指令長(zhǎng)度可變,,格式復(fù)雜。由于RISC指令編碼和功能上非常有利于硬件實(shí)現(xiàn),,處理器發(fā)展到今天,,不論X86還是ARM,其硬件執(zhí)行核心已經(jīng)都是RISCV架構(gòu)了,,而X86多了一層將CISC指令 翻譯成RISC類微指令的步驟,,因此譯碼部分不但增加了額外的流水線級(jí),實(shí)現(xiàn)上也復(fù)雜許多,,這也是X86處理器功耗大于同級(jí)別的RISC處理器的一個(gè)重要因素,。
Cortex A77面向移動(dòng)高性能領(lǐng)域,采用ARMv8.2 64位指令集架構(gòu),。硬件設(shè)計(jì)上和A76一脈相承,,都采用了7nm工藝,峰值頻率也沒有變化,。從這點(diǎn)來看,,A77的流水線結(jié)構(gòu)應(yīng)該和A76是一致的,,20%的提升主要在微架構(gòu)的細(xì)節(jié)方面,用來提高IPC和并行執(zhí)行的能力,。隨著工藝進(jìn)展到7nm,,其單芯片的功耗密度在很大程度上制約著主頻的提升。ARM主要面向移動(dòng)市場(chǎng),,并沒有在頻率控制上向INTEL看齊,,而更加追求單位功耗下的性能比。因此很多設(shè)計(jì)上并不以頻率為首要目標(biāo),,可以看到其L1 cache size達(dá)64KB,,甚至超過了ZEN2的32K。其他的如DynamIQ,,big.LITTLE等基本都是ARM的標(biāo)配,。
A77的流水線結(jié)構(gòu)沒有太大變化,還是標(biāo)準(zhǔn)的physical register Out-of-Order machine,。其中有幾個(gè)值得注意的點(diǎn),。第一個(gè)是1.5K entry的Mop Cache。這個(gè)在X86上存在了很久的結(jié)構(gòu)終于出現(xiàn)在ARM的處理器中,。X86是復(fù)雜指令集,引入Mop Cache可以存儲(chǔ)解碼后的微指令,,這樣能夠直接bypass fetch和decode的流水線,,獲得更大的dispatch寬度。我們看到這個(gè)Mop cache是放在fetch級(jí)的,,和Icache的結(jié)果mux后,,統(tǒng)一送給decode模塊。如果這個(gè)結(jié)構(gòu)正確的話,,這個(gè)Mop cache的主要目的就是功耗控制和減少branch penalty,。Decode級(jí)增加到了6條指令,同時(shí)拓寬了issue寬度,,增加了1個(gè)AlU和1個(gè)BRU,。這樣A76的執(zhí)行單元有4個(gè)ALU,2個(gè)BRU,,2條Load-store pipe,。可以看到Apple的處理器設(shè)計(jì)對(duì)ARM還是有很大影響的,。在大家都在大幅提高并發(fā)能力,,推高單核峰值性能的趨勢(shì)下,ARM也沒辦法獨(dú)善其身,,繼續(xù)其極致能耗比的設(shè)計(jì),。另一個(gè)原因可能也和ARM服務(wù)器的再次興起有關(guān),,隨著華為、amazon推出自行設(shè)計(jì)的ARM服務(wù)器芯片,,冷卻了幾年的ARM服務(wù)器市場(chǎng)似乎又熱鬧了起來,。在這種形式下,ARM也需要一款單核性能能和X86陣營(yíng)較量的處理器,,能夠推動(dòng)更多的廠家進(jìn)入,,向X86發(fā)起挑戰(zhàn)。A77的配置,,可以說是兼顧了高端移動(dòng)市場(chǎng)和入門級(jí)服務(wù)器市場(chǎng)的需求,。
前端流水線,最重要的改動(dòng)就是增加了Mop cache,。假設(shè)其寬度和decode數(shù)目一致,,1.5K的entry就可以存儲(chǔ)9千條32位指令,應(yīng)該可以覆蓋大多數(shù)移動(dòng)領(lǐng)域的應(yīng)用場(chǎng)景,。在Mop cache warmup后,,指令可以不經(jīng)Icache通路,直接從Mop cache發(fā)送到decode級(jí),,這樣整個(gè)fetch單元都可以進(jìn)入低功耗狀態(tài),。同時(shí)其中存儲(chǔ)指令譯碼后的信息,包括分支和循環(huán)的預(yù)測(cè)結(jié)果,,可以實(shí)現(xiàn)zero cycle的hardware loop,,進(jìn)一步提高了循環(huán)的執(zhí)行效率。第三,,從Mop取指相當(dāng)于減少了fetch流水線的長(zhǎng)度,,這樣出現(xiàn)branch misprediction之后,如果新的target也在Mop中,,flush流水線的penalty也會(huì)降低不少,。這里還提了一個(gè)Dynamic code的優(yōu)化手段,似乎是學(xué)習(xí)了code sequence的相關(guān)特征來提高后級(jí)執(zhí)行的能力,,具體不知道ARM是怎么做的,。
Branch prediction是另一個(gè)重點(diǎn)優(yōu)化的手段??梢钥闯龊蚙EN2的方向如出一轍,,這也是前端流水線最重要的性能指標(biāo)。A77拓寬了branch prediction的bandwidth到64B,,這樣理論上可以同時(shí)預(yù)測(cè)16條32位指令的分支結(jié)果,。同時(shí)也和ZEN一樣,大幅增加了BTB的size??梢钥吹?,A77相對(duì)于ZEN少了一個(gè)L0 BTB,只有2級(jí)BTB,。由于沒有具體的數(shù)據(jù),,很難說哪個(gè)方案更好,應(yīng)該是根據(jù)各自面對(duì)的應(yīng)用場(chǎng)景測(cè)試后選擇的方案,。共同的趨勢(shì)都是更大的預(yù)測(cè)器和預(yù)測(cè)寬度,。
Decode級(jí)主要是增加了50%的dispatch寬度,6條指令的并發(fā)理論上可以提供更大的并行執(zhí)行能力,。隨之ROB的entry數(shù)也增加到160個(gè),。這里提到了加快renaming table在branch misprediction后的update速度。通常renaming table會(huì)在相應(yīng)branch retire時(shí),,恢復(fù)到actual renaming的狀態(tài),。這里提到的accelerate,有可能是提供了多個(gè)branch recovery點(diǎn),,可以不等retire,,直接恢復(fù)到最近的recovery點(diǎn)上。這樣硬件復(fù)雜度和面積都會(huì)增加,。由于沒有更詳細(xì)的信息,,也只能做上述合理的推測(cè)。
執(zhí)行單元,,主要是數(shù)量的增加,,向Apple看齊。注意ARM一直保持了single cycle的ALU,,這在單核IPC性能上至關(guān)重要,ZEN2也保持了這一點(diǎn),。A77采用了Unified Issue Queue,,這和ZEN分離式的設(shè)計(jì)有所不同。一體化的IQ可以帶來更好的schedule效果,,但會(huì)在很大程度上制約頻率的提升,。這里體現(xiàn)了ARM并不以頻率為首要目標(biāo),而更多的考慮綜合的能耗,。另外的變化是增加了crypto流水線,,提高AES編解碼的能力。對(duì)于這一點(diǎn),,作者還是持保留態(tài)度,。目前對(duì)于crypto的加速通常采用專用加速器實(shí)現(xiàn),因?yàn)?算法確定,ASIC能獲得非常高的加速比,,同時(shí)硬件代價(jià)較小,。并且ASIC實(shí)現(xiàn)的crypto加速器可以和處理器完全隔離,做到純硬件的加解密,,這樣安全級(jí)別很高,。而用處理器實(shí)現(xiàn),首先性能和功耗有數(shù)量級(jí)上的差距,,其次是指令實(shí)現(xiàn),,軟件參與度較高,安全性上難以保證,。
Load-store流水線,,同樣采用了統(tǒng)一的Issue Queue??梢钥吹紸77有2個(gè)address的path和2個(gè)st-date的path,,可以同時(shí)執(zhí)行2條存儲(chǔ)指令。組合可能是2條load,,2條store,,1 load+1 store。這里采用了2條store pipe的方案還是比較激進(jìn)的,,應(yīng)該為了更高的內(nèi)存搬運(yùn)的性能,。對(duì)于通常的應(yīng)用,這額外的一條store data估計(jì)是起不到多大作用的,。
這里ARM著重介紹了其pre-fetching的機(jī)制,。數(shù)據(jù)的prefetch可以很好的隱藏系統(tǒng)內(nèi)存的訪問延遲,在高性能處理器上非常重要,。通常的prefetch都是根據(jù)數(shù)據(jù)執(zhí)行的特征,,支持1維或多維的stride形式預(yù)取。A77提出了一種system-aware的prefetching,,號(hào)稱針對(duì)存儲(chǔ)子系統(tǒng)的特征提供更高的prefetch能力,。由于信息有限,不知道這個(gè)system aware是怎么實(shí)現(xiàn)的,,可能是根據(jù)內(nèi)存延遲的不同,,以及L3 cache 各核心的使用率,動(dòng)態(tài)調(diào)節(jié)了prefetch的數(shù)目和策略,。
從ARM給出的性能指標(biāo)來看,,A77的能效比還是很高的,尤其是功耗,,這也是ARM最核心的競(jìng)爭(zhēng)力,。
從A77的技術(shù)指標(biāo)來看,通用處理器的設(shè)計(jì)呈現(xiàn)出以下趨勢(shì):首先,和在“ZEN2”一文中解釋的那樣,,通用處理器的微架構(gòu)已經(jīng)趨于穩(wěn)定,,大的方面玩不出新的花樣了,都在細(xì)節(jié)上做進(jìn)一步的提升,,比如更寬的發(fā)射通路,,更多的執(zhí)行單元,更大的預(yù)測(cè)器等,。這給了后來者一個(gè)很好的追趕機(jī)會(huì),。其次,ARM的移動(dòng)處理器的設(shè)計(jì)正在逐步趨同于INTEL和AMD在桌面處理器的結(jié)構(gòu),,除了核心頻率較低以外,,其他的指標(biāo)已經(jīng)差距不大了,很多X86上獨(dú)有的技術(shù)正在逐步出現(xiàn)在ARM的設(shè)計(jì)中,。隨著工藝逼近其物理極限,,ARM和INTEL的差距在快速的縮小,很可能不遠(yuǎn)的將來,,ARM處理器會(huì)具有和X86在服務(wù)器市場(chǎng)一戰(zhàn)的資本,。第三,工藝尺寸的縮小帶來功耗密度的大幅增加,,成為制約核心頻率的重要因素,。可以看到A77并沒有支持更高的頻率,,并且按之前SOC設(shè)計(jì)來看,,最終的芯片估計(jì)只能維持在2.5G左右。由于移動(dòng)端散熱條件更為苛刻,,可能通常的應(yīng)用會(huì)采用多核心工作在較低頻率,,而對(duì)于游戲等大型應(yīng)用,會(huì)提高單核的頻率,,其他核心降頻或進(jìn)入低功耗,,保持整個(gè)芯片的功耗在可控范圍內(nèi)。INTEL的睿頻技術(shù)也是差不多的方式,。功耗將在很長(zhǎng)一段時(shí)間里成為處理器性能提升的瓶頸,對(duì)設(shè)計(jì)者能否根據(jù)具體的應(yīng)用場(chǎng)景來提供靈活的執(zhí)行方式提出了更高挑戰(zhàn),。
因此,,領(lǐng)先者制約重重,后來者可以奮起直追?,F(xiàn)在可能是國(guó)內(nèi)處理器發(fā)展的大好時(shí)機(jī),。比如前幾天平頭哥宣布的玄鐵910,綜合性能已經(jīng)可以和ARM A72持平,這是國(guó)產(chǎn)處理器和世界一流水平差距最小的一次,??赡苡貌涣硕嗑茫覀兙湍茉谝苿?dòng)市場(chǎng)追上ARM的腳步,。不過ARM的優(yōu)勢(shì)更多的在于生態(tài),,新興的RISCV能否打破這個(gè)限制,以開源為核心建立起自己的生態(tài)體系,,就成為國(guó)產(chǎn)處理器商業(yè)化道路上的關(guān)鍵因素,。期待這一天早日到來。