《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 指令擴展接口的數據沖突消除
指令擴展接口的數據沖突消除
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亚洲国产精品_日韩亚洲一区二区
亚洲电影免费观看高清完整版在线| 亚洲理论在线| 亚洲福利视频网站| 国产一区二区三区在线免费观看| 国产精品看片资源| 欧美午夜欧美| 欧美三日本三级少妇三2023 | 久久综合网络一区二区| 久久精品国产成人| 久久精品国产99国产精品| 午夜伦理片一区| 午夜精品999| 新片速递亚洲合集欧美合集| 亚洲自拍偷拍色片视频| 亚洲综合色婷婷| 午夜精品久久久久久久久久久久| 午夜精品久久久久久久男人的天堂| 亚洲欧美韩国| 午夜影院日韩| 久久av红桃一区二区小说| 欧美一级视频精品观看| 午夜一区不卡| 久久久精品日韩欧美| 久久久爽爽爽美女图片| 毛片一区二区三区| 欧美成人有码| 欧美日韩的一区二区| 欧美色综合天天久久综合精品| 欧美系列一区| 国产欧美在线看| 今天的高清视频免费播放成人| 影视先锋久久| 亚洲肉体裸体xxxx137| 一本色道久久综合亚洲二区三区| 亚洲狼人精品一区二区三区| 一区二区动漫| 午夜精品偷拍| 亚洲精品激情| 亚洲自拍16p| 久久国产精品亚洲77777| 久久亚洲春色中文字幕| 欧美ed2k| 欧美三级网址| 国模精品一区二区三区| 亚洲大片精品永久免费| 亚洲国产一区二区精品专区| av成人动漫| 欧美一区日韩一区| 99re热这里只有精品视频| 亚洲欧美成人网| 久久麻豆一区二区| 欧美精品一区二区三区视频| 欧美视频一区二区三区在线观看| 国产欧美日韩伦理| 亚洲国产高清在线| 亚洲一区一卡| 亚洲韩国一区二区三区| 亚洲综合成人婷婷小说| 裸体女人亚洲精品一区| 欧美体内she精视频| 好吊一区二区三区| 一本色道久久综合狠狠躁篇怎么玩| 午夜精品网站| 亚洲最新色图| 久久精品亚洲国产奇米99| 欧美全黄视频| 国产欧美一区二区精品秋霞影院 | 影音欧美亚洲| 亚洲一区二区三| 亚洲精品美女免费| 性欧美1819性猛交| 欧美激情按摩在线| 国产综合色在线| 99视频精品在线| 亚洲国产美女| 欧美一区二区三区喷汁尤物| 欧美福利电影网| 国产视频在线观看一区| 亚洲免费精彩视频| 亚洲国产高清高潮精品美女| 亚洲女优在线| 欧美日韩国产亚洲一区| 在线观看精品一区| 午夜久久久久久| 亚洲一区精品在线| 欧美国产日本韩| 极品少妇一区二区| 香蕉成人伊视频在线观看| 亚洲一区视频在线| 欧美激情欧美激情在线五月| 国产字幕视频一区二区| 亚洲一区二区三区三| 在线一区二区三区四区| 欧美高清视频www夜色资源网| 国产日韩欧美在线一区| 亚洲天堂网在线观看| 日韩性生活视频| 免费不卡亚洲欧美| 激情视频一区| 欧美在线播放视频| 欧美在线视频观看| 国产精品免费视频xxxx| 亚洲开发第一视频在线播放| 最新日韩中文字幕| 久久综合五月天婷婷伊人| 国产视频一区二区在线观看 | 夜夜嗨av一区二区三区网站四季av | 国产麻豆综合| 亚洲伊人网站| 欧美精品福利| 欧美一区二区三区婷婷月色| 亚洲人成7777| 老色鬼精品视频在线观看播放| 国产亚洲欧美一区二区三区| 亚洲自拍啪啪| 欧美亚洲免费电影| 国产精品亚洲精品| 亚洲香蕉成视频在线观看| 亚洲天堂成人在线观看| 欧美视频精品在线观看| 日韩一区二区久久| 亚洲淫性视频| 国产精品视频一| 亚洲欧美日韩专区| 久久精品夜色噜噜亚洲aⅴ| 国产日韩欧美精品| 欧美一区二区啪啪| 久久永久免费| 亚洲第一页在线| 亚洲老板91色精品久久| 欧美日韩精品在线| 夜夜嗨av一区二区三区四季av| 亚洲五月婷婷| 国产精品午夜av在线| 欧美一级视频| 久久一区视频| 91久久精品国产91性色tv| 一区二区三区四区五区精品视频 | 久久黄色网页| 黄色精品一二区| 亚洲激情在线| 欧美日韩123| 正在播放日韩| 久久精品中文| 在线欧美日韩| 夜夜爽99久久国产综合精品女不卡| 欧美日韩精品一区二区三区| 亚洲视频一二| 久久黄金**| 亚洲国产专区校园欧美| 亚洲一区二区日本| 国产欧美视频在线观看| 亚洲成色精品| 欧美精品色综合| 亚洲自拍偷拍麻豆| 老司机一区二区| 99视频精品全国免费| 欧美中文在线免费| 亚洲国产欧美在线| 亚洲欧美精品一区| 国语自产在线不卡| 国产精品99久久久久久www| 国产欧美大片| 亚洲日韩视频| 国产精品日本欧美一区二区三区| 久久爱www久久做| 欧美日韩成人一区二区三区| 亚洲欧美日韩国产综合| 免费观看日韩av| 亚洲视频精选在线| 久久夜色精品国产欧美乱| 99国产精品久久久久久久| 久久九九电影| 99国产精品99久久久久久| 久久久久久久一区二区三区| 亚洲精品偷拍| 久久理论片午夜琪琪电影网| 亚洲美女黄色| 久久综合电影一区| 亚洲五月婷婷| 欧美大成色www永久网站婷| 亚洲伊人观看| 欧美精品免费视频| 欧美专区在线| 国产精品黄视频| 日韩视频免费观看高清在线视频 | 久久九九电影| 一本久道久久久| 免费影视亚洲| 亚洲欧美日韩国产一区二区| 欧美精品一区二区蜜臀亚洲| 午夜精彩视频在线观看不卡 | 亚洲欧洲在线免费| 久久电影一区| 亚洲免费久久| 米奇777超碰欧美日韩亚洲| 亚洲一区二区三区影院| 欧美日本中文字幕| 亚洲国产成人av好男人在线观看| 国产精品久久久久9999高清|