輕松讀懂移動(dòng)處理器 CPU微架構(gòu)全解析
ISA 的“實(shí)現(xiàn)”需要借助各種微架構(gòu),現(xiàn)在的處理器微架構(gòu)基本上涉及以下部分:
流水線化
多核、多線程
SIMD 向量
存儲(chǔ)系統(tǒng)分層結(jié)構(gòu)
流水線
早期一些采用非常簡單的指令集(注意,我們說的不是 RISC)的電腦是采用單周期設(shè)計(jì)的,取指、解碼、執(zhí)行、寫回都是放在同一個(gè)拍(周期)內(nèi)順序完成,此時(shí)的 CPI(每指令周期數(shù))基本上是 1,但是這樣設(shè)計(jì)的效率很低:當(dāng)取指的時(shí)候,其余工位都只能瞎瞪眼等開飯,這樣的設(shè)計(jì)也被稱作非流水線化執(zhí)行。
上:非流水線化(順序化)執(zhí)行
下:流水線化執(zhí)行
流水線化則是實(shí)現(xiàn)各個(gè)工位不間斷執(zhí)行各自的任務(wù),例如同樣的四工位設(shè)計(jì),指令拾取無需等待下一工位完成就進(jìn)行下一條指令的拾取,其余工位亦然。
世界上第一臺(tái)采用流水線化指令執(zhí)行的電腦為 1961 年的 IBM Stretch 或者說 IBM 7030,具備四級(jí)流水線工位,它同時(shí)也是 IBM 第一臺(tái)晶體管化電腦。
這樣原本四工位非流水線的一個(gè)周期是 800 個(gè)皮秒的話,在流水線設(shè)計(jì)的處理器上,雖然同樣的指令完成時(shí)間依然是 800 皮秒,但是第二條指令則可能只需要在第一條指令完成時(shí)間加 200 皮秒即第 1000 皮秒就能完成,而非流水線設(shè)計(jì)則需要第 1600 皮秒才能完成。
常見的五周期(FDEMW)流水線形式,對(duì)同步處理器來說 Latch 之間為一拍(周期)
對(duì) Pentium 4 這類異步處理器來說,個(gè)別工位(simple ALU)頻率為雙倍即 1/2 拍
RISC 指令集具備指令編碼格式統(tǒng)一、等長的特點(diǎn),在流水線設(shè)計(jì)設(shè)計(jì)上有得天獨(dú)厚的優(yōu)勢(shì),這樣可以使得流水線工位設(shè)計(jì)相對(duì)于指令編碼格式不統(tǒng)一、非等長的 CISC(例如 x86 的指令長度為 1 個(gè)字節(jié)到 17 個(gè)字節(jié)不等)來說顯得更容易。
x86 可能需要將一些工位拆開(這意味著流水線工位更多或者流水線長度更深),例如英特爾的第一款流水線化處理器——486 的指令解碼就是拆成兩個(gè)工位。
流水線設(shè)計(jì)可以讓指令完成時(shí)間更短(理論上受限于流水線執(zhí)行時(shí)間最長的工位),因此將一些工位再拆開的話,雖然依然是每個(gè)周期完成一條指令,但是“周期”更短意味著指令吞吐時(shí)間進(jìn)一步縮短,每秒能跑出來的指令數(shù)更多,這就是超級(jí)流水線的初衷。
微架構(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 級(jí)、14 級(jí)流水線,而 Intel NetBurst(Pentium 4)、AMD Bulldozer 都是 20 級(jí)流水線,它們的工位數(shù)都遠(yuǎn)超出基本的四(或者五)工位流水線設(shè)計(jì)。更長的流水線雖然能提高頻率,但是代價(jià)是耗電更高而且可能會(huì)有各種性能懲罰。
關(guān)注我們
