999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于RISC-V 的教學(xué)模型機(jī)設(shè)計(jì)

2021-03-25 04:06:12康磊李鑫李慧鄭豪威
現(xiàn)代計(jì)算機(jī) 2021年4期
關(guān)鍵詞:指令程序功能

康磊,李鑫,李慧,鄭豪威

(西安石油大學(xué)計(jì)算機(jī)學(xué)院,西安710000)

0 引言

《計(jì)算機(jī)組成原理》是計(jì)算機(jī)相關(guān)專業(yè)的一門重要的專業(yè)基礎(chǔ)課。該課程主要介紹計(jì)算機(jī)內(nèi)部的工作原理,幫助學(xué)生深入理解計(jì)算機(jī)的工作流程[1]。對(duì)于這種實(shí)踐性很強(qiáng)的課程,實(shí)驗(yàn)環(huán)節(jié)是學(xué)好課程的關(guān)鍵步驟,它有助于學(xué)生對(duì)抽象理論的理解,可以親身體驗(yàn)平時(shí)只能依靠老師講解、自己想象的情景[2-3]。控制器的設(shè)計(jì)是課程的核心,它需要控制整個(gè)硬件系統(tǒng)的各個(gè)模塊,因此必須深刻了解指令系統(tǒng)中各條指令功能,以及每條指令的數(shù)據(jù)通路的建立過(guò)程,能夠正確給出各部件時(shí)序控制信號(hào),保證每一條指令的順利執(zhí)行。

本文基于RISC-V 指令集設(shè)計(jì)了單周期的教學(xué)模型機(jī)。學(xué)生可以對(duì)于CPU 內(nèi)部的工作流程以及各個(gè)功能部件有更深刻的理解,并根據(jù)個(gè)人的理解設(shè)計(jì)模型機(jī)的控制器,設(shè)計(jì)完成后進(jìn)行功能仿真,學(xué)生可以通過(guò)觀察仿真結(jié)果圖判斷指令執(zhí)行的正確性,加強(qiáng)自身對(duì)計(jì)算機(jī)系統(tǒng)的理解。

1 模型機(jī)

在進(jìn)行模型機(jī)設(shè)計(jì)時(shí),需根據(jù)模型機(jī)的指令集,設(shè)計(jì)模型機(jī)內(nèi)部功能模塊和完整的數(shù)據(jù)通路。本文使用Verilog 硬件描述語(yǔ)言實(shí)現(xiàn)對(duì)各個(gè)模塊,然后進(jìn)行整機(jī)的功能仿真和測(cè)試。

1.1 模型機(jī)指令集選取

指令集(Instruction Set Architecture,ISA),是指可以被一臺(tái)計(jì)算機(jī)執(zhí)行的全部指令的集合,是計(jì)算機(jī)硬件和上層軟件之間的接口。本文基于RISC-V 指令集進(jìn)行設(shè)計(jì),存儲(chǔ)系統(tǒng)采用哈佛結(jié)構(gòu)。

RISC-V 指令集[4-5]共有R-type、I-type、S-type、Btype、U-type、J-type 六種指令類型,具體指令格式如圖1 所示。

圖1 RISC-V指令格式

本文設(shè)計(jì)的模型機(jī)選取了表1 所示的10 條指令,這10 條指令分別屬于算術(shù)邏輯運(yùn)算類指令、訪存類指令和跳轉(zhuǎn)類指令,滿足程序設(shè)計(jì)的基本要求。RISC-V 指令集中32 個(gè)通用寄存器名稱為x0~x31。表1 中,x[rs1]表示源操作數(shù)寄存器1,x[rs2]表示源操作數(shù)寄存器2,x[rd]表示目的寄存器。

表1 選取的10 條指令

1.2 數(shù)據(jù)通路

一個(gè)完整的指令周期可分為取指(IF)、譯碼(ID)、執(zhí)行(EX)、訪存(MEM)、寫回(WB)五個(gè)階段[6]。IF 是將一條指令從指令存儲(chǔ)器中取出;取出指令后,計(jì)算機(jī)進(jìn)入ID 階段,指令譯碼器按照預(yù)定的指令格式對(duì)取出的指令進(jìn)行拆分和解釋;之后進(jìn)入EX 階段,完成指令所規(guī)定的具體操作,實(shí)現(xiàn)指令的功能;MEM 根據(jù)指令功能,從內(nèi)存中讀出或?qū)懭霐?shù)據(jù);WB 是將執(zhí)行階段的運(yùn)行結(jié)果寫回到寄存器中。

這五個(gè)階段由多個(gè)模塊協(xié)同工作實(shí)現(xiàn)。其中,控制器按照指令功能的要求,自動(dòng)產(chǎn)生的各種控制信號(hào)以保證數(shù)據(jù)在各模塊之間的正確流動(dòng),達(dá)到正確執(zhí)行指令的目的,指令執(zhí)行中形成的數(shù)據(jù)傳輸路徑稱為數(shù)據(jù)通路[7]。

不同類型的指令在相同的指令執(zhí)行各階段進(jìn)行的操作也不相同,所以需要對(duì)每條指令的功能以及進(jìn)行的操作進(jìn)行分析,以LW 指令的執(zhí)行為例,LW 所執(zhí)行的操作是x[rd] = mem[rs1+imm],指令編碼格式如圖2所示。

圖2

根據(jù)LW 要完成操作,分析其執(zhí)行需要以下階段:

(1)IF:Instruction[31:0]=Instruction[PC];PC=PC+4;

(2)ID:rs1 = instr[19:15];rd = instr[11:7];IMM12_I=instr[31:20];

(3)EX:A= X[rs1];B ={ 20’b0,instr[31:20]},C =A+B;

(4)MEM:addr=C[9:0],Dout=dmem[addr];

(5)WB:WD=Dout。

根據(jù)LW 指令執(zhí)行過(guò)程,可以得到其他指令的執(zhí)行步驟,完整數(shù)據(jù)通路如圖3 所示。

圖3 完整數(shù)據(jù)通路

圖3 中,程序計(jì)數(shù)器(PC)、指令存儲(chǔ)器(IM)、指令譯碼器(ID)、寄存器堆(RF)、算術(shù)邏輯單元(ALU)、數(shù)據(jù)存儲(chǔ)器(DM)是完成指令功能的基本模塊。由于不同指令執(zhí)行時(shí)需要進(jìn)行不同的操作,對(duì)相同模塊復(fù)用時(shí)要求的數(shù)據(jù)源也不同,所以增加了多路選擇器(MUX)為模塊選擇正確的數(shù)據(jù)源,并增加了控制器(Control Unit)控制各個(gè)模塊的執(zhí)行,實(shí)現(xiàn)了CPU 基本功能。

2 功能模塊設(shè)計(jì)

2.1 單周期控制模塊(Control Unit)設(shè)計(jì)

單周期CPU 中一條指令在一個(gè)時(shí)鐘周期內(nèi)執(zhí)行完畢,控制模塊一次輸出所有的控制信號(hào)[8]。控制模塊的輸入引腳有指令操作碼Op,指令功能碼funct3 和運(yùn)算結(jié)果狀態(tài)標(biāo)志位Zero,輸出引腳為模型機(jī)的多個(gè)控制信號(hào)。

控制模塊根據(jù)輸入的操作碼和功能碼判斷當(dāng)前指令類型,根據(jù)指令類型和Zero 產(chǎn)生控制信號(hào),完成指令功能。控制模塊采用組合邏輯實(shí)現(xiàn)。通過(guò)Verilog 編碼生成的模塊如圖4 所示。

圖4 Control Unit

2.2 主要功能部件設(shè)計(jì)

一條指令的執(zhí)行需要內(nèi)部的功能部件共同完成[9]。IF 階段需要程序計(jì)數(shù)器模塊和指令存儲(chǔ)器模塊,ID 功能由譯碼模塊完成,EX 階段由運(yùn)算器進(jìn)行所需操作,MEM 需要對(duì)數(shù)據(jù)存儲(chǔ)器進(jìn)行操作,WB 階段需要將指令運(yùn)行的結(jié)果寫到寄存器組中。下面對(duì)于指令執(zhí)行過(guò)程中的主要功能部件進(jìn)行簡(jiǎn)單介紹。

(1)程序計(jì)數(shù)器(Program Counter,PC)

程序計(jì)數(shù)器給出下一條執(zhí)行的指令地址,并能通過(guò)控制器給出的控制信號(hào)更新下一條指令的地址。輸入引腳有時(shí)鐘信號(hào)clk、復(fù)位信號(hào)rst、寫使能信號(hào)PCWr 以及下一條指令的地址NPC。

在PCWr 信號(hào)有效時(shí),PC 值進(jìn)行更新,PC=NPC。NPC 值有以下幾種情況:

①程序順序執(zhí)行,NPC=PC+4;

②程序進(jìn)行條件分支轉(zhuǎn)移(BRANCH),NPC = PC+Imm12_B*2;

③程序進(jìn)行跳轉(zhuǎn)并鏈接(JAL),NPC = PC +Imm20_J*2;

④程序進(jìn)行跳轉(zhuǎn)并寄存器鏈接(JALR),NPC ={25'b0,rs1[4:0]}+Imm12_I。

通過(guò)Verilog 編碼生成的模塊如圖5 所示。

圖5 PC模塊

(2)譯碼部件(Instruction Decoder ID)

RISC-V 指令集共有6 種指令類型,如圖5 所示。譯碼模塊根據(jù)不同的指令類型對(duì)輸入的指令進(jìn)行拆分輸出。輸出引腳有操作碼Opcode、功能碼funct3、rs1寄存器地址、rs2 寄存器地址、rd 寄存器地址、12 位立即數(shù)、12 位的偏移地址、20 位的立即數(shù)、20 位的轉(zhuǎn)移地址。具體的指令拆分方式如圖6 所示。

圖6 指令拆分方式

控制器通過(guò)Opcode 和funct3 產(chǎn)生不同的控制信號(hào)。在R-Type 中,rs1、rs2 是兩個(gè)源地址,rd 是目的地址。在I-Type 中,Imm12_I 作為立即數(shù)或跳轉(zhuǎn)地址偏移量進(jìn)行運(yùn)算。在U-Type 中,IMM20_U 作為立即數(shù)進(jìn)行運(yùn)算。在B-Type 中,Imm12_B 作為跳轉(zhuǎn)地址偏移量進(jìn)行運(yùn)算。在S-Type 中,Imm12_S 作為立即數(shù)進(jìn)行運(yùn)算。在J-Type 中,Imm20_J 作為跳轉(zhuǎn)地址進(jìn)行運(yùn)算。

(3)寄存器組(Register File,RF)

寄存器組包含了32 個(gè)通用寄存器,從x0 到x31,每個(gè)都是32 位寬,其中X0 寄存器總是返回零。

通過(guò)Verilog 編碼生成的模塊如圖7 所示。

圖7 RF模塊

其中A1、A2 為讀地址數(shù)據(jù)輸入,A3 為寫地址數(shù)據(jù)輸入,WD 為寫數(shù)據(jù)輸入,clk 為系統(tǒng)時(shí)鐘,RFWr 為寄存器組寫控制信號(hào),RD1、RD2 為通用寄存器組數(shù)據(jù)輸出端口。

RF 在時(shí)鐘的下降沿監(jiān)測(cè)RFWr 是否有效,RFWr有效時(shí),做寫操作,將WD 的數(shù)據(jù)寫入到A3 指定的寄存器中,否則不做寫操作。讀出寄存器中的數(shù)據(jù)不受時(shí)鐘控制。

(4)運(yùn)算器(Arithmetic Logic Unit,ALU)

ALU 實(shí)現(xiàn)對(duì)數(shù)據(jù)的算術(shù)邏輯運(yùn)算。在模型機(jī)的指令集中運(yùn)算類指令有add、ori、auipc、slli、srli 和slt,所以ALU 中加、或、左移、右移和比較五類運(yùn)算,運(yùn)算操作符需要三位。編碼時(shí)采用組合邏輯實(shí)現(xiàn)ALU,通過(guò)Verilog 編碼生成的模塊如圖8 所示。

圖8 ALU模塊

其中A、B 是運(yùn)算的兩個(gè)源操作數(shù),ALUOp 是運(yùn)算操作符,C 是運(yùn)算結(jié)果,Zero 是判斷運(yùn)算結(jié)果狀態(tài)的標(biāo)志位,運(yùn)算結(jié)果的低10 位作為數(shù)據(jù)存儲(chǔ)器的地址addr[9:0]。

(5)指令存儲(chǔ)器(Instruction Memory,IM)

指令存儲(chǔ)器中存儲(chǔ)32 位指令機(jī)器碼,輸入指令地址,輸出指令機(jī)器碼。指令存儲(chǔ)器在編譯的時(shí)候?qū)懭霚y(cè)試程序,模型機(jī)運(yùn)行時(shí)只進(jìn)行讀操作。

(6)數(shù)據(jù)存儲(chǔ)器(Data Memory,DM)

數(shù)據(jù)存儲(chǔ)器中存儲(chǔ)32 位數(shù)據(jù),輸入引腳有:時(shí)鐘信號(hào)clk、寫入的32 位數(shù)據(jù)din、寫入的數(shù)據(jù)地址addr、寫控制信號(hào)DMWr。輸出引腳是讀出的數(shù)據(jù)dout。在時(shí)鐘上升沿監(jiān)測(cè)DMWr 是否有效,DMWr 有效時(shí)做寫操作,否則不進(jìn)行寫操作。讀操作可在任意時(shí)刻進(jìn)行。通過(guò)Verilog 編碼生成的模塊如圖9 所示。

圖9 DM模塊

3 模型機(jī)功能驗(yàn)證

設(shè)計(jì)中使用樣例程序?qū)δP蜋C(jī)進(jìn)行功能仿真驗(yàn)證,仿真正確后將程序下載到FPGA 開(kāi)發(fā)板進(jìn)行功能測(cè)試。

3.1 驗(yàn)證樣例程序

為了測(cè)試模型機(jī)完整指令集的功能,設(shè)計(jì)了使用全部10 條指令的樣例程序,如表2 所示。

表2 樣例程序

樣例程序的執(zhí)行過(guò)程如下:

(1)程序初始化;

(2)將數(shù)據(jù)1、2、4 分別存到存儲(chǔ)器中;

(3)通過(guò)jalr 指令進(jìn)行跳轉(zhuǎn)并鏈接到子程序中;

(4)從存儲(chǔ)器中加載出剛存的數(shù)據(jù)并進(jìn)行求和,結(jié)果存到存儲(chǔ)器中;

(5)從存儲(chǔ)器中取出數(shù)據(jù);

(6)返回起始地址。

根據(jù)樣例程序預(yù)測(cè)執(zhí)行結(jié)果:程序執(zhí)行時(shí),loop1循環(huán)一共執(zhí)行三次,loop1 循環(huán)結(jié)束后,執(zhí)行jalr 指令跳至loop2 循環(huán),loop2 循環(huán)共執(zhí)行三次,跳出loop2 循環(huán)時(shí),add x4,x4,x6 的執(zhí)行結(jié)果x4 為07h,最后lw x7,0(x0)的執(zhí)行結(jié)果x7 的執(zhí)行結(jié)果為07h,最后執(zhí)行jal 指令回到起始地址。

3.2 模型機(jī)仿真驗(yàn)證

將樣例程序?qū)懭氲絾沃芷贑PU 的IM 中,編寫testbench,給出需要的激勵(lì)信號(hào),使用Vivado 中的仿真工具XSIM 進(jìn)行功能仿真。樣例程序的仿真結(jié)果如圖10所示。

圖10 樣例程序仿真結(jié)果

從圖10 仿真結(jié)果(1)中可以看到,在PC 值為58h處,當(dāng)前指令機(jī)器碼IR 為00002383h,對(duì)應(yīng)指令為lw x7,0(x0),從存儲(chǔ)器中取出的數(shù)據(jù)dout 為07h,lw 的執(zhí)行結(jié)果符合預(yù)期。

從仿真結(jié)果(2)中看到,在310ns 時(shí)PC 值為5ch,當(dāng)前指令機(jī)器碼IR 為32’hFA5FF0EF,對(duì)應(yīng)指令為jal x1,start,下個(gè)周期時(shí)PC 值為0h,程序回到起始地址處,與預(yù)期結(jié)果一致。測(cè)試程序在模型機(jī)正確執(zhí)行。

3.3 模型機(jī)硬件驗(yàn)證

功能仿真結(jié)果正確后,將程序生成的比特流文件下載到Nexys 4 DDR,Artix-7 開(kāi)發(fā)板上進(jìn)行測(cè)試。在100MHz 的外部時(shí)鐘輸入下,結(jié)果與測(cè)試程序預(yù)期結(jié)果一致,模型機(jī)可以正確運(yùn)行。

4 結(jié)語(yǔ)

本文利用Verilog HDL 設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于RISC-V 的單周期模型機(jī)的設(shè)計(jì),實(shí)現(xiàn)了RISC-V 指令集中的常用指令,讓學(xué)生能夠深入理解計(jì)算機(jī)的基本組成、內(nèi)部結(jié)構(gòu)和工作原理,提高學(xué)生的自主學(xué)習(xí)能力和創(chuàng)新能力。

猜你喜歡
指令程序功能
聽(tīng)我指令:大催眠術(shù)
也談詩(shī)的“功能”
試論我國(guó)未決羈押程序的立法完善
ARINC661顯控指令快速驗(yàn)證方法
LED照明產(chǎn)品歐盟ErP指令要求解讀
“程序猿”的生活什么樣
關(guān)于非首都功能疏解的幾點(diǎn)思考
英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
中西醫(yī)結(jié)合治療甲狀腺功能亢進(jìn)癥31例
主站蜘蛛池模板: 国产亚洲欧美日本一二三本道| 国产亚洲精品在天天在线麻豆| 久久精品日日躁夜夜躁欧美| 国产拍揄自揄精品视频网站| 欧美日韩国产综合视频在线观看 | 欧美一区二区三区不卡免费| 黄色网站不卡无码| 国产欧美日韩18| 97亚洲色综久久精品| 久久中文无码精品| 国产男女XX00免费观看| 不卡网亚洲无码| 亚洲欧美综合精品久久成人网| 国产丝袜无码一区二区视频| 无码久看视频| 1024国产在线| 成人福利在线免费观看| 欧美区国产区| 韩国v欧美v亚洲v日本v| 国产91久久久久久| 2021国产精品自产拍在线| 国产一区亚洲一区| 天天躁日日躁狠狠躁中文字幕| 中文成人无码国产亚洲| 亚洲aaa视频| 国产另类视频| 成人福利在线视频免费观看| 国产在线视频导航| 久久99国产乱子伦精品免| 免费一级毛片不卡在线播放| 精品视频一区二区观看| 茄子视频毛片免费观看| 内射人妻无套中出无码| 欧美亚洲另类在线观看| 亚洲色成人www在线观看| 国产精品污污在线观看网站 | 精品国产成人av免费| 99久久免费精品特色大片| 天天干天天色综合网| 黄色福利在线| 无码精品一区二区久久久| 九九香蕉视频| 亚洲国产精品久久久久秋霞影院| 国产麻豆永久视频| 日韩123欧美字幕| 久久综合伊人77777| 宅男噜噜噜66国产在线观看 | av在线人妻熟妇| 人妻丝袜无码视频| 国产国产人在线成免费视频狼人色| 久久精品人人做人人爽97| 亚洲国产欧美自拍| 亚洲v日韩v欧美在线观看| 国产精品视频导航| 亚洲国产日韩在线观看| 好久久免费视频高清| 无码综合天天久久综合网| 欧美怡红院视频一区二区三区| 欧洲免费精品视频在线| 国产一级裸网站| 国产区91| 色亚洲成人| 在线亚洲小视频| 最新国产麻豆aⅴ精品无| 欧美日韩国产在线播放| 国产女人18毛片水真多1| 精品一区二区三区视频免费观看| 成人国产免费| 亚洲Aⅴ无码专区在线观看q| 99视频精品全国免费品| 国产成人亚洲毛片| 中文字幕日韩欧美| 人人91人人澡人人妻人人爽 | 日韩一区二区三免费高清| 91小视频在线观看| 色综合五月| 亚洲熟女偷拍| 少妇精品久久久一区二区三区| 亚洲综合极品香蕉久久网| 久久青草精品一区二区三区| 全裸无码专区| 久操线在视频在线观看|