其他分享
首页 > 其他分享> > NVIDIA GPU 架构演进

NVIDIA GPU 架构演进

作者:互联网

转自:NVIDIA GPU 架构梳理 - 知乎 (zhihu.com)

REF:NVIDIA GPU 架构演进 | Chenfan Blog (jcf94.com)

目前高性能计算领域,英伟达显卡一家独大,因此本文总结一下NVIDIA GPU的架构演变。

目录:

一、NVIDIA GPU的架构演变历史
二、Tesla 架构
三、Fermi架构
四、Kepler架构
五、Maxwell架构
六、Pascal架构
七、Volta架构
八、Turing架构
九、Ampere架构

一、NVIDIA GPU的架构演变历史和基本概念[1]

截止2021年,发布时间离我们最近的8种NVIDIA GPU微架构是:

NVIDIA一般以历史上一些著名科学家的名字命名自己的GPU微架构,上面8种微架构分别是:特斯拉,费米,开普勒,麦克斯韦,帕斯卡,伏打,图灵,安培。

其中最新的是2020年宣布的Ampere架构。

二、Tesla 架构

Tesla 架构的资料在官网也没找到多少,不过这是英伟达第一个实现统一着色器模型的微架构。

经典型号是G80,在Fermi架构白皮书的开篇部分有对G80的简要介绍:

 

三、Fermi架构[2]

Fermi 架构是NVIDIA GPU 架构自初代 G80 以来最重大的飞跃。

NVIDIA的GPU研发团队从G80和GT200两个型号上汲取经验,采用全新的设计方法来创建世界上第一个计算 GPU。在这个过程中,专注于提高以下关键领域:

基于以上出发点,Fermi架构有以下四大亮点:

第三代流式多处理器 (SM)

第二代并行线程执行 ISA

改进的内存子系统

NVIDIA GigaThread TM 引擎

以上是Fermi 架构相较于初代架构提升的地方

下面具体看看Fermi 架构的配置

第一个基于Fermi架构的GPU,使用 30 亿个晶体管实现,共计512个CUDA内核。

这512 个 CUDA 内核被组织成 16 个 SM,每个 SM 是一个垂直的矩形条带(红框中的内容),分别位于一个普通的 L2 cache周围,每个 SM 有32 个CUDA 内核。

一个CUDA 内核为一个线程在每个时钟周期里执行一条浮点或整数指令。

6个64-bit显存分区,组成一个384-bit的显存接口,总共支持高达 6GB 的 GDDR5 DRAM显存。

GDDR5:第五版图形用双倍数据传输率存储器
DRAM:动态随机存取存储器

主机接口(host interface )通过 PCI-Express 将 GPU 连接到 CPU。 Giga Thread 全局调度器将线程块分发给 SM 线程调度器。

 整个 GPU 有多个 GPC(图形处理集群),单个GPC包含一个光栅引擎(Raster Engine),四个 SM(流式多处理器),GPC 可以被认为是一个独立的 GPU。所有从 Fermi 开始的 NVIDIA GPU,都有 GPC。

上图是将16个SM中的 1 个拿出来放大后的详细结构图,其中包含:

每个 SM 具有 32 个 CUDA 内核,就是图中写着Core的绿色小方块儿,每个 CUDA 内核都有一个完全流水线化的整数算术逻辑单元 (ALU) 和浮点单元 (FPU):

 

 

 SM(Streaming Multiprocessors)是GPU架构中非常重要的部分,GPU硬件的并行性就是由SM决定的。

四、Kepler架构

 Kepler架构的思路是:减少SM单元数(在这一代中叫SMX单元),增加每组SM单元中的CUDA内核数。在Kepler架构中,每个SM单元的CUDA内核数由Fermi架构的32个激增至192个。

在每个SMX中:

五、Maxwell架构

Maxwell架构的SM单元和Kepler架构相比,又有很大变化,这一代的SM单元更像是把4个Fermi 架构的SM单元,按照2x2的方式排列在一起,这一代称为SMM单元:

SMM 使用基于象限的设计,具有四个 32 核处理块(processing blocks),每个处理块都有一个专用的 warp 调度程序,能够在每个时钟分派两条指令。

每个 SMM 单元提供

每个处理块中:

CUDA内核总数 从Kpler时代的每组SM单元192个减少到了每组128个,但是每个SMM单元将拥有更多的逻辑控制电路,便于精确控制。

参考:https://link.zhihu.com/?target=https%3A//developer.nvidia.com/blog/maxwell-most-advanced-cuda-gpu-ever-made/

六、Pascal架构

这里有一个新概念:核心

NVIDIA不同的架构会有几种不同的核心,Pascal架构有GP100、GP102两种大核心:

核心是一个完整的GPU模组,上图展示了一个pascal架构的GP100核心,带有 60 个 SM 单元。

不同的显卡产品可以使用不同的 GP100 配置,一般是满配或者减配,比如Tesla P100 使用了 56 个 SM 单元。

 

每个SM单元中,分为2个Process Block,每个Process Block中:

CUDA内核总数从Maxwell时代的每组SM单元128个减少到了每组64个,这一代最大的特点是又把DP双精度运算单元加回来了。

制程工艺升级到了16nm,性能大幅提升,功耗却不增加。

七、Volta架构

                                               Volta架构的GV100核心

 

                                                                   GV100核心的SM单元

每个SM单元中,分为4个Process Block,每个Process Block中:

在前几代架构中:

一个CUDA 内核在每个时钟周期里只能为一个线程执行一条浮点或整数指令。

但是从Volta架构开始,将一个CUDA 内核拆分为两部分:FP32 和 INT32,好处是在同一个时钟周期里,可以同时执行浮点和整数指令,提高计算速度。

Volta架构在传统的单双精度计算之外还增加了专用的Tensor Core张量单元,用于深度学习、AI运算等。

八、Turing架构

                                                        Turing架构的TU102核心

Turing架构目前一共有三种核心:

 

                                                         TU102核心的SM单元

每个SM单元有4个处理块,每个处理块中:

这一代架构去掉了对FP64的支持。

九、Ampere架构

                                                           Ampere架构的GA102核心

                                                                 GA102核心的SM单元

每个SM单元分成4个处理块,每个处理块中:

这一代架构又把FP64 Core加回来了,同时也是自Volta架构以来的,NVIDIA第三代Tensor技术,保持一代架构更新一次Tensor。

标签:架构,演进,CUDA,SM,NVIDIA,GPU,单元,内核
来源: https://www.cnblogs.com/cy0628/p/15755395.html