动态压缩

CPU的助手,Gen11核显简介 周末杂谈,Icelake

作者:微架构与高性能计算杂谈 / 关注公众号:micro-arch  发布:2019-03-24

Intel集成显卡(核芯显卡)在Skylake微架构Gen9之后,再无大的更新,Gen10因为CannonLake的悲情谢幕,也没能看一眼这个世界,所以时间来到2019年,也让人期待最新的基于IceLake微架构的Gen11核显能带来何种改进,本文基于Intel在前几日发布的文档“Intel® Processor Graphics Gen11 Architecture”而来,作为本周公众号前瞻性观察文章,本文无实际测试数据,仅为简单介绍Gen11的大体信息而大致了解intel核芯显卡的基本结构。
什么是Gen11核芯显卡
Gen11核芯显卡基于英特尔第三代Finfet工艺的10nm工艺,与IceLake处理器一同存在,图形架构将一如既往提供出色的实时3D渲染和多媒体视频处理性能。此外,它的底层计算架构也提供通用计算功能,如OpenCL,可提供高达超过1Tfops峰值浮点性能。标准的Gen11 GT2由64个执行单元(EU)组成,相比Gen9 GT2的24EU增加了2.67倍,这也是计算能力提升的源泉,Gen11通过改进数据压缩,增加GPU L3缓存以及增加峰值内存带宽来满足更大运算单元的带宽需求。Gen11还支持主流的APIs如DirectX12, OpenGL, Vulkan, OpenCL 和Metal。
在处理器中的基本结构

与过去一样,核芯显卡依然是通过Ring环形总线与CPU和其他部件相连,为每个连接提供专用本地接口。系统控制器也连接到环,这有利于所有片外系统的内存事务从CPU内核到GPU的互联。LLC最后一级缓存也连接到Ring上,LLC同样与核芯显卡共享。

Gen11架构可大致分为:
GlobalAssets,包含一些全局控制固定功能块,与SoC的其余部分相连,图形技术接口,Media FF:多媒体处理模块,2D Blitter:2D的显存位块传输单元和Slice。Slice包含3D函数几何处理,包含EU单元的8个subslice,以及包含支持渲染流水线,如光栅,纹理和GPU L3缓存等其他固定功能块的Slice Common部分。
Global Assets,2D Blitter,Media FF
Global Assets提供了从GPU到SoC其余部分的硬件和软件接口,也包括电源管理。
图形技术接口(GTI)是GPU与SoC其余部分之间的网关。例如通过Ring总线获得的共享LLC存储器和系统DRAM的数据将从此进入GPU,Gen11中的GTI已经过改进,可以提供更高的带宽,写操作从32B /cycle提高到64B /cycle接口,此外,内部队列的大小可以更好的处理SoC中的延迟和提供更高的带宽。
Gen11的视频解码能力有进一步提高,MFXVP9解码位深度支持到10bit,这是HDR视频场景所必需的。此外,HEVC和VP9都得到了改进,以支持HEVC和VP9的4:2:2和4:4:4的更高质量的色度采样格式。 4:2:2有利于高端视频制作中的用户,而4:4:4对于文本\文档浏览是最佳的选择,想了解一些关于色度采样的原理,可参考这篇博客
https://blog.csdn.net/euyy1029/article/details/72458216
Gen11上的MFX编码引入了VP9支持,并显着提高了与Gen9相比的HEVC编码压缩效率.Gen11 VQE将硬件去噪位深度扩展到10位。高动态范围(HDR)工作负载将受益于新的软件可编程3DLUT表,例如HDR2HDR和HDR2SDR色调映射。
下表显示了Gen11 GT2核显结构与Gen9 GT2的理论峰值吞吐量,以每周期为计量基准,因为目前还不知道Gen11核芯显卡的最终运行频率,也包含了一些buffer的改进,直接展示了Gen11相比Gen9有所提升的地方

格后下文为各组成部分简介,内容较为晦涩,可直接跳过至最后
Slice结构简介
子slice(subslice)

slice部分是整个Gen11 GPU最核心的部分,Gen11首先有8个子Slice,每个子slice拥有8个EU,包含其自己的本地线程调度器单元和它自己的支持指令高速缓存。每个Subslice还包括3D纹理采样器单元,媒体采样器单元和数据端口单元
3D Geometry
3D Geometry 功能包含映射到典型渲染前端基于DirectX,Vulkan,OpenGL或Metal API中的逻辑流水线,它还包括一个Position Only Shading流水线,用于实现基于Tile的渲染的POSh流水线
Vertex fetch(顶点提取)是几何流水线中的一个初始阶段,负责提取来自内存的顶点数据,以便在后续顶点中使用,重新格式化它,并将结果写入内部缓冲区。通常,顶点由多个属性组成,例如,位置,颜色,法线,纹理坐标等。更多顶点属性的使用已经随着工作量复杂性的增加而增加。4个attributes /时钟增加到6个attributes /时钟,并提高输入数据缓存效率。Gen11中另一个重要的VF变化是处理的drawcall数量的增加。较新的API,如DX12™*和Vulkan,明显降低了draw call的开销,使具体应用能够通过增加每帧的draw call次数来改善在Gen11上运行更好的图形效果。 Gen11也改进了曲面细分。它使Hull Shader线程调度速率提高了2倍。
Execution Unit
而intel核显一直以来的基础执行单元是Execution Unit (EU),EU的体系结构是同时多线程(SMT)和细粒度交错多线程(IMT)的组合。 这些EU是计算处理单元,可驱动多发射多流水线的单指令多数据算术逻辑单元(SIMD ALU),用于高吞吐量浮点或者整数计算。EU的细粒度线程特性可确保连续执行指令,同时还允许隐藏更长延迟的操作,例如内存分散/收集,采样器请求或其他系统通信。根据软件工作负载,EU中的硬件线程可能都在执行相同的计算内核代码,或者每个EU线程可能正在从完全不同的计算内核执行代码。下图为EU内部结构

SIMD ALU
从上图EU的内部结构图可知,在每个EU中,主要计算单元是一对SIMD浮点单元(ALU)。虽然称为ALU,但它们支持浮点和整数计算。 这些单元最多可以执行4个32位浮点数(或整数)的运算,或最多8个16位浮点数运算。 实际上,每个EU可以在每个时钟执行16次FP32浮点运算,即两个ALU,每个ALU执行4次FMA类型操作,等效于2*4*(Mul+Add)=8Mul+8Add和每个时钟32个FP16浮点运算:2*ALU *SIMD=8 *2 *(Add +MUL),当然我们可以扩展一下,每个EU可以执行16次FP32浮点运算,共有64个EU,也就是每周期理论上可以执行1024次单精度浮点运算,换句话说,Gen11的频率只要超过1Ghz,就能实现Tflops的峰值浮点性能。
Shared level memory
SLM是64KB高度存储的数据结构,可从子slice的8个EU访问。架构的变化如下图所示。在Gen11架构中,SLM和L3是分开的,Gen9则是通过数据端口功能访问,Gen11可以直接从EU访问。这样能提供低延迟和更高的效率 因为SLM的访问流量不会干扰通过数据端口或采样器访问L3 /内存的请求。
Texture Sampler
Texture Sampler可用于对纹理和图像表面类型点,面,3D,立方体和缓冲区进行采样。 采样器包括高速缓存,解压缩器和过滤器区块。Texture Sampler支持许多块压缩纹理格式的动态解压缩,例如DirectX BC1-BC7和OpenGL ETC ,ETC2和EAC。 此外,纹理采样器支持无损压缩表面元素。该采样器还符合最新的Compute和3D API的功能和质量要求。
Gen11的改进包括:
1,对于所有各向异性深度,32位表面格式的各向异性过滤的采样率增加2倍(可以做到2X各向异性过滤与三线性过滤的速率相同)。
2,点采样32位格式以及双线性滤波64位格式的体积曲面上的采样率增加了2倍(对于大多数曲面格式,点采样现在全速率为4ppc)。
3,具有64位表面格式的2D表面的三线性滤波采样率增加了2倍。
Dataport
从前面的图可知每个Subslice还包含一个称为Dataport的内存接口单元。基本功能可参考CPU架构中的内存操作子系统,处理load/store data和address, Dataport通过灵活的SIMD分散/收集操作来支持对L3缓存,渲染缓存和其他缓冲区的高效的未类型化和类型化读写操作。为了最大化内存带宽,该单元动态地将分散的内存操作合并,使得其比非重复的64字节高速缓存行的请求操作更少。例如,SIMD-16收集对16的操作,如果所有地址都在一个高速缓存行内,则16个32位浮点值的唯一偏移地址可能会合并为单个64字节读取操作,Gen11减少了DataPort操作L3高速缓存和内存BW 访问目标。
SLICE COMMON简介
光栅(Raster)
光栅单元用于将多边形转换为平面显示的像素块。 Gen11显着提高了16倍1xAA的转换率和4倍4xMSAA的转换率。除了正常的光栅化,Gen9支持保守的光栅化(Conservative Rasterization),这是DX12的新渲染特性,相关信息可查看
http://www.opengpu.org/forum.phpmod=viewthread&tid=2186
它测试像素的部分覆盖率并将其标记为光栅化覆盖。此实现满足每D3D12规范的tier3硬件要求,并支持高级渲染用于碰撞检测,遮挡剔除,阴影或可见性检测的算法。Gen11将保守的光栅化吞吐量提高了大约8倍。除了支持渲染图元之外,Gen设备还支持线渲染,这在工作站应用中通比较重要。
Depth
Depthbuffer被叫做“深度缓存”也叫“Z缓存值”,用来记录视截体的每个像素的深度,其值范围是[0,1],在D3D11中 默认近裁剪面(Near_Z)上面的像素深度为0,而远裁剪面上的像素的像素深度为1, 其中深度缓存值中有24位用来存储真正的深度缓存值(Z值),有8位用来存储模板缓存值。Depth test在两个粒度级别(粗略和精细)执行。粗测试由HiZ执行,其中测试是在8x4像素块粒度上进行的。此外,HiZ模块支持快速清除,允许清除深度而无需写入深度缓冲区。以更精细的粒度(每个像素,每个样本)执行的测试由Z块完成。
Pixel Dispatch/ Pixel Backend/Blend
Pixel Dispatch块累积部分跨度和像素信息并将线程分派给执行单元。像素调度程序决定要执行的线程的SIMD宽度,在SIMD8,SIMD16和SIMD32之间进行选择。像素后端(PBE)是渲染流水的最后一个阶段,它包含用于保存颜色值的缓存。此阶段还处理跨多种源和目标表面格式的颜色混合功能。 这里也处理无损色彩压缩。 Gen11利用渲染目标格式中使用较低精度来降低混合操作的功耗。
L3数据缓存/LPDDR4内存
在Gen11中,GPU L3缓存(不是LLC)被提升到3MB,值得一提的是ICL支持了4通道32bit的LPDDR4内存,取代过去双通道64bit的LPDDR3内存,频率最高到3600Mhz,这相比LPDDR3 1866,最大内存带宽可提升近一倍

上图可一目了然的了解到各个部分的读写吞吐带宽
除此之外,Gen11还新增了几个全新的技术特性,如INTEL ADAPTIVE SYNC,这是一个类似freesync的自适应垂直同步技术,还有COARSE PIXEL SHADING等,详情可参考:
https://software.intel.com/sites/default/files/managed/db/88/The-Architecture-of-Intel-Processor-Graphics-Gen11_R1new.pdf
了解了Gen11整体结构和新特性,我们可以简单总结一下Gen11,其最大的特点是规模更高,GT2拥有多达64EU,SLM将不再位于L3而是独立存在被DataPort访问,结构中多个单元间的吞吐带宽有了增加,并且新增了几个渲染和垂直同步技术,这让下一代核显64EU版本相比Gen9 24EU版本,有望带来超过一倍的性能提升和更新的API和渲染技术支持,当然要说今年最值得期待的还是Intel的独立显卡,到底是全新设计还是核显放大版,无疑是一个最令玩家关心的话题。


本文作者 :微架构与高性能计算杂谈

关注Ta的微信公众号获取更多图文精彩内容...