流水線的指令解讀及相關計算

2021-10-19 10:33:49 字數 3143 閱讀 3541

指令通常儲存在主存中,預設情況下由程式計數器進行依次讀取,除非遇到 jmp 命令才會進行跳轉繼續執行。而執行一條指令的過程一般如下( 結合進行理解 ):

①先根據程式計數器 pc 的值從儲存器 m 中讀取一條指令,然後送到指令暫存器 ir 中;

②指令暫存器 ir 將指令中的操作碼 op 送到指令解碼器 id 中進行解碼,再送給時序發生器和操作控制器 oc 決定執行什麼操作;( 注:一條指令由操作碼 op 和位址碼 a 構成)

③然後指令暫存器 ir 將指令中的位址碼 a 送給位址暫存器 ar ,同時使程式計數器 pc 的值加1,即指向下乙個指令;

④儲存器 m 根據位址暫存器 ar 中的位址找到對應的某個儲存單元,然後將該儲存單元的資料送給資料暫存器 dr;

⑤然後再將資料暫存器 dr 中的資料送給通用暫存器組,這裡採用通用暫存器組是考慮到了多個運算元時的情況,方便進行加減乘除、存數等情況。通用暫存器組裡的資料再根據不同的指令決定是進行直接輸出還是通過算術邏輯單元 alu 進行運算。

⑥所得的結果狀態反映到狀態條件暫存器 pswr 中,如結果為0有零標誌位,有產生進製就有進製標誌等。

可以看到,上面所描述的一條指令的執行過程還是比較繁瑣的。其中非流水線的指令便是按照上面的執行過程,每執行完一條指令之後才能執行下一條指令,如下圖所示:

而採用流水線的指令則是將上述的指令執行過程分為了 取指、分析( 解碼 )、執行 3個子過程。( 有些教材會分為 取值、解碼、執行、存數 4個子過程 )。在採用流水線的指令中,每完成一條指令的乙個子過程,則立即開始下一條指令的該子過程,如下圖所示 :

該流水線指令我們稱為標量流水線指令,其中還有一種流水線指令叫做超標量流水線指令( 即同乙個時間可執行兩條及兩條以上指令的某個子過程 ),也是蘊含了多個知識點,這裡軟考不考,所以略過,有時間再寫部落格。

okay,認識完流水線指令,接下來我們再來認識一下有關流水線的相關計算公式。

一條指令的開始到下一條指令的最晚開始時間,這段時間間隔我們稱為流水線的週期。因為在流水線中,指令的執行過程被分為了 取指、分析、執行 3個子過程,這三個子過程有各自的執行時間,一般我們取執行時間最長的一段作為流水線的週期。如 取指需要 4 ns ,分析需要 3 ns,執行需要 2 ns ,則流水線週期 △t等於 4 ns 。

當我們要計算多條指令的執行時間 tm 時,它的值等於「 一條指令的執行時間 + ( 指令條數 - 1 ) * 流水線週期 」,舉個例子,如下圖所示 :

在該圖中,取指和分析都是1個單位時間,而執行是2個單位時間,當我們計算三條指令的執行時間時,只需要計算一條指令的完整執行時間再加上 2個流水線週期即可。

而在實際計算中,多條指令的執行時間又分為理論執行時間和實踐執行時間,題目沒特別說明,一般採用理論執行時間計算即可

①理論時間是指當子過程之間的時間不一樣時,子過程之間是無縫銜接執行的。

理**式 : tm = ( t1 + t2 + … + tk ) + ( n - 1 ) * △t

②實踐時間是指當子過程之間的時間不一樣時,子過程之間必然有一定的空白時間依次進行的。

實踐公式 : tm = ( k + n - 1 ) * △t

流水線的吞吐率 tp是指在單位時間內流水線所完成的任務數量或輸出的結果數量。所以它的值就等於以下公式:

可以看到,當流水線的執行時間一定時,指令條數越多,吞吐率也越大。當指令的條數趨於無窮大時,我們便可以得到流水線的最大吞吐率 tpmax

流水線的加速比 s是用來衡量流水線好壞的重要指標,當採用的指令及其條數相同時,其值等於不使用流水線時的執行時間除以使用流水線的執行時間。

可以看到當 s 的值越大時,則流水線的執行時間越短,該流水線越好

綜合上述知識,請試著解決下列問題:

若指令採用流水線,一條指令的執行過程分為 取指、解碼、執行 3個子過程,其中取指需要 2 ns,解碼需要 2 ns,執行需要 3 ns,則流水線的週期為多少?執行100條指令需要多少時間?其吞吐率和最大吞吐率分別是多少?加速比的值又等於多少呢?

答案:3 ns ; 304 ns ; 0.33 ; 0.33 ; 2.30

流水線的效率 e是指採用流水線時裝置的利用率。其中裝置可以分為 s1、s2、s3、s4 等模組。其時空圖如下所示 (採用 s1、s2、s3 都為 △t,s4 為 3△t 舉例):

其計算公式如下:

其實流水線的效率就是有顏色的部分在整個時空區的佔比。在上述的時空圖中 e = ( ( △t + △t + △t + 3△t ) × 3 ) / ( 12△t × 4) = 37.5%

指令流水線的畫法

指令流水線的畫法 解題想法 流水線有五段,分別為s1,s2,s3,s4,s5.其中s4的執行時間為2 t,其他都是 t,乘法使用的是s1,s2,s5,加法使用的是s1,s3,s4,s5。利用吞吐率加速比和效率公式可不可以計算?對於此類題目,最好畫出指令流水線,因為公式法有一定的侷限性。畫好了!這樣畫...

Jenkins 流水線pineline相關問題

需要歸檔的文件需放在當前job的workplace下,且路徑是相對路徑。歸檔絕對路徑的日誌失敗問題暫未找到解決辦法 1 建立乙個目錄 在pine中建立的目錄,預設的當前路徑是 jenkins workplace your job name 2 將需要的日誌文件等copy到該目錄下 3 對該目錄進行歸...

流水線與指令重排序

流水線是一種指令級並行技術。彙編指令不是一步可以執行完畢的,每個步驟涉及的硬體可能不同,所以可以使用流水線技術來執行指令。可以看到,當第2條指令執行時,第1條指令只是完成了取值操作。假如每個步驟需要1毫秒,那麼如果指令2等待指令1執行完再執行,就需要等待5毫秒。而使用流水線後,只需要等待1毫秒。lw...