COMIC CLASSROOM

HBM 與先進封裝第 1 / 5 課

高效能單核 CPU 小教室:為什麼同樣 GHz,效能會差兩倍?

這篇用工廠比喻說明單核 CPU 為什麼同樣 GHz 也會差很多:跑得快只是頻率,真正的差距在每一步能完成多少工作,也就是寬度、分支預測、亂序執行、MLP、快取與 ISA 的整體管理。

10 分鐘

先把 CPU 想成一座工廠

同樣 3GHz,為什麼有的 CPU 比較快?先不要只看時脈。把 CPU 想成一座工廠:時脈像工人的走路速度,真正的差距在於每一步能不能安排更多工作、少等一點、少做錯一點。

這篇會用工廠比喻把高效能單核拆成六個管理能力:寬度、分支預測、亂序執行、記憶體平行性、快取與預取、指令格式。這些都在讓同一個核心每個週期做更多有用的事。

先抓住一句話:高效能單核不是單純跑得快,而是把等待、猜錯、搬資料與排隊的浪費降到最低。

同樣 3GHz,為什麼兩顆 CPU 單核效能可以差很多?答案不是「誰跑比較快」這麼簡單。真正的差異在於:同一個時鐘週期內,核心能不能拿到足夠指令、猜對控制流程、避開等待、同時追很多筆資料、把常用資料放近一點,並用乾淨的 ISA / 指令格式讓前後端更容易合作。

這系列用「CPU 工廠」比喻高效能單核設計:頻率是工人走路速度,IPC 是每一步完成多少工作,微架構就是工廠管理方式。單核快不快,不只看 GHz,而是看每一步能不能做更多有用工作。

1. 同樣 GHz,效能為什麼會差兩倍?

單核 CPU 小教室第 1 頁:同樣 GHz 為什麼效能會差兩倍
Page 1 / 9 - 單核效能不是只看頻率,而是看同一個核心每一步能把多少工作順利做完。

第一張圖先破除最常見的誤會:GHz 只代表時鐘頻率,也就是一秒有多少個週期。它很重要,但不是效能的全部。兩個工人用同樣速度走路,如果一個工廠排程順、零件供應快、工具放得近,另一個工廠到處卡關、等料、找文件,最後產量當然不會一樣。

把 CPU 看成工廠時,指令像工單,資料像零件,執行單元像產線工人,快取像倉庫,前端像收發室,分支預測像領班先猜下一批工單要去哪裡。單核效能真正取決於整條工廠動線是否順暢,而不是只看工人腳步快不快。

圖中列出的六大秘密正是後續主軸:寬度、分支預測、亂序執行、記憶體平行性、快取與預取、ISA / 指令格式。這些機制合在一起,決定同樣 GHz 下誰能完成更多實際工作。用公式看,就是 Performance 約略與 Frequency × IPC 有關;Frequency 是走速,IPC 是每個週期完成多少指令或有用工作。

工程 takeaway:提升頻率常常會帶來電壓、功耗與散熱成本;提升 IPC 則要靠更聰明的微架構,把等待時間、錯誤預測、資料搬運與前端瓶頸降下來。高效能單核不是暴力跑快,而是精準管理。

2. 鐵律:效能 = 走速 × 管理

單核 CPU 小教室第 2 頁:效能等於走速乘以管理能力 IPC
Page 2 / 9 - 頻率提升像跑步機加速;IPC 提升像工廠管理變好,每一步能做更多事。

第二張圖把效能拆成兩個維度:走速與管理能力。走速就是頻率,提升頻率能讓每秒週期數增加;管理能力就是 IPC,代表每個週期能完成多少工作。CPU 設計常常就在這兩者之間取捨。

如果只拉高頻率,就像讓工人在跑步機上越跑越快。短期看產量會提升,但成本不是線性成長:電壓可能要提高、功耗接近跟頻率與電壓平方一起上升、發熱與散熱難度也跟著變大。這就是圖中「溫度飆升、電費爆增」的意思。

改善 IPC 則像把工廠管理變好:排程更聰明、等待更少、工具更近、同時處理更多互不依賴的工作。它也有成本,例如更大的 ROB、更寬的前端、更多執行單元、更複雜的分支預測器、更多快取與更強的記憶體系統,這些都會增加面積與設計驗證成本。

真正的高效能單核設計,是在功耗、面積、延遲、頻率與 IPC 之間找平衡。頻率太低,工廠走不快;IPC 太低,每一步做太少;管理太複雜,面積與功耗會爆。好的核心不是單點極限,而是整體最划算。

3. 設計理念 #1:寬度

單核 CPU 小教室第 3 頁:寬度與多發射產線
Page 3 / 9 - 寬度決定天花板,但供給系統決定你能不能真正碰到天花板。

第三張圖用 4-wide 與 8-wide 工廠說明 superscalar CPU 的「寬度」。寬度指一個週期內前端最多能取幾條指令、解碼幾條指令、送出幾個 micro-ops、發射到多少條執行產線。理論上,8-wide 的天花板比 4-wide 高,因為它每個週期能同時處理更多工作。

但圖右邊也提醒:產線多不代表一定有效率。如果收發室供給不夠快,指令快取 miss、解碼器跟不上、分支預測猜錯、micro-op queue 餓肚子,後面再多執行單元也只能閒著。這就是前端瓶頸,也是很多高效能核心設計的難題。

寬度還會碰到資料相依性。即使前端能一次送 8 條指令,如果這 8 條指令彼此依賴,例如後一條要等前一條結果,CPU 仍然不能全部同時執行。真正能吃滿寬度,需要程式本身有足夠 instruction-level parallelism,也需要硬體能找出這些平行性。

工程 takeaway:寬度是天花板,不是保證產量。要讓寬核心發揮威力,前端、分支預測、快取、解碼、rename、dispatch、scheduler、load/store queue 與記憶體系統都要跟上。任何一環餓肚子,寬度就會變成昂貴的閒置面積。

4. 設計理念 #2:分支預測

單核 CPU 小教室第 4 頁:分支預測、等待答案與 misprediction penalty
Page 4 / 9 - 單核要快,不能只跑得快,還要猜得準。

第四張圖講分支預測。程式裡常有 if / else、loop、function return,這些都會改變下一條要執行的指令位置。CPU 前端如果每次都等到條件計算完才知道往哪裡走,產線就會空轉,像工人站在輸送帶前等客戶回覆。

聰明工廠會先猜一邊,讓產線不停。如果猜對,後面工作已經提前準備好,效能大幅提升;如果猜錯,就要把錯路上的工作清掉,重新載入正確路徑,這就是 misprediction penalty。高效能核心 pipeline 越深、前端越寬,猜錯一次浪費的週期通常越痛。

圖上的 95% vs 99% 看似只差 4%,但錯誤次數可能差很多。對分支密集的程式來說,分支預測器的準確度、branch target buffer、return address stack、間接分支預測、歷史表設計,都會直接影響單核效能。

工程 takeaway:分支預測不是小配角,而是前端能不能穩定餵飽後端的核心技術。越寬、越深、越高 IPC 的核心,越需要準確的預測,因為錯一次會清掉更多已準備好的工作。

5. 設計理念 #3:亂序執行

單核 CPU 小教室第 5 頁:亂序執行、ROB 與依原順序完成
Page 5 / 9 - 單核要快,不是傻傻排隊,而是誰能先做就先做。

第五張圖是 out-of-order execution。傳統 in-order 核心像守規矩的工廠:前面工單卡住,後面即使可以做也要一起等。這樣簡單、省電、好驗證,但遇到 cache miss、長延遲乘除法或資料等待時,整條產線會被拖住。

亂序核心的想法是:外部看起來仍然照程式順序完成,但內部可以先做不相依、已準備好的工作。圖中的 ROB / reorder buffer 就像重排序緩衝區,記錄每個工單的原始順序、執行狀態與結果。CPU 可以亂序執行,但最後 retire / commit 時仍依照原本程式順序,確保精確例外與程式語意正確。

這套機制背後還有 register renaming、reservation stations / schedulers、load-store queue、依賴檢查、wake-up/select、commit logic。它們把「等待」藏起來:當某條指令在等遠方資料時,核心可以先執行其他已經 ready 的指令。

工程 takeaway:亂序執行把面積換成不浪費時間。它不會讓單一相依鏈變短,但可以在等待 A 的時候先做 B、C、D。高效能單核的 IPC 很大一部分來自這種把 bubble 填滿的能力。

6. 設計理念 #4:記憶體平行性 MLP

單核 CPU 小教室第 6 頁:Memory-Level Parallelism 與等待重疊
Page 6 / 9 - 省下等待,不是把遠方變近,而是讓很多等待同時在路上。

第六張圖介紹 memory-level parallelism,也就是 MLP。CPU 最痛的等待常常不是 ALU 算得慢,而是資料不在快取裡,要去更遠的 cache level 或 DRAM。一次 DRAM miss 可能要數百個 cycle;如果每次只等一筆資料,延遲會串起來,產線長時間空轉。

聰明工廠不是讓遠方倉庫瞬間變近,而是一次派出多台貨車,把多筆記憶體請求同時送出去。四筆 300 分鐘的等待,如果完全串行就是 1200 分鐘;如果能平行重疊,總等待可能接近 300 分鐘。這就是圖中「等待重疊」的重點。

硬體上,MLP 需要 load/store queue、miss status holding registers、non-blocking caches、outstanding memory requests、memory disambiguation 與足夠的 reorder window。軟體上,也需要程式有多筆獨立資料請求,否則硬體看不到可平行的等待。

工程 takeaway:記憶體系統不是只有「快取大小」一個問題。高效能單核需要看得到未來需求、送得出多筆請求、接得住回來的資料,並在等待期間繼續執行其他工作。MLP 是把慢延遲變成可重疊延遲的技巧。

7. 設計理念 #5:快取與預取器

單核 CPU 小教室第 7 頁:Cache、L1 L2 L3 DRAM 與 Prefetcher
Page 7 / 9 - 單核要快,不只要把資料放近,還要先準備好。

第七張圖把記憶體層級畫成不同距離的倉庫。L1 cache 最快、最小、離核心最近;L2 較大但較慢;L3 更大、延遲更高;DRAM 容量大但非常遠。高效能單核的目標,是讓最常用、最即將使用的資料盡量在近處。

Cache 的價值來自 locality。時間區域性代表剛用過的資料可能很快再用;空間區域性代表附近資料可能接著被用。好的 cache hierarchy 讓常用資料留在近處,避免每次都跑去 DRAM。但 cache 不是萬能:容量不足、衝突、工作集太大、隨機存取都會造成 miss。

Prefetcher 像補料員,觀察存取規律,提前把可能會用到的資料搬近。如果預取準,等待時間幾乎被藏起來;如果預取錯,可能浪費頻寬、污染快取、把有用資料擠出去。因此預取器需要在積極與保守之間平衡。

工程 takeaway:快取解決「資料放近」,預取解決「資料先到」。高效能單核需要兩者配合:cache hierarchy 降低平均存取延遲,prefetcher 提前覆蓋可預測的 miss,MLP 則讓不可避免的 miss 盡量重疊。

8. 設計理念 #6:ISA / 指令格式

單核 CPU 小教室第 8 頁:ISA 與乾淨固定格式工單
Page 8 / 9 - ISA 不是越多越好,而是要好解、好排、好餵飽後端。

第八張圖用工單格式比喻 ISA。ISA 是軟體與硬體之間的契約,定義指令長度、編碼、暫存器、記憶體模型、例外、中斷與各種操作。對高效能單核來說,ISA 不只影響程式設計,也會影響前端解碼難度與微架構設計。

傳統複雜格式像長短不一、格式多變的工單。前端要花很多力氣判斷邊界、解碼、拆成 micro-ops,這會消耗面積、功耗與設計複雜度。乾淨固定或較規整的格式,則像標準化工單,前端更容易同時取很多、解很多、排很多。

但 ISA 也不是越簡單就自動越快。真正重要的是整個 ecosystem:編譯器能否產生好碼、分支與記憶體語意是否清楚、指令是否適合常見工作、壓縮指令是否改善 code density、向量或矩陣擴充是否能有效表達工作。ISA 是工單格式,微架構是工廠能力,兩者要配合。

工程 takeaway:同樣的製程與頻率下,前端不能餓飽後端,就很難高 IPC。乾淨、可預測、容易平行解碼的指令格式,能降低前端成本,讓更多資源用在真正完成工作上。

9. 總結:慢速工人 + 神級管理 = 兩倍產量

單核 CPU 小教室第 9 頁:高效能單核六大關鍵總結
Page 9 / 9 - 高效能單核的核心,不在於跑多快,而在於每一步能做完多少工作。

最後一張圖回到第一頁謎題:同頻率下,為什麼工廠 A 可以 200 箱 / 天,工廠 B 只有 100 箱 / 天?答案是工廠 A 管理得更好。它有足夠寬度、準確分支預測、亂序執行、MLP、快取與預取、乾淨工單格式,所以同樣步伐能完成更多有效工作。

這也解釋了為什麼高效能單核不等於「瘋狂加 GHz」。頻率提升通常帶來功耗與發熱壓力;微架構提升則努力把每個 cycle 用得更滿。真正優秀的核心,能把亂碼吃下去,把等待變平行,把混亂變產出。圖中的 RUN BAD CODE FAST,其實就是現代 CPU 的宿命:真實程式常常分支多、資料不規則、cache miss 多,但核心仍要盡量讓使用者感覺很快。

六大關鍵可以這樣記:寬度提高理論吞吐,分支預測避免走錯路,亂序執行把可先做的工作先做,MLP 把等待重疊,cache / prefetch 把資料搬近並提前準備,ISA 讓前端更容易解碼與餵飽後端。

一句話總結:單核效能不是只看「走多快」,而是看「每一步能不能做更多有用的事」。高效能 CPU 的本質,是在面積、功耗、延遲與複雜度限制下,把每個 cycle 的浪費降到最低。

Hashtags

#CPU #SingleCorePerformance #IPC #Microarchitecture #OutOfOrderExecution #BranchPrediction #Cache #Prefetcher #MLP #ISA #RISCV #ProcessorDesign #SemiconductorTechnology #高效能CPU #單核效能 #微架構 #漫畫小教室

References

  1. SPEC CPU 2017 Overview - 說明 CPU2017 的 speed / rate benchmarking 背景,可用來區分單工效能與吞吐量測。
  2. SPEC CPU 2017 Run and Reporting Rules - 補充 SPEC speed / rate 執行規則與結果呈現脈絡。
  3. gem5 O3CPU Documentation - 支撐 out-of-order、execute-in-execute、ROB / commit 等高效能核心模型說明。
  4. gem5 Memory System Documentation - 支撐 cache hierarchy、memory request 與記憶體系統模型背景。
  5. Linux Kernel Documentation: Cache and TLB Flushing - 支撐 cache / TLB 是處理器與作業系統共同管理的重要層級。
  6. Linux Kernel Documentation: Memory Management Concepts - 補充記憶體階層、位址轉換與 page / cache 相關背景。
  7. RISC-V ISA Manual Releases - 支撐 ISA / 指令格式與開放指令集規格脈絡。
  8. Agner Fog: The Microarchitecture of Intel, AMD and VIA CPUs - 以實務角度整理 branch prediction、out-of-order、cache、instruction decoding 等微架構特性。
  9. Hennessy and Patterson, Computer Architecture: A Quantitative Approach - 經典電腦架構教材,支撐效能量化、ILP、memory hierarchy 等核心概念。

學習指南

HBM 與先進封裝

0 / 5

先備知識

  • 時脈頻率與基本指令流程

我學會了什麼

  • 說明為何相同 GHz 不代表相同性能
  • 把 IPC 與預測、排程、快取及預取連結起來
  • 辨識記憶體層級平行度

本課術語

查看術語字典 →

延伸閱讀

課後小測驗

1. 同樣 GHz 仍有不同效能,最主要原因是?
2. 分支預測主要減少什麼?
3. MLP 如何改善效能?

讀到這裡,辛苦了。

把概念帶走,比把術語背走更重要。

#CPU#Single-Core Performance#IPC#Microarchitecture#Out-of-Order Execution#Branch Prediction#Cache#Prefetcher#MLP#ISA#RISC-V#Processor Design#Semiconductor Technology#漫畫小教室#高效能CPU#單核效能