4.2 邏輯設計和硬體控制語言hcl
4.3 y86-64的順序實現(seq)
4.4 流水線的通用原理
4.5 y86-64的流水線實現
4.5.8 流水線控制邏輯
4.5.9 效能分析
4.5.10 未完成的工作
y86-84指令集體系結構
4.1.1 程式設計師可見狀態
4.1.2 y86-64指令
call,push,popq
halt:停止指令(類似x86的hlt)
4.1.3 指令編碼
以及暫存器id於暫存器的對應關係
指令集的乙個重要的性質是:位元組編碼必須有唯一的解釋
risc與cisc的特點比較(見書249)
4.1.4 y86-64 異常
y86-64 程式
4.1.6 一些y86-64指令的詳情
4.2 邏輯設計和硬體控制語言hcl
4.2.1 邏輯門
4.2.2 組合電路和hcl布林表示式
多個邏輯門的輸出不能連線在一起——否則會導致訊號矛盾
這個網必須是無環的
例子:
hcl 表示式與c語言的邏輯表示式的區別
4.2.3 字級的組合電路和hcl證書表示式
在 hcl 中,所有字級的訊號都宣告為 int, 不指定字的大小。這樣做是為了簡單。
4.2.4 集合關係
code的輸入為:00,01,10,11。分別對應0,1,2,3
s的判斷式子為:
這樣s0和s1會出現4中狀態,則實現使用code輸出abcd
4.2.5 儲存器和時鐘
硬體暫存器與程式暫存器
程式暫存器:暫存器代表cpu中可定址的字
4.3 y86-64的順序實現(seq)
4.3.1 將處理組織成階段
以上,處理器將無限迴圈,發生任何一次處理器就會停止,進入異常處理模式
下面討論指令在個階段的需要做的操作
所得結果為(等號右側時具體數字):
下面給出rmmovq和mrmovq的通用模版
下面給出pushq和popq的通用模版
下面給出jmp、call、ret的通用模版
4.3.2 seq硬體結構
白色圓圈表示線路名稱(非硬體),
粗線表示64根線(字長),細線表示4、8根(位元組)
4.3.3 seq的時序
4.3.4 seq階段的實現
1、取指
2、解碼與寫回
3、執行
4、訪存
其hcl表示式為:
5、更新pc
小結 4.4 流水線的通用原理
4.4.1 計算流水線
4.4.2流水線操作的詳細說明
4.4.3 流水線的侷限性
流水線過深,收益反而下降(因為暫存器的存在,這部分是純粹的消耗)
4.4.4 帶反饋的流水線系統
故引入反饋機制,如下:
4.5 y86-64的流水線實現
4.5.1 seq+:重新安排計算階段
4.5.2 插入流水線暫存器
接著給出pipe-的硬體結構(seq+的流水線版)
4.5.3 對訊號進行重新排列和標號
4.5.4 **下乙個pc
猜測分支方向並根據猜測取指的技術稱為:分支**
還有乙個問題,如果猜錯了該怎麼辦(書上見4.5.8)
4.5.5 流水線冒險
避免方法:
載入、使用資料冒險
避免控制冒險
4.5.6 異常處理
三個問題
分支**錯誤的指令異常
一條指令導致了乙個異常,它後面的指令在異常指令完 成之前改變了部分狀態。
4.5.7 pipe各階段的實現
1、pc選擇與取指
2、解碼與寫回
下面將給出上圖中的**源
3、執行
4、訪存
4.5.8 流水線控制邏輯
處理ret
**錯誤的分支
異常
發現特殊控制條件
流水線控制機制
下圖給出了三種情況下流水線暫存器的狀態變化情況
控制條件的組合——出現多種特殊情況的處理
組合b:
流水線控制邏輯
4.5.9 效能分析
4.5.10 未完成的工作
CmakeLists檢測處理器體系結構
cmake的cmake sizeof void p變數會告訴我們cpu是32位還是64位。我們通過狀態訊息讓使用者知道檢測到的大小,並設定預處理器定義 if cmake sizeof void p equal 8 target compile definitions arch dependent p...
ARM系列處理器的體系結構 1
關於arm系列處理器的體系結構問題,arm的體系結構本來涉及的知識點就比較多和複雜,筆者盡量在此處把知道的一步步的梳理一下 1 關於s3c2440的啟動方式 s3c2440的啟動方式有兩種 1 nand flash啟動 2 nor flash啟動 就是痛撥動開關s2來決定,s2接到nor flash...
第3章 ARM體系結構
arm體系結構還提供一些獨特的特性 處理器模式 縮寫模式編碼 描述user usr0b10000 普通的程式執行模式 fiqfiq 0b10001 支援快速的資料搬移或通道處理 irqirq 0b10010 用於通用的中斷處理 supervisor svc0b10011 用於作業系統的保護模式 ab...