在數位科技近幾年的發展中,大家對智慧型手機與平板電腦等行動裝置的依賴性越來越高,行動裝置的功能也進化為瀏覽網頁、執行遊戲等運算負擔較為吃重的工作。在這波發展趨勢的帶動下,行動裝置對處理器性能的需求也越來越高,推陳出新周期更逐漸追上電腦的腳步。NVIDIA將在今年推出全新Tegra 4處理器,持續進攻行動裝置市場。
初代Tegra默默無名
在2008年的時候,NVIDIA發表了Tegra APX與Tegra 600系列處理器,前者主攻智慧型手機市場,而後者的目標是車用電腦與小筆電,處理器核心皆為採用ARMv6架構的ARM11MPCore家族處理器。然而直到2009年9月,Tegra才隨著Microsoft Zune HD的推出,正式投入市場,第一支採用Tegra的手機則是由Microsoft Kin拔得頭籌。
在2010年1月的消費性電子展(CES)中,NVIDIA發表了隸屬Tegra 2系列的Tegra 250,核心皆架構從ARMv6提升至ARMv7,獲得許多廠商青睞,提升Tegra在市場上的能見度。不過它缺少NEON指令集,所以對於多媒體支援力比較薄弱,以至於無法播放1080p High Profile的影片。
Tegra 3發光發熱
選擇超人名字Kal-El作為開發代號的Tegra 3,似乎想要藉此透露它能夠提供超乎尋常的力量,Tegra 3是全球第一款四核心ARM Cortex-A9處理器,並且具有12個GeForce GPU核心,為了提高電力效率的4+1核心設計,也添增了與其他產品的區隔性。
透過NEON加強多媒體功能
NEON指令集又稱為MPE(Media Processing Engine,媒體處理引擎),為64、128位元混合式SIMD指令集,雖內建於所有Cortex-A8處理器核心,但是在Cortex-A9卻成為選配。NEON技術可以加速多媒體與訊號處理演算法,可應用於多媒體編、解碼與2D、3D繪圖等領域,根據ARM官方資料的敘述,NEON至少能提供2倍於ARMv6 SIMD性能。
架構依舊,核心翻新
Tegra 4雖然沿用上代4+1核心架構,但處理器核心從前代的Cortex-A9,提升為Cortex-A15,圖形處理器無論在核心數量及時脈上,都有明顯的提升。據NVIDIA公布的消息,Tegra 4能夠提供20倍於Tegra 2,或是6倍於Tegra 3的繪圖效能,可以期待Tegra 4帶來更好的運算性能。
協同核心再現
NVIDIA曾在2012年行動通訊大會(MWC)中表示,四核心將成為自家SoC晶片的標準規格,四核心的運算性能對於大部分使用者來說已經十分充足,名號也能夠滿足行銷面的需求,在電源管理機制設計得當的前提下,四核心的電力消耗並不會帶來太多負面影響。然而其明顯的缺點,或許只有生產成本的考量。
為了提升續航力,Tegra 4延續了Tegra 3的省電概念,在晶片中塞入第五顆處理器核心,不過名稱從協同核心(companion core)改為省電核心(battery saver core)。當裝置處於背景處理郵件、社交軟體同步,或是播放影片、音樂等,低效能需求情境時,系統將關閉正常核心,並使用省電核心負責執行程式。為了進一步節省電力,當系統進入省電模式時,正常核心中2MB的L2快取記憶體(L2 Cache)也會一併關閉,改為使用獨立的512KB L2快取記憶體。
▲左邊的晶片為Tegra 4的本體,右邊的晶片則為i500軟體數據晶片。Tegra 4晶片中上方金色的部分為省電核心,下方則是4顆正常核心,左右兩側綠色部分即為72個GeForce核心。(圖片來源:http://mobiltelefon.ru)
執行單元與吞吐量提升
Tegra 4所採用的Cortex-A15核心具有8個執行單元,能在單一時脈中執行8個指令,相較於Cortex-A9只有5個執行單元,可以有效提高效能。但是增加執行單元的效果並不是白吃的午餐,處理器的效能與記憶體延遲有緊密的關連性,如果因頻寬、延遲,或是快取失敗等因素,造成處理器閒置等待資料送入的話,就會嚴重影響效能表現。
為了要發揮額外執行單元的效能,處理器必需要提高指令平行化(Instruction Level Parallelism)的程度,藉由更深層的亂序執行(Out-of-Order execution),榨乾每個執行單元的效能。在此同時,記憶體平行化(Memory Level Parallelism)的需求也會一併提高,以應付處理器對快取及分支預測的依賴。
亂序執行提高整體效能
預先讀取指令是提高亂序執行的效率的重點,如果擴大亂序找查窗口(Out-of-Order lookup window),能增加預讀命中的可能性,進而減少當預讀錯誤時所造成的延遲與處理器資源閒置。
根據NVIDIA官方提供的Tegra 4白皮書,Tegra 4具有128個微動作(micro-operation)找查窗口(Out-of-Order lookup window),而競爭對手Quualcomm Krait架構只有40個。一般來說,1個ARM指令通常只會對應1個微動作,但是部分比較複雜(偏向CISS架構)的指令,可能包含2個或更多微動作,當處理器執行這種指令時,較多的找查窗口有助於分支預測以及亂序存取記憶體,大幅提高記憶體平行化程度,有效增進效能。
▲Tegra 4、4i規格對照表
微動作為指令元素
處理器可接受最基本的工作敘述稱為指令(instruction),也稱為巨稱集指令(macro-instruction),當指令被存入暫存器(register)之後,就會進行解碼動作,每條指令可以被分解成許多處理器的動作,這些所得的動作就稱為微動作。例如使算術邏輯單元進行1次運算,或是將暫存器資料寫入匯流排(bus),都是微動作的範例。
分享式L2快取快又省電
Tegra 4的每個正常核心中,L1具有指令與資料快取記憶體各32KB,4個核心共享2MB容量L2快取記憶體。L2快取記憶體可依使用情況切割為不同大小,分配給不同的核心使用,例如可以切1280KB給負擔較大的核心,其他3個核心則各使用256KB,若是執行多執行緒程式時,不同核心也能共用同一塊快取區域。這種共享式設計可以最大化快取記憶體效益,減少快取失敗的發生機率,進而減少向主記憶體讀取資料的次數,得到節省電力的附加效果。
NVIDIA也在白皮書中抨擊對手,指Krait的4個核心各自獨立搭載512KB容量L2快取記憶體,雖然總容量一樣,但是當程式需要512KB以上空間時,快取記憶體即無法負荷,勢必增加快取失敗的機率。此外當某一核心要存取其他核心中的快取時,跨核心資料交換的延遲將大幅增加,且Krait的非同步對稱多工技術(Asynchronous SMP)准許各核心運作於不同時脈,當高速運行中核心要與低速核心交換資料時,也需承受效能耗損。
▲Tegra 4共享式L2快取記憶體擁有比較大的使用彈性,而Krait的獨立式設計不但無法應負512KB以上容量需求,存取不同時脈核心的資料時,對效能的影響也比較大。
延伸閱讀:
NVIDIA 發表 Tegra 4 處理器、NVIDIA GRID 雲端遊戲系統
Windows 8、RT 同門生死鬥:x86 對決 ARM、Atom Z2760 對決 Tegra 3 效能實測
(後面還有更多Tegra 4介紹!)
4個核心速度一致
NVIDIA也不忘在作業系統部分攻擊對手。Tegra 4的多核心管理機制採用第2代可變式對稱多工技術(Variable Symmetric Multiprocessing),它的特色為可以關閉閒置中的核心,也能夠依處理器負載動態調整運作時脈,唯獨開啟中的核心需以相同時脈運作。除此之外,它不允許正常核心與省電核心同時運作,系統僅能擇一使用。
NVIDIA表示Android與Windows RT等系統,預設會將所有處理器核心視為相同,且具有相近的效能,作業系統的工作排程會基於這個規則運作,當多個核心運作於不同時脈的時候,每個核心所具備的效能就會有所差異,這個現象會打亂工作排程機制,進而導至整體效率低下。無論Tegra 4以正常核心或是省電核心運作,在同一時間下只有唯一的運作時脈,因此各核心效能落差不會太大,有助於作業系統安排工作排程。
亂序執行的優勢
由於處理器的運算通常會有前後相依的問題,排序在後的工作可能需要前面的結果做為運算元,所以必需等待前面工作完成,然而這等待的時間就是效能的耗損。亂序執行的基本概念,在於避免處理器閒置等待資料,亂序執行會利用等待資料的時間,先處理其他可以執行的指令,在全部工作結束後重新排序運算結果。順序執行與亂序執行的工作流程分別如下:
順序執行:
- 讀取指令。
- 將指令分配到對應處理單元,若指令缺乏所需資料,則等待資料送入。
- 處理單元執行指令。
- 將結果回存至暫存器。
亂序執行:
- 讀取指令。
- 將指令儲存至排序佇列。
- 當所需資料送入後,將指令從排序佇列分配到對應處理單元(可不依排序處理)。
- 處理單元執行指令。
- 將結果回存至結果佇列。
- 當排序在該指令之前的所有指令都完成後,將結果回存至暫存器。
從流程中可以看到,亂序執行會依序讀取指令,但是在處理的過程中,會擱置需要等待資料送入的指令,讓排序在後不需等待資料的指令插隊,然後在將結果再依順序排入結果佇列,待被跳過的指令都執行完成後,再將排序過的結果送出。
▲亂序執行可靈活運用等待資料送入的零碎時間,讓不需等待的指令插隊,降低等待運算元或是存取取資料所造成的效能耗損。
繪圖核心採傳統架構
Tegra 4的圖型處理器並沒有採用Unified Shader設計,而是將72個GeForce核心拆分為24個Vertex Shader與48個Pixel Shader,官方只有說明在電力效率與負載彈性的權衡下,選擇了分離設計所帶來較佳電力效率,並沒有進一步說明詳細原理,也沒有提供對照數據。
Tegar 4的Vertex Shader總共具有6組頂點處理引擎(Vertex Processing Engine),每組引擎由4個GeForce核心組成,具有16KB、96-entry快取記憶體,能夠有效降低向外部晶片存取資料的需求。根據官方白皮書的資料,架構的改進讓每個GeForce核心在相同時脈下,可以帶來1.5倍於Tegra 3的效能,且前後代圖型處理器Vertex Shader數量相差6倍,相乘之下差距達9倍之譜。
▲從Tegra 4的圖型處理器示意圖中可以清楚地看到,它總共具有6組頂點處理引擎,以及4組像素管線,像素管線可再分為3組ALU,負責進行各種數學運算等工作。
無法完整支援OpenGL ES 3.0
Tegar 4總共具有4組像素管線(Pixel Fragment Shader Pipeline),每組像素管線可細分為3組ALU,每個ALU則是由4個GeForce核心組成。在實際運作時,會以ALU做為最小層級的單元,並稱為MFU(Multi-Function Unit,多功能處理單元),因此Tegar 4總共具有12組MFU,MFU可以執行函數、三角函數、對數、倒數、平方根以及MOV等指令(組合語言中的複製)。
Pixel Shader總共具有16KB的像素快取記憶體,均分為4組4KB容量L1快取記憶體,以供像素管線使用,官方表示此設計可以降低向外部畫格緩衝區(frame buffer)存取次數達50%,對於效能與電力效率都有正面的影響。
不過令人遺憾的是,Tegar 4的Pixel Shader只支援FP20精度(即20bit精度),即便NVIDIA表示人眼不容易分辨FP20與FP32的圖像品質,選用FP20可以提高效能、縮小晶片尺寸,進而提升電力效率,但是OpenGL ES 3.0要求精度需達FP32,所以Tegar 4無法完整支援。雖然短期內不會造成太多影響,但當越來越多遊戲採用OpenGL ES 3.0後,NVIDIA只能靠THD(為Tegra最佳化的App)或新晶片來解決問題。
Early-Z剷除不必要像素
Tegra 4也是透過光柵引擎(Raster Engine),將Vertex Shader描繪的頂點資料轉換為平面上的點陣資料,不過不同於傳統繪圖模式在Pixel Shader結束工作後,才由Z Buffer剔除不必要物件,Tegra 4會透過Early-Z在Pixel Shader運作前,先將不會出現在畫面上的物件剔除。
Early-Z的好處是可以避免Pixel Shader描繪不會出現的物件,但它的代價就是Vetrex Shader需要執行2階段運算。第1階段時,Vetrex Shader會繪製所有不透明物件,並取得各像素Z值,過程中Pixel Shader不會有任何動作,第2階段則與一般繪圖過程相同,由Vetrex Shader與Pixel Shader描繪出完整畫面。Early-Z最大優勢在於可以降低Pixel Shader存取記憶體的需求,降低電力消耗,但是過程中很可能讓Vetrex Shader成為效能瓶頸所在,不一定能提高整體效能。
可升級的數據晶片
Tegra 4與前代產品一樣,並未整合行動通訊功能,需透過i500軟體數據晶片協助。i500最大的特色就是採用軟體定義無線電波技術(Software Defined Radio),不但目前可以支援DC-HSPA+、LTE等最新規範,未來也能透過軟體升級方式,支援往後推出的規範,同時也能給予各電信商最大的客製化彈性。
i500整合ICE9045基頻晶片與ICE9245 RF晶片,並內建具備8個1.3GHz可程式化核心的Deep eXecution Processor處理器,以提供行動通訊所需的運算效能,它不但可以滿足目前多頻LTE UE Category 3 100Mbps所需的150 GFLOPS/s運算量,也確定可以升級至LTE UE Category 4 150Mbps,應用面相對寬廣。
(後面還有Tegra 4i介紹以及Tegra 4效能實測)
Tegra 4i採Cortex-A9
NVIDIA也發表了尺寸、功耗較低的Tegra 4i處理器,兩者架構相近,皆採用4+1核心設計,不過Tegra 4i仍採用Cortex-A9內核。回顧過去,Tegra 2採用Cortex-A9 r1p1版本,Tegra 3則是r2p9,Tegra 4i採用的是最新的r4p1版本。
Cortex-A9 r4p1最大的變革在於快取架構的提升,GHB、L2 TLB、BTAC皆擴大4倍,規格與Cortex-A15相同,能夠提高分支預測的準確度,進而提高效能。根據NVIDIA表示,Cortex-A9 r4p1相較於r2p9,可以提高15%效能,再加上Tegra 4i最高時脈可達2.3GHz,更可拉大與Tegra 3的差距。
▲Tegra 4i的處理器部分採用Cortex-A9核心,但同樣為4+1架構設計,圖形處理器核心數量降為60個。下方粉紅色區域,即為整合至內部的i500軟體數據晶片。(圖片來源:http://www.muycomputer.com)
GHB、LTB、BTAC
GHB(Global History Buffer,全域歷史緩衝)為採用先進先出(FIFO)資料架構的緩衝區,它會將快取失敗的資料暫存起來,當緩衝區空間用罄時,會先刪除較舊的資料,可用於「校正」快取運作模式,增加快取命中率。
LTB(Translation Lookaside Buffer,轉譯找查緩衝)會儲存虛擬記憶體位置(virtual address)與實體記憶體位置(physical address)的對應關係,避免每次存取記憶體時,都需要向記憶體中的分頁表查尋位置,進而省下記憶體本身與資料傳輸所產生的延遲。
BTAC(Branch-Target Address Cache,分支目標記憶體位置快取)則是會記錄虛擬記憶體位置中的資料所在,以免記憶體位置映射改變、快取資料重新排列後,系統無法直接存取該資料。當BTAC快取命中後,系統會直接將BTAC作為程式計數器(Program Counter),並視為存取資料的依據,可以將快取延遲降低為0個週期。
縮減繪圖,整合i500
Tegra 4i的圖形處理器架構與Tegra 4相近,只具有4組頂點處理引擎與2組像素管線,但是每組像素管線由6組ALU組成,而不是Tegra 4的3組,每組頂點處理引擎與ALU仍由4個GeForce核心組成,核心總數只有60個。此外它的記憶體控制器也降為單通道32bit,最高時脈僅為660MHz,理論效能只有Tegra 4的82.29%。
不同於Tegra 4將i500採外掛方式處理,Tegra 4i直接將i500整合進處理器內部。Tegra 4晶片尺寸為23 x 23mm(BGA封裝)或14 x 14mm(FCCSP封裝),而i500晶片尺寸為7 x 7mm,相加之後占用面積分別為578mm2或245mm2,然而Tegra 4i晶片尺寸僅為12 x 12mm,占用面積為144mm2,只有Tegra 4的24.91或58.78%,更適合用於手機等體積較小的裝置。
▲Tegra 4i的圖形處理器與Tegra4架構相同,但它只有3組頂點處理引擎,及2組像素管線,每組像素管線中包含6組ALU。
▲Tegra 4、4i圖形處理器比較表
效能成長驚人
NVIDIA於Tegra 4的處理器與圖形處理器白皮書附上效能數據,因此筆者選擇Htc New One與Nexus 7等2款產品進行測試與比較。Tegra 4的數據為NVIDIA官方,以搭載時脈為1.9GHz的Tegra 4之平板電腦測得(其他細節未公開),而New One則是搭載時脈為1.7GHz的Qualcomm Snapdragon 600處理器,Nexus 7採用Tegra 3家族中最低階的Tegra 3 T30L處理器,時脈僅為1.2GHz。
在Sunpider測試中,可以看到而New One表現約為Nexus 7的2倍,而Tegra 4約為Nexus 7的3倍,安兔兔測試也呈現相近的結果。GLBenchmark部分筆者需特別聲明,NVIDIA提供的數據為2.5版成績,但是該版本目前已無法使用,故對照組採用2.5.1版進行測試,Tegra 4可領先Nexus 7的6~8倍。
Tegra 4的效能看起來不錯,不要忘了上市時,Tegra 4很可能會依耗電量將產品分為不同時脈的版本,故不是所有採Tegra 4的裝置都能有如此神勇的表現,而且Qualcomm Snapdragon 800處理器也將於今年第2季上市,屆時最強行動處理器(尤其搭載於手機之版本)鹿死誰手還很難預測。
▲SunSpider為JavaScript效能測試工具,使用內建瀏覽器的情況下,Terga 4完成所有項目所需的時間最短。
▲在負擔較吃重的1080p解析度測試下,Terga 4效能可以領先Nexus 7約6.06倍,表現相當出色。
▲安兔兔成績能夠反應裝置整體效能,雖然NVIDIA並沒有公布測試平台細節,但是還是能略知Terga 4效能的強大。
▲在負擔較輕的720p解析度測試部分,Terga 4領先Nexus 7的幅度可拉大到約7.97倍,差距只能用誇張來形容。
後續接班人已出現
雖然Tegra 4尚未上市,不過NVIDIA已經在3月下旬舉辦的GPU技術研討會(GPU Technology Conference)中,透露了接下來2款Tegra處理器的消息,並維持了以美國漫畫英雄做為開發代號的傳統。下個世代的Logan將引進CUDA 5.0與OpenGL 4.3,而且預計於2014年初發表。預計在2015年發表的Parker,將搭載64位元ARM架構Denver核心與Maxwell圖型處理器,並將採用台積電的FinFET電晶體(鰭式場效電晶體)技術,勢必能在控制功耗的同時,提供更強大的效能。
為了要讓開發人員有合適的CUDA測試環境,NVIDIA也發表了Kayla開發平台,它採用Tegra 3處理器與MXM介面的獨立顯示晶片,有趣的是其顯示晶片採Kepler架構,並具有2組SMX(共384個GeForce核心)。從使用Cortex-A9核心的Tegra 3處理器,雖可看出它並不是Logan的原型機,但顯示晶片或許暗示著Logan的某種可能性,令人不禁期待往後Tegra的發展。
▲例代Tegra名稱的由來
本文同步刊載於電腦王雜誌
歡迎加入電腦王雜誌粉絲團