流水線中的相關(guān)培訓(xùn)教程[1]
流水線中的相關(guān)培訓(xùn)教程[1]
?學(xué)習(xí)目標(biāo)
??? 理解流水線中相關(guān)的分類及定義;
??? 掌握結(jié)構(gòu)相關(guān)的解決方法;
??? 掌握數(shù)據(jù)相關(guān)的三種類型;
??? 掌握定向技術(shù)的主要思想及應(yīng)用;
??? 掌握指令調(diào)度技術(shù);
??? 了解對DLX流水線控制的實現(xiàn)。
?
??? 正文:
?? 3.3流水線中的相關(guān)
??? 流水線中的相關(guān)是指相鄰或相近的指令因存在某種關(guān)聯(lián),后面的指令不能在原指定的時鐘周期開始執(zhí)行。一般來說,流水線中的相關(guān)主要分為如下三種類型:
??? 1. 結(jié)構(gòu)相關(guān):當(dāng)硬件資源滿足不了指令重疊執(zhí)行的要求,而發(fā)生資源沖突時,就發(fā)生了
??? 結(jié)構(gòu)相關(guān)。
??? 2. 數(shù)據(jù)相關(guān):當(dāng)一條指令需要用到前面指令的執(zhí)行結(jié)果,而這些指令均在流水線中重疊
??? 執(zhí)行時,就可能引起數(shù)據(jù)相關(guān)。
??? 3. 控制相關(guān):當(dāng)流水線遇到分支指令和其它能夠改變 PC 值的指令時,就會發(fā)生控制相
??? 關(guān)。
??? 一旦流水線中出現(xiàn)相關(guān),必然會給指令在流水線中的順利執(zhí)行帶來許多問題,如果不能很好地解決相關(guān)問題,輕則影響流水線的性能,重則導(dǎo)致錯誤的執(zhí)行結(jié)果。消除相關(guān)的基本方法是讓流水線暫停執(zhí)行某些指令,而繼續(xù)執(zhí)行其它一些指令。
??? 在后面的討論中,我們約定:當(dāng)一條指令被暫停時,在該暫停指令之后發(fā)射的所有指令都要被暫停,而在該暫停之前發(fā)射的指令則可繼續(xù)進(jìn)行,在暫停期間,流水線不會取新的指令。
?
?3.3.1流水線的結(jié)構(gòu)相關(guān)
??? 如果某些指令組合在流水線中重疊執(zhí)行時,產(chǎn)生資源沖突,則稱該流水線有結(jié)構(gòu)相關(guān)。為了能夠在流水線中順利執(zhí)行指令的所有可能組合,而不發(fā)生結(jié)構(gòu)相關(guān),通常需要采用流水化功能單元的方法或資源重復(fù)的方法。
??? 許多流水線機(jī)器都是將數(shù)據(jù)和指令保存在同一存儲器中。如果在某個時鐘周期內(nèi),流水線既要完成某條指令對數(shù)據(jù)的存儲器訪問操作,又要完成取指令的操作,那么將會發(fā)生存儲器訪問沖突問題 (如圖3.3.1所示),產(chǎn)生結(jié)構(gòu)相關(guān)。為了解決這個問題,可以讓流水線完成前一條指令對數(shù)據(jù)的存儲器訪問時,暫停取后一條指令的操作 (如圖3.3.2所示)。該周期稱為流水線的一個暫停周期。暫停周期一般也稱為流水線氣泡,或簡稱為氣泡。從圖3.3.2可以看出,在流水線中插入暫停周期可以消除這種結(jié)構(gòu)相關(guān)。
??? 也可以用如圖3.3.3所示的時空圖來表示上述暫停情況。
? 由上可知,為消除結(jié)構(gòu)相關(guān)而引入的暫停將影響流水線的性能。為了避免結(jié)構(gòu)相關(guān),可以考慮采用資源重復(fù)的方法。比如,在流水線機(jī)器中設(shè)置相互獨立的指令存儲器和數(shù)據(jù)存儲器;也可以將 Cache 分割成指令 Cache 和數(shù)據(jù) Cache。
??? 假設(shè)不考慮流水線其它因素對流水線性能的影響,顯然如果流水線機(jī)器沒有結(jié)構(gòu)相關(guān),那么其 CPI 也較小。然而,為什么有時流水線設(shè)計者卻允許結(jié)構(gòu)相關(guān)的存在呢?主要有兩個原因:一是為了減少硬件代價,二是為了減少功能單元的延遲。如果為了避免結(jié)構(gòu)相關(guān)而將流水線中的所有功能單元完全流水化,或者設(shè)置足夠的硬件資源,那么所帶來的硬件代價必定很大。
??? 3.3.2流水線的數(shù)據(jù)相關(guān)
??? 1. 數(shù)據(jù)相關(guān)簡介
??? 當(dāng)指令在流水線中重疊執(zhí)行時,流水線有可能改變指令讀/寫操作數(shù)的順序,使得讀/寫操作順序不同于它們非流水實現(xiàn)的順序,這將導(dǎo)致數(shù)據(jù)相關(guān)。首先讓我們考慮下列指令在流水線中的執(zhí)行情況: ADD? R1, R2, R3
??? SUB R4, R5, R1
??? AND? R6, R1, R7
??? OR R8, R1, R9
??? XOR R10, R1,? R11
?
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%
相關(guān)閱讀:
- [電子說] 多周期cpu的設(shè)計思想是什么?怎樣實現(xiàn)cpu多流水線? 2023-10-19
- [電子說] 單周期cpu和多周期cpu的區(qū)別 多周期cpu和流水線的區(qū)別 2023-10-19
- [電子說] 大模型時代,如何搭建數(shù)據(jù)的“智能化流水線”? 2023-10-16
- [電子說] ARMv7-A架構(gòu)學(xué)習(xí)筆記:通用寄存器與流水線 2023-10-16
- [PCB設(shè)計] 簡單平行式結(jié)構(gòu)貼片機(jī) 2023-09-26
- [模擬技術(shù)] 流水線ADC結(jié)構(gòu)解析 流水線ADC和其它ADC的比較 2023-09-26
- [電子說] 流水線ADC的內(nèi)部結(jié)構(gòu)和工作原理是什么 2023-09-26
- [電子說] 流水線Andon安燈呼叫系統(tǒng)解決方案及應(yīng)用背景 2023-09-25
( 發(fā)表人:admin )