GPGPU多处理器架构设计

智能计算芯世界 2024-08-20 17:44

流式多处理器(Stream Multi-processor,SM)是构建整个 GPU的核心模块(执行整个 Kernel Grid),一个流式多处理器上一般同时运行多个线程块。每个流式多处理器可以视为具有较小结构的CPU,支持指令并行(多发射)。流式多处理器是线程块的运行载体,但一般不支持乱序执行。每个流式多处理器上的单个Warp以SIMD方式执行相同指令。

下载链接:

基于标准PCIe接口的人工智能加速卡液冷设计白皮书(2024)
《服务器及存储用液冷部件技术规范合集》
1、第1部分:冷板
2、第2部分:连接系统
3、第3部分:冷量分配单元
4、第4部分:监控系统
《六大国产CPU架构分析报告》
1、开启国产CPU和AI芯片的腾飞之路
2、CPU生态价值与机遇研究
3、国产基础软硬件,重塑IT产业生态
4、中流击水:六大国产CPU厂商分析
5、聚力突破核心技术,信创产业扬帆起航
服务器研究框架
服务器系列技术(4本)
《RISC-V技术介绍及报告》
《飞腾CPU专题报告》
1、飞腾:国产CPU巨头,充分受益国产化浪潮
2、国产CPU全对比,飞腾有望异军突起
《国产CPU及研究框架》
1、国产CPU正从可用向好用转变,自主可控前景可期
2、国产CPU全对比,飞腾有望异军突起
3、专题报告:国产CPU研究框架
4、深度报告:CPU研究框架
《龙芯/海光CPU厂商专题报告》
算力大时代,处理器SoC厂商综合对比
AI领强算力时代,GPU启新场景落地

图 3-1 流式多处理器在GPU架构中的位置(以NVIDIA Tesla架构为例,修改自NVIDIA)

3.1 整体微架构

图 3-3是流式多处理器(SM,AMD称之为计算单元)微架构(根据公开文献和专利信息综合获得)。

流式多处理器按照流水线可以分为SIMT前端SIMD后端。整个流水线处理划分为六个阶段,包括取指、译码、发射、操作数传送、执行与写回。

图 3-2 GPGPU的流式多处理器结构划分

SIMD即单指令多数据,采用一个控制器来控制多组计算单元(或处理器),同时对一组数据(向量)中的每一个数据分别执行相同的操作从而实现空间并行性计算的技术。

SIMT即单指令多线程,多个线程对不同的数据集执行相同指令。SIMT的的优势在于无须把数据整理为合适的矢量长度,并且SIMT允许每个线程有不同的逻辑分支。

按照软件级别,SIMT层面,流式多处理器由线程块组成,每个线程块由多个线程束组成;SIMD层面,每个线程束内部在同一时间执行相同指令,对应不同数据,由统一的线程束调度器(Warp scheduler)调度。

一般意义上的CUDA核,对应于流处理器(SP),以计算单元和分发端口为主组成。

线程块调度程序将线程块分派给 SIMT 前端,线程在流式多处理器上以Warp为单位并行执行。

图 3-3 GPGPU的流式多处理器微架构

流式多处理器中的主要模块包括:

取指单元(I-Fetch):负责将指令请求发送到指令缓存。并将程序计数器 (PC)指向下一条指令。

指令缓存(I-Cache):如来自取指单元的请求在指令缓存中被命中,则将指令传送给译码单元,否则把请求保存在未命中状态保持寄存器(MSHR)中。

译码单元(Decode):将指令解码并转发至I-Buffer。该单元还将源和目标寄存器信息转发到记分牌,并将指令类型、目标地址(用于分支)和其他控制流相关信息转发到 SIMT 堆栈。

SIMT 堆栈(SIMT Stack):SIMT堆栈负责管理控制流相关的指令和提供下一程序计数器相关的信息。

记分牌(Scoreboard):用于支持指令级并行。并行执行多条独立指令时,由记分牌跟踪挂起的寄存器写入状态避免重复写入。

指令缓冲(I-Buffer):保存所有Warp中解码后的指令信息。Warp 的循环调度策略决定了指令发射到执行和写回阶段的顺序。

后端执行单元:后端执行单元包括CUDA核心(相当于ALU)、特殊功能函数、LD/ST单元、张量核心(Tensor core)。特殊功能单元的数量通常比较少,计算相对复杂且执行速度较慢。(例如,正弦、余弦、倒数、平方根)。

共享存储:除了寄存器文件,流式多处理器也有共享存储,用于保存线程块不同线程经常使用的公共数据,以减少对全局内存的访问频率。

3.2 取指与译码

图 3-4 GPU执行流程(修改自 GPGPU-Sim)

取指-译码-执行,是处理器运行指令所遵循的一般周期性操作。

取指一般是指按照当前存储在程序计数器(Program Counter,PC)中的存储地址,取出下一条指令,并存储到指令寄存器中的过程。在取指操作结束时,PC 指向将在下一个周期读取的下一条指令。

译码一般是指将存储在指令寄存器中的指令解释为传输给执行单元的一系列控制信号。

图 3-5 取指译码结构

在GPGPU中,译码之后要对指令进行调度,以保证后继执行单元的充分利用。这一调度通过线程束调度器(Warp Scheduler)实现。

线程束是为了提高效率打包的线程集合(NVIDIA称之为Warps,AMD称为Wavefronts)。在每一个循环中的调度单位是Warp,同一个Warp内每个线程在同一时刻执行相同命令。

取指与译码操作过程如下:

取指模块(I-Fetch)根据PC指向的指令,从内存中获取到相应的指令块。需要注意的是,在GPGPU中,一般没有CPU中常见的乱序执行。

图 3-5 取指模块

  1. 指令缓存(I-Cache)读取固定数量的字节(对齐),并将指令位存储到寄存器中。

  2. 对I-Cache的请求会导致命中、未命中或保留失败(Reservation fail)。保留失败发生于未命中保持寄存器 (MSHR) 已满或指令缓存中没有可替换的区块。不管命中或者未命中,循环取指都会移向下一Warp。
    在命中的情况下,获取的指令被发送到译码阶段。在未命中的情况下,指令缓存将生成请求。当接收到未命中响应时,新的指令块被加载到指令缓存中,然后Warp再次访问指令缓存。

  3. 指令缓冲(I-Buffer)用于从I-Cache中获取指令后对译码后的指令进行缓冲。最近获取的指令被译码器译码并存储在 I-Buffer 中的相应条目中,等待发射。

  4. 每个 Warp 都至少对应两个 I-Buffer。每个 I-Buffer 条目都有一个有效位(Valid)、就绪位(Ready)和一个存于此 Warp 的已解码的指令。有效位表示在 I-Buffer 中的该已解码的指令还未发射,而就绪位则表示该Warp的已解码的指令已准备好发射到执行流水线。

图 3-4 指令缓冲


当Warp内的I-Buffer 为空时,Warp以循环顺序访问指令缓存。(默认情况下,会获取两条连续的指令)这时对应指令在I-Buffer中的有效位被激活,直到该Warp的所有提取的指令都被发送到执行流水线。

当所有线程都已执行,且没有任何未完成的存储或对本地寄存器的挂起写入,则 Warp 完成执行且不再取指。当线程块中的所有Warp都执行完成且没有挂起的操作,标记线程块完成。所有线程块完成标记为内核已完成。

相对于CPU,GPU的前端一般没有乱序发射,每个核心的尺寸就可以更小,算力更密集。

3.3 发射

发射是指令就绪后,从指令缓冲进入到执行单元的过程。

在(译码后的)指令发射阶段,指令循环仲裁选择一个Warp,将I-Buffer中的发射到流水线的后级,且每个周期可从同一Warp发射多条指令

所发射的有效指令应符合以下条件

  1. 在Warp里未被设置为屏障等待状态;

  2. 在I-Buffer中已被设置为有效指令(有效位被置为1);

  3. 已通过计分板(Scoreboard)检查;

  4. 指令流水线的操作数访问阶段处于有效状态。

在GPU中,不同的线程束的不同指令,经由SIMT堆栈和线程束调度,选择合适的就绪的指令发射。

在发射阶段,存储相关指令(Load、Store等)被发送至存储流水线进行相关存储操作。其他指令被发送至后级SP(流处理器)进行相关计算。

3.3.1 SIMT堆栈

SIMT堆栈用于在Warp前处理SIMT架构的分支分化的执行。一般采用后支配堆栈重收敛机制来减少分支分化对计算效率的负面影响。

SIMT 堆栈的条目代表不同的分化级别,每个条目存储新分支的目标 PC、后继的直接主要再收敛 PC 和分布到该分支的线程的活动掩码。在每个新的分化分支,一个新条目被推到栈顶;而当 Warp 到达其再收敛点时,栈顶条目则被弹出。每个 Warp 的 SIMT 堆栈在该 Warp 的每个指令发出后更新。

线程束分化

从功能角度来看,虽然SIMT架构下每个线程独立执行,但在实际的计算过程中会遇到一些分支的处理,即有些线程执行一个分支,而另外的线程则执行其他分支。如果在同一个Warp内不同的线程执行不同的分支,就会造成线程束分化,导致后继SIMD计算的效率降低。因此应尽量避免线程束的分化。


图 3-6 线程束分化与重聚合

SIMT堆栈功能

SIMT堆栈模块可有效改善线程束分化引起的GPGPU执行单元利用率下降的问题。

SIMT堆栈重点解决:

控制流嵌套问题(Nested Control Flow)
在控制流嵌套中,一个分支严重地依赖另一个分支,这极大影响了线程的独立性。

如何跳过计算过程(Skip Computation)

由于线程束分支的存在,导致同一个Warp内的有些线程并不必要执行某些计算指令。

3) SIMT掩码

SIMT堆栈中使用了SIMT掩码(SIMT Mask)来处理线程束分化问题,以下例来说明掩码如何控制整个Warp的执行。

4) SIMT 掩码引起的死锁问题

SIMT 掩码可以解决Warp内分支执行问题,通过串行执行完毕分支之后,线程在Reconverge Point(重合点)又重新聚合在一起以便最大提高其并行能力。

但对于一个程序来说,如果出现分支就表明每个分支的指令和处理是不一致的,容易使一些共享数据失去一致性。如果在同一个Warp内如果存在分支,则线程之间可能不能够交互或者进行数据交换,在一些实际算法中可能使用锁定(Lock)机制来进行数据交换。但掩码恰恰可能因为调度失衡,造成锁定一直不能被解除,造成死锁问题

5) GPGPU解决死锁的方法

图 3-8 V100 Warp调度对比图[2]

解决死锁的方法如下:

NVIDIA为V100 中Warp内的每个线程都分配了一个PC指针和堆栈,将PC指针的颗粒度细化到每一个线程中去,保障数据交换避免死锁。(图3-5)

为避免细粒度的PC指针和堆栈与GPU的SIMT执行模型产生冲突,硬件仍以Warp为单位来进行线程调度。

使用了Schedule Optimizer(调度优化器)硬件模块来决定哪些线程可以在一个Warp内进行调度,将相同的指令重新进行组织排布到一个Warp内,并执行SIMD模型,以保证利用效率最大化[2]。

3.3.2 线程束调度与记分牌

进行线程束(Warp)调度的目的是充分利用内存等待时间,选择合适的线程束来发射,提升执行单元计算效率。

在理想的计算情况下,GPU内每个Warp内的线程访问内存延迟都相等,那么可以通过在Warp内不断切换线程来隐藏内存访问的延迟

GPU将不同类型的指令分配给不同的单元执行,LD/ST硬件单元用于读取内存,而执行计算指令可能使用INT32或者FP32硬件单元,且不同硬件单元的执行周期数一般不同。这样,在同一个Warp内,执行的内存读取指令可以采用异步执行的方式,即在读取内存等待期间,下一刻切换线程其他指令做并行执行,使得GPU可以一边进行读取内存指令,一边执行计算指令动作,通过循环调用(Round Robin)隐藏内存延迟问题,提升计算效率。

在理想状态下,可以通过这种循环调用方式完全隐藏掉内存延迟。但在实际计算流程中,内存延迟还取决于内核访问的内存位置,以及每个线程对内存的访问数量

内存延迟问题影响着Warp调度,需要通过合理的Warp调度来隐藏掉内存延迟问题。

1) 指令顺序调整的原因

在同一个Warp的单个线程中,调整发送到ALU将要执行的指令顺序,可以隐藏掉一部分内存延迟问题。例如读取指令和加法指令使用的是不同的硬件单元,在第一个时钟周期执行内存读取指令之后,下一个时钟周期不必等待读取内存指令,而是可以直接执行加法指令,从而实现一边计算一边读取,来提高整个运行效率。

但在实际情况中,后一个指令有可能是依赖于前一个指令的读取结果。要解决该问题就需要GPU提前对指令之间的依赖关系进行预测,解析出指令之间的独立性和依赖关系。

图 3-11动态线程束示例(来源:WILSON W. L. FUNG等)

2) 记分牌与指令顺序调整的方法

GPU在这里参考了CPU设计,为了解析指令之间的独立性,采用顺序记分牌(In-Order Scoreboard)。

对于单线程束情况

  1. 每个寄存器在记分牌中都对应一个标志位,用于表示该寄存器是否已被写入数据,如果置1则表示该寄存器已经被写入。

  2. 此时如果另外一个指令想要读或者写该寄存器,则会处于一直等待状态,一直到该寄存器的标志位被清零(表明之前写寄存器操作完成)。这样就可以阻止Read-After-Write和Write-After-Write的问题。

  3. 当顺序记分牌和顺序指令(In-Order Instruction)结合时,能避免Write-After-Read的问题。


图 3-11数据冲突与流水线结构相关

对于多线程束情况,将上述方法应用到GPU时,还需要解决两个问题:

  1. 由于有大量寄存器GPU,在每组寄存器中增加一个标志位将需要占用更多额外的寄存器。

  2. 在GPU中,一般会有很多个线程同时执行同一指令,一旦其执行的指令被打断,会有很多线程同时访问Scoreboard造成读取阻塞。

对于多线程束情况,可通过动态记分牌解决上面的两个问题:

图 3-9 记分牌Entry流程

  1. 为每个Warp创建几个入口(Entry),每个入口与一个即将被写但操作尚未完成的寄存器相对应。记分牌在指令进入指令缓冲区(Instruction buffer,I-Buffer)和写操作完成结果存入Register File时能被访问(图3-6)

  2. 当一个指令从内存中读取出来放入到I-Buffer时,将该指令中的源寄存器和目的寄存器与Entry做比较,看是否有其他指令集已经对该寄存器在做写操作,如果有则返回一个bit Vector,与该寄存器一起写入到I-Buffer中。如果该指令集的写操作完成了,将会刷新I-Buffer中的该指令集寄存器的bit Vector,将bit Vector清除掉。

  3. 另外如果一个指令做写操作,并需要将该寄存器放入Entry中,但是此Entry已经满了,那么该指令将会一直等待,或者被丢弃过一定时钟周期后被重新获取再次查看Entry是否满[3]。
下载链接:
英伟达GPU加速迭代,聚焦AI光通信核心厂商
《Computex 2024系列主题演讲合集》
1、Computex 2024系列AMD主题演讲:CPU+GPU+UA互联厂商 2、Computex 2024英伟达主题演讲:AI时代如何在全球范围内推动新的工业革命
科技前瞻专题:国际巨头的端侧AI布局(2024)
AIoT白皮书:AI硬化向实而生
异构大规模分布式网络设计与性能评估
2024面向未来的算力网络连接:中国算力网络市场发展白皮书
2024面向AIGC的数智广电新质生产力构建白皮书
2024大模型训练数据白皮书
存储器行业:双墙阻碍算力升级,四大新型存储应用探讨
生成式人工智能专题研究:国内大模型(生成式AI加速,国内厂商聚力突破)
《存储专题系列合集》
1、存储专题系列一:新应用发轫,存力升级大势所趋 
2、存储专题系列二:存力需求与周期共振,SSD迎量价齐升 
3、存储专题三:AI时代核心存力HBM
4、存储专题:AI发展驱动HBM高带宽存储器放量
机器人专题研究:产业发展概览(2024)
国产AI算力行业报告:浪潮汹涌,势不可挡(2024)
AI系列之HBM:AI硬件核心,需求爆发增长
2024中国“百模大战”竞争格局分析报告(2024)
2024年中国虚拟现实(VR)行业研究报告

《半导体行业深度报告合集(2024)》

《70+篇半导体行业“研究框架”合集》

700+份重磅ChatGPT专业报告
《人工智能AI大模型技术合集》
《56份GPU技术及白皮书汇总》


本号资料全部上传至知识星球,更多内容请登录智能计算芯知识(知识星球)星球下载全部资料。




免责申明:本号聚焦相关技术分享,内容观点不代表本号立场,可追溯内容均注明来源,发布文章若存在版权等问题,请留言联系删除,谢谢。



温馨提示:

请搜索“AI_Architect”或“扫码”关注公众号实时掌握深度技术分享,点击“阅读原文”获取更多原创技术干货。


智能计算芯世界 聚焦人工智能、芯片设计、异构计算、高性能计算等领域专业知识分享.
评论
  • 彼得·德鲁克被誉为“现代管理学之父”,他的管理思想影响了无数企业和管理者。然而,关于他的书籍分类,一种流行的说法令人感到困惑:德鲁克一生写了39本书,其中15本是关于管理的,而其中“专门写工商企业或为企业管理者写的”只有两本——《为成果而管理》和《创新与企业家精神》。这样的表述广为流传,但深入探讨后却发现并不完全准确。让我们一起重新审视这一说法,解析其中的矛盾与根源,进而重新认识德鲁克的管理思想及其著作的真正价值。从《创新与企业家精神》看德鲁克的视角《创新与企业家精神》通常被认为是一本专为企业管
    优思学院 2025-01-06 12:03 119浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 145浏览
  • PLC组态方式主要有三种,每种都有其独特的特点和适用场景。下面来简单说说: 1. 硬件组态   定义:硬件组态指的是选择适合的PLC型号、I/O模块、通信模块等硬件组件,并按照实际需求进行连接和配置。    灵活性:这种方式允许用户根据项目需求自由搭配硬件组件,具有较高的灵活性。    成本:可能需要额外的硬件购买成本,适用于对系统性能和扩展性有较高要求的场合。 2. 软件组态   定义:软件组态主要是通过PLC
    丙丁先生 2025-01-06 09:23 85浏览
  • By Toradex 秦海1). 简介嵌入式平台设备基于Yocto Linux 在开发后期量产前期,为了安全以及提高启动速度等考虑,希望将 ARM 处理器平台的 Debug Console 输出关闭,本文就基于 NXP i.MX8MP ARM 处理器平台来演示相关流程。 本文所示例的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台。  2. 准备a). Verdin i.MX8MP ARM核心版配合Dahlia载板并
    hai.qin_651820742 2025-01-07 14:52 45浏览
  • 这篇内容主要讨论三个基本问题,硅电容是什么,为什么要使用硅电容,如何正确使用硅电容?1.  硅电容是什么首先我们需要了解电容是什么?物理学上电容的概念指的是给定电位差下自由电荷的储藏量,记为C,单位是F,指的是容纳电荷的能力,C=εS/d=ε0εrS/4πkd(真空)=Q/U。百度百科上电容器的概念指的是两个相互靠近的导体,中间夹一层不导电的绝缘介质。通过观察电容本身的定义公式中可以看到,在各个变量中比较能够改变的就是εr,S和d,也就是介质的介电常数,金属板有效相对面积以及距离。当前
    知白 2025-01-06 12:04 173浏览
  • 本文介绍Linux系统更换开机logo方法教程,通用RK3566、RK3568、RK3588、RK3576等开发板,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。制作图片开机logo图片制作注意事项(1)图片必须为bmp格式;(2)图片大小不能大于4MB;(3)BMP位深最大是32,建议设置为8;(4)图片名称为logo.bmp和logo_kernel.bmp;开机
    Industio_触觉智能 2025-01-06 10:43 87浏览
  • 大模型的赋能是指利用大型机器学习模型(如深度学习模型)来增强或改进各种应用和服务。这种技术在许多领域都显示出了巨大的潜力,包括但不限于以下几个方面: 1. 企业服务:大模型可以用于构建智能客服系统、知识库问答系统等,提升企业的服务质量和运营效率。 2. 教育服务:在教育领域,大模型被应用于个性化学习、智能辅导、作业批改等,帮助教师减轻工作负担,提高教学质量。 3. 工业智能化:大模型有助于解决工业领域的复杂性和不确定性问题,尽管在认知能力方面尚未完全具备专家级的复杂决策能力。 4. 消费
    丙丁先生 2025-01-07 09:25 80浏览
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 127浏览
  • 根据Global Info Research项目团队最新调研,预计2030年全球封闭式电机产值达到1425百万美元,2024-2030年期间年复合增长率CAGR为3.4%。 封闭式电机是一种电动机,其外壳设计为密闭结构,通常用于要求较高的防护等级的应用场合。封闭式电机可以有效防止外部灰尘、水分和其他污染物进入内部,从而保护电机的内部组件,延长其使用寿命。 环洋市场咨询机构出版的调研分析报告【全球封闭式电机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球封闭式电机总体规
    GIRtina 2025-01-06 11:10 104浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球无人机锂电池产值达到2457百万美元,2024-2030年期间年复合增长率CAGR为9.6%。 无人机锂电池是无人机动力系统中存储并释放能量的部分。无人机使用的动力电池,大多数是锂聚合物电池,相较其他电池,锂聚合物电池具有较高的能量密度,较长寿命,同时也具有良好的放电特性和安全性。 全球无人机锂电池核心厂商有宁德新能源科技、欣旺达、鹏辉能源、深圳格瑞普和EaglePicher等,前五大厂商占有全球
    GIRtina 2025-01-07 11:02 68浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 75浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦