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



