<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ARM體系結(jié)構(gòu)之:流水線

          ARM體系結(jié)構(gòu)之:流水線

          作者: 時間:2013-09-13 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/257092.htm

          9TDMI中使用了典型的5級。9TDMI的組織結(jié)構(gòu)如圖2.7所示。

          5級包括下面的級:

          · 取指(fetch):從存儲器中取出指令,并將其放入指令流水線。

          · 譯碼(decode):指令被譯碼,從寄存器堆中讀取寄存器操作數(shù)。在寄存器堆中有3個操作數(shù)讀端口,因此,大多數(shù)指令能在1個周期內(nèi)讀取其操作數(shù)。

          · 執(zhí)行(execute):將其中一個操作數(shù)移位,并在ALU中產(chǎn)生結(jié)果。如果指令是Load或Store指令,則在ALU中計算存儲器的地址。

          · 緩沖/數(shù)據(jù)(buffer/data):如果需要則訪問數(shù)據(jù)存儲器,否則ALU只是簡單地緩沖一個時鐘周期。

          · 回寫(write-back):將指令的結(jié)果回寫到寄存器堆,包括任何從寄存器讀出的數(shù)據(jù)。

          圖2.8顯示了5級流水線指令的執(zhí)行過程。

          圖2.7 5級流水線的組織結(jié)構(gòu)

          圖2.8 5級流水線

          在程序執(zhí)行過程中,PC值是基于3級流水線操作特性的。5級流水線中提前1級來讀取指令操作數(shù),得到的值是不同的(PC+4而不是PC+8)。這產(chǎn)生的代碼不兼容是不容許的。但5級流水線ARM完全仿真3級流水線的行為。在取指級增加的PC值被直接送到譯碼級的寄存器,穿過兩極之間的流水線寄存器。下一條指令的PC+4等于當(dāng)前指令的PC+8,因此,未使用額外的硬件便得到了正確的r15。

          3.6級流水線ARM組織

          在ARM10中,將流水線的級數(shù)增加到6級,使系統(tǒng)的平均處理能力達到了1.3Dhrystone MISP/MHz。圖2.9顯示了6級流水線上指令的執(zhí)行過程。

          圖2.9 6級流水線

          2.2.3 影響流水線性能的因素

          1.互鎖

          在典型的程序處理過程中,經(jīng)常會遇到這樣的情形,即一條指令的結(jié)果被用做下一條指令的操作數(shù)。如例2.4所示。

          【例2.4】

          有如下指令序列:

          LDR r0,[r0,#0]

          ADD r0,r0,r1 ;在5級流水線上產(chǎn)生互鎖

          從例2.4中可以看出,流水線的操作產(chǎn)生中斷,因為第一條指令的結(jié)果在第二條指令取數(shù)時還沒有產(chǎn)生。第二條指令必須停止,直到結(jié)果產(chǎn)生為止。

          2.跳轉(zhuǎn)指令

          跳轉(zhuǎn)指令也會破壞流水線的行為,因為后續(xù)指令的取指步驟受到跳轉(zhuǎn)目標(biāo)計算的影響,因而必須推遲。但是,當(dāng)跳轉(zhuǎn)指令被譯碼時,在它被確認是跳轉(zhuǎn)指令之前,后續(xù)的取指操作已經(jīng)發(fā)生。這樣一來,已經(jīng)被預(yù)取進入流水線的指令不得不被丟棄。如果跳轉(zhuǎn)目標(biāo)的計算是在ALU階段完成的,那么,在得到跳轉(zhuǎn)目標(biāo)之前已經(jīng)有兩條指令按原有指令流讀取。

          解決的辦法是,如果有可能最好早一些計算轉(zhuǎn)移目標(biāo),當(dāng)然這需要硬件支持;如果轉(zhuǎn)移指令具有固定格式,那么可以在解碼階段預(yù)測跳轉(zhuǎn)目標(biāo),從而將跳轉(zhuǎn)的執(zhí)行時間減少到單個周期。但要注意,由于條件跳轉(zhuǎn)與前一條指令的條件碼結(jié)果有關(guān),在這個流水線中,還會有條件轉(zhuǎn)移的危險。

          盡管有些技術(shù)可以減少這些流水線問題的影響,但是,不能完全消除這些困難。流水線級數(shù)越多,問題就越嚴重。對于相對簡單的處理器,使用3~5級流水線效果最好。

          顯然,只有當(dāng)所有指令都依照相似的步驟執(zhí)行時,流水線的效率達到最高。如果處理器的指令非常復(fù)雜,每一條指令的行為都與下一條指令不同,那么就很難用流水線實現(xiàn)。

          存儲器相關(guān)文章:存儲器原理



          上一頁 1 2 3 4 下一頁

          關(guān)鍵詞: 流水線 指令譯碼器 ARM

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();