首页 > 科技 > NVIDIA ATI显卡发展史-2000年-2002年

NVIDIA ATI显卡发展史-2000年-2002年

在看过 3dfx 短短不到五年却充满起起伏伏的历史之后,接下来我们要回头看同一时间正在快速壮大势力的 ATI 与 NVIDIA 所推出的产品,2000 年是一个在个人计算机世界里极为重要的年份,除了是计算机问世以来的首个「千禧年」,人们突然意识到当年设计程序时没把 2000 年后的世界考虑进去,在标示年份时只用了二位数字,导致很有可能发生 1900 年与 2000 年在纪录上分不清楚的大问题 (不过其实最后证实还好,毕竟计算机也没那么早被发明出来) 之外,更重要的是这一年内有了很多突破性的发展,显示芯片也不例外。

2000:硬件 T&L 时代

· 重点 API:DirectX 7.0、OpenGL 1.3

在 2000 年我们迎来了个人计算机用 3D 图形芯片的第一次架构大改版,最主要的特性就是在显示芯片中加入了硬件 T&L 机能,如同上一篇我们谈过的,这也是最终导致 3dfx 被彻底淘汰的主要决定因素之一。

硬件 T&L 是什么?

相信看到这里大家最想问的问题大概就是这个了吧?实际上硬件 T&L 中的 T&L 是 Transform & Lighting 的缩写,包含了坐标转换与光源处理两个主要部分,在 3D 图形绘制的过程中这两大部分是极为关键的,坐标转换决定了视角旋转之后各多边形的位置、形状 (基本上是由大量的矩阵运算构成),而光源处理则影响了之后整个物体上所打的光线与背后阴影的分布、形状等。

之所以我们在这里特别强调「硬件」T&L,其实是指显示芯片内建「T&L 硬件加速支持」的意思,在早期 T&L 操作是由中央处理器负责的,这意味着显示芯片需要受制于处理器的成分较高,需要依赖处理器运算 T&L 信息之后下达指令给显示芯片,显示芯片才能开始处理像素着色、多边形生成、材质贴图等复杂的 3D 图形产生过程,这意味着会发生下面这堆问题:

· 本来就已经很吃紧的处理器还得分神处理大量的 T&L 运算,拖慢其他重要计算的速度

· 显示芯片比起运算来说更多时间其实花在等待处理器计算 T&L 上

· 处理器与显示芯片之间的数据传输速率并不够快

要解决这些问题的方式其实很直觉 (不过并不简单),从 2000 年开始 NVIDIA、ATI 与 S3 等公司就开始在自家的显示芯片当中整合了专属的 T&L 运算单元,从此显示适配器可以独力完成绝大多数的操作,不再需要那么大程度的受制于 CPU,也解决了性能受限于 CPU 的问题,这就是我们说的「硬件 T&L」。

NVIDIA GeForce256 (NV10)

发布时间:1999 年 10 月 (SDR)、2000 年 02 月 (DDR)API 支援:Direct3D 7.0 与 OpenGL 1.3像素管线:4 条/材质对应单元 (TMUs):4 组/着色输出单元 (ROUs):4 组

诞生于 1999 年的 GeForce256 是 NVIDIA 第一款以 GeForce 为名的产品,同时也是历史上第一款能够完整支持 Direct3D 7.0 API 的显示芯片,尽管仍然是以前作 RIVA TNT2 为基础修改而来,但在架构上还是有着不小的差别 (所以代号并没有接续前作的 NV5、NV6,而是直接跳到 NV10 了)。

首先,GeForce256 内建的像素管线数量一举比 RIVA TNT2 又增加了一倍 (从两条增加到四条),在理论像素填充率、理论材质填充率方面比起 RIVA TNT2 Ultra 来说提升了 60% 左右,并加入了一组用于提升影片拨放质量的动态补偿单元,除此之外,最重要的改进当然就是刚刚提到过的硬件 T&L 支持。

而 GeForce256 也让 NVIDIA 成功摆脱了「只重视速度而不重视画质」的标签,透过支持 Cube Environment Mapping (方形环境映像,本来这项技术只在 Matrox 的产品上看得到),GeForce256 可以更妥善地处理各种会反射的表面 (像是水、金属之类的物体表面),而不再需要靠各种折衷方案来「仿真」反射表面的样式 (以往的显示芯片是以球体空间的方式来处理反射面,不过只有在特定角度时才能够直接产出高质量的反射表面,其他情况大多得用模拟的,不幸的是,基本上不管怎么模拟看起来还是不够真实)。

不过在商业上 GeForce256 并没有想象中的成功,尽管透过刚刚提到的这些特性,确实是成功让 GeForce256 成为当时数一数二先进的显示芯片了没错,但由于 1999 年底到 2000 年初市场上支持硬件 T&L 的显示芯片还很少,自然能够搭配这些新特性的游戏软件也不会太多 (甚至当时还有些人主张硬件 T&L 无用论,不过后来真的不搞硬件 T&L 的厂商都化为灰烬了呢),因此 GeForce256 在大多数情况下并没有办法很好的发挥其所具备的性能,加上其昂贵的价格、早期驱动程序有许多兼容性问题未解与初代硬件 T&L 在性能上的不足 (当时的顶级 CPU 是可以追过 GeForce256 的),所以在市场上并没有得到太大的亲睐 (不过整体来说成绩也不算难看就是了),硬件 T&L 芯片的大行其市基本上要等到下一代的平民级芯片 GeForce2 MX 诞生才会开始。

不过尽管此时加入硬件 T&L 的功能带来的效益还不明显,但却给 NVIDIA 创造了许多「附加价值」,首先,透过整合了硬件 T&L 单元,NVIDIA 终于得以跨足进入计算机辅助设计 (CAD) 领域了,透过发行特别版本的驱动程序,NVIDIA 得以将同样的 NV10 芯片另外制作成 Quadro 专业绘图卡,抢攻 CAD 领域的商机,除此之外,得益于硬件 T&L 支持,即便在 GeForce2 推出之后,GeForce256 仍然得以作为公司的入门产品生存好一阵子而不被停产。

另一件值得注意的事情是,GeForce256 是 NVIDIA 第一次以「GPU (Graphics Processing Unit)」来称呼自家的图形芯片,这个由 NVIDIA 首创的名词某种程度上是想透过相似的命名来拉高图形芯片在个人计算机当中的重要性 (目标是与 CPU 齐名),而在 NVIDIA 强大的营销与推广之下,现在我们也很习惯以 GPU 称呼各种图形芯片了 (在接下来的文章当中也会改用 GPU 一词)。

最后要提的是 GeForce256 并未采用类似 RIVA TNT2 那种高中低阶分别推出产品的模式,而是只有分成两个版本,依照采用的内存为双倍数据传输率 DDR SDRAM (GeForce256 是第一款使用这种内存的图形芯片) 或一般 SDRAM/SGRAM 的不同可分为 SDR 与 DDR 两个版本 (一般而言容量为 32 MB),不过在内存带宽方面,即便是 DDR 版本仍然是严重不足的。

ATI Radeon R100 (7000 系列)

发布时间:2000 年 04 月 (DDR)、2000 年 06 月 (SDR)API 支援:Direct3D 7.0 与 OpenGL 1.3像素管线:2 条/材质对应单元 (TMUs):6 组/着色输出单元 (ROUs):2 组

还记得我们在前几篇曾经谈过由 Rage Pro 一脉相承演化而来的 Rage 128 家族吗?家族内的最后一款产品 Rage Fury MAXX 近乎疯狂的在单张显示适配器中塞入了两颗 Rage 128 Pro,但最终这款有着「曙光女神」如此响亮名号搭配充分体现「大舰巨炮主义」豪迈设计的特别产品,由于严重的兼容性问题与性能不彰的配合模式,加上并不支持硬件 T&L 而最终落得惨败于 GeForce256 脚下的下场,因此 2000 年的 ATI 的核心主题其实很简单,就是希望能够一雪前耻而已。

整体来说其实 Radeon R100 与 Rage 128 Pro 之间的关系和 GeForce256 与 TNT2 之间的关系很类似,同样是基于上代作品进行的大幅度改版,同样强调加入了对硬件 T&L 的支持 (ATI 将其称为 Charisma Engine),其实从原先 Radeon R100 最早的开发代号是 Rage 6C 这点来看,应该就可以很明显知道它与前作的血缘关系了。

在像素管线的安排上,Radeon R100 与前作和竞争对手 GeForce256 与 GeForce2 有着很大的不同,Radeon R100 的像素管线依然维持在 2 条,但每条像素管线包含的纹理对应单元则一口气从一组增加到三组以支持三重纹理贴图技术 (不过不幸的是使用三重纹理贴图技术的游戏并不多,因此即便 Radeon R100 在理论性能上可以超越竞争对手,但在实际游戏的过程当中,NVIDIA 产品的表现却往往较佳)。

但由于 ATI 开发的 T&L 运算单元性能相当不错,加上具备特有的 HyperZ 内存带宽节省技术 (这是 GeForce256、GeForce2 等系列最大的问题与弱点),因此 Radeon R100 除了对付主要竞争对手 NVIDIA 的上一代产品-GeForce256 之外,对付同期推出的 GeForce2 甚至是 GeForce3 也能维持着互有胜负的局面,最终成为 ATI 历史上相当长寿的一代产品,并且得以一路延续到 2002 年才彻底失去市场地位。

最后要提的是 Radeon R100 的版本区分与命名,由于历经了不少次更名、重新编排系列编成因此显得有点混乱,大致上有这些不同的版本先后出现:

· ATI Radeon DDR (2000 年 04 月)基于 R100 核心、搭配 DDR SGRAM/SDRAM 内存,是最早的版本。后来被更名为 ATI Radeon 7200 (DDR)亦有以 ATI Radeon 7500 VIVO 为名发售者。显示核心频率 166 MHz/内存芯片频率 166 MHz DDR (32 MB 内存)显示核心频率 183 MHz/内存芯片频率 183 MHz DDR (64 MB 内存)

· ATI Radeon SDR (2000 年 06 月)基于 R100 核心、搭配 SDR SGRAM/SDRAM 内存。后来被更名为 ATI Radeon 7200 (DDR)显示核心频率 166 MHz/内存芯片频率 166 MHz DDR (32 MB 内存)

· ATI Radeon VE (2001 年 02 月)基于 RV100 核心,以 R100 核心为基础砍掉其中一条像素管线并且拿掉硬件 T&L 支持与 HyperZ 内存带宽优化技术,但却加入了支持双屏幕的 HydraVision 技术与第二组 RAMDAC后来被更名为 ATI Radeon 7000显示核心频率 183 MHz/内存芯片频率 183 MHz DDR

· ATI Radeon 7500 (2001 年 08 月)基于 RV200 核心,以 R100 为基础将制造工艺由 180 奈米提升到 150 奈米并提高运作频率并允许内存芯片频率与显示核心脱钩的版本,并加入了支持双屏幕的 HydraVision 技术,与下一代的 Radeon 8000 系列大约同期发表,但得益于频率提升,在 GeForce2 Ti 与 GeForce3 面前仍然有一定的竞争力,直到 GeForce 4 MX 问世才丧失舞台。显示核心频率 290 MHz/内存芯片频率 230 MHz DDR

· NVIDIA GeForce2 (NV15、NV11、NV16/NV15BR)

· 发布时间:2000 年 04 月 (NV15)、2000 年 06 月 (NV11)、2000 年 08 月 (NV16)API 支援:Direct3D 7.0 与 OpenGL 1.3像素管线:4 条/材质对应单元 (TMUs):8 组/着色输出单元 (ROUs):4 组 (NV15/NV16)像素管线:2 条/材质对应单元 (TMUs):4 组/着色输出单元 (ROUs):2 组 (NV11)

·

· 当 ATI 蠢蠢欲动准备靠着 Radeon 抬头时,NVIDIA 也没有停下脚步,在差不多与 Radeon R100 相同的时间点推出了 NVIDIA 历来最具代表性、最为长青的一代产品-GeForce2。

·

· 在 GeForce2 这一世代当中,NVIDIA 重启了过去在 TNT2 时期曾经尝试过的一口气使用同代架构推出不同市场产品以扩张市占率的做法 (毕竟在 GeForce256 世代虽然没有推出对应的低阶产品,但很自然而然的老款 TNT2 就自动补上了这个位置,证实确实是有这个市场需求存在的),因此 GeForce2 主要可分为面向中高阶市场的 GTS 系列与面向入门市场的 MX 系列 (虽然上图当中还有 TNT2 作为最入门,但实际上由于 MX 系列表现得太好,到最后低阶市场也几乎被 MX 系列吃光了)。

·

· 首先看到的是主掌中高阶市场的 GeForce2 GTS 家族,GTS 实际上是 GigaTexture Shader 的意思,顾名思义在 GeForce2 GTS 这一世代 NVIDIA 成功让旗下的 GPU 突破理论像素填充率高于每秒 10 亿像素的关卡,之所以可以达到这一目标,主要是得益于 GeForce2 GTS 使用的 NV15 核心将每条像素管线包含的材质对应单元 (TMU) 增加为两组 (意味着总共有八组 TMUs 可用) 与频率大幅提升 (高达 200 MHz,主要得益于制造工艺由 220 奈米提高到 180 奈米) 而来。

· 而除了前面提的这些改进之外,GeForce2 GTS 主要的改进还有三点,分别是性能提升的第二代硬件 T&L 技术、内建用于处理高画质影片的处理单元 (HDVP) 与被称之为 NVIDIA 描影图形预定器 (Shading Rasterizer, NSR) 的像素管线设计,这可以说是未来将成为主流的可程序化像素着色器的简化前身 (此项技术的前身其实也在 GeForce256 当中出现,但并未获得任何宣传),不过并未解决 GeForce256 架构当中最大的问题-内存带宽不足。

·

· 在 GeForce2 GTS (频率设定为 200/332) 上市过后的几个月内 NVIDIA 又陆续为其推出了数个改版,包含 2000 年 08 月推出的 GeForce2 Ultra (频率拉高到 250/460)、2000 年 12 月推出的 GeForce2 Pro (频率为 200/400)、来年十月推出的 GeForce2 Ti (频率设定为 250/400,主要用于填补 GeForce3 与 GeForce2 MX 之间的市场空隙) 三款。

·

· 至于面向中低阶市场的 GeForce2 MX 家族则是基于 NV11 核心,虽然表面上型号比较接近 GeForce256 的 NV10,但实际上 NV11 其实是 NV15 的阉割版本,主要的差异是原本的两条像素管线被砍掉了一半与本来就不够用的内存带宽再次被阉掉一半,其他特性则基本相同,比较奇怪的是 GeForce2 GTS 缺乏的双屏幕支持反而有包含在 GeForce2 MX 中 (不知为何当年显示适配器厂商好像觉得只有用低阶显示适配器的人才会搞双屏幕,可能是认为双屏幕是商务用途吧?)。

·

· GeForce2 MX 家族可以说是 NVIDIA 历来最为成功的系列之一,一方面当时的主要竞争对手 3dfx 没能端出足够便宜又能抵挡 GeForce2 MX 功能的产品,而 ATI 的 Radeon VE 虽然在双屏幕支持度上比 GeForce2 MX 更好,但性能表现太差且不支持硬件 T&L、Radeon SDR 又太贵而且不支持双屏幕输出,于是 GeForce2 MX 在市场上可以说几乎是没有对手,而另一方面当时又有大量的 OEM 厂商基于低价与可接受的性能而选择搭载 GeForce2 MX 显示适配器。 (笔者我的第一台计算机就是搭配 GeForce2 MX 的品牌机)

·

· GeForce2 MX 家族除了一开始在 2000 年 06 月推出的无印版 (频率设定为 175/166) 之外,在来年三月为了填补 GeForce3 系列没有低阶入门版而产生的市场空隙,推出了名为 MX200 (频率设定同样为 175/166,但内存带宽阉掉一半,只剩下 64 bit) 的入门款与名为 MX400 (频率小幅提升为 200/166,可以选择是否搭载 DDR 内存,但在搭载 DDR 内存时内存带宽要阉掉一半) 的进阶版本两者。

· 在 2000 年我们说个人计算机图形界最大的变革是将原本由 CPU 负责的 T&L 运算移交给 GPU,随着时间即将进入 2001 年,下一场革命也已经在酝酿当中,基本上 2000 与 2001 年应该是 GPU 架构变动最剧烈也最为密集的两年。

· 2001:可程序化管线架构

·

· 由于 DirectX 从 6.0 版本开始在市场上占有重要地位,从 7.0 版本开始与 OpenGL 成为市场上唯二的主流 (GLIDE 已经躺在旁边半死不活了),但 OpenGL 直到 2003 年之前其实都没有引入太大的变革,因此 2001 年 GPU 架构上出现的革新基本上几乎可以说是与 DirectX 8.0 的发展切齐的,所以接下来我要先稍微介绍一下 DirectX 8.0 引入的新特色。

· 发展方向的转变

· 在 2001 年以前,基本上 GPU 的发展目标非常明确,除了增加每秒能生成的多边形数量之外,就是尽可能在同样时间内处理更多、更复杂的材质贴图,在 3D 图形的初期来说,这样的做法绝对是正确的,毕竟构成图形用的多边形不够多,立体图形就会显得粗糙;材质贴图不够复杂、丰富,立体图形的表面看起来就不真实,在这样的思维底下,为了追求速度与避免过于复杂的架构设计,当时的显示芯片中的各个单元的功能是「固定」的,只能根据芯片上设计好的模式 (State) 来运作,每个步骤要做哪些事情都是固定的,并不能随着场合不同而有所变动,称之为固定功能管线 (Fixed Function Pipeline)。

·

· 举例来说,一笔数据进入 GPU 之后,首先要进行顶点处理、T&L 运算、多边形生成、视角运算、材质贴图等过程,如同大量生产的生产线一般,每个像素需要经过的工序都完全相同,不能因用途不同而运用软件方面的手段给予差别待遇。

· 固定功能管线的困境

· 但是在面对更加复杂 (却也更加现实) 的 3D 画面时,旧有的思维显然是不敷使用的,举例来说,在大自然的景象当中经常出现的水面波纹,若用原有的思维来处理,显然得把整个画面拆成 N 多倍数个的多边形与 N 多倍复杂的贴图来处理,但这样肯定是不合效益也不切实际的吧?在这种时候,如果可以让这些功能能够依据实际状况来随机应变,那不是很好吗?于是人们开始思考,要怎么样让 GPU 内的各个部分「更有弹性」一些。

· 首先要思考的问题是,要达到这个目的我们该从硬件着手还是软件着手呢?如果从硬件着手,那显然我们得在硬件上老老实实地把各种不同功能的电路通通塞进去,但这显然会造成电路复杂度无量上升,连带导致芯片的设计、生产成本也一飞冲天,所以这条路显然行不通。

· 既然从硬件硬上的手段行不通,显然我们得加上软件的协助。于是我们得回到整个计算机的架构开始重新思考,显然在计算机当中与 GPU 在设计上最为接近,又能根据软件交办的事项随时随机应变处理各种运算的代表就只有 CPU 了,那么我们如果像设计 CPU 那样,把显示芯片上负责「某些功能」的「某些部分电路」改成「支持某些功能」的「处理器」,是不是就能达到我们要的目的了呢?

· Shader Model 的诞生

· 于是为了达到刚刚所说的目的,微软在 DirectX 8.0 当中首次引入了被称为「Shader Model」的概念,而在 DirectX 8.0 当中,Shader Model 主要又可以分为 Vertex Shader (顶点渲染器) 与 Pixel Shader (像素渲染器) 两种。

·

· 单从字面上来看可能不是很容易了解这两种渲染器到底有甚么功能,所以我们要再次回到刚刚看过的固定功能管在线,以往像素数据进入 GPU 时,要先经过 GPU 内「硬件 T&L」运算电路的处理,而 Vertex Shader 实际上就是用来取代原本在 2000 年刚刚加入 GPU 内不久的硬件 T&L 电路用的,本质上如同前面所说,可以想象成一种「主要指令集由各种 T&L 相关功能组成」的「小型处理器」,于是软件工程师就可以透过编写软件的方式来达到一定程度上弹性调整、改变 T&L 功能的效果了。

·

· 至于 Pixel Shader 的部分其实也是基于差不多的想法发展出来的,主要是用于取代原本负责将材质贴图与像素融合这道工序的电路之用,在经过这样的变革之后,软件工程师能够发挥的地方一下子多了很多,因此在 DirectX 8.0 开始游戏的画面质量可以说是有了飞跃性的成长 (尽管第一版的 Shader Model 还很阳春,而且只能用低级语言控制),接下来基本上每次 DirectX 的改版都多多少少会对 Shader Model 做一点更新,例如根据软件工程师的需要来增加这些 Shader 所能支持的指令之类的,最后,由于从这个时期开始,软件工程师可以透过程序来控制甚至改变 Shader 的功能或表现,因此被称之为「可程序化管线」(Programmable Pipeline)。

· NVIDIA GeForce3 (NV20)

· 发布时间:2001 年 03 月API 支援:Direct3D 8.0、OpenGL 1.2Shader Model 版本:Vertex Shader 1.1, Pixel Shader 1.1像素渲染器 (PS):4 组/顶点渲染器 (VS):1 组/材质对应单元 (TMUs):8 组/着色输出单元 (ROUs):4 组

·

· NVIDIA 在 2001 年初推出的 GeForce3 是世界上第一款配合 DirectX 8.0 规范而推出的产品,基本上是从上一代的 GeForce2 修改而来,同样是采用 4 条像素管线、8 组 TMU 与 4 组 ROU 的配置,但如同其代号又再次从 NV15 跳到 NV20 所显示的,在架构上 GeForce3 的变动其实很多。

·

· 相较于上代产品来说,GeForce3 最主要的改进有三个地方,首先要提的是被 NVIDIA 官方称之为 nFinite FX Engine 的技术,实际上 nFiniteFX Engine (有不少人怀疑这名字是不是与 3dfx 有关,毕竟 NVIDIA 刚在几个月前收购了 3dfx 的所有技术,不过我个人认为应该只是名字用到而已,毕竟距离收购案宣布只过了三个月而已) 就是我们刚刚花费不少篇幅探讨的 Shader Model,这是 GeForce3 与前作之间最大的不同。

· 但 nFiniteFX Engine 的引入实际上并没有让 GeForce3 成为一代成功的 GPU,一方面因为初期能够得益于这项技术的游戏软件并不多 (跟 GeForce256 第一次加入硬件 T&L 时的状况很像),另一方面是因为牵涉到架构方面的大幅改变与重新设计,这很大程度影响了 GeForce3 的实际表现与生产良率 (这又直接影响了生产成本,并且进一步牵动了价格)。

·

· 第二个不同则是在内存带宽的利用机制上,GeForce3 引入了被称之为光速内存架构的 Lightspeed Memory Architecture (LMA) 技术,有效解决了过去 GeForce256 与 GeForce2 最大的弱点-内存带宽不足,某种程度上你可以把它当成 NVIDIA 家的 HyperZ 技术来看 (尽管实作的方式并不完全相同,但目的与结果是相似的,也用到了一些类似的东西,像是 Z-Buffer 压缩技术之类的)

·

· 而最后一项不同则比较没有前两项那么来得重要,GeForce3 的反锯齿能力相较于前几代 GeForce 来说有了明显的提升,NVIDIA 将这项技术称为「高分辨率反锯齿 (HRAA)」,具体上来说是运用一种称为「Quincunx」的特殊算法 (抓两条对角线组成一个梅花点的形状) 来执行多重取样反锯齿 (MSAA),由于需要的取样点比起以往使用超取样反锯齿 (SSAA) 时来得少,所以在速度上比起 SSAA 来得快上许多,但是在效果上又与过去使用的反锯齿相差无几 (理论上 2x Quincunx MSAA 差不多就能有 4x SSAA 等级的效果)。

·

· 至于在系列编成的部分呢,相较于 GeForce2 由 GTS 与 MX 两大家族分别负责高、低阶市场的作法而言,GeForce3 的家族组成显得单薄许多,受到第一次导入可程序化管线设计但技术还不够成熟的影响,最原始的 GeForce3 (2001 年 02 月推出) 由于在绘图管线配置上与 GeForce2 GTS 很相近 (有着几乎相同的理论像素填充率),因此在性能测试中没办法占到太多便宜 (甚至由于频率较低,很多时候还会反过来输给 GeForce2 Ultra),基本上可以视为具备可程序化管线设计的 GeForce2 GTS,但由于价格高昂许多却没能带来太多性能提升,因此在市场上并未获得太多亲睐,可以算是典型的「付出很多心力却没甚么收获」的案例 (下图当中绿色的部分就是 GeForce3 有大改变的部分)。

·

· 这样的尴尬情况大约要等到 2001 年 10 月 NVIDIA 重新规划 GeForce 家族,以 GeForce Ti 为名将整个家族的阶级分别整个砍掉重练才有所好转,新的 GeForce Ti 家族包含针对顶级市场推出的 GeForce3 Ti 500、对应中高阶市场的 GeForce3 Ti 200 与目标为低阶入门市场的 GeForce2 Ti (比 GeForce2 Ultra 还要略差一点的型号,处理能力大致相同,但内存带宽降到 GeForce2 Pro 等级) 三种 (在这个时期里 Ti 是「最高 CP 值」的象征,并不是如同目前 GeForce GTX980 Ti 中的 Ti 代表「强化高级版本」的意思)。

·

· 面向顶级市场的 GeForce3 Ti 500 实际上是 GeForce3 的频率提升版本,运作频率从原本的 200/460 MHz 大幅提高到 240/500 MHz,直到这之后 GeForce3 的性能表现才真正具有竞争力 (毕竟是当家旗舰,新科旗舰居然打不过上代王牌说真的很难看),至于面向主流市场的 GeForce3 Ti 200 则是「GeForce3 的降频版本」,价格上比 GeForce3 还要略低,但是性能基本上经常输给 GeForce2 Ultra,甚至在对上 GeForce2 Ti 时也是如此,并没有太大的可看性,设计这款型号的主要目的大概只是为了加快可程序化管线与 DirectX 8.0 的普及吧?

· 至于为什么 NVIDIA 不比照 GeForce2 时代的做法推出 GeForce3 MX 来担当主流与入门市场的主角呢,其实不是「不想」,是技术上还「做不到」,当年由于 GeForce3 第一次导入许多全新的架构设计,因此在良率上的表现一直都不够理想,反映在成本上之后自然导致 NVIDIA 实际上很难以足够低的成本来设计出低阶入门版本的 GeForce3 MX,毕竟赔钱的生意没人肯做的。

ATI Radeon R200 (8000 系列、9000 系列低阶版)

发布时间:2001 年 08 月 (R200)、2002 年 08 月 (RV250)、2003 年 04 月 (RV280)API 支援:Direct3D 8.1、OpenGL 1.4Shader Model 版本:Vertex Shader 1.1, Pixel Shader 1.4像素渲染器 (PS):4 组/顶点渲染器 (VS):1 组/材质对应单元 (TMUs):8 组/着色输出单元 (ROUs):2 组 (R200)像素渲染器 (PS):4 组/顶点渲染器 (VS):1 组/材质对应单元 (TMUs):4 组/着色输出单元 (ROUs):1 组 (RV250、RV280)

进入 21 世纪的 GPU 产业早已与 20 世纪末大有不同,随着 OpenGL 与 DirectX 的兴起主宰了整个个人计算机 3D 图形的天下,GPU 开发已经不必像过去那样瞎子摸象般的寻找未来趋势并担心一跟不上、一给对手可乘之机可能就会被其他竞争对手给取代的问题,最基本的发展方向是很清楚的,跟着 API 走基本上不会有太大的问题 (而设计 API 的微软与 OpenGL 组织实际上也会与 GPU 厂商互动来发展更强大的 API)。

因此在 NVIDIA 推出 GeForce3 进入 DirectX 8 与可编成化管线的时代时,ATI 当然也不可能不跟随时代的脚步走上相同的道路,不过这次 ATI 不抢快的策略倒是押对宝了,因为在 DirectX 8.0 规范推出后没几个月,微软就发布了 DirectX 8.1 作为 DirectX 8.0 的补充 (主要是 Shader Model 方面的改进,可以支持的规格参数更高也更有弹性),于是 GeForce3 上市没多久就面临了「不支持最新版 DirectX」的窘境,这某种程度上导致了 GeForce3 终究只能做为过渡产品的命运。

尽管晚了几个月,但是 Radeon R200 在 2001 年 08 月得以「全球第一款完整支持 DirectX 8.1 的 GPU」称号风光上市,对于 ATI 的市占与评价提升有着一定的作用,而且最值得纪念的是-这是有史以来第一次 ATI 的 GPU 产品在功能方面得以超越 NVIDIA 当下的旗舰。

首先从架构看起,还记得之前我们谈到 Radeon R100 系列的时候有特别提到 Radeon R100 的像素管线配置 (Charisma Engine) 很特别吗?当时为了支持三重纹理贴图所以 ATI 给每条像素管线设计了三组纹理对应单元 (TMUs),但实际上绝大多数程序都只能活用双重纹理贴图因此多出来的那组 TMU 其实往往没甚么事情可做,因此造成了 Radeon R100 理论性能高于 GeForce2,但却没办法反映在实际使用中的问题。而 Radeon R200 就没有这个问题了,ATI 不再坚持三重纹理贴图技术,每组像素渲染管线 (Charisma Engine II) 都只设计了两组 TMUs 可供使用,而多出来的空间则是用来将像素渲染管线的总数一口气加倍增加到了四组。

受到架构更加贴近实际需求,得以大幅提升 TMU 资源的使用效率,而且像素管线的组数大有成长的因素影响之下,Radeon R200 相较于 R100 来说在性能上有了非常大的成长 (特别是与 GeForce3 的「不长进」两相对照之下感觉更明显)。

除此之外 Radeon R200 也首次加入了 ATI 自行研制的曲面细分硬件加速引擎-TruForm (如下图与上方影片,不过由于使用上相当依赖开发者编写程序时的方法,而且只在一些特定的状况下有好的效果,因此采用率并不高,在后续产品中就见不到这个硬件加速单元了,改为使用软件支持的方式呈现,直到 2007 年的 Radeon HD 2000 系列才又加入类似功能的硬件加速单元)。

不过尽管硬件上 Radeon R200 大致上解决了 Radeon R100 中有的问题,并且追上 NVIDIA 进入了可程序化管线世代,甚至在功能性方面超越了 NVIDIA (特别是 Pixel Shader 1.4 的支持),但这款产品最大的败笔就是驱动程序,上市初期的驱动程序甚至几乎没办法正常进行游戏,玩家光是看错误讯息与各种各式各样的破图、异常效果就饱了,这样拙劣的驱动程序根本无法完整发挥 Radeon R200 芯片的实际能力 (特别是反锯齿的部分,ATI 似乎根本没写完驱动程序就赶着让 Radeon 8500 上市了,当时的驱动程序只能在 Direct3D 模式下提供反锯齿功能,而且速度慢到非常惊人的地步)。

看过架构上的简单介绍之后,接下来我们回到产品本身来看,Radeon R200 芯片先后有三个衍伸型,分别是最原始的 R200 与针对中低阶市场推出的 RV250、在 R300 系列推出之后用来担当入门级产品的 RV280 三种,尽管 ATI 曾经试图发展以 R200 为基础的强化版本 R250 (可能会称为 8500 XT,预计的频率配置高达 300/600 MHz),并希望能将 R250 用来对抗 NVIDIA 的新科旗舰 GeForce4 Ti,但或许是看到了 3dfx Rampage 的前车之鉴吧?最后 ATI 选择放弃 R250 计划直接进攻下一世代的 R300。

R200 后来以 Radeon 8500 的名义发售 (频率设定为 275/550 MHz),之后来年二月又推出了降频版本称之为 Radeon 8500 LE (降频至 250/500 MHz),而在 R300 系列推出之后 Radeon 8500 LE 又被改名为 Radeon 9100 发售,这与 NVIDIA GeForce Ti 应该是 NVIDIA 与 ATI 一直以来帮老 GPU 改名旧瓶装新酒重新上架恶习的开端。

至于 RV250 则是在 2002 年 08 月 (在 R300 推出前一两个月时) 针对中低阶市场推出的版本,砍掉了一组顶点渲染器与一半的像素对应单元、拿掉了 TruForm 硬件加速单元,并以 Radeon 9000 (频率设定为 200/500 MHz) 与 Radeon 9000 Pro (频率设定为 275/550 MHz) 的名义发售,作为 Radeon 9000 系列的最入门产品。

最后要提的则是 RV280,这款产品与 RV250 很接近,唯一的差别为 RV280 加入了对 AGP 8x 的支持,除此之外几乎一模一样,定位与性能还是比 R200 低,但最后却用了 Radeon 9200 (频率设定为 250/400 MHz)、Radeon 9200 SE (频率设定为 200/333 MHz,而且内存带宽砍半) 的名义发售,这在当时应该是有史以来整个显示芯片发展史当中命名最乱的一次 (ATI 官方后来号称 7000 系列是只支持 DirectX 7.0 API、8000 系列是能支持 DirectX 8.1 API、9000 系列则是能够支持 DirectX 9.0 API 的意思,不过 Radeon 9200 等基于 R200 系的产品显然是不能支持 DirectX 9.0 的)。

基于 R200 芯片架构的最后一款产品则是 2004 年 07 月推出的 Radeon 9250,虽然型号看起来最大但实际上只是频率比较高的 RV280 罢了 (设定为 240/400 MHz)。

NVIDIA GeForce4 (NV25/NV17/NV18/NV28)

发布时间:2002 年 02 月API 支援:Direct3D 8.1、OpenGL 1.4 (NV25/NV28)API 支援:Direct3D 7.0、OpenGL 1.2 (NV17/NV18)Shader Model 版本:Vertex Shader 1.1, Pixel Shader 1.4 (NV25/NV28)像素渲染器 (PS):4 组/顶点渲染器 (VS):2 组/材质对应单元 (TMUs):8 组/着色输出单元 (ROUs):4 组 (NV25/NV28)像素管线:2 条/材质对应单元 (TMUs):4 组/着色输出单元 (ROUs):2 组 (NV17/NV18)

要谈 GeForce4 之前我们得先对这代 GPU 的系列编成有基本的认识,GeForce4 在个人计算机上分为 MX 与 Ti 两条产品线,虽然都叫做 GeForce4,但实际上两者之间大不相同,如果你以为 GeForce4 MX 与 GeForce4 Ti 之间的关系和之前 GeForce2 GTS 与 GeForce2 MX 之间的关系很像的话,那你就上了 NVIDIA 的当了。

首先看到的是面向主流与高阶市场的 GeForce4 Ti,从上面这张架构图应该不难看出,相较于 GeForce3 来说基本上这代产品其实并没有太大的变动,某种程度上可以看做是 GeForce3 的补完版,像是把被 ATI 超车的 DirectX 8.1 API 支持补上去了之类的改良,除此之外主要的改进有三大部分。

第一部分是关于绘图管线配置,GeForce4 Ti 引入了第二代的 nFiniteFX 引擎,与 GeForce3 最主要的差别在于顶点渲染器从一组增加为两组 (实际上这最早可以追溯到一款特化过的 GeForce3 芯片,NV2A 上,这款芯片是被用于初代微软 Xbox 游戏机的绘图芯片,就具备了两组顶点渲染器),靠着更加精进的顶点渲染器,GeForce4 Ti 每秒能处理的顶点数量相较于前作而言有了大幅度的提升 (不过其实我真心不太懂下面这段技术展示到底是想表达甚么 XD)。

第二部分则是多屏幕的支持,NVIDIA 在 GeForce4 这一世代当中引入了被称为 nView 的多屏幕技术 (其实说穿了就是内建两组 RAMDAC 与 TDMS 输出)。

第三部分则是内存带宽利用方面再次获得了改进,在 GeForce3 当中透过 Lightspeed Memory Archhitecture 来解决 GeForce2 当中内存带宽严重不足的问题,而在 GeForce4 当中我们可以见到强化版的第二代 LMA 设计,透过算法方面的改良,可以更进一步提高内存带宽的利用效率,并加入了内存预充电技术,能有效降低读取内存数据时的延迟。

至于系列编成的部分,GeForce4 Ti 系可分为前期、后期两阶段,前期 (2002 年 04 月起) 使用的是 NV25 核心,共有 GeForce4 Ti 4400 与 GeForce4 Ti 4600 两个成员,这两款的差异出现在运作频率上,前者预设频率为 275/550 MHz,后者则可以高达 300/650 MHz,而后来又加入了 GeForce4 Ti 4200 这款较为平价的版本,频率更进一步下降,若搭配 128 MB 内存则内存带宽还需要进一步砍半 (搭配 64 MB 的款式则没砍)。

至于后期则是使用 NV28 核心 (2003 年 01 月起),仅有 GeForce4 Ti 4800 SE 与 GeForce4 Ti 4800 两个版本,实际上前者就是原先的 Ti 4400 加入 AGP 8x 支持的版本,而后者则是以 Ti 4600 为基础加入 AGP 8x 支持的版本。

得益于频率的提升与第二组顶点渲染器的加入,GeForce4 Ti 毫无疑问是可以完封 GeForce3 系列的,也将才登上效能王者王位几个月的 ATI 再次踹下王座。

接下来,在开始谈 GeForce4 MX 之前,先想想听到 GeForce4 MX 这名词的时候,你会有甚么样的想象吧?

· 简化版、入门版的 GeForce4?

· 当年难产而延期至今的 GeForce3 MX,所以是入门版的 GeForce3?

· 是 GeForce3 改名而来?

一般人的想法大概不出这三种吧?特别是对于知道 GeForce2 MX 是甚么概念的人来说,多半应该会觉得 GeForce4 MX 应该就是低阶版本的 GeForce4 Ti,不过实际情况并不是这样,简单来说,GeForce4 MX 其实只是升级版的 GeForce2 MX,而且从 NVIDIA 官方给的比较表你看不出这点的。

为什么我会这样说呢?NVIDIA 官方在宣传 GeForce4 系列的时候通常都是同时宣传 Ti 系与 MX 系,而且在规格比较上只有提到 GeForce4 MX 不支持 nFiniteFX II 引擎这件事情,单看上面这张图大概会这样觉得;「毕竟是比较低阶的版本嘛,没有最新的 nFiniteFX II 引擎也不奇怪,那总有上一代的 nFiniteFX 引擎吧?而且还多了 VPE 这项不知道是甚么的功能呢。」

不过实际上 GeForce4 MX 也不包含 nFiniteFX 引擎,应该说其实从架构上就跟 GeForce4 Ti 与 GeForce3 一点也不像了,从上面这张图可以很明显看到,DirectX 8.0 的最核心部分-Shader Model 整个不见了,反而看起来比较像是 GeForce2 的架构,是吧?

是时候揭晓答案了,其实 GeForce4 MX 就是拿 GeForce2 核心修改而来的版本,把原本主掌内存带宽这最大瓶颈的内存控制器抽掉,换上 GeForce4 Ti 当中使用的 LMA II (其实有稍微降级,比 GeForce3 用的 LMA 还要略差),并把 GeForce4 Ti 新引入的 nView 双屏幕技术与 GeForce3 开始支持多重取样反锯齿加进来就是 GeForce4 MX 了,从开发代号上也可以证实这件事情:GeForce4 MX 使用的是 NV17 核心,数字编号比 GeForce3 的 NV20 还要来得更小,而且 GeForce4 MX 的 DirectX API 支持能力都只到 7.0 版本。

至于系列编成的部分,GeForce4 MX 系列的成员比较多一些,同样可分为前后两期,前期使用的是 NV17 核心 (自 2002 年 02 月起),可分为 MX420 (预设频率 250/166 MHz,只能搭配 SDR 内存)、MX440 (预设频率 275/400 MHz)、MX440 SE (预设频率 250/332 MHz)、MX460 (预设频率 300/550 MHz) 四种。

至于后期的发行情形则与 GeForce4 Ti 的情况类似,改采新增了 AGP 8x 支持能力的 NV18 核心,先后以 MX440 为基础推出了 GeForce4 MX440 with AGP 8x (内存频率从 400 MHz 提高到 500 MHz) 与 GeForce MX4000 (2013 年 12 月,预设频率为 250/332 MHz,且内存带宽只有一半,代号 NV18B) 两款。

而在 2004 年 NVIDIA 还曾经另外以 NV18 为基础加上 BR02 桥接芯片后制作出称为 NV19 的组合,并以 NVIDIA GeForce PCX4300 的名义发售 (上图,内存频率高达 666 MHz,但频道宽度与 GeForce MX4000 一样只有一半)。

尽管后来看起来 GeForce4 MX 的做法好像很不可思议,但实际上在当时却没有造成市场反应不理想,反而因为价格与 GeForce2 MX 相差无几,却又因为解决了内存带宽问题使得效能有明显的提升,合理的价格与充足的性能使得 GeForce4 MX 后来其实很受欢迎,在很短的时间内就成功取代了原本 GeForce2 MX 长年占据的低价与 OEM 市场。而且 GeForce4 有一点很有趣的现象,那就是只有 GeForce4 MX 才有内建图像处理引擎 (就是刚刚提到的 VPE) 与可变长度编码译码器,高阶的 GeForce4 Ti 反而没有支持这些功能,于是如果只是想看影片的话,选用低阶的 GeForce4 MX 表现反而会比较好。

随着近代 GPU 的可程序化管线设计与两大 API 支持等基本要素大致上在 2001 年确立了,因此从 2002 年开始,新款的 GPU 主要是以将现有架构改进、增加更多的弹性、拉高各项参数为主要目的。

2002:更加实用的 Shader Model 2.0

在 2001 年微软发布了 DirectX 8 系列 API 标准,我们说当时引入的 Shader Model 1.0 给 GPU 架构设计带来了翻天覆地的变化,并且大大提升了未来所有游戏设计师能够运用 GPU 创造新效果的可能,并且大幅提升了 3D 立体图形的实感,但 Shader Model 1.0 有下列这几个主要的缺点,导致它其实「很难用」、「很有限」,而且「还不够弹性」:

· Shader Model 1.x 中,软件工程师只能使用低级语言 (像是汇编语言) 来控制 GPU 内的渲染器

· 一次最多只能操纵 4 ~ 6 个相关材质

· 一次只能下达 4 个材质指令 (SM 1.4 可以下达两组由 6 个指令组成的材质指令),而且只能处理整数

· 只有 8 组常数缓存器

· 只能处理 128 个顶点处理指令

于是在 2002 年微软发布了新的 DirectX 9.0 标准来解决前面这些问题。

DirectX 9.0 与 Shader Model 2.0

在 Windows XP 推出后一年多的 2002 年底微软正式对外发布了 DirectX 9.0 更新 (实际上 GPU 设计商在几个月前就拿到定稿版本的 DirectX 9.0 API 规格书了,因此是先有 DirectX 9.0 GPU 才有 DirectX 9.0 支持更新可供使用),相较于过去的 DirectX 7、DirectX 8 都有架构上的变更来说,DirectX 9 的改进幅度其实没有那么大,最重要的一项就是对 Shader Model 进行大幅改版,称为 Shader Model 2.0。

基本上在进入 DirectX 9.0 世代之后,GPU 内的绘图管线并没有甚么改变,但从 DirectX 8 开始引入的 Vertex Shader 与 Pixel Shader 几乎被重新设计了,改进了刚刚提及在 DirectX 8 当中具有的绝大多数问题,像是像素渲染器只能处理 32 位或 48 位整数的问题,在 Pixel Shader 2.0 当中一口气提升为支持最高 128 位的浮点运算能力,能够同时下达的贴图指令、色彩指令、顶点指令数量方面也都数倍的大幅提升,并且引入了动态/静态流程控制与巢状动态/静态流程控制指令。

除了在数字方面的大幅跃进之外,Shader Model 2.0 带来的另一个重点则是 High-Level Shader Language (HLSL),中文翻译称之为「高阶渲染器语言」,如同过去笔者曾介绍过的,在 DirectX 8 当中 Shader Model 1.x 支持的语言实际上很有限,实质上只是低阶汇编语言 (尽管后来微软在一些文件当中把 Direct3D 8.x、Shader Model 1.x 也追认为 HLSL,但实际上从可以证实实际上并不是这样),因此在编写上有相当的困难度,特别是在要撰写复杂度较高的程序时,显得更加力不从心,在引入 HLSL 之后,开发者得以活用 GPU 实际能力的程度便瞬间提高了不少。

而最后要提的是,尽管 DirectX 9 带来的改进并不如前作那么巨大,但 DirectX 9 可以说是历代 DirectX 当中影响力最大、生存时代最长的版本 (直到今天都还有很多游戏提供 DirectX 9 模式),虽然这某种程度上和 DirectX 9 是 Windows XP 能支持的最后一个版本、DirectX 10 要等到 2006 年才生得出来、Vista 失败导致 DirectX 10 难以在短时间内普及、Windows XP 直到 2013 年市占率才开始明显下滑等因素有关,但最大的因素还是因为 DirectX 9 的 Shader Model 2.0 比起前作来说大有长进且能合乎基本需要的缘故。

接下来我打算介绍的就是 DirectX 9 世代的产品,首先要登场的是在可预见的未来内都会被 ATI 与 NVIDIA 两家公司永远铭记的 Radeon R300 与 GeForce FX。

本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.souzhinan.com/kj/270790.html