《12-马鸣远.pdf》由会员分享,可在线阅读,更多相关《12-马鸣远.pdf(27页珍藏版)》请在三个皮匠报告上搜索。
1、马鸣远 清华大学集成电路学院开源通用GPU“乘影”v2.1.0 基于Chisel HDL的硬件开发进展 回顾与综述 构建和仿真框架更新 内存管理单元(MMU)张量计算单元(Tensor Core)数据异步拷贝机制(DMA engine)线程块调度器(CTA Scheduler)支持多线程束(warp)调度的向量处理器 计算任务的启动、分配、执行 自定义指令的支持 任务分配:Host-CTA Scheduler-SM(streaming multiprocessor)任务执行:每个SM可视为一个支持多warp调度的RISC-V向量处理器 每个warp可视为一段RVV程序,经由取指、译码、发射,执
2、行后写回寄存器 warp切换是类似hyper-threading的周期级调度“乘影”GPGPU微架构“乘影”GPGPU微架构-寄存器堆 寄存器堆为4-bank SRAM,1r1w,interleave(交织),且为unified结构(可根据warp的实际使用数目进行分配)每个warp至多有 256个 num_thread*32bit vGPR 64个 32bit sGPR CSR 实现效果 regext指令:扩展四个5位寄存器编码至8位 regexti指令:扩展两个5位寄存器编码至8位,扩展5位立即数至11位 寄存器位宽扩展指令 译码时若为寄存器扩展指令,其包含的寄存器扩展信息将暂存在译码级中
3、 接续的有效指令进行译码时,取出扩展信息合并处理“乘影”GPGPU微架构 SIMT-stack分支管理:不占用通用寄存器,使用四条指令完成一次完整分支-合并操作IcacheSche 1Sche 2Operand collectorVALUSALU 双发射:增加额外的线程束调度器,进一步发掘并行度 不同线程束的标量指令和向量指令之间并行调度,理想情况下每周期发射一条标量指令和一条向量指令 功能单元数目可配置 目前vALU、vFPU、vSFU、vMUL单元均为可折叠、全流水配置,可通过num_lane参数配置硬件单元数目,结合num_thread可自由控制每类向量指令的执行cycle数。典型lat
4、ency为:alu 1cycle,mul 2cycle,fmul3cycle,fadd 3cycle,fmacc 5cycle“乘影”GPGPU微架构 缓存设计 乱序机制(指令级并行/ILP)和多级缓存对性能至关重要,但会对线程间同步(线程级并行/TLP)产生阻碍连贯性问题:流水线中的乱序因素一致性问题:缓存内容的不同步 连贯性指导的缓存一致性(RCC)相比CPU硬件一致性,降低L1-L2带宽开销和硬件复杂度相比GPU软件一致性,减少编程框架的额外负担RISC-V Weak Memory OrderingRelease Consistency-directed Cache CoherenceR
5、V32A AMORV32I FENCE缓存微架构设计 连贯性操作Fence和acquire/release,通过清空MSHR、全局冲刷、全局无效化等微架构操作予以支持.同时支持了一致性.微架构操作微架构操作全局无效化全局冲刷全局无效化RVWMO连贯性语义连贯性语义.aq标识符.rl标识符FENCE附带的附带的RCC一致性操作一致性操作“获取”和“释放”“释放”“获取”和“释放”实现:对acquire、release添加额外的冲刷(flush)和无效化(invalidate)操作规定“释放”:release发生时,L1所有脏缓存行写回L2(即flush*),然后release对应的写入再写回L2
6、;“获取”:acquire发生时,无论是否hit,直接从L2读取,然后无效化cache里该line之外的所有line(即invalidate)。不同地址空间的数据采用不同缓存策略private memglobal mem写命中write-backwrite-through写缺失write non-allocatewrite non-allocateRISC-V通过显式指令支持RVWMO:RV32I的FENCE指令;RV32A AMO原子指令、acquire/release标识符.“乘影”GPGPU v2.1.0微架构CTA SchedulerSMSMSMSMSMSMSMSMHost Devic