體系結構筆記 動態排程中的記分板演算法

2021-09-22 02:13:43 字數 2578 閱讀 1583

記分板控制

具體演算法

在程式執行的過程中,由硬體來對**進行排程來減少由於相關導致的停頓。

對於基本的流水線而言,一旦一條指令受阻,其之後的所有指令都會因此停頓,為了提高流水線的效能我們需要使其可以進行亂序執行。

對於原先的五段流水線,即取指週期(if)、解碼與讀數週期(id)、計算與執行週期(ex)、訪存與分支跳轉(mem)、寫回週期(wb)。我們將解碼與讀數週期分為兩個階段,也就是流出階段與讀操作書階段。

流出階段:指令解碼,檢查是否存在結

構衝突。

讀運算元等待資料衝突消失,然後讀運算元。

結構衝突

對於多條指令同時對於同一硬體資源提出請求時產生的衝突為結構衝突,主要是由於有限的硬體資源所導致的。

資料衝突

raw:當前指令需要使用前面指令的結果,所以需要前面指令先寫入結果之後當前的指令再讀,主要由於真資料相關導致。

war:指令間讀操作在前,寫操作在後,這是為保證讀到的資料為未被修改的資料,所以必須保證先讀後寫,對指令的執行順序有嚴格要求。

waw:指令間寫操作的順序,如果兩條指令同時有寫資料的操作並且其操作的目標物件為同相同的暫存器或者記憶體單元,則也要保證其執行的先後順序,保證最終寫入的資料是最後執行的指令的。

這裡注意一點就是對於讀運算元這個階段,記分板演算法處理的方式是等待衝突消失而不是處理衝突。

記分板控制分為四級:流出、讀數、執行、寫回。(注意不同階段消耗的時鐘週期數不同!)

流出這一階段進行指令解碼,檢查是否含有結構衝突,也就是檢查當前的指令要使用的硬體的使用狀況,之後是檢查資料冒險,如果不存在其他執行的指令與當前指令有相同的目的暫存器(waw)就將指令流出(相應的功能單元更新其內部資料),如果存在結構衝突或者資料冒險就停頓等待衝突消失。(並沒有實際解決衝突)

讀數如果之前執行的指令沒有要寫入源運算元,或者當前執行的功能單元沒有準備寫入包含運算元的暫存器時,則源運算元可用。當運算元可用時進行資料讀入,並準備執行。(動態的解決raw)這樣指令可以不按執行順序的進入執行階段。

執行執行運算,完成後進入寫回階段。

寫回在寫回階段,會先進行war衝突的檢查,如果存在先讀後寫就進行停頓等到讀結束之後寫回。(還是等待的方式處理)

記分板中記錄著程式執行時的狀況,主要可以三個表來描述。

指令的執行過程:也就是上面的四個步驟。

功能部件的狀態:由以下字段描述

busy:用於描述功能部件硬體資源的占用情況

op:說明執行時所用的是哪乙個功能部件

fi:目標暫存器

fj, fk:源運算元或暫存器

**, qk:是否有某個功能單元占用源暫存器fj或fk。

rj, rk:用於標識源暫存器是否準備好。

暫存器的寫入狀態:如果有某個功能部件最終將結果寫入該暫存器就將該暫存器標註上這個功能部件,如果沒有就是空白。

首先是取指令然後到id段,分為解碼與讀數兩個部分,先檢查結構冒險(檢查該指令需要使用的運算器是否正在被占用,通過相應功能部件的busy段可得),有就等待沒有就進行運算元的檢查也就是資料冒險的檢查(檢查目的暫存器是否被功能單元占用等待寫入,通過暫存器的寫入狀態fu表對應)。若無資料衝突則指令流出至讀取運算元段。這裡解決了相關的waw衝突與結構衝突。流出指令後對於對應的fu表中就應有相應的標識了。

讀取運算元階段會通過上面的**,qk段與rj,rk欄位來判斷是否有功能單元對源暫存器有寫入操作,防止raw發生,如果有的話就會等待相關的衝突結束,也就是相關的功能部件將結果寫入後再讀運算元。讀取後就交由運算器處理。這樣對於運算器而言有些先流出的指令會因為運算元的讀取而後執行,實現了指令的亂序執行

指令的執行就沒啥可說的了,不同的指令執行週期不同,等到指令執行結束通知版準備寫回。

在寫迴段主要檢查是否含有(war),如果有就等待相應的指令讀數結束在進行寫回操作,將結果寫入暫存器中。

在圖中add完成了執行,但是div中的f6卻就緒了,由於f0的raw並未讀入運算元,這時add

的結果也不能寫入,必須等到相應的讀操作結束才能寫入。

對於冒險的處理大多以等待來解決,效率低。

存在結構冒險,就暫停發射指令;

無法消除 war 和 waw 兩種相關,僅通過暫停來處理。

並行性的使用僅在處理raw 相關時使用來亂序執行減少停頓週期。

體系結構筆記 動態排程中的記分板演算法

記分板控制 具體演算法 在程式執行的過程中,由硬體來對 進行排程來減少由於相關導致的停頓。對於基本的流水線而言,一旦一條指令受阻,其之後的所有指令都會因此停頓,為了提高流水線的效能我們需要使其可以進行亂序執行。對於原先的五段流水線,即取指週期 if 解碼與讀數週期 id 計算與執行週期 ex 訪存與...

ARM體系結構中的儲存系統

在介紹arm體系結構中的儲存系統之前,先簡單介紹一下arm程式設計模型中與儲存系統相關的一些概念。arm體系結構使用單一的平板位址空間,該位址空間的範圍大小為232個8位位元組。這些位元組單元的位址是乙個無符號的32位數值,其取值範圍為0 232 1。有了儲存系統的定址範圍之後,還需要討論一下實際儲...

軟體的體系結構可以模擬建築中的結構定義與業務架構

建築 蓋房子需要磚瓦石頭,窗戶,門還需要水泥,釘子,螺絲,砌磚牆需要水泥將其粘合起來,安窗戶,門需要用釘子吧門窗固定到牆裡,顯然不能使用釘子將磚釘成牆,用水泥把窗戶糊在牆裡 構件 連線件 約束 軟體體系結構 構件 連線件 約束 我眼中的 構件 一些基本的構成元素 連線件 構件之間的連線關係,是粘合劑...