光線追蹤——光線處理的魔術師
VSIA
光線,永遠是3D畫面中最為顯眼的因素。適宜的光線會讓畫面看起來和諧美觀,在DirectX 9時代,計算機對于光線的計算和處理達到了一個新的高度一特別是HDR技術的引入,使得細微光線和明暗對比都得到了重大的進步。但我們仍然沒有停止對畫面品質的追求。光線追蹤技術開始加快了它普及的步伐。
游戲畫面中,我們感覺場景中的物體缺少和光線的互動。這是因為目前的計算機實時計算水平讓“光線”喪失了反射、折射、散射等特性。我們無法看到樹葉、墻壁、云彩等環境物體自身的反射折射光。結果就算我們在畫面中使用精密的頂點模型及大量細致的多層貼圖,最后也無法擺脫計算機實時渲染畫面帶給人的“假”的感覺。
光線追蹤——找回失去的光線
光線追蹤(RayTracing),這個古老而年輕的術語或許將彌補未來光線的缺失。說它古老,是因為它早已應用在CG動畫以及一些高級圖形處理中。說它年輕,是因為受制于計算機硬件技術的缺陷和計算能力的不足,很少出現在實時運算的3D畫面中。光線追蹤實際上是以模擬真實世界中的物理狀況為目標,對光線的各種照射和折射情況作出模擬的運算技術。在光線追蹤中,我們可以通過模擬光的自然流動,并模擬有關折射、反射以及光在半透明物質中的陰影以及色滲的物理效果,完成對各類相關畫面效果的處理。在現實世界中光源和它們所發出的光線的散射、折射、漫射等活動構成了光環境。在計算機處理中,往往由于硬件水平不足,只能減少光線的處理。一般情況下,對于煙霧、光線等物質的處理都采用非常簡化的計算方法,一般處理中,單光源或者雙光源的場景比較常見,多至4光源就不多見了,更不要說復雜的光線追蹤處理。
目前我們可以在計算機上實現的是在一個物理場景中對于光線進行簡單的追蹤處理。僅僅處理那些最終能夠“到達”屏幕的光線,并對光線的折射反射次數做出限制。這樣能一定程度改善光照效果:
1.首先確定光源點。將觀察者的眼睛作為光源點,僅僅計算能夠“看到”的部分。
2.對于每束光,找出光束與表面最近的交叉點,確定交叉點的表面顏色,并且根據場景中的光照調整此顏色。
3.追蹤計算每一束光線的照射,并且使用光線的折射或者反射光線再次計算,最后得到整個場景的光照效果。
實際操作遠比描述的復雜。目前,一些游戲愛好者和廠商已經在開發相關光線追蹤補丁。在著名游戲Quake4中加入了光線追蹤的算法后整體游戲的光影效果為之改觀。
追蹤未來——下一個特效熱點
在德國,一些玩家用20個AthlonXP 1800+處理器集群和一個自行設計的FPGA(現場可編程門陣列),完成了Quake 3的512×512畫面光線追蹤渲染,效果相當驚人。
光線追蹤技術對于畫面效果的改善是如此的明顯,但也需要極高的硬件條件。光線追蹤將在DircetX 10甚至更新的版本中被強力支持。在統一渲染架構的GPU/VPU成熟之后,光線追蹤計算應該被顯卡的強力浮點運算性能支持。可以預見的是,光線追蹤必將成為未來顯卡的基礎支持功能,就像HDR那樣火熱起來,隨之而來的是畫面效果的又一次飛躍——我們越來越接近真實了。
Core 2 Quad的勁敵——AMD Barcelona四核處理器淺析
八 戒
AMD首款原生四核心處理器
相對于Intel的Kentsfield及此前的Quad FX平臺,AMD強調Barcelona是首顆原生四核CPU。Kentsfield僅是將2顆雙核cPU集成在一起,并不是原生四核處理器,Core 2 Duo芯片內部的雙核心可以共享二級緩存,具有較高的協作效率,但如果兩顆Core 2 Duo芯片要進行任務協作,缺乏直接的通訊渠道,只能通過“共享前端總線一北橋(內存控制器)一內存”才可以完成二級緩存的數據同步,這個過程需要耗費較長的延遲,從而導致運作效率的降低。而AMD的Barcelona是真正將四核心集成在一片晶圓上,最大好處就是降低了四核心之間傳輸瓶頸,而且借助內置內存控制器的特點大大降低內存延遲,使得對cPU的緩存的依賴也大幅減少。
全面提升浮點性能及SSE指令執行效率
Barcelona一項重要的改進就是和core2架構一樣具備128位SSE執行位寬,一個頻率周期內可執行一個128位SSE指令。配合完整的128位SSE執行單元以及龐大的執行單元數目,Barcelona架構可在一個頻率周期內同時執行128位乘法、128位加法、128位數據加載與128位數據回存,或者是4個32位單倍浮點精度乘法與4個32位單倍浮點精度加法運算,將是目前的K8的兩倍。Barcelona架構大幅改進的SSE效能,更利于多媒體應用。
除了擴展SSE執行位寬外,Barcelona處理器的浮點調度單元也擴展到128位,使Barcelona架構處理器在浮點運算單元(FPU)、向量SSE數據的分派、傳輸、解碼速度三方面同時達到現有K8架構同頻率處理器的兩倍速度。這也使Barcelona架構在基于x87浮點指令的應用程序中的性能大幅提高。但在基于SSE/2/3的浮點應用程序中,Barcelona仍會輸給Core 2 Quad Barcelona實現了單周期執行同一種并行SSE2指令,這點和Core 2 Quad是一樣的,而K8需要2周期。不過,Core 2 Quad可以利用SSE2指令每個周期實現兩個雙精度乘/加運算,而Barcelona卻受到限制,同時在整數應用中,Barcelona還是處于劣勢。游戲性能由Core 2 Quad領先的局面,不會有太大的改變。
Barcelona對浮點單元做擴展也將帶來一些問題,那就是Barcelona主頻將難以提升,將抵消65nm工藝的優點。因此,早期的Barcelona在主頻上將低于Core 2 Quad,在效率上也不是同頻Core 2Quad的對手。Barcelona的最優競爭力是x87浮點應用,但是SSE/2/3浮點應用、游戲性能也將繼續和K8一樣弱于同頻Core 2 Quad。
增強型分支預測機制及專用堆棧管理器
引入增強型分支預測器也是Barcelona一大特色。一般而言,CPU采用的分支預測技術的精準性決定該CPU構架最適合的流水線寬度和級數。分支預測器能夠正確預測的數據就相當于cPu能夠處理的最佳數據量,只有這部分數據能夠成為被準確處理的信息。在K8時代,由于當時技術的原因,K8架構最重要的軟肋就是沒有間接分支預測器。而Prescott芯片加入間接分支預測器后,整體預測錯誤率降低了12%,因此,AMD在Barcelona中增加了一個512路的間接分支預測器,相對直接分支預測器給予CPU一個精準的地址,間接分支預測器給予了CPU大量的內存中所可能使用的數據,對Barcelona的性能提高有相當的好處。
Barcelona不僅僅加入了新的間接分支預測器,它的數據存儲器也擴大了兩倍,并記錄了更多的歷史預測結果,從而提升分支預測的正確率。除此之外,Barcelona處理器也引入了類似Pentium M的專用堆棧管理器功能來減少處理量。Barcelona還將具有Out-of-order load execution(亂序載和處理)能力,某些指令在實際運行當中可以繞過其他指令的處理,而且指令的存儲也可以不按順序進行,這在某些環境下對效率的提高有著很關鍵的作用。
共享式L3緩存設計
AMD的CPU架構一直在緩存容量上落后于Intel,擁有整合內存控制器的K8架構僅依靠512KB的1.2緩存就能夠擊敗當時的對手Pentium 4。直到現在主流的Athlon 64 X2也依然保持著512KD緩存。現在,考慮到多線程軟件對多核心的要求,也需要更高速的緩存來保持更好的性能,AMD處理器的緩存終于走上擴容之路。
但AMD并不像Intel那樣采用大容量L2 cache設計,而是在Barcelona中追加一個2MB的L3緩存,并且4個核心共享。在緩存設計上,Barcelona處理器的每個核心都有32KB+32KB的一級緩存,256KB的二級緩存和共用的2MB三級緩存,其中L1緩存和L2緩存依然分別是2路和16路,L3緩存則是32路。快速的32路L3緩存不僅可以更好地滿足多任務并行,而且對單任務的執行也有著較大積極作用。尤其在3D運用方面,2MB的L3緩存將對性能產生極大的推進作用。
更為高效的內存控制器
Barcelona仍將整合內存控制器。Intel處理器必須通過前端總線共享內存,如果系統中存在多個處理器,這些處理器無法直接通訊,必須通過“前端總線—芯片組一內存”的鏈路實現數據共享,不僅內存延遲時間較長,而且耗費資源。雖然Intel未來將通過多個內存控制器和FB-DIMM模組來緩解問題,但隨著處理器數量的增加,系統很容易出現內存資源緊張,導致協作效率越來越差。處理器的數量越多,這樣的沖突就越頻繁。為了盡可能降低沖突,Intel拿出的辦法就是使用大容量的緩存,但緩存必須與內存數據保持同步,緩存容量越大,保持數據同步的資源開銷就越大。
AMD的Barcelona架構擁有專門的內存控制器,可同時支持DDR3/DDR3/FB-DIMM等內存規范,每顆處理器都擁有屬于自己的內存資源,訪問延遲極低。其次,Barcelona通過5.2Gbps的低延遲Hyper Transport 3.0總線與其他的Barcelona處理器連接,如果采用32位總線,總線帶寬將達到20.8Gbps,通過直連總線,系統內的多個處理器可以直接通訊,始終保持極高的任務協作效率。Barcelona處理器的內存控制器采用雙64bit設計,兩個控制器可以獨立運行,使處理器執行多任務能力有一定提高。而且Barcelona還改進了數據預取器的數據寄存方式,直接將數據寄存入L1緩存中,相比K8架構中寄存入L2緩存的做法,新的數據預取器準確率更高,速度更快,內存性能及CPU整體性能將得益于此。
Barcelona還可以支持DDR3內存和FB-D1MM標準,非常彈性,可以讓廠商和用戶自己決定采用何種內存。
更為先進的省電技術
伴隨核心的增加,隨之而來的是功耗問題。Barcelona除了采用更先進的65nm制程外,還引入一項名為DICE(Dynamic Independent Core Engagement)的新技術。通過DICE功能,Barcelona的處理器核心和北橋部分將采用不同的電源通道,可令每個處理器核心都能使用獨立的動態電源管理,ACPI層可以單獨動態地控制每個核心功耗,當部分核心處于閑置時可把它的核心電壓及頻率降低,就不會影響正在全速運算的其他核心。當用戶只運行雙路任務時,Barcelona就只開啟兩顆核心,從而達到省電的目的。而當執行電腦多任務時,Barcelona就自動開啟所有核心。
Intel Core微架構的電源管理機制基本上改良自Pentium M與Yonah的設計。處理器內各功能單元并非隨時保持啟動狀態,可根據預測機制,僅啟動需要的功能單元。同時Core微架構導入分離式總線,遇到特殊狀況時,才會啟動全部的總線寬度,平時僅啟動——半的寬度,以節約電力。從理念方面,AMD的Barcelona在功耗控制上無疑更先進。
總結
盡管Barcelona架構比Core 2 Duo遲了一年左右發布,但是它仍然被AMD寄予厚望,擔當起奪回技術領先地位的重任。AMD表示原生四核的CPU將比非原生四核的CPU性能強。采用Barcelona架構的服務器版本將會在2007年中上市,桌面處理器也會在第三季度上市。
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。