• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于MIPS架構的多周期CPU設計

      2018-09-17 03:28:22成,榮
      軟件 2018年8期
      關鍵詞:譯碼流水線存儲器

      柳 成,榮 靜

      ?

      基于MIPS架構的多周期CPU設計

      柳 成,榮 靜

      (揚州大學廣陵學院,江蘇 揚州 225000)

      為了提高多周期CPU流水線的效率,在指令存儲器和數(shù)據(jù)存儲器的數(shù)據(jù)讀取中設計發(fā)送地址在上升沿、讀取數(shù)據(jù)在下降沿,從而實現(xiàn)譯碼和訪存在一個周期內完成。在取指級不再單獨設置加法器,把PC+4放在ALU中完成。通過大量的多路選擇器與數(shù)據(jù)交互總線來進行數(shù)據(jù)聯(lián)通。采用Verilog HDL語言設計出CPU,并在VIVADO平臺上實現(xiàn)仿真,最后通過龍芯公司的LS-CPU-EXB-002試驗箱來進行驗證,結果表明所設計的多周期CPU的有效性。

      流水線;Verilog HDL;多周期CPU;LS-CPU-EXB-002試驗箱

      0 引言

      MIPS架構是為流水線而生,每條MIPS指令的執(zhí)行分為五個部分,每一個部分為一個流水級。MIPS是最簡單且內核開源的微處理器之一,相對于其它架構微處理器,相同位數(shù)的MIPS架構的時鐘頻率較低,其運行速度也較慢。高效的CPU要求流水線的每一個階段都占用固定的時間,再通過縮短流水線各個階段的執(zhí)行時間來提高時鐘頻率,在此我們通過改進取地址和讀數(shù)據(jù)時鐘控制來實現(xiàn)。

      傳統(tǒng)的MIPS架構多周期CPU的設計中,在發(fā)送地址的下一拍才能獲得相應的數(shù)據(jù),從指令和數(shù)據(jù)存儲器中讀取數(shù)據(jù)就需要等待一個周期,這樣往往會造成資源浪費。為了消除這個閑置時間,將發(fā)送地址設計在時鐘的上升沿,讀取數(shù)據(jù)放在下降沿,最終實現(xiàn)32位MIPS架構多周期CPU。

      1 多周期流水線技術和MIPS指令系統(tǒng)

      1.1 流水線設計

      MIPS體系結構主要采用了流水線技術[1],它把一條指令的執(zhí)行分為幾個周期來完成。這樣每個周期處理器只做一件事,大大的減輕了處理器的任務,使處理器的頻率更快,處理器也更高效。通過改進文獻[2]中的五級流水線得到如圖1所示的多周期CPU流水線設計。

      1.2 MIPS指令系統(tǒng)

      32位MIPS架構的匯編指令長度為32位,都是三操作數(shù)指令,在此直接采用MIPS32指令系統(tǒng)中的20條指令[2,3]。分為五種類型,具體如表1所示。

      圖1 多周期CPU流水線示意圖

      表1 指令格式

      其中rs和rt是源操作數(shù)的寄存器號;rd是目的寄存器號,有時也可以做源寄存器號;immediate表示立即數(shù),offset是偏移量,address是地址,sa是移位量。

      2 MIPS架構的多周期CPU設計

      本文將分為取指、譯碼、執(zhí)行、訪存、寫回五個階段[4]來設計。

      2.1 取指令階段

      在此階段CPU主要完成兩個任務,一是PC+4,二是根據(jù)PC值從指令存儲器[5]中取出指令。當IF級運行時,執(zhí)行級處于閑置狀態(tài),設計 PC+4在ALU中完成,不再單獨設置加法器。通常CPU讀取地址后,需要等待一個周期,再讀取數(shù)據(jù)。但事實上,這一個周期里只有上升沿有效,下降沿是空閑,而對于多周期CPU來說又不存在數(shù)據(jù)相關問題,所以使讀取地址放在上升沿,獲取數(shù)據(jù)放在下降沿,這樣只需一拍時間就能完成取指。

      2.2 譯碼階段

      此階段主要完成的任務是把操作碼op、功能碼sa送入控制器中,得出控制信號,由控制信號來決定CPU接下來的任務[6]。主要控制信號有指令操作、存儲操作、執(zhí)行操作、寫回操作任務和PC值變化形式。

      為了使資源利用最大化,我們將跳轉指令的高位加載也放在ALU中進行,立即數(shù)的擴展設置專門的擴展電路來完成,由控制信號EXTOP來決定是零擴展還是符號擴展。

      2.3 執(zhí)行階段

      跳轉指令在譯碼階段已經完成了,其他四種類型指令將進入執(zhí)行階段,不同類型指令在執(zhí)行階段的情況也不同[7]。我們在執(zhí)行階段設置一個新的判決電路模塊[8],把在存儲器、寄存器堆中取出的數(shù)據(jù)和控制器發(fā)出的相關控制信號送進去經過判決生成兩個信號,作為ALU操作數(shù)端口前的數(shù)據(jù)選擇器的選擇信號。

      2.4 訪存階段

      在此階段讀取高速緩存中的數(shù)據(jù)變量。在MIPS架構中只有兩條指令用到它,lw(讀數(shù)據(jù))和sw(寫數(shù)據(jù)),在執(zhí)行級中已計算出存儲器的地址

      為了在執(zhí)行寫字節(jié)時,依據(jù)地址的低兩位,移動store的字節(jié)到對應的位置,我們在數(shù)據(jù)存儲器前后各設置一個四選一數(shù)據(jù)選擇器。在此階段設置時鐘上升沿從EX_MEM總線中取出數(shù)據(jù),向存儲器中發(fā)出地址,在時鐘下降沿中讀出數(shù)據(jù),然后鎖存在MEM_WB總線中。

      2.5 寫回階段

      此階段就是為了把ALU計算的數(shù)據(jù)或者是在存儲器中取出的數(shù)據(jù)寫回到寄存器堆中,其中寫回的目的寄存器號有rt和rd。

      2.6 狀態(tài)機和多周期的總體電路

      設計六個狀態(tài),分別是空閑、取指、譯碼、執(zhí)行、訪存和寫回。令IDLE表示為空閑狀態(tài)、FETCH表示為取指階段、DECODE表示為譯碼階段、EXE表示為執(zhí)行階段、MEM表示為訪存階段、WB表示為寫回階段。在譯碼階段要判斷跳轉指令有效值和譯碼完成有效值的“與”運算是否為1,為1則跳回取值級,否則進入下一階段。多周期CPU狀態(tài)機[9]示意圖如圖2所示,整個多周期CPU的結構設計如圖3所示。

      圖2 多周期CPU狀態(tài)機示意圖

      圖3 多周期CPU結構圖

      3 仿真與驗證

      (1)仿真圖

      我們采用Verilog HDL語言來實現(xiàn)整個CPU功能[10],在VIVADO上編譯仿真。圖4是多周期CPU對預設指令執(zhí)行的部分仿真[11]圖,其中紅色的高阻狀態(tài)總線表示的是寄存器堆取數(shù)據(jù),此時CPU在執(zhí)行指令的過程中從交互總線鎖存器中取數(shù)據(jù),所以寄存器堆處于高阻,在寫回階段完成后,數(shù)據(jù)將會寫回到寄存器堆中。

      (2)實驗箱驗證

      LS-CPU-EXB-002實驗箱[12,13]采用了簡單化的輸入輸出控制接口,它的觸摸屏實現(xiàn)的是硬件驅動,可以隨時進行輸入輸出,通過該實驗箱來驗證所設計的多周期CPU的有效性。如圖5所示,其中IF_PC表示IF模塊PC值,ID_PC、EXEPC、MEMPC、WB_PC表示當前模塊的PC值,IF_IN表示從IF級中取出的指令,MADDR表示存儲器地址,MDATA表示從存儲器中讀出的數(shù)據(jù),REG表示32位寄存器測試標識符,隨著PC值的變化,不斷的有結果寫入。在試驗箱上通過撥碼可以控制PC值的變化,從指令存儲器中取出指令并進行數(shù)據(jù)裝載,實驗表明,此CPU可以高效地完成測試的指令,并能把計算的結果寫入寄存器堆中。

      圖4 仿真圖

      圖5 CPU驗證圖

      4 結論

      經過對取指級的改進,使PC+4在ALU中實現(xiàn),這樣最大化地利用CPU中EXE模塊資源。同時通過對時鐘上下沿控制,將指令存儲器與數(shù)據(jù)存儲器發(fā)送地址與讀取地址在一個周期內完成,那么譯碼級與訪存級就只需一個周期,這樣能大大提高CPU的時鐘頻率。特別是在執(zhí)行級中我們設計了一個判決電路,加快數(shù)據(jù)的交互與傳輸。最后通過軟件仿真和硬件仿真驗證,來證實所設計的CPU的正確性,由硬件仿真可以看到所設計的CPU具有實用性。

      [1] 劉秋菊, 張光照, 王仲英. 基于MIPS指令集的流水線CPU設計與實現(xiàn)[J]. 實驗室研究與探索, 2017, 36(8): 148-152.

      [2] D.Sweetman. 看MIPS跑linux——MIPS體系結構剖析(中文版)[M]. 北京: 機械工業(yè)出版社, 2008.

      [3] M View. MIPS32 Architecture for programmers volume II: the MIPS32 Introduction set[S]. MIPS Technologies Inc, 2005: 10-300.

      [4] M View. MIPS32 Architecture for programmers volume I: Introduction to the MIPS32 Architecture[S]. MIPS Technologies Inc, 2005: 7-65.

      [5] 閻石. 數(shù)字電子技術基礎[M]. 北京: 高等教育出版社, 2005.

      [6] 秘海曉. 基于FPGA的32位五級流水線CPU的研究與設計[D]. 河北: 河北工業(yè)大學, 2012.

      [7] 李亞民. 計算機原理與設計[M]. 北京: 清華大學出版社, 2011.

      [8] 張震. 基于FPGA的通用型FIR數(shù)字濾波器的研究與設計[J]. 軟件, 2015, 36(6): 125-128.

      [9] 馮建文. 基于有限狀態(tài)機的多周期CPU實驗設計[J]. 實驗技術與管理, 2017, 34(7): 127-131.

      [10] 焦華. 基礎編程的思考方法[J]. 軟件, 2018, 39(3): 57-62.

      [11] 張玲, 晏伯武. 時序仿真和驅動編寫在數(shù)字電路實踐教學中的應用研究[J]. 軟件, 2016, 37(3): 107-109.

      [12] 夏宇聞. Verilog數(shù)字系統(tǒng)設計教程[M]. 北京: 北京航空航天大學出版社, 2003.

      [13] 龍芯中科技術有限公司.LS-CPU-EXB-002CPU設計與體系結構實驗指導手冊[Z]. 2016.

      Design of Multi-cycle CPU Based on MIPS Architecture

      LIU Cheng, RONG Jing

      (Guangling College of Yangzhou University, Yangzhou 225000)

      In order to improve the efficiency of the multi-cycle CPU pipeline, the designation of the sending address is on the rising edge and the reading data is on the falling edge in the data reading of the instruction memory and the data memory, so that the decoding and the access are completed in one cycle. The adder is no longer set separately at the fetch level, and PC+4 is placed in the ALU. Data communication is performed through a large number of multiplexers and data exchange buses. The CPU was designed using Verilog HDL language, and the simulation was implemented on the VIVADO platform. Finally, the verification was performed by the company's LS-CPU-EXB-002 test box. The results showed the effectiveness of the designed multi-cycle CPU.

      Pipeline; Verilog HDL; Multi-cycle CPU; LS-CPU-EXB-002 test box

      TP332

      A

      10.3969/j.issn.1003-6970.2018.08.009

      揚州大學廣陵學院資助項目(JGYB17012)

      柳成(1994-),本科生,研究方向為計算機體系結構;榮靜(1990-),研究生,揚州大學廣陵學院助教,研究方向為信息安全。

      本文著錄格式:柳成,榮靜. 基于MIPS架構的多周期CPU設計[J]. 軟件,2018,39(8):40-44

      猜你喜歡
      譯碼流水線存儲器
      Gen Z Migrant Workers Are Leaving the Assembly Line
      靜態(tài)隨機存儲器在軌自檢算法
      基于校正搜索寬度的極化碼譯碼算法研究
      流水線
      從霍爾的編碼譯碼理論看彈幕的譯碼
      新聞傳播(2016年3期)2016-07-12 12:55:27
      報廢汽車拆解半自動流水線研究
      LDPC 碼改進高速譯碼算法
      遙測遙控(2015年2期)2015-04-23 08:15:19
      存儲器——安格爾(墨西哥)▲
      SIMATIC IPC3000 SMART在汽車流水線領域的應用
      自動化博覽(2014年6期)2014-02-28 22:32:05
      基于概率裁剪的球形譯碼算法
      新昌县| 浪卡子县| 广宁县| 高要市| 荆州市| 松桃| 长岭县| 和林格尔县| 永胜县| 准格尔旗| 焦作市| 宜兰县| 栾川县| 沙田区| 海盐县| 海丰县| 景泰县| 江源县| 龙州县| 宜川县| 巨鹿县| 阿拉善左旗| 武夷山市| 海口市| 荔波县| 德江县| 太保市| 玉溪市| 集安市| 扬州市| 宁城县| 惠水县| 永昌县| 抚顺市| 奇台县| 独山县| 温泉县| 乌鲁木齐县| 渭南市| 孟连| 儋州市|