最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

簡(jiǎn)易R(shí)ISC-V處理器設(shè)計(jì) (二.處理器的基本構(gòu)成)

2022-12-22 11:26 作者:幻夢(mèng)天綺  | 我要投稿

本文為通過Verliog HDL編寫簡(jiǎn)易R(shí)ISC-V CPU的試驗(yàn)筆記,如有錯(cuò)誤敬請(qǐng)指正。

電路建模

復(fù)雜電路通常使用自頂向下的設(shè)計(jì)方法,先決定電路所需的功能,劃分出實(shí)現(xiàn)功能的各個(gè)子模塊,確保頂層設(shè)計(jì)無邏輯錯(cuò)誤后,再進(jìn)行各子模塊的設(shè)計(jì)。

處理器的結(jié)構(gòu)總是與指令集相關(guān),對(duì)于RISC-V指令集,處理器需要按指令集的要求對(duì)數(shù)據(jù)進(jìn)行處理操作。

一. 指令行為分析

對(duì)于任意一條RISC-V指令,它在處理器中的執(zhí)行步驟皆可概括如下。

獲得指令

從外部或儲(chǔ)存器獲得當(dāng)前需要執(zhí)行的指令,如:ADD%5C%20Rd%5C%20Rs1%5C%20Rs2;

分析指令

獲得指令后,使可以按指令的內(nèi)容進(jìn)行執(zhí)行,但電路中指令以二進(jìn)制方式儲(chǔ)存,電路得到的只是32位的0、1,不能直接用于執(zhí)行。為使電路"理解"指令的內(nèi)容,需要對(duì)指令進(jìn)行"翻譯"以得到電路控制訊號(hào)。

對(duì)此,處理器須加入一個(gè)譯碼模塊,作用按指令內(nèi)容為生成電路各模塊的控制訊號(hào)。

如對(duì)ADD%5C%20Rd%5C%20Rs1%5C%20Rs2進(jìn)行分析,得知ALU執(zhí)行加法操作,數(shù)據(jù)來源A的地址為Rs1,數(shù)據(jù)來源B的地址為Rs2;運(yùn)算結(jié)果保存至Rd。此時(shí)應(yīng)設(shè)定電路為寄存器取數(shù)據(jù)的加法模式。

實(shí)例:00F707B3_%7B16%7D%20%3D%200000000_%7B(funct7)%7D01111_%7B(rs2)%7D01110_%7B(rs1)%7D000_%7B(funct3)%7D01111%20%7B(rd)%7D0110011%7B(opcode)2%7D進(jìn)行譯碼,從Opcode%20%3D%200110011_2得知為R-Type類型,從Funct%203%20%3D%20000得到電路執(zhí)行加法操作,數(shù)據(jù)來源A的地址為Rs1%20%3D%2001110_2,數(shù)據(jù)來源B的地址為Rs2%20%3D%2001111_2,運(yùn)算結(jié)果保存至Rd%20%3D%2001111%20_2。

附注:在實(shí)際的電路譯碼中,不分析Rs1,Rs2,Rd的信息,而是根據(jù)Opcode及指令中的其他信息位設(shè)置數(shù)據(jù)通路與算朮單元。

取得數(shù)據(jù)

寄存器獲取

出于節(jié)省指令長度,方便數(shù)據(jù)調(diào)用等考量,指令中并不直接包含需操作的32位數(shù)據(jù)。而是記錄了儲(chǔ)存數(shù)據(jù)的5位地址數(shù)據(jù)。處理器通過5位地址對(duì)儲(chǔ)存單元進(jìn)行訪問,間接得到所需的運(yùn)算數(shù)據(jù)。在這一步中,處理器中需要2%5E5%3D32個(gè)32位寄存器組以儲(chǔ)存臨時(shí)數(shù)據(jù)。

如:ADD%5C%20Rd%5C%20Rs1%5C%20Rs2,結(jié)果儲(chǔ)存至Rd,數(shù)據(jù)來源A的地址為Rs1,數(shù)據(jù)來源B的地址為Rs2;從Rs1,Rs2中獲得寄存的32位數(shù)據(jù)。

附注:在處理器中,少量的臨時(shí)數(shù)據(jù)被儲(chǔ)存于寄存器而非內(nèi)存,其特點(diǎn)為訪問速度快,需要時(shí)可直接進(jìn)行存放以獲得數(shù)據(jù),若儲(chǔ)存于內(nèi)存則至少需要占用一個(gè)指令周期以獲得數(shù)據(jù)。

立即數(shù)擴(kuò)展

對(duì)于立即數(shù)形式指令,其運(yùn)算數(shù)據(jù)被部份地儲(chǔ)存于指令當(dāng)中,一般為12位(I-Type)或20位(J-Type)。不符合32位操作數(shù)的標(biāo)準(zhǔn),需要對(duì)數(shù)據(jù)進(jìn)行擴(kuò)展以得到完整的32位操作數(shù)。在RISC-V中,大部分立即數(shù)皆按有符號(hào)數(shù)進(jìn)行擴(kuò)展處理。

如:ADDI%5C%20Rd%5C%20Rs1%5C%2099,結(jié)果儲(chǔ)存至Rd,數(shù)據(jù)來源A的地址為Rs1,數(shù)據(jù)來源B為指令中儲(chǔ)存的99,99_%7B10%7D%20%3D%200110%5C%200011_2,但輸入為32位,需擴(kuò)展為99_%7B10%7D%20%3D%200%E2%80%A6(22%E4%BD%8D0)%E2%80%A60%5C%200110%5C%200011_2

附注:符號(hào)擴(kuò)展,由于立即數(shù)通過補(bǔ)碼保存,正數(shù)的補(bǔ)碼表示為其自身的二進(jìn)制值,負(fù)數(shù)的補(bǔ)碼表示為自身的二進(jìn)制值取反加一,如7_%7B10%7D%20%3D%200111_2%EF%BC%9B-7_%7B10%7D%20%3D%201001_2,為7的4位二進(jìn)制表示,若以8位表示則有7_%7B10%7D%20%3D%2000000111_2%EF%BC%9B-7_%7B10%7D%20%3D%2011111001_2,把4位二進(jìn)制擴(kuò)展為8位,只需判斷數(shù)據(jù)的符號(hào)位(最高位),隨后隨擴(kuò)展每一位值與最高值相同即可。

數(shù)據(jù)處理

參考指令集中定義的幾種數(shù)據(jù)處理方式,分別有算朮加法、按位與、按位或、左右移。對(duì)數(shù)據(jù)的處理一般通過算朮邏輯單元(ALU)進(jìn)行處理。

數(shù)據(jù)儲(chǔ)存

假若處理結(jié)果不被保存或不改變狀態(tài)機(jī),則數(shù)據(jù)運(yùn)算顯得毫無意義。對(duì)大部分指令而言,數(shù)據(jù)的處理結(jié)果需要重新寫回至寄存器組中等待后續(xù)指令的調(diào)用。又或是通過Store指令儲(chǔ)存至"大型"儲(chǔ)存器,如內(nèi)存當(dāng)中。

二. 邏輯框圖

下為RISC-V處理器的基礎(chǔ)構(gòu)成框圖,其組成與上述提到的指令執(zhí)行步驟相差不大。


三. 模塊劃分

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

數(shù)據(jù)通路是處理器的重要構(gòu)成部份,主要負(fù)責(zé)模塊間的數(shù)據(jù)傳遞。主要的部件為受譯碼模塊控制的數(shù)據(jù)選擇器。譯碼器通過選擇器控制各模塊的輸入數(shù)據(jù),例如選擇ALU運(yùn)算數(shù)據(jù)從寄存器或是立即數(shù)單元進(jìn)行輸入。

數(shù)據(jù)通路的設(shè)計(jì)需與指令相配合,對(duì)于RISC-V指令集的指令執(zhí)行流程,可以得到一種數(shù)據(jù)通路設(shè)計(jì)如上。

程序計(jì)數(shù)器

在處理器中,指令一般被順序存放于存儲(chǔ)器,存儲(chǔ)器的特點(diǎn)時(shí)訪問數(shù)據(jù)時(shí)需提供地址,隨后存儲(chǔ)器通過地址取得被儲(chǔ)存的數(shù)據(jù)。因此,程序計(jì)數(shù)器的核心為記錄當(dāng)前執(zhí)行的指令計(jì)數(shù),隨后通過此計(jì)數(shù)值于存儲(chǔ)器中讀出相應(yīng)的32位指令碼。

在RISC-V中,若不考慮跳轉(zhuǎn)與分支等情況,則PC在每條指令執(zhí)行完畢后自增4。對(duì)應(yīng)的電路為一組32位觸發(fā)器及一個(gè)32位加法器。

指令儲(chǔ)存器

存放指令的存儲(chǔ)區(qū)域,可以是專用的指令儲(chǔ)存器,亦可以是內(nèi)存中特定的一塊區(qū)域。

譯碼模塊

翻譯指令編碼為控制訊號(hào)的電路,一般需與數(shù)據(jù)通路及其他模塊協(xié)同設(shè)計(jì)。作為例子,譯碼器需為算朮邏輯單元提供操作碼,以確保算朮邏輯單元的行為正確。亦需為數(shù)據(jù)通路中的各數(shù)據(jù)選擇器提供操作訊號(hào),確保各模塊的輸入數(shù)據(jù)正確。

寄存器組

處理器臨時(shí)存放程序數(shù)據(jù)的寄存器,寄存器組的加入使程序數(shù)據(jù)能被迅速取用而無需專門訪問內(nèi)存空間,減少電路的延時(shí)。

算朮邏輯單元(ALU)

算朮邏輯單元的行為與使用的指令集有重要關(guān)系。對(duì)于RV32I指令集,指令集中包含了加減法、與、或、或非、移位、比較等操作指令。對(duì)應(yīng)地需為ALU設(shè)計(jì)加法器及邏輯單元,從而實(shí)現(xiàn)指令集規(guī)定的操作行為。

隨機(jī)存儲(chǔ)器(RAM)

隨機(jī)存儲(chǔ)單元用于大規(guī)模地保存程序中的數(shù)據(jù),對(duì)于大型程序,32個(gè)寄存器并不足以存放所有程序數(shù)據(jù),但增加寄存器將導(dǎo)致地址位寬的進(jìn)一步上升,使指令體系變得臃腫。因此必須使用規(guī)模更大,代價(jià)更低的器件以儲(chǔ)存大量的運(yùn)行數(shù)據(jù)。其中隨機(jī)存儲(chǔ)單元由于成本相對(duì)較低,數(shù)據(jù)可隨機(jī)存放等特點(diǎn)而被廣泛用于數(shù)據(jù)存儲(chǔ)中。

附注:隨機(jī)存儲(chǔ)器中隨機(jī)二字不是指獲取的數(shù)據(jù)隨機(jī),而是指電路可以非順序的方式讀取儲(chǔ)存器中的數(shù)據(jù)。如磁帶、CD、硬碟等存儲(chǔ)介質(zhì)需從數(shù)據(jù)起始點(diǎn)開始一個(gè)個(gè)數(shù)據(jù)讀取,而不能直接讀取某一位置的數(shù)據(jù)。而隨機(jī)存儲(chǔ)器則可直接讀出存儲(chǔ)器中指定的數(shù)據(jù),因此稱為隨機(jī)存儲(chǔ)器。


作者Blog :?https://starryphantom.github.io/


簡(jiǎn)易R(shí)ISC-V處理器設(shè)計(jì) (二.處理器的基本構(gòu)成)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
凉城县| 扎赉特旗| 曲麻莱县| 桃源县| 凤城市| 什邡市| 兴安盟| 湄潭县| 兴和县| 陇川县| 潼关县| 本溪市| 马山县| 双柏县| 榆中县| 吴旗县| 山阳县| 区。| 乐陵市| 大悟县| 神农架林区| 隆子县| 图木舒克市| 塔城市| 平顶山市| 龙南县| 邢台县| 鸡西市| 宕昌县| 怀宁县| 临夏县| 苗栗县| 福州市| 德令哈市| 靖州| 灵璧县| 那曲县| 汝阳县| 广灵县| 钦州市| 额尔古纳市|