自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 探索Vortex开源GPGPU:RISC-V SIMT架构(4-2),TCU 矩阵计算(2)

本文分析了Vortex GPGPU中TCU模块的WMMA矩阵计算实现。主要内容包括:1) TCU模块结构,包含dispatch_unit、pe_switch和gather_unit;2) WMMA矩阵分块计算策略,详细说明了矩阵分块、计算周期和寄存器分配规则;3) 矩阵A/B/C的地址偏移计算方法及数据映射关系;4) 定点WMMA(tcu_int)的源代码实现,展示了矩阵乘加运算的具体处理流程。文章通过伪代码和图示详细解释了不同线程数配置下的计算周期和寄存器分配方案,为理解矩阵计算核心模块提供了技术参考

2026-02-13 21:49:21 1025

原创 探索Vortex开源GPGPU:RISC-V SIMT架构(4-2),TCU 矩阵计算(1)

本文分析了Vortex RISC-V GPGPU中TCU(Tensor Control Unit)模块的功能实现。TCU作为执行矩阵计算的核心单元,支持多种浮点和定点数据格式。文章详细介绍了TCU仿真命令参数设置、WMMA(Warp Matrix Multiple-Acculator)基本概念,以及大矩阵分块计算的实现方法。重点阐述了TCU硬件代码在流水线中的分布,包括Decode阶段的指令译码、Issue阶段的寄存器地址偏移处理等关键技术点。

2026-02-12 06:58:51 1081 1

原创 Vortex RTLSIM仿真环境简介(POCL)

本文对比了Vortex RTLSIM仿真环境中运行POCL仿例与VX仿例的关键差异。POCL仿例位于$VORTEX_HOME/tests/opencl目录下,共20个。主要区别在于:1)驱动层使用POCL封装的cl*函数替代VX的vx_*函数;2)Makefile流程不同,POCL通过环境变量传递RISC-V编译参数,由POCL函数完成内核编译;3)内核代码结构差异,POCL采用标准语法而VX使用特定API。这些差异体现了两种编程接口在编程思想和实现方式上的不同。

2026-01-18 19:07:57 1059

原创 Vortex RTLSIM仿真环境简介

本文介绍了Vortex RTLSIM仿真环境的运行流程和架构设计。仿真环境分为三层:HOST应用层运行PC端代码,驱动层作为SOCTB控制硬件,DEVICE硬件层运行RISC-V程序。通过verilator工具将Verilog和C++代码结合,提高了仿真效率。运行步骤包括:1)设置环境变量;2)生成C头文件;3)编译动态库libvortex.so和libvortex-rtlsim.so;4)生成并运行应用程序。文中以向量加法(vecadd)为例,详细说明了从PC端程序执行到RISC-V内核代码运行的完整流程

2026-01-17 21:19:11 986 1

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

本文详细分析了Vortex RISC-V内核6级流水线中的Schedule模块。作为Fetch的上游模块,Schedule负责产生PC地址、uuid和warp ID,并通过8个端口与其他流水线交互。Schedule模块通过优先级编码选择就绪warp,使用pending计数器跟踪warp执行状态,总控SIMT的执行和多核间同步,是SIMT架构实现线程调度的核心部件。

2026-01-10 17:23:32 1418

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

本文分析了Vortex RISC-V内核6级流水线中的Commit模块。该模块主要包含三部分功能:1) 通过writeback_if接口将执行结果写回GPR_RAM;2) 通过commit_csr_if接口统计累计执行线程数;3) 通过commit_sched_if接口向Schedule提供warp执行完毕标志。文章详细分析了WB逻辑、CSR指令计数逻辑以及warp完成标志生成的RTL实现,包括多路执行单元结果仲裁、线程数统计和流水线延迟处理等关键技术点

2026-01-08 13:08:06 1342

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

本文分析了Vortex开源GPGPU中SFU模块处理pred定制指令的机制,以及csr_unit模块的功能实现。pred指令通过条件判断值修改线程掩码,其作用可用tmc指令替代但需额外代码。csr_unit模块处理CSRRW、CSRRS、CSRRC三类指令,实现CSR寄存器的读写操作,包括线程ID、warp状态等系统信息的访问。文章详细解析了读写逻辑的实现细节,包括寄存器地址译码、数据通路控制和特殊寄存器处理等关键设计。

2026-01-07 21:16:44 1052

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

本文分析了Vortex开源GPGPU中barrier同步机制的实现。主要内容包括:1)软件模型上区分本地barrier(core内warp同步)和全局barrier(cluster内core同步),通过参数最高位区分;2)硬件实现采用双向数据流,本地barrier在Schedule模块内处理,全局barrier通过gbar_arb和gbar_unit模块逐级仲裁统计;3)详细解析了wctl_unit、Schedule等关键模块的硬件代码逻辑,包括请求统计、解锁条件判断等。

2026-01-06 18:21:31 1435

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

本文分析了Vortex GPGPU中wctl_unit模块的split/join功能实现。当同一warp的不同线程出现分支分歧时,split指令会将线程分为两类(A/B类),优先执行线程数较多的A类,同时将B类线程信息和PC存入栈中。join指令通过读取栈数据,先后执行B类和合并后的线程。硬件层面通过wctl_unit和Schedule模块协作,利用IPDOM栈存储分支信息,实现线程的动态分组执行。这种设计简化了硬件复杂度,通过软件插入split/join指令替代纯硬件方案,虽然会增加执行周期,但保持了线程

2026-01-05 21:01:13 1267

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

本文详细分析了Vortex RISC-V内核6级流水线中Execute阶段的SFU(特殊功能单元)模块。重点介绍了SFU的数据流结构,包含dispatch_unit、pe_switch、csr_unit、wctl_unit和gather_unit五个子模块。文章深入解析了warp控制指令wspawn和tmc的实现机制:wspawn用于激活指定数量的warp并设置新PC值,tmc则用于控制线程掩码和warp状态。通过C代码和汇编指令的对照分析,阐明了这些指令在并行计算中的关键作用,包括线程激活、状态切换和执行

2026-01-01 23:37:57 1244

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

本文详细分析了Vortex RISC-V内核的6级流水线中的Issue部分,重点探讨了Operands模块的设计。主要内容包括:1) 通过opc_unit分组实现warp请求的并行处理;2) GPR_RAM的多BANK架构设计及其SIMT硬件特性;3) GPR_RAM的读写控制逻辑,包括矩阵变换和冲突解决机制;4) Dispatch模块将指令分发到不同执行单元的实现。文章重点是揭示SIMT架构如何通过寄存器分组和并行处理优化吞吐率。

2025-12-31 18:47:41 1479

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

本文分析了Vortex RISC-V内核6级流水线中的Issue部分。Issue流水线包含Ibuffer、Scoreboard、Operands和Dispatch四个模块:Ibuffer作为指令缓冲区,Scoreboard解决寄存器读写冲突并进行仲裁,Operands负责读取和写回寄存器值,Dispatch将指令分发到不同执行单元。文章详细介绍了Scoreboard的仲裁机制,采用循环仲裁策略确保warp按序执行,并分析了寄存器冲突检测逻辑。当检测到寄存器读写冲突时,系统会等待Commit流水线完成写回操作

2025-12-30 15:38:25 1490

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

本文分析了Vortex RISC-V内核的Decode模块设计。文章详细介绍了指令译码过程,包括操作码、功能码和寄存器字段的提取,以及不同类型指令(R/I/S/B/U/UJ)的立即数处理。重点阐述了基于操作码和功能码的分层译码逻辑,包括ALU运算、分支跳转、系统调用等指令的译码规则。此外,还描述了定制指令的处理机制以及与调度器的握手协议。Decode模块通过组合逻辑实现快速译码,并将结果传递给下级Issue模块,同时协调指令流控制。

2025-12-27 14:16:51 1639

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

本文分析了Vortex RISC-V内核6级流水线中的Fetch模块实现。该模块采用valid/ready握手协议与上下游交互,主要功能是将调度器发送的PC地址请求发送给指令缓存或者外部memory,同时处理返回的指令数据。设计中包含寄存器slice优化时序,使用SRAM缓存线程掩码信息,并实现了防死锁机制以避免指令缓冲区满导致的系统死锁。文章详细介绍了接口定义、功能逻辑和关键实现细节,包括地址标签传递、数据流控制和时序优化策略。

2025-12-25 14:09:31 909

原创 探索Vortex开源GPGPU:RISC-V SIMT架构

本文介绍了开源RISV-SIMT GPGPU项目Vortex的架构设计。Vortex采用SystemVerilog语言开发,支持多核非阻塞缓存架构,包含6级流水线的RISC-V内核,支持32/64位可配置。重点介绍了其SIMT微架构实现、定制指令集(wspawn、tmc等)以及对OpenCL/CUDA的支持,包括线程调度和内核执行,文章为后续深入硬件设计分析奠定了基础,涉及从核心到SOC的多级缓存层次结构。

2025-12-24 12:12:38 1277

原创 深入解析Vortex GPGPU cache设计(2),关于cache_bank

本文分析了Vortex处理器的cache_bank模块设计,作为cache系列的第二部分。文章详细阐述了cache_bank的基本结构,包括地址位分配和默认配置参数。重点解析了cache的5种操作及其优先级。文章详细介绍了二级流水线设计,包括TAG/DATARAM的读写操作时序。

2025-12-23 16:14:52 1078 1

原创 深入解析Vortex GPGPU cache设计(1),关于MSHR

本文分析了Vortex缓存中MSHR(Miss Status Handling Register)模块的设计思路。MSHR通过链表结构管理对同一缓存行的读写请求,实现不同缓存行请求的非阻塞处理。文章详细介绍了MSHR的接口信号、数据结构(包括valid_table、addr_table等)和工作流程,并通过示例说明了读写请求在缓存命中和未命中时的处理逻辑。MSHR与缓存两级流水线紧密耦合,通过优先级编码和链表维护实现高效请求调度。

2025-12-12 11:29:59 1236 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除