基礎:計算機是什麼

微架構(microarchitecture)

想像兩支手機跑的 app 一模一樣。從外面看、對每個 app 來說,它們的行為完全相同——同樣的指令、同樣的結果。但拆開來看,一支裝著小巧省電的引擎,另一支裝著一次做很多事的大型激進引擎。微架構就是某顆特定處理器內部的詳細設計:晶片為了兌現它的結構(ISA)而被打造出來、那套隱藏的具體做法。

所有巧妙的效能技巧都住在微架構裡:管線有多深、處理器是否亂序執行指令、每個週期能啟動幾條指令、快取的大小與排布、如何預測分支。這些對一支正確的程式而言全都看不見——軟體只看到 ISA 契約,並得到正確答案。但這些隱藏的選擇決定了一支程式是跑一秒還是十秒。晶片廠年復一年在同一個結構名稱底下推出的,正是新的微架構。

誠實的重點是:結構是契約,微架構是它的某一種實作。Intel 與 AMD 的晶片共用大部分 x86 結構,微架構卻完全不同;Intel 自己每一世代都推出新的微架構,同時保持結構穩定。把兩者搞混,會落入「兆赫迷思」,誤以為時脈更快就代表電腦更快——其實不然,因為微架構會改變每個時脈週期能完成多少事。

蘋果的 M 系列與高通的 Snapdragon 都實作 Arm 結構,所以同一支 Arm 程式在兩者上都能跑——但它們的微架構在管線寬度、快取大小與亂序機制上各不相同,這正是兩者效能不同的原因。

同樣的 ISA,不同的微架構,不同的效能。

微架構在設計上對正確的程式是隱形的——它只改變「多快、多有效率」,而(若做對了)絕不改變「答案是什麼」。

又称
uarch微結構