系列文章目录

探索Vortex开源GPGPU:RISC-V SIMT架构(1),指令Fetch

探索Vortex开源GPGPU:RISC-V SIMT架构(2),指令Decode

探索Vortex开源GPGPU:RISC-V SIMT架构(3-1),指令Issue

探索Vortex开源GPGPU:RISC-V SIMT架构(3-2),指令Issue

探索Vortex开源GPGPU:RISC-V SIMT架构(4-1),Execute SFU(1)

探索Vortex开源GPGPU:RISC-V SIMT架构(4-1),Execute SFU(2)

探索Vortex开源GPGPU:RISC-V SIMT架构(4-1),Execute SFU(3)

探索Vortex开源GPGPU:RISC-V SIMT架构(4-1),Execute SFU(4)

探索Vortex开源GPGPU:RISC-V SIMT架构(5),Commit

探索Vortex开源GPGPU:RISC-V SIMT架构(6),Schedule

Vortex RTLSIM仿真环境简介

Vortex RTLSIM仿真环境简介(POCL)


前言

前一个专栏分析了Vortex cache,详见"深入解析Vortex GPGPU cache设计"。

本专栏着重点Vortex GPGPU,既Vortex Core本身,包含RISC-V以及SIMT实现。


正文

Vortex是github上的开源RISC-V SIMT GPGPU,基于system verilog语言设计,这也是业界大部分公司新开发IP的首选硬件设计语言,比如ARM公司的CPU/NPU。本系列在回顾Vortex基本功能的基础上,重点探索以下几个问题:

  • RISCV的多级流水线是什么样子
  • 指令集扩展,如何定制RISC-V的客户指令集
  • GPGPU的计算功能, SIMT的微架构在Vortex核内如何实现
  • 最关键的一点,软硬件层面,Vortex如何支持OpenCL/CUDA

Vortex github网址  https://github.com/vortexgpgpu

一、Vortex的总体架构

Vortex支持多核设计,可定制非阻塞多BANK cache。从底层到上层,分别是

  • core,L1 DCACHE以及ICACHE
  • socket, 多个core加上L2 cache
  • cluster,多个socket加上L3 cache
  • Processor(SOC),加入各种外设接口,主要是PCIE/DMA/DDR,甚至HBM等等

二、Vortex RISC-V内核

1.微架构

RISCV核支持32b/64b可配置,流水线是6级顺序发射,乱序提交。

  • schedule
  • fetch
  • decode
  • issue
  • execute
  • commit

2.定制指令集

  • wspawn,每个warp是分时执行
  • tmc,每个warp内的thread控制,thread是并行执行单元
  • split/join,分支控制
  • pred,线程预测
  • bar,本地和全局同步机制
  • tex,GPU纹理滤波

3.OpenCL/CUDA支持

Vortex支持OpenCL(v3.0)/CUDA(v10.1)。

对底层软件来说,主要关注三部分:

  • PoCL
  • CuPBoP
  • LLVM

对硬件来说,主要关注两点:

  • kernel的线程调度
  • kernel的执行


总结

比较水的初步过了一遍Vortex的硬件功能,以看资料和介绍为主,接下来开始更细致的RTL设计代码分析。为了简单起见,本系列只描述指令长度为32b(XLEN_32)的情况。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐