乐于分享
好东西不私藏

玩转RISC-V AI处理器GPGPU

玩转RISC-V AI处理器GPGPU
景芯SoC训练营 · 从向量指令到SIMT微架构的深度踩坑记录

AI芯片这几年火得一塌糊涂,但真到了RTL里手撕代码的时候,很多人才发现——纸上谈兵和流片落地之间,隔着十万八千里。今天这篇不聊虚的,直接把景芯HD6850项目里RISC-V AI处理器的实战经验,结合一个国内开源GPGPU项目的硬核架构细节,掰开揉碎讲清楚。

景芯SoC RISC-V AI处理器实战:

RISC-V AI处理器设计实战

核心看点:景芯GPU项目走了一条很野的路——不另起炉灶搞GPU指令集,而是直接拿RISC-V向量扩展(RVV)来"扮演"SIMT线程。说白了,就是让一个RVV向量程序对应GPU里的一个Warp。参考对象乘影GPU这套思路被写进了2024年RISC-V中国峰会的专题报告,代码已经跑通在Xilinx VCU128上。
一、AI处理器架构:从专用到通用的博弈

做AI芯片,第一个灵魂拷问就是:选ASIC还是选通用架构?

Google TPU的脉动阵列确实漂亮,矩阵乘法一拍一个周期,但算法一变,硬件就得跟着改。FPGA灵活性够,可能效比又打不过定制电路。NPU在手机上风生水起,到了云端训练场景,带宽和算力又成了瓶颈。

GPU之所以能在AI训练里一统江湖,根本原因在于它的SIMT(单指令多线程)模型和神经网络的数据并行特性天然合拍。一个卷积层的前向传播,几千个线程同时去算不同的特征图位置,这种并行度,CPU根本望尘莫及。

GPGPU整体架构:SM集群、L2缓存与全局内存的协作关系

不过传统GPU的痛点也很明显——闭源指令集、专利壁垒、CUDA生态护城河。这也是为什么国内这几年在RISC-V路线上押注GPGPU的原因:既然绕不开,那就从根上换一条赛道。

二、一个基于RVV的开源GPGPU:架构全透视

这个项目由清华大学集成电路学院团队主导,采用Chisel HDL开发,核心思路是把RISC-V向量扩展(RVV)和GPU经典的SIMT架构拧成一股绳。它不是简单地在RISC-V旁边挂一个GPU核,而是直接用RVV指令来描述GPU线程的行为,让硬件上一个Warp就是一个RVV程序。

2.1 整体架构:CTA调度 + SM集群 + 多级缓存

整个GPU作为一个Compute Device,顶层是CTA Scheduler负责任务分发。SM(Streaming Multiprocessor)对应OpenCL里的Compute Unit(CU),SM内部的多个执行单元则对应PE(Processing Element)。

任务调度完全遵循OpenCL规范:NDRange拆成Workgroup,Workgroup再拆成Warp。同一个Workgroup的Warp必须在同一个SM上跑,但一个SM可以同时容纳来自不同Workgroup甚至不同Grid的Warp——资源利用率就是这么榨出来的。

SM内部微架构:前端取指译码 + 后端多执行单元 datapath
2.2 SM微架构:Vector-Thread 的硬件落地

每个SM的前端包含Warp Scheduler、指令缓存、译码单元、指令缓冲(Ibuffer)和发射单元。后端Datapath则挂了一堆执行单元:SIMT-stack、sALU、vALU、vFPU、SFU、CSR、LSU,以及专门加速矩阵运算的Tensor Core。

记分板(Scoreboard)机制每个Warp独立一份。指令发射后,目标寄存器被标记锁定,后续有数据依赖的指令必须等着。分支、线程分歧、跳转、Barrier这些指令也会被锁住,直到流水线清空或者同步完成才释放。

写回阶段各个执行单元输出级都有FIFO,由Arbiter仲裁后写回寄存器。标量寄存器和向量寄存器走完全独立的数据通路,避免互相堵死。

2.3 寄存器设计:物理堆统一映射,动态分配

寄存器这块的设计很巧妙。架构层面,每个Warp有64个标量寄存器(sGPR)和256个向量寄存器(vGPR),都是32bit宽。但物理层面,sGPR有256个,vGPR有1024个——硬件负责做架构寄存器到物理寄存器的动态映射。

编译器只需要告诉硬件实际用了多少个GPR(按4对齐),硬件就能根据剩余物理寄存器资源,尽可能多地塞Workgroup进去调度。这种设计在面积和利用率之间取得了不错的平衡。

寄存器类型架构数量物理数量宽度归属
sGPR(标量)6425632bitWarp共享
vGPR(向量)256102432bit × num_threadThread私有
x0零寄存器
x1ra 返回PC
x2 (sp)栈指针,指向localmem基址
x4 (tp)私有内存基址

向量寄存器的宽度从RVV视角看,vlen固定为num_thread × 32bit。硬件上相当于vsetvli指令的SEW=32bit、ma、ta、LMUL=1。从SIMT编程视角看,每个Thread最多拥有256个32bit宽的vGPR,而整个Workgroup共享64个sGPR。

2.4 存储层次:软件管一致性,硬件保连贯性

地址空间采用32位设计,所有SM共享4GB全局地址空间。0-128KB映射到各SM内部的Shared Memory(Local Memory),global_baseaddr到4GB映射到DDR。目前还没做MMU,物理地址直接裸奔。

一致性(Coherence)完全交给程序员通过同步指令显式维护,硬件只提供flush和invalidate功能。连贯性(Consistency)方面,RVWMO内存模型下,常规读写操作对不同地址的保序行为如下:

操作顺序相同地址不同地址
读-读 (R-R)保序保序
写-写 (W-W)保序不保序
写-读 (W-R)保序不保序
读-写 (R-W)保序保序

L1指令缓存和L1数据缓存都是2路组相联,缓存行大小等于blocksize(通常等于num_thread)。数据缓存采用VIVT(虚拟索引虚拟标记),写策略为写回+写不分配。替换策略支持LRU和FIFO。L1-L2之间每次数据读写最大宽度为一个缓存行,最多同时存在128个未完成L2访问请求,支持相同缓存行请求合并(最大合并数8)。

2.5 执行单元:从标量到张量的全覆盖

后端执行单元的分工非常清晰:

sALU标量ALU,处理Warp间共享数据和跳转控制。
vALU向量ALU,整型运算核心,每个周期完成一次请求。
vFPU向量浮点单元,单精度浮点运算主力。
MUL乘法器,32bit乘法2个周期。
SFU特殊功能单元,处理超越函数等复杂操作。
LSU加载存储单元,访存指令的执行入口。
Tensor Core张量计算单元,矩阵乘法加速。

SIMT-stack专门处理线程分歧(Divergence),这是SIMT架构的标志性模块。当Warp内线程走不同分支时,硬件把分支信息压栈,逐个执行后再汇合,保证执行正确性。

SM执行单元组织:Tensor Core、INT/FP单元、SFU与Memory Unit的排布
2.6 实际跑出来的数据

项目在Xilinx VCU128 FPGA上完成了验证,配置为4 Warp 8 Thread,部署了160个核心,核心频率100MHz,理论峰值算力32GFlops。团队预估在中芯国际40nm工艺下,频率至少能跑到350MHz。

软件栈方面,基于pocl(POrtable Computing Language)实现了OpenCL驱动,管理Command Queue、Buffer分配、任务同步。LLVM编译器后端已经支持32位指令集,PLCT实验室正在推进64位扩展。

设计亮点:CTA调度器借鉴了开源GPU项目MIAOW的超线程调度器,L2缓存参考了SiFive的Block InclusiveCache,乘法器和FPU也从香山处理器里汲取了灵感。这就是开源生态的魅力——不用从零造轮子,站在巨人肩膀上迭代。
三、景芯SoC里的AI处理器:怎么集成进去

回到景芯HD6850项目,RISC-V AI处理器作为整个SoC的一个子系统,挂在NOC(片上网络)上,通过AXI总线和其他模块通信。CPU侧负责调度,AI Core负责算力,DMA负责数据搬运,三者协同才能把效率跑满。

SoC整体架构上,左侧是橙色子系统(包含Cortex-M3、PMU、UART等外设),中间是黄色子系统(多媒体相关),右侧是蓝色CPU子系统(Cortex-A7×2 + Neon + FPU)和绿色RISC-V AI Core。所有子系统通过NOC互联,下方接LPDDR4、PSRAM、共享SRAM以及APB外设簇。

在实际的RTL实现中,Pipeline被划分为Decode、OPC(Operand Collect)、Issue、Execution、Writeback五个阶段。Warp Scheduler从指令缓存取指,经过译码后送入Ibuffer,Operand Collector收集好操作数再发射到各个执行单元。

GPU Pipeline与存储层次:从全局内存到L2/L1再到寄存器的数据通路

验证阶段我们搭了Simulation环境,开发了专门的AI testcase,覆盖矩阵乘法、卷积、激活函数等典型算子。FPGA原型验证选的是Xilinx系列,把RTL Porting上去后做性能功耗Profiling,确保硬件行为和仿真一致。

01

RISC-V AI处理器设计实战

景芯团队专家老师1v1辅导学员,让您快速超越同龄人!景芯训练营主打文档+服务器实战,我们不卖视频,只提供免费导学视频!我们选取景芯HD6850项目中的RISC-V AI处理器进行实战。希望您成为公司的中流砥柱后,给景芯团队介绍design servie业务(有提成),共同进步!

02

RISC-V AI处理器介绍

第一部分:AI处理器架构

1.1 AI计算芯片发展历程

  • 从通用CPU到专用AI芯片的演进

  • 不同AI工作负载对芯片架构的需求

  • 云端与边缘AI处理器的差异

1.2 主流AI处理器架构对比

1.2.1 专用AI加速器(ASIC)

  • Google TPU架构深度解析

  • 脉动阵列计算模式优势与局限

  • 固定功能单元与可编程性平衡

1.2.2 可重构AI处理器(FPGA)

  • 硬件可编程性在AI中的应用

  • 动态重配置适应算法演进

  • 能效与灵活性的折中设计

1.2.3 神经处理单元(NPU)

  • 移动端AI加速器设计理念

  • 功耗约束下的架构优化

  • 端侧模型压缩与硬件协同

1.2.4 图形处理器(GPU)

  • 从向量处理器到现代GPGPU的架构发展

  • GPU和GPGPU架构对比

  • GPGPU在AI和高性能计算中的应用场景

  • GPU同其他AI架构的对比及优势

1.2.5 图形处理器(GPU)架构选择

  • 为什么选择GPGPU作为AI处理器基础

  • 通用并行计算与AI工作负载的契合度

  • 软件生态与开发生态优势

第二部分:GPGPU架构作为AI处理器的优势

2.1 AI工作负载特性与GPGPU架构匹配度

  • 矩阵运算的并行化本质

  • 神经网络层间的数据流并行性

  • 训练与推理的差异化架构需求

2.2 景芯定制化GPGPU核心架构解析

  • 整体硬件架构框图与组件交互

  • 流多处理器(SM)集群组织方式

  • 多层次存储体系结构深度分析

2.3 景芯定制化GPGPU特性

  • 灵活的架构switch机制,可配置为NPU

  • 混合精度计算硬件支持

  • 张量核心专用运算单元

  • 稀疏计算加速机制

第三部分:AI处理器微架构深度设计

3.1 并行计算架构优化

3.1.1 多层次并行度利用

  • 数据并行与模型并行协同

  • 指令级并行(ILP)优化技术

  • 线程级并行(TLP)调度策略

3.1.2 AI专用执行单元设计

  • 矩阵乘法单元优化实现

  • 卷积计算专用数据通路

  • 激活函数硬件加速

3.2 存储子系统AI优化

3.2.1 数据流优化架构

  • 权重数据重用模式优化

  • 特征图数据局部性利用

  • 梯度计算存储访问模式

3.2.2 片上存储层次定制

  • 共享内存AI工作负载优化

  • 缓存替换算法AI特性适配

  • 模型参数片上缓存策略

第四部分:AI专用指令集与编程模型

4.1 AI专用指令集扩展

  • 张量运算指令设计

  • 稀疏计算指令支持

  • 量化运算指令实现

第五部分:芯片实现与验证

5.1 AI处理器RTL实现深度解析

5.1.1 AI处理器RTL架构介绍

AI处理器RTL pipeline架构框图

5.1.2 关键AI计算模块1

  • Scheduler 模块

  • warp调度
  • 寄存器堆
  • 取指
  • 译码
  • 指令缓冲
  • 发送、记分板
  • 写回
  • L1 Cache
  • L2 Cache

5.1.2 关键AI计算模块2

  • ALU

  • vALU

  • vFPU

  • MUL

  • LSU

  • CSR

  • SFU

  • warp控制

  • Tensors core

5.2 AI处理器专用验证方法

5.2.1 Simulation 仿真验证

  • 仿真验证环境搭建

  • AI testcase开发

  • AI 性能精度体系验证

5.2.2 FPGA原型验证

  • FPGA选型

  • AI处理器RTL Porting

  • FPGA 仿真验证

  • 性能功耗 profiling

Part.03

课程报名微信,扫描咨询我们吧

景芯SoC芯片全流程实战附属【知识星球】,一个包括设计、验证、DFT、后端全流程技术的交流平台,也是景芯学员的答疑平台!若您和我一样渴求技术,那欢迎扫下面二维码加入星球,共同进步!

四、写在最后

用RISC-V RVV做GPGPU,这条路能不能走通?从目前的开源实现来看,答案是肯定的。它不是在挑战NVIDIA的旗舰卡,而是在证明一件事:通用并行计算的指令集底座,完全可以是开放的、可定制的、自主可控的。

对于做SoC的工程师来说,这种开源GPGPU最大的价值在于——你可以直接拿到RTL,根据自家场景裁剪SM数量、调整缓存大小、甚至魔改执行单元。不像买商用IP,黑盒一块,想优化都没门。

景芯训练营的实战项目,就是把这套东西从论文和GitHub上,搬到了可综合的代码里。想亲手摸一摸这些模块的,欢迎来聊。

RISC-V AI处理器设计实战

— 景芯SoC训练营出品,转载请注明出处 —

相关学习资料