找回密码
 立即注册
查看: 244|回复: 0

第二章: NVIDIA Pascal架构

[复制链接]
发表于 2022-8-14 14:17 | 显示全部楼层 |阅读模式
Pascal是一个由NVIDIA构建的GPU架构。它既作为图形部分存在,也作为计算部分存在,后者的目标是高性能计算和深度学习应用程序。在本文中,我们将主要关注图形部分,特别是一个被称为GeForce GTX 1080的配置。我们将以一种自下而上的方式呈现该架构,从最小的ALU开始,然后向整个GPU进行构建。在本文的最后会简要地提到其他一些芯片配置。
在Pascal图形架构中使用的英伟达中的术语“The unifified ALU[1] —CUDA core”如图1所示.



图1

alu的重点是浮点运算和整数算法,但它们也支持其他操作。为了提高计算能力,几个这样的alu被组合成一个streaming multiprocessor(流式多处理器,SM)。在Pascal的图形部分中,SM由四个处理块(process block)组成,其中每个块有32个alu。这意味着SM可以同时执行32个线程的4个warp。这一点如图2所示。



图2

每个处理块,即宽度为32的SIMT引擎,也具有8个加载/存储(LD/ST)单元和8个特殊功能单元(SFU)。加载/存储单元处理寄存器文件中寄存器的读写值,这是16384×4字节,即64kB,每个SM的总和为256kB。sfu处理超越函数指令,如正弦、余弦、指数(以2为底)、对数(以2为底)、倒数和倒数平方根。它们还支持属性插值。
SM中的所有alu都共享一个指令缓存,而每个SIMT引擎都有自己的指令缓冲区(instruction buffer),其中有一组最近加载的本地指令,以进一步提高指令缓存命中率。warp scheduler(线程调度器)能够在每个时钟周期中调度两个warp指令,例如,可以在同一个时钟周期中同时向ALUs和LD/ST单元调度工作。请注意,每个SM还有两个L1缓存,每个都有24kB的存储空间,即每个SM有48kB。此外,每个SM有8个纹理单位(上图中tex)。
因为着色必须在2×2像素大小的块中完成,所以warp scheduler找到8个不同的2×2像素块,并将它们组合在一起,在32个SIMT通道中执行。并且由于这是一个统一的ALU(unified ALU)意味着可以兼容多种着色运算,warp scheduler可以在顶点、像素、图元或计算着色器选择任意一种打包成warp(一个warp内必须是同一种类型)。一个SM里面的四个处理块可以同时运行不同类型的warp。该体系结构对于切换当前正在执行的warp的开销为零。关于在Pascal上选择执行的细节没有公开,但是以前的NVIDIA架构给了我们一些提示。在2008年的NVIDIA Tesla架构中,使用了一个记分牌机制来限定每个时钟周期选择切换的warp的问题。记分牌是一种通用的机制,允许无序执行没有冲突。warp调度程序在准备执行的warp中进行选择优先级最高的warp,例如:不等待纹理加载。warp类型、指令类型和“公平性”是用于选择最高优先级的warp的参数。
SM与多边形引擎polymorph engine(PM)配合工作。这个单元是在费米芯片中引入。PM会执行几个与几何图形相关的任务,包括顶点获取、细分、同时进行的多投影、属性设置和流输出。第一阶段从全局顶点缓冲区获取顶点,并将warp发送给sm以进行顶点着色和hull shading。然后是一个可选的细分阶段,在这里,新生成的(u,v)补丁坐标被发送到sm中进行domain shading,也可以是几何着色。第三个阶段将处理视口变换和透视图校正。此外,这里执行一个可选的同时多投影步骤,可用于高效的VR渲染。接下来是可选的第四个阶段,其中顶点被流出到内存中。最后,将结果转发到相关的光栅引擎(raster engines)。
光栅引擎有三个任务,即三角形设置、三角形遍历和z-culling。三角形设置获取顶点,计算边缘方程,并执行背面剔除。三角形遍历使用层次分块遍历技术来访问与三角形重叠的分块。它使用边缘方程来执行分块测试和执行内部测试。在费米平台上,每个光栅化器每个时钟周期最多可以处理8个像素。在帕斯卡平台上则没有公开数据。z-culling处理单元使用之前描述的技术在每个分块上进行剔除。如果一个分块被剔除,则将立即终止对该分块的处理。对于保存下来的三角形,每个顶点的属性被转换为平面方程,以方便在片元着色器中进行计算。
与多边形引擎相结合的流处理器称为纹理处理集群texture processing cluster(TPC)。五个TPC被分组到一个更高级别的图形处理集群graphics processing cluster(GPC)中,该集群有一个服务于这五个TPC的单一光栅引擎。GPC可以被认为是一个小型的GPU,它的目标是为图形提供一组平衡的硬件单元,例如,顶点、几何、光栅、纹理、像素和ROP单元。正如我们将在本节的最后看到的,创建单独的功能单元允许设计者更容易地创建具有一系列功能的GPU芯片系列。



图3 帕斯卡GPU的GTX 1080配置,拥有20SMs,20多边形引擎,4个光栅引擎,8×20=160纹理单元(峰值速率277.3Gtexels/s),256×20=5120kB的寄存器文件,总共20×128=2560unified alu。

此时,我们已经拥有了GeForce GTX 1080的大部分构建块。它由四个gpc组成,这个通用设置如图3所示。请注意,这里还有另一个级别的调度,由千兆线程引擎 GigaThread engine驱动,以及一个到PCIev3的接口。GigaThread engine是一个全局工作分配引擎,它为所有gpc调度线程块。光栅操作单元也显示在图3中,尽管有些隐藏。它们位于图中间L2缓存的上方和下方。每个蓝色块是一个ROP单元,有8组,每组有8个ROP,共64个。ROP单元的主要任务是将输出写入像素和其他缓冲区,并执行各种操作,如混合。从图中左右两侧可以看出,总共有8个32位内存控制器,总共有256位。8个ROP单元被绑定到一个内存控制器和256kB的L2高速缓存上。这就为整个芯片提供了总共2MB的L2高速缓存。每个ROP都被绑定到一个特定的内存分区上,这就意味着一个ROP可以处理一个缓冲区中的一个特定的像素子集。ROP单元还可以处理无损压缩。压缩支持三种格式,以及支持不压缩格式和快速清除。
对于2:1的压缩(例如,从256B到128B),每个分块存储一个参考颜色值,并且在像素之间根据差异进行编码,这种对差异的编码比直接编码未压缩的形式所用的比特数更少。然后4:1压缩是2:1模式的扩展,但是这种模式只能在使用更少的比特来编码差异时启用,并且它只适用于那些具有平滑变化内容的分块。还有一个8:1模式,这是一个4:1颜色压缩与2:1模式的组合。8:1模式的优先级超过4:1,优先级超过2:1,即压缩率最高的模式总是被使用。如果所有这些压缩尝试都失败,则必须将分块内容以未压缩的格式传输并存储在内存中。帕斯卡文件压缩系统的效率如图4所示。



图4 渲染的图像显示在左边,而压缩结果是maxwell架构(中间)和Pascal架构(右)。图像越是紫色,缓冲区压缩的成功率就越高。

所使用的视频内存video memory是GDDRX5,时钟速率为10 GHz。上面我们看到,8个内存控制器总共提供了256位=32B。这提供了总共320 GB/s的总峰值内存带宽,但是许多级别的缓存与压缩技术相结合给人更有效率的印象。
该芯片的基本时钟频率为1607MHz,当有足够的功率预算时,它可以在升压模式(1733MHz)下运行。峰值计算能力为
2*2560*1733=8872960MFLOPS\approx8.9MFLOPS
其中2是因为一个融合乘加通常被算为两个浮点运算,我们除以106从MFLOPS转换为TFLOPS。GTX 1080Ti有3584个alu,结果为12.3 TFLOPS。
NVIDIA长期以来一直在开发sort-last fragment架构。但是,从maxwell架构开始,它们还支持一种称为分块缓存tiled caching的新型渲染类型,这种类型介于sort-middle和sort-last fragment之间。该体系结构如图5所示。其想法是利用本地性和L2缓存。几何体被处理成足够小的块,以便输出可以保留在这个缓存中。此外,只要几何图形覆盖tile并且没有完成像素着色。帧缓冲区也能保持在L2中。



图5 分块缓存引入了一个 binner,它将几何图形排序到分块中,并允许转换后的几何图形保留在L2缓存中。

在图3中有四个光栅引擎,但是正如我们所知道的,图形api(在大多数情况下)必须尊重原始的图形提交顺序。帧缓存区通常使用一个通用的棋盘图案被分割成(tile)。每个光栅引擎都“拥有”一组tile。当前的三角形被发送到至少有一个tile与三角形重叠的光栅引擎,这独立地解决了每个tile的排序问题。这就可以更好地实现负载平衡。在一个GPU架构中,通常也有几个FIFO队列,这是为了减少硬件单元的短缺。这些队列没有显示在我们的图表中。
显示控制器的每个颜色分量具有12位,并具有BT2020的宽色域支持。它还支持HDMI2.0b和HDCP 2.2。对于视频处理,它支持SMPTE 2084,这是一个高动态范围视频的传输函数。copy engines是一种可以执行直接内存访问(DMA)传输内存控制器。DMA传输发生在CPU和GPU之间,这种传输通常在其中任何一个上启动。starting processing unit可以在传输期间继续进行其他计算。copy engines可以在CPU和GPU内存之间启动DMA数据传输,并且它们可以独立于GPU的其余部分执行。因此,当信息从CPU传输到GPU时,GPU可以渲染三角形和执行其他功能。
Pascal架构也可以配置为非图形化应用程序,如训练神经网络或大规模数据分析。特斯拉P100就是这样一种配置。与GTX 1080的一些不同之处在于,它使用high-bandwidth memory 2 (HBM2)作为内存总线,提供720 GB/s的总内存带宽。此外,它们具有本地16位浮点支持,比32位浮点性能高达2倍,以及更快的双精度处理。SM配置也有所不同。
GTX 1080Ti(钛)是一种高端配置。它有3584个alu,一个352位内存总线,484 GB/s的总内存带宽,88个ROPs和224个纹理单元,而GTX 1080有2560、256位、320 GB/s、64和160。它的配置使用了6个gpc,也就是说,它有6个光栅引擎,而在GTX 1080中有4个。其中四个gpc与GTX 1080完全相同,而其余的两个稍小一些,只有4个tpc,而不是5个。1080Ti是由120亿个晶体管制造的芯片,而1080使用了72亿个晶体管。Pascal架构是灵活的,因为它也可以缩小规模。例如,GTX 1070是一个GTX 1080-1个GPC,而GTX 1050由两个gpc组成,每个gpc都有三个sm。
参考


  • ^arithmetic and logic unit算数逻辑单元

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-25 07:55 , Processed in 0.088622 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表