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