輕松讀懂移動處理器 CPU微架構(gòu)全解析
Cortex-A9 的代號為 Falcon,是在 ARM 公司在 2007 年 10 月 3 日發(fā)布的 IP core,距今大約有五個年頭。
Cortex-Ax 這個名字中后綴 A 表示屬于 Application(應(yīng)用處理器),Cortex 另有 M 系列(即單片機或者微控制器)、R 系列(實時應(yīng)用),這里顯然是 A 系列的規(guī)格最高,具備 MMU(內(nèi)存管理單元)。
基于 Cortex-A9 的芯片實現(xiàn)有前面提到的 NVIDIA Tegra 2/Tegra3、Apple A5/A5X 以及 TI OMAP4430/4440、ST-愛立信 NovaThor U8500/U9500/LT9540、STM SPEAr1310、三星 Orion/Exynos 4210、華為 K3V2、ZiiLabs ZMS-20/ZMS-40、Sony CXD5315GG(PSV)、聯(lián)發(fā)科 MT6577、華為海思 K3V2 等等,是目前 Google Android 操作系統(tǒng)高端手機、智能平板陣營中最主流的 CPU 內(nèi)核。
![]() |
![]() |
Cortex-A8 微架構(gòu) | Cortex-A9 微架構(gòu) |
Cortex-A9 的前身是 Cortex-A8,它們同屬于 ARMv7 ISA 的實現(xiàn),和 Cortex-A8 相比,Cortex-A9 除了流水線更短、增加了專門的多核方案等大家熟知的變化外,還具備多項改進。
1、Cortex-A9 擁有眾多 RISC CPU 的先進特性,例如推測數(shù)據(jù)存取、動態(tài)分支預(yù)測、多指令發(fā)射、硬件 Cache 一致性、亂序執(zhí)行、寄存器重命名,號稱史上第一枚亂序執(zhí)行移動處理器。
除了雙指令發(fā)射和分支預(yù)測外,Cortex-A8 都并不具備,因此在 Cortex-A9 上匯編碼優(yōu)化、NEON SIMD 的重要性相對來說要低很多(經(jīng)過調(diào)優(yōu)的匯編碼在 A8 上可以做到 10-30 倍性能,而 A9 一般只會有 2-5 倍,如果是 A9 使用 NEON C Intrinsics 的話性能基本上和匯編一樣)。
2、Cortex-A9 的每條 L1 Cache Line 是 32 字節(jié),Corte-A8 是 64 字節(jié)。Cache Line 又稱作 data block(數(shù)據(jù)塊)或者 Cache Block,Cache 每次更新都以固定大小的 Cache Line 為單位。
Cache Line 的大小主要影響命中率、內(nèi)存存取效率、發(fā)生 Cache 命中缺失時候的性能懲罰時間。
3、Cortex-A9 的 L2 Cache 位于“核外”( ARM 對應(yīng)的方案是 PL310 或者更新一點的 L2C-310),而 Cortex-A8 則是速度更快的核內(nèi) L2 Cache。
從對 Cortex-A8 1GHz(三星 Samsung Hummingbird,即 Exynos 3110)和 CortexA-A9 1.2GHz(三星 Exynos 4210)實測來看,A8/A9 的 L1 cache 延遲分別為 3 周期和 4 周期,L2 Cache 延遲(含 L1 Cache 延遲但是不含 L1/L2 TLB 命中缺失懲罰的情況下)分別為 13 周期和 23 周期。
4、Cortex-A9MPCore 的各內(nèi)核 L1 Cache 采用了數(shù)據(jù)、代碼分離式設(shè)計,L1 數(shù)據(jù) Cache 具備硬件 Cache 一致性。各個內(nèi)核共享外部 L2 Cache。
5、Cortex-A9 具備完整的 VFPv3 FPU,而 Cortex-A8 則只有縮水版的 VFPlite,主要區(qū)別是 Cortex-A9 的大多數(shù)浮點操作都只需要 1 個周期,而 Cortex-A8 需要 10 個周期,因此 Cortex-A8 的浮點性能相當爛。
6、Cortex-A9 支持半精度(fp16),而 Cortex-A8 只支持 32-bit 單精度(FP32)和雙精度(FP64),不過半精度在 CPU 級別的應(yīng)用并不是很多見。
7、Cortex-A9 不能同時發(fā)射兩條 NEON 指令,而 Cortex-A8 卻能夠?qū)崿F(xiàn) 1 條 NEON L/S 指令搭配一條非 L/S NEON 指令。
8、Cortex-A8 的 NEON 單元位于 ARM 單元下游,所以 NEON 單元訪問寄存器和內(nèi)存更快,而且數(shù)據(jù)可以很快從 ARM 寄存器搬到 NEON/VFP 單元寄存器,但是將 NEON/VFP 寄存器數(shù)據(jù)搬到 ARM 寄存器的話就非常慢,會導(dǎo)致 Cortex-A8 的流水線停擺 20 個周期。
9、Cortex-A8 的 NEON 和 ARM 各有一個分離的 L/S 單元,如果一起對同一塊 Cache Line 進行 Load 或者 Store 操作的話,會導(dǎo)致額外的 20 個周期延遲。
10、Cortex-A9 對多線程化同步采用 LDREX/STREX,不會杜塞所有的內(nèi)核,而 Cortex-A8 對互斥使用簡單的斷禁制。
11、所有的 Cortex-A8 都集成了 NEON SIMD 單元,但是 Cortex-A9 則未必,例如 NVIDIA Tegra 2 就沒有集成 NEON,不過 Tegra 3 則具備 NEON。
如果使用 7-zip(不包含任何浮點)實測來看,Cortex-A8 1GHz 的壓縮(受內(nèi)存時延、數(shù)據(jù) Cache 大小和速度以及 TLB 影響較大)/解壓縮(受 CPU 整數(shù)性能影響較大)性能相當于 Core i7 920 2.67GHz 的 3.5% 和 5.5%;而 Cortex-A9 雙核則是 Core i7 920 的 8.8% 和 12.7%。
關(guān)注我們
