惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Recorded Future
Recorded Future
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
S
SegmentFault 最新的问题
博客园 - 司徒正美
Last Week in AI
Last Week in AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
云风的 BLOG
云风的 BLOG
雷峰网
雷峰网
博客园 - 叶小钗
The GitHub Blog
The GitHub Blog
MyScale Blog
MyScale Blog
腾讯CDC
博客园 - 聂微东
D
DataBreaches.Net
博客园 - Franky
人人都是产品经理
人人都是产品经理
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 【当耐特】
量子位
宝玉的分享
宝玉的分享
D
Docker
T
Tailwind CSS Blog
IT之家
IT之家
Engineering at Meta
Engineering at Meta
P
Proofpoint News Feed
C
CERT Recently Published Vulnerability Notes
Scott Helme
Scott Helme
Project Zero
Project Zero
Microsoft Azure Blog
Microsoft Azure Blog
AWS News Blog
AWS News Blog
Google DeepMind News
Google DeepMind News
H
Heimdal Security Blog
W
WeLiveSecurity
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
有赞技术团队
有赞技术团队
Simon Willison's Weblog
Simon Willison's Weblog
NISL@THU
NISL@THU
C
Cybersecurity and Infrastructure Security Agency CISA
Google DeepMind News
Google DeepMind News
T
Threatpost
TaoSecurity Blog
TaoSecurity Blog
N
News and Events Feed by Topic
aimingoo的专栏
aimingoo的专栏
Recent Commits to openclaw:main
Recent Commits to openclaw:main
www.infosecurity-magazine.com
www.infosecurity-magazine.com
SecWiki News
SecWiki News
S
Securelist

博客园 - 王大牛的幸福生活

AMD R600 Architecture and GPU Analysis (zz from beyond3D) Introducing CUDA(zz from beyond3d) DirectX Installation for Game Developers翻译 最近好忙…… NVIDIA G80: Architecture and GPU Analysis(zz from Beyond3D) DirectX FAQ 翻译(Graphics 部分) Graphics APIs in Windows Vista PPU时代来临——AGEIA物理加速卡全面解析(zz Introduction to Debugging (zz, By Richard "superpig" Fine ) DirectX10 Preview Sample New 翻译 有空的话,打算把新的DX10 Sample翻译一下 DirectX10 Preview Modify翻译 DirectX10 Preview 翻译(Programming Guide部分) 四月份打算把DX10的PreView全部翻译一下 NV GF6系列架构分析(GPU gem2 读书笔记) Direct10 Sample 翻译 ATi的救赎——X1000系列显卡技术详细解析2(zz) ATi的救赎——X1000系列显卡技术详细解析(zz) 2005年显卡技术与市场回顾(zz)
探求架构的奥秘 拆解“管线”看现代显卡(zz)
王大牛的幸福生活 · 2006-02-20 · via 博客园 - 王大牛的幸福生活

小熊在线——geese  北京 2006年02月08日18:17

第1页:游戏是如何制作的?显卡又如何发展?读懂梦幻般的3D世界

引言...

公元1998年3月 nVIDIA RIVA TNT推出 采用0.35微米工艺 共计7百万晶体管

公元2002年7月 ATI 9700PRO推出 采用0.15微米工艺 共计1亿7百万晶体管

公元2006年1月 ATI X1900XTX推出 采用0.09微米工艺 共计3亿八千万晶体管

......

电脑芯片技术,以摩尔定律高速发展着,并有超越之势。晶体管的高速高度集成带来了更高的频率,更先进新技术。这些都给我们带来了全新的体验。广大的硬件玩家们也喜欢学习并读懂这些东西,大都是兴趣决定了这些,同时也可以让自己做到买的清楚,用的明白。

WINFAST TNT II

RADEON 9700PRO

RADEON X1900XTX

一个3D游戏期开发:

用电脑的朋友绝大多数喜欢游戏,笔者的一位朋友在游戏公司工作,另笔者了解了下游戏初期是如何开发的:好象电影一样,一个游戏公司会有游戏的策划部,都是一些创作剧本的人,用文字来表达游戏世界的剧情和角色等等。剧本好了就发给原画设计部,原画设计人员就开始根据剧本里对角色,怪物和世界里的城堡树木等物体的文字描述来进行原画创作。当然他们也会和剧本的编写者进行沟通,辩论,据说大多都是在吵架,呵呵!人物都画好了,就该把这些原画给3D建模部门了。开始构造画纸上的3D世界,3D建模,贴纹理,后期混合等等...用专业图形学来描述呢?就是构造顶点、几何变换(Transform)、光照(Lighting) 、设定(Setup) 、光栅化(Rasterize)...

FF10 硫库角色原画

FF10 硫库的3D角色

读懂显卡评测

游戏是令人兴奋的,在由始至终,显卡在这里扮演了主角,它造就梦幻般的3D世界。但是说到显卡,不得不涉及复杂的图形学,深奥的显卡架构,这些东西往往另读者一头雾水,别说普通读者,就是玩家和小编我们又有几个能读懂呢?这篇文章借解析ATI最期的高端显卡R580和以往显卡的架构对比,给读者灌输全新的显卡架构理念,既然是“讲”就要讲得明白,令读者读懂。解析R580为次,弄清现代显卡架构才是重点。以便读者以后能够更好的读懂显卡评测,甚至是官方的PDF。这里为了让读者看懂,本文描述了很多图形学的基础。

第2页:是各个时期的概念变化?还一时平衡的产物?完全拆解显卡中的“渲染管线”

X1900的到来,只字不提渲染管线

北京时间2006年1月24日晚22点,X1900XTX在全球正式发布,其评测文章也如雨后春笋般大量涌出。

ATI在X1900XTX的介绍中,几乎没有任何地方提及之前NV40和R520所宣传的“渲染管线”或是“渲染流水线”,而是强调“像素渲染单元”增加了三倍。达到了48个,那么渲染单元是什么呢?ALU? 渲染管线呢,还是16条?要弄清这些,首先我们需要放弃渲染管线的说法,与其说放弃不如说是拆解,原因是这个“管线”已经开始限制了我们的一些理解。

形成体系架构观:

解惑,首先我们需要在大脑中形成一个完整的显卡的内部结构框架,尤其是处理顶点之后进入像素那部分的结构框架。

R580 体系架构图

ATI给放出的R580显卡架构图,主要分为Vertex Shader Engine和Pixel Shader Engine两部分外,还有从X800开始宣传的Setup Engine。而nVIDIA放出的架构图除了上边的VS和PS之外,还引入了ROP部分,这个概念是从NV40开始宣传的。

最早的所谓"渲染管线":

记得GeForce4 TI4200吗?那时候多是这样宣传:TI4200具有2个顶点单元;4个渲染管线,每个渲染管线搭配两个贴图单元。RADEON9700呢? 多是这样宣传:9700具有4个顶点单元;8个渲染管线,每个渲染管线仅有个1贴图单元。

公式暂时这么写:  GF TI4200=2VS+4PS*2TMU

                RADEON9700=4VS+8PS*1TMU

                RADEON9000=1VS+4PS*1TMU

抛开顶点部分(Vertex Shader Engine),那个时候的PS部分是像素单元Pixel Shader Unit和纹理单元TMU是分开宣传的。而进入R9800时期一直到NV40、R520之间,就没有人更多的议论TMU部分了,为什么呢?看完了这段答案自然揭晓。我们记得这个时期对于6800Ultra的宣传是具有6个顶点单元;16条渲染管线;16个光栅化引擎ROP。

公式暂时这么认为: 6800U=6VS+16PS+16ROP

1:1:1的比例形成:

此时的“渲染管线”这个名词正式被厂商炒作。而上面公式中的16PS也就是前面的16PSU*1TMU,即16PSU;16TMU

下面进入重点,什么叫一条“像素渲染管线”?简单点说,传统的一条渲染管线是由包括Pixel Shader Unit(像素着色单元)+ TMU(纹理单元) + ROP(光栅化引擎)三部分组成的。

公式如此表达写:PS=PSU+TMU+ROP

从功能上看,PSU完成像素处理,TMU负责纹理渲染,而ROP则负责像素的最终输出...因此,一条完整的像素管线意味着在一个时钟周期完成至少进行1个PS运算,并输出一次纹理。

现在我们需要做的就是拆开像素渲染管线来看,那么NV40和R520的PS:TMU:ROP是标准的1:1:1的关系。或许就是这1:1:1的关系形成了传统的像素渲染管线的概念。

注释:

1,现在我们把PS定为Pixel Shader Engine的简写即像素渲染管线;PSU则是Pixel Shader Unit或者叫Pixel Shader Processor即管线中的像素处理器单元

2,至于为什么在TI4200,R8500这两款产品会使用PS:TMU=1:2的关系,更多是出于DirectX8.0的Pixel Shader1.0/1.1 API的帧路径并不足够的灵活,对于当时的游戏和显卡而言,更多的贴图单元,弥补了在渲染中帧路径上的缺陷。而DirectX9.0的Pixel Shader2.0很大程度的解决了这个问题。所以更多的贴图单元也就没有那么必要了。由于具体涉及了复杂的图形学和DirectX知识,所以只讨论到这里。

3,上面的PS也就是Pixel Shader Processor和TMU仍可再分,在体系架构图中也有明确的标识。按照用途我们把他们看成一个单位,即像素处理单元和纹理单元。

第3页:渲染管线的定义在改变——7800并不是传统的24条流水线!

G70,GeForce7800的24条像素渲染管线并不是传统意义的24条渲染管线。我们先来看看G70的体系架构图:

G70的体系架构 图片来源GZeasy

R580的Pixel Shader Engine部分体系架构

Quad:

从NV40开始就引入了Quad的概念,意思四方的院子,可以理解为四个组成一组。ATI称为Quad Pixel Shader Core每个包含4个完全相同的Pixel Shader Processor。而R520和G70也是大同小异。就目前来看,在今后的一段时期内这种Quad像素处理器的结构显然还会继续流行下去。

传统的管线架构比例被打破

我们在G70的架构图中不难看出,其架构为6组Pixel Shader Quad,共包含了6*4=24个像素处理器。也就是24PSU;24TMU;16ROP,这样1:1:1的比例又被打破了,变成了3:3:2。

(为什么是“又”被打破?忘了刚才的TI4200啦?!)

如果按照传统的像素管线来看,这不能称为24条管线。但是如果放弃ROP部分,仅考虑PS和TMU的话,就成为了nVIDIA所述的24条管线。实际上很多事情和说法都不是呈文的规定,谁说谁有理。比如现在nVIDIA就把24PS和24TMU合称为自己的24条渲染管线。

按照这个方式写两个公式,其中画线的部分也就是它们所宣传的部分:

                      G70=8VS+24PSU+24TMU+16ROP

                     R580=8VS+48PSU+16TMU+16ROP

                 推测 G71=8VS+32PSU+32TMU+16ROP

为何不提高ROP的数量?

恐怕有读者会问为何不线性的把ROP部分也提高到24ROP呢?这样7800就成为了毫无争议的24管。nVIDIA当然想这么做!ROP即为像素输出部分,其数量要看显存控制器的规模取向。目前4×64的话就是16ROP,显存位宽是256bit,而24ROP,就是6×64,384bit位宽。32ROP就要达到512bit的显存位宽。这对目前来说还是比较困难的。所以目前,nVIDIA和ATI都相持在了16ROP。

GF7800是真正的24条渲染管线吗?至少,这个渲染管线的定义从再次变得模糊。

现在我们应该明白为什么nVIDIA宣传自己的G70会用“多少条像素渲染管线”,而ATI的则不再以“管”来做宣传,而是48个像素处理单元了巴?!

注释:

什么是ROP(光栅化引擎)?也可以称为像素结果输出处理器 负责像素的最终输出,是像素子系统,执行像素读/写操作、z-buffer检查、色彩混合、抗锯齿操作等。

第4页:现在的显卡迫切的发展方向在何处?ATI和nVIDIA已不谋而合

说道显卡的发展方向,我们先来粗略的回顾一下3D的历史,3D加速是从何而来,它又是如何发展的?

PS SS 早期的多边形3D时代:

1994年12月上市的SONY PlayStation 以每秒38万个三角形生成能力,号称当时最强的3D游戏平台。

3D物体是由一个一个的点构成的,人们称之为顶点Vertex。大家都知道三个点确定一个平面,无数个平面就可以组成一个复杂的曲面物体了。所以最早的显卡3D能力强大与否,是由三角形的生成能力表示的。记得1995~1997年游戏杂志里常说的PLOYGON吗?是的!早期显卡3D能力的强弱,多是看三角形的生成能力。

  

1994年何SEGA 土星游戏主机同步发售的3D格斗游戏 《VR战士》

说道3D加速的三角形,需要简单引入设定Setup和光栅化Rasterize两个概念,为后文铺垫。简单的说Setup决定三角形三个点的位置,然后通过光栅化Rasterize来描绘出这个三角形以及填充三角形内部各个像素的颜色,使它变成一个有色的三角形。Setup和Rasterize也是光栅化图形学的两个重要步骤。

《DOOM3》现代的纹理,材质时代:

多边形就一个固定的颜色,光秃秃很不好看,《VR战士》就是个不错的例子。为了让这些3D人物更好看,人们觉得给这些多边形上贴上图片,来体现更多的细节,这是个好主意,这样纹理的概念出现了,纹理也就是贴在多边形上的图片。

之后,这纹理的学问就越来越复杂,这么多图片,信息的寄存问题;怎么对应的贴在相应的多边形上?如何和屏幕上的颜色混合起来?从不同的角度看,图片变形而导致的不真实问题怎么处理?等等 等等,问题虽然一大筐,但我们的3D世界确变得越来越漂亮。是的,纹理真是个麻烦的好东西!

把3D游戏引入大材质时代的代表作《DOOM3》

上图可以很容易的看出,纹理和材质所带来的视觉效果是翻天复地的。渐渐的,当图形卡的顶点处理能力到达一定程度的时候,业界一致认为以像素和纹理的重要性要超越顶点了。从这个时候,nVIDIA和ATI也早已开始对自己GPU在Pixel Shader Engine方面进行重点加强。一直以来,他们的宣传也都是以PSE为重心的。

“超”线性增长的像素处理

上面得知,光栅化图形学是以运算为基础的,而处理的单位就是像素。光栅化的过程如果看作是n个相关像素运算,那么每个像素会在现今的游戏中会不止一次的被计算吗?答案是肯定的,举个常用的例子:在游戏中像素被光栅化并输出,但如果打开AA,那么会有像素要被重新采样,计算,设定。那么这个像素在一个周期里就被几次运算了,但只做了一次贴图。在如今各式各样的Shader运算上,ATI认为像素处理的重要性已经高过了TMU部分,它们可以不在1:1的线性增长了,于是R580诞生了......

实际上nVIDIA,的G70 24PSU+24TMU和即将发布的G71 32PSU+32TMU来看,nVIDIA同样把重点放在了PSU和TMU部分,显然,nVIDIA认为线性的增加他们两者的比例也很重要。放开这不同所带来的争议,增强PSU的数量,也就是增强像素处理器的运算能力已经是nVIDIA和ATI所达成的共识。

不同的仅是以1:1的比例线性的增强的PSU和TMU,还是在保持TMU不变的情况下,成倍的增加像素处理器的数量。但不可否认,PSU的作用已经超过了TMU。

看一些ATI PDF中发布的研究结果:

根据ATI的研究,在2001年刚刚出现具备像素着色器的显示卡时,当时游戏的像素着色器程序中算术指令和纹理指令数量的比例在1:1左右,之后,算术指令的数量呈显著增加之势。在2005年,游戏中每个像素的平均着色器程序指令数目是30条,算术指令和纹理指令数量平均比率达到了5:1,也就是说现在的像素着色器程序中,平均每5条算术指令才会出现一条贴图指令,而这样的算术指令数量急剧增长趋势仍将继续保持下去。

注释:

材质:经过光照,混合屏幕上原有的颜色,等一系列处理的纹理

早期的纹理尺寸仅有128×128像素或更小,而在《DOOM3》为例的游戏中,纹理逐渐发展到了1024×1024甚至更大


第5页:深入探究,再度挖掘X1900相对于X1800的架构改进

如果觉得R580 PS=48PSU+16TMU+16ROP概念还是有点模糊,那么带着上文观点,再来看看R580和R520的架构图,这里仅论述PSU和TMU部分,ROP暂不讨论。

R520和R580的架构:

R520

现在规类,R520 PSU部分包含Ultra-Threading Dispatch Processor(极多线程分发处理器)和4个Quad Pixel Shader Core;TMU部分相关包括有Texture address Units和Texture Units。其中4个Quad Pixel Shader Core共计16个Pixel Shader Unit。再来看R580:

R580

ATI的R580架构图细化了很多,我们看见的是成大量增长的Quad Pixel Shader Core,达到了12个,共计48个Pixel Shader Unit。随之还线性增加了General Purpose Register Arrays,可以看作是Pixel Shader Unit计算之后的寄存器队列。而TMU部分部分显然没有什么变化。

R580 48个PSU即96个ALU

经过ATI给予R520和R580 PDF的对比,他们的Pixel Shader Unit没有什么架构上的变化,每个PSU包含ALU1和ALU2两个数学运算器和一个分支执行单元。两个ALU分别用于加法,乘法和承加等运算,分别处理不同的向量和标量。其中全功能的成为Main ALU,而只能运行加法的称为Mini ALU。既然一个PSU包含两个ALU,那么R850的PS部分,一共有96个ALU!而并非笔者早先的48ALU的错误观点。

现在您应该已经经脉打通,了解这第7代,不,第8代?图形卡是怎么一回事了巴?!

注释:

Ultra-Threading Dispatch Processor(极多线程分发处理器):在功能上这些处理器组和内部ALU都由ATI X1000系列刚刚引入的Ultra-Threading Dispatch Processor来进行任务分配,他会智能寻找时机重新分配任务给不同的ALUs。以保证每个ALUs都能满负荷的进行工作,并提高效率。

第6页:简述本文的四个观点,不同的发展方向由未来的3D游戏来检验

最后用几句话来论述本文的观点:

1,渲染流水线或者渲染管线定义从来都是模糊的,不同时期的它们都不曾相同,或许只是厂商的宣传手段,为了让我们更清楚的理解显卡架构,现在是应该放弃这个“管”的时候了。

2,ATI推出的X1900系列显卡,3倍增强了目前显卡中VS/PSU/TMU/ROP四大架构中最急需增强的像素处理器PSU部分,打破了传统比例,是对未来游戏的展望。改进也是革命性的。

3,现阶段,Ultra-Threading Dispatch Processor;48个PSU带来的超前像素运算能力;16FP HDR+AA ;AVIVO VIDEO ;Hierarchical Z的改进和Fetch-4等相对的技术优势,给予了X1900XTX高效而强大的王者地位。

4,G71的32PSU 32TMU和R580的48PSU 16TMU诠释了线性和非线性的PS架构发展方向,到底谁主沉浮,还需要用未来的游戏来检验!