《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 指令擴展接口的數據沖突消除
指令擴展接口的數據沖突消除
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亚洲国产精品_日韩亚洲一区二区
亚洲五月六月| 在线亚洲成人| 最近中文字幕mv在线一区二区三区四区 | 欧美精品一区二区高清在线观看| 99精品免费网| 久久精品免费看| 亚洲一区影音先锋| 99riav1国产精品视频| 伊人久久成人| 国产毛片精品国产一区二区三区| 麻豆国产va免费精品高清在线| 国语自产在线不卡| 欧美日韩亚洲一区二区三区在线观看 | 亚洲女性裸体视频| 99精品国产福利在线观看免费 | 亚洲福利久久| 国产一区二区三区最好精华液| 国产精品久久久久久久久借妻 | 欧美在线亚洲| 亚欧成人在线| 亚洲一级二级在线| 久久成人免费电影| 亚洲高清视频在线观看| 国产亚洲综合在线| 国产麻豆精品视频| 国产精品高潮呻吟久久av无限 | 久久亚洲高清| 久久久久久午夜| 欧美一区二区免费视频| 午夜精品影院| 亚洲欧美一级二级三级| 一本一本大道香蕉久在线精品| 亚洲激精日韩激精欧美精品| 亚洲国产aⅴ天堂久久| 欧美中文字幕第一页| 一区二区三区视频在线播放| 99视频在线精品国自产拍免费观看 | 欧美视频三区在线播放| 欧美日韩第一区日日骚| 欧美日韩国产成人在线91| 欧美日韩 国产精品| 蜜乳av另类精品一区二区| 免费成人毛片| 欧美99在线视频观看| 麻豆久久婷婷| 欧美xxx成人| 欧美黄色小视频| 欧美精品亚洲精品| 欧美另类在线播放| 欧美一区激情| 久久久久国内| 狂野欧美性猛交xxxx巴西| 久久精品视频在线观看| 久久夜色精品一区| 免费看亚洲片| 免费观看一级特黄欧美大片| 欧美激情一区二区三区在线视频观看| 欧美黄色片免费观看| 欧美日韩在线观看一区二区| 欧美性生交xxxxx久久久| 国产精品久久久久久久久久久久久久| 欧美日韩国产色视频| 欧美性做爰毛片| 国产精品亚洲第一区在线暖暖韩国| 国产精品尤物| 国产日韩欧美一区在线| 精品成人国产| 亚洲精品人人| 亚洲理论电影网| 亚洲线精品一区二区三区八戒| 99精品视频免费观看| 一区二区高清视频| 午夜激情久久久| 欧美亚洲视频一区二区| 亚洲激情专区| 亚洲一区免费视频| 久久人体大胆视频| 欧美日韩亚洲视频一区| 国产日韩精品一区二区三区| 欧美大片一区| 国产精品第一区| 欧美高清视频| 欧美日韩精品免费观看| 国产毛片精品国产一区二区三区| 精久久久久久| 在线综合视频| 亚洲黄色在线看| 亚洲欧美在线免费| 免费一级欧美片在线观看| 免费一级欧美片在线观看| 欧美日韩美女| 国产精品一区毛片| 一色屋精品视频免费看| 亚洲视频www| 亚洲人久久久| 亚洲欧美变态国产另类| 麻豆成人91精品二区三区| 国产精品成人观看视频国产奇米| 国外视频精品毛片| 亚洲视频综合| 亚洲精品在线电影| 久久九九久精品国产免费直播| 欧美一区亚洲| 欧美日本成人| 国产日韩精品在线观看| 亚洲乱码久久| 久久精品一区二区三区不卡牛牛| 亚洲一区欧美| 欧美日本亚洲视频| 亚洲福利av| 欧美一区二区精美| 亚洲专区欧美专区| 欧美激情导航| 国产欧美日韩在线观看| aa成人免费视频| 亚洲三级毛片| 久久午夜精品一区二区| 国产精品久久久久久久app| 亚洲国产成人久久综合| 欧美呦呦网站| 午夜精品一区二区三区电影天堂 | 亚洲一区二区三区久久| 国产精品99久久99久久久二8| 欧美国产成人精品| 91久久精品美女高潮| 亚洲精品日韩在线观看| 欧美福利在线| 亚洲片在线观看| 中文一区字幕| 国产精品高潮久久| 亚洲欧美成人一区二区在线电影| 亚洲欧美一区二区激情| 国产欧美精品日韩| 欧美在线首页| 美女露胸一区二区三区| 亚洲国产91精品在线观看| 亚洲理伦在线| 欧美性久久久| 午夜性色一区二区三区免费视频 | 欧美一区二区国产| 国产曰批免费观看久久久| 久久精品夜色噜噜亚洲aⅴ| 欧美不卡视频| 99视频精品在线| 午夜精品久久久久久久99樱桃| 国产精品区免费视频| 欧美一区亚洲一区| 欧美 日韩 国产在线| 亚洲精品美女久久久久| 亚洲欧美卡通另类91av| 国产日韩在线看片| 亚洲人成在线观看网站高清| 欧美日韩成人综合天天影院| 亚洲专区免费| 快播亚洲色图| 99精品视频免费| 久久久99久久精品女同性| 亚洲丶国产丶欧美一区二区三区| 99国产精品久久久久久久| 欧美色中文字幕| 亚洲欧美久久久久一区二区三区| 欧美一级网站| 亚洲高清网站| 亚洲欧洲av一区二区三区久久| 国产在线视频欧美一区二区三区| 亚洲欧洲精品一区二区三区不卡 | 亚洲女女女同性video| 国产主播一区二区三区四区| 亚洲日产国产精品| 国产精品乱码久久久久久| 久久精品视频在线播放| 欧美日韩网站| 久久av一区二区| 欧美日韩精品一区二区三区| 午夜久久电影网| 欧美好骚综合网| 午夜精品久久久久久久| 欧美精品二区| 亚洲欧美在线免费观看| 欧美成人激情在线| 亚洲欧美不卡| 欧美日韩高清免费| 久久不射网站| 国产精品久久久久7777婷婷| 亚洲国产成人porn| 国产精品毛片a∨一区二区三区| 亚洲国内欧美| 国产噜噜噜噜噜久久久久久久久 | 一本一本久久a久久精品综合麻豆| 国产欧美在线视频| 一区二区三区欧美视频| 狠狠色丁香婷综合久久| 亚洲欧美日产图| 亚洲日产国产精品| 久久中文字幕一区| 亚洲午夜精品视频| 欧美精彩视频一区二区三区| 欧美在线一二三四区| 国产精品99一区二区| 亚洲国产欧美在线人成|