處理器:資料路徑與控制

指令記憶體(instruction memory)

想像一本攤在流理台上的食譜,每一頁寫著食譜的一個步驟。廚師讀目前書籤所在那頁,做那一步,再把書籤往前移。指令記憶體就是 CPU 的食譜:給定一個位址,它就交回存放在那裡的指令位元。那個書籤就是程式計數器。

在教科書的單週期資料路徑裡,指令記憶體被畫成一個簡單的唯讀盒子,只有一個輸入(由程式計數器提供的位址)與一個輸出(該位址上的指令字,通常 32 位元)。每個時脈週期,PC 提出一個位址,指令記憶體交回對應的指令,讓資料路徑其餘部分去解碼與執行。它每一個週期都被讀取,因為任何事情發生之前,每道指令都得先被提取。

一個誠實的澄清:圖上把指令記憶體與資料記憶體分開,反映的是用來讓教學資料路徑保持乾淨的哈佛式分流——如此一來,提取指令與讀取一個資料值便能在同一週期內無衝突地進行。真實機器通常只有一個統一的主記憶體,但靠核心附近分開的指令快取與資料快取達到相同效果。所以指令記憶體最好理解為「指令快取/提取埠」,而非一塊實體上獨立的晶片。

若 PC 存著 0x0040,而 0x0040 處的字組是「add x3, x1, x2」的編碼,指令記憶體就在這個週期交回那 32 個位元;接著解碼器從中讀出運算碼與暫存器欄位。

位址進(來自 PC),指令字出——每個週期都從指令記憶體的一次提取開始。

在教學模型裡,指令記憶體唯讀,執行中的程式從不寫它。真實系統確實允許程式碼放在可寫記憶體中,但乾淨的資料路徑為求簡單而忽略自我修改程式碼。

又称
instruction storeI-mem