2011/9/21

雙核ARM多核架構

在單核時代,Cortex A8架構是絕對的主流。作為ARM官方設計的產品,雖然Cortex A8和Cortex A9都基於ARM v7指令集架構,但是它們之間依然有很多的不同點,其中最重要,也是用戶最能感覺到的,是一項叫做亂序執行的功能。雖然Cortex A8和Cortex A9都支持同時執行兩條指令,但是只有Cortex A9支持亂序執行能力,這個功能究竟是什麼意思?
我們知道,計算機程序,都是由一條一條的指令組成的。這些指令有很多種功能,有的是把數據從一個地方復製到另一個地方,有的是做數學運算,有的負責判斷某一個條件,有的負責從一處跳轉到另一處。編譯器會把所程序員寫出的程序編譯成一條一條順序的指令,就像電器的使用指南一樣,讓處理器遵照它去做。為了方便理解,我們假設一個程序的內容是做一份考試卷,執行的過程是先做完選擇題,再做完問答題;做選擇題的條件是要有鉛筆去塗答題卡,而做問答題的條件則是要有鋼筆去寫答題紙。
如果你忘了帶鉛筆,那麼為了完成考卷,就必須要等到鄰座的做完了選擇題,你找他借來鉛筆,才能繼續自己的考卷,這樣就耽誤了時間。對於一顆標準處理器而言,很多時候都會遇到這類"沒有帶鉛筆"的情況,比如需要訪問的數據在內存裡,這就需要處理器通知內存管理器,讓內存管理器去把數據調入處理器,才能繼續執行這一條指令。由於處理器內部的時鐘延遲是納秒級別,而內存的運行頻率則有數十納秒的延遲,兩者之間差了許多倍,因此處理器一般需要消耗很長的等待時間,才能繼續開始工作,最終的結果就是性能下降。

這時候,亂序執行就派上用場了。一個程序的指令都是有嚴格的邏輯順序的,但是所謂的亂序執行,就可以打破這種原本的指令順序,在邏輯允許的範圍內以一種新的順序去執行程序。如果繼續用考試的例子,那就是這樣:
http://www.evolife.cn/html/2011/60967_2.html
那麼回頭來看看Scorpion核心。這個核心是高通在單核時代設計出來的,雖然也是基於ARM v7指令集架構,但在具體設計上屬於高通自己的實現,與Cortex A8相比有很多區別,其中最重要的就是高通為Scorpion核心引入了部分的亂序執行能力。所謂部分的,就是說在某些特定指令序列下,Scorpion可以實現亂序的效果,Cortex A8則不行。在單核時代正是由於這點,高通的處理器核心在很多測試中的表現都要稍好於Cortex A8,但是當雙核時代來臨後,大家都升級到了支持完整的亂序執行的Cortex A9核心,而高通則依然沿用老舊的Scorpion核心,當年的優勢就成為了現在的劣勢。

不僅如此,在純執行能力上,Scorpion面對Cortex A9也處於劣勢。根據高通提供的數據,同樣在1000MHz的頻率下,Cortex A8的執行能力為2000DMIPS(可以簡單認為是每1週期執行兩條指令),Scorpion比它要高一些,為2100DMIPS,但是Cortex A9則高達2500DMIPS,領先Scorpion接近20%。雖然高通試圖通過超頻20%的方式彌補這個差距,但是在單線程性能上,還是被競爭對手甩開了不小的距離,畢竟亂序執行的能力在很多應用中可以獲得的性能提升遠遠不是這200MHz的頻率可以彌補的,而且更高的頻率也會抵消Scorpion核心在省電上的特點。這點在後面的測試裡也可以看出來。
這就是為什麼ASMP目前採用的越來越少的緣故。雖然ASMP存在著設計簡單、結構清晰、耗電較低的優勢,但是由於性能不足,在PC領域從來都沒有成為過主流。而在移動領域,高通認為手機對於耗電的要求要大於性能,又希望可以在雙核時代繼續沿用單核時代的核心架構而不需要徹底重新研發,因此採用了ASMP架構。但是事實證明,高通在這點上可能有些耍小聰明之嫌,因為既然消費者決定購買雙核,那麼就一定是衝著性能去的,並且對功耗也已經做好了心理準備。


最近比較火熱的小米手機就選用了高通MSM 8260芯片,不過它自稱的"最快"還要打上一個問號

根據高通的官方數據,其1.2GHz的MSM8x60芯片組在滿負荷工作的時候,僅處理器部分就要消耗大約1.2瓦特的功率,這相對於單核時代不到500毫瓦的功耗而言,也已經是非常高的數值了,這證明了不管怎麼去省電,雙核都依然是雙核,既然如此,去追求雙核應有的性能顯然應該比如何去節省那麼一點點的電更加重要。換一個方面說,性能足夠強的話,系統可以以更短的時間完成任務,進而更多地進入低功耗的狀態。高通通過ASMP也許節約了一定的耗電,但是其最大33%的性能損失會導致系統多出33%的時間處於高功耗狀態,消耗的功率可能抵消甚至反超節約的,讓高通的如意算盤打空。

回到話題上來,可能有些讀者會認為,單獨來看,可能ASMP和SMP的差距也並不是那麼巨大,在之前圖中的極限狀況下也就相差33%而已,在實際運行中的差距很難達到這個數字。但是不要忘記,之前的文章中我們討論過亂序執行的重要性,那麼如果我們將指令等待也引入到之前的圖中,那麼會發生什麼情況呢?

在此,我們用灰色的方塊代表需要等待的指令,而等待時間​​為兩個週期。
這就是為什麼ASMP目前採用的越來越少的緣故。雖然ASMP存在著設計簡單、結構清晰、耗電較低的優勢,但是由於性能不足,在PC領域從來都沒有成為過主流。而在移動領域,高通認為手機對於耗電的要求要大於性能,又希望可以在雙核時代繼續沿用單核時代的核心架構而不需要徹底重新研發,因此採用了ASMP架構。但是事實證明,高通在這點上可能有些耍小聰明之嫌,因為既然消費者決定購買雙核,那麼就一定是衝著性能去的,並且對功耗也已經做好了心理準備。

沒有留言:

張貼留言