張平
國(guó)內(nèi)的處理器開發(fā)一直是一個(gè)值得討論的話題。近年來(lái),隨著外部環(huán)境變化和自身產(chǎn)業(yè)發(fā)展需求,國(guó)內(nèi)處理器自主研發(fā)、自主可控的呼聲越來(lái)越高。中科院作為國(guó)內(nèi)水平最高、產(chǎn)業(yè)最為齊全的研發(fā)機(jī)構(gòu),在自主處理器尤其是處理器架構(gòu)方面做出了很多貢獻(xiàn)。2021年,中科院計(jì)算所包云崗研究員又發(fā)布了全新的、采用RISC-V指令集的“香山”高性能處理器架構(gòu)。那么,“香山”高性能處理器架構(gòu)究竟怎么樣?它的性能和設(shè)計(jì)大概相當(dāng)于國(guó)際什么水平的產(chǎn)品呢?
2021年6月22日,中科院計(jì)算所包云崗、唐丹和徐易難三位研究人員公布了有關(guān)“香山”高性能架構(gòu)(下簡(jiǎn)稱“香山”)的相關(guān)內(nèi)容。在“香山”公布之后,引發(fā)了業(yè)內(nèi)高度關(guān)注。從行業(yè)角度來(lái)看,“香山”是目前國(guó)內(nèi)少有的以RISC-V為主的高性能架構(gòu),并且它僅用了1年時(shí)間,就完成了整體架構(gòu)設(shè)計(jì)。
“香山”高性能處理器架構(gòu)的一些背景資料
香山的開發(fā)從2020年6月11日開始。實(shí)際上,在相關(guān)工作開始之前,研究人員就在探討為什么CPU產(chǎn)業(yè)界沒有出現(xiàn)一個(gè)像Linux那樣開放和共享的開源主線,在經(jīng)過(guò)多番討論和深入的思考后,中科院計(jì)算所的研究人員選擇了RISC-V作為基礎(chǔ)指令集,并基于它開發(fā)全新的開源CPU架構(gòu)。
有關(guān)RISC-V的相關(guān)內(nèi)容,本刊在2018年6月的《處理器領(lǐng)域的“Linux”?一起走進(jìn)開源免費(fèi)架構(gòu)RISC-V》 -文中有過(guò)比較詳細(xì)的解讀,雖然這篇文章已經(jīng)是3年之前的了,但是對(duì)RISC-V的一些基本概念和知識(shí)的解讀到現(xiàn)在也依1日有效。簡(jiǎn)單來(lái)說(shuō),RISC-V是一個(gè)標(biāo)準(zhǔn)、免費(fèi)、開放的指令級(jí)架構(gòu),RISC-V基金會(huì)和企業(yè)SiFive對(duì)其進(jìn)行維護(hù),RISC-V研討會(huì)用于展示和溝通有關(guān)RISC-V的發(fā)展和創(chuàng)意。在技術(shù)方面,RISC-V定義了一個(gè)基本的整數(shù)ISA和一系列標(biāo)準(zhǔn)擴(kuò)展,還對(duì)處理器設(shè)計(jì)的大量?jī)?nèi)容進(jìn)行了規(guī)范和定義。任何用戶都可以使用RISC-V的相關(guān)架構(gòu)內(nèi)容,對(duì)其進(jìn)行二次開發(fā)或者擴(kuò)展,從而設(shè)計(jì)出符合自己需要的CPU架構(gòu)。在沒有購(gòu)買私有IP的前提下,也不需要付費(fèi)給RISC-V的相關(guān)組織。由于RISC-V的開放和免費(fèi)特性,吸引了業(yè)內(nèi)一大批廠商加入,包括英特爾、AMD、英偉達(dá)等我們耳熟能詳?shù)钠髽I(yè),自然也吸引了中科院計(jì)算所,基于RISC-V的特性開發(fā)一款全新的CPU架構(gòu)產(chǎn)品。
在選擇了RISC-V之后,香山的研發(fā)團(tuán)隊(duì)希望自己的架構(gòu)能夠被工業(yè)界廣泛支持,同時(shí)也能夠支持學(xué)術(shù)界實(shí)驗(yàn)創(chuàng)新想法,因此才將整個(gè)香山架構(gòu)開源出來(lái)供大家使用。香山研發(fā)團(tuán)隊(duì)希望這個(gè)架構(gòu)不斷通過(guò)使用、擴(kuò)展、再使用、再擴(kuò)展,就像Linux那樣,存活30年以上。
現(xiàn)在,香山整個(gè)核心代碼庫(kù)均以開源的方式存放在GitHub上,大家可以通過(guò)以下網(wǎng)址進(jìn)行訪問并查看相關(guān)資料:https://github.com/OpenXiangShan。另外,包云崗研究員針對(duì)香山架構(gòu)的開發(fā)過(guò)程進(jìn)行了詳細(xì)解讀。除了采用RISC-V和開源香山架構(gòu)的內(nèi)容外,他描述了有關(guān)香山架構(gòu)研發(fā)的具體人數(shù)和研發(fā)的工作量。比如在一年時(shí)間內(nèi),香山架構(gòu)的研發(fā)吸引了25位中科院計(jì)算所的同學(xué)和老師加入,發(fā)生了821次主分支代碼合并,3296次代碼提交( commit),5萬(wàn)余行代碼,400多個(gè)文檔,所有這些代碼和文檔、流程都公布在前文的GitHub鏈接中。在開源方面,香山架構(gòu)采用了“木蘭寬松許可”( MulanPSLv2),這是一個(gè)國(guó)內(nèi)的開源許可證,整體許可內(nèi)容和法律內(nèi)容非常適合香山架構(gòu)未來(lái)發(fā)展所需?,F(xiàn)在,萬(wàn)事俱備,香山架構(gòu)究竟有哪些秘密呢?
“香山”高性能處理器架構(gòu)的演進(jìn)和細(xì)節(jié)
中科院計(jì)算所希望香山架構(gòu)能發(fā)展30年,那么就需要對(duì)這30年進(jìn)行一些規(guī)劃,并且作為高性能架構(gòu)產(chǎn)品,香山架構(gòu)還需要針對(duì)高性能架構(gòu)未來(lái)的發(fā)展在如今就打好基礎(chǔ)。
香山架構(gòu)的演進(jìn)
香山架構(gòu)目前研發(fā)的核心架構(gòu)被稱為“雁棲湖”,這個(gè)架構(gòu)是2020年6月開始建立,2021年4月RTL完成。目前預(yù)估的性能SPEC CPU 2006為每GHz 7分,現(xiàn)在的版本暫時(shí)采用臺(tái)積電的28nm工藝,1.3GHz頻率制造。
在“雁棲湖”之后,2021年3月香山架構(gòu)啟動(dòng)了新一代“南湖”核心架構(gòu)的研發(fā),計(jì)劃在2021年底完成。它的SPEC CPU 2006能夠達(dá)到每GHz10分,相比雁棲湖核心架構(gòu)提升大約43%左右,工藝則改用中芯國(guó)際的14nm,目標(biāo)頻率為2GHz。
接下來(lái),香山架構(gòu)還將以“X湖”為代號(hào),實(shí)現(xiàn)持續(xù)的迭代優(yōu)化,并最終達(dá)到ARM Cortex-A76的水平。
雁棲湖微架構(gòu)解讀
在這部分,本文將對(duì)香山高性能處理器架構(gòu)的首發(fā)微架構(gòu)——雁棲湖微架構(gòu)進(jìn)行簡(jiǎn)單的解讀,并對(duì)比ARM Cortex-A76,具體來(lái)看看兩者所存在的差異。
從宏觀角度來(lái)看,雁棲湖微架構(gòu)是一個(gè)11級(jí)流水線、6發(fā)射的微架構(gòu)。值得注意的是,雁棲湖微架構(gòu)前端發(fā)射部分的寬度非常寬。相比之下,Cortex-A76的前端發(fā)射寬度為4,采用了13級(jí)流水線設(shè)計(jì)。雁棲湖架構(gòu)相比Cortex-A76,在整體設(shè)計(jì)上存在顯著差異。
繼續(xù)來(lái)看前端設(shè)計(jì),雁棲湖架構(gòu)前端部分的重點(diǎn)在于分支預(yù)測(cè)設(shè)計(jì)。其分支預(yù)測(cè)部分主要用于和取指單元緊密耦合,并和流水線同步。在設(shè)計(jì)上,雁棲架構(gòu)的分支預(yù)測(cè)部分采用了三級(jí)覆蓋預(yù)測(cè)、分支歷史管理的方法。第一級(jí)采用了uBTB方案,第二級(jí)采用BTB+BIM方案,第三級(jí)則采用了TAGE-SC-L結(jié)合RAS和預(yù)譯碼的方案。值得一提的是第三級(jí)采用的TAGE-SC-L分支預(yù)測(cè)方案,其中TAGE全稱是TAgged GEometric history length branch predictor,也就是標(biāo)記幾何歷史長(zhǎng)度分支預(yù)測(cè)期,這個(gè)分支預(yù)測(cè)器在2006的分支預(yù)測(cè)大賽獲得了冠軍,并且展示出了卓越的面積性能比,堪稱目前最強(qiáng)的分支預(yù)測(cè)器之一。AMD在Zen 2架構(gòu)上就引入了TAGE分支預(yù)測(cè)器,而英特爾可能在更早之前就已經(jīng)選擇TAGE作為自己的分支預(yù)測(cè)器的部分了。從已公布的資料來(lái)看,雁棲湖架構(gòu)非常重視分支預(yù)測(cè)器的設(shè)計(jì),三級(jí)結(jié)構(gòu)和最先進(jìn)的TAGE分支預(yù)測(cè)的配合,能夠基本解決取指令的空泡問題,有效地提升整個(gè)CPU架構(gòu)的效率。根據(jù)中科院計(jì)算所團(tuán)隊(duì)內(nèi)部的評(píng)估,雁棲湖架構(gòu)的分支預(yù)測(cè)器平均MPKI也就是每干條指令集的錯(cuò)誤預(yù)測(cè)率相比其他設(shè)計(jì)降低了大約3%。
在指令緩存的設(shè)計(jì)上,雁棲湖架構(gòu)的L1指令緩存采用了128KB,8通路的設(shè)計(jì),而ITLB則采用32通路,另外還有專用的指令緩存,規(guī)格為16KB、4通路。另外拾取目標(biāo)隊(duì)列為48個(gè)隊(duì)列深度、指令緩存也是48隊(duì)列深度,前端解碼器采用了6寬度的設(shè)計(jì)。相比之下,Cortex-A76的L1指令緩存容量為64KB,其余的類似設(shè)計(jì)并未公布詳細(xì)參數(shù)。
在重命名和指令派遣階段,雁棲湖架構(gòu)設(shè)計(jì)了浮點(diǎn)重命名模塊、整數(shù)重命名模塊和擁有192個(gè)隊(duì)列深度的重新排序緩存,浮點(diǎn)物理寄存器文件的隊(duì)列深度為160,整數(shù)物理寄存器文件的隊(duì)列深度也同樣是160。這部分物理寄存器是對(duì)應(yīng)到執(zhí)行階段單元的。
在執(zhí)行階段,雁棲湖架構(gòu)的規(guī)模是比較大的。整數(shù)部分包括4個(gè)ALU、2個(gè)DMU和一個(gè)MISC,浮點(diǎn)部分則包括4個(gè)FMAC和2個(gè)FMISC,地址解碼和數(shù)據(jù)寫回方面設(shè)置了2個(gè)AGULD和2個(gè)AGU ST。雁棲湖架構(gòu)特別對(duì)浮點(diǎn)除法和開方器進(jìn)行了優(yōu)化。和Cortex-A76對(duì)比來(lái)看,Cortex-A76整數(shù)部分只有2個(gè)ALU和1個(gè)ALU/MAC/DIV單元,以及1個(gè)獨(dú)立的分支單元,浮點(diǎn)部分只有1個(gè)可以執(zhí)行FMUL/FADD/FDIV/IMAC的復(fù)雜浮點(diǎn)單元和1個(gè)執(zhí)行FMUL/FADD/ALU的單元。
這樣看來(lái),雁棲湖架構(gòu)在后端執(zhí)行方面要比Cortex-A76的規(guī)模大一些,并且大量采用簡(jiǎn)單功能單元,而Cortex-A76則相對(duì)規(guī)模較小,但是大量采用復(fù)雜功能單元。這顯示了兩者不同的設(shè)計(jì)取向。相對(duì)應(yīng)的,雁棲湖架構(gòu)的前端也是為這種較大規(guī)模的執(zhí)行單元設(shè)計(jì)的,比如發(fā)射寬度為6,而Cortex-A76的發(fā)射寬度為4。當(dāng)然,這部分設(shè)計(jì)并不能說(shuō)明兩者孰優(yōu)孰劣,目前來(lái)看雁棲湖架構(gòu)還只是初代版本,在設(shè)計(jì)經(jīng)驗(yàn)和性能方面還有很大的上升空間。相對(duì)ARM這種在CPU微架構(gòu)設(shè)計(jì)的“千年老妖”來(lái)說(shuō),雁棲湖架構(gòu)在現(xiàn)階段最重要的任務(wù)是完成架構(gòu)設(shè)計(jì),并通過(guò)架構(gòu)不斷迭代提高性能。
最后再來(lái)看—下雁棲湖架構(gòu)的內(nèi)存部分。這部分包括1個(gè)64隊(duì)列深度的讀取排隊(duì)單元和同樣為64隊(duì)列深度的存儲(chǔ)排隊(duì)單元,以及16x64Bit的存儲(chǔ)緩存。雁棲湖架構(gòu)設(shè)計(jì)了1個(gè)32KB、8通路的數(shù)據(jù)緩存用于緩沖所有的內(nèi)存數(shù)據(jù),這個(gè)緩存到DTLB的速率是2x8Bit每周期、到讀取隊(duì)列單元的速度是每周期64Bit,到存儲(chǔ)緩存的速度也是每周期64Bit。相比之下,Cortex-A76的數(shù)據(jù)緩存容量為64KB,沒有采用存儲(chǔ)緩存設(shè)計(jì)。雁棲湖架構(gòu)的L2緩存為1MB、8通路,這個(gè)緩存容量在面向高性能設(shè)計(jì)的架構(gòu)中并不算大,這可能和整體架構(gòu)的設(shè)計(jì)目標(biāo)有關(guān)。
總的來(lái)看,整個(gè)雁棲湖微架構(gòu)的設(shè)計(jì)具有獨(dú)特的創(chuàng)意和思想,尤其是前端6發(fā)射、改進(jìn)的分支預(yù)測(cè)器、后端執(zhí)行單元的方案選擇等,都讓人看到了國(guó)內(nèi)微架構(gòu)研發(fā)團(tuán)隊(duì)的實(shí)力,非常值得期待。
香山架構(gòu)的雁棲湖微架構(gòu)性能和對(duì)比
前文提到,目前雁棲湖架構(gòu)的性能大概在SPEC CPU 2006中每GHz達(dá)到了7分,未來(lái)的南湖架構(gòu)可以達(dá)到10分。相比目前主流的ARM處理器架構(gòu),這個(gè)成績(jī)算是什么水平呢?
在文章中,雁棲湖微架構(gòu)的研發(fā)團(tuán)隊(duì)沒有說(shuō)明測(cè)試的數(shù)據(jù)是SPEC CPU 2006的整數(shù)還是浮點(diǎn)部分,不過(guò)業(yè)內(nèi)通常以整數(shù)部分的測(cè)試來(lái)進(jìn)行對(duì)比,這里本文就默認(rèn)雁棲湖微架構(gòu)也是運(yùn)行的SPECint 2006的測(cè)試。需要注意的是,這里沒有考慮實(shí)現(xiàn)這樣性能的雁棲湖微架構(gòu)的每瓦特性能、每晶體管性能和最終的每平方毫米性能,而這些具體的參數(shù)會(huì)影響到整個(gè)架構(gòu)的商業(yè)化和實(shí)際可達(dá)性能,本文在這里僅僅單純對(duì)性能,不考慮其他任何變量。
用于對(duì)比的數(shù)據(jù)來(lái)自GoldenReviewer,這是一家海外的測(cè)試團(tuán)隊(duì),測(cè)試了Cortex-A76、Cortex-A77、Cortex-A78和Cortex-X1等不同架構(gòu)、不同處理器的SPECint2006性能。從他們的測(cè)試數(shù)據(jù)來(lái)看,Cortex-A76架構(gòu)在SPECint 2006的每GHz性能大約是10分左右,普遍在10.0 2-10.2之間,最低也有8.6分的產(chǎn)品,但那是作為中等核心,可能存在緩存削減的情況。Cortex-A77的成績(jī)大約在12.2-11.2之間,Cortex-A78則在1.275-13.15之間,Cortex-X1則能達(dá)到13.65-15.13。
目前,雁棲湖微架構(gòu)在同等條件下分?jǐn)?shù)為7分,相比Cortex-A76差距大約還有43%,下一代南湖微架構(gòu)基本上就可以趕上Cortex-A76了,都是10分左右。不過(guò),目前ARM Cortex-X1可以達(dá)到最高15分,最新的Cortex-X2應(yīng)該可以提升至17-19分左右,以南湖10分的水平和它們相比,差距還是比較大的。更不要說(shuō)蘋果的Firestrom微架構(gòu)整體水平顯然超越了Cortex-X2,因此香山架構(gòu)還需要加緊努力追趕國(guó)際先進(jìn)水平。香山架構(gòu)團(tuán)隊(duì)自己也認(rèn)為,目前的架構(gòu)性能依舊比不上多年前的Cortex-A73,要知道Cortex-A73只是一個(gè)2發(fā)射的微架構(gòu)。因此在整體核心架構(gòu)設(shè)計(jì)上,香山架構(gòu)現(xiàn)有的雁棲湖微架構(gòu)只是一個(gè)開始。
除了性能外,在工藝方面雁棲湖微架構(gòu)也存在掣肘。目前雁棲湖微架構(gòu)和后期的南湖微架構(gòu)能夠獲得的最先進(jìn)工藝只有SIMC的14nm,這和目前國(guó)際主流的5nm乃至3nm差距很大。不過(guò)研發(fā)團(tuán)隊(duì)解釋道,自己在28nm工藝下只能運(yùn)行在1.3GHz,并不是由于臺(tái)積電的工藝問題,而是和架構(gòu)設(shè)計(jì)有關(guān),這個(gè)可能和香山架構(gòu)流水線級(jí)數(shù)較少、工藝實(shí)現(xiàn)上缺乏相對(duì)應(yīng)的高頻率設(shè)置有關(guān)。
未來(lái)可期的香山架構(gòu)
到這里,本文對(duì)香山微架構(gòu)的粗淺解讀就告一段落。實(shí)際上在包云崗研究員的文章中還介紹了大量有關(guān)快速開發(fā)和測(cè)試的內(nèi)容,由于和本文關(guān)心的架構(gòu)、性能不是很相關(guān),就暫且略去,有興趣的讀者可以去閱讀原文。從本文的介紹以及香山架構(gòu)、研發(fā)團(tuán)隊(duì)現(xiàn)有的表現(xiàn)來(lái)看,香山架構(gòu)整體設(shè)計(jì)還是頗為獨(dú)特的,初次亮相就體現(xiàn)了一個(gè)自主研發(fā)的高性能微處理器架構(gòu)所應(yīng)有的方方面面,并且具有非常強(qiáng)的成長(zhǎng)性??梢源_定的是,未來(lái)隨著香山架構(gòu)內(nèi)部設(shè)計(jì)的不斷演進(jìn),其性能還會(huì)持續(xù)增長(zhǎng),也有可能某天就突然來(lái)到我們身邊,成為RISC-V世界的主流高性能架構(gòu),被使用在我們的手機(jī)、平板、智能電視機(jī)中,想想還是頗令人期待的。