劉秋菊, 張光照, 王仲英
(1.鄭州工程技術(shù)學(xué)院 信息工程學(xué)院,鄭州 450000; 2.河南經(jīng)貿(mào)職業(yè)學(xué)院 技術(shù)科學(xué)系,鄭州 450018)
基于MIPS指令集的流水線CPU設(shè)計(jì)與實(shí)現(xiàn)
劉秋菊1, 張光照2, 王仲英2
(1.鄭州工程技術(shù)學(xué)院 信息工程學(xué)院,鄭州 450000; 2.河南經(jīng)貿(mào)職業(yè)學(xué)院 技術(shù)科學(xué)系,鄭州 450018)
提出了一種CPU設(shè)計(jì)方案,實(shí)現(xiàn)指令集為MIPS指令集中選取15條指令作為本CPU的基本指令,采用基本5步流水線CPU設(shè)計(jì)。分析了流水線CPU的邏輯結(jié)構(gòu)與指令的處理過程,給出了取指階段IF、譯碼階段ID、執(zhí)行階段EX、內(nèi)存訪問階段MEM、寄存器寫回階段WB階段的設(shè)計(jì)與實(shí)現(xiàn)。對(duì)流水線產(chǎn)生的相關(guān)性問題,采用Bubble法和Forwarding法相結(jié)合的方法來消除相關(guān)性,在FPGA平臺(tái)上進(jìn)行了測(cè)試,測(cè)試結(jié)果表明,該方案符合設(shè)計(jì)要求。
流水線; 中央處理器; 設(shè)計(jì); 指令集
在工業(yè)設(shè)計(jì)和機(jī)器人研究中,微處理器作為控制部件的核心是設(shè)計(jì)的關(guān)鍵,其性能直接影響整個(gè)系統(tǒng)的性能。CPU作為微處理器的核心其設(shè)計(jì)得到很多學(xué)者的研究,劉明達(dá)在研究中很粗略的介紹了CPU各模塊的設(shè)計(jì),何克東在研究教學(xué)實(shí)驗(yàn)平臺(tái)中提到了如何設(shè)計(jì)高性能CPU,提到五級(jí)流水線CPU設(shè)計(jì),介紹了CPU設(shè)計(jì)有單周期和流水線兩種設(shè)計(jì)CPU方式[1-5]?,F(xiàn)代微處理器廣泛采用流水線CPU設(shè)計(jì),本文詳細(xì)介紹了流水線CPU設(shè)計(jì)的5個(gè)階段以及對(duì)遇到的Hazard數(shù)據(jù)相關(guān)問題提出了解決方法。
1.1 實(shí)現(xiàn)的指令
本次設(shè)計(jì)從MIPS指令集中選取15條指令作為本CPU的基本指令,其他指令在譯碼階段均解釋為未定義指令[6-8],指令格式如圖1所示。
圖1 CPU基本指令格式
1.2 五步流水線組成
流水線5個(gè)階段分別是指取指階段IF、譯碼階段ID、執(zhí)行階段EX、內(nèi)存訪問階段MEM、寄存器寫回階段WB(見圖2)。
圖2 五步流水線組成
1.3 流水線CPU邏輯原理圖
基本5步流水線CPU的邏輯原理圖如圖3所示??偟膩碚f由5個(gè)Stage Register和5個(gè)Stage部分組成:在各階段執(zhí)行完成后所產(chǎn)生的結(jié)果將鎖存在Stage Register中以供下一階段使用;CPU控制信號(hào)在譯碼階段由控制單元產(chǎn)生,也將后面階段才發(fā)生作用的控制信號(hào)鎖存在Stage Register中。執(zhí)行結(jié)果和控制信號(hào)就是這樣在Stage Register中一級(jí)一級(jí)傳遞,以滿足各個(gè)階段的執(zhí)行與控制需求。因此,Stage Register在流水線結(jié)構(gòu)中起著非常重要的作用,它必須是邊沿觸發(fā)的,以保證本條指令的中間數(shù)據(jù)不會(huì)被后續(xù)指令干擾。
圖3 基本5步流水線CPU的邏輯原理圖
這樣由5個(gè)Stage部分和5個(gè)Stage Register的流水線結(jié)構(gòu)設(shè)計(jì)非常清晰,各個(gè)階段執(zhí)行自己的任務(wù),由Stage Register作為數(shù)據(jù)通路,使得具體實(shí)現(xiàn)過程中可以對(duì)各個(gè)階段單獨(dú)進(jìn)行測(cè)試,最后再將各階段串聯(lián)起來進(jìn)行集成測(cè)試,功能調(diào)試與測(cè)試將變得簡單。
1.4 流水線CPU實(shí)現(xiàn)原理圖
基本5步流水線CPU的實(shí)現(xiàn)原理圖如圖4所示。實(shí)現(xiàn)原理圖保持了邏輯原理圖中5個(gè)Stage Register和5個(gè)Stage的清晰的設(shè)計(jì)結(jié)構(gòu):前綴為REG的部件是Stage Register;前綴為STAGE的部件為Stage。整體數(shù)據(jù)流向?yàn)閺纳贤?、自左往右,結(jié)構(gòu)比較清晰,且各個(gè)部件均經(jīng)過單獨(dú)測(cè)試成功后才集成在一起。本實(shí)現(xiàn)原理圖為基本5步流水線結(jié)構(gòu),還不包括Cache和精確中斷響應(yīng)部分。增加Cache和精確中斷響應(yīng)部分需要對(duì)總體流水線結(jié)構(gòu)做適當(dāng)擴(kuò)充,具體擴(kuò)充后的原理圖以及實(shí)現(xiàn)在今后繼續(xù)研究。
圖4 基本5步流水線CPU實(shí)現(xiàn)原理圖
2.1 IF階段實(shí)現(xiàn)
IF階段要完成的任務(wù)是:從指令存儲(chǔ)器中取出指令、將當(dāng)前PC值加4、選擇出PC的下一個(gè)值。實(shí)現(xiàn)原理圖如圖5所示,IF階段需要判斷下一個(gè)PC值是PC+4還是跳轉(zhuǎn)的目的地址,判斷的依據(jù)是ID階段所給的BRANCH控制信號(hào),因此輸入腳必須包括BRANCH控制線和跳轉(zhuǎn)目標(biāo)地址數(shù)據(jù)線PCTAR。
2.2 ID階段實(shí)現(xiàn)
ID階段需要完成的任務(wù)比較重:指令譯碼、根據(jù)指令類型產(chǎn)生控制信號(hào)、從寄存器文件中選擇需要的寄存器、判斷是否是絕對(duì)跳轉(zhuǎn)或分支指令,如果是還要計(jì)算出它們的跳轉(zhuǎn)目標(biāo)地址、檢測(cè)是否存在可能的Data Hazard,并選擇是否使用Bubble法和Forwarding法消除Hazard[9-12]。實(shí)現(xiàn)原理圖如圖6所示,其中需要特別說明的是寄存器文件只實(shí)現(xiàn)了8個(gè),而不是MIPS指令集的32個(gè)。最重要的部分是控制單元,它是用Verilog語言實(shí)現(xiàn)的,任務(wù)是解釋指令、產(chǎn)生控制信號(hào)、檢測(cè)與消除Data Hazard。
圖5 IF實(shí)現(xiàn)原理圖
控制單元的輸出腳都是控制信號(hào),而輸入腳中有6個(gè)是為了Data Hazard的檢測(cè)與消除。在檢測(cè)Data Hazard時(shí),首先測(cè)試 EWREG和EM2REG輸入腳:如果EWREG為1,那么本條指令的前一條指令是回寫寄存器指令;如果EM2REG為1,那么前一條指令是Load指令。再用本條指令的RS和RT字段(即本條指令可能引用的寄存器地址)與EDESR比較就可以知道是否存在Data Hazard數(shù)據(jù)相關(guān)性。同樣通過測(cè)試MWREG、MM2REG及MDESR即可知道本條指令與前前條指令是否存在Data Hazard。
圖6 ID實(shí)現(xiàn)原理圖
如果存在Hazard,則根據(jù)不同情況發(fā)出不同的信號(hào)控制Hazard的消除。NOSTALL輸出信號(hào)用于Bubble技術(shù)的控制,而FWDA、FWDB及 FWDC輸出信號(hào)用于FORWARDING技術(shù)的控制。
2.3 EX階段實(shí)現(xiàn)
EX階段執(zhí)行運(yùn)算任務(wù),本CPU可以執(zhí)行加減、邏輯及移位三類運(yùn)算。EX階段最主要的任務(wù)是進(jìn)行運(yùn)算,運(yùn)算單元ALU實(shí)現(xiàn)原理圖如圖7所示。
2.4 MEM階段實(shí)現(xiàn)
MEM階段執(zhí)行訪問數(shù)據(jù)存儲(chǔ)器任務(wù),本次設(shè)計(jì)中將指令與數(shù)據(jù)存儲(chǔ)器分開,且存儲(chǔ)容量都是32個(gè)字。實(shí)現(xiàn)原理圖如圖8所示。
圖7 ALU實(shí)現(xiàn)原理圖
圖8 MEM階段實(shí)現(xiàn)原理圖
2.5 WB階段實(shí)現(xiàn)
WB階段執(zhí)行將指令執(zhí)行結(jié)果寫回寄存器的任務(wù),而執(zhí)行結(jié)果有兩種可能:一種是ALU運(yùn)算結(jié)果;另一種是MEM取數(shù)據(jù)結(jié)果。實(shí)現(xiàn)原理圖如圖9所示,根據(jù)WM2REG控制信號(hào)(即判斷指令是否為Load指令)來選擇最終的回寫數(shù)據(jù)。實(shí)際上從這可以看出本設(shè)計(jì)中所用的都是開關(guān)式控制方式,它的特點(diǎn)是不管指令屬于何種類型,按其所有可能的形式執(zhí)行操作,讓所有的部件都運(yùn)轉(zhuǎn)起來,最后可能產(chǎn)生多種結(jié)果數(shù)據(jù),再由控制信號(hào)來控制開關(guān)以選擇所需的結(jié)果。
圖9 WB階段實(shí)現(xiàn)原理圖
功能模擬測(cè)試需要設(shè)計(jì)典型的代碼序列來測(cè)試流水線的運(yùn)行狀況及Hazard問題的解決[13-16]。圖10所示為測(cè)試代碼與測(cè)試波形圖。
測(cè)試結(jié)果表明,該設(shè)計(jì)是成功的,同時(shí)該設(shè)計(jì)的應(yīng)用成果在電子設(shè)計(jì)大賽中也取得了很好的成績。
圖10 測(cè)試代碼與測(cè)試波形圖
提出了一種流水線CPU的設(shè)計(jì)方法。介紹了5步流水線CPU設(shè)計(jì)的步驟,并針對(duì)邏輯圖介紹了每個(gè)階段的詳細(xì)實(shí)現(xiàn),CPU設(shè)計(jì)中還要考慮數(shù)據(jù)相關(guān)性問題,本次設(shè)計(jì)中在ID階段通過不同的控制信號(hào)來解決不同的數(shù)據(jù)相關(guān)性問題,最后進(jìn)行了功能測(cè)試,測(cè)試結(jié)果符合設(shè)計(jì)要求。CPU設(shè)計(jì)中會(huì)遇到很多問題,例如緩沖、中斷等,這也是下一步要繼續(xù)研究的問題。
[1] 朱子玉,李亞民.CPU芯片邏輯設(shè)計(jì)技術(shù)[M]. 北京:清華大學(xué)出版社,2005.31-110.
[2] John L.Computer architecture: A quantitative approach, fourth edition[M].3rd ed. Boston: AP ProtwaaionL, 2006. 2009:88-172.
[3] 劉明達(dá).基于VerilogHDL的簡單CPU設(shè)計(jì)[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2013,16(13):302-304.[4] 何克東,王恒才.高性能CPU設(shè)計(jì)實(shí)驗(yàn)平臺(tái)及其應(yīng)用[J].實(shí)驗(yàn)室研究與探索,2007(12): 212-214.
[5] 陳國強(qiáng).基于AD9954的信號(hào)發(fā)生器設(shè)計(jì)[J].實(shí)驗(yàn)室研究與探索,2010,29(8):222-225.
[6] 劉 明,蔡啟先,余祖峰.改進(jìn)MIPS指令集模擬方法的研究[J].廣西工學(xué)院學(xué)報(bào),2009(12): 54-57.
[7] 薛 勃,周玉潔.MIPS32指令集兼容的CPU模擬器設(shè)計(jì)[J].計(jì)算機(jī)工程,2009,35(1):263-265.
[8] 袁 婷,劉怡?。灾髟O(shè)計(jì)精簡指令集的流水線CPU[J].微電子學(xué)與計(jì)算機(jī),2015,32(2):124-128.
[9] 李山山,劉敬晗.利用Tomasulo算法處理數(shù)據(jù)相關(guān)的流水線CPU設(shè)計(jì)[J].實(shí)驗(yàn)室研究與探索,2014,33(12):90-95.
[10] 劉秋菊,李 飛,劉書倫.一種流水線CPU設(shè)計(jì)中的Hazard消除法[J].微電子學(xué)與計(jì)算機(jī),2012,29(8):33-36.
[11] 王艷秋.基于FPGA的CPU設(shè)計(jì)與實(shí)現(xiàn)[D].天津:河北工業(yè)大學(xué),2008.
[12] 賴兆磬,潘 明,張 輝.基于FPGA流水線CPU控制器的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2008(20):233-235.
[13] 曹學(xué)飛,張盛兵,張 駿.32位CISC微處理器流水線的設(shè)計(jì)[J].微電子學(xué)與計(jì)算機(jī),2007,24(4):186-189.
[14] 劉秋菊,李 飛,劉書倫.帶Cache和精確中斷響應(yīng)的CPU設(shè)計(jì)[J].實(shí)驗(yàn)室研究與探索,2012,31(3):68-74.
[15] 曹學(xué)飛,張盛兵.“LongtiumC2”微處理器流水線設(shè)計(jì)[J].微處理機(jī),2010(1):9-12.
[16] 東野長磊,戚 梅.一種帶Cache的嵌入式CPU的設(shè)計(jì)與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2010,29(14):17-19.
Design and Implementation of Pipeline CPU Based on MIPS Instruction Set
LIU Qiuju1, ZHANG Guangzhao2, WANG Zhongying2
(1. School of Information Engineering, Zhengzhou Institute of Technology, Zhengzhou 450000, China; 2. Department of Technical, Henan Institute of Economics and Trade, Zhengzhou 450018, China)
In this paper, a design method of CPU was proposed, the instruction set of the CPU contained 15 items of MIPS instruction set, and the basic method of five step pipeline CPU design was used. Analyses were conducted on the logic structure of the pipeline CPU and the processing of the instruction. This paper also gave design and realization of stage IF, stage ID, stage EX, stage MEM and stage WB. About the pipeline-related problems, the paper adopted Bubble and Forwarding technologies to eliminate it. The tests on the FPGA platform show that the scheme meets the design requirements.
pipelines; CPU; design; instruction set
2016-11-20
河南省科技攻關(guān)項(xiàng)目(172102210606);河南省高等學(xué)校重點(diǎn)科研項(xiàng)目(17B520040)
劉秋菊(1970-),女,河南孟州人,教授,現(xiàn)主要從事計(jì)算機(jī)應(yīng)用教學(xué)研究。Tel.:15737152760;E-mail:mzlqj@126.com
TP 332
A
1006-7167(2017)08-0148-05