挑戰408 組成原理(27) 流水線的影響因素

2021-09-29 09:43:44 字數 1755 閱讀 4705

結構相關

多條指令進入流水線後,在同一始終週期內爭用同一功能部件。這種衝突的通常解決方式為:

前乙個指令訪存的時候,後乙個指令暫停乙個時鐘週期(拖慢一拍),再執行。

增設乙個功能部件

資料相關

第一種情況,後面的指令需要使用到前面的所寫的資料,但是前面還沒來得及寫入,下一條指令就已經向記憶體讀取了資料(此時由於新資料沒有寫入此記憶體位址,於是讀的是舊資料),出現讀後寫。

第二種情況,兩個指令同寫乙個單元,寫的先後次序顛倒

第三鐘情況,這種情況與第一種情況恰好相反,原本需要先讀取資料再寫入,但是現在是先寫入後,再讀取相應的資料,也就是現在是本應該讀取舊資料,現在卻讀取了新的資料。

常見的資料衝突具體例項看下圖:

通常我們的解決方式為:

將遇到資料相關的指令以及後續指令,都暫停1到n個週期,直到資料相關問題消失後再執行:

設定專用的通路,當資料發生資料相關的時候,第2條指令的運算元直接從資料處理部件讀取而不需要等資料存入再讀(這種技術又稱資料旁路技術):

結構相關

當流水線遇到轉移指令和其他改變pc值的指令而造成斷流時候,則會引起控制相關:

通常的解決辦法是:機器先選定轉移分支中的乙個繼續執行,待條件碼生成後,判斷選擇是否正確,若正確則流水線繼續執行,否則返回分支處重新處理。

注意,cache的缺失也會因此流水線阻塞。

在流水線操作中,時鐘週期應該按所有步驟中所需時間最長的步驟考慮,以保證所有操作可以正確被執行。

典型例題

下面看一道例題:

現在有4級流水線,分別完成取指,解碼取數,運算,回寫共4步。完成時間依次為 100ns,100ns,80ns,50ns,問:

流水線的操作週期t應該設定為多少?

相鄰兩條指令是否會發生資料相關?若不採用硬體改造,第二條指令應該推遲多長時間?如果採用硬體改造,則需要推遲多長時間?

解答

第一問,在流水線操作中,時鐘週期應該按所有步驟中所需時間最長的步驟考慮,所以是t= 100ns

第二問,如下圖,顯然在運算時不能進行取數,而且在回寫的時候,不能運算。因此存在資料衝突

如果不採用硬體改造,那麼發生衝突的時候,第二條指令就要暫停等待,於是就有下圖:

後退兩個週期,那麼第一問就回答了週期應該是100ns,所以延時 2 x 100ns = 200ns。

如果採用硬體改造,那麼回寫跟運算可以同時進行,也就是:

此時也就是後退了乙個週期,100ns

挑戰408 組成原理(3) 原碼,補碼,反碼

計算機中的資料分為數值資料和非數值型資料 如聲音,影象等等 我們接下來主要談的是數值型資料。在現實的生活中,數值資料主要分為實數和整數兩大類,在計算機中,整數用定點數表示,實數用浮點數表示,而所有帶符號的整形都用補碼表示。目前通用計算機中浮點數大多數採用ieee754標準,其中尾數採用定點原碼表示,...

挑戰408 組成原理(17) 指令格式

好久沒更新了,放元旦本來打算跨個年,可惜外面太冷。還是我在家裡寫寫文章吧。由開始的時候我們知道,計算機能解題,是由於機器本身存在一種語言,它既能理解人的意圖,又能被機器本身識別。機器語言,是由一條條語句構成的,每一條語句又能準確的表達某種語義 比如某種運算元,參與操作的數,或者其他的資訊在何處 而計...

挑戰408 組成原理(16) 儲存器刷題(1)

半導體隨機儲存器 sram dram 主存擴容 並行儲存器 cache及其替換演算法 補充知識點 sram和dram在與cpu的連線上有什麼不同?答 在實際中,dram晶元採用的是位址復用技術,至於什麼是位址復用技術,自行查閱資料。做題只需要知道一點,那就是其位址線變為原來所需要的一半。片選的時候用...