終極指南:2013年手機CPU的現狀與未來
在前文中,我們將Cortex A15批得體無完膚,也許你要有疑問:既然A15在手機上表現如此糟糕,ARM為何還要設計出這么一個核心?答案非常簡單:ARM高估了半導體工藝的升級與技術進步速度,Cortex A15實際上是為20nm工藝所設計的核心。
讓我們把時間倒回到2008年,TSMC在當時提出了未來5年半導體工藝路線圖。如果一切都與圖中的宣傳精確吻合,我們在2010年就能用上28nm處理器,而在2012年,也就是去年,我們將邁入20nm時代。按照這個進度,ARM在2013年將核心進化至Cortex A15就沒有任何的問題。也許ARM的初衷是借助于20nm工藝良好的性能,可以強行將Cortex A15的實際功耗壓縮到0.5W以內,獲得兩倍于Cortex A9的能耗比提升。這點從早期TSMC和ARM的演示文檔中也可以看出來。而且,A15也的確做到了絕對性能提升兩倍的設計目標。

TSMC畫的大餅
只不過,工藝最終沒能按照ARM所設想的發展下去。28nm跳票到2012年,20nm還在遙遠的2014年,而且即便成功量產,其可以得到的性能提升也極為有限,一連串的意料之外造成了Cortex A15的尷尬定位。由于工藝的失算,Cortex A9事實上失去了后繼產品:Cortex A7的能耗比雖然很高,但其性能太弱,甚至不如Cortex A8;Cortex A15雖然絕對性能翻倍,但是能耗比過低,兩者都無法作為Cortex A9的繼任者。即便ARM通過big.LITTLE技術將二者捆綁在一起,最終實現的總體效率也只能基本上和Cortex A9打個平手,所謂的繼任者更多成了紙面上而不是性能上的。
很明顯,ARM被TSMC這個隊友坑慘了。
有趣的是,在ARM官方面臨產品線問題的時候,反而是兩家ARM IP的購買商——高通和蘋果——給出了比Cortex A15更好的解決方案。它們都規避了Cortex A15過于臃腫的架構設計,把注意力集中在對Cortex A9的優化和提升上。不約而同的,它們都選擇了保留Cortex A9的前端、擴充Cortex A9的后端,區別是高通的著眼點在于提升指令的理論吞吐量,蘋果的工作重心在提升內存表現。當然,最終的結果我們看到了,高通的方案并沒有對Cortex A9形成實質上的優勢,蘋果的方案則很難找到對比的標準,但是至少這兩家的行動方向是正確的。
因此在Cortex A15架構推出3年后的2013年,ARM痛定思痛,給出了自己針對這個問題的答案,那就是Cortex A12。

在設計規格上,ARM終于放棄了宏偉龐大的“200%性能提升”,轉而只給Cortex A12定下了比Cortex A9快40%這樣一個目標。這是一個相當現實的目標,尤其是考慮到Cortex A9的體系架構上的確存在一些過時的限制,讓我們來看Cortex A12是怎么改的。
首先,如同其他的ARMv7架構處理器一樣,Cortex A12提升了二級緩存的性能,學習前輩Cortex A15和A7的先進經驗,把二級緩存整合進多核心控制器,所有核心終于可以不用再通過一條可憐的64bit總線訪問自己的緩存,這將大大緩解擁堵現象。其次,Cortex A12把NEON和vFP提升到了第四版,并且和Cortex A15一樣引入了內部OoO(亂序執行)設計,指令執行時效率要比A9高很多。最后,A12的外部接口也從64bit AMBA 3升級到了128bit AMBA 4,帶寬提升一倍有余。

Cortex A12憑什么降低了功耗?主要是三方面,一方面是最大并發取指數從3降低到2,另一方面是大幅度縮減了指令派發隊列,最后一方面是大幅度縮減了運算單元的數量。由于指令派發隊列的意義在于可以支撐亂序執行,它所對應的寄存器資源和硬連接資源是非常龐大的,Cortex A15為所有8組8個運算單元設計了完整的8個獨立指令隊列,這無疑消耗了巨大的電力,而Cortex A12把這個數字縮減到了3。與此同時,Cortex A12的運算單元也減少到3組6個,即整數、存取和FP/NEON,每一組內包含兩個運算單元,共享一個指令隊列。

而Cortex A9就相當寒酸了,只有一個指令隊列,支撐著2個整數ALU、一個存取單元和FP與NEON。僅僅依靠這樣的改進,Cortex A12就幾乎可以實現40%的性能提升,更不要說算上二級緩存、外部總線、以及更為前端的取指與解碼部分——例如數據與指令部分重命名與分派彼此獨立——的改進了。總體來說,Cortex A12是一個與Cortex A9相比性能提升40%、功耗維持不變的架構,它單憑一己之力拯救了ARM處理器搖搖欲墜的每瓦特性能,可以說是ARM的救星。A12唯一的問題只有一個——它最早也要等到2014年中才可能有產品,那時ARM很可能已經被英特爾大卸八塊了。

如果我們把Cortex A12與高通Krait、蘋果Swift放在一起看,可以發現一些比較有趣的地方。與ARM不同,高通Krait幾乎保持了Cortex A9的前端設計,唯一的增強是取指部分的并發能力提升到3,后端則和Cortex A15一樣堆積了數量巨大的執行器,具體來說是7個。這樣的架構瓶頸來自于連接前端與后端的中間部分,導致Krait在實際應用中根本無法發揮其3300DMIPS——只比Cortex A15低5.7%——的理論最高性能。至于蘋果Swift,由于缺乏資料與有效的對比方式,在這里并不能給出太多的分析,但是蘋果的優勢在于硬件與軟件之間可以做到完全的匹配,因此即便蘋果對Cortex A9進行如高通一般的單方面增強,也可以依靠自身的操作系統進行針對性的優化并將其發揮出來。因此在這三個介于Cortex A9和Cortex A15之間的設計中,我們認為Cortex A12是最為平衡的設計。只是——如之前所說,我們恐怕無法在2013年看到它了,甚至在2014年都有可能看不到最終產品的上市。因此Cortex A12是否真的實現了ARM的設計目標,我們也只能等到2014甚至2015年才能看到結果。
關注我們


