CSAPP 第4章 處理器體系結構

2021-10-18 07:49:39 字數 2359 閱讀 3055

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...