RISC-V單周期處理器設(shè)計(基本介紹和數(shù)據(jù)通路)(一)-創(chuàng)新互聯(lián)

一、設(shè)計步驟

1.處理器設(shè)計的基本規(guī)范:指令

目前成都創(chuàng)新互聯(lián)公司已為超過千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、和平網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

包括處理器需要具有那些功能,需要注意的是處理器的功能是由指令唯一確定。

2.處理器設(shè)計方案(包括數(shù)據(jù)通路和控制器)

數(shù)據(jù)通路:指令執(zhí)行過程中,數(shù)據(jù)所經(jīng)過的路徑,包括路徑中的部件。它是指令的執(zhí)行部件。

控制器:對指令進(jìn)行編碼,生成指令對應(yīng)的控制信號,控制數(shù)據(jù)通路的動作。并且能對執(zhí)行部件發(fā)出控制信號。是指令的控制部件。

二、常見類型指令的數(shù)據(jù)通路

每種指令的介紹可以參考我上一篇博客關(guān)于RISC-V指令集介紹

這里的數(shù)據(jù)通路包括:R型,I型,S型,B型,J型指令

1.R型數(shù)據(jù)通路

首先了解個個部件:

PC:程序計數(shù)器,單周期就是就是每個周期執(zhí)行一條指令,每條指令執(zhí)行完 PC+4(32位)到下一條指令

IM:指令存儲器,我們寫的一條條指令就放在指令存儲器中,通過PC來判斷取到了那一條指令。

RF:寄存器堆,R型指令包括三個寄存器 RS1,RS2,Rd。

ALU:運(yùn)算單元,輸入兩個寄存器中的數(shù)據(jù),通過ALU運(yùn)算,將計算結(jié)果寫回到Rd中。

R型指令:寄存器對寄存器操作。數(shù)據(jù)通路運(yùn)行如下:通過clk控制pc從IM中取指令,指令送入寄存器堆(RF)中,從寄存器堆(RF)中取出數(shù)據(jù)送入運(yùn)算單元(ALU)進(jìn)行運(yùn)算,運(yùn)算結(jié)果重新存儲到寄存器堆(RF)中。


I型數(shù)據(jù)通路

需要注意:我們是要設(shè)計一個支持多種指令的數(shù)據(jù)通路,因此I型不要有新的數(shù)據(jù)通路,而是要在R型指令的基礎(chǔ)上有一點(diǎn)小的改變實(shí)現(xiàn)。

首先講解I型指令:立即數(shù)與寄存器操作,或者訪問存儲器操作。兩者的區(qū)別在于訪存類指令是把存儲器中的值寫回寄存器堆,而其他類型I型指令是把ALU運(yùn)算結(jié)果寫回到寄存器堆。

添加的部件

1.存儲器模塊(DM):通過ALU計算出訪存地址,從存儲器中去除數(shù)據(jù)放入寄存器堆中。

2.立即數(shù)生成模塊(EXT):從數(shù)據(jù)通路中提取出立即數(shù)。注意不同類型的指令立即數(shù)存儲格式不太一樣,這個在我指令集那一篇博客中有講解。

2.選擇器:兩個選擇器,一個是送入ALU中數(shù)據(jù)的選擇器,第二個是DM和ALU計算結(jié)果的選擇。

I型指令:立即數(shù)與寄存器堆操作。數(shù)據(jù)通路如下:通過clk控制pc從IM中取指令,指令送入寄存器堆(RF)和立即數(shù)生成單元(EXT)中,從寄存器堆(RF)中取出數(shù)據(jù)與立即數(shù)生成單元(EXT)數(shù)據(jù)共同進(jìn)入運(yùn)算單元(ALU)進(jìn)行運(yùn)算,運(yùn)算結(jié)果通過選擇器直接(或者訪存,將內(nèi)存中數(shù)據(jù))寫回寄存器堆。


S型指令數(shù)據(jù)通路

解釋:S型指令與訪存類指令其實(shí)是一個相反的過程,S型指令是把ALU結(jié)果存儲的存儲器(DM)中去(S型指令不需要寫會寄存器堆,也不需要增加其他模塊)。

S型指令:將rs2寄存器中的值存儲到rs1寄存器偏移立即數(shù)位地址中去。數(shù)據(jù)通路如下:通過clk控制pc從IM中取指令,指令送入寄存器堆(RF)和立即數(shù)生成單元(EXT)中,從寄存器堆(RF)中取出數(shù)據(jù)與立即數(shù)生成單元(EXT)數(shù)據(jù)共同進(jìn)入運(yùn)算單元(ALU)進(jìn)行運(yùn)算,運(yùn)算結(jié)果作為寫入DM的地址,而寫入地址中的值是另一個寄存器中的值,具體可以觀察上圖數(shù)據(jù)通路。


B型數(shù)據(jù)通路

B型指令主要是條件跳轉(zhuǎn),滿足條件要經(jīng)行跳轉(zhuǎn),這里跳轉(zhuǎn)實(shí)際上是PC指針的跳轉(zhuǎn)(可以想象C語言函數(shù)的調(diào)用),因此需要比較是否滿足條件,還有PC=(PC+立即數(shù))或者(PC+4)。

添加的部件

CMP:比較部件,比較兩個寄存器中的值是否相等,是否滿足跳轉(zhuǎn)的條件。

兩個選擇器:一個是判斷PC=(PC+立即數(shù))還是(PC+4)。另一個是判斷送入A(RS1寄存器中的值)還是PC的值進(jìn)入ALU。

B型指令:判斷兩個寄存器值關(guān)系(大于,小于,或者相等),滿足對應(yīng)指令條件,PC跳轉(zhuǎn)。數(shù)據(jù)通路:通過clk控制pc從IM中取指令,指令送入寄存器堆(RF)和立即數(shù)生成單元(EXT)中,判斷兩個寄存器中數(shù)據(jù)的關(guān)系,滿足條件PC跳轉(zhuǎn)到PC+立即數(shù)位置去,不滿足條件則不跳轉(zhuǎn)。


J型數(shù)據(jù)通路

只增加了藍(lán)色的那一條線

這里很好理解,J型與B型的區(qū)別在于,B型是有條件跳轉(zhuǎn),而J型則是無條件跳轉(zhuǎn),同時J型需要把PC+4存儲到寄存器堆中。

J型指令:將pc+4存儲到rd寄存器中,同時pc跳轉(zhuǎn)到pc+立即數(shù)位置去。數(shù)據(jù)通路不在解釋,與上面類似。

改進(jìn):這幾天思考我向pc+4和pc+立即數(shù)這樣的操作其實(shí)沒必要使用ALU來完成,不如直接使用一個加法器實(shí)現(xiàn),因此對上面的數(shù)據(jù)通路做了一個小的改變(主要是寫代碼的是否變了)

總結(jié)

上文中主要講解了,RISC-V的數(shù)據(jù)通路基本部分,但是我們發(fā)現(xiàn)上面有很多的選擇器,而每個選擇器其實(shí)都要有對應(yīng)的控制信號,那這些控制信號怎么產(chǎn)生那?還有這么多條指令,有如何識別對應(yīng)的指令那?這就需要說的另一個重要組成部分,控制器。它是負(fù)責(zé)給數(shù)據(jù)通路對應(yīng)的控制信號,同時判斷指令類型的。下一篇博客我將會講解我自己學(xué)習(xí)控制器的部分。

我對學(xué)習(xí)RISC-V踩過的坑:不要一上來就急于直接看代碼。學(xué)習(xí)RISC-V時,首先要理解RISC-V指令集,我的上一篇博客就是講解自己理解的一些基本指令集,接下來就是要學(xué)習(xí)各種指令類型對應(yīng)的數(shù)據(jù)通路。接下來理解控制器。最后就是各各模塊的代碼編寫了。后續(xù)我也會把自己各各模塊寫入博客,期待大家的關(guān)注。

上文的數(shù)據(jù)通路也是我自己查資料,看視頻理解的,可能存在一些錯誤,還望各位指點(diǎn)。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)站名稱:RISC-V單周期處理器設(shè)計(基本介紹和數(shù)據(jù)通路)(一)-創(chuàng)新互聯(lián)
標(biāo)題URL:http://muchs.cn/article46/ddsihg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、面包屑導(dǎo)航響應(yīng)式網(wǎng)站、網(wǎng)站內(nèi)鏈、域名注冊、網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化