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