跳到主要内容

2. MUSA 硬件架构

2.1. SIMT 架构

一个 MUSA GPU 是由许多处理器核心组成的,我们将其称为 MUSA 处理器(MUSA Processor,MP),每个处理器执行单指令多线程(Single Instruction Multiple Thread,SIMT)。在 SIMT 中,程序指令被同时发送给多个线程执行。MUSA 处理器创建、管理、调度和执行 128 个线程组成的线程束,在 MUSA 中将线程束称为 warp。一个 MUSA 处理器上通常可以运行上千条线程,它们被组织成一个或多个线程块分配给 MUSA 处理器执行,MUSA 处理器会将线程块划分为 warp,每个 warp 由 warp 调度器安排执行。warp 的各个线程从同一程序地址同时开始执行,它们共享一个程序计数器,但是不同线程具有不同寄存器状态。warp 一次执行一条通用指令,因此,当 warp 的 128 个线程都在其执行路径上达成一致时,可以实现最高的效率。如果 warp 的线程通过依赖于数据的条件分支发散,则 warp 执行采用的每个分支路径,禁用不在该路径上的线程。

SIMT 类似于 SIMD(Single Instruction Multiple Data, 单指令多数据)向量组织,因为一条指令可控制多个处理元素。 一个主要区别是 SIMD 向量组织将 SIMD 宽度公开给软件,而 SIMT 指令指定单个线程的执行和分支行为。 与 SIMD 向量机相反,SIMT 使程序员能够为独立的标量线程编写线程级并行代码,并为协调线程编写数据并行代码。

2.2. 硬件多线程

每个 MUSA 处理器处理的 warp 的执行上下文(程序计数器,寄存器等)在 warp 的整个生命周期内都保持在芯片上。 因此,从一个执行上下文切换到另一个执行上下文是没有代价的,并且在每个指令发出时间,warp 调度程序都会选择一个准备好执行下一条指令的线程的 warp(活动 warp),然后将指令发给这些线程。每个 MUSA 处理器都具有一组分配给 warp 的寄存器,这些寄存器在 warp 之间进行划分,并且有一个并行数据缓存或共享内存,这些缓存在线程块之间进行划分。

对于给定核函数(Kernel),可以在 MUSA 处理器上驻留并一起处理的线程块和 warp 的数量取决于核函数使用的寄存器和共享内存的数量,以及 MUSA 处理器上可用的寄存器和共享内存的数量。 每个 MUSA 处理器还具有最大数量的驻留块和最大数量的驻留线程。 这些限制以及 MUSA 处理器上可用的寄存器和共享内存的数量是设备计算能力的函数。 如果每个 MUSA 处理器没有足够的寄存器或共享内存来处理至少一个线程块,则核函数将无法启动。

2.3. 计算能力

MUSA 设备所支持的功能和特性取决于该设备的计算能力,本小节将介绍苏堤架构,春晓架构所对应的计算能力 MP_10,MP_21。

2.3.1. MP_10

2.3.1.1. 架构

mp10_gpu

MP_10 架构以多层次组成,包含:

  • 4 个 MUSA 处理器簇(MUSA Processor Cluster, 后文简称 MPC)

  • 每个 MPC 包含 2 个 MUSA 处理器执行引擎(MUSA Proceesor eXecution engine,后文简称 MPX)

  • 每个 MPX 包含 2 个 MUSA 处理器(MUSA Processor,后文简称 MP)

mp10_mp

每个 MP 主要由以下计算单元组成:

  • 128 个用于单精度浮点算术/DP4A 的计算单元

  • 32 个用于整型运算/位运算的计算单元

  • 32 个用于单精度浮点超越函数运算的计算单元

同时 MP 还包含:

  • 28 KB 的局部存储器(Local Memory)

  • 0.5 KB 的只读 L0 数据缓存

  • 4 KB 的 L0 指令缓存

对于每个 MPX,多个 MP 会共享:

  • 24 KB 的 L1 数据缓存

  • 8 KB 的 L1 指令缓存
    >注意
    >
    >一些原始资料中,MPX 中的指令缓存被称为 L2 I-Cache,目前为了层级统一我们改称为 L1 指令缓存。

对于每个 MPC,多个 MPX 会共享 512 KB 的 L2 缓存。

2.3.1.2. 局部存储器

局部存储器分成 16 个 bank,每个 bank 提供每周期 32 bits 的访问带宽。此外,硬件对线程的访问有特殊的 bank 哈希策略。

2.3.2. MP_21

2.3.2.1. 架构

mp21_gpu

MP_21 架构同样由多层次组成,主要的区别在于 MPC 的数量增大到 8,即一共包含 32 个 MP。

mp21_mp

对于每个 MP,除了 MP_10 已有的计算单元外,还新增了:

  • 张量计算引擎(Tensor Compute Engine,后文简称 TCE),包含 1 个 MMA 硬件阵列,提供 IMMA 的计算能力。

  • 2 个用于双精度浮点运算的计算单元。

其他部分与 MP_10 架构一致。

2.3.2.2. 局部存储器

局部存储器与 MP_10 架构一致。