ADVERTISEMENT
回顧2012年,ARM 業界發生2件處理器大事,其一推出了不少新款應用處理器,其次則是發表 ARMv8 架構。這兩件事意味著 ARM 的新時代到來,那對於我們又有甚麼影響?我要如何了解它呢?讓我們來一探究竟吧。
快速瀏覽:
- Cortex-A50設計現身,最快2014年實體化 / 跨入64位元的6大特色
Cortex-A50設計現身,最快2014年實體化
回顧2012年,ARM業界發生2件處理器大事,其一推出了不少新款應用處理器,其次則是發表ARMv8架構。新款處理器方面代表是Cortex-A15,首款搭載Cortex-A15的是Samsung Exynos 5250,具備有1.7GHz雙核心,並內建在Samsung後來推出的Chromebook當中。
ADVERTISEMENT
另外Exynos 5250還應用在Google Nexus 10上,面板解析度高達2560 x 1600。當然,大家最關心的就是效能到底如何,從目前網路上釋出的測試成績來看,的確具有雙核(Cortex-A15)打四核(Cortex-A9)的實力。就連Exynos 5250內建的Mali-T604 GPU也比目前Mali-400和Adreno 320效能再高出一截,但尚不及Apple A6X內建的PowerVR SGX554MP4。四核版Exynos 5450傳出將使用在新一代的 Galaxy S4 上,製程也將由Exynos 5250的32nm更換成28nm。
ARMv8 現身
ARMv8是ARM業界第二件大事,這件事情也延宕1年多。ARM終於推出2款處理器設計,分別為Cortex-A53和Cortex-A57,由數字就可觀察到是2款效能不同的產品。在此同時,與ARMv8架構一並推出的big.LITTLE處理器設計概念再次被提及。而ARMv8和Cortex-A50系列處理器又會如何改變我們手中的行動裝置,皆在之後的文章中細細說明。
目前的市售產品中,無論是Apple設計的A6X應用處理器,還是NVIDIA紅透半邊天的Tegra 3,亦或是最近常被提及的Qualcomm APQ8064,皆相容ARMv7的指令集架構,只是在硬體線路實做方面有所差異。這其中的差別,讀者可以理解成Intel、AMD、VIA三者製造的處理器皆可以安裝Windows,但是三者的效能卻大異其趣。
ADVERTISEMENT
了解ARMv8架構
ARMv8目標接替ARMv7成為下一代ARM處理器的架構,目前只單一釋出ARMv8-A,沒有像ARMv7再細分為針對應用處理器的ARMv7-A,微控制器的ARMv7-M,和適合即時處理的ARMv7-R。
ARMv8最大的改變就是開始支援64位元,記憶體容量限制一舉突破4GB。這在目前手持式行動裝置上的迫切性並不大,直到今年才有2GB RAM的手機出現,在未來的1、2年內,受到半導體製程的影響,手機內建記憶體或許可以微幅調升至3GB或是4GB。
但別忘了除了消費性市場以外,許多伺服器製造商也一直在覬覦ARM的省電性,這或許才是ARM支援64位元的主因,準備大舉進攻伺服器市場。Intel則是為了防堵ARM的步步進逼,於是去年底推出最低TDP只要6.3W的Atom S1200系列。
ADVERTISEMENT
跨入64位元的6大特色
新架構一定有些過去沒有的優勢,跨入64位元領域後,較明顯差異可分成6個層面,包括LPAE記憶體定址、最佳化的暫存器、A32與A64模式、2大資料模型、強化浮點數運算,最後則是簡化的處理器狀態。
定址擴大支援LPAE
跨入64位元之後,最大優點就是記憶體定址範圍擴大,而在ARMv8之中支援LPAE(Large Physical Address Extension),可定址超過4GB的實體記憶體。目前ARMv7架構的Cortex-A15已支援LPAE,雖說虛擬記憶體空間最多還是32bit,但已可支援到40bit的實體記憶體定址,最大支援128GB記憶體。
ARMv8的記憶體定址則成長到了48bit,無論是虛擬或是實體定址皆然,代表著ARMv8最多支援32TB的實體記憶體空間,這對想要進攻伺服器市場的ARM來說是個不錯的加分優點。
ADVERTISEMENT
ARMv8支援2個48bit虛擬記憶體空間,一般程式記憶體空間從2^0往上延伸,核心記憶體空間則是由2^64往下減少,其中32位元程式碼只能運作在前4GB空間。記憶體可以採用常見的4KB做為分頁,也可以使用新的64KB分頁;64KB分頁的好處是效能高,但若是填入的資料少於64KB則容易造成記憶體空間的浪費。
x86-64處理器允許4KB或是2MB記憶體分頁,ARMv8採用4KB和64KB分頁,浪費的記憶體空間會比x64來的更少。
記憶體空間浪費有2種
在記憶體管理中,2種狀況下會導致記憶體空間的浪費,沒有辦法使用這些空間。第一種稱為外部碎片(external fragmentation),主要是記憶體分配給不同行程時,在2個分配空間中存在著一小段未被分配的記憶體區塊,但這記憶體區塊卻又不夠大到能夠分配給其它行程,造成有空閒的記憶體區域卻無法使用。
第二種浪費就是採用分頁式記憶體管理所造成,稱為內部碎片(internal fragmentation)。由於將記憶體區域切割成固定大小的「頁」,所以會造成某些「頁」中無法完全被資料填滿,而這沒有被填滿的區域又無法分配給其他行程,造成內部碎片。
讀者可以利用雜誌來理解,每一頁都是由某個專題部分獨佔(真測隊、技研堂……),如果我們寫的專題在尾端字數不足1頁,我們還是要分配1頁給它,並不會發生上半部頁是真測隊,下半頁為另一篇專題開頭的狀況。
暫存器效能最佳化
在AArch64部分,CPU內部暫存器的部分也有所增加。ARM在Cortex-A9中已導入硬體直接實作的虛擬暫存器重命名功能,但對於軟體來說,可用的暫存器還是只有那幾個而已。AArch64直接內建31個64位元的通用暫存器(第31個暫存器多數時間拿來當作Procedure Link Register),比起之前16個32位元的暫存器來說,在將來更複雜的運算中(如演算法),避免重複讀取載入資料的時間,運作效率更高、效能更好。
暫存器是什麼?
暫存器的英文為register,是整台電腦裡運作速度最快的記憶體元件,在CPU的運算階段,處理單元能夠直接存取、修改這部分的數值,但由於造價昂貴,僅在CPU內部安排數bit~byte不等的暫存器。若是以一般電腦記憶體元件的存取速度來排列,由快至慢為暫存器>L1快取>L2快取>L3快取>系統記憶體>硬碟快取>硬碟。
▲ARMv5進化到ARMv8的歷程,ARMv8藉由AArch32支援ARMv7的功能,同時再加入有關加密的指令(點圖可看大圖)。
延伸閱讀:
(後面還有:ARMv8運作分2種等更多詳細介紹唷!)
ADVERTISEMENT