基礎:計算機是什麼
提取-解碼-執行週期(fetch-decode-execute cycle)
想像跟著食譜做菜:讀下一個步驟、弄懂它要什麼、做它,然後把手指移到下一步,再重複。處理器的一生就是不斷做這件事,每秒數十億次,不會無聊,也不會擅自跳步,除非被告知。這個不歇的迴圈——提取、解碼、執行、再重複——就是每顆處理器的心跳,是它從通電那一刻起一遍又一遍做的事。
這個週期有清楚的步驟。提取:到程式計數器所存的位址,從記憶體讀下一條指令,然後讓程式計數器前進。解碼:控制單元弄清楚這條指令的意思,以及它需要資料路徑的哪些部分。執行:資料路徑把它做出來——相加、從記憶體載入、儲存,或改變程式計數器以跳到別處。接著迴圈又從下一條指令重新開始。多數指令就是前進到下一條;分支與跳躍則讓週期改從另一個位址接著做。
正是這個單一迴圈讓儲存的程式活了起來:記憶體裡的一串指令被逐一走過,一拍接一拍。它也是本領域後面幾乎每個效能概念的接點——管線化把許多指令的步驟疊在一起,亂序執行重排工作的同時仍維持這套井然行進的表象,分支預測則在提取都還沒做完前就猜出下一個位址。弄懂這個迴圈,你就掌握了整個主題所依附的脊骨。
在位址 100 提取 add 指令,把程式計數器前進到 104,將它解碼為加法,以相加兩個暫存器來執行,寫回結果,再去 104 提取指令——如此循環下去。
提取、解碼、執行、再重複——處理器永不停歇的心跳。
乾淨的三步是教學模型。真實晶片為了速度大量重疊並重排這些步驟,但它們始終維持「指令是按程式順序一條接一條跑」的錯覺。
又称
另见