輕松讀懂移動處理器 CPU微架構(gòu)全解析
在介紹一些稍微復(fù)雜的技術(shù)概念之后,我們不妨想看看 ARM 的由來。
ARM ISA 屬于 RISC(精簡指令集計算機,最關(guān)鍵特征是指令編碼格式統(tǒng)一),ARM 本身就是 Advanced RISC Machines 的縮寫,不過在早期它的全稱是 Acorn RISC Machine(1983 年 10 月開始設(shè)計,1985 年實現(xiàn)第一枚硅片),因為公司當(dāng)時的名字叫 Acorn。
Acorn 是一家 1978 年在英國劍橋成立的公司,這家公司生產(chǎn)過若干款在英國頗為流行的電腦,例如在當(dāng)?shù)亟虒W(xué)市場占主導(dǎo)的 BBC Micro。
BBC Micro 取得了很大的成功,但是處理器是 8 位 的 6502,Acorn 希望切換到 16 位系統(tǒng)上來,但是英特爾拒絕了 Acorn 的 80286 樣片申請。不過經(jīng)過 Acorn 的多番實地考察和研究后,覺得在(當(dāng)時)設(shè)計一個處理器的研發(fā)成本并不是很高,于是決定開始做 Acorn RISC Machine 這個項目。
基于 Acorn RISC Machine 的 ARM2aS 處理器獲得了蘋果公司名為 Mobius 的類 Apple 2 風(fēng)格原型驗證機接洽,這個項目后來因為蘋果擔(dān)心和大賣的麥金塔電腦產(chǎn)生沖突而腰斬,但是這次接觸對 ARM 處理器的發(fā)展產(chǎn)生了一定的推動作用,因為 Mobios 團(tuán)隊對 ARM 寄存器做了一些小修改使得原型機的基準(zhǔn)性能有不同幅度的顯著改善。
后來蘋果開始著手開發(fā)名為 Newton 的個人掌上電腦,他們發(fā)現(xiàn)似乎只有 Acorn RISC Machine 能滿足要求耗電要求,但是當(dāng)時 Acorn RISC Machine 處理器的內(nèi)存管理單元并非 Acorn 自家,而是由 MEMC 公司提供芯片實現(xiàn)的,Acorn 沒錢開發(fā)這個功能。于是雙方就有了合作的想法,到了 1996 年 Acorn 和蘋果合資組建了 ARM 公司,不過 Acorn 公司依然獨立存在著直到 2000 年才基本煙消云散。
和一般的 RISC 不同的是,ARM ISA 除了指令長度固定為 32-bit(ARMv8 的 AArch 提供了 64-bit)的“經(jīng)典 ARM” ISA 外,還有長度為 32-bit 或 16-bit 名為 Thumb(拇指)的 ISA 擴展。
Thumb 的目的是在低端或者說入門市場應(yīng)用中改善 ARM 的指令密度(官方說法是減少大約 25%~35% 代碼空間,按照 Linaro Dave Martin 的 Linux Kernel 編譯結(jié)果,代碼空間少了大概 20%),提高指令密度可以讓 cache 塞進(jìn)更多的指令減少命中缺失,更高密度的指令編碼也有利于多線程因為可用寄存器資源更多了等。大部分的 Thumb 指令編碼都能(經(jīng)過位于指令解碼器前的一個轉(zhuǎn)譯器實現(xiàn)簡單轉(zhuǎn)換)對應(yīng)到經(jīng)典 ARM 指令編碼格式上。
Thumb 是 ARM 在嵌入式市場得以攻城拔寨的關(guān)鍵利器,在很長一段時間里都鮮有對手,Cortex 家族中用于單片機為主應(yīng)用的 Cortex-M 甚至只支持 Thumb-2 指令(ARMv7 M),同樣以授權(quán)方式運營的 MIPS 直到 2010 年才推出類似的 microMIPS 指令。
VFP(Vector Floating Point,向量浮點)是 ARM 架構(gòu)的浮點單元協(xié)處理器擴展,提供了完全遵循 IEEE 754-1985 的低成本單精度和雙精度浮點支持。雖然 VFP 打著向量的名頭,不過這些“向量”指令的各個向量是串列方式執(zhí)行(或者需要單精度搭配雙精度才能實現(xiàn)并行執(zhí)行)的,并不能提供真正的 SIMD 向量并行,因此這個向量模式被拿掉了。
Advanced SIMD(NEON)擴展在微架構(gòu)實現(xiàn)中被稱作 MPE(媒體處理引擎),是一個 64-bit 和 128-bit SIMD 指令集擴展,支持 8/16/32/64 位整數(shù)和 32-bit 單精度浮點數(shù),共享使用 VFP 的寄存器。從 ARMv8 開始,NEON 在 AArch 64-bit 模式下提供完全遵循 IEEE 754 和雙精度支持并且透過 VFPv4 具備 32 個 128-bit 寄存器。
關(guān)注我們
