處理器:資料路徑與控制

多週期資料路徑(multi-cycle datapath)

與其把每道指令硬塞進一個長到足以容納最壞情況的巨大週期,多週期資料路徑把每道指令切成數個短而等長的步驟——提取、解碼、執行、存取記憶體、寫回——並讓每一步在自己的短時脈週期裡進行。簡單指令能以較少步驟完成;只有真正需要每一步的指令才為全部步驟付費。時脈現在可以跳得快,因為每一跳只需涵蓋一個短步驟,而非整道指令。

因為工作分散在數個週期上,這種設計能跨週期重複使用硬體。單一個 ALU 可在某週期算 PC + 4,在稍後週期算分支目標;一塊記憶體可在第 1 週期服務指令提取、在第 4 週期服務資料存取。為了在週期之間記住一個值,會插入小型的額外暫存器來保存進行中的結果(指令暫存器、ALU 輸出暫存器,等等)。現在由一個有限狀態機(或微程式)來排序這些步驟,決定每個週期要拉高哪些控制訊號。

誠實的取捨:多週期 CPU 用較少硬體(較少重複的單元)與較快的時脈,且不同指令花不同的週期數——加法也許 4 週期、載入 5 週期,而非全部都花那個單一的最壞情況週期。但每道指令仍在下一道開始前完成,還沒有重疊。那種重疊是下一個想法——管線化,它保留多週期的步驟結構,卻每個週期都啟動一道新指令。多週期是「乾淨但浪費」的單週期模型與「高效能」管線之間的橋樑。

在 2 奈秒的短週期下,需 4 步的加法在 8 奈秒完成、需 5 步的載入在 10 奈秒完成。單一個 ALU 被重複使用:它在第 1 步把 PC 加 4,在第 3 步算載入位址——不需要重複的加法器。

每道指令被拆成短步驟、在各自的快速週期內進行,讓一個 ALU 與一塊記憶體得以重複使用。

多週期不是管線化。它讓指令花不同的週期數並重複使用硬體,但仍在開始下一道前完成上一道——沒有重疊。管線化是在這套步驟結構之上再加上重疊。

又稱
multicycle implementation多週期實作