《莊秋彬-RISC-V編譯器優化探索_os2atc_spacemit_.pdf》由會員分享,可在線閱讀,更多相關《莊秋彬-RISC-V編譯器優化探索_os2atc_spacemit_.pdf(13頁珍藏版)》請在三個皮匠報告上搜索。
1、RISC-V 編譯器優化探索硬件特性-指令RISC-V的不同尋常之處,除了在于它是最近誕生的和開源的以外,還在于和幾乎所有以往的ISA不同,它是模塊化的?;AISA僅47條指令,永遠不會改變。模塊化來源于可選的標準擴展,根據應用程序的需要,硬件可以包含或不包含這些擴展。硬件特性-指令 zba zbb zbs更高效的基礎指令,廣泛使用。zicond使用條件移動代替分支,可降低branch miss帶來的性能損失。但對于branch miss rate比較低的場景則不一定有優勢,需要編譯器有更好的方式來評估是否使用zicond。硬件特性-指令 zicboz 可用于實現快速memset清0。zicb
2、op 通過 prefetch 來減少cache miss,在mcf上帶來了25%的性能提升。但對于其他用例,可能反而導致性能略微下降。編譯器插入prefetch的分析機制需要增強。硬件特性-指令 vector在合適的場景下用上vector能帶來較明顯的提升hmmer:提升30%linpack:提升80%編譯器的自動向量化還需要繼續完善,以充分發揮vector算力。硬件特性-調度 基礎適配需要詳細了解芯片的流水線信息,并提供給編譯器,以生成較佳的指令序列。coremark添加調度信息后提升15%+。深入挖掘對于關鍵場景,通過結合仿真波形分析空泡,尋找優化空間硬件特性-FusionRISC-V的基
3、礎指令因其簡潔相較ARM存在一定的效率不足,很多RISC-V處理器核通過擴展指令的方式部分解決該問題,但是這種方法也存在基礎指令碎片化的缺陷。在保持ISA不變的前提下,由硬件對指令序列進行監測與智能融合,可以有效提高指令執行效率。硬件特性-Fusion基礎適配在調度階段,判斷指令序列,將滿足fusion條件的指令調度到一起。但僅在PostRA階段進行Fusion判斷,存在局限性。深入挖掘 在PreRA階段進行部分Fusion 修改函數prolog和epilog的指令序列 支持load/store cluster 調整commutable的指令 添加RA hint影響寄存器分配優化實例 core
4、mark針對程序的特征,單個優化提升20%dhrystone使用優化的strcmp實現,提升30%+xalancbmk使用jemalloc庫,提升30%+優化實例 mcf通過 perf 抓取硬件PMU信息,可分析出性能瓶頸在于dcache miss較高。進一步識別出熱點代碼,分析原因在于熱點結構體本身較大,但熱點操作僅需訪問其中一個成員。優化實例 mcf通過 instance interleaving將原結構體拆分,并配合插入軟件prefetch指令,可明顯改善cache miss狀況。結構體優化配合prefetch,累計提升37%。結語進迭時空專注于研發下一代RISC-V架構的高性能CPU并提供軟硬一體優化的計算解決方案。RISC-V的高性能之路,離不開包括編譯器在內的軟硬件全棧優化,進迭時空愿攜手行業各方共同豐富 RISC-V 生態,助推 RISC-V 邁向更大的成功。THANK YOU!進迭時空-RISC-V高性能芯片c