Tiny-GPU 是一个极简的、开源的 Verilog GPU 实现,旨在从零开始学习 GPU 的工作原理,提供可运行的内核、完整的文档以及 ASIC 流片流程。

Stars

65

7 天增长

暂无数据

Fork 数

7

开放 Issue

0

开源协议

暂无数据

最近更新

2026-07-13

AI 仓库情报摘要
FR-AI / ANALYSIS

为什么值得关注

它填补了开源 GPU 教育的空白,提供了一个简单、有文档的设计,支持仿真和通过 TinyTapeout 实际制造,同时包含开源和商业 ASIC 流程。

适合谁使用

  • 希望了解 GPU 内部原理的硬件学习者
  • Verilog 和 ASIC 设计学生
  • 开源硬件爱好者和 TinyTapeout 用户
  • 教授计算机体系结构或 GPU 设计的教师

典型使用场景

  • 学习 GPU 架构、指令集和并行执行
  • 仿真并追踪矩阵加法和乘法内核的执行
  • 使用开源或商业工具实践从 RTL 到 GDS 的 ASIC 实现
  • 通过提供的适配在 TinyTapeout 上制造功能性 GPU

项目优势

  • 完整、文档完善的 15 个 Verilog 文件设计
  • 可运行的内核(矩阵加法和乘法),支持执行轨迹和仿真
  • 多种 ASIC 实现流程:开源 (LibreLane on sky130) 和商业 (Cadence on OSU05)
  • TinyTapeout 适配器包含片上内存、主机驱动和可流片的交付件

使用前须知

  • 架构简化:不支持分支发散、流水线、线程束调度或内存合并
  • 需要外部工具(Icarus、Cocotb、sv2v)进行仿真,非即插即用
  • 流片限于特定工艺(sky130、OSU05),并受 TinyTapeout 引脚限制

README 快速开始

tiny-gpu

A minimal GPU implementation in Verilog optimized for learning about how GPUs work from the ground up.

Built with [!IMPORTANT]

tiny-gpu is a minimal GPU implementation optimized for learning about how GPUs work from the ground up.

Specifically, with the trend toward general-purpose GPUs (GPGPUs) and ML-accelerators like Google's TPU, tiny-gpu focuses on highlighting the general principles of all of these architectures, rather than on the details of graphics-specific hardware.

With this motivation in mind, we can simplify GPUs by cutting out the majority of complexity involved with building a production-grade graphics card, and focus on the core elements that are critical to all of these modern hardware accelerators.

This project is primarily focused on exploring:

  1. Architecture - What does the architecture of a GPU look like? What are the most important elements?
  2. Parallelization - How is the SIMD progamming model implemented in hardware?
  3. Memory - How does a GPU work around the constraints of limited memory bandwidth?

After understanding the fundamentals laid out in this project, you can checkout the advanced functionality section to understand some of the most important optimizations made in production grade GPUs (that are more challenging to implement) which improve performance.

Architecture

GPU

tiny-gpu is built to execute a single kernel at a time.

In order to launch a kernel, we need to do the following:

  1. Load global program memory with the kernel code
  2. Load data memory with the necessary data
  3. Specify the number of threads to launch in the device control register
  4. Launch the kernel by setting the start signal to high.

The GPU itself consists of the following units:

  1. Device control register
  2. Dispatcher
  3. Variable number of compute cores
  4. Memory controllers for data memory & program memory
  5. Cache

Device Control Register

The device control register usually stores metadata specifying how kernels should be executed on the GPU.

In this case, the device control register just stores the thread_count - the total number of threads to launch for the active kernel.

Dispatcher

Once a kernel is launched, the dispatcher is the unit that actually manages the distribution of threads to different compute cores.

The dispatcher organizes threads

相关仓库与替代方案

根据分类、Topic 和编程语言匹配的相似项目。

YutongChenVictor
精选
YutongChenVictor GitHub avatar

NPU-E2E

An educational full-stack NPU accelerator demo featuring a 16×16 systolic array RTL design, AXI4 SoC integration, C/Python runtime, UART driver, and TVM BYOC compiler backend, verified on FPGA with LeNet-5 inference.

AI 与机器学习开发者工具
19
ephonic
ephonic GitHub avatar

Agentic4SystemSummerSchoolContest

A 2026 summer school GPGPU agent acceleration design competition with three independent tracks covering EDA tools, GPGPU RTL design, and compiler/runtime/operator scheduling based on a custom AEC ISA.

Verilog
20
meathax
meathax GitHub avatar

mrdo

A single runtime-selectable MiSTer FPGA core that accurately emulates nine arcade games from the Universal Do's Castle family with cycle-accurate hardware models and optional PCB-level features.

嵌入式与物联网
3