組合語言與 CPU
中央處理器、算術邏輯單元與控制單元
想像晶片裡有一個渺小卻不知疲倦的工人。它只做一件事:拿起下一條指令,照字面意思精確地執行,然後伸手去拿下一條。它不會無聊,不會即興發揮,而且每秒鐘要這樣做上數十億次。這個工人就是中央處理器(CPU),是電腦中真正執行你程式的部分。
CPU 內部有兩個元件負責大部分看得見的工作。算術邏輯單元(ALU)是計算機:它做加、減、比較兩個數值,以及像 x & 0xFF 或 x << 3 這類位元運算。控制單元則是工頭:它讀取每一條指令、判斷它的意思,並指揮 CPU 其他部分該做什麼、以什麼順序做——要讀哪個暫存器、ALU 該加還是該減、結果寫到哪裡、下一條指令是哪一條。這兩個部分都不決定你的程式該做什麼;它們只是執行編譯器早已產生好的指令。
上層的一切——你的 C 程式碼、作業系統、一個網頁瀏覽器——最終都會變成一串這樣的微小機器指令,由控制單元一條接一條餵給 ALU 與其他單元。理解這台機器是如此死板照字面執行,正是本領域其餘內容的基礎:暫存器、指令、堆疊、呼叫慣例,講的全都是如何餵飽並安排這個渺小工人的工作。
要計算 c = a + b:控制單元取出加法指令,把 a 和 b 交給 ALU,ALU 算出總和,控制單元再把結果寫回 c 所在的位置。
控制單元指揮、ALU 計算。各自都很笨,合起來卻能執行一切。
真實的 CPU 還有快取、管線、多核心與亂序執行,但這些都不改變其約定:可見的結果就如同指令一條一條依序執行。ALU 與控制單元的劃分是教學模型,並非現代晶片真正的內部佈局。
又称
另见