# Tenstorrent数据流芯片Grayskull 和 Wormhole解析

**URL:** <https://1nfinite.ai/t/tenstorrent-grayskull-wormhole/100>\
**Category:** Dataflow\
**Created:** [June 5, 2024, 5:15am UTC](https://1nfinite.ai/t/tenstorrent-grayskull-wormhole/100 "2024-06-05T05:15:15Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![saturn](https://1nfinite.ai/letter_avatar_proxy/v4/letter/s/e19b73/32.png) [@saturn](https://1nfinite.ai/u/saturn)\
**Post date:** [June 5, 2024, 5:15am UTC](https://1nfinite.ai/t/tenstorrent-grayskull-wormhole/100/1 "2024-06-05T05:15:15Z")

</div>

## 概述

Tenstorrent成立于2016年，总部位于加拿大多伦多，致力于满足人工智能快速增长的计算需求，拥有有趣的硬件架构以及软件堆栈。由于其CEO是传奇人物Jim Keller而备受关注。

## 产品路线图

目前，Tenstorrent 已推出两款 AI 加速器产品，Grayskull 和 Wormhole，并计划推出两款 CPU+ML 解决方案产品，Blackhole 和 Grendel。这些产品将为用户提供多样化的选择，以满足不同的计算需求和应用场景。以下是产品路线图（Blackhole推迟了）：

 ![2024-05-31_16-54](https://1nfinite.ai/uploads/default/original/1X/3da12ac0dd63c3e7417557264f49ef59e10b3225.png)  
_图 1：Tenstorrent产品路线图 （来源：Tenstorrent）_

### Grayskull

Grayskull芯片采用 GlobalFoundries 12nm 工艺，尺寸为620mm^2。

### Wormhole

Wormhole芯片采用 GlobalFoundries 12nm 工艺，尺寸为670mm^2。  
Wormhole和Grayskull板卡性能对比如下：

| Feature \ Board | Tenstorrent Grayskull™ e75 | Tenstorrent Grayskull™ e150 | Tenstorrent Wormhole n150 | Tenstorrent Wormhole n300 |
| --- | --- | --- | --- | --- |
| Tensix Cores | 96 | 120 | 72 | 128 |
| AI Clock | 1 GHz | 1.2 GHz | 1 GHz | 1 GHz |
| TeraFLOPs (FP8) | 221 | 332 | 262 | 466 |
| SRAM | 96MB | 120MB | 108MB | 192MB |
| Memory | 8GB LPDDR4 @ 102.4 GB/sec | 8GB LPDDR4 @ 118.4 GB/sec | 12GB GDDR6 @ 288 GB/sec | 24GB GDDR6 @ 576 GB/sec |
| System Interface | PCIe 4.0 x16 | PCIe 4.0 x16 | PCIe 4.0 x16 | PCIe 4.0 x16 |
| Total Board Power | 75W | 200W | 160W | 300W |
| Dimensions (w/o Cooling Kit) | 18mm x 167.5mm x 69mm | 36mm x 260mm x 111mm | 36mm x 254mm x 111mm | 36mm x 254mm x 111mm |
| Dimensions (w/ Cooling Kit) | 18mm x 257mm x 98mm | 36mm x 399mm x 114mm | 36mm x 393.5mm x 114mm | 36mm x 393.5mm x 114mm |

相对于Grayskull芯片，Wormhole芯片的Tensix核进行了升级。每个核心容纳了更多的SRAM，并且具备执行更复杂的数学运算以及SIMD指令的能力。具体来说，Wormhole芯片的Tensix核配备了1.5MB的SRAM，而Grayskull芯片的Tensix核只有1MB的SRAM。此外，一个显著的不同之处在于Wormhole芯片增加了16个100Gb以太网端口。这些以太网端口的增加使得许多芯片可以连接在一起，从而扩展计算资源。

### Blackhole

与Grayskull和Wormhole不同的是，Blackhole不再是单纯的AI加速器，而是集成了CPU和AI加速器的解决方案。它融合了24个SiFive X280 RISC-V内核和多个第三代Tensix内核。该设备将提供1 INT8 POPS（Peta Operations Per Second）的计算吞吐量，性能相比前代产品提升约三倍。此外，它还配备了八通道GDDR6内存、1200 Gb/s以太网连接和PCIe Gen5通道。Blackhole采用6nm级制造工艺。值得注意的是，Blackhole尚未正式推出（已经有测试样片），因此最终产品可能与目前披露的内容有所不同。

### Grendel

Grendel作为一项计划产品，将采用Tenstorrent自己的RISC-V核Ascalon，取代SiFive X280 RISC-V内核。

#### Ascalon

Tenstorrent基于RISC-V架构开发高性能CPU，现在有五种不同的 RISC-V CPU 核心 IP，包括双宽、三宽、四宽、六宽和八宽解码，可用于自己的处理器或授权给感兴趣的各方。

 ![图2](https://1nfinite.ai/uploads/default/original/1X/64ed4833673b76b2a7383fced8bcc28d71953eca.jpeg)  
_图 2：Tenstorrent RISC-V CPU 产品路线图 （来源：Tenstorrent）_

Tenstorrent自己开发了RISC-V CPU，通过Chiplet异构计算的方式，将CPU和AI加速器组合在一起，实现更高性能和功能密度的同时，降低了成本。

## 硬件架构以及核心组件分析

### 整体架构

Tenstorrent的AI架构主要可以分为两类：以Wormhole为代表的AI加速器和以Blackhole为代表的CPU+ML异构解决方案。由于Blackhole产品尚未发布，因此本文主要关注Wormhole。

#### Wormhole

 ![image](https://1nfinite.ai/uploads/default/original/1X/c3b388436d63bc4c51db47702051a0313a575b91.jpeg)  
_图 3：Wormhole架构示意图 （来源：Tenstorrent）_

根据图示，Wormhole主要由网格化的计算单元（128个Tensix，蓝色）、内存单元（GDDR6，黄色）和互联单元（ETHERNET，红色）三个重要部分组成。

### 计算单元 Tensix

将Wormhole中的Tensix核展开，如下图所示：

 ![image](https://1nfinite.ai/uploads/default/original/1X/faa7676344e119a41572fdb3d54e129ab83cbd46.jpeg)  
_图 4：第二代（Wormhole）Tensix架构图（来源：Tenstorrent）_

分析上图，Tensix核组成部分有：

- 5个Baby RISC-V Core（蓝色部分，BRISC、NRISC、TRISC0、TRISC1、TRISC2），用于控制和标量计算。
- 数据传输（浅蓝色部分，NOC0、NOC1、NOC OVERLAY），负责控制设备之间和设备与主机之间的数据传输。
- 打包解包（橙色部分，UNPACK、PACK）。
- 内存（黄色部分，L1、SHARED MEM）。
- 数学引擎（紫色部分，FPU、SFPU），其中FPU是密集张量数学单元，用于执行大量张量数学运算，如矩阵乘法；SFPU是矢量引擎，用于各种杂项激活运算，如指数、平方根、softmax、topK等。
- 寄存器组（绿色部分，SRC A、SRC B）。SRC A，SRC B是源寄存器，DST（未出现在图中）是目标寄存器，它们都是使用一组寄存器，可以存放张量，支持浮点数和低精度数据类型，这里的寄存器和5个Baby RISC-V Core是不同的寄存器。  
通过软件对5个RISC-V Core进行分工，BRISC和NRISC主要负责数据移动，而剩余的三个RISC-V Core（TRISCs）负责控制计算过程。

调用FPU的典型计算过程分为三个部分：

- UNPACK（从L1拷贝数据到SRC寄存器）
- MATH（FPU从SRC寄存器读取数据进行计算，结果保存在DST寄存器）
- PACK（将结果从DST寄存器拷贝回L1）。

FPU的计算是 tile-based，L1和寄存器之间的数据传输也是tile-based。UNPACK和PACK的数据搬运是通过底层的TDMA（Time Division Multiple Access）命令实现的。

为了让这三个过程（UNPACK、MATH、PACK）并行执行，三个TRISCs对应不同的功能，其中TRISC0负责UNPACK，TRISC1负责MATH，TRISC2负责PACK。任务的分配由软件控制，对应关系是预先约定好的。

### 存储单元

Wormhole（n300板卡）的存储架构的层次结构较为简单（相对于GPU而言），分为两个部分：

- DRAM – 大小为24G的GDDR6，所有Tensix核共享。
- SRAM – 每个Tensix核有1.5MB的SRAM（称为L1），是Tensix核独有的，有单独的地址空间，可以寻址访问。

### 互联单元

Wormhole上的片上网络（NoC-Network\_on\_Chip）可以在Tensix核之间传输数据，并且可以通过以太网扩展到其他的Wormhole卡。

## 横向扩展能力（Scale-out）

现代AI模型拥有数十亿甚至上万亿个参数，需要巨大的计算资源来进行训练和推理，单个加速器已经无法满足需求，需要通过scale-out策略扩展多机集群以增加算力。而scale-out的能力正是Wormhole设计的关键所在。

### Wormhole的横向扩展能力

Wormhole scale-out 特点

 ![图5](https://1nfinite.ai/uploads/default/original/1X/153e88b55ff47c5d305d3bc8acc32d489f03ae7e.jpeg)  
_图 5：Wormhole scale-out 示意图（来源：Tenstorrent）_

传统的scale-out往往具有核、芯片、服务器、机架这种层次结构，不同层次的互联技术、带宽、延迟方面有差异，带来了软件层面的复杂性。Wormhole的片上网络（NoC）可以透明地扩展到数据中心，对于软件而言，看起来像是一个由Tensix核心组成的2D同质网格，不需要关心芯片、服务器、机架这种层次结构。  
如下图所示，Tensix上有数据包管理器，数据包进出Tensix需要解/打包。数据包header中包含地址信息，使用统一的core\_id（device\_id, x, y）来表示唯一的Tensix core，而无需关心Tensix是否在同一个芯片或服务器。  
从软件角度来看，数据包的传输在整个2D网格中是一样的。每个芯片和NOC都可以充当交换机，数据包可以很方便的从Tensix到另一个Tensix。

 ![image](https://1nfinite.ai/uploads/default/original/1X/6102843d57a6c5a2975dc54633b91df2985d4448.jpeg)  
_图 6：数据包的传输与计算（来源：Tenstorrent）_

### Wormhole scale-out 产品

从Wormhole开始扩展，有Nebula、Galaxy、数据中心这几个层次。

#### Nebula

Tenstorrent 将 Nebula 设计为一个基础构建块。它是一个 4U 服务器机箱。在这个 4U 服务器内部，他们能够塞入 32 个 Wormhole 芯片。

 ![image](https://1nfinite.ai/uploads/default/original/1X/61963526881a99115e7408df45228b6c2cf67ef5.jpeg)

_图 7：Nebula结构（来源：Tenstorrent）_

#### Galaxy

8 个 Nebulas 连接在一个扩展网格中，组成Galaxy。该机架还包含 4 个 AMD Epyc 服务器和一个共享内存池。该机架提供 \>3TB 的 GDDR6 和 256Gb 的外部以太网链路。通用 AMD Epyc 服务器和内存池连接到以太网网格。

 ![image](https://1nfinite.ai/uploads/default/original/1X/3b13c6d46b2ce7a8cd986201fcc927952099ccc9.jpeg)  
_图 8：Galaxy结构（来源：Tenstorrent）_

#### Datacenter

Tenstorrent 支持以 2D mesh连接的机架单元。 支持多种拓扑结构，许多数据中心内流行的经典叶子和脊柱模型完全受支持。

 ![image](https://1nfinite.ai/uploads/default/original/1X/9627d6a668a36877a0ef1c5743def5b518431bb1.jpeg)  
_图 9：数据中心拓扑图（来源：Tenstorrent）_

### 与Nvidia的对比

Nvidia扩展超过8个GPU时需要专用的交换机，超过16个GPU则需要使用InfiniBand网络设备，在大规模扩展时会面临一下问题：

- 成本高昂，需要InfiniBand和NVLink设备
- 需要为硬件扩展进行复杂的配置
- 编写和调试在多个GPU节点上运行的高效并行代码需要高度专业化的知识和技能，这增加了开发和维护成本  
与之对比，使用Wormhole大规模扩展，可以降低成本并且大大的降低软件复杂度。

## 未来展望与创新

### 稀疏性、条件执行与动态路由

未来的趋势是使用特定的神经网络模型解决特定的问题，还是使用一个巨大的模型解决多个问题，不同的问题走不同的路径，参考人类的大脑，处理不同的任务时，大脑中只有一部分神经元处于活跃状态。  
Tenstorrent认为是后者，所以希望可以通过条件执行和动态路由的技术，跳过大型模型中不需要执行的块，只执行需要的部分。而Tensix中的控制核可以进行条件判断，在运行时决定路由。

 ![图10](https://1nfinite.ai/uploads/default/original/1X/8730de582ce210601a038be5a55a178a572dc4a8.jpeg)  
_图 10：条件执行和路由（来源：Tenstorrent）_

### 软件生态

硬件设计和软件开发的难易程度是相互依存、相互影响的。高性能的硬件设计需要强大的软件生态支持，而成熟的软件生态可以反过来推动硬件设计的优化。  
软件栈既要兼容现有的AI开发框架，又要发挥加速器的硬件性能，是个不小的挑战。建立一个完整的软件生态并不简单，Tenstorrent采用RISC-V作为Tensix中控制核的ISA，并复用了开源的RISC-V的编译器（gcc），从而降低了开发难度。  
Tenstorrent开源了其软件栈T-Buda和TT-metal，后续教程开始讲解其软件栈，包括软件架构、如何使用以及源码分析等，通过分析软件，可以更好地理解其硬件设计以及软硬件分工。

## 参考链接

【1】[Tenstorrent Shares Roadmap of Ultra-High-Performance RISC-V CPUs and AI Accelerators | Tom's Hardware](https://www.tomshardware.com/news/tenstorrent-shares-roadmap-of-ultra-high-performance-risc-v-cpus-and-ai-accelerators)  
【2】[https://www.semianalysis.com/p/tenstorrent-wormhole-analysis-a-scale](https://www.semianalysis.com/p/tenstorrent-wormhole-analysis-a-scale)  
【3】[https://www.semianalysis.com/p/tenstorrent-blackhole-grendel-and](https://www.semianalysis.com/p/tenstorrent-blackhole-grendel-and)  
【4】[https://www.eetimes.com/tenstorrent-engineers-talk-open-sourced-bare-metal-stack/](https://www.eetimes.com/tenstorrent-engineers-talk-open-sourced-bare-metal-stack/)  
【5】[Cards](https://tenstorrent.com/cards/)  
【6】[https://www.youtube.com/watch?v=5bn54FSe\_0](https://www.youtube.com/watch?v=5bn54FSe_0)
