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