# prpelining設計 設計流水線處理器涉及多個步驟。以下是一個概述: * 檢視資料路徑和控制圖表: * 從單周期資料路徑開始。 * 單週期控制是指在每個時脈週期內都完成整個指令的執行,控制訊號只需根據指令類型決定。 * 將資料路徑分成階段: * IF(指令提取)、ID(指令解碼和Register File讀取)、EX(執行或地址計算)、MEM(數據內存訪問)、WB(寫回)。 * 將資源與階段關聯: * 確定每個階段所需的資源,例如register、ALU、數據存儲器等。 * 確保流程不衝突,或找出解決方法: * 確保在同一時間段內不會有多個指令需要相同的資源。 * 解決衝突的方法可能包括:轉發(forwarding)、停頓(stalling)、分支預測(branch prediction)等。 * 在適當的階段施加控制: * 在每個階段中發出相應的控制信號,以確保正確的操作進行。 將單周期資料路徑拆分為多個階段是實現流水線處理器的第一步。以下是將單周期資料路徑分割為五個階段的示例: * 指令提取(IF): * PC:用於存儲下一個要執行的指令的地址。 * Instruction Memory:用於存儲指令。 * 指令解碼(ID): * Instruction Register:存儲從指令內存中讀取的指令。 * Register File:存儲所有的 CPU register。 * Read Data 1 和 Read Data 2:從Register File讀取的兩個操作數。 * 執行(EX): * ALU:執行算術和邏輯操作。 * ALU 控制:指定要執行的操作。 * 存儲器訪問(MEM): * Data Memory:用於存儲數據。 * Write Data:要寫入數據內存的數據。 * MemtoReg 控制:指定從數據內存還是 ALU 的結果寫回到Register File。 * 寫回(WB): * Write Data:將結果寫回Register File。 * register寫入控制:確定Register File何時接收寫入的數據。 ![image](https://hackmd.io/_uploads/HJK5Mrfi6.png)