四核Cortex-A15智能手機時代全面降臨
今年的新手機趨勢無異是全面向四核靠攏,不過同樣是四核,在實際的性能上其實是千差萬別。例如針對入門級主流市場的四核手機普遍采用的都是 Cortex-A7 以及 Cortex-A9 級別 的 CPU 內核,這類內核性能、成本以及發熱都會較低,因此在入門市場上大行其道。
而在高端智能手機中則出現了一些新的變化,除了去年就已經嶄露頭角的高通 Krait 系列架構四核外,ARM 正統的 Cortex-A15 也開始走上了四核手機的舞臺,例如三星的 Exynos 5 Octa、NVIDIA 的 Tegra 4。
Cortex-A15 是 ARM Cortex-A 家族中目前最強勁的 CPU 內核架構,發布時間為 2010 年,德州儀器是最早(2011 年)投產基于該架構處理器(型號為 OMAP 5)的授權廠商。
和 ARM 的 Cortex-A7、Cortex-A9 等微架構相比,Cortex-A15 有很大的不同。
A15 和 A9 同樣具備亂序執行,但是 Cortex-A15 具備(兩倍)的指令發射端口和執行資源,指令解碼能力也要高出 50%,動態分支預測能力更強(采用了多層級分支表緩存),指令拾取帶寬更強(128 bit vs 64 bit),這些都能讓 A15 的流水線執行具備更高的效率。除此以外,A15 采用了 VFPv4 浮點單元設計,能執行 FMA 指令以及硬件除法指令,相較而言 A9 的峰值向量浮點性能基本上只有 A15 的一半。
不過在現實中,A15 的對手應該是高通自行設計的 ARMv7A 兼容處理器架構 Krait。高通對 Krait 的架構細節透露并不是很多,大致上就是 3 個指令解碼端口(和 A15 一樣)、7 個指令發射端口(A15 是 8 個)、4 個發射端口(A15 是 8 個),具備 4KiB + 4KiB 的單周期時延 L0 Cache 設計。
如果采用老掉牙的 Dhrystone DMIPS/MHz 作為性能衡量指標,Krait 是 3.3,A9 是 2.5,而 A15 這是 3.5,從紙面上看 Krait 的確非常適合作為 A15 的對手。
不過 Dhrystone 的缺點是顯而易見,它是完全可以塞進 CPU 的 L1 cache 里執行,這就意味著無法以此對 L2 cache(A15 是一體化設計,Krait 是分離式設計,一體化設計可以減少內存交換導致的大量時延)、亂序執行的硬件效率/復雜性、內存子系統單元(A15 的內存單元可以實現在一定條件下預執行一條加載指令,而 Krait 能否具備這樣的能力尚不清楚)等諸多體系架構區別對實際性能的影響作出有價值評估。
當然,ARM 采用的 DMIPS 指標實際上并非 28 年前的那個 Dhrystone,而是來自 EEBMC Coremark(其實 Coremark 就是前者的改善版本,主要是為了減少預優化、對測試有比較嚴格的規則),但是 CoreMark 同樣可以塞進現今大多數處理器的 L1 cache 里,Dhrystone 不能反映現今移動設備真實應用的問題在這里依然存在。
由于應用環境日趨復雜,要正確評估一個移動設備處理器的性能變得越來越復雜,因為現在的移動設備跑的網頁瀏覽、三維游戲、音視頻、人工智能等都不可能可以完全塞進 L1 Cache 里,因為這些應用牽涉到大量的數據處理。
這時候,人們在臺式機性能評估上學到的經驗和測試辦法就可以在移動設備上采用了。對 CPU 測試來說,最合理的測試方式是采用多種計算規模的真實應用源代碼以本機代碼進行編譯再進行測試,在這樣的情況下移動設備的計算單元、內存單元都得以充分考驗,測試結果最具參考價值。
能夠獲得業界(計算機工業、學術科研)官方認可的 CPU 測試當屬 SPEC.org 的 SPEC CPU,它就是采用源代碼方式,讓測試人員可以編譯為本機代碼來測試,許多處理器在研發伊始就采用 SPEC CPU 作為最重要的性能評估指標。
SPEC CPU 的最新版本為 CPU2006,但是 CPU2006 針對的是當前的臺式機、工作站、服務器處理器應用環境,內存容量(CPU2006 支持多線程測試,因此要求的內存容量相當高,8 線程處理器用 16 GiB 內存也是有點勉強)和自身存儲空間(未編譯時就要數 GiB 空間,編譯后就要占用 1x GiB 了)要求都較高,因此采用 CPU2006 對目前的移動設備來說是不太現實的。
SPEC CPU 是每隔幾年就更新一次,在 CPU2006 之前的舊版本為 CPU2000,它的 speed 整數性能測試完全可以在 1GB 級別的移動設備上運行,在以前甚至有一些 CPU2000 的測試被移植到 GPU 上做加速性能測試。
ARM 陣營極少公布 SPEC CPU 測試結果,這當然也是有原因的,因為在過去的不少時間里,ARM 針對的設備大都只有幾百兆內存空間,塞進操作系統后,留給程序運行的空間就更少,此外由于省電先決的考量 ARM 處理器的性能其實真的不怎么樣。
不過有意思的是,今年 ARM 陣營里的 NVIDIA 在發布 Tegra 4 的時候公布了 CPU2000INT 的測試結果:在 1.9GHz 頻率設定的 NVIDIA 參考平臺里,Tegra 4 的 SPEC CPU2000int_base 為 1168。這個測試結果相當于 2003 年第四季度 SPEC.org 上公布的 AMD K8 Sledgehammer 2GHz 測試結果。
NVIDIA 還進行了在小米二手機(采用高通 Snapdragon S4 Pro 即 APQ8064 1.7GHz)上的 CPU2000 測試,并且根據高通公布的 S800 相對 S600 在 IPC(每周期指令)和頻率上的變化幅度而估算出來的 S800 的 CPU2000 測試結果:
從圖表來看,S600 的 CPUINT2000_base 測試結果相當于 Tegra 4 的一半不到,這在很大程度上反映了 Cortex-A15 相對 Krait 系處理器的真實應用差別。
需要指出的是,雙方的測試平臺本身也是有一些影響的,例如小米二手機在執行這個測試的時候,CPU 頻率是否存在降頻現象,NVIDIA 對此沒有說明。
一般來說,像 APQ8064 在四核全速運行的時候,會在一段時間內由于過熱而導致頻率從最高的 1.7GHz 開始下降。當然,NVIDIA 在這里公布的是 speed 模式下的 CPU2000INT 測試結果,這個模式下是單線程的測試,只有一個 CPU 內核會被使用。
比較遺憾的是高通對這個測試結果尚未提出異議(據說高通對于處理器性能的孰高孰低并不十分看重,他們戲稱是賣基帶送 CPU),而 CPU2000 的配置對一般人來說是相當復雜的事情,所以這個測試暫時沒有第三方使用同樣的平臺測試佐證。
威盛電子在發布 Nano X2 處理器的時候曾經公布過一份文件,里面也有采用 CPU2000 對 Nano X2 1.2+GHz 和 Atom D525 進行測試,其中 gcc 編譯器出來的 CPU2000 INT 成績分別為 799 和 582,采用 Intel 編譯器出來的成績分別是 955 和 725。
NVIDIA 的 Tegra 4 的 CPU 屬于 ARMv7A 指令集,因此編譯器很可能是 armcc 或者 gcc,NVIDIA 新近收購的 PGI 是一家老牌編譯器廠商,也許它能提供內部測試版給 NVIDIA,只是 PGI 過往從未發布過 ARM 系編譯器。
到這里,大家應該對 Cortex-A15 的架構特點以及和它的一些競爭對手在性能上的區別有大致的了解,不過這樣的旗艦級處理器在智能設備的實際應用情況又如何呢?
這個問題其實來自于一些人的猜測,我們看見一些文章認為 Cortex-A15 的性能高但是功耗大,并不一定適用于手機。
這個問題放在一年前的話可能會有各種不同的答案,但是現在是 2013 年 8 月下旬,答案已經非常清晰:已經有采用四核 Cortex-A15 的手機上市,而且會有更多的采用 Cortex-A15 的手機上市,這也為 Cortex-A15 是否適用于手機的爭論畫上了一個句號。目前,明確可用于手機的 Cortex-A15 架構的四核移動處理器主要有兩種,一種是三星的 Exynos Oct,另外一種是 NVIDIA Tegra 4。
三星公司在四月二十七日上市的 Galaxy S4 有多個型號,但是從處理器來分,就分為兩種機型:高通 Snapdragon 600 和三星 Exynos 5410。
S600 其實類似于去年大紅大紫的 APQ8064,CPU 微架構為 Krait 300,相對 APQ8064 的 Krait 微架構來說,它增加了硬件數據預取器,能預先將數據從內存中抓到 L2 cache 里。除此以外 Krait 300 還改善了分支預測的準確度,這些變化能改善 Krait 300 的 IPC(每周期指令)大約 15%,加上最高頻率提升至 1.9GHz(取決于手機廠商,像 HTC One 就選擇了較低的或者說和 APQ8064 上限一樣的 1.7GHz),因此可以認為 S600 的 CPU 性能比之前的 S4 Pro 最多提升了大約 28.5% 左右,更接近于 Cortex-A15 的性能,不過它使用的制程和 S4 Pro 一樣依然是 28nm LP,這個制程沒有在漏電流上作優化,因此在耗電方面 S600 比 S4 Pro 更大。
為什么三星不選擇單一型號處理器的方式呢?首先三星肯定要支持自家研發的處理器,這是毫無疑問的,因此基于 Cortex-A15 的 E5410 自然成了配置之一;其次是三星作為一家韓國公司,同時也是一家跨國公司,產品需要賣向全球,有些的確已經邁向了 4G LTE,有些則還是 3G 世代,面對世界各地的通信制式、合作運營商的要求以及全球行銷的潛規則,高通方面的產品是不得不考量的,因此在這里也把定位比較接近的 S600 作為另一種配置以支持LTE。
三星 Galaxy S4 GT-I9500 主電路板正面
三星 Exynos 5410 管芯圖
深色部分是四核 A15 區域
粉紅色部分是四核 A7 區域
在國際版的 GT-I9500(以及中國大陸區的聯通版、電信版)采用的三星 Exynos 5 Octa 內部型號為 Exynos 5410,CPU 部分是一組四核 Cortex-A15 1.6GHz 加另一組四核 Cortex-A17 1.2GHz 的搭配方式。不過 E5410 只支持 big.LITTLE 模式里的 IKS(核內切換器),不支持 GTS(全局任務調度)模式,因此看上去雖然有物理上的八個內核,但是本質上同一時間內最多只能實現同時使用四核 A15 或同時使用四核 A7,如何切換則是由根據當前任務的負荷性質決定。
NVIDIA Tegra 4 推出多個月后,除了自家的 SHIELD 手持游戲機和 HP、華碩以及東芝等廠商的筆記本電腦外,還會被用于一些手機里面,目前已經公布的有中興的 U988S,據聞還會有更重量級的手機隨后出來。
NVIDIA Tegra 4 管芯圖橙色區為 4+1 Cortex-A15核心,綠色小方塊區域為 GPU Tegra 4 和三星 E5410 的主 CPU 都采用了四核 Cortex-A15,不過 NVIDIA 沒有采用 ARM 的 big.LITTLE 結構,而是采用自己 4+1 核的結構,4+1 中的“1”被稱作伴侶核。
“伴侶核”是一個采用省電設計、運行在較低頻率下的 Cortex-A15 內核,用于處理負載較輕的任務以達到省電的目的,一旦負載較重就會切換到主 CPU 核上。
和 Cortex-A15 + Cortex-A7 的 big.LITTLE 相比,這樣的設計據稱有兩個好處:
首先,是由于“伴侶核”與主 CPU 核心架構完全一樣,CPU 切換時上下文切換(或者說程序執行的現場切換)的時間比 Cortex-A15 切換到 Cortex-A7 的方式快很多,這是因為不用進行復雜的映射;
其次,Cortex-A15 的單核性能比 Cortex-A7 高很多,因此大多數一般的應用中并不需要頻繁切換到主 CPU 核,從而達到更省電的目的。當然,具體的耗電情況需要等到設備出來后進行詳細測試。
在商業社會里衡量一款產品是否成功,關鍵的指標之一自然是出貨量。按照 Digitimes 援引 TrendForce(集邦科技)在今年七月末的一份研究報告,三星 Galaxy S4 的出貨量將會達到 2300 萬部的總出貨量,而在更早之前已經有媒體報道指出三星 Galaxy S4 的出貨量“已經”達到兩千萬臺。
如果只是靠品牌知名度和好不好看的話,任何產品也不可能做到快速的大量出貨,Galaxy S4 作為旗艦級產品,它的規格配置在吸引力方面起到了很大的作用,四核 Cortex-A15 或者四核 S600 的采用是它成功的關鍵因素之一,這些成功反過來也會對人們的品牌認受度產生正面印象。
上圖就是我們前面提及的預期購買手機品牌調查百分比,可以看到在三星發布了 Galaxy 后的第一季度到第二季度變化值是呈上升態勢,而蘋果方面則是依然不斷地下滑。
所以從這一小節中我們可以得出結論,市場上已經有四核 Cortex-A15 手機上市,而且從市場趨勢來看這樣的產品已經獲得了實質性的認可。
ARM 的實驗室里雖然也有自己開發的處理器實體,但是這些處理器是作為研發之用,不會拿出來賣給最終消費者的,市場上的“ARM”處理器都是 ARM 透過架構授權或者內核授權的方式由第三方廠商開發或者拼湊而成。
因此在市場上你會看到五花八門、各式各樣的 ARM 處理器,它們來自不同的芯片設計公司、不同的制造廠商,由于設計技術水平、經驗以及制造廠的制程不同,實際上出來的芯片在一些指標、功能上會有不可忽視的區別。
就譬如我們這里提到過三星 Exynos 5410 和 NVIDIA Tegra 4,CPU 都采用了四核 Cortex-A15,但是兩者的區別其實多,例如:
1、Exynos 5410 采用三星的 28nm LP HKMG 制程,最高頻率設定是 1.6GHz,Tgera 4 采用臺積電的 28nm HPL 制程,最高設定頻率為 1.9GHz;
2、Exynos 5410 采用了 A15*4 + A7*4 的設計,Tegra 4 采用了高頻 A15*4 + 低頻(700~800MHz)低耗電 A15*1 的設計;
3、兩者的 GPU 截然不同,Exynos 5410 采用了 ImgTec 授權的 PowerVR SGX544MP3 (tri-core) @ 480 MHz,Tegra 4 采用的是 NVIDIA 自己開發的 GPU 架構,幾何單元為單精度浮點,像素單元為 20 位浮點,這應該是吸取了當年 GeForce FX 世代受挫的經驗而特別炮制的平衡設計。
4、兩者的 die size(管芯尺寸)不一樣,Exynos 5410 按照 EDN 的說法應該是 122mm^2,而 Tegra 4 大約是 80mm^2,后者比前者小了大約 33%,Tegra 4 的設計目標更偏向于性能、耗電、成本三者的平衡,而三星由于采用的 PowerVR 是屬于分塊式延后渲染器(TBDR),因此片上需要有 TBDR 獨有的電路,這些電路會增加不少面積。
從這一小節我們可以看出,同樣是采用四核 A15 的處理器,在很多方面都是完全不一樣的,這將對處理器的功能、性能、耗電構成不少的影響,最終反映到終端設備——手機、平板電腦上的表現也會有一定的差別。
NVIDIA 在較早之前發布的 SHIELD 掌機采用的是前面提到的 Tegra 4 處理器,這是 NVIDIA 的第四代 Tegra 處理器,和其他手機 SoC 芯片廠商有多款不同芯片供選擇不同的是,NVIDIA 這幾年走的都是單芯片多型號路線,也就是把芯片單純按照頻率、GPU 使能規模來劃分多個型號供客戶選擇。
SHIELD 采用的 Tegra 4 具體型號是 T40,是 Tegra 4 的優異性能版本,最高頻率設定為 1.9GHz,GPU 規模使能規模為 72 core 但是頻率多少并不清楚,Tegra 4 GPU 的文檔有提到在 672MHz 時候性能規格,但是這不代表 T40 的 GPU 就是這樣的規格。
不過手機顯然不會上這樣規格的 Tegra 4,因為 SHIELD 的形制較大,可以塞進風扇輔助散熱,電池容量也可以支持這樣規格跑接近 10 小時的游戲,即使是旗艦級別手機的個頭只有它的三分之一不到。
NVIDIA 提供的手機版 Tegra 4 型號為 AP40,這個版本在多個方面做了精簡,例如 T40 有很多的 I/O 口,AP40 只保留了必要的,溫控的策略也會有不同。
從一些廠商提供的消息,經過這些精簡后,AP40 的 TDP(熱設計功率,代表能讓設備低于結溫所需的散熱能力)從 T40 的 8-10 瓦降低到了 3 瓦級別,這相當降低到了 1/3 不到,變化非常大。
那么功率降低到這么多,性能是否會有大的下降呢?這是一個有趣的問題。不同的廠商會采用不同的功耗控制策略。 一般在多核心同時高負荷工作下,手機的處理器工作速度會隨著溫度的上升而降低,從而把總的功耗降到較低的水平。
不過,單核心工作的時候,頻率的下降速度就會慢很多。而且大部分的情況下,CPU 高負荷的往往是間歇性的,對于大部分的應用,實際的性能應該不會有什么影響。
Cortex-A15 相對于 S600、S800、Cortex-A9、Cortex-A7 等“對手”來說優勢就是具備更強的單核心性能。在多線程程序并不十分普及的情況下,單核心性能的重要性是毋庸置疑的。
其實無論是手機還是我們的臺式機、筆記本電腦,日常的不少程序都采用單線程代碼。多線程程序的開發需要比較復雜的代碼編寫、經驗以及調試,而且很多任務并不容易做到并行化,因此經過很多年以后,實際上真正的多線程重負荷的程序即使在 PC 上也并不普遍,在移動平臺上就更少了。
除了一些專門用來燒機的軟件外,能讓多核尤其是四核手機老是處于跑滿狀態的應用可說是少之又少,更常見的情況是某些高計算負荷的任務讓四核沖起來一下就跑完了。
舉個簡單的例子,例如刷微博或者刷網頁的情況,里面包含很多圖文的信息,刷的時候速度快的處理器能夠很快地顯示出內容,而速度較慢的處理器則需要等待一段時間。
刷完以后 CPU 總的占有率會驟然降低,之后都是一些單線程的程序讓個別內核處于較飽滿的負載狀態。
真正需要CPU高負荷的時間占總時間的比例很低,甚至連 1% 都遠遠不到,但是這個時間雖說很短,卻往往是影響用戶體驗的一個非常重要的因素。
因此,CPU 的峰值性能的重要性毋庸置疑。此外,現在有一種趨勢,移動處理器面對的屏幕分辨率甚至普遍比筆記本電腦甚至臺式機更高,這意味著界面的處理壓力越來越高。
界面的刷新和網頁刷新的情況類似,對 CPU 的性能要求高,但是時間短,用戶的體驗感受很直接。
因此更高的處理器速度也將是一種硬性的需求,而不是可有可無的擺設。但是對于性能和功耗的評估需要有理性的分析,有一些人一味強調拷機軟件下的 CPU 頻率過熱降頻情況對手機用家來說其實是某種程度的誤導,這和實際的應用情況完全不一樣。
多核處理器的意義更多在于多任務的情況。Android 和 Windows 都是典型的多任務操作系統,多核處理器在處理多任務的時候大大提升了多個程序同時運行時的處理和響應速度。
不過,多任務對于核心數量的需求是有限的,PC CPU 和移動處理器主流的核心都是兩到四核,這不是偶然的。
雖然系統中有多個線程和多個任務同時存在,但是出于活躍狀態的往往也就少數幾個,因此更多的 CPU 核心意義是不大的?,F在有些廠商推出的所謂八核 Cortex-A7 的處理器,在絕大部份的情況下性能一定還不如雙核 Cortex-A15。
ARM 是一家非常純粹的設計公司,它并不向終端消費者、廠商出售任何處理器,而是提供授權給第三方公司,讓其自行設計或者堆砌出自己的處理器。
這樣的好處是它可以節省掉一大筆行銷上的資源,ARM 設計一款處理器內核并不會產生任何庫存壓力,它只消告訴廠商這個處理器如何做對接以及可以用來干嘛就可以了,接下來就是等著收錢了。
在這樣的情況下,ARM 可以做到非常靈活多變,當看到市場上(也許是將會)存在空擋時候,就能很快推出相應的“產品”。按照時間來看,Cortex-A12 的推出其實就是瞄準了 Cortex-A7/A53 和 Cortex-A57 之間的空隙,屬于未來一年后的中端偏低市場的主力。
在 Cortex-A12 推出后,有些人就馬上下結論,這代表了 ARM 對 Cortex-A15 在手機應用上的否定。
如果以 big.LITTLE 布局來看 Cortex-A12 屬于 ARM 產品規劃中的 big,也就是偏向性能先決的內核,目前確定的制程包括了 GlobalFoundries 的 SLP-28 和臺積電的 28 HPM。Cortex-A12 和 Cortex-A9 一樣是雙發射亂序執行,但是和 A9 相比,A12 的亂序執行不僅限于整數流水線,而是浮點流水線和內存操作都具備了亂序執行。
此外 A12 實現了 VFPv4 浮點單元并且將 Neon 向量單元列為標準配備,Coremark 測試可以做到單核 3.0 DMIPS/MHz,相比之下 A9 和 A15 分別是 2.5 和 3.5。
所以很明顯,A12 性能處于 A9 和 A15性能之間,這對 ARM 來說是很正常不過的事情。事實上 ARM 在發布 A12 的同時還更新了 A9,提到 A9 r4 版的性能更新,按照幻燈片,對分支預測和內存子系統作改進后的 r4 在 IPC 上能做到初版 A9 的 1.4 倍左右。
Cortex-A9 至今已經有多個版本,見上圖的 r1-r4 描述圖片來源: anandtech
如果單看 IPC 的話,A9 r4 是不是和 A12 很類似?那如果按照某些人的思維,A9 r4 豈不是可以用來否定 A15?
目前 A9 r4 已經在NVIDIA Tegra 4i 里面采用,按照 NVIDIA 的數據,在 BBench 中相比 A9 r1 有 25% 的性能提升,而在 SPECint 2000中 也有 15% 的性能提升,基于 Tegra 4i 的終端很可能會在明年第一季度就能看到,而 A12 還沒有任何廠商宣布采用,A15 即使退下火線也未必是因為 A12 的出現,因為 A15 的定位接替者其實是基于 ARMv8 的 A57。
看到這里,相信大家已經基本了解了 Cortex-A15 大致架構和性能、定位,而配備四核 Cortex-A15 的三星 Galaxy S4 手機已經取得了非常矚目的成功。

采用了四核 Cortex A15 的 Galaxy S4 聯通版
不同廠商、不同型號的四核 Cortex-A15 處理器在很多方面都存在不少的差別,這些差別或因為設計意念、經驗,或因為各自在某領域的優勢,或因為產品定位,或因為制程,這些差別讓我們不能簡單地類比,例如直接把某型號的 Cortex-A15 四核處理器在性能、功耗的指標類推到另一型號上。
手機性能測試是比較特殊的,它是一個封閉的東西,從硬件角度看,絕大多數情況下你不能把里面的東西卸下來拿到另一部不同型號的手機里測試來驗證不同硬件組合下的影響,從軟件角度看,目前缺乏足夠的工具和經驗了解在測試的時候到底發生了什么,到底是廣譜的優化還是定制優化非知情者是很難了解的。
對于手機來說,單線程的性能同樣不容忽視,這和多線程代碼編寫的難度有直接關系,現實中許多應用還是基于單線程的,在此時 Cortex-A15 的單線程性能優勢就能體現出來。
在日常應用中沒有多少應用會像拷機程序那樣長時間持續的四核全部跑滿,尤其是在手機應用中,在手機測試中采用這類程序到底有多少意義是令人懷疑的,手機用家真的會整天沒事呆看手機跑 StabilityTest 之類的東西嗎?
Cortex-A12 上市的時間點可能是明年下半年以后的事情,它的性能定位就是接替 Cortex-A9,而 Cortex-A15 的接替者將會是 Cortex-A57,Cortex-A12 在此時(A57 時代)扮演的就是中階偏低的角色。
總之,我相信在未來的一年里,Cortex-A15 四核版的手機將會越來越多,相應的芯片型號也會層出不窮,其中應該不乏成功的產品。■<
關注我們


