處理器:資料路徑與控制
資料路徑(datapath)
想像一座小型工廠的作業線:原料從一道門進來,沿著固定的工作站移動,成品再從另一道門出去。CPU 的資料路徑(datapath)對「數字」來說正是這樣一條作業線,它是位元在執行一道指令時實際流經的所有導線、儲存盒與運算機器的集合。如果你問「要把兩個數相加,資料實際上跑去哪裡?」,答案就是:沿著資料路徑跑。
具體來說,資料路徑由幾個有名字的元件接線而成。程式計數器(PC)存放目前指令的位址;指令記憶體依該位址交回指令的位元;暫存器檔(register file)是一小組快速儲存(也就是架構暫存器),可讀可寫;ALU(算術邏輯單元)負責真正的加、減與比較;資料記憶體存放較大量的數值;符號擴展器把一個短數字加寬到全寬;多工器(mux)則是選擇哪一條導線餵給下一階段的開關。這些導線把元件接起來,於是一個值可以從某暫存器出發,通過 ALU,再回到暫存器或送往記憶體。
要牢記的關鍵分工:資料路徑只負責搬移與轉換資料,並不決定要做什麼。決定的工作屬於控制單元,它設定那些開關(控制訊號),替每一種指令類型導引資料路徑。資料路徑加上控制,就等於一個能運作的處理器。真實晶片的資料路徑遠比教學版本更寬、更糾結,但仍圍繞著同樣這些基本元件來組織。
要執行「add x3 = x1 + x2」:PC 選出一道指令,指令記憶體把它交回,暫存器檔把 x1 與 x2 讀到 ALU 的兩個輸入,ALU 相加,結果導線再寫回 x3——這句話裡的每一個箭頭,都是資料路徑中的一條導線。
資料路徑是資料實際流經的元件與導線集合;路線由控制來決定。
初學者常誤以為資料路徑「執行程式」。它本身不做任何決定——若沒有控制單元設定開關,同一組導線可能做加法、做載入,或什麼有用的事都不做。
又稱
另見