32位RISC微處理器設(shè)計研究
發(fā)布時間:2020-07-16 09:46
【摘要】:隨著VLSI工藝水平的提高,如今能夠把整個電子系統(tǒng)集成到一塊或幾塊芯片上(SoC)。SoC的出現(xiàn)能夠在改善系統(tǒng)性能的同時減小系統(tǒng)的功耗、尺寸和成本。SoC設(shè)計成敗的關(guān)鍵在于其中的RISC微處理器的設(shè)計。同時隨著半導(dǎo)體工藝技術(shù)的提高、體系結(jié)構(gòu)技術(shù)的不斷發(fā)展以及應(yīng)用需求的不斷提高,對高性能嵌入式微處理器產(chǎn)品的需求量也越來越大。 本文在介紹了各種商業(yè)主流RISC微處理器的技術(shù)特點后討論了一種32位高性能RISC微處理器的設(shè)計方法,重點在于其邏輯設(shè)計,包括:指令集結(jié)構(gòu)設(shè)計、RISC CPU設(shè)計、層次化存儲器系統(tǒng)設(shè)計和其它功能單元設(shè)計。隨后我們對RISC微處理器進(jìn)行了功能驗證,它包括兩個方面:系統(tǒng)級仿真與FPGA硬件驗證。實驗表明,我們所設(shè)計的電路達(dá)到了預(yù)期的目標(biāo),并且在速度、面積等指標(biāo)上有著較好的性能。 本文提出了一種對集中式控制器單元進(jìn)行劃分的方法并根據(jù)該方法確定了RISC CPU的體系結(jié)構(gòu)。這種結(jié)構(gòu)不僅利于進(jìn)行調(diào)試和擴(kuò)展而且流水線的暫停信息不會在多個流水段內(nèi)進(jìn)行傳遞,因此對流水線的速度不會附加額外的負(fù)面影響。 本文提出了一種完全去掉由RAW冒險在流水線中所引起的“氣泡”的方法。 本文提出了一種顯著縮短程序的執(zhí)行時間的方法。當(dāng)轉(zhuǎn)移指令處于指令譯碼段時就能夠判斷轉(zhuǎn)移發(fā)生與否和確定下一條要取的指令的地址,這使得在轉(zhuǎn)移指令之后只需插入一條空指令。這種方法顯著地縮短了程序的執(zhí)行時間。 本文提出了流水線暫停的兩條原則并根據(jù)這兩條原則產(chǎn)生了流水線中各個流水段的暫停信號。仿真波形表明,這些信號能夠使流水線正確地暫停與恢復(fù)。 本文采用了不同的方式產(chǎn)生從指令MMU送往指令Cache和從數(shù)據(jù)MMU送往數(shù)據(jù)Cache的是否可緩存標(biāo)志信號。在任何情況下指令存儲器所對應(yīng)的地址空間都是可緩存的。這在功能上是正確的,同時減少了指令存儲器的訪問次數(shù)和去掉了一個異步環(huán)路。這改善了整個系統(tǒng)的時序。 本文研究了RISC微處理器的低功耗設(shè)計技術(shù)并給出了一種支持動態(tài)和靜態(tài)功耗管理的功耗管理單元的設(shè)計方法。 本文研究了RISC微處理器對WISHBONE SoC接口的支持并給出了一種采用 WP=5 WISHBONE協(xié)議的總線接口單元的設(shè)計方法。 本文介紹了在進(jìn)行系統(tǒng)級仿真時所采用的兩種配置管理方法。通過這兩種仿真管理方法,對于一種特定的仿真,仿真環(huán)境的使用者能夠以最快的速度決定在該仿真中要使用哪些模型從而提高了仿真效率。 最后,給出了設(shè)計的FPGA硬件驗證方案。比較了系統(tǒng)級軟件仿真與FPGA硬件驗證兩種方式所能得到的吞吐率并論證了FPGA硬件驗證的必要性。 總的來說,該微處理器在應(yīng)用方面具有很好的性能,并且實現(xiàn)簡單,規(guī)?蓴U(kuò)展性好,具有開放的SoC接口。
【學(xué)位授予單位】:華中科技大學(xué)
【學(xué)位級別】:博士
【學(xué)位授予年份】:2004
【分類號】:TP332
【圖文】:
圖 2.9 異常處理例程的入口地址Except_prefix 是異常處理例程入口地址的前綴,可由 CPU SPR 編程設(shè)置:當(dāng)指令存儲器足夠大時,就設(shè)為 1;當(dāng)指令存儲器不是特別大時,就設(shè)為 0。Except_type 表示異常類型,同時也是各種異常對應(yīng)的異常處理程序的偏移矢量。異常處理例程的入口地址不通過指令 TLB 映射,也不通過指令 cache 訪問,即允許異常處理程序直接訪問程序存儲器。⑷ spr_pc_we 為 1,此時從 CPU SPR 來的輸入數(shù)據(jù) spr_dat_i[31:0]寫入到 pc[31:0]中,同時由于沒有發(fā)生轉(zhuǎn)移,所以轉(zhuǎn)移發(fā)生標(biāo)志應(yīng)被設(shè)置為 0。當(dāng)虛擬指令地址生成后,指令 MMU 中的 TLB 將根據(jù)虛擬指令地址生成物理地址。如果指令 Cache 的標(biāo)記與物理地址的高位相同,則從指令 Cache 中將指令取到取指令單元同時指令 Cache 根據(jù)虛擬指令地址的低位選擇相應(yīng)指令,否則需要從指令存儲器中取指令。地址產(chǎn)生單元電路結(jié)構(gòu)如圖 2.10 所示。
圖 2.11 取指令單元電路結(jié)構(gòu)圖2.6 控制單元控制單元也是本 RISC 的指令譯碼單元,它的主要功能是對取來的指令進(jìn)行譯碼、區(qū)分指令是單周期指令還是多周期指令并產(chǎn)生相應(yīng)的控制信號?刂茊卧母鱾控制信號產(chǎn)生很復(fù)雜,必須保證所有的控制信號能夠保證系統(tǒng)按設(shè)想好的順序及過程協(xié)調(diào)工作。2.6.1 形成指令流水線地址產(chǎn)生單元產(chǎn)生從指令存儲子系統(tǒng)取來指令的虛擬地址并使用該地址訪問指令存儲器。從指令存儲器中取出來的指令在取指令流水段結(jié)束時被打入取指令流水線寄存器if_insn[31:0]。該寄存器的內(nèi)容被送到控制單元并相繼被打入指令譯碼流水寄存器、指令執(zhí)行流水寄存器和回寫流水寄存器以形成五段指令流水線。指令譯碼流水寄存器 id_insn[31:0]的值確定方式如下:
圖 2.12 指令流水線仿真波形如圖 2.12 所示,在指令周期的第一個時鐘周期產(chǎn)生指令地址(此時 icpu_adr_o[31:0]為 32’h400_06d0),該地址被送到指令存儲子系統(tǒng)。在第二個時鐘周期,指令(此時icpu_dat_i[31:0]為 32’he064_2805)從指令存儲子系統(tǒng)中被讀來并被保存到取指令流水寄存器(if_insn[31:0])。在第三和第四個周期,該指令將分別被譯碼和執(zhí)行。在最后一個時鐘周期,指令執(zhí)行結(jié)果被回寫到相應(yīng)的目標(biāo)寄存器,同時指令周期結(jié)束。2.6.2 指令譯碼首先將從取指令單元來的指令鎖存起來形成 id_insn[31:0],隨后根據(jù)其第 32 位到第27 位(共 6 位)的值,控制單元通過譯碼得到指令是執(zhí)行什么操作。對于 ALU 類指令、Load/Store 類指令和分支類指令,譯碼結(jié)果應(yīng)為該類指令的哪一種具體操作。如果是 ALU類指令中的比較操作或乘累加操作,譯碼結(jié)果還應(yīng)具體到到底是哪一種比較操作或乘累加操作。同時,在指令譯碼段結(jié)束之前指令譯碼單元將處于譯碼段的指令的所有源操作
本文編號:2757846
【學(xué)位授予單位】:華中科技大學(xué)
【學(xué)位級別】:博士
【學(xué)位授予年份】:2004
【分類號】:TP332
【圖文】:
圖 2.9 異常處理例程的入口地址Except_prefix 是異常處理例程入口地址的前綴,可由 CPU SPR 編程設(shè)置:當(dāng)指令存儲器足夠大時,就設(shè)為 1;當(dāng)指令存儲器不是特別大時,就設(shè)為 0。Except_type 表示異常類型,同時也是各種異常對應(yīng)的異常處理程序的偏移矢量。異常處理例程的入口地址不通過指令 TLB 映射,也不通過指令 cache 訪問,即允許異常處理程序直接訪問程序存儲器。⑷ spr_pc_we 為 1,此時從 CPU SPR 來的輸入數(shù)據(jù) spr_dat_i[31:0]寫入到 pc[31:0]中,同時由于沒有發(fā)生轉(zhuǎn)移,所以轉(zhuǎn)移發(fā)生標(biāo)志應(yīng)被設(shè)置為 0。當(dāng)虛擬指令地址生成后,指令 MMU 中的 TLB 將根據(jù)虛擬指令地址生成物理地址。如果指令 Cache 的標(biāo)記與物理地址的高位相同,則從指令 Cache 中將指令取到取指令單元同時指令 Cache 根據(jù)虛擬指令地址的低位選擇相應(yīng)指令,否則需要從指令存儲器中取指令。地址產(chǎn)生單元電路結(jié)構(gòu)如圖 2.10 所示。
圖 2.11 取指令單元電路結(jié)構(gòu)圖2.6 控制單元控制單元也是本 RISC 的指令譯碼單元,它的主要功能是對取來的指令進(jìn)行譯碼、區(qū)分指令是單周期指令還是多周期指令并產(chǎn)生相應(yīng)的控制信號?刂茊卧母鱾控制信號產(chǎn)生很復(fù)雜,必須保證所有的控制信號能夠保證系統(tǒng)按設(shè)想好的順序及過程協(xié)調(diào)工作。2.6.1 形成指令流水線地址產(chǎn)生單元產(chǎn)生從指令存儲子系統(tǒng)取來指令的虛擬地址并使用該地址訪問指令存儲器。從指令存儲器中取出來的指令在取指令流水段結(jié)束時被打入取指令流水線寄存器if_insn[31:0]。該寄存器的內(nèi)容被送到控制單元并相繼被打入指令譯碼流水寄存器、指令執(zhí)行流水寄存器和回寫流水寄存器以形成五段指令流水線。指令譯碼流水寄存器 id_insn[31:0]的值確定方式如下:
圖 2.12 指令流水線仿真波形如圖 2.12 所示,在指令周期的第一個時鐘周期產(chǎn)生指令地址(此時 icpu_adr_o[31:0]為 32’h400_06d0),該地址被送到指令存儲子系統(tǒng)。在第二個時鐘周期,指令(此時icpu_dat_i[31:0]為 32’he064_2805)從指令存儲子系統(tǒng)中被讀來并被保存到取指令流水寄存器(if_insn[31:0])。在第三和第四個周期,該指令將分別被譯碼和執(zhí)行。在最后一個時鐘周期,指令執(zhí)行結(jié)果被回寫到相應(yīng)的目標(biāo)寄存器,同時指令周期結(jié)束。2.6.2 指令譯碼首先將從取指令單元來的指令鎖存起來形成 id_insn[31:0],隨后根據(jù)其第 32 位到第27 位(共 6 位)的值,控制單元通過譯碼得到指令是執(zhí)行什么操作。對于 ALU 類指令、Load/Store 類指令和分支類指令,譯碼結(jié)果應(yīng)為該類指令的哪一種具體操作。如果是 ALU類指令中的比較操作或乘累加操作,譯碼結(jié)果還應(yīng)具體到到底是哪一種比較操作或乘累加操作。同時,在指令譯碼段結(jié)束之前指令譯碼單元將處于譯碼段的指令的所有源操作
【引證文獻(xiàn)】
相關(guān)期刊論文 前1條
1 尤菲菲;胡寶霞;劉小平;;32位嵌入式RISC微處理器設(shè)計[J];科技咨詢導(dǎo)報;2007年26期
相關(guān)碩士學(xué)位論文 前5條
1 陳海民;密碼嵌入式微處理器設(shè)計與實現(xiàn)研究[D];解放軍信息工程大學(xué);2011年
2 李云;嵌入式RISC處理器中指令流水單元的設(shè)計[D];西北工業(yè)大學(xué);2007年
3 江琳;兼容ARC指令集的RISC IP核的開發(fā)[D];哈爾濱工業(yè)大學(xué);2007年
4 趙先鋒;COTS微處理器軟件容錯性能的研究[D];哈爾濱工業(yè)大學(xué);2007年
5 劉亮;RISC處理器整數(shù)運算和控制單元的研究與設(shè)計[D];華北電力大學(xué);2012年
本文編號:2757846
本文鏈接:http://sikaile.net/kejilunwen/jisuanjikexuelunwen/2757846.html
最近更新
教材專著