• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    香山開源高性能RISC-V 處理器設(shè)計與實現(xiàn)

    2023-03-27 13:39:06王凱帆徐易難余子濠陳國凱勾凌睿李乾若藺嘉煒劉志剛王華強(qiáng)王誨喆張傳奇張發(fā)旺張林雋張紫飛張梓悅趙陽洋周耀陽鄒江瑞郇丹丹李祖松趙繼業(yè)孫凝暉包云崗
    計算機(jī)研究與發(fā)展 2023年3期
    關(guān)鍵詞:指令設(shè)計

    王凱帆 徐易難 余子濠 唐 丹,3 陳國凱 陳 熙 勾凌睿 胡 軒 金 越 李乾若 李 昕 藺嘉煒 劉 彤 劉志剛 王華強(qiáng) 王誨喆 張傳奇 張發(fā)旺 張林雋 張紫飛 張梓悅 趙陽洋 周耀陽 鄒江瑞 蔡 曄 郇丹丹 李祖松 趙繼業(yè) 何 偉 孫凝暉,3 包云崗

    1(處理器芯片全國重點(diǎn)實驗室(中國科學(xué)院計算技術(shù)研究所)北京 100190)

    2(中國科學(xué)院大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院 北京 100049)

    3(北京開源芯片研究院 北京 100080)

    4(鵬城實驗室 廣東深圳 518055)

    5(深圳大學(xué)計算機(jī)與軟件學(xué)院 廣東深圳 518060)

    6(北京微核芯技術(shù)有限公司 北京 100190)

    處理器芯片是驅(qū)動信息時代發(fā)展的核心引擎.隨著大數(shù)據(jù)和物聯(lián)網(wǎng)時代的來臨,各行業(yè)對數(shù)據(jù)處理的需求越來越高.然而,近年來摩爾定律瀕臨終結(jié)[1],先進(jìn)制造工藝節(jié)點(diǎn)研發(fā)成本上升,昂貴的流片費(fèi)用使得芯片開發(fā)成本也相應(yīng)提升,投入風(fēng)險越來越高.如今,研發(fā)一款通用處理器芯片往往需要投入上百人年,耗費(fèi)上億元研發(fā)經(jīng)費(fèi),只有少數(shù)大企業(yè)才有能力開發(fā)處理器芯片.因此,業(yè)界正在尋求降低芯片開發(fā)門檻的方案.

    開源芯片為上述問題提供了一個方向,成為近年來業(yè)界關(guān)注的新熱點(diǎn).基于開源模式,多方可聯(lián)合開發(fā)共性技術(shù),構(gòu)建支持芯片開發(fā)的基礎(chǔ)設(shè)施,從而降低開發(fā)門檻.2011 年,由加州大學(xué)伯克利分校發(fā)布的新型指令集RISC-V[2]首先實現(xiàn)了指令集層面的開源.區(qū)別于常見的x86 和ARM 等指令集,RISC-V 的特點(diǎn)是開放和自由,由非營利的RISC-V 國際基金會維護(hù),任何人無需獲得授權(quán)即可免費(fèi)使用.近年來,基于RISC-V 指令集的開源硬件不斷涌現(xiàn),包括加州大學(xué)伯克利分校的Rocket-Chip[3]和BOOM[4]、中國科學(xué)院大學(xué)和中國科學(xué)院計算技術(shù)研究所的NutShell[5]等.然而,不少學(xué)者和企業(yè)反映,國內(nèi)外現(xiàn)有的開源RISC-V 處理器項目尚未滿足學(xué)術(shù)界和工業(yè)界的高性能需求.

    香山處理器項目于2020 年6 月啟動.香山是一款開源高性能RISC-V 處理器,以Linux 在操作系統(tǒng)領(lǐng)域的影響力為目標(biāo),期望建立一個在學(xué)術(shù)界和工業(yè)界廣泛應(yīng)用的體系結(jié)構(gòu)創(chuàng)新開源平臺.2021 年6月22 日,香山處理器在第一屆RISC-V 中國峰會首次公開亮相,引起各界廣泛關(guān)注.隨后香山穩(wěn)步發(fā)展,第一代“雁棲湖”微架構(gòu)成功流片,性能達(dá)到預(yù)期,SPEC CPU2006 實測分值為7.01 分/GHz,同頻性能達(dá)到ARM Cortex A73 水平.第二代“南湖”微架構(gòu)正在進(jìn)行最后的迭代優(yōu)化,即將流片.仿真評估結(jié)果顯示,“南湖”微架構(gòu)SPEC CPU2006 分值約為10.42 分/GHz,同頻性能達(dá)到ARM Cortex A76 水平,單核性能為當(dāng)前開源處理器之最,目前已在企業(yè)支持下開展產(chǎn)品化改造工作.第三代“昆明湖”微架構(gòu)將持續(xù)優(yōu)化性能,目前得到眾多企業(yè)的支持,已建立聯(lián)合開發(fā)團(tuán)隊啟動架構(gòu)設(shè)計工作.

    香山項目采用新的開源模式,開源內(nèi)容不僅包括所有源代碼和設(shè)計文檔,還包括支持香山開發(fā)的各類基礎(chǔ)設(shè)施和工具.因此,香山項目能夠成為聯(lián)合企業(yè)開發(fā)的基礎(chǔ)平臺,賦能多方合作.

    本文主要介紹香山處理器前兩代微架構(gòu)的實現(xiàn)細(xì)節(jié)與設(shè)計演進(jìn),并系統(tǒng)闡述實現(xiàn)開源高性能處理器過程中面臨的各種挑戰(zhàn)和汲取的經(jīng)驗,內(nèi)容包括微架構(gòu)性能調(diào)優(yōu)、功能驗證、物理實現(xiàn)和多方協(xié)同開發(fā)等.其中,第1 節(jié)介紹香山處理器的微架構(gòu)總覽;第2~5 節(jié)分別介紹香山處理器前端供指單元、亂序執(zhí)行單元、訪存子系統(tǒng)和緩存子系統(tǒng)的設(shè)計考量與微結(jié)構(gòu)細(xì)節(jié);第6 節(jié)介紹香山處理器的敏捷開發(fā)驗證方法與性能評估結(jié)果;第7 節(jié)介紹香山處理器的后端物理實現(xiàn);第8 節(jié)介紹香山聯(lián)合開發(fā)模式與下一代展望.

    1 香山設(shè)計總覽

    香山是一款超標(biāo)量亂序執(zhí)行的RISC-V 通用處理器,最新版架構(gòu)支持RV64GCBK 指令集,兼容RISC-V 軟件工具鏈與生態(tài).作為一款開源處理器,香山使用Chisel[6]硬件描述語言實現(xiàn),設(shè)計代碼約6 萬行,驗證代碼約3 萬行.香山的微架構(gòu)設(shè)計經(jīng)歷了兩代,分別為“雁棲湖”微架構(gòu)和“南湖”微架構(gòu).兩者的參數(shù)如表1 所示.香山實現(xiàn)了靈活可配的參數(shù)系統(tǒng),可以根據(jù)給定的時序、面積和功耗約束配置大多數(shù)設(shè)計參數(shù).

    Table 1 Tape-out Parameters Comparison of the Two Generations of XiangShan Processor表1 兩代香山處理器流片參數(shù)對比

    2021 年7 月,“雁棲湖”微架構(gòu)首次以28 nm 工藝投片,于次年1 月回片并成功點(diǎn)亮,最高工作頻率為1.3GHz.性能測試負(fù)載采用基準(zhǔn)程序集SPEC CPU2006,以每GHz 分?jǐn)?shù)為性能指標(biāo),該指標(biāo)與處理器的IPC(instruction per cycle)成正比.實測數(shù)據(jù)表明,第一代芯片運(yùn)行 SPECint 2006 達(dá)到 7.03 分/GHz,運(yùn)行 SPECfp 2006 達(dá)到 7.00 分/GHz,符合設(shè)計預(yù)期.圖1為香山第一代芯片與配套板卡.

    Fig.1 Chip and board of the first generation of XiangShan processor圖1 香山處理器第一代芯片與板卡

    香山第一代“雁棲湖”微架構(gòu)如圖2(a)所示.前端供指單元采用4 級流水線緊耦合設(shè)計,每周期最多可以供給8×4B 的指令流.分支預(yù)測采用多級前向覆蓋機(jī)制,實現(xiàn)了簡化版的TAGE-SC-L 分支預(yù)測器.指令從指令緩沖部件取出后分別流經(jīng)譯碼級、重命名級和分派級,每級均可并行處理最多6 條指令.香山實現(xiàn)了分離的通用寄存器堆和浮點(diǎn)寄存器堆,在進(jìn)入保留站之前讀取數(shù)據(jù).保留站是完全分布式的,單個容量為16 項,支持高效的亂序發(fā)射與執(zhí)行.在訪存子系統(tǒng)中,香山包含2 條load 流水線和2 條store流水線,配備高性能內(nèi)存管理單元,支持亂序訪存.流片版本采用單核設(shè)計,配置L2 緩存,并通過L1+緩存緩解L1 指令緩存容量小導(dǎo)致的性能損失.

    香山第二代“南湖”微架構(gòu)如圖2(b)所示,它相比第一代“雁棲湖”微架構(gòu)的主要變化包括:1)前端設(shè)計采用解耦的取指單元和分支預(yù)測架構(gòu),提高指令供給吞吐和分支預(yù)測準(zhǔn)確率;2)功能部件新增RISC-V 位操作(RVB)和標(biāo)量加密運(yùn)算(RVK)指令集擴(kuò)展,并實現(xiàn)了兼容IEEE-754 標(biāo)準(zhǔn)的高性能浮點(diǎn)運(yùn)算部件;3)訪存子系統(tǒng)新增RISC-V 物理內(nèi)存保護(hù)和自定義的可配置物理內(nèi)存屬性,并優(yōu)化了訪存流水線結(jié)構(gòu);4)緩存子系統(tǒng)實現(xiàn)了非包含式的高性能L2/L3 緩存,提升并發(fā)度并降低延遲.流片版本采用雙核、配備3 級緩存.

    在兩代微架構(gòu)的設(shè)計迭代中,香山團(tuán)隊深刻體會到高性能處理器的設(shè)計是一門平衡的藝術(shù),具體體現(xiàn)在2 個維度:

    1)宏觀上.微架構(gòu)設(shè)計需要平衡前端指令供給、后端亂序執(zhí)行與訪存數(shù)據(jù)供給3 個方面,任何一方的性能短板都會因木桶效應(yīng)導(dǎo)致整體性能下降,因此盲目增大配置參數(shù)是不可取的,需要針對性能瓶頸優(yōu)化才能提升整體性能.

    Fig.2 Micro-architecture of the two generations of XiangShan processor圖2 香山處理器兩代微架構(gòu)

    2)微觀上.流水線設(shè)計需要平衡每一級的功能和時序.處理器性能由IPC 和頻率共同決定,流水級設(shè)計不平衡會導(dǎo)致頻率下降從而影響整體性能.因此需要預(yù)先評估設(shè)計復(fù)雜度,規(guī)劃各級邏輯功能并與后端團(tuán)隊緊密協(xié)作調(diào)整時序.

    實踐表明,高性能處理器的微架構(gòu)性能優(yōu)化過程復(fù)雜而漫長,可總結(jié)為2 條原則:一是挖掘硬件結(jié)構(gòu)的并行度,包括指令級并行、訪存級并行等;二是優(yōu)化設(shè)計和算法以降低串行任務(wù)的延遲,例如設(shè)計更流暢的數(shù)據(jù)通路、采用投機(jī)與推測等.上述2 條原則均在香山的設(shè)計與演進(jìn)中得以體現(xiàn).

    2 前端供指單元

    前端供指單元由取指單元和分支預(yù)測器2 部分組成,負(fù)責(zé)從內(nèi)存中取指令以供給后端執(zhí)行,并基于分支預(yù)測結(jié)果實現(xiàn)指令流跳轉(zhuǎn).超標(biāo)量處理器每周期可提交多條指令,故要求前端供指單元具備并行的高吞吐取指和分支預(yù)測能力.為此,第一代“雁棲湖”微架構(gòu)采用緊耦合前端設(shè)計.

    2.1 緊耦合前端設(shè)計

    “雁棲湖”微架構(gòu)的流水線以前端供指單元為起點(diǎn),每周期最多能取8 條4B 的普通指令或16 條2B 的壓縮指令.前端供指單元分為4 個流水級(F1~F4):

    1)F1 級.選擇下一個新取指PC(next-PC)的來源,包括指令序順序的下一行、前端沖刷請求和后端沖刷請求.同時并行訪問L1 指令緩存和多級分支預(yù)測器.

    2)F2 級.單周期延遲預(yù)測器返回預(yù)測結(jié)果,包括跳轉(zhuǎn)方向和目標(biāo)地址.

    3)F3 級.L1 指令緩存返回32B 指令行,將其拆分為指令并進(jìn)行預(yù)譯碼;2 周期延遲預(yù)測器返回預(yù)測結(jié)果.

    4)F4 級.根據(jù)F3鎖存的預(yù)譯碼信息計算jal 指令和條件分支指令(如bne 指令)的目標(biāo)地址,判斷預(yù)測結(jié)果是否正確;3 周期延遲預(yù)測器返回預(yù)測結(jié)果,并選出第一條預(yù)測結(jié)果為“跳轉(zhuǎn)”的指令,將其目標(biāo)地址作為后續(xù)取指PC.

    前端供指單元的F4 級會將打包的指令發(fā)送給指令緩沖部件.指令緩沖部件用于解決處理器前端指令供給和后端執(zhí)行速度的不平衡問題.由于前端最大取指寬度大于譯碼寬度,大多時候指令緩沖部件中的指令是充盈的,因此在L1 指令緩存發(fā)生缺失或因前端沖刷而產(chǎn)生氣泡時,指令緩沖部件仍可向后端供給一定數(shù)量的指令.

    分支預(yù)測器是前端的重要部件.處理器在執(zhí)行過程中,分支預(yù)測錯誤需要沖刷流水線,清除錯誤路徑上的指令,故分支預(yù)測準(zhǔn)確率對性能影響很大.然而,分支預(yù)測存在延遲和準(zhǔn)確率之間的矛盾,越準(zhǔn)確的預(yù)測器往往越復(fù)雜,產(chǎn)生預(yù)測結(jié)果需要耗費(fèi)越多的周期數(shù),從而引入額外的前端氣泡,降低供指效率.為解決該問題,香山采用前向覆蓋方法來預(yù)測分支方向和跳轉(zhuǎn)目標(biāo),其思想是部署簡單和復(fù)雜的子預(yù)測器進(jìn)行并行預(yù)測,先投機(jī)采用前者的預(yù)測結(jié)果,再在后續(xù)流水級中使用后者的結(jié)果矯正前者.僅當(dāng)簡單子預(yù)測器預(yù)測錯誤時,該方法才會暴露復(fù)雜子預(yù)測器的實際延遲,且有效降低了需要流水線后端發(fā)起沖刷的次數(shù).“雁棲湖”微架構(gòu)的分支預(yù)測器分為3 級,如圖3 所示.每一級的預(yù)測結(jié)果都會與前一級進(jìn)行對比,若不一致,則采用后級的預(yù)測結(jié)果,并沖刷前幾級流水級,同時更新PC.

    Fig.3 Branch predictor in Yanqihu micro-architecture圖3 “雁棲湖”微架構(gòu)分支預(yù)測器

    “雁棲湖”微架構(gòu)的分支預(yù)測器主要包含5 個子預(yù)測器:

    1)uBTB.uBTB 是一個使用寄存器實現(xiàn)、單周期產(chǎn)生預(yù)測結(jié)果的小容量分支目標(biāo)緩沖器(branch target buffer,BTB),可提供無氣泡的預(yù)測流.uBTB 采用全相聯(lián)結(jié)構(gòu),通過 PC 的低位索引,所得結(jié)果與PC的高位拼接得到目標(biāo)地址.此外,uBTB 通過兩位飽和計數(shù)器來預(yù)測條件分支指令的跳轉(zhuǎn)方向.

    2)BTB+BIM.BTB 和BIM 分別是容量更大的分支目標(biāo)緩沖器和更準(zhǔn)確的跳轉(zhuǎn)方向預(yù)測器,均使用SRAM實現(xiàn),2周期產(chǎn)生預(yù)測結(jié)果.BTB 和BIM 采用2路組相聯(lián)結(jié)構(gòu),存儲內(nèi)容與 uBTB 類似.

    3)TAGE-SC-L.TAGE[7]是目前準(zhǔn)確率最高的分支預(yù)測算法之一.“雁棲湖”微架構(gòu)實現(xiàn)了該算法的簡化版,延遲為3 周期.預(yù)測器使用64 b 分支歷史和指令PC 索引,利用6 個歷史表獲取預(yù)測分支方向的初步結(jié)果,該結(jié)果經(jīng)由統(tǒng)計糾正器(statistical corrector,SC)部件糾正.此外,內(nèi)部還設(shè)有循環(huán)預(yù)測器(loop predictor)部件預(yù)測循環(huán)退出條件,最終綜合產(chǎn)生方向預(yù)測結(jié)果.

    4)RAS.返回地址堆棧(return address stack,RAS)會在執(zhí)行函數(shù)調(diào)用指令時將PC 壓棧,然后使用棧頂結(jié)果預(yù)測函數(shù)返回指令的跳轉(zhuǎn)PC.RAS 單周期即可返回預(yù)測結(jié)果,但需要得到預(yù)譯碼信息后才能預(yù)測.

    2.2 “南湖”微架構(gòu)解耦前端設(shè)計

    緊耦合前端設(shè)計雖然實現(xiàn)了超標(biāo)量取指與多級分支預(yù)測的結(jié)合,但前端沖刷將給流水線引入大量氣泡,降低供指吞吐.為解決該問題,“南湖”微架構(gòu)的最大改變是采用解耦前端(decoupled frontend)設(shè)計,即從流水線邏輯的角度將分支預(yù)測器與取指單元解耦,將兩者組織為生產(chǎn)者-消費(fèi)者關(guān)系,如圖4 所示.該設(shè)計允許分支預(yù)測器在取指單元阻塞時繼續(xù)工作,預(yù)測更超前的指令流,從而隱藏更多取指氣泡,有效提升取指帶寬,對“南湖”微架構(gòu)的性能提升貢獻(xiàn)很大.

    Fig.4 Structure of decoupled frontend圖4 解耦前端結(jié)構(gòu)

    基于解耦前端設(shè)計,“南湖”微架構(gòu)引入新模塊取指目標(biāo)隊列(fetch target queue,F(xiàn)TQ),作為分支預(yù)測器與取指單元之間的緩沖.取指單元會從FTQ 中讀出待取指令塊的信息,向指令緩存發(fā)送讀取請求.緩存返回結(jié)果后,會根據(jù)指令塊范圍進(jìn)行指令切分和預(yù)譯碼.預(yù)譯碼能檢查一些簡單的分支預(yù)測結(jié)果,例如是否將無條件跳轉(zhuǎn)指令預(yù)測為不跳轉(zhuǎn)等,相關(guān)信息會提早反饋給FTQ 用于更新PC.同時,F(xiàn)TQ 中的指令流信息還可以用于指導(dǎo)指令緩存的預(yù)取,從而降低取指延遲.

    此外,“南湖”微架構(gòu)還全面優(yōu)化了分支預(yù)測器,包括提升部件規(guī)模、降低預(yù)測器延遲,以及優(yōu)化預(yù)測機(jī)制.BTB 部件被替換為以預(yù)測塊為處理單位的取指目標(biāo)緩沖(fetch target buffer,F(xiàn)TB),此處預(yù)測塊指長度不超過32B 且最多包含2 條分支指令的指令塊.FTB 不僅記錄了預(yù)測塊中的分支預(yù)測信息和起始地址預(yù)測信息,同時還預(yù)測該預(yù)測塊的結(jié)束地址.新增的間接跳轉(zhuǎn)預(yù)測器采用了目前已知最先進(jìn)的ITTAGE 算法[7],使每千條指令中間接跳轉(zhuǎn)指令預(yù)測錯誤次數(shù)大幅降低.更多變化細(xì)節(jié)如表2 所示.實驗結(jié)果顯示,針對SPEC CPU2006,解耦前端設(shè)計使取指氣泡平均降低約50%,每千條指令中條件分支指令預(yù)測錯誤次數(shù)降低20%以上.

    Table 2 Frontend Feature Evolution of the Two Generations of XiangShan Processor表2 兩代香山處理器前端特性演進(jìn)

    3 亂序執(zhí)行單元

    亂序執(zhí)行單元是處理器執(zhí)行指令的核心,主要包含調(diào)度和運(yùn)算兩方面.高性能處理器通過寄存器重命名技術(shù)消除“讀后寫”和“寫后寫”兩種偽依賴,并允許在指令窗口中動態(tài)亂序調(diào)度,避免執(zhí)行時間長的老指令阻塞處理器,從而提升指令執(zhí)行的吞吐.這部分的設(shè)計難點(diǎn)是如何在滿足面積與時序約束的條件下盡可能提升指令執(zhí)行的并行度,同時降低計算延遲.

    3.1 “雁棲湖”微架構(gòu)基礎(chǔ)設(shè)計

    基于物理實現(xiàn)的考量,香山將亂序執(zhí)行單元劃分為3 個模塊,包括控制模塊、整型模塊和浮點(diǎn)模塊.控制模塊包含譯碼、重命名和分派等邏輯,如圖5 所示.

    首先,譯碼階段接收前端指令緩沖發(fā)出的指令,將其譯碼為結(jié)構(gòu)化信息并送入重命名階段.香山采用統(tǒng)一物理寄存器堆重命名方式,通過映射表維護(hù)體系結(jié)構(gòu)寄存器堆和物理寄存器堆之間的關(guān)系,每周期可分別分配和釋放最多6 個物理寄存器.此外,還可以通過改變寄存器映射關(guān)系來消除move 指令,實現(xiàn)零延遲執(zhí)行.

    分派階段分2 個流水級:第1 級將重命名后的指令按照類型分別送入整型、浮點(diǎn)和訪存分派隊列中;第2 級將指令按照具體操作類型分發(fā)到各個保留站中.此外,分派階段也會進(jìn)行部分重命名工作,以緩解重命名階段的時序壓力.

    Fig.5 Control module of out-of-order execution unit圖5 亂序執(zhí)行單元控制模塊

    “雁棲湖”微架構(gòu)采用發(fā)射前讀寄存器堆和完全分布式的保留站,以降低設(shè)計復(fù)雜度.考慮物理寄存器堆最大讀寫口數(shù)量的限制,整型模塊中包含7 個保留站,與功能部件一一對應(yīng).功能部件包含4 個ALU、2 個MDU 和1 個Misc 部件.ALU 部件負(fù)責(zé)指令基本算術(shù)和邏輯運(yùn)算,可提前喚醒其他保留站,實現(xiàn)背靠背的指令執(zhí)行;MDU 部件負(fù)責(zé)執(zhí)行乘除法運(yùn)算,其中乘法采用3 級流水的華萊士樹實現(xiàn),除法采用SRT4 算法;Misc 部件負(fù)責(zé)執(zhí)行跳轉(zhuǎn)指令和CSR指令.考慮到面積和時序約束,每個保留站有16 項.

    浮點(diǎn)模塊的保留站組織結(jié)構(gòu)與整型模塊類似,包含6 個保留站,分別對應(yīng)4 個FMAC 和2 個FMISC部件.其中FMAC 部件負(fù)責(zé)執(zhí)行浮點(diǎn)乘法、加法和乘累加,延遲為固定4 周期;FMISC 部件負(fù)責(zé)執(zhí)行除法、開方等運(yùn)算,均采用SRT4 算法.“雁棲湖”微架構(gòu)的浮點(diǎn)功能部件基于Hardfloat[8]開源實現(xiàn)進(jìn)行了少量改進(jìn)和時序優(yōu)化,浮點(diǎn)寄存器堆均采用Recode 格式存儲浮點(diǎn)數(shù).Recode 格式將浮點(diǎn)數(shù)的指數(shù)擴(kuò)展1 位,從而簡化浮點(diǎn)部件的運(yùn)算和舍入邏輯.但該格式擴(kuò)展位數(shù)的做法不利于向量部件的添加,因此“南湖”微架構(gòu)不再采用.

    為實現(xiàn)指令按序提交以支持精確異常,所有指令會在分派階段并行送入重排序緩沖(re-order buffer,ROB)部件以按程序順序記錄指令流.當(dāng)指令經(jīng)由保留站發(fā)射進(jìn)入功能部件并執(zhí)行完畢后,運(yùn)算結(jié)果經(jīng)過寫回模塊的仲裁器寫回ROB,并標(biāo)記指令執(zhí)行完成等待提交.ROB 每周期可接收來自分派階段最多6 條指令,并提交最多6 條指令.當(dāng)分支預(yù)測錯誤或觸發(fā)異常中斷時,ROB 會標(biāo)記出錯指令,然后沖刷流水線,并通知前端供指單元根據(jù)新PC 重新取指.同時,ROB 從尾部開始回滾狀態(tài),并根據(jù)其中記錄的重命名信息恢復(fù)重命名映射表.

    3.2 “南湖”微架構(gòu)的演進(jìn)

    “南湖”微架構(gòu)整體沿用“雁棲湖”微架構(gòu)中的亂序執(zhí)行單元框架,同時通過若干優(yōu)化提升整體性能.

    首先,“南湖”微架構(gòu)通過新增指令集擴(kuò)展和指令融合特性來降低處理器的動態(tài)指令數(shù),從而減少相同程序的執(zhí)行時間.“南湖”微架構(gòu)實現(xiàn)了RISC-V規(guī)范的RVB 擴(kuò)展和RVK 擴(kuò)展,不僅使部分程序的動態(tài)指令數(shù)降低10%以上,還能減少分支指令數(shù)量,降低誤預(yù)測造成的整體性能損失.此外,“南湖”微架構(gòu)根據(jù)大量運(yùn)算負(fù)載中總結(jié)出的常見指令組合添加了指令融合特性,提升了各個隊列的存儲效率,增大了亂序執(zhí)行的指令窗口.

    其次,“南湖”微架構(gòu)優(yōu)化了功能部件的運(yùn)算延遲.“南湖”微架構(gòu)實現(xiàn)了兼容IEEE 754 標(biāo)準(zhǔn)的高性能浮點(diǎn)計算單元,使用雙通路浮點(diǎn)加法器和級聯(lián)式浮點(diǎn)乘加單元,降低了浮點(diǎn)乘法和加法的延遲.此外,“南湖”微架構(gòu)將整型和浮點(diǎn)的除法算法升級為SRT16,除法運(yùn)算的延遲大多時候可降低一半.

    最后,“南湖”微架構(gòu)還優(yōu)化了發(fā)射單元的時序,使用最老優(yōu)先的發(fā)射策略,同時合并了部分保留站,提升其利用率.這些改進(jìn)在滿足指令背靠背執(zhí)行的前提下有效提升了亂序執(zhí)行單元的效率與時序表現(xiàn).

    4 訪存子系統(tǒng)

    訪存子系統(tǒng)負(fù)責(zé)處理保留站發(fā)出的load 和store請求,與亂序執(zhí)行單元耦合,對緩解處理器訪存瓶頸、提高數(shù)據(jù)供給效率十分關(guān)鍵.訪存子系統(tǒng)的設(shè)計挑戰(zhàn)包括如何提升訪存并行度、如何設(shè)計平衡的訪存流水線等.

    香山訪存子系統(tǒng)支持亂序訪存,符合RVWMO(RISC-V weak memory ordering)內(nèi)存一致性模型,包含2 條load 流水線和2 條store 流水線,可支持最多4 條訪存指令并行執(zhí)行.

    4.1 亂序訪存機(jī)制

    亂序訪存機(jī)制指盡早發(fā)射沒有依賴的訪存指令,從而提升訪存并行度,但仍要求訪存指令按序提交.為實現(xiàn)該機(jī)制,現(xiàn)代處理器大都通過專用訪存隊列,包括讀取隊列(load queue)和存儲隊列(store queue),記錄訪存指令的順序,同時檢查訪存指令之間的數(shù)據(jù)依賴關(guān)系,若違背內(nèi)存一致性,則回滾處理器狀態(tài).為正確實現(xiàn)RVWMO 一致性模型,需要檢查訪存違例,即確認(rèn)訪存地址相同的load-load 指令對和storeload 指令對必須按序執(zhí)行,訪存地址不同的訪存指令對則可亂序執(zhí)行.香山處理器借助訪存隊列檢查訪存違例,通過流水級沖刷機(jī)制讓處理器從違背依賴關(guān)系的訪存指令開始重新執(zhí)行.

    訪存隊列大小決定了訪存并行度的上限.“雁棲湖”微架構(gòu)的load queue 為一個64 項的循環(huán)隊列.每周期從分派階段接收最多6 條load 指令,從2 條load流水線接收指令的執(zhí)行結(jié)果,每周期最多寫回2 條發(fā)生緩存缺失并重填后的指令,寫回操作會與正常的訪存流水線共享寫回端口.當(dāng)數(shù)據(jù)緩存發(fā)生重填時,會將重填的整個緩存行廣播到load queue 的所有項,從而喚醒等待該緩存行數(shù)據(jù)的訪存指令.類似地,store queue 共48 項,每周期接收最多6 條store 指令,從2 條store 流水線中接收指令的執(zhí)行結(jié)果,并最后寫回.

    store 指令的最后一步是將數(shù)據(jù)寫回數(shù)據(jù)緩存.但若每次提交store 指令時均占用數(shù)據(jù)緩存的寫端口,則會嚴(yán)重阻塞后端執(zhí)行.為緩解該問題,香山設(shè)計了committed store buffer 部件,用于記錄已提交但未寫回數(shù)據(jù)緩存的信息,作用類似L0 緩存,并以緩存行粒度合并store queue 傳來的數(shù)據(jù).緩沖項數(shù)超過閾值后,會使用PLRU 替換算法選出一項進(jìn)行換出,每周期至多向數(shù)據(jù)緩存寫入1 個緩存行.這一設(shè)計符合RVWMO一致性模型,將數(shù)據(jù)核間同步的需求轉(zhuǎn)移給軟件同步指令以提升訪存性能.

    為減少訪存違例導(dǎo)致的流水線沖刷與回滾,提升亂序訪存性能,“雁棲湖”微架構(gòu)添加了基于load wait table[9]的訪存違例預(yù)測器,當(dāng)預(yù)測到一條load 指令可能違背依賴關(guān)系時,保留站將阻塞該load 指令的發(fā)射,直到比它年老的所有store 指令都發(fā)射后才能解除阻塞.

    4.2 訪存流水線

    當(dāng)訪存指令從保留站發(fā)射后,就會進(jìn)入load 或store 流水線執(zhí)行,如圖6 所示.

    Fig.6 load/store pipe of Yanqihu micro-architecture圖6 “雁棲湖”微架構(gòu)訪存流水線

    為平衡各級時序,“雁棲湖”微架構(gòu)load 流水線分為3 級,并通過前遞機(jī)制解決依賴:1)第1 級計算虛擬地址,訪問TLB 進(jìn)行虛實地址轉(zhuǎn)換,同時用虛擬地址索引數(shù)據(jù)緩存;2)第2 級收到TLB 翻譯后的物理地址,將其送入數(shù)據(jù)緩存比較標(biāo)簽,同時送入store queue,查詢是否需要將store 結(jié)果前遞到load,此外還會產(chǎn)生數(shù)據(jù)緩存的命中信息,反饋至保留站喚醒后續(xù)指令;3)第3 級根據(jù)數(shù)據(jù)緩存的讀取結(jié)果和store queue 的前遞結(jié)果選擇實際讀取的數(shù)據(jù),將其寫回到公共數(shù)據(jù)總線或者浮點(diǎn)模塊,同時更新load queue 中對應(yīng)項的狀態(tài).

    store 流水線略有不同,它分為4 級流水:第1 級與load 流水線類似,計算地址并訪問TLB 和數(shù)據(jù)緩存;第2 級則會將物理地址寫入store queue,同時檢查訪存違例;檢查操作持續(xù)第3 級和第4 級流水,并將檢查結(jié)果通知ROB.

    4.3 內(nèi)存管理單元

    內(nèi)存管理單元(memory management unit,MMU)是訪存子系統(tǒng)的重要部分,負(fù)責(zé)將虛擬地址翻譯到物理地址并檢查頁權(quán)限,以支撐現(xiàn)代操作系統(tǒng)的頁式內(nèi)存管理.香山處理器使用硬件遍歷頁表,實現(xiàn)了RISC-V 規(guī)范的Sv39 分頁機(jī)制,支持3 種不同大小(4KB,2MB,1GB)的頁.此外,香山還實現(xiàn)了物理內(nèi)存屬性(physical memory attribution,PMA),用于檢查訪存操作的權(quán)限.

    地址翻譯位于訪存的數(shù)據(jù)通路中.為了提升地址翻譯效率,香山利用訪存局部性原理,使用多級TLB 緩存頁表項.“雁棲湖”微架構(gòu)的L1 TLB 包括ITLB 和DTLB,分別與指令緩存和數(shù)據(jù)緩存的流水線耦合,均采用全相聯(lián)結(jié)構(gòu),包含32 項4 KB 頁和4項2 MB/1 GB 頁.L1 TLB 缺失時,會向L2 TLB 發(fā)送請求.L2 TLB 是更大的頁表項緩存,由 ITLB 和 DTLB共享,緩存了Sv39 機(jī)制中三級頁表的頁表項.L2 TLB缺失時,將觸發(fā)頁表遍歷器(page table walker,PTW)訪問內(nèi)存中的頁表項.由于兩級TLB 之間的物理布局距離較遠(yuǎn),故在兩者中間新增了repeater 部件,用于緩沖請求并過濾重復(fù)請求,避免L1 TLB 中出現(xiàn)重復(fù)項而降低命中率.

    4.4 “南湖”微架構(gòu)的改進(jìn)

    除增大訪存隊列外,“南湖”微架構(gòu)對訪存子系統(tǒng)的改進(jìn)還包括增強(qiáng)MMU 和優(yōu)化訪存流水線.

    對于MMU,“南湖”微架構(gòu)首先優(yōu)化性能關(guān)鍵的DTLB,采用16 項全相聯(lián)和64 項直接映射并行查詢的設(shè)計,增大了有效容量,替換算法也從隨機(jī)升級為PLRU.考慮面積和時序,“南湖”微架構(gòu)縮減了L2 TLB 的容量.為彌補(bǔ)容量縮減帶來的性能影響并提升PTW 訪存效率,“南湖”微架構(gòu)將PTW 部件拆分為2 個狀態(tài)機(jī),一個負(fù)責(zé)訪問前2 級頁表,另一個負(fù)責(zé)訪問末級頁表,并將后者的訪存并行度從1 提升至8.此外,“南湖”微架構(gòu)還增強(qiáng)了PMA 部件的可編程性,新增兼容RISC-V 規(guī)范的物理內(nèi)存保護(hù)(physical memory protection,PMP)部件,為軟件提供內(nèi)存保護(hù)的抽象,使操作系統(tǒng)可與硬件協(xié)同提升香山的安全性.

    對于訪存流水線,“南湖”微架構(gòu)將store 指令的地址與數(shù)據(jù)計算分離,將“雁棲湖”微架構(gòu)中2 條4級store 流水線拆分為2 條2 級存儲地址流水線和2條2 級存儲數(shù)據(jù)流水線.該設(shè)計使保留站不必等待store 指令的地址和數(shù)據(jù)皆就緒才發(fā)射,提升了指令執(zhí)行并行度,同時更有效地規(guī)避訪存違例.“南湖”微架構(gòu)的訪存違例預(yù)測算法采用store set[10],提升了預(yù)測準(zhǔn)確率.

    “雁棲湖”微架構(gòu)中的load 流水線是時序瓶頸之一,為提升主頻,“南湖”微架構(gòu)將load 流水線的長度從3 級調(diào)整為4 級,并通過若干優(yōu)化彌補(bǔ)由此帶來的性能損失,其中有2 個關(guān)鍵優(yōu)化點(diǎn):

    1)load to load 優(yōu)化.指針追逐是程序中常見的訪存模式,在指令中表現(xiàn)為將前一條load 指令的讀出結(jié)果作為后一條load 指令的訪存地址.為優(yōu)化該場景,經(jīng)觀察,一段時間內(nèi)load 指令的有效地址通常對應(yīng)相同的緩存索引,因此“南湖”微架構(gòu)推測訪問數(shù)據(jù)緩存的標(biāo)簽.若推測成功,則load to load 的延遲可從4 周期降為3 周期.

    2)load 前遞機(jī)制優(yōu)化.“南湖”微架構(gòu)推測地使用虛擬地址比較前遞時的地址,再使用物理地址判斷前遞結(jié)果是否正確.該機(jī)制可在地址比較的數(shù)據(jù)通路中排除DTLB 地址轉(zhuǎn)換帶來的延遲,優(yōu)化關(guān)鍵路徑的時序.若物理地址檢查失敗,則清空訪存流水線并重新執(zhí)行.統(tǒng)計結(jié)果顯示,虛實地址前遞結(jié)果不匹配的概率很低.

    5 緩存子系統(tǒng)

    香山處理器充分挖掘訪存的時間與空間局部性,設(shè)計多級緩存以提升訪存效率.

    5.1 香山緩存結(jié)構(gòu)

    考慮面積約束,“雁棲湖”微架構(gòu)采用單核2 級緩存結(jié)構(gòu).L1 指令緩存和L1 數(shù)據(jù)緩存均采用虛擬索引物理標(biāo)簽(virtual index physical tag,VIPT)模式,兩者共享L2 緩存.L1 指令緩存大小為16 KB,4 路組相聯(lián);L1 數(shù)據(jù)緩存大小為32 KB,8 路組相聯(lián).為彌補(bǔ)指令緩存容量偏小帶來的性能影響,“雁棲湖”微架構(gòu)額外設(shè)計了一個L1+緩存,位于L1 指令緩存與L2 緩存之間,大小為128 KB.

    “雁棲湖”微架構(gòu)L2 緩存大小為1 MB,8 路組相聯(lián),采用包含關(guān)系,硬件不維護(hù)指令緩存的一致性,由軟件顯式執(zhí)行Fence.i 指令來維護(hù).“雁棲湖”微架構(gòu)的L2 緩存基于InclusiveCache 開源項目[11]進(jìn)行若干功能增強(qiáng)和時序調(diào)整,以滿足時序約束.

    “南湖”微架構(gòu)采用雙核3 級緩存結(jié)構(gòu).每個核心的L1 指令緩存與L1 數(shù)據(jù)緩存共享其私有的1 MB L2 緩存,雙核共享一個6 MB、6 路組相聯(lián)的L3 緩存,硬件維護(hù)核間數(shù)據(jù)一致性.此外,“南湖”微架構(gòu)還支持指令緩存和數(shù)據(jù)緩存之間的一致性,軟件執(zhí)行Fence.i 指令后無需沖刷指令緩存.“南湖”微架構(gòu)重新設(shè)計了L2 緩存和L3 緩存的內(nèi)部結(jié)構(gòu),這也是“南湖”微架構(gòu)的緩存子系統(tǒng)相對“雁棲湖”微架構(gòu)改動最大之處.

    5.2 “南湖”微架構(gòu)HuanCun 緩存設(shè)計

    “雁棲湖”微架構(gòu)使用的InclusiveCache 雖然設(shè)計精巧,但存在若干缺陷:1) 不支持下一級緩存的一致性,即無法處理下游發(fā)送的snoop 請求;2) 頻率難以提升,受其結(jié)構(gòu)限制較大;3) 配置不夠靈活,僅支持包含式的緩存結(jié)構(gòu),在處理器核較多、緩存結(jié)構(gòu)復(fù)雜的場景下,采用包含式會損失較多有效容量.為提升緩存性能和緩解香山處理器的訪存瓶頸,“南湖”微架構(gòu)開發(fā)了代號為HuanCun 的緩存模塊.

    HuanCun 基于TileLink 總線開發(fā),使用目錄維護(hù)一致性,支持包含式和非包含式,以及多種替換策略.在流片版本中,“南湖”微架構(gòu)的L2 和L3 緩存均采用非包含式和PLRU 替換策略,以最大化有效容量.

    HuanCun 總體結(jié)構(gòu)分為目錄、數(shù)據(jù)存儲、未命中狀態(tài)處理寄存器(miss-status handling registers,MSHR)、通道控制器和預(yù)取引擎5 部分,如圖7 所示.目錄模塊負(fù)責(zé)維護(hù)緩存元數(shù)據(jù),同時保存上層數(shù)據(jù)與本層數(shù)據(jù)的元數(shù)據(jù),包括權(quán)限、臟位等.數(shù)據(jù)存儲模塊負(fù)責(zé)存儲具體數(shù)據(jù),可通過參數(shù)配置 bank 數(shù)量從而提升讀寫并行度.MSHR 是非阻塞緩存的核心部件,負(fù)責(zé)處理具體的請求控制邏輯,包含多組狀態(tài)機(jī)以維護(hù)一致性.MSHR 的項數(shù)決定了緩存最大的處理并行度;通道控制模塊負(fù)責(zé)與標(biāo)準(zhǔn) TileLink 總線接口交互,包括將外部請求轉(zhuǎn)換為緩存內(nèi)部信號,以及將緩存內(nèi)部請求轉(zhuǎn)換為 TileLink 請求向外發(fā)送.“南湖”微架構(gòu)的預(yù)取引擎實現(xiàn)了高性能的BOP 算法和SMS算法,有效提升緩存命中率.此外,HuanCun 可將請求地址的低位作為索引分片(slice)以提升并行度,每個分片的邏輯相互獨(dú)立,負(fù)責(zé)具體的任務(wù)管理.

    Fig.7 Micro-architecture of HuanCun圖7 HuanCun 微結(jié)構(gòu)

    HuanCun 的總體工作流程為:1)通道控制模塊接受 TileLink 請求,將其轉(zhuǎn)換為緩存內(nèi)部請求;2) 仲裁和分配邏輯為內(nèi)部請求分配1 個MSHR;3) MSHR根據(jù)不同請求類型發(fā)起各類任務(wù),包括數(shù)據(jù)讀寫、向上下層緩存發(fā)送新請求或返回響應(yīng)、更新預(yù)取器狀態(tài)等;4) 當(dāng)MSHR 完成一個請求的全部操作時,MSHR 將被釋放,等待接收新請求.HuanCun 的設(shè)計存在不少挑戰(zhàn):

    1)死鎖問題

    由于請求獨(dú)占MSHR 且MSHR 資源有限,故在復(fù)雜的多級緩存子系統(tǒng)中,總線請求間容易造成循環(huán)等待,導(dǎo)致死鎖.為規(guī)避死鎖,HuanCun 采取的設(shè)計包括更改請求分配策略,引入僅處理嵌套請求的MSHR,以及引入請求的打斷和跨層處理機(jī)制.

    2)狀態(tài)爆炸問題

    非包含式緩存的狀態(tài)空間很大,需處理多種異步的總線請求,以及請求打斷與跨層處理等機(jī)制.為此,HuanCun 擯棄了傳統(tǒng)的狀態(tài)機(jī)建模方式,而是采用若干標(biāo)志寄存器聯(lián)合表示狀態(tài).同時,構(gòu)造合理的抽象,盡可能將請求處理的狀態(tài)機(jī)解耦.

    3)緩存別名問題

    由于“南湖”微架構(gòu)的L1 緩存(指令緩存和數(shù)據(jù)緩存)使用VIPT 索引方式,且索引位與行內(nèi)偏移的總位寬超過了頁內(nèi)偏移(4KB,12b),這導(dǎo)致同一個緩存塊可能在L1 緩存中存在2 個以不同虛擬地址索引的副本,造成別名問題.“南湖”微架構(gòu)采用硬件抗別名(anti-alias)機(jī)制,在L2 緩存的目錄中存放L1 緩存塊的虛擬地址別名位;若L2 緩存檢測到潛在的別名問題,則向L1 緩存發(fā)送命令使舊數(shù)據(jù)塊無效,保證L1 緩存只存放一個副本.

    HuanCun 還采取了若干降低訪問延遲和增大訪存并行度的設(shè)計.在延遲優(yōu)化方面,HuanCun 重點(diǎn)優(yōu)化了通道控制模塊的流水線,以盡早釋放資源;新增的重填緩沖(refill buffer)部件負(fù)責(zé)將重填數(shù)據(jù)旁路傳輸給上級緩存.在并行度優(yōu)化方面,HuanCun 增加了請求緩沖(request buffer)部件,緩解總線的阻塞情況;同時重點(diǎn)優(yōu)化了MSHR 向通道控制器的仲裁策略,使得所有的通道控制器大多時候均可并行工作.實驗結(jié)果表明,針對部分敏感程序片斷,HuanCun 與InclusiveCache 相比性能提升約30%.

    6 敏捷設(shè)計驗證方法與性能評估

    6.1 基于Chisel 語言的敏捷設(shè)計

    香山項目啟動時,團(tuán)隊選擇使用硬件描述語言Chisel.Chisel[6]由加州大學(xué)伯克利分校團(tuán)隊在2012年發(fā)布,相比于傳統(tǒng)的Verilog 語言,Chisel 能夠充分運(yùn)用現(xiàn)代軟件工程中面向?qū)ο缶幊獭⒑瘮?shù)式編程和元編程等技術(shù)對硬件進(jìn)行抽象,提高編碼效率和代碼可讀性,使得硬件敏捷開發(fā)成為可能.筆者所在團(tuán)隊曾對比兩者的編碼效率和代碼質(zhì)量[12],結(jié)論是Chisel 不僅在開發(fā)效率上遠(yuǎn)高于Verilog,生成的硬件電路也具有更小的面積和更低的延遲.此外,筆者所在團(tuán)隊在2020 年研發(fā)了基于Chisel 語言的標(biāo)簽化體系結(jié)構(gòu)原型系統(tǒng)并成功投片,打通了Chisel 語言和后端物理實現(xiàn)的全流程,給香山項目的開發(fā)語言選擇提供了重要參考.

    目前,“南湖”微架構(gòu)的Chisel 代碼超過6 萬行.據(jù)分析,Verilog 的代碼密度約為Chisel 的1/5[12]因此“南湖”微架構(gòu)的設(shè)計規(guī)模約為30 萬行Verilog 代碼量.此外,香山項目積累的驗證代碼超過3 萬行.

    圖8 展示了自2020 年6 月至2022 年10 月兩代香山研發(fā)過程的4 個角度:1)截止到“南湖”微架構(gòu)代碼凍結(jié),代碼提交共7498 次,高峰期達(dá)到每周169 次;2)香山在微結(jié)構(gòu)特性的驅(qū)動下持續(xù)演進(jìn),在主體框架搭建完成后逐步添加各類優(yōu)化特性,關(guān)鍵性能優(yōu)化點(diǎn)在圖8 中列出;3)香山采用時序優(yōu)化與微架構(gòu)迭代并行前進(jìn)的開發(fā)流程,在設(shè)計早期就通過時序評估流程指導(dǎo)微結(jié)構(gòu)設(shè)計;4)香山研制了各類基礎(chǔ)設(shè)施與開發(fā)工具,并不斷完善其功能性和易用性.這些設(shè)施與工具有效支撐香山的設(shè)計、驗證和性能評估全流程,是香山快速迭代的關(guān)鍵因素.

    Fig.8 Development timeline of XiangShan圖8 香山開發(fā)時間軸

    基于Chisel 語言優(yōu)秀的建模和描述能力,香山構(gòu)建了靈活的參數(shù)化系統(tǒng),成為一個“處理器生成器”,可根據(jù)用戶指定的性能、面積、功耗需求進(jìn)行定制,滿足開發(fā)者的各類需求.例如,香山只需改動一個參數(shù),即可由6 發(fā)射修改為4 發(fā)射,并成功通過各種測試.此外,處理器的核數(shù)、各種隊列的大小均可配置.

    6.2 敏捷驗證方法

    處理器的設(shè)計效率提升后,驗證成為開發(fā)流程的新瓶頸.高性能處理器結(jié)構(gòu)復(fù)雜、狀態(tài)繁多,驗證工作是一個公認(rèn)的難題.即使香山“雁棲湖”微架構(gòu)在3 個月內(nèi)成功在仿真環(huán)境下啟動Linux 操作系統(tǒng),卻仍需額外投入8 個月和大量人力才完成更全面的驗證工作.為緩解驗證瓶頸,香山團(tuán)隊積極探索敏捷驗證的新方法和新工具,于2022 年的體系結(jié)構(gòu)國際頂會MICRO 上發(fā)表相關(guān)成果[13].敏捷驗證方法重點(diǎn)聚焦在仿真驗證環(huán)節(jié),將處理器驗證問題看作一個循環(huán),循環(huán)體包括發(fā)現(xiàn)錯誤、保存出錯現(xiàn)場、定位并解決問題.敏捷驗證的思想是加快每一輪驗證循環(huán)的過程,從而提升驗證效率.以下從3 個方面介紹敏捷驗證的工具和方法.

    1)高效發(fā)現(xiàn)錯誤

    傳統(tǒng)的驗證方法通常對比待測設(shè)計(DUT,通常是RTL 實現(xiàn)的硬件電路)與參考模型(REF,通常是C/SystemVerilog 實現(xiàn)的行為模型)輸出結(jié)果的一致性.然而,這需要耗費(fèi)大量人力搭建參考模型,且一旦待測設(shè)計迭代更新,參考模型也需同步更新.為提高驗證效率,香山團(tuán)隊提出基于合法規(guī)則匹配的指令級在線差分驗證框架Difftest.Difftest 框架定義了一套精簡通用的API,捕捉處理器仿真時的指令提交和其他狀態(tài)更新,驅(qū)動指令集模擬器執(zhí)行相同的指令,在線對比兩者狀態(tài),并基于自定義的規(guī)則判斷處理器仿真狀態(tài)是否正常.該框架還支持多核系統(tǒng)驗證,可檢測緩存一致性、內(nèi)存一致性的違例錯誤.

    2)低成本保存出錯現(xiàn)場

    仿真出錯后,開發(fā)者需要抓取出錯現(xiàn)場信息以分析和定位問題.傳統(tǒng)驗證方法要么在調(diào)試模式下全程仿真,產(chǎn)生大量的無用調(diào)試信息占用磁盤帶寬和空間;要么出錯后重新仿真復(fù)現(xiàn)錯誤,時間開銷較大.香山團(tuán)隊受軟件容錯技術(shù)的啟發(fā),提出定期快照和出錯回滾結(jié)合的方式來保存和復(fù)現(xiàn)出錯現(xiàn)場.為解決大量快照占用磁盤空間的問題,香山團(tuán)隊提出LightSSS 工具,利用操作系統(tǒng)的寫時復(fù)制機(jī)制,定期通過Fork 系統(tǒng)調(diào)用保存仿真過程的進(jìn)程狀態(tài),實現(xiàn)仿真快照的輕量生成與便捷恢復(fù).

    3)快速定位并解決問題

    恢復(fù)出錯現(xiàn)場后,傳統(tǒng)的錯誤定位方法通常是基于波形調(diào)試.然而,波形信息密度較低,調(diào)試費(fèi)時費(fèi)力.特別地,復(fù)雜隊列和緩存相關(guān)的錯誤因狀態(tài)更新間隔長,難以通過出錯現(xiàn)場附近的波形直接定位問題.為解決上述挑戰(zhàn),敏捷驗證方法提出一套調(diào)試框架ChiselDB,可獲取設(shè)計代碼中指定的數(shù)據(jù)結(jié)構(gòu),然后在仿真過程自動收集調(diào)試信息并導(dǎo)入數(shù)據(jù)庫,后續(xù)可通過數(shù)據(jù)庫API 查看和分析,從而提升調(diào)試效率.

    6.3 性能評估

    香山實現(xiàn)了一套基于仿真的快速性能評估方法,通過大規(guī)模并行仿真具有代表性的程序檢查點(diǎn)來評估架構(gòu)設(shè)計的性能.具體流程為:1) 使用高速的指令集模擬器對程序負(fù)載進(jìn)行切片和采樣,生成可在其他模擬和仿真環(huán)境中恢復(fù)的檢查點(diǎn);2) 使用機(jī)器學(xué)習(xí)聚類方法SimPoint[14]分析檢查點(diǎn),選出具有代表性的檢查點(diǎn)并計算對應(yīng)權(quán)重;3) 讓香山處理器在多臺服務(wù)器上并行仿真運(yùn)行選取的檢查點(diǎn);4) 根據(jù)仿真結(jié)果和權(quán)重綜合計算出香山處理器的性能評估數(shù)據(jù).

    通過該性能評估方法,可在3~5 天內(nèi)評估“雁棲湖”微架構(gòu)的SPEC 分值,評估結(jié)果與硅后的性能測試的對比如圖9 所示.實踐表明,該方法平均誤差為5%~10%,部分誤差來源于芯片DRAM 與仿真模型的不一致.

    “南湖”微架構(gòu)目前尚未投片,其單核仿真性能評估如圖10 所示.“南湖”微架構(gòu)的仿真評估分值達(dá)到了SPECint 9.550 分/GHz、SPECfp 11.085 分/GHz,在2 GHz 下的總分為20.844 分.截至目前,該性能在開源處理器中排名第一,同頻性能還超過了Sifive P550 等商業(yè)處理器,達(dá)到ARM Cortex A76 水平.

    此外,該性能評估方法有助于快速探索設(shè)計空間.例如,RVB 擴(kuò)展的相關(guān)實驗結(jié)果顯示,基于GCC 10.2.0 版本工具鏈,默認(rèn)配置下開啟RVB 擴(kuò)展使SPECint 性能提升10.8%,SPECfp 則基本保持不變.性能提升的原因是RVB 指令可替代部分分支指令,從而減少分支預(yù)測錯誤導(dǎo)致的回滾開銷.因此,優(yōu)秀的指令集擴(kuò)展對于處理器性能提升十分關(guān)鍵.

    7 物理實現(xiàn)

    香山兩代微架構(gòu)均采用前后端緊密協(xié)作的開發(fā)流程,迭代優(yōu)化處理器主頻,表3 為“雁棲湖”微架構(gòu)最終流片的參數(shù)列表.

    “南湖”微架構(gòu)目前已進(jìn)入后端物理實現(xiàn)階段.“南湖”微架構(gòu)的目標(biāo)主頻是14 nm 工藝下達(dá)到2 GHz,考慮到設(shè)計通用性,未采用定制電路.后端團(tuán)隊根據(jù)物理評估結(jié)果多次調(diào)整布局布線方式,從開始的粗放式模塊擺放演進(jìn)到后期的細(xì)節(jié)調(diào)優(yōu),不斷平衡時序與布線之間的沖突.“南湖”微架構(gòu)后端物理實現(xiàn)已迭代優(yōu)化40 余次,最新一版如圖11 所示.此外,前端團(tuán)隊也針對后端難以處理的時序關(guān)鍵路徑改動了大量相關(guān)邏輯.

    Fig.9 Performance comparison of Yanqihu micro-architecture between simulation and real chip圖9 “雁棲湖”微架構(gòu)仿真與真實芯片性能對比

    除香山外,目前暫未有開源高性能處理器達(dá)到2 GHz,后端團(tuán)隊在相同條件下評估BOOM 處理器[4],其主頻約1 GHz.大量開源處理器存在前端架構(gòu)設(shè)計與后端時序優(yōu)化割裂的問題,往往表現(xiàn)為:1) 寄存器扇入過大,邏輯級數(shù)過長;2) 寄存器扇出過大,需要插入驅(qū)動電路影響延遲;3) 模塊間邏輯耦合過深,信號布線距離過長.經(jīng)過“雁棲湖”微架構(gòu)的流片實踐后,香山團(tuán)隊深刻認(rèn)識到前后端協(xié)同優(yōu)化需盡早開展,在設(shè)計規(guī)模大、設(shè)計功能復(fù)雜、不同功能的模塊數(shù)量多的情況下,如何通過協(xié)同優(yōu)化芯片的功耗、性能和面積尤為關(guān)鍵,這也是業(yè)界常說的“左移”.在“南湖”微架構(gòu)開發(fā)中,前后端團(tuán)隊積極溝通,主要優(yōu)化措施為:

    1)重新組織時序緊張模塊的流水線結(jié)構(gòu),對一些關(guān)鍵部件,例如大容量隊列,可通過數(shù)據(jù)預(yù)讀取等通用策略優(yōu)化時序.

    2)在設(shè)計階段分離控制流和數(shù)據(jù)流,規(guī)避大驅(qū)動邏輯.另外可通過復(fù)制寄存器、切分扇出等方法解決部分大扇出問題.

    3)降低模塊間功能耦合程度,結(jié)合芯片布局情況進(jìn)行跨模塊優(yōu)化.設(shè)計處理器要有全局視野,而不能僅關(guān)注單個模塊.

    無論是前端設(shè)計和驗證,還是后端物理實現(xiàn),抑或是前后端協(xié)同優(yōu)化,香山遇到的挑戰(zhàn)在開源處理器項目中都是前所未有的.香山團(tuán)隊希望在開發(fā)過程中嘗試解決難點(diǎn)問題,并將成果開源開放,降低行業(yè)門檻.未來規(guī)劃包括3 方面.

    1) 在大規(guī)模復(fù)雜處理器芯片設(shè)計流程中,建立前后端協(xié)同優(yōu)化迭代機(jī)制并積累設(shè)計經(jīng)驗,在此基礎(chǔ)上開放流程并分享方法論.

    2) 在開發(fā)過程中探索構(gòu)建前后端緊密結(jié)合的芯片開發(fā)工具鏈,形成一系列支持高性能處理器芯片開發(fā)的基礎(chǔ)工具,并開放前后端開發(fā)流程,開源基礎(chǔ)設(shè)施.

    3) 建立跨層優(yōu)化能力體系之后,將提升流程的自動化程度,實現(xiàn)自動跨層優(yōu)化的目標(biāo).

    Fig.10 Performance evaluation of Nanhu micro-architecture圖10 “南湖”微架構(gòu)性能評估

    Table 3 Tape-out Details of Yanqihu Micro-architecture表3 “雁棲湖”微架構(gòu)流片指標(biāo)

    8 聯(lián)合開發(fā)模式與下一代展望

    香山項目自2021 年6 月發(fā)布以來,截至目前在開源項目托管平臺GitHub 上已有超過3200 星標(biāo)(Star)和400 分支(Fork),成為國際上最活躍的開源芯片項目之一[15].國內(nèi)外企業(yè)界和學(xué)術(shù)界開始使用香山,有的參與產(chǎn)品化工作,有的開展前沿研究.在北京市和中國科學(xué)院的支持下,18 家企業(yè)聯(lián)合發(fā)起了北京開源芯片研究院,圍繞香山開展產(chǎn)品化改造和后續(xù)架構(gòu)探索工作,和企業(yè)共同建立了聯(lián)合開發(fā)團(tuán)隊.

    Fig.11 Latest floorplan design of Nanhu micro-architecture圖11 “南湖”微架構(gòu)最新版圖設(shè)計

    代碼開源、平臺開放的開源理念是香山聯(lián)合開發(fā)模式的基石.香山處理器的主線設(shè)計,從“雁棲湖”“南湖”到后續(xù)的“昆明湖”等微架構(gòu),都是開源開放的,開放模式與現(xiàn)有模式不同.以x86 為代表的封閉模式只出售芯片產(chǎn)品,數(shù)家核心公司壟斷x86 生態(tài),不利于多方協(xié)作與創(chuàng)新;而以ARM 為代表的授權(quán)模式雖然允許IP 授權(quán),企業(yè)可付費(fèi)獲得設(shè)計代碼,但其開發(fā)平臺仍是封閉的.香山不僅開源設(shè)計代碼和文檔,還開源各類開發(fā)基礎(chǔ)設(shè)施,實現(xiàn)開發(fā)平臺的開放.基于該平臺,企業(yè)可實現(xiàn)“競爭前合作”,聯(lián)合開發(fā)處理器高性能架構(gòu)和基礎(chǔ)設(shè)施,亦可基于香山的設(shè)計代碼和開發(fā)工具做二次開發(fā),滿足各類定制化需求,一定程度上解決芯片的碎片化難題.

    香山有望成為連接工業(yè)界和學(xué)術(shù)界的橋梁.首先由研究人員提出創(chuàng)新想法,在香山代碼上實現(xiàn),每年1~2 次機(jī)會進(jìn)行流片驗證;此后,聯(lián)合開發(fā)團(tuán)隊將會對初步驗證的架構(gòu)開展產(chǎn)品化改造工作,最終形成穩(wěn)定的高質(zhì)量工業(yè)級IP.

    香山在2022 年8 月24 日迎來了發(fā)展歷程中的一個里程碑——中國科學(xué)院計算技術(shù)研究所、北京開源芯片研究院、騰訊科技、阿里巴巴集團(tuán)、中興通訊、中科創(chuàng)達(dá)、奕斯偉科技集團(tuán)、算能科技等單位和企業(yè)共同建立了聯(lián)合研發(fā)團(tuán)隊,聯(lián)合開發(fā)第三代香山——“昆明湖”微架構(gòu),標(biāo)志著香山及其開源模式得到了產(chǎn)業(yè)界的初步認(rèn)可.“昆明湖”微架構(gòu)將會以更高的性能為目標(biāo),并增加向量、虛擬化等擴(kuò)展.

    9 總結(jié)

    本文首先介紹香山開源高性能RISC-V 處理器項目的總體情況,深入分析了前兩代代號分別為“雁棲湖”和“南湖”的微架構(gòu)設(shè)計,分別從前端供指單元、亂序執(zhí)行單元、訪存子系統(tǒng)和緩存子系統(tǒng)4 個方面系統(tǒng)地介紹香山團(tuán)隊遇到的設(shè)計挑戰(zhàn)和開發(fā)經(jīng)驗.同時,本文還介紹了香山團(tuán)隊在敏捷設(shè)計和驗證方向的探索成果,通過一系列基礎(chǔ)設(shè)施高效實現(xiàn)香山處理器的快速迭代和演進(jìn).

    如今,香山團(tuán)隊正在探索處理器開發(fā)多方協(xié)作模式,歡迎各界企業(yè)與專家參與指導(dǎo).香山開源社區(qū)的GitHub 網(wǎng)址為https://github.com/OpenXiangShan.項目在Gitee,GitLink,iHub 等開源托管平臺上均有鏡像.

    作者貢獻(xiàn)聲明:王凱帆完成部分實驗開發(fā)任務(wù)、數(shù)據(jù)整理分析并撰寫論文;徐易難和余子濠完成部分實驗開發(fā)任務(wù)、數(shù)據(jù)整理分析并提供論文修改意見;唐丹負(fù)責(zé)實驗技術(shù)路線指導(dǎo);第5 作者陳國凱到第24 作者鄒江瑞均完成部分實驗開發(fā)任務(wù)和數(shù)據(jù)整理分析;蔡曄、郇丹丹、李祖松、趙繼業(yè)、何偉、孫凝暉、包云崗提供實驗開發(fā)思路,給予工作支持和指導(dǎo)意見.

    猜你喜歡
    指令設(shè)計
    聽我指令:大催眠術(shù)
    何為設(shè)計的守護(hù)之道?
    《豐收的喜悅展示設(shè)計》
    流行色(2020年1期)2020-04-28 11:16:38
    ARINC661顯控指令快速驗證方法
    LED照明產(chǎn)品歐盟ErP指令要求解讀
    電子測試(2018年18期)2018-11-14 02:30:34
    瞞天過海——仿生設(shè)計萌到家
    設(shè)計秀
    海峽姐妹(2017年7期)2017-07-31 19:08:17
    有種設(shè)計叫而專
    Coco薇(2017年5期)2017-06-05 08:53:16
    殺毒軟件中指令虛擬機(jī)的脆弱性分析
    一種基于滑窗的余度指令判別算法
    干丝袜人妻中文字幕| 一边亲一边摸免费视频| 国产午夜精品久久久久久一区二区三区| 两性午夜刺激爽爽歪歪视频在线观看| 久久人妻av系列| 最近手机中文字幕大全| 美女xxoo啪啪120秒动态图| 丰满人妻一区二区三区视频av| 亚洲中文字幕日韩| 国产午夜精品一二区理论片| 亚洲不卡免费看| 麻豆av噜噜一区二区三区| 天美传媒精品一区二区| 久久久久精品久久久久真实原创| 国产极品精品免费视频能看的| 黄色日韩在线| 欧美潮喷喷水| 亚州av有码| av播播在线观看一区| 日韩av在线免费看完整版不卡| 久久鲁丝午夜福利片| 亚洲久久久久久中文字幕| 亚洲va在线va天堂va国产| 一级毛片久久久久久久久女| www.色视频.com| 久久欧美精品欧美久久欧美| 少妇高潮的动态图| 国产一区有黄有色的免费视频 | 99热这里只有精品一区| 免费观看性生交大片5| 亚洲精品色激情综合| 3wmmmm亚洲av在线观看| 蜜臀久久99精品久久宅男| 久久精品国产亚洲av涩爱| 国产在线男女| av线在线观看网站| 如何舔出高潮| 在线免费观看不下载黄p国产| 国语对白做爰xxxⅹ性视频网站| 欧美性猛交黑人性爽| 人妻夜夜爽99麻豆av| 看十八女毛片水多多多| 欧美+日韩+精品| 国产又黄又爽又无遮挡在线| 日本欧美国产在线视频| 欧美性猛交黑人性爽| 亚洲综合色惰| 免费观看a级毛片全部| 成人毛片60女人毛片免费| 我的老师免费观看完整版| 久久久久久久久久成人| 日本熟妇午夜| 免费av不卡在线播放| 久久亚洲国产成人精品v| 中文字幕人妻熟人妻熟丝袜美| 亚洲婷婷狠狠爱综合网| 中文字幕熟女人妻在线| 九九热线精品视视频播放| 少妇的逼好多水| 久久久精品欧美日韩精品| 九九热线精品视视频播放| 亚洲av成人av| 我的女老师完整版在线观看| 免费av毛片视频| 五月伊人婷婷丁香| 日本色播在线视频| eeuss影院久久| 久久久成人免费电影| 亚洲自拍偷在线| 精品少妇黑人巨大在线播放 | www日本黄色视频网| 欧美bdsm另类| 国产成人精品久久久久久| 日韩欧美在线乱码| 亚洲在线观看片| 中文字幕免费在线视频6| 麻豆av噜噜一区二区三区| 51国产日韩欧美| 好男人在线观看高清免费视频| 国产精品久久视频播放| 视频中文字幕在线观看| 一级毛片电影观看 | 天堂√8在线中文| 日本午夜av视频| 五月伊人婷婷丁香| 国产精品一及| 丰满人妻一区二区三区视频av| 亚洲精品乱码久久久久久按摩| 日韩一本色道免费dvd| 成人毛片a级毛片在线播放| 国产白丝娇喘喷水9色精品| 国语自产精品视频在线第100页| 99视频精品全部免费 在线| 国产精品一区二区三区四区免费观看| 国产视频内射| 久久精品夜色国产| 超碰97精品在线观看| 如何舔出高潮| 国产人妻一区二区三区在| 一二三四中文在线观看免费高清| 偷拍熟女少妇极品色| 国产精品精品国产色婷婷| 久久久久久国产a免费观看| 黑人高潮一二区| 免费电影在线观看免费观看| 免费不卡的大黄色大毛片视频在线观看 | 最近最新中文字幕免费大全7| 亚洲av日韩在线播放| 全区人妻精品视频| 夜夜看夜夜爽夜夜摸| 午夜福利高清视频| av播播在线观看一区| 久久国产乱子免费精品| 22中文网久久字幕| 婷婷色麻豆天堂久久 | 国产精品久久久久久av不卡| 亚洲av免费高清在线观看| 免费在线观看成人毛片| 欧美极品一区二区三区四区| 一级黄片播放器| 久久久久久国产a免费观看| 国产成人精品婷婷| 国产精品爽爽va在线观看网站| 亚洲精品国产成人久久av| 深夜a级毛片| 91久久精品电影网| av福利片在线观看| 不卡视频在线观看欧美| 看片在线看免费视频| 亚洲人成网站在线播| 国产69精品久久久久777片| 国产中年淑女户外野战色| 国产精品久久久久久av不卡| 色噜噜av男人的天堂激情| 免费看a级黄色片| 国产免费一级a男人的天堂| 午夜福利在线观看免费完整高清在| 色网站视频免费| 波多野结衣巨乳人妻| 美女大奶头视频| 欧美日韩一区二区视频在线观看视频在线 | 村上凉子中文字幕在线| h日本视频在线播放| 国产91av在线免费观看| 欧美成人午夜免费资源| 精品99又大又爽又粗少妇毛片| 久久精品国产99精品国产亚洲性色| 欧美色视频一区免费| 亚洲精品影视一区二区三区av| 久久久精品欧美日韩精品| 五月玫瑰六月丁香| 精品午夜福利在线看| 亚洲综合色惰| 菩萨蛮人人尽说江南好唐韦庄 | 日产精品乱码卡一卡2卡三| 国产精品一区二区性色av| 不卡视频在线观看欧美| 欧美高清成人免费视频www| www.av在线官网国产| 国产极品精品免费视频能看的| 午夜福利在线在线| 亚洲精品自拍成人| 哪个播放器可以免费观看大片| 色综合亚洲欧美另类图片| 久久久久久久久久黄片| 亚洲av电影在线观看一区二区三区 | 中文字幕亚洲精品专区| 亚洲av不卡在线观看| 亚洲人与动物交配视频| 亚洲精品456在线播放app| 国产 一区 欧美 日韩| 国产免费男女视频| 色5月婷婷丁香| 国产午夜精品论理片| 久久鲁丝午夜福利片| 国产白丝娇喘喷水9色精品| 精品熟女少妇av免费看| 深夜a级毛片| 亚洲欧美成人综合另类久久久 | 一级毛片电影观看 | 国产亚洲91精品色在线| 青青草视频在线视频观看| 欧美xxxx黑人xx丫x性爽| 在现免费观看毛片| 欧美3d第一页| 久久久久久久久久久丰满| 夜夜爽夜夜爽视频| 欧美日韩国产亚洲二区| 欧美日韩一区二区视频在线观看视频在线 | 久久久久久久久久成人| 在线播放无遮挡| 夫妻性生交免费视频一级片| 神马国产精品三级电影在线观看| av在线观看视频网站免费| 2021天堂中文幕一二区在线观| 最新中文字幕久久久久| 国产精品人妻久久久影院| 亚洲最大成人av| 日本色播在线视频| 最新中文字幕久久久久| 国产精品三级大全| av视频在线观看入口| 水蜜桃什么品种好| 极品教师在线视频| 欧美成人免费av一区二区三区| 成年av动漫网址| 男女那种视频在线观看| 少妇高潮的动态图| 2021天堂中文幕一二区在线观| 五月玫瑰六月丁香| 免费观看人在逋| 2021少妇久久久久久久久久久| 18禁动态无遮挡网站| 日韩视频在线欧美| 亚洲国产精品合色在线| 亚洲精品日韩在线中文字幕| 黑人高潮一二区| 亚洲五月天丁香| 久99久视频精品免费| 日韩 亚洲 欧美在线| 亚洲精品456在线播放app| av在线老鸭窝| 岛国毛片在线播放| 国产三级在线视频| 亚洲精品成人久久久久久| 久久精品国产自在天天线| 国产av不卡久久| 岛国在线免费视频观看| 国产淫片久久久久久久久| 成人二区视频| 欧美97在线视频| www.av在线官网国产| 欧美一区二区精品小视频在线| 亚洲欧美成人综合另类久久久 | 啦啦啦啦在线视频资源| 亚洲天堂国产精品一区在线| 日韩一区二区视频免费看| 国产成人freesex在线| 成人毛片60女人毛片免费| 有码 亚洲区| 亚洲最大成人手机在线| 色尼玛亚洲综合影院| 看免费成人av毛片| 日产精品乱码卡一卡2卡三| 国产男人的电影天堂91| 日日干狠狠操夜夜爽| 好男人在线观看高清免费视频| 日本三级黄在线观看| 国产精品不卡视频一区二区| 欧美日韩一区二区视频在线观看视频在线 | 在线天堂最新版资源| 国产亚洲5aaaaa淫片| 日韩制服骚丝袜av| 我要搜黄色片| 国产精品美女特级片免费视频播放器| 久久人妻av系列| 欧美区成人在线视频| 欧美又色又爽又黄视频| 在线观看一区二区三区| 91久久精品国产一区二区三区| 久久午夜福利片| 最近2019中文字幕mv第一页| av线在线观看网站| 高清视频免费观看一区二区 | 在线a可以看的网站| 久久精品久久久久久噜噜老黄 | 中文字幕av在线有码专区| av天堂中文字幕网| 久久久久久九九精品二区国产| 色噜噜av男人的天堂激情| 99九九线精品视频在线观看视频| 久99久视频精品免费| 欧美97在线视频| av在线蜜桃| av又黄又爽大尺度在线免费看 | 国产黄色视频一区二区在线观看 | 亚洲av.av天堂| 久久6这里有精品| 中文字幕精品亚洲无线码一区| 老女人水多毛片| 免费av不卡在线播放| 在线观看一区二区三区| 亚洲av一区综合| 男人的好看免费观看在线视频| 亚洲av免费高清在线观看| 国产乱人偷精品视频| 国产毛片a区久久久久| 日产精品乱码卡一卡2卡三| 丰满人妻一区二区三区视频av| 日日摸夜夜添夜夜爱| 在线免费十八禁| 天堂影院成人在线观看| 九草在线视频观看| 村上凉子中文字幕在线| 97在线视频观看| 亚洲av免费高清在线观看| 亚洲图色成人| 久久久久久久久久久免费av| 在线观看一区二区三区| av在线天堂中文字幕| 午夜免费激情av| 老司机福利观看| 中国美白少妇内射xxxbb| 久久99精品国语久久久| 国产精品日韩av在线免费观看| 1024手机看黄色片| 中文字幕久久专区| 看十八女毛片水多多多| 亚洲成人精品中文字幕电影| 99九九线精品视频在线观看视频| 国产成人aa在线观看| 亚洲av成人精品一区久久| 欧美日韩综合久久久久久| 我的女老师完整版在线观看| 亚洲欧美清纯卡通| 亚洲三级黄色毛片| 亚洲国产高清在线一区二区三| 免费av毛片视频| 男女视频在线观看网站免费| 免费看日本二区| 久久久久国产网址| 午夜a级毛片| 国产高清有码在线观看视频| 最近的中文字幕免费完整| 观看免费一级毛片| 小说图片视频综合网站| 婷婷六月久久综合丁香| 日韩av在线大香蕉| 亚洲av不卡在线观看| 精品少妇黑人巨大在线播放 | 18禁裸乳无遮挡免费网站照片| 国产精品久久电影中文字幕| 国产精品99久久久久久久久| 神马国产精品三级电影在线观看| 麻豆国产97在线/欧美| 亚洲精品影视一区二区三区av| 老司机福利观看| www.av在线官网国产| 日本色播在线视频| 卡戴珊不雅视频在线播放| 老师上课跳d突然被开到最大视频| 全区人妻精品视频| av免费在线看不卡| 一区二区三区四区激情视频| 国产精品久久久久久久久免| 久久精品国产亚洲av涩爱| 亚洲乱码一区二区免费版| 国产精品一区二区三区四区久久| 国产精品久久视频播放| 久久人妻av系列| 男插女下体视频免费在线播放| 一级av片app| 免费一级毛片在线播放高清视频| 中文亚洲av片在线观看爽| АⅤ资源中文在线天堂| 乱系列少妇在线播放| 赤兔流量卡办理| 91av网一区二区| 国产精品熟女久久久久浪| 尾随美女入室| 亚洲精品成人久久久久久| 噜噜噜噜噜久久久久久91| av女优亚洲男人天堂| 秋霞伦理黄片| 神马国产精品三级电影在线观看| 国产高清国产精品国产三级 | 日本欧美国产在线视频| 国产免费又黄又爽又色| 国内精品美女久久久久久| АⅤ资源中文在线天堂| 国语对白做爰xxxⅹ性视频网站| 成人午夜精彩视频在线观看| 亚洲精品日韩av片在线观看| 国产成人福利小说| 欧美性猛交╳xxx乱大交人| 1024手机看黄色片| 国产视频内射| 亚洲性久久影院| 国产精品av视频在线免费观看| 国产精华一区二区三区| 免费人成在线观看视频色| 亚洲真实伦在线观看| 亚洲内射少妇av| 精品一区二区三区视频在线| 亚洲人成网站在线观看播放| 亚洲精品自拍成人| 国产精品爽爽va在线观看网站| 国产中年淑女户外野战色| 精品少妇黑人巨大在线播放 | 建设人人有责人人尽责人人享有的 | 亚洲av男天堂| 大香蕉97超碰在线| 亚洲人成网站在线观看播放| 婷婷色综合大香蕉| 亚洲av一区综合| 青春草国产在线视频| 国产成人一区二区在线| 少妇人妻一区二区三区视频| 69av精品久久久久久| 国产精品永久免费网站| 午夜福利在线观看免费完整高清在| 欧美精品国产亚洲| 水蜜桃什么品种好| 赤兔流量卡办理| 欧美又色又爽又黄视频| 国产黄片视频在线免费观看| 亚洲精品一区蜜桃| 高清午夜精品一区二区三区| 99久久中文字幕三级久久日本| 亚洲欧美日韩卡通动漫| 一级av片app| 99久久九九国产精品国产免费| 国产精品,欧美在线| 精品一区二区三区视频在线| 亚洲,欧美,日韩| 精品一区二区免费观看| 一本久久精品| 可以在线观看毛片的网站| 亚洲精品日韩av片在线观看| 好男人视频免费观看在线| 午夜久久久久精精品| 午夜福利网站1000一区二区三区| 久久久精品欧美日韩精品| 九九爱精品视频在线观看| 国产一级毛片七仙女欲春2| 舔av片在线| 欧美另类亚洲清纯唯美| 国产精品1区2区在线观看.| 精品人妻视频免费看| 色播亚洲综合网| 直男gayav资源| 国产高潮美女av| 99国产精品一区二区蜜桃av| 欧美丝袜亚洲另类| 国产亚洲精品av在线| 亚洲自拍偷在线| 一个人观看的视频www高清免费观看| 亚洲av电影不卡..在线观看| 成人亚洲欧美一区二区av| 国国产精品蜜臀av免费| 久久草成人影院| 精品熟女少妇av免费看| 听说在线观看完整版免费高清| 国产精品久久电影中文字幕| 国产三级中文精品| 亚洲内射少妇av| 免费黄网站久久成人精品| 亚洲激情五月婷婷啪啪| 性色avwww在线观看| 伦精品一区二区三区| 亚洲av成人av| 99久国产av精品| av在线蜜桃| 久久精品久久精品一区二区三区| 国产91av在线免费观看| 天堂中文最新版在线下载 | 免费在线观看成人毛片| 久久久久免费精品人妻一区二区| 26uuu在线亚洲综合色| 成人性生交大片免费视频hd| 精品少妇黑人巨大在线播放 | 亚洲不卡免费看| 亚洲精品自拍成人| 久久久欧美国产精品| 精品久久国产蜜桃| 国产精品久久视频播放| 国产精品电影一区二区三区| 成人国产麻豆网| 桃色一区二区三区在线观看| 日本免费在线观看一区| 校园人妻丝袜中文字幕| 久久精品国产鲁丝片午夜精品| 国产亚洲5aaaaa淫片| 国产精品精品国产色婷婷| 午夜精品国产一区二区电影 | 国产爱豆传媒在线观看| 嫩草影院入口| 久久这里有精品视频免费| 中文欧美无线码| 丰满少妇做爰视频| 日日摸夜夜添夜夜添av毛片| 日韩制服骚丝袜av| 麻豆精品久久久久久蜜桃| 亚洲国产高清在线一区二区三| 免费大片18禁| 99热精品在线国产| 午夜a级毛片| 亚洲人与动物交配视频| 99久久九九国产精品国产免费| 亚洲精品色激情综合| 特大巨黑吊av在线直播| 汤姆久久久久久久影院中文字幕 | 日本午夜av视频| 好男人视频免费观看在线| 国产一区有黄有色的免费视频 | 亚洲av中文字字幕乱码综合| av免费在线看不卡| 亚洲图色成人| 看非洲黑人一级黄片| 青春草国产在线视频| 国产成人精品久久久久久| 亚洲国产精品成人综合色| 欧美日本视频| 国产av不卡久久| 男女那种视频在线观看| 黄片wwwwww| 国产精品嫩草影院av在线观看| 日韩国内少妇激情av| 亚洲最大成人av| 亚洲丝袜综合中文字幕| 五月玫瑰六月丁香| 老女人水多毛片| 婷婷六月久久综合丁香| 超碰97精品在线观看| 久久久亚洲精品成人影院| av国产久精品久网站免费入址| 久久这里有精品视频免费| 色综合亚洲欧美另类图片| 欧美极品一区二区三区四区| 亚洲自拍偷在线| 国产乱来视频区| 成人毛片a级毛片在线播放| 亚洲内射少妇av| 乱码一卡2卡4卡精品| 亚洲精品成人久久久久久| 青春草国产在线视频| 在线观看av片永久免费下载| 国产精品熟女久久久久浪| 成年版毛片免费区| 国产视频首页在线观看| 国产免费又黄又爽又色| 精品一区二区免费观看| 成年av动漫网址| 亚洲成人中文字幕在线播放| 精品人妻熟女av久视频| 日本黄大片高清| 我要搜黄色片| 美女被艹到高潮喷水动态| 国产私拍福利视频在线观看| 国产一级毛片在线| 亚洲欧美精品专区久久| 青春草国产在线视频| 久久久午夜欧美精品| 水蜜桃什么品种好| ponron亚洲| 2021少妇久久久久久久久久久| 精品国产一区二区三区久久久樱花 | 中文字幕av在线有码专区| 久久人人爽人人爽人人片va| 日本一本二区三区精品| 国产精品国产三级国产av玫瑰| 天堂影院成人在线观看| 国产精品久久久久久精品电影| 亚洲国产精品国产精品| 婷婷六月久久综合丁香| 中文字幕免费在线视频6| av国产免费在线观看| 国产视频内射| ponron亚洲| 亚洲高清免费不卡视频| 女人久久www免费人成看片 | 国产伦在线观看视频一区| 色综合站精品国产| 99热精品在线国产| 国产成年人精品一区二区| 国产精品永久免费网站| 婷婷六月久久综合丁香| 免费黄网站久久成人精品| 男女下面进入的视频免费午夜| 亚洲欧美精品综合久久99| 国产一区二区三区av在线| 超碰97精品在线观看| 欧美日本亚洲视频在线播放| 51国产日韩欧美| 神马国产精品三级电影在线观看| 国产中年淑女户外野战色| 国产精品国产三级专区第一集| 国产乱来视频区| 汤姆久久久久久久影院中文字幕 | 国产私拍福利视频在线观看| 99久久成人亚洲精品观看| 久久婷婷人人爽人人干人人爱| 国产在线一区二区三区精 | 99久久无色码亚洲精品果冻| 一个人看的www免费观看视频| 好男人视频免费观看在线| 全区人妻精品视频| 国产亚洲av嫩草精品影院| 久久精品91蜜桃| 国产精品嫩草影院av在线观看| 精品一区二区三区人妻视频| 午夜爱爱视频在线播放| 久久欧美精品欧美久久欧美| 久久精品国产亚洲网站| 亚洲精品日韩在线中文字幕| 国产国拍精品亚洲av在线观看| 亚洲人成网站高清观看| 高清av免费在线| kizo精华| 少妇裸体淫交视频免费看高清| 九草在线视频观看| 久久韩国三级中文字幕| 两性午夜刺激爽爽歪歪视频在线观看| 久久99热这里只频精品6学生 | 免费看a级黄色片| 极品教师在线视频| 七月丁香在线播放| 免费人成在线观看视频色| 舔av片在线| 搞女人的毛片| 中文字幕熟女人妻在线| 熟妇人妻久久中文字幕3abv| av在线播放精品| 欧美日韩综合久久久久久| 国产精品嫩草影院av在线观看|