輕松讀懂移動處理器 CPU微架構(gòu)全解析
ISA 的“實現(xiàn)”需要借助各種微架構(gòu),現(xiàn)在的處理器微架構(gòu)基本上涉及以下部分:
流水線化
多核、多線程
SIMD 向量
存儲系統(tǒng)分層結(jié)構(gòu)
流水線
早期一些采用非常簡單的指令集(注意,我們說的不是 RISC)的電腦是采用單周期設(shè)計的,取指、解碼、執(zhí)行、寫回都是放在同一個拍(周期)內(nèi)順序完成,此時的 CPI(每指令周期數(shù))基本上是 1,但是這樣設(shè)計的效率很低:當取指的時候,其余工位都只能瞎瞪眼等開飯,這樣的設(shè)計也被稱作非流水線化執(zhí)行。

上:非流水線化(順序化)執(zhí)行
下:流水線化執(zhí)行
流水線化則是實現(xiàn)各個工位不間斷執(zhí)行各自的任務(wù),例如同樣的四工位設(shè)計,指令拾取無需等待下一工位完成就進行下一條指令的拾取,其余工位亦然。
世界上第一臺采用流水線化指令執(zhí)行的電腦為 1961 年的 IBM Stretch 或者說 IBM 7030,具備四級流水線工位,它同時也是 IBM 第一臺晶體管化電腦。
這樣原本四工位非流水線的一個周期是 800 個皮秒的話,在流水線設(shè)計的處理器上,雖然同樣的指令完成時間依然是 800 皮秒,但是第二條指令則可能只需要在第一條指令完成時間加 200 皮秒即第 1000 皮秒就能完成,而非流水線設(shè)計則需要第 1600 皮秒才能完成。

常見的五周期(FDEMW)流水線形式,對同步處理器來說 Latch 之間為一拍(周期)
對 Pentium 4 這類異步處理器來說,個別工位(simple ALU)頻率為雙倍即 1/2 拍
RISC 指令集具備指令編碼格式統(tǒng)一、等長的特點,在流水線設(shè)計設(shè)計上有得天獨厚的優(yōu)勢,這樣可以使得流水線工位設(shè)計相對于指令編碼格式不統(tǒng)一、非等長的 CISC(例如 x86 的指令長度為 1 個字節(jié)到 17 個字節(jié)不等)來說顯得更容易。
x86 可能需要將一些工位拆開(這意味著流水線工位更多或者流水線長度更深),例如英特爾的第一款流水線化處理器——486 的指令解碼就是拆成兩個工位。
流水線設(shè)計可以讓指令完成時間更短(理論上受限于流水線執(zhí)行時間最長的工位),因此將一些工位再拆開的話,雖然依然是每個周期完成一條指令,但是“周期”更短意味著指令吞吐時間進一步縮短,每秒能跑出來的指令數(shù)更多,這就是超級流水線的初衷。
| 微架構(gòu) (Microarchitecture) |
流水線工位數(shù) (Pipeline stages) |
|---|---|
| Sony Cell PPU | 23 |
| IBM PowerPC 7 | 17 |
| IBM Xenon | 19 |
| AMD Athlon | 10 |
| AMD Athlon XP | 11 |
| AMD Athlon64 | 12 |
| AMD Phenom | 12 |
| AMD Opteron | 15 |
| ARM7TDMI(-S) | 3 |
| ARM7EJ-S | 5 |
| ARM810 | 5 |
| ARM9TDMI | 5 |
| ARM1020E | 6 |
| XScale PXA210/PXA250 | 7 |
| ARM1136J(F)-S | 8 |
| ARM1156T2(F)-S | 9 |
| ARM Cortex-A5 | 8 |
| ARM Cortex-A8 | 13 |
| AVR32 AP7 | 7 |
| AVR32 UC3 | 3 |
| DLX | 5 |
| Intel P5 (Pentium) | 5 |
| Intel P6 (Pentium Pro) | 14 |
| Intel P6 (Pentium III) | 10 |
| Intel NetBurst (Willamette) | 20 |
| Intel NetBurst (Northwood) | 20 |
| Intel NetBurst (Prescott) | 31 |
| Intel NetBurst (Cedar Mill) | 31 |
| Intel Core | 14 |
| Intel Atom | 16 |
| LatticeMico32 | 6 |
| R4000 | 8 |
| StrongARM SA-110 | 5 |
| SuperH SH2 | 5 |
| SuperH SH2A | 5 |
| SuperH SH4 | 5 |
| SuperH SH4A | 7 |
| UltraSPARC | 9 |
| UltraSPARC T1 | 6 |
| UltraSPARC T2 | 8 |
| WinChip | 4 |
| LC2200 32 bit | 5 |
例如 Cortex-A15、Sandy Bridge 都分別具備 15 級、14 級流水線,而 Intel NetBurst(Pentium 4)、AMD Bulldozer 都是 20 級流水線,它們的工位數(shù)都遠超出基本的四(或者五)工位流水線設(shè)計。更長的流水線雖然能提高頻率,但是代價是耗電更高而且可能會有各種性能懲罰。
關(guān)注我們


