[RETURN Bor-Sung Liang's HOME]
 
發表於電子月刊1996年八月號
榮獲第一屆電子月刊金筆獎優等獎
 
(作者註:此文成於 1996 年,以當時的技術加以深入探討。
近兩年來 3-D 繪圖進展突飛猛進,已有許多軟硬體架構的新技術,但仍不脫既有技術的範疇。
若對 3-D 繪圖硬體有興趣者,請對市場發展多加注意 1998/5/25)
 
 
3-D 繪圖硬體架構與設計
 
梁伯嵩    聶幼成    任建葳
 
國立交通大學電子研究所
Department of Electronics Engineering,
National Chiao Tung University, Hsinchu 30050, Taiwan, R.O.C.
E-mail: {bsliang,ycnieh, cwjen}@ee.nctu.edu.tw
 
 
 
簡介
 

近二十年來,電腦繪圖已成為人機介面中,最重要的資料顯示方法,並廣泛的運用在各種應用之中。例如計算機輔助設計 (CAD) ,醫療方面的影像處理,以及電腦視算等等。尤其是3-D 電腦繪圖,到了90年代初期,很快的從高不可攀的技術領域,擴展到非技術領域上的運用。而多媒體 (multimedia) 以及虛擬真實 (virtual reality) 產品現在越來越普及。不但是人機介面上的重大突破﹐更在娛樂應用與video game中扮演著重要的角色。而這些的應用,多半是以低成本的即時3-D電腦繪圖技術為基礎。

在多媒體整合系統中, 視覺的顯示系統分成三個主要領域:視訊處理 (video),影像處理 (image processing) ,和電腦圖學 (computer graphics) [1]。視訊處理和影像處理是處理已經存在的訊號,電腦繪圖是利用所給予的資料來合成影像。其三大領域的應用範疇可粗略的由各種應用來畫分,見圖一 [2]

 

圖一 多媒體系統中視覺顯示的三大領域與其應用 [2]

 

2-D電腦繪圖是一種常用以將資料和內容表現出來的普遍技術,特別是在互動應用。另一方面,3-D繪圖是電腦繪圖中一股越來越大的分支,它使用3-D 模型和各種影像處理來產生具有三維空間真實感的影像。

使用者一直要求3-D 繪圖系統要有更好的效率和更低的價格,而半導體技術的進步使它成為可能。VLSI技術使個人電腦能夠作到工作站級的繪圖處理器的效果。VLSI技術的長足進步之下,因為量產所帶來的價格優勢,會使得 3-D電腦繪圖的加速硬體越來越普及,甚至成為電腦中人機介面的標準配備。在圖二中我們將PC上多媒體系統之顯示卡演進,大略歸納成一張圖表 [2][3],可以發現其演進趨勢。

 

圖二 PC上多媒體系統之顯示卡演進示意圖 [2][3]


3-D繪圖硬體的設計目標
 
即時著色 (Real-time Rendering)

我們可以把需要快速反應時間的3D應用分成以下三大類:

  1. 即時應用 (Real-time Application) :每秒必需繪出數十張畫面,通常為2430張。
  2. 交談應用 (Interactive Application) :一張畫面的產生時間需少於一或數秒。
  3. 批次應用 (Batch Application) :一張畫面的產生時間大於數十秒。
由於多媒體和虛擬實境的盛行,電腦繪圖也被要求要擁有即時著色的能力。然而, 巨大的計算負荷, 資料的存取,及記憶體頻寬的問題,使得大多數的CPU難以負荷3-D繪圖的要求。因此為了速度的要求,使用特定的硬體來解決是最自然的方式。

影像品質 (Image Quality)

3-D繪圖被廣泛地使用在許多領域中,上至CAD,下至電腦遊戲都可以見到它的應用。隨著電腦效能的增進, 我們對影像的品質要求也越來越高。故可以預見的是每個frame的複雜度會越來越高, 同時使用一些新的演算法,如texture mapping,也可以有效地增加影像的真實度。綜合以上所述,計算複雜度,資料貯存,和通訊的負荷也會隨之增加。

低價位 (Low Cost)

過去的二十年中,有許許多多為了加速3-D繪圖的硬體,但是對於一般的使用者而言, 他們大部分都太貴了。隨著半導體科技的進步,設計一顆3-D繪圖專用的處理器變成一件很自然的事。量產化的3-D繪圖處理器可以有效的降低成本,而且可以只使用一片外加的插卡,即能加強現在個人電腦的3-D圖形處理能力。雖然價位和品質永遠是一個難以兩全的事,但這些低價位的產品的確也可以產生相當品質的即時影像了。這對目前的多媒體和娛樂應用是很重要的功能。

系統整合 (System Integration)

現在的消費性電子產品中,多媒體扮演了越來越重要的角色。一個多媒體系統整合了文字,繪圖,影像,和聲音。為了使這麼多種的資料同步,多媒體系統必須在短時間內處理相當大量的運算動作。因此需要不同的處理器,來加強一個多媒體系統中,不同部分的處理能力。3-D處理器是其中的一員,它需要和其它的處理器協同工作。在這樣的考量之下,許多設計使用了最常見的frame buffer系統來加快3-D繪圖的速度。雖然會有記憶體頻寬的瓶頸, 但比起重新設計一個與目前架構不同的新架構,沿用舊架構可以很簡單地把3-D繪圖處理器整合進現有PC的多媒體顯示系統中。另一方面, 為了達成相容性和系統整合, 設計師不只要考慮硬體設計,同時也要顧及軟體的開發。一些已經成熟的軟體API可以用來當做設計硬體時的參考, 因為這些API正是使這些3-D繪圖處理器得以推廣的動力。

 

標準 3-D 繪圖著色管線 ( Standard 3-D graphics Rendering Pipeline )

為了加快 3-D 繪圖的速度, 標準 3-D 繪圖著色管線是一種最常被使用到的方式。接下來我們將簡介一下目前最常見的 3-D 繪圖管線 [4]

圖三 標準 3-D 繪圖著色管線 [4]
 


3-D 繪圖管線功能描述

 

在圖三裡,我們可以看到整條著色的管線根據不同的座標系統而分割成數個部分。資料庫裡的物件是一些3-D模型的描述定義, 所使用的座標系統參考其本身的參考點,故稱之為本地座標 (Local Coordinate Space)
 

當我們要合成一張 3-D 影像時, 各個不同的物體會從資料庫中被讀取,並轉換至一個統一的世界座標(World Coordinate)。其次, 就像真實世界中的照相機一般, 我們需要定義觀測點(View Point)的位置。由於繪圖系統硬體解析度的限制, 我們必須將連續的座標轉換至含有X Y 座標,以及深度值 (常稱為Z座標) 3-D 螢幕空間。在做完隱藏面的消除以及將物體以像素的方式描繪出來後, frame buffer 會保留結果的圖像並且將其輸出至螢幕上。

通常我們將處理這類標準管線的各單元分成兩大部分。1.幾何轉換子系統( Geometric Subsystem); 2. 著色子系統 (Raster Subsystem)。其兩子系統與整個系統上的階層關係表示於圖四。在本地座標, 世界座標以及觀察座標中,其座標值均為三維且連續的。為了保持座標轉換的精確度,大多使用浮點數來表示座標值。在這部份最重要的工作就是座標的變換, 因此提供這些座標轉換運算功能的單元通常被稱之為幾何轉換子系統。而在3-D繪圖處理中,這部分的加速硬體通常被稱之為幾何引擎” (Geometric Engine)

幾何轉換子系統 (Geometric Subsystem)

在圖三裡我們可以發現幾何轉換子系統一共有兩個座標變換,這是幾何轉換子系統最重要的運算所在,多數為4x4的矩陣運算。另外,在前級有primitive的選取動作,可以決定primitive是否在可視空間中,減少不必要的運算。而那些僅有部分在可視範圍內的primitive 則會在clipping中被削切成符合觀測空間的形狀。由View space轉成Screen space時有一個Perspective divide的動作,將觀測空間座標除以一個常數w,並且利用3-D Screen Mapping 將座標轉換至x-y螢幕座標 (Screen Coordinate) 。以備接下來的著色子系統使用。當使用Gouraud Shading時, lighting module僅存在於幾何轉換子系統中。

著色子系統 (Raster Subsystem)

因為螢幕座標的位址是整數型態的。當我們將座標轉換到螢幕座標後, 為了符合整數位址, 我們只好將座標限制以整數來表示。同時原來以物體導向的primitive在這兒應該已經被解構成以圖素 (Pixel) 為導向的資訊。專門用來處理這些動作的單元被稱之為著色子系統, 3-D繪圖處理中,這部分的加速電路即為稱為著色引擎” (Raster Engine) 因為在這兒的運算資料量不但龐大,而且規則, 故相當適合以特定的,具平行處理能力硬體來加速其動作。

 


3-D 繪圖管線實作的架構

目前已有許多種方式來實作這條標準的3-D繪圖管線,我們將目前常見的幾種類型歸納於圖四 [2][5]。第一種方式 (Type 1) 完全使用軟體, 第二 (Type 2) 和三種 (Type 3) 利用特定的硬體 (Dedicated Hardware) 加速部份子系統之功能。第二種中只將著色子系統以硬體來製作,第三種中更跨及幾何轉換子系統。第四種 (Type 4) 則是完全以特定硬體來實現3-D 繪圖管線,又稱完全硬體實現 (Total-hardware-solution),因為不需考慮到3-D 繪圖管線內部介面來與他種系統相容,在演算法上的選擇與架構設計更具彈性,多用於高價高功能的系統之中。相對的,第二種與第三種的特定硬體多半是單晶片或晶片組,又稱3-D Graphics Processor3-D Accelerator。利用VLSI技術量產以提供廣大的消費市場,為3-D繪圖提供部分增速。在圖二中所標明的3-D Graphics Processor多半是此兩種架構。

圖四 標準的3-D繪圖管線硬體實現上之分類 [2][5]
 


3-D繪圖硬體設計上遇到的瓶頸
 

根據MolnarFuchs所說 [6]:如果一個系統有足夠的畫框記憶體 (frame buffer) 和一個適合的顯示器, 以及足夠的時間, 那麼理論上它就可以產生任意程度複雜和逼真的三維圖形。在這種狀況下, 所有3-D 繪圖的工作都由CPU來達成。但這已無法滿足今日這些交談或即時式的應用程式的需求。另一方面, 很多硬體設計人員也試著設計一些專門為3-D繪圖量身打造的硬體設備。大致說來有三項瓶頸需要克服:浮點運算的速度,整數運算的速度以及記憶體頻寬的問題。

 
浮點運算

在標準管線中, 大部分的座標都是以浮點數的形式來表示, 因此浮點運算的最大需求應該是幾何轉換的部分。

每個primitive的頂點都需要做modelingviewtransformation 而這些轉換是4x4的矩陣運算, 所以『乘加』是座標轉換中最主要的一種運算動作。接下來, clipping units將部份在觀測空間中的primitives做適當的切割, lighting stage利用如Phone illumination model等等對primitives做處理。在這兒所需要的運算有加, 乘, 向量內積, 冪次等。通常Lighting Stage是整個系統加速時會遇到的最大障礙。

 

整數運算

而在著色子系統中, 最常見的則是定點運算。為了轉換primitives成為圖素, 在描畫 (rasterization) 動作之後, 會產生數以百千計的圖素。 同時每個圖素還包含著其他相關的資訊,著色子系統必須處理其包含的所有資訊, 所以定點運算的數目就要根據primitive的數目和primitive的平均大小來決定。

 

記憶體頻寬

CPU和繪圖處理器最大的不同點在於其著色子系統額外的記憶體介面。記憶體介面頻寬的問題通常主宰了一個繪圖系統的表現。

有三個主要的記憶體介面有頻寬上的問題, 它們是:frame buffer depth buffertexture buffer。如前面所述,為了浮點運算與整數運算的瓶頸,常會利用一些技巧來加速。但如果我們利用諸如平行化或管線化的技巧,來加速浮點和定點的運算速度, 頻寬不足的問題會更加顯著。特別在一些單晶片的3-D繪圖處理器之中, 資料匯流排的寬度常會被腳位數目所限制, 且利用interleave等技巧達成的頻寬增加又常會被晶片的電氣特性所限制。因此,這的確是3-D繪圖處理器性能的限制所在。
 

(a) Frame Buffer

frame buffer會隨著更高的解析度, 更多的顏色, 而增加其大小。同時在提高螢幕復新率(Refresh Rate)時, 更多的頻寬會被更新螢幕內容的動作佔據。其原因是frame buffer貯存了每個像素的顏色值並且在每個refresh cycle都要將其送至螢幕上。以解析度1024x768,色彩數24-bit(1677百萬色) 60Hz更新頻率的顯示模式為例:

 

3(bytes/pixel) x 1024(pixels/line) x 60(frames/sec) = 135M (bytes/sec)

 

在表一中我們可以看到一些其它較常見的顯示模示所需要的記憶頻寬。需要注意的是,在這兒的討論中, 我們尚未加上3-D繪圖系統所需要的額外頻寬, 所以真正的頻寬需求將遠大於此。而且,就一般情況來說, 一個典型3-D繪圖系統的處理速度範圍大致一秒鐘可以輸出數百萬至數千萬個像素。

 

 

表一 畫框記憶體中為提供顯示所需之記憶體頻寬
 
Resolution
Color Bits
Frame Buffer Size
Refresh rate
Display Bandwidth
 
bits per pixel
bytes per frame
frames per second
Mega bytes per sec
640x480
4
150K
35.5
5.2
640x480
16
600K
35.5
20.8
640x480
24
900K
35.5
31.2
640x480
24
900K
70
61.52
800x600
24
1406K
70
96.1
1024x768
24
2304K
70
157.5
1280x1024
24
3840K
72
270
1600x1200
24
5625K
72
395.5
 
(b) Depth buffer

為了做到消除隱藏面的效果, 我們必須為每個像素保留一份深度值,而此深度值多半需佔用16 2432 bits的記憶空間。為了決定一個經過描畫產生的像素是否可以通過深度測試,而被寫入frame buffer 必須要作readread-modify-write的動作。若不能通過深度測試,則此圖素將會被捨棄。因此在實際情況中,depth buffer所需要的記憶頻寬,將會大於frame buffer所需要的記憶頻寬。

 
(c) Texture buffer

Texture buffer 顧名思義就是存放材質貼圖 (Texture Map) 的記憶體。一般說來texture map的大小都較display所需的記憶體大小小了許多, 所以texture buffer的大小也小了許多。因此我們可以使用較貴但是便宜的記憶體, SRAM 來作為texture buffer。如果我們僅做最基本的texture mapping,並且一個像素僅讀取一筆texel的資料的話, 這樣的架構一般來說不會有太大的問題。但是如果我們由於價格的理由而把這塊記憶體和frame bufferdepth buffer共用, 將會造成顯著的效能降低。原因是texel座標和pixel座標的特性不同, 共用記憶體的結果將會降低存取時的區域性。

除此之外,有些較複雜的texture mapping演算法,使用一些技巧來計算每個像素的顏色值以達成消除鋸齒 (antialias) 的效果。這些演算法將會使用到2 4,甚至8texels來計算一個圖元的顏色值,因此會在Texture buffer上增加數倍的頻寬需求。

 

  
克服 3-D 硬體瓶頸的技術
 

使用硬體來加速 3-D 繪圖的效率,這是一個很直觀的概念。但在設計硬體時,我們需要考量一些事: 既然一個擁有足夠記憶體的CPU,就能利用軟體的方式做所有3-D繪圖的動作, 那麼我們是否能確定使用特定的硬體一定能比CPU做得還要好呢﹖在設計這些硬體時有幾種考量: 有些專注在高效率, 有些則注重品質的加強, 有些則是為了易於整合到現有的多媒體系統中, 有些則只是為了加強某些特殊的功能,分擔 CPU 的部份負擔而已。

為了克服上述的三個瓶頸,在以往的研究中已提出一些解決的方案。接下來我們將這些方法分為兩大類來介紹: 使用平行化的方式加快計算速度,和記憶體存取架構的改良來克服頻寬不足的困境。

 

平行化

合成3-D圖形時, 資料量雖然龐大, 但是由於它有相當的規則性, 所以使用平行化的方式來加快運算速度是個效果不錯的解決方案。我們可以藉著架構的設計或者是利用圖形資訊的同時性來達到平行化的效果。

(a) 平行化的架構設計

平行化的架構設計常見於繪圖系統的硬體設計之中。基本上這種設計方式,是沿用CPU或平行處理系統中的研究成果,將繪圖處理管線加以平行化。

(1) 管線化 (Pipelining):這是增加資料處理 throughput 最常見的方式。我們可以將處理功能單元管線化, 或是把數個處理單元串接在一起來達成我們管線化的目的。整個處理的流程依照其3-D運算處理被切割成數個部分, 例如3-Dlabs公司所製作的GLINT 300SX這顆晶片。3-D標準著色管線也可以視為一種coarse grain的管線。在另一種方法裡,以基本的運算為考量來切割運算單元,非以其3-D處理運算來切割。再進而利用指令的平行度對架構作最佳化。這種結構常見於一些內含的RISC核心的3-D Processor,或是有3-D能力的CPU,如Intel i860 RISC處理器。

(2) 多處理器 (Multi-processors)﹔由於3-D繪圖處理中有大量而重複的運算, 故可利用多重的處理單元來平行地處理資訊。要實現多處理器的方式有很多種, SIMD(Single Instruction multiple data stream)是比較適合的一種方式,因為3-D繪圖的資料相當規則而雷同。但是,演算法選擇,以及記憶體架構必須加以修改以支援多處理器,尤其負荷平均分擔 (load-balance) 更是架構設計上的重點。一個高度平行化的SIMD系統在3-D繪圖硬體設計上,通常會碰到硬體利用率過低的問題 [7] 。因為所有的處理單元其功能都已固定, 而無法再用來處理其它的資訊。

(3) 超長指令結構 (VLIW; Very long instruction word):為了充份利用處理器內的處理單元, VLIW結構使用較長的指令格式直接對應處理器內的所有處理單元。其優點為能夠使性質不同的處理單元同時動作, 可以較一般CPU獲得更好的最佳化效果。如FujitsuTGPx4

(4) 超純量 (Superscalar) :超純量即在一個處理器中擁有多重資料流路的技術, 可以加快計算的速度。這種結構利用指令之間的平行度來達到增加速度的目的。但是由於3-D繪圖資料的特性,超純量少用在3-D繪圖加速器中。因若要用此架構設計晶片,不如直接利用現有CPU架構修改,如IntelMMX架構。

(5) 心縮陣列(Systolic Array):由於3-D繪圖資料後級的運算相當規則,故可以用特別設計的電路以達到良好的同步,穩定的資料流以及簡單精巧的控制。例如IBMSAGE 松下的HSSP,使用一維的systolic array來做塗色和移除隱藏面的動作。
 

(b) 繪圖資料的平行度

由於在將3-D的物體模型轉換成2-D的影像時, 資料在每一階段都有一些區域性的平行度可供硬體設計時利用。

(1) 多重圖框之間的平行度:這種同時性存在於多個連續的圖框之間, 例如3-D動畫應用。這個階段的同時性可以利用多處理器的架構如SIMDMIMD來達成。一個很好的例子就是利用一群網路上的工作站來描繪不同圖框。

(2) 子圖框中的平行度:我們可以以掃瞄線或區塊的方式來分割一個圖框為數個子圖框, 並且將每個子圖框分別交給不同的處理器來處理, 最後再將其組合起來。這種平行度多半利用於於SIMDMIMD等多重處理器的架構,常被大量使用於高階的 3-D繪圖工作站。美國北卡羅萊那大學的Pixel-planes計劃就使用了像素處理器來實現龐大的平行度。另外,StellarGS1000中的footprint processor亦是利用4x4交錯式來達成高速處理目的。

(3) 多重primitive間的平行度:不同的primitives可以用數個不同的處理單元同時處理, 然後再收集起來產生一張完整的圖框。但是在這種方法之中,如果平行地去存取frame buffer的話將會使記憶體頻寬不足的問題更加嚴重。因此為了避免這個缺點, SchlumbergerGSP-NVS系統使用了primitives處理器但其以串列管線的方式寫入frame buffer

(4) primitive中的平行度:在一般的應用之中,一個立體的模型是用一些3-D座標頂點所描述而成。因為座標轉換是一個4x4 矩陣的線性轉換, 所以每個頂點都可以獨立地被處理。幾何子系統常會利用到這部分的平行度以達到平行處理的效果。像是SunLeo graphics system中的浮點運算器陣列,或是SPC1500中的管線架構。

(5) primitive著色的平行度:當計算primitive的著色運算時, 會將其拆解成掃瞄線或區塊, 並且平行處理。有時這種方法會和子圖框中的平行度一起使用。像在Pixel-planes 5中將primitives切割成128x128block以為不同著色單元著色之用。

(6) 像素資料中的平行度:就算進入了像素的階段, 在色彩值(RGBA) 座標值(xyz)texture座標(uv)內仍有一些平行度。尤其是那些用DDA (Digital Differential Analyzer) 方式來產生著色結果的系統,因為各類資料處理上均為各自獨立,可以將架構加以平行化。如Sussex大學的image chip SGI公司的4D/240 GTX
 

記憶體輸出入系統的改良

如上面所提到的, 記憶體頻寬不足一直是3-D繪圖系統的一大障礙。我們可以從兩方面來考慮如何改善它:一是改進記憶體輸出入系統的架構, 另一則是利用改良的記憶體晶片設計。

 
(a) 記憶體輸出入架構

階層式的記憶體架構是最常用來改善記憶體頻寬問題的方法,尤其是快取(Cache)架構。當這種方法用在frame buffer時即稱之為virtual-buffer [8]。做法是在primitives描繪著色時,將結果資料先存在一個暫存的buffer,然後將這個暫存的buffer拷貝到最後的frame buffer中,以產生整張影像。這種方法只有在暫存buffer較小但是較快, 而且這兩個記憶體系統之間的傳輸速率夠快,而不會造成新的瓶頸時才有作用。另外,還有較一般化的方法,如InterleaveDouble buffer來改進記憶體架構。以下介紹數種改善記憶體輸出入頻寬問題的方法。

(1) 掃瞄法 (Sweep Algorithm):將暫存buffer對映到的區域以地毯式的方式掃瞄整個frame buffer一遍, 即可產生一張完整的影像。當每次對映區域改變時, 暫存buffer的內容將會被清除。因此不同的對應區域之間的資料將不會有任何關聯性。這個暫存buffer可以是一條掃瞄線, 一條帶狀區域或一個方塊, 其主要目的即為整批的更新frame buffer的內容,以利用區域性的資料存取改善記憶體存取效率。這個演算法利用了子圖框中的平行度。

(2) 像素快取 (Pixel Cache):在這兒所謂的快取就是一塊以一般快取控制法控制,並對映至frame buffer之快速記憶體。在大部分的演算法中,均具有資料存取的區域性,因此這個方法一般說來都可以獲得相當不錯的效果。然而,因為傳輸速率的限制,使用這種方式來增加效能仍有其先天的限制存在。一般說來primitive都有一個平均的大小, 根據先前的研究顯示,一旦存取的區塊大小超過這個平均大小時,這種平行化的記憶體輸出入結構就會變得沒有效率了。

(3) 交錯式存取 (Interleave) :在由VRAM組成的frame buffer中, 交錯式的記憶bank是一種很典型的設計。其原因是在高解析度時, VRAM串列埠的傳輸頻寬將會飽和。如圖1.8所示, 其做法為使用一顆外接的高速移位暫存器 (shift register),將多重bankVRAM資料同時以平行的方式移入shift register,然後再將其依序移出供顯示之用。有時這個移位暫存器會和色彩對照表 (color look-up table) 及數位類比轉換器 (digital-to-analog converter) 組合在一起。

(4) 雙緩衝區 (Double Buffer):做法為複製兩塊frame buffer 當對其中一塊輸出像素資料時, 另一塊則用來顯示。這種做法雖然使用了兩倍的記憶體, 但是在即時3-D動畫的領域中它還是常被使用的方式。
 

(b) 改良的記憶體晶片設計

由於半導體技術的進步, 設計者以往大都把注意力集中在大容量高速記憶體的設計上。但是現在情況有所改變, 由於多媒體對記憶體輸出入頻寬的要求, 越來越多的改良記憶體頻寬的設計於焉問世,出現了許多為特定用途而設計的記憶體。以下介紹一些專為3-D和影像處理發展的記憶體技術。

(1) 更快的記憶體存取:一些加速記憶體存取的技術如管線化,分頁模式 (page mode) 爆發模式 (burst mode) 同步(synchronization) 延伸資料輸出EDO (Extended Data Output) 等等已被廣泛應用在新式的記憶體上 [9]。如IBM公司的2ns cycle 4ns access pipelined CMOS ECL SRAM

(2) 雙埠 (Dual port):如前述, 將像素輸出至螢幕上是很規則且循序的動作, 但是它會耗用很大的記憶體頻寬。最好的解決方式就是使用特別設計的記憶體, 其有一個port專門用來將像素值送至螢幕上, 而保留隨機存取的port給處理器來讀寫記憶體。如1983TI發表的VRAM SamsungWRAM

(3) 記憶體內建邏輯 (Logic-in-memory) :隨著記憶體的容量不斷加大, DRAM中內建邏輯電路以提高效能,也逐漸變成一項趨勢。如此一來記憶體不僅能貯存資料, 也能對每個位元或一群位元作邏輯運算。在一般用途方面, 三菱公司的CDRAMSRAM和控制快取的邏輯電路整合在DRAM chip中, Rambus公司的RDRAM同樣也利用了整合在記憶體中的邏輯電路來達到加快存取速度的目的。在3-D加速應用方面,早期 Stanford大學的SLAM架構以掃描線為單位, 加速填滿多邊形的動作。而近年來三菱公司的3D-RAMSunFBRAM將透明度混合 (Alpha Blending) 及深度緩衝區 (Depth Buffer) 的功能整合在DRAM chip之中,對個別圖元作相關運算。

(4) 邏輯電路內建記憶體 (Memory-in-logic):在VLSI邏輯製程中, 記憶體的實作法和純記憶體製程不同。一般說來處理器中只會含有少量的暫存器。由於3-D繪圖需要大量的緩衝區, 所以不適合將所有的buffer都做在同一顆chip上。然而,若利用交錯式的技術將frame buffer分散在一群具有強大計算能力的處理器上,仍然是一個可行的方法。如Systolic Array都使用邏輯電路內建的記憶體將frame buffer資訊分散地貯存在各單元內。如IBMSAGEHSSP system
 

其它硬體設計上的考量

以上所提到的都是著眼於提高效能的設計, 大部分都遵循標準3-D標準管線的架構, primitive為單位來著色。然而由於3-D電腦繪圖硬體已廣泛的運用在各個領域,並已有許多的系統商品化。有時為了不同的著眼點, 我們會有許多不同的硬體設計策略。

  1. 提高真實度的考量:以primitive為單位的著色法會使物體看來總像是塑膠做成的一般。為了改善這個現象, 我們會使用一些修正的方法如透明度混成, 根據不同的表面做紋理貼圖,和製造陰影效果。尤其是具消除鋸齒 (antialiasing) 和透視修正 (perspective correction) 的紋理貼圖,更是目前 3-D Graphics Processor設計上的重點。但基本上,這些方法在真實度上都有其限制。
要製作出更好的光影效果, 我們要使用不同的著色方法, 光跡追蹤 (ray-tracing) 和放射擴散法 (radiosity) 來合成我們想要的3-D圖像。光跡追蹤通常使用遞歸的著色方式。研究結果顯示在光跡追蹤的過程中, 最常做的動作為決定光線或視線與物體交岔點上, 所以大部分的光跡追蹤硬體架構上都建構於交岔點的處理上。在應用層面上, 廣泛的用於科學視算,醫療影像以及3-D模型的影像的產生。另一方面, 放射擴散法在處理室內的光源擴散上,可以有相當高的真實度。

(b) 以應用層面為主的考量:由於硬體的整合以及多媒體的趨勢,在硬體介面上有些既存的介面標準,如CPU的介面,匯流排的介面,及記憶體的介面等。為了顧及市場的接受度, 有些3-D繪圖硬體傾向整合一些介面的邏輯電路,如PCI介面電路等。同時為了使同一套硬體設計能應用在不同的地方, 將其設計得更有彈性,更模組化也是3-D繪圖引擎的一個設計趨勢。另一方面, 因著許多應用軟體的研發,硬體最好也要支援和加速一些既有的3-D API (Application Program Interface)所提供的功能。如OpenGL [10]PHIGS+,以及Direct3D[11]等等業界標準。

(c) 市場價格上的考量:因為不同的市場定位,目前3-D graphics的硬體設計上,分成兩個主流。其中一個是高價位的市場,以高成像速度或高圖像真實度為號召,鎖定高階的運用。在設計上多採用平行化的架構設計,並大量利用繪圖資料的平行度來達成高速的目的。在另外一方面,近一兩年來低價位的消費市場已經慢慢成形,其硬體多半以單晶片或晶片組的方式,附加於原有的PC硬體架構之上。在其設計上因需與現存系統整合,而且許多軟硬體介面的de facto standard已經慢慢成形中,限制了架構上的設計。因此,對於在效率上的改良,多著重在記憶體輸出入系統上。
在消費市場的價格考量上,常存在價格和效能的trade off。如在記憶體的使用上,傾向於整合數塊buffer於同一個記憶體之中。如此雖然能降低成本,但因不同buffer之存取分別有其的區域性,整合成同一塊記憶體常因此使效能降低。目前Intel更提出了AGP架構 [12],希望能將一些buffer整合入PC的主記憶體中,但介面的頻寬仍是一個有待克服的瓶頸。

(d) 增加功能彈性的考量:在硬體設計中, 有一項重要的課題就是使設計出來的電路能夠有多種組態處理的能力。然而為了達成這個目的常會帶給我們一些問題, 如我們的硬體設計到底要以資料流動 (data flow) 的方式來設計,還是以控制流程 (control flow) 的方式來設計。以資料流的方式設計, 我們可以用特定功能的管線硬體來完成; 以控制流程的方式設計,我們則可使用一內建在系統之中的RISC核心來實作。一般說來, 資料流的方式因為有規則的資料處理動作,故通常可以得到較好的效率, 但缺乏功能上的彈性。控制流程的設計, 特別是那些以內建RISC核心為基礎的設計, 其處理功能通常都能有很大的彈性可以更動, 而且它的浮點或定點處理效能會隨著CPU的進步不斷地改進。但如果在需要高畫質的場合,由於演算法的複雜度增加造成程式難以最佳化,效能會下降得很快。
 


結論

在未來的多媒體系統與虛擬實境的顯示系統中,3-D電腦繪圖佔有一個關鍵性的角色。尤其在VLSI技術的長足進步之下,因為量產所帶來的價格優勢,會使得 3-D電腦繪圖的加速硬體越來越普及,甚至成為電腦中人機介面的標準配備。在這裡我們討論了3-D電腦繪圖硬體設計的幾個目標。

3-D電腦繪圖硬體加速技術上,整數與浮點數的運算,以及記憶體頻寬,仍然是設計上效率的瓶頸。而在本文中,討論了解決這些瓶頸的技術,並將之歸類為:使用平行化的方式加快計算速度,和記憶體存取架構的改良來克服頻寬不足的困境。另外,由於3-D電腦繪圖硬體已廣泛的運用在各個領域,並已有許多的系統商品化。有時為了不同的著眼點, 我們會有許多不同的硬體設計策略。在這裡我們也加以討論。

 

v 梁伯嵩,聶幼成,分別是國立交通大學電子研究所博士生與碩士生。

任建葳教授是國立交通大學電子工程系教授。

 

REFERENCES [1] Jon Peddie, Multimedia & Graphics Controllers, McGraw-Hill ,1994.

[2] Bor-Sung Liang, directed by Chein-Wei Jen, The Hardware Design for Rasterization with Antialiasing in 3-D Graphics Processor, Master Thesis, Institute of Electronics, National Chiao-Tung University, Taiwan, 1996.

[3] Jon Peddie Associates, 3D CAD, Chips, Software, Entertainment Market Report, Jon Peddie Associates, Tiburon, CA, Oct. 1995.

[4] Watt, A. , Fundamentals of Three- Dimensional Computer Graphics, 2ed Edition, Addison Weley, 1993.

[5] Awaga, M., Ohtsuka, T., Yoshizawa, H., and Sasaki, S., “3D Graphics Processor Chip Set," IEEE Micro, Vol. 15, No. 6, pp.37-45, Dec. 1995.

[6] Steven Molnar and Henry Fuchs, “Advance Raster Graphics Architecture,” Computer Graphics: Principles and Practice, 2nd Edition, Addison Weley, 1990

[7] Apgar, B., Bersack, B. and Mammem, A., “A Display System for the Stellar TM Graphics Supercomputer Model GS1000TM”, Computer Graphics, p.p. 255-262, vol. 22, No.4, Aug. 1988.

[8] Gharacholoo,N., et al, " A Characterization of Ten Rasterization Techniques", Computer Graphics, pp 355-p368, vol 23, No.3, July 1989

[9] Jones, F., “A new era of fast dynamic RAMs,” IEEE Spectrum, pp.43-49, Oct. 1992.

[10] OpenGL Architecture Review Board, OpenGL Reference Manual, The Official Reference Document for OpenGL, Release 1, Addison Weley, 1992.

[11] Microsoft Corporation, Direct X 2 SDK, http://www.microsoft.com/ msdownload/directx2.htm

[12] Intel Corporation, Accelerated Graphics Port Interface Specification Revision 0.9, http://www.intel.com/pc-supp/platform/agfxport/INDEX.HTM
 

[RETURN Bor-Sung Liang's HOME]