結構相關
多條指令進入流水線後,在同一始終週期內爭用同一功能部件。這種衝突的通常解決方式為:
前乙個指令訪存的時候,後乙個指令暫停乙個時鐘週期(拖慢一拍),再執行。
增設乙個功能部件
資料相關
第一種情況,後面的指令需要使用到前面的所寫的資料,但是前面還沒來得及寫入,下一條指令就已經向記憶體讀取了資料(此時由於新資料沒有寫入此記憶體位址,於是讀的是舊資料),出現讀後寫。
第二種情況,兩個指令同寫乙個單元,寫的先後次序顛倒
第三鐘情況,這種情況與第一種情況恰好相反,原本需要先讀取資料再寫入,但是現在是先寫入後,再讀取相應的資料,也就是現在是本應該讀取舊資料,現在卻讀取了新的資料。
常見的資料衝突具體例項看下圖:
通常我們的解決方式為:
將遇到資料相關的指令以及後續指令,都暫停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晶元採用的是位址復用技術,至於什麼是位址復用技術,自行查閱資料。做題只需要知道一點,那就是其位址線變為原來所需要的一半。片選的時候用...