第四章------處理器體系結構

1.一個處理器支持的指令和指令的字節級編碼稱爲它的指令集體系結構(Instruction-Set Architecture, ISA).
2.硬件寄存器如何工作的?
       如下圖所示,大多數時候,寄存器都保持在穩定狀態(用x表示),產生的輸出等於它的當前狀態。信號沿着寄存器前面的組合邏輯傳播,這時,產生了一個新的寄存器輸入(用y表示),但只要時鐘是低電位的,寄存器的輸出就仍然保持不變。當時鍾變成高電位的時候,輸入信號就加載到寄存器中,成爲下一個狀態y,直到下一個時鐘上升沿,這個狀態就一直是寄存器的新輸出。關鍵是寄存器視作爲電路不同部分中的組合邏輯之間的屏障。每當每個時鐘到達上升沿時,值纔會從寄存器的輸入傳送到輸出。我們的Y86-64處理器會用時鐘寄存器保存程序計數器(PC)、條件代碼(CC)和程序狀態(Stat)。

3.將處理組織成階段
通常,處理一條指令包括很多操作。將它們組織成某個特殊的階段序列,即使指令的動作差異很大,但所有的指令都遵循統一的序列。每一步的具體處理絕於正在執行的指令。創建這樣一個框架,我們就能夠設計一個充分利用硬件的處理器。下面的關於各個階段以及各階段內執行操作的間略描述:
●取指(fetch):取指階段從內存讀取指令字節,地址爲程序計數器(PC)的值。從指令中抽取出指令指示符字節的兩個四位部分,稱爲icode(指令代碼)和ifcun(指令功能)。它可能取出一個寄存器指示符字節,指明一個或兩個寄存器操作數指示符rA和rB。它還可能取出一個四字節常數字valC。它按順序方式計算當前指令的下一條指令的地址valP。也就是說,valP等於PC的值加上已取出指令的長度。
●譯碼(decode):譯碼階段從寄存器文件讀入最多兩個操作數,得到值valA和/或valB。通常,它讀入指令rA和rB字段指明的寄存器,不過有些指令適度寄存器%rsp的。
●執行(execute):在執行階段,算術/邏輯單元(ALU)要麼執行指令指明的操作(根據ifun的值),計算內存引用的有效地址,要麼增加或減少棧指針。得到的值我們稱爲valE。在此,也可能設置條件碼。對一條條件傳送指令來說,這個階段會檢驗 條件碼和傳送條件(由ifun給出),如果條件成立,則更新目標寄存器。同樣,對一條跳轉指令來說,這個階段會決定是不是應該選擇分支。
●訪存(memory):訪存階段可以將數據寫入內存,或者從內存讀出數據。讀出的值爲valM。
●寫回(write back):寫回階段最多可以寫兩個結果到寄存器文件。
●更新PC(PC update):將PC設置成下一條指令的地址。
處理器無限循環,執行這些階段。在我們簡化的實現中,發生任何異常時,處理器就會停止:它執行halt指令或非法指令,或它試圖讀或者寫非法地址。在更完整的設計中,處理器會進入異常處理模式,開始執行由異常的類型決定的特殊代碼。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章