處理器的雙發射是什么?
這是一個處理器微架構層面的概念,對于理解現代高性能CPU(包括一些Cortex-M7/M55/M85等高端MCU內核)如何提升性能至關重要。
核心摘要
雙發射 是一種處理器設計技術,允許CPU的譯碼器在一個時鐘周期內,同時解碼并派發兩條指令到不同的執行單元中去執行。它的終極目標是讓處理器在一個時鐘周期內完成超過一條指令,從而提升指令級并行(ILP)和整體性能。
你可以把它想象成一個銀行的柜臺:
- 單發射:只有一個柜臺,每個時鐘周期只能服務一位顧客(處理一條指令)。
- 雙發射:有兩個柜臺,每個時鐘周期可以同時服務兩位顧客(處理兩條指令)。
1. 從“單發射”說起
要理解雙發射,首先要明白傳統的“單發射”流水線是如何工作的。
在一個標準的5級流水線(取指 -> 譯碼 -> 執行 -> 訪存 -> 寫回)中:
- 取指(IF):從指令緩存中取一條指令。
- 譯碼(ID):解析這條指令,弄清楚它要做什么(是加法?還是加載數據?)。
- 執行(EX):在ALU(算術邏輯單元)等部件中執行計算。
- 訪存(MEM):如果需要,訪問數據緩存。
- 寫回(WB):將結果寫回到寄存器。
在單發射設計中,流水線的每一個階段,每個時鐘周期都只處理一條指令。理想情況下,CPI(Cycles Per