01.02 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 組

NVIDIA ATI顯卡發展史-2000年-2002年

誕生於 1999 年的 GeForce256 是 NVIDIA 第一款以 GeForce 為名的產品,同時也是歷史上第一款能夠完整支持 Direct3D 7.0 API 的顯示芯片,儘管仍然是以前作 RIVA TNT2 為基礎修改而來,但在架構上還是有著不小的差別 (所以代號並沒有接續前作的 NV5、NV6,而是直接跳到 NV10 了)。

NVIDIA ATI顯卡發展史-2000年-2002年

首先,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 仍然得以作為公司的入門產品生存好一陣子而不被停產。

NVIDIA ATI顯卡發展史-2000年-2002年

另一件值得注意的事情是,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 組

NVIDIA ATI顯卡發展史-2000年-2002年

還記得我們在前幾篇曾經談過由 Rage Pro 一脈相承演化而來的 Rage 128 家族嗎?家族內的最後一款產品 Rage Fury MAXX 近乎瘋狂的在單張顯示適配器中塞入了兩顆 Rage 128 Pro,但最終這款有著「曙光女神」如此響亮名號搭配充分體現「大艦巨炮主義」豪邁設計的特別產品,由於嚴重的兼容性問題與性能不彰的配合模式,加上並不支持硬件 T&L 而最終落得慘敗於 GeForce256 腳下的下場,因此 2000 年的 ATI 的核心主題其實很簡單,就是希望能夠一雪前恥而已。

NVIDIA ATI顯卡發展史-2000年-2002年

整體來說其實 Radeon R100 與 Rage 128 Pro 之間的關係和 GeForce256 與 TNT2 之間的關係很類似,同樣是基於上代作品進行的大幅度改版,同樣強調加入了對硬件 T&L 的支持 (ATI 將其稱為 Charisma Engine),其實從原先 Radeon R100 最早的開發代號是 Rage 6C 這點來看,應該就可以很明顯知道它與前作的血緣關係了。

NVIDIA ATI顯卡發展史-2000年-2002年

在像素管線的安排上,Radeon R100 與前作和競爭對手 GeForce256 與 GeForce2 有著很大的不同,Radeon R100 的像素管線依然維持在 2 條,但每條像素管線包含的紋理對應單元則一口氣從一組增加到三組以支持三重紋理貼圖技術 (不過不幸的是使用三重紋理貼圖技術的遊戲並不多,因此即便 Radeon R100 在理論性能上可以超越競爭對手,但在實際遊戲的過程當中,NVIDIA 產品的表現卻往往較佳)。

NVIDIA ATI顯卡發展史-2000年-2002年

但由於 ATI 開發的 T&L 運算單元性能相當不錯,加上具備特有的 HyperZ 內存帶寬節省技術 (這是 GeForce256、GeForce2 等系列最大的問題與弱點),因此 Radeon R100 除了對付主要競爭對手 NVIDIA 的上一代產品-GeForce256 之外,對付同期推出的 GeForce2 甚至是 GeForce3 也能維持著互有勝負的局面,最終成為 ATI 歷史上相當長壽的一代產品,並且得以一路延續到 2002 年才徹底失去市場地位。

NVIDIA ATI顯卡發展史-2000年-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)

·

NVIDIA ATI顯卡發展史-2000年-2002年

· 當 ATI 蠢蠢欲動準備靠著 Radeon 抬頭時,NVIDIA 也沒有停下腳步,在差不多與 Radeon R100 相同的時間點推出了 NVIDIA 歷來最具代表性、最為長青的一代產品-GeForce2。

·

NVIDIA ATI顯卡發展史-2000年-2002年

· 在 GeForce2 這一世代當中,NVIDIA 重啟了過去在 TNT2 時期曾經嘗試過的一口氣使用同代架構推出不同市場產品以擴張市佔率的做法 (畢竟在 GeForce256 世代雖然沒有推出對應的低階產品,但很自然而然的老款 TNT2 就自動補上了這個位置,證實確實是有這個市場需求存在的),因此 GeForce2 主要可分為面向中高階市場的 GTS 系列與面向入門市場的 MX 系列 (雖然上圖當中還有 TNT2 作為最入門,但實際上由於 MX 系列表現得太好,到最後低階市場也幾乎被 MX 系列吃光了)。

·

NVIDIA ATI顯卡發展史-2000年-2002年

· 首先看到的是主掌中高階市場的 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 架構當中最大的問題-內存帶寬不足。

·

NVIDIA ATI顯卡發展史-2000年-2002年

· 在 GeForce2 GTS (頻率設定為 200/332) 上市過後的幾個月內 NVIDIA 又陸續為其推出了數個改版,包含 2000 年 08 月推出的 GeForce2 Ultra (頻率拉高到 250/460)、2000 年 12 月推出的 GeForce2 Pro (頻率為 200/400)、來年十月推出的 GeForce2 Ti (頻率設定為 250/400,主要用於填補 GeForce3 與 GeForce2 MX 之間的市場空隙) 三款。

·

NVIDIA ATI顯卡發展史-2000年-2002年

· 至於面向中低階市場的 GeForce2 MX 家族則是基於 NV11 核心,雖然表面上型號比較接近 GeForce256 的 NV10,但實際上 NV11 其實是 NV15 的閹割版本,主要的差異是原本的兩條像素管線被砍掉了一半與本來就不夠用的內存帶寬再次被閹掉一半,其他特性則基本相同,比較奇怪的是 GeForce2 GTS 缺乏的雙屏幕支持反而有包含在 GeForce2 MX 中 (不知為何當年顯示適配器廠商好像覺得只有用低階顯示適配器的人才會搞雙屏幕,可能是認為雙屏幕是商務用途吧?)。

·

NVIDIA ATI顯卡發展史-2000年-2002年

· GeForce2 MX 家族可以說是 NVIDIA 歷來最為成功的系列之一,一方面當時的主要競爭對手 3dfx 沒能端出足夠便宜又能抵擋 GeForce2 MX 功能的產品,而 ATI 的 Radeon VE 雖然在雙屏幕支持度上比 GeForce2 MX 更好,但性能表現太差且不支持硬件 T&L、Radeon SDR 又太貴而且不支持雙屏幕輸出,於是 GeForce2 MX 在市場上可以說幾乎是沒有對手,而另一方面當時又有大量的 OEM 廠商基於低價與可接受的性能而選擇搭載 GeForce2 MX 顯示適配器。 (筆者我的第一臺計算機就是搭配 GeForce2 MX 的品牌機)

·

NVIDIA ATI顯卡發展史-2000年-2002年

· 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:可程序化管線架構

·

NVIDIA ATI顯卡發展史-2000年-2002年

· 由於 DirectX 從 6.0 版本開始在市場上佔有重要地位,從 7.0 版本開始與 OpenGL 成為市場上唯二的主流 (GLIDE 已經躺在旁邊半死不活了),但 OpenGL 直到 2003 年之前其實都沒有引入太大的變革,因此 2001 年 GPU 架構上出現的革新基本上幾乎可以說是與 DirectX 8.0 的發展切齊的,所以接下來我要先稍微介紹一下 DirectX 8.0 引入的新特色。

· 發展方向的轉變

· 在 2001 年以前,基本上 GPU 的發展目標非常明確,除了增加每秒能生成的多邊形數量之外,就是儘可能在同樣時間內處理更多、更復雜的材質貼圖,在 3D 圖形的初期來說,這樣的做法絕對是正確的,畢竟構成圖形用的多邊形不夠多,立體圖形就會顯得粗糙;材質貼圖不夠複雜、豐富,立體圖形的表面看起來就不真實,在這樣的思維底下,為了追求速度與避免過於複雜的架構設計,當時的顯示芯片中的各個單元的功能是「固定」的,只能根據芯片上設計好的模式 (State) 來運作,每個步驟要做哪些事情都是固定的,並不能隨著場合不同而有所變動,稱之為固定功能管線 (Fixed Function Pipeline)。

·

NVIDIA ATI顯卡發展史-2000年-2002年

· 舉例來說,一筆數據進入 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 (像素渲染器) 兩種。

·

NVIDIA ATI顯卡發展史-2000年-2002年

· 單從字面上來看可能不是很容易瞭解這兩種渲染器到底有甚麼功能,所以我們要再次回到剛剛看過的固定功能管在線,以往像素數據進入 GPU 時,要先經過 GPU 內「硬件 T&L」運算電路的處理,而 Vertex Shader 實際上就是用來取代原本在 2000 年剛剛加入 GPU 內不久的硬件 T&L 電路用的,本質上如同前面所說,可以想象成一種「主要指令集由各種 T&L 相關功能組成」的「小型處理器」,於是軟件工程師就可以透過編寫軟件的方式來達到一定程度上彈性調整、改變 T&L 功能的效果了。

·

NVIDIA ATI顯卡發展史-2000年-2002年

· 至於 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 ATI顯卡發展史-2000年-2002年

· NVIDIA 在 2001 年初推出的 GeForce3 是世界上第一款配合 DirectX 8.0 規範而推出的產品,基本上是從上一代的 GeForce2 修改而來,同樣是採用 4 條像素管線、8 組 TMU 與 4 組 ROU 的配置,但如同其代號又再次從 NV15 跳到 NV20 所顯示的,在架構上 GeForce3 的變動其實很多。

·

NVIDIA ATI顯卡發展史-2000年-2002年

· 相較於上代產品來說,GeForce3 最主要的改進有三個地方,首先要提的是被 NVIDIA 官方稱之為 nFinite FX Engine 的技術,實際上 nFiniteFX Engine (有不少人懷疑這名字是不是與 3dfx 有關,畢竟 NVIDIA 剛在幾個月前收購了 3dfx 的所有技術,不過我個人認為應該只是名字用到而已,畢竟距離收購案宣佈只過了三個月而已) 就是我們剛剛花費不少篇幅探討的 Shader Model,這是 GeForce3 與前作之間最大的不同。

· 但 nFiniteFX Engine 的引入實際上並沒有讓 GeForce3 成為一代成功的 GPU,一方面因為初期能夠得益於這項技術的遊戲軟件並不多 (跟 GeForce256 第一次加入硬件 T&L 時的狀況很像),另一方面是因為牽涉到架構方面的大幅改變與重新設計,這很大程度影響了 GeForce3 的實際表現與生產良率 (這又直接影響了生產成本,並且進一步牽動了價格)。

·

NVIDIA ATI顯卡發展史-2000年-2002年

· 第二個不同則是在內存帶寬的利用機制上,GeForce3 引入了被稱之為光速內存架構的 Lightspeed Memory Architecture (LMA) 技術,有效解決了過去 GeForce256 與 GeForce2 最大的弱點-內存帶寬不足,某種程度上你可以把它當成 NVIDIA 家的 HyperZ 技術來看 (儘管實作的方式並不完全相同,但目的與結果是相似的,也用到了一些類似的東西,像是 Z-Buffer 壓縮技術之類的)

·

NVIDIA ATI顯卡發展史-2000年-2002年

· 而最後一項不同則比較沒有前兩項那麼來得重要,GeForce3 的反鋸齒能力相較於前幾代 GeForce 來說有了明顯的提升,NVIDIA 將這項技術稱為「高分辨率反鋸齒 (HRAA)」,具體上來說是運用一種稱為「Quincunx」的特殊算法 (抓兩條對角線組成一個梅花點的形狀) 來執行多重取樣反鋸齒 (MSAA),由於需要的取樣點比起以往使用超取樣反鋸齒 (SSAA) 時來得少,所以在速度上比起 SSAA 來得快上許多,但是在效果上又與過去使用的反鋸齒相差無幾 (理論上 2x Quincunx MSAA 差不多就能有 4x SSAA 等級的效果)。

·

NVIDIA ATI顯卡發展史-2000年-2002年

· 至於在系列編成的部分呢,相較於 GeForce2 由 GTS 與 MX 兩大家族分別負責高、低階市場的作法而言,GeForce3 的家族組成顯得單薄許多,受到第一次導入可程序化管線設計但技術還不夠成熟的影響,最原始的 GeForce3 (2001 年 02 月推出) 由於在繪圖管線配置上與 GeForce2 GTS 很相近 (有著幾乎相同的理論像素填充率),因此在性能測試中沒辦法佔到太多便宜 (甚至由於頻率較低,很多時候還會反過來輸給 GeForce2 Ultra),基本上可以視為具備可程序化管線設計的 GeForce2 GTS,但由於價格高昂許多卻沒能帶來太多性能提升,因此在市場上並未獲得太多親睞,可以算是典型的「付出很多心力卻沒甚麼收穫」的案例 (下圖當中綠色的部分就是 GeForce3 有大改變的部分)。

·

NVIDIA ATI顯卡發展史-2000年-2002年

· 這樣的尷尬情況大約要等到 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 代表「強化高級版本」的意思)。

·

NVIDIA ATI顯卡發展史-2000年-2002年

· 面向頂級市場的 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 ATI顯卡發展史-2000年-2002年

因此在 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 當下的旗艦。

NVIDIA ATI顯卡發展史-2000年-2002年

首先從架構看起,還記得之前我們談到 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 系列才又加入類似功能的硬件加速單元)。

NVIDIA ATI顯卡發展史-2000年-2002年

不過儘管硬件上 Radeon R200 大致上解決了 Radeon R100 中有的問題,並且追上 NVIDIA 進入了可程序化管線世代,甚至在功能性方面超越了 NVIDIA (特別是 Pixel Shader 1.4 的支持),但這款產品最大的敗筆就是驅動程序,上市初期的驅動程序甚至幾乎沒辦法正常進行遊戲,玩家光是看錯誤訊息與各種各式各樣的破圖、異常效果就飽了,這樣拙劣的驅動程序根本無法完整發揮 Radeon R200 芯片的實際能力 (特別是反鋸齒的部分,ATI 似乎根本沒寫完驅動程序就趕著讓 Radeon 8500 上市了,當時的驅動程序只能在 Direct3D 模式下提供反鋸齒功能,而且速度慢到非常驚人的地步)。

NVIDIA ATI顯卡發展史-2000年-2002年

看過架構上的簡單介紹之後,接下來我們回到產品本身來看,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 改名舊瓶裝新酒重新上架惡習的開端。

NVIDIA ATI顯卡發展史-2000年-2002年

至於 RV250 則是在 2002 年 08 月 (在 R300 推出前一兩個月時) 針對中低階市場推出的版本,砍掉了一組頂點渲染器與一半的像素對應單元、拿掉了 TruForm 硬件加速單元,並以 Radeon 9000 (頻率設定為 200/500 MHz) 與 Radeon 9000 Pro (頻率設定為 275/550 MHz) 的名義發售,作為 Radeon 9000 系列的最入門產品。

NVIDIA ATI顯卡發展史-2000年-2002年

最後要提的則是 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 的)。

NVIDIA ATI顯卡發展史-2000年-2002年

基於 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)

NVIDIA ATI顯卡發展史-2000年-2002年

要談 GeForce4 之前我們得先對這代 GPU 的系列編成有基本的認識,GeForce4 在個人計算機上分為 MX 與 Ti 兩條產品線,雖然都叫做 GeForce4,但實際上兩者之間大不相同,如果你以為 GeForce4 MX 與 GeForce4 Ti 之間的關係和之前 GeForce2 GTS 與 GeForce2 MX 之間的關係很像的話,那你就上了 NVIDIA 的當了。

NVIDIA ATI顯卡發展史-2000年-2002年

首先看到的是面向主流與高階市場的 GeForce4 Ti,從上面這張架構圖應該不難看出,相較於 GeForce3 來說基本上這代產品其實並沒有太大的變動,某種程度上可以看做是 GeForce3 的補完版,像是把被 ATI 超車的 DirectX 8.1 API 支持補上去了之類的改良,除此之外主要的改進有三大部分。

NVIDIA ATI顯卡發展史-2000年-2002年

第一部分是關於繪圖管線配置,GeForce4 Ti 引入了第二代的 nFiniteFX 引擎,與 GeForce3 最主要的差別在於頂點渲染器從一組增加為兩組 (實際上這最早可以追溯到一款特化過的 GeForce3 芯片,NV2A 上,這款芯片是被用於初代微軟 Xbox 遊戲機的繪圖芯片,就具備了兩組頂點渲染器),靠著更加精進的頂點渲染器,GeForce4 Ti 每秒能處理的頂點數量相較於前作而言有了大幅度的提升 (不過其實我真心不太懂下面這段技術展示到底是想表達甚麼 XD)。

第二部分則是多屏幕的支持,NVIDIA 在 GeForce4 這一世代當中引入了被稱為 nView 的多屏幕技術 (其實說穿了就是內建兩組 RAMDAC 與 TDMS 輸出)。

NVIDIA ATI顯卡發展史-2000年-2002年

第三部分則是內存帶寬利用方面再次獲得了改進,在 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 的款式則沒砍)。

NVIDIA ATI顯卡發展史-2000年-2002年

至於後期則是使用 NV28 核心 (2003 年 01 月起),僅有 GeForce4 Ti 4800 SE 與 GeForce4 Ti 4800 兩個版本,實際上前者就是原先的 Ti 4400 加入 AGP 8x 支持的版本,而後者則是以 Ti 4600 為基礎加入 AGP 8x 支持的版本。

NVIDIA ATI顯卡發展史-2000年-2002年

得益於頻率的提升與第二組頂點渲染器的加入,GeForce4 Ti 毫無疑問是可以完封 GeForce3 系列的,也將才登上效能王者王位幾個月的 ATI 再次踹下王座。

NVIDIA ATI顯卡發展史-2000年-2002年

接下來,在開始談 GeForce4 MX 之前,先想想聽到 GeForce4 MX 這名詞的時候,你會有甚麼樣的想象吧?

· 簡化版、入門版的 GeForce4?

· 當年難產而延期至今的 GeForce3 MX,所以是入門版的 GeForce3?

· 是 GeForce3 改名而來?

一般人的想法大概不出這三種吧?特別是對於知道 GeForce2 MX 是甚麼概念的人來說,多半應該會覺得 GeForce4 MX 應該就是低階版本的 GeForce4 Ti,不過實際情況並不是這樣,簡單來說,GeForce4 MX 其實只是升級版的 GeForce2 MX,而且從 NVIDIA 官方給的比較表你看不出這點的。

NVIDIA ATI顯卡發展史-2000年-2002年

為什麼我會這樣說呢?NVIDIA 官方在宣傳 GeForce4 系列的時候通常都是同時宣傳 Ti 系與 MX 系,而且在規格比較上只有提到 GeForce4 MX 不支持 nFiniteFX II 引擎這件事情,單看上面這張圖大概會這樣覺得;「畢竟是比較低階的版本嘛,沒有最新的 nFiniteFX II 引擎也不奇怪,那總有上一代的 nFiniteFX 引擎吧?而且還多了 VPE 這項不知道是甚麼的功能呢。」

NVIDIA ATI顯卡發展史-2000年-2002年

不過實際上 GeForce4 MX 也不包含 nFiniteFX 引擎,應該說其實從架構上就跟 GeForce4 Ti 與 GeForce3 一點也不像了,從上面這張圖可以很明顯看到,DirectX 8.0 的最核心部分-Shader Model 整個不見了,反而看起來比較像是 GeForce2 的架構,是吧?

NVIDIA ATI顯卡發展史-2000年-2002年

是時候揭曉答案了,其實 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) 四種。

NVIDIA ATI顯卡發展史-2000年-2002年

至於後期的發行情形則與 GeForce4 Ti 的情況類似,改採新增了 AGP 8x 支持能力的 NV18 核心,先後以 MX440 為基礎推出了 GeForce4 MX440 with AGP 8x (內存頻率從 400 MHz 提高到 500 MHz) 與 GeForce MX4000 (2013 年 12 月,預設頻率為 250/332 MHz,且內存帶寬只有一半,代號 NV18B) 兩款。

NVIDIA ATI顯卡發展史-2000年-2002年

而在 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 標準來解決前面這些問題。

NVIDIA ATI顯卡發展史-2000年-2002年

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。

NVIDIA ATI顯卡發展史-2000年-2002年

基本上在進入 DirectX 9.0 世代之後,GPU 內的繪圖管線並沒有甚麼改變,但從 DirectX 8 開始引入的 Vertex Shader 與 Pixel Shader 幾乎被重新設計了,改進了剛剛提及在 DirectX 8 當中具有的絕大多數問題,像是像素渲染器只能處理 32 位或 48 位整數的問題,在 Pixel Shader 2.0 當中一口氣提升為支持最高 128 位的浮點運算能力,能夠同時下達的貼圖指令、色彩指令、頂點指令數量方面也都數倍的大幅提升,並且引入了動態/靜態流程控制與巢狀動態/靜態流程控制指令。

NVIDIA ATI顯卡發展史-2000年-2002年

除了在數字方面的大幅躍進之外,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。


分享到:


相關文章: