作者簡介
十四年IT基礎設施研發經驗,其中包括六年Linux kernel一線研發經驗,在suse,華為,星際比特(技術合伙人)等公司工作。
作為團隊核心成員參與了大陸第一個Cortex-A8 SOC芯片研發,負責CPU軟件驗證,操作系統移植等工作。
作為華為派駐到Linaro的技術專家,主導/參與多個Linux與arm架構相關特性研發(ILP32,continuous bit hint,kernel selftest等)
在拉斯維加斯,柏林,布達佩斯和北京多次發表技術演講
2022年6月6日,WWDC 2022,蘋果推出了新的Macbook Air和Macbook Pro,最大支持24G內存和2T存儲,支持8k視頻,支持18-20小時的續航,價格分別是1199美元和1299美元起。二者都適用了蘋果最新自研的M2芯片。
作為底軟的吃瓜群眾,迫不及待的想把air拆開,一探究竟,無奈囊中羞澀。只好隔著屏幕一探M2的究竟。健哥整理了M1和M2的部分特性(表格橫屏查看):
SOC | M1 | M2 |
Architecture | ARM v8.5 | ARM v8.5 |
CPU | 4xFirestorm 4xIcestorm | 4xAvalanche 4xBlizzard |
Memory | 8G/16G lpddr4 | 8/16/24G lpddr5 |
Transister | 16 billion | 20 billion |
Product | MacBook Air/Pro 2020 | Macbok Air/pro 2022 |
Release Date | 2020 | 2022 |
資料來源:Apple公司官網,整理人:健哥。原始表格:https://fvot4kwt4n.feishu.cn/sheets/shtcn69s9nbcvYxX0bAnDgxiAUb
M2使用了和A15一樣的兩個CPU IP Avalanche,Blizzard,分別作為性能核心和能效核心。二者組成大小核,會根據系統需要,選擇合適的CPU,平衡性能和功耗。ARM公司官方的最新大小核技術稱為DynamIQ。很遺憾,健哥暫時沒有查到蘋果大小核技術的更多信息,希望以后有機會向大家分享。
可以看到M2支持了更大的內存和更好的帶寬。資料顯示,M2使用了LPDDR5 6400,帶寬可以到達100G。BTW,很多手機使用了LPDDR5,例如華為Mate P40,小米10,帶寬大約在30-40G。
健哥查到的第一個使用LPDDR5的筆記本是華為的擎云L420,這個筆記本使用了華為麒麟9006C SOC。該芯片也采用了5nm工藝,最高頻率3.13GHz。某東8+256的版本是7999元。
想了解一個ARM CPU,最為核心的是知道這個CPU的架構,根據網上的資料,M2的CPU是支持ARMv8.5擴展的。ARM從v8開始,除了v8,v9的大版本,還有若干小版本。目前最新的是v8.8和v9.3。雖然v8.5不是最新的ARM架構,但是v9.0除了SVE2,CCA,其余和v8.5是一樣的。很多很多年之后,即使沒有ARMv8a處理器了,今天學習的v8.5特性,也是未來繼續跟蹤ARM架構發展的很好的切入點。
從上圖可以看到v8.5的主要增強有:
MTE: Memory Tagging Extension;
BTI: Branch Target Identification;
隨機數生成器;
增強對PMEM的支持。
Memory Tagging Extension,顧名思義,是一個tag相關的特性。它使用了虛擬地址是不使用的位作為tag,可以用于use-after-free和buffer overrrun兩個內存安全特性。
Branch Target Identification:從名字上可以看出,這是一個和跳轉相關的特性,作用是在頁表,PSTATE和BTI指令的配合下,檢查是否發生了預期之外的跳轉。如果是預期之外的跳轉,會觸發異常。
隨機數生成器是引入了RNDR,RNDRRS兩條指令。
對PMEM的支持:增加了PoDP,PoDP可以保證即使硬件故障導致了斷電,Persistent memory的數據不會出錯。
除了第三個特性,其它三個看起來都有點復雜,其實用健哥上次直播介紹的ARM架構三大基石(匯編,異常和內存)和三步學習方法(理解原理,閱讀代碼,實驗驗證),咱們都能化繁為簡。
比如BTI特性,由三部分組成
頁表中的GP位,用于設置是否是guarded page。這背后是對頁表的基本理解;
BTI指令用于指定檢查的規則。例如是否可以跳轉的動態鏈接庫。這背后是匯編語言的基本語法和過程調用標準(APCS64);
PSTATE.BTYPE位用于在guarded區域(上面所說guarded page的區域)的指令是否產生異常。
可以看到,理解BTI特性需要從匯編,異常和內存三方面配合理解。有了上面的初步了解,再結合原本plt的代碼代碼(下圖),我們可以想象在打開BTI特性的情況下,如果是guarded區域,br指令如果訪問了x16, x17之外的寄存器,會產生異常。
編譯器使能bti后,我們的確能看到0x790行插入了bti c指令。
對于MTE也是一樣的,學習MTE特性是對三大基石的鞏固和提高,然后我們可以借助對于MTE的了解,更多的理解軟硬件如何配合,近可以看看操作系統下為內存安全還做了哪些事情,遠可以更多學習操作系統的內存管理知識,從而更深理解操作系統。
在課程中,我們會和今天一樣,先從軟硬件系統的整體出發到ARM CPU,然后聚焦在匯編,異常和內存三部分,每一部分都有三個學習要點,每個要點都通過原理,代碼和實驗三部分打通。打通之后,我們通過對于更深入特性的拆解,驗證前面的學習效果。歡迎大家報名我的ARM工作坊,我帶大家一起打通和爆破ARM架構的關鍵能力。
原文標題:Apple M2和ARMv8.5特性
文章出處:【微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。
-
芯片
+關注
關注
456文章
50886瀏覽量
424163 -
ARM
+關注
關注
134文章
9104瀏覽量
367782 -
存儲
+關注
關注
13文章
4320瀏覽量
85897 -
生成器
+關注
關注
7文章
316瀏覽量
21035
原文標題:Apple M2和ARMv8.5特性
文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論