《15.d2s2-9-riscv中國峰會承影.pdf》由會員分享,可在線閱讀,更多相關《15.d2s2-9-riscv中國峰會承影.pdf(13頁珍藏版)》請在三個皮匠報告上搜索。
1、清華大學集成電路學院DSPLAB“承影”:開源通用GPU指令集架構設計及其軟硬件實現主講人:楊澤夏 李京洲背景介紹計算技術的發展一直在推動人類文明的進步,信息時代,芯片的計算能力已成為信息技術進步的核心。GPGPU已經成為未來高算力重要驅動之一。ENIAC 第一臺電子計算機5000OPs19461981首個英偉達GPU50GOPs20162021AlphaGo:176 GPUs,1202 CPUs在圍棋上戰勝人類(2160TOPs)英偉達H1002000TOPsGPU市場份額及占有率情況承影1.0硬件初實現 任務分配:Host-CTA Scheduler-SM(streaming multip
2、rocessor)host將任務以WorkGroup為單位發給GPGPU CTA Scheduler以warp為單位發給SM 每個SM可視為一個支持多warp調度的RISC-V向量處理器 同一WorkGroup內warp、thread通過index區分數據,通過SharedMemory交換數據 任務執行 每個SM可視為一個支持多warp調度的RISC-V向量處理器 每個warp可視為一段RVV程序,經由取指、譯碼、發射,執行后寫回寄存器 warp切換是類似hyper-threading的周期級調度承影2.0指令集架構探索及軟硬件實現“承影”圍繞開源RISC-V向量擴展搭建國內高性能開源GPGP
3、U平臺,提供包括開源指令集、微架構設計、OpenCL軟件工具鏈、專用張量計算單元在內的全套實現。開源指令集RISC-V向量擴展開源編程框架和工具鏈開源GPGPU平臺建設開源硬件架構OpenCL并行編程框架GPGPU微架構Tensor Core計算單元+驅動程序鏈接器、數學函數庫、運行時庫編譯器功能定義API封裝硬件實現研究問題總體目標解決方案具體實現指令集支持及自定義擴展擴展指令類型1.0版本2.0版本VConfiguration-Setting部分支持部分支持Loads and Stores支持支持Integer Arithmetic支持支持Floating-Point支持支持Reducti
4、on不支持參照GPGPU需求添加Mask部分支持參照GPGPU需求添加I部分支持支持M支持支持F支持支持D不支持不支持A不支持支持Register SpillingRISC-V ISA支持:RV32IMA zfinx V自定義指令:分支、同步、線程束控制-SIMT寄存器/立即數擴展-解決Register Spilling自定義訪存指令-編譯器需求張量計算和exp-DSA支持硬件添加與優化硬件實現張量計算TensorCore和exp函數,由此可實現對transformer運算的支持,借助自定義指令使用通用數據通路完成緩存子系統支持原子和寬松連貫性指導的一致性操作TileLink-UH協議支持Fl
5、ush和Invalidate張量處理單元可擴展性探索L2 Cache分Bank設計+CrossbarNoC,在合見工軟的4塊VU19P組成的平臺中,實現16SM-16warp-16lane規模,占用面積65%SM ClusterSM2Cluster ArbInterconnectDRAML2 Cache BankMemory ControllerMemory PartitionL2 Cache BankMemory ControllerMemory PartitionDRAM000000SMSMSMSMSMSMSM ClusterSM2Cluster ArbSMSMSMSMSMSM“承影”GP
6、GPU軟件工具鏈OpenCL計算框架提供一系列通用中間層API。各芯片供應商根據API標準各自獨立實現。調用相同API的軟件程序則可以運行在不同硬件平臺上。因此OpenCL易于在不同平臺之間遷移。*圖片來自OpenCL Overview-The Khronos Group Inc#includeint main()status=clGetPlatformIDs(0,NULL,&numPlatforms);free(platform);軟件開發者OpenCL軟件工具鏈編譯鏈接標準庫芯片公司AA 定制驅動CPU a1CPUa2芯片公司BB 定制驅動DSA B1芯片公司CC 定制驅動GPU C1“承
7、影”GPGPU軟件工具鏈OpenCL編程模型和“承影”硬件結合:NDRange(Grid)WorkGroup(CTA/Block)workitem(thread)程序員聲明需要的thread數目,然后對單個thread的行為進行描述 warp是一定數目的thread,硬件將WorkGroup中的thread組織起來,以warp為單位映射到硬件上執行*圖片來自Programming Guide:CUDA Toolkit Documentation()和The OpenCLSpecification(khronos.org)warp“承影”GPGPU軟件工具鏈-框架平臺框架(platform)基于
8、開源OpenCL實現Pocl,開發driver 基于LLVM實現compiler,結合linker、runtime library、math library實現對OpenCL C 1.2的完整支持 具有多個硬件設備或仿真器,支持在不同實體上進行多種精度仿真OpenCL C Kernel ProgramDevice GPGPUmath libraryHost CPUOpenCL C Host Programruntime librarydrivercompilerlinkerlinkerdriververilatordevicecycle-levelsim deviceFPGA devicesp
9、ike(ISS)devicechisel HDLFPGA PL“承影”GPGPU軟件工具鏈 仿真器 基于spike的指令精度仿真器 每個core代表一個warp,仿真粒度為warp級別 添加自定義指令 SystemC編程范式下的周期精度仿真器 支持多個SM的設計 周期精度仿真,可精確評估硬件性能 仿真器已經接入PoCL框架,作為OpenCL程序的后端OpenCL程序驅動編譯器.meta.dataCTA硬件開始執行讀取PoCL框架軟件工具鏈進展 目前支持將kernel函數編譯為RVV程序并按照OpenCL框架在多個仿真設備上運行的完整流程 已支持的benchmark 更多的benchmarkOpenCL CTS通過率:Compiler 21/66、Basic 15/85(不支持圖形單元)2.0版本將于峰會后開源Benchmarkvecaddmataddgaussiannnbfs指令級仿真器RTL仿真參與開源工作人員名單何虎楊軻翔金楚豐李京洲周重淳于芳菲劉旭東 楊澤夏張泰然鄭名宸鄒昕航感謝鄧仰東老師、馬立偉博士對本項目的幫助!感謝兆松科技在編譯器、工具鏈、指令集修改方面提供的支持!周晶伍華林師雨潔馬鳴遠孔荔開源鏈接:https:/ soon)THANKYOU