《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 指令擴展接口的數據沖突消除
指令擴展接口的數據沖突消除
2014年電子技術應用第7期
徐 巖,郭怡惠,徐金甫
信息工程大學,河南 鄭州450001
摘要: 為了解決通用RISC微處理器進行指令擴展時開發難度大的問題,提出一種在處理器上增加指令擴展接口的方法。消除增加指令擴展接口以后的數據沖突是該方法的關鍵技術。如果不能有效解決數據沖突,將導致處理器運行出錯或效率下降。介紹了處理器增加指令擴展接口以后的結構,把處理器通用指令和擴展指令按運算結果產生時刻分為兩種類型,分析執行不同類型指令發生數據沖突的情況,最后設計完成數據定向通道。編寫程序測試處理器指令擴展和處理數據沖突的功能。測試結果表明,處理器增加指令擴展接口以后能夠實現指令擴展并且能夠有效處理數據沖突。
中圖分類號: TP334.7
文獻標識碼: A
文章編號: 0258-7998(2014)07-0009-04
Data hazards elimination of instruction extension interface
Xu Yan,Guo Yihui,Xu Jinfu
Information Engineering University,Zhengzhou 450004,China
Abstract: In order to solve the problem that it is difficult to extend instructions when developing generic RISC microprocessor, a method of adding instruction extension interface to microprocessor was proposed. The key technology was to eliminate the data hazard when instruction extension interface was added. The processor would run an error or fall efficiency if the data hazard could not be resolved effectively. The structure added instruction extension interface to the microprocessor was introduced. Two types of generic and extended instructions of microprocessor were divided depending on the time the computing results produced. The condition was analyzed about how the data hazard occur when the different types of instruction were execute, and data direction channel was designed in the end. The verification program was written to test the function of the extension of processor instruction and data hazard. The results show that the instruction extension is realized and data hazard is resolved when instruction extension interface is added to the processor.
Key words : RISC;microprocessor;instruction extension;interface;data hazard

         RISC(精簡指令集處理器)處理器完成一個指令集包含的操作只需要一條指令,而要完成一個指令集不包含的操作則需要幾條甚至幾十條基本操作指令,大大降低了處理效率[1]。針對這一問題,本文提出一種在通用RISC微處理器中增加指令擴展接口的方法。用戶可以根據自己的需要,在擴展接口掛接自己設計的擴展模塊,即可簡單、靈活地進行指令擴展。如何消除數據沖突是設計指令擴展接口的關鍵技術。

        在編寫程序時通過人為調整指令順序可以消除數據沖突,這種方法不需要更改硬件電路,但是容易發生錯誤,而且對于無法通過調整順序消除的沖突需要插入空指令,降低了執行效率。另外一種簡單的方法就是設置流水線互鎖部件,如果檢測到兩條指令之間存在沖突,則使流水線停頓,直到沖突消除,這種方法同樣會導致執行效率的降低。

        本文將處理器通用指令和擴展指令按照運算結果產生時刻分為兩種類型,通過分析不同類型指令發生數據沖突的情況,設計數據定向通道來消除數據沖突。通過設計數據定向通道可以保證程序執行的正確性和執行效率。

1 指令擴展接口結構

        指令擴展接口在RISC處理器的基礎上設計,本文選用的 RISC處理器以MIPS指令集為標準,采用哈佛結構程序空間與數據空間相互獨立,設立5級流水線[2]。5級流水線包括:

        (1)指令獲取(Instruction Fetch,IF);

        (2)指令譯碼(Instruction Decode,ID);

        (3)指令執行(Instruction Execute,EX);

        (4)內存讀寫(Memory Access,MEM);

        (5)寄存器回寫(Write Back,WB)。

        整個微處理器系統[3]劃分為兩部分:一部分是數據單元,另一部分是控制單元。在每條指令執行的過程中,控制單元控制數據通路正確無誤地執行每條指令,完成數據的各種運算,實現處理器的各項功能。

        設計完成的指令擴展接口支持兩種類型的擴展指令:一種為A型簡單指令,該指令用于實現簡單的邏輯運算;另一種為B型復雜指令,該指令用于實現一些復雜的操作。用戶在進行指令擴展時,根據運算的復雜度選擇相應的指令類型,可以降低難度,提高效率。

        對于A型指令,由于只是實現簡單的邏輯運算,可以通過擴展流水線執行級的ALU(邏輯運算單元)實現,是單個時鐘周期內組合邏輯電路。這種擴展方法與Nios II的定制指令相似[4-5]

        對于B型指令,外圍擴展模塊要占用EX和MEM兩個流水級[6],這是因為:(1)擴展指令不能對處理器數據存儲區進行訪問,所以處理器執行擴展指令時系統EX和MEM級處于空閑狀態;(2)如果用戶設計的邏輯運算單元關鍵路徑太長,延時大于時鐘周期,就需要在運算單元中間插入一級寄存器;(3)用戶可能需要自建存儲區域,需要兩個時鐘周期才能完成存取操作。基于以上3點原因,使擴展模塊占用兩個流水級能夠給外部擴展模塊預留足夠的設計空間,更好地滿足設計需求。B型指令擴展結構在處理器與外部擴展模塊之間增加了一個接口單元。接口單元的作用是隔離系統的控制通路,使擴展接口只保留數據信號[7]

2 數據沖突分析

        數據沖突是指令在流水線中重疊執行時因需要用到前面指令的執行結果而發生的沖突。流水線沖突除了數據沖突還有結構沖突和控制沖突。由于加入指令擴展接口以后,只對處理器的數據沖突產生重大影響,所以本文對如何消除結構沖突和控制沖突就不再介紹,只介紹處理器的數據沖突以及如何將其消除。

        為了能夠更加清楚地說明增加指令擴展接口以后流水線數據沖突的情況,本文用數據路徑的快照形式反映流水線的執行過程。在時空圖中數據路徑的快照示例如圖1所示。

        在圖1中,將處理器的指令(包括通用指令和兩種類型擴展指令)按照運算結果產生時刻分為兩類:(1)在流水線第三級(執行級)產生結果,這種指令包括處理器自身的數據操作指令和A型擴展指令,用圖1中(a)表示;(2)在流水線第四級(內存讀寫級)產生結果,這種指令包含處理器load指令和B型擴展指令,用圖1中(b)表示。在圖2所示的時空圖中將采用上面兩種數據路徑快照表示相應指令的執行過程。

        將指令分為(a)、(b)兩種類型以后,相鄰兩條指令存在數據沖突的情況就可以歸結為以下四種情況。

        在圖2中,箭頭代表數據需要傳輸的路徑,箭頭起點為第一條指令數據最早產生的位置,箭頭終點為第二條指令最遲需要數據的位置。從圖2可以看出,(1)、(2)兩種情況下數據產生的時刻比數據需要的時刻早,對于這種情況采取措施將前一條指令的運算結果通過專用通道提前送給當前指令需要數據的位置,流水線可以順序執行。而對于(3)、(4)兩種情況,前一條指令結果產生的時刻比后一條指令需要數據的時刻晚,所以無論采取什么措施,都無法得到前一條指令的運算結果,對于這種情況,流水線必須暫停一個時鐘周期,等前一條指令運算完成以后數據通過定向通道送給第二條指令,流水線才能繼續執行。

        上面分析的是簡單數據沖突,第二條指令只與前面一條指令發生數據沖突。還有一種更復雜的情況是后面一條指令與前面兩條指令都發生數據沖突。為了能夠更形象地體現這種情況,將圖1中(a)型指令的數據路徑快照稍微修改,即為如圖3所示的復雜情況的數據沖突。

        在圖3中,第三條指令中執行級的源操作數a是第一條指令的目的操作數,源操作數b是第二條指令的目的操作數。此時源操作數a通過定向通道已經準備好了,而源操作數b還沒有運算完成,所以執行第三條指令時需插入一個氣泡。流水線停頓一個時鐘周期以后,第二條指令的運算結果可以通過定向通道送給第三條指令的執行級。但是此時第一條指令的運算結果已經回寫到數據寄存器,通過定向通道送過來的數據已經不是第三條指令所需的數據,這樣就導致運算結果出錯。

        對于這種情況,需要對第一條指令定向過來的數據寄存一級,流水線停頓一個時鐘周期以后源操作數a使用寄存以后的數據,源操作數b使用定向通道送來的數據。

3 數據定向通道設計

        數據定向通道就是將EX級和MEM級操作完成以后的數據和目的寄存器的地址直接送到EX級輸入端。回送目的寄存器地址用于檢測數據沖突,沖突檢測部件的工作過程:(1)比較當前指令源操作數寄存器的地址與回送的目的寄存器地址是否相同;(2)檢測前面指令運算結果是否有效;(3)檢測當前指令源地址是否有效;(4)條件全部滿足以后,發出流水線沖突信號。

        控制單元檢測沖突類型,如果流水線不需要停頓,則控制EX級內部的數據選擇器選擇定向通道的數據;如果需要停頓,則控制流水線停頓。

        對于B型擴展指令,如果在接口單元內部再設計一套沖突檢測部件和數據定向通道,則會造成資源浪費。在執行B型擴展指令時,處理器EX級和MEM級處于空閑狀態,因此可以利用EX級中的部分資源。最后設計數據定向通道后處理器的局部數據路徑如圖4所示。

        在圖4中只顯示與數據流動有關的部件。圖中接口單元和EX級使用相同的數據定向通道[8],數據沖突檢測部件也使用同一個。接口單元在執行B型擴展指令且沒有發生數據沖突時,接口單元控制信號才有效,接口單元通過指令擴展接口向外傳遞有效數據,而且只有在控制信號有效時,接口單元接收到的數據才送到回寫單元,否則將接收到的數據丟棄。雖然控制單元不能直接控制外部擴展模塊,但是通過控制接口單元導通、關斷數據的方式,可使外部擴展模塊準確地工作在流水線中。圖4中右上角“Reg”寄存器的作用是對MEM級定向的數據寄存一級,用于解決3條指令存在數據沖突的問題。

4 功能測試 

        最后在RISC微處理器基礎上設計完成指令擴展接口,預留的A型和B型擴展指令各有200條,對增加了指令擴展接口的處理器進行數據沖突測試。擴展一條A型指令,指令格式:AR3 Rd,Rt;指令功能:將Rt寄存器的值按位取反,結果賦給Rd寄存器。擴展一條B型指令,指令格式:BR1 Rd,Rs,Rt;指令功能:Rs寄存器的值和Rt寄存器的值按位同或,結果賦給Rd寄存器。編寫一段針對性強的程序,用于測試增加指令擴展接口以后處理器處理數據沖突的能力。測試程序如圖5所示,圖6為測試結果。

        圖5中的4條測試程序包含了可能的數據沖突的情況。圖6為使用EDA(Electronic Design Automation)軟件仿真得到的波形圖。從圖中可以看出,除了第三條指令,其他指令數據沖突都通過數據定向解決,流水線沒有停頓;第三條指令和前兩條指令產生沖突,流水線停頓一個時鐘周期以后得到正確的運算結果。

        如果使用指令調度解決數據沖突,同樣是執行圖5中的程序,則需要編譯軟件或者人為地在存在數據沖突的指令之間插入空指令,最后處理器實際執行的指令如下:

        AR3 R4,R1;

        NOP;NOP;NOP;

        BR1 R5,R2,R4;

        NOP;NOP;NOP;

        ADDU R6,R5,R4;

        NOP;NOP;NOP;

        OR R7,R6,R1;

        使用流水線停頓解決數據沖突,處理器最后執行效果與上面結果相同,只是使用指令調度處理器通過執行空指令等待前面程序運行完成,而流水線停頓是通過內部設置的流水線互鎖部件使流水線停頓等待前面程序運行完成。上面兩種方法使用軟件仿真得到測試結果如圖7所示。

        從圖6、圖7中可以看出,執行相同的程序,圖6使用的時鐘數明顯比圖7中使用的時鐘數多。為了能夠更直觀地對比處理器的執行效率,引入每條指令的平均時鐘周期數CPI(Cycles Per Instruction)。通過簡單計算可知,執行上面的測試程序時本文方法的CPI=5/4=1.25,而使用軟件調度或者流水線停頓方法的CPI=13/4=3.25。可見,使用數據定向通道可以提高處理器的執行效率。

        在進行SoC設計時,使用具有指令擴展接口的處理器,只需要設計擴展模塊就可以完成指令擴展,實現復雜操作,而且不會對處理器自身產生任何影響,在保證系統穩定性的前提下,增加了系統的運算能力。如果本文的設計方法能夠廣泛應用到微處理器的設計中,則具有指令擴展接口的RISC 微處理器將會極大地促進SoC設計的進步。

參考文獻

[1] 夏軍.32位RISC微處理器設計研究[D].武漢:華中科技大學,2004.

[2] 張晨曦,王志英.計算機系統結構[M].北京:高等教育出版社,2011.

[3] 鄭緯民.計算機組成和設計[M].北京:清華大學出版社,2003.

[4] 李蘭英.Nios II嵌入式軟核SoPC設計原理及應用[M].北京:北京航空航天大學出版社,2009.

[5] 屈文新,樊曉椏.一種高代碼密度RISC結構微控器的設計[J].小型微型計算機系統,2006,27(7):1242-1244.

[6] 劉元鋒.RISC架構微處理器擴展對稱密碼處理指令的研究[D].鄭州:解放軍信息工程大學,2006.

[7] 張琰,戴紫彬.RISC結構微處理器專用存儲單元的研究與實現[J].電子技術應用,2008,34(7):140-146.

[8] 李秀娟,王祖強,張甜.一種8位嵌入式RISC MCU IP核數據通道模型設計[J].電子技術應用,2006,32(4):105-106.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲欧洲日韩女同| 欧美精品一区二区三区蜜桃 | 国产精品99一区二区| 一区二区三区精品| 久久久久久一区二区| 欧美一级片久久久久久久| 国产性猛交xxxx免费看久久| 亚洲国产精品一区二区久| 欧美国产精品中文字幕| 亚洲午夜羞羞片| 久久综合久久综合久久| av成人免费观看| 久久久久久久97| 99国产精品久久久久老师| 香蕉精品999视频一区二区| 黄色国产精品一区二区三区| 亚洲欧美一区二区三区极速播放| 在线看片一区| 免费成人小视频| 性久久久久久久久| 国产精品理论片在线观看| 一区二区三区产品免费精品久久75 | 在线综合欧美| 黄色精品一区| 欧美日韩在线精品| 久久国产精品亚洲va麻豆| 亚洲日本视频| 一区二区毛片| 久久久精品性| 久久精品国产精品亚洲综合| 极品少妇一区二区| 欧美精品一区三区在线观看| 99视频精品在线| 在线亚洲激情| 狠狠久久五月精品中文字幕| 久久人人爽人人爽| 亚洲毛片播放| 这里只有精品丝袜| 国产日韩欧美一区| 久久精品国产久精国产思思| 久久精品1区| 国产视频一区在线| 欧美日韩一区自拍| 女女同性精品视频| 蜜月aⅴ免费一区二区三区| 欧美一区二区高清| 亚洲专区一区二区三区| 亚洲午夜羞羞片| 一区二区三区高清在线| 亚洲欧洲中文日韩久久av乱码| 一区二区三区.www| 一本色道久久综合亚洲二区三区| 亚洲激情女人| 日韩视频在线一区| 一区二区三区精品| 亚洲欧美大片| 欧美中文字幕在线观看| 亚洲国产另类久久精品| 亚洲免费观看高清完整版在线观看熊 | 最新日韩在线视频| 国产精品99久久99久久久二8| 国产精品成人一区二区网站软件 | 亚洲影院一区| 亚洲精品1区2区| 久久国产黑丝| 久久不见久久见免费视频1| 亚洲一二三区在线| 国产亚洲成av人在线观看导航| 99视频超级精品| 性高湖久久久久久久久| 亚洲成色777777在线观看影院| 欧美性大战久久久久久久| 久久夜色精品国产亚洲aⅴ| 夜夜嗨av一区二区三区中文字幕| 亚洲免费影院| 亚洲精品美女久久7777777| 国产自产高清不卡| 欧美亚州一区二区三区| 欧美精品999| 裸体一区二区| 久久精品在线视频| 午夜欧美理论片| 国产精品99久久久久久久久久久久| 久久精品视频在线播放| 午夜精品av| 小辣椒精品导航| 亚洲欧美日韩另类精品一区二区三区| 夜夜爽av福利精品导航 | 亚洲国产精品高清久久久| 国产一区视频观看| 国产日本欧美一区二区三区在线| 亚洲尤物精选| 亚洲一区二区3| 9色国产精品| 一区二区三区成人| 亚洲天堂免费观看| 亚洲综合视频在线| 午夜精品久久久久99热蜜桃导演| 亚洲免费在线观看| 性做久久久久久久免费看| 欧美一区二区三区婷婷月色 | 亚洲女同同性videoxma| 亚洲欧美成人精品| 欧美亚洲三区| 麻豆精品网站| 欧美精品日韩综合在线| 国产精品第三页| 国产日韩av在线播放| 一色屋精品视频免费看| 亚洲第一中文字幕| 99精品视频一区二区三区| 亚洲国产欧美日韩精品| 日韩亚洲欧美一区二区三区| 亚洲婷婷在线| 亚洲国产女人aaa毛片在线| 日韩视频精品在线| 久久精品99国产精品酒店日本| 老巨人导航500精品| 欧美日韩亚洲综合| 国产一区成人| 一区二区三区四区五区视频| 欧美一区二区高清| 9色国产精品| 午夜亚洲性色视频| 欧美精品黄色| 国产精品日韩欧美一区| 91久久中文| 久久gogo国模啪啪人体图| 宅男66日本亚洲欧美视频| 老司机凹凸av亚洲导航| 国产精品免费网站| 日韩视频国产视频| 午夜久久影院| 亚洲视频免费观看| 免费在线观看成人av| 国产精品资源| 一区二区成人精品| 亚洲国产mv| 久久国产精品久久精品国产| 国产精品久久久久久久久免费桃花| 亚洲成人在线| 亚洲国产精品久久久久秋霞影院 | 亚洲欧美色一区| 亚洲午夜精品久久| 欧美高清在线精品一区| 影音先锋亚洲精品| 久久精品视频在线| 玖玖综合伊人| 在线观看国产精品淫| 亚洲韩国青草视频| 猛男gaygay欧美视频| 极品日韩久久| 亚洲无限av看| 99精品视频网| 午夜宅男久久久| 久久美女性网| 国产精品国产三级国产专播精品人| 国产精品久久久99| 国产精品尤物| 亚洲久色影视| 亚洲电影天堂av| 亚洲福利精品| 久久精品理论片| 99视频+国产日韩欧美| 在线一区二区日韩| 午夜精品av| 激情久久婷婷| 国产香蕉久久精品综合网| 国产午夜精品在线| 永久免费视频成人| 欧美在线视频免费| 中文国产成人精品| 亚洲女人天堂成人av在线| 91久久视频| 欧美日韩在线影院| 亚洲天堂免费观看| 亚洲一区二区三区四区在线观看 | 亚洲香蕉成视频在线观看| 亚洲国产精品一区二区三区| 野花国产精品入口| 久热精品视频在线免费观看| 欧美日韩亚洲国产精品| 亚洲国产一区二区视频| 羞羞漫画18久久大片| 亚洲日本无吗高清不卡| 亚洲欧美高清| 正在播放欧美视频| 欧美jizzhd精品欧美巨大免费| 国产毛片精品国产一区二区三区| 在线精品观看| 日韩天堂在线观看| 欧美老女人xx| 亚洲欧洲综合| 欧美日韩在线三区| 日韩视频三区| 亚洲欧美日韩综合一区| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲免费av片| 国产精品大片免费观看| 亚洲成色999久久网站|