女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

RISC-V五級流水線CPU設計

FPGA設計論壇 ? 來源:tencentcloud.csdn.net ? 2025-04-15 09:46 ? 次閱讀

本文實現(xiàn)的CPU是一個五級流水線的精簡版CPU(也叫PCPU,即pipeline),包括IF(取指令)、ID(解碼)、EX(執(zhí)行)、MEM(內(nèi)存操作)、WB(回寫)。

指令集:RISC

指令集大小:2^5 = 32

數(shù)據(jù)寬度:16bit

數(shù)據(jù)內(nèi)存:2^8×16bit = 256個16bit

指令內(nèi)存:2^8×16bit = 256個16bit

通用寄存器:8×16bit

標志寄存器:NF(negative flag)、ZF(zero flag)、CF(carry flag)

控制信號:clock、reset、enable、start

1.介紹與設計

1.1.CPU頂層視圖

第一步只要求實現(xiàn)簡單的五級流水線,不要求實現(xiàn)指令內(nèi)存、數(shù)據(jù)內(nèi)存模塊,因此CPU內(nèi)部與內(nèi)存有關的信號都簡化為輸入輸出信號了,CPU的頂層視圖看起來應該如下圖,其中select_y、y信號是跟CPU板級測試有關的,這一步暫且沒用到。

38a444c8-15e6-11f0-9310-92fbcf53809c.png

1.2.指令集

指令為三地址格式,操作碼長度5bit,根據(jù)操作數(shù)的不同可以把指令分為三種類型,即寄存器類型R type、立即數(shù)類型I type、混合類型RI type,不過后面在代碼編寫的時候,為了方便,會依據(jù)其它標準進行劃分。

38b7eb18-15e6-11f0-9310-92fbcf53809c.png

規(guī)范一下表示方式,r1或者gr[r1]表示訪問寄存器r1,m[r2+val3]表示訪問r2+val3這個地址,{val2,val3}表示立即數(shù)訪問,val2為MSB,val3為LSB。

匯編代碼示例:

38ce8210-15e6-11f0-9310-92fbcf53809c.png

本文設計一共實現(xiàn)了28條機器指令,剩下未用的4個操作碼(10100,10101,10110,10111)可自行補充為其它操作,比如自增INC、自減DEC。這里指令的編碼是比較隨意的,而且由于代碼實現(xiàn)中使用了宏定義,因此可以任意更改指令的編碼,不過如果想做進一步的優(yōu)化,就要仔細考慮編碼方式了。以下是指令集的具體格式與操作,設計CPU的時候有兩張圖是必須時刻看著的,我都把它們打印出來,這是其中一張。

38d83b70-15e6-11f0-9310-92fbcf53809c.png

1.3.五級流水線

除了指令集之外,設計CPU最重要的就是下面這張CPU塊級電路圖,五級流水線的代碼實現(xiàn)都必須依賴于這張圖,因此必須理解圖中每一步的作用。

38e7fbaa-15e6-11f0-9310-92fbcf53809c.png

圖中所有矩形框標出來的都是CPU內(nèi)部的寄存器,整個電路圖展示了CPU內(nèi)部指令以及數(shù)據(jù)的流動方向。每到時鐘上升沿,上一級流水線的寄存器的數(shù)據(jù)就會經(jīng)過中間的組合邏輯電路流動到下一級流水線的寄存器,因此,5個時鐘周期之后一條機器指令便執(zhí)行完畢了。

簡單描述一條指令的執(zhí)行過程就是,

●首先根據(jù)PC的值到內(nèi)存中取一條指令,

●解碼指令提取兩個操作數(shù)

●進行運算,

●根據(jù)指令功能以及運算結(jié)果決定是否訪問數(shù)據(jù)內(nèi)存以及如何訪問,

●最后同樣根據(jù)指令功能決定是否要進行回寫操作,即修改寄存器的值。

下面將分別講解CPU控制以及五級流水線每一級的行為,為了簡單起見,這里僅考慮NOP、HALT、LOAD、STORE、ADD、CMP、BZ、BN這幾條指令,明白了流水線的行為之后再加上其它的指令也是一樣的道理

1.4.CPU控制

CPU控制自然是基于狀態(tài)機,只有兩個狀態(tài)idle和exec,CPU在idle狀態(tài)下只有enable、start同時使能才會進入exec狀態(tài)。

38f537a2-15e6-11f0-9310-92fbcf53809c.png

1.5.IF

IF階段的任務就是要根據(jù)PC的值從指令內(nèi)存中讀取一條指令,并且設置下一周期PC的值(指令可以順序執(zhí)行,也可以跳轉(zhuǎn)到某個特定的地址)。因為讀取內(nèi)存是內(nèi)存模塊實現(xiàn)的功能,因此這里CPU只需要給出指令地址i_addr就能得到對應的指令i_datain。

390808fa-15e6-11f0-9310-92fbcf53809c.png

1.6.ID

ID階段要根據(jù)指令的功能(即操作碼)從指令中提取對應的操作數(shù),操作數(shù)可能來自通用寄存器r0-r7,也可能是立即數(shù)。另外如果指令是STORE指令,也要準備好要存儲到內(nèi)存中的數(shù)據(jù)。

39157d6e-15e6-11f0-9310-92fbcf53809c.png

1.7.EX

EX階段執(zhí)行的是ALU運算和標志寄存器設置,另外如果是STORE指令也要給出內(nèi)存寫的使能信號dw以及將要寫到內(nèi)存中的數(shù)據(jù)smdr1。

392983cc-15e6-11f0-9310-92fbcf53809c.png

1.8.MEM

MEM階段要根據(jù)指令功能和上一階段的運算結(jié)果(內(nèi)存操作的時候作為內(nèi)存地址)決定是否要訪問內(nèi)存以及如何訪問,只對需要內(nèi)存操作的指令有效。

39383390-15e6-11f0-9310-92fbcf53809c.png

1.9.WB

WB階段同樣根據(jù)指令的功能以及上一階段的結(jié)果決定是否要修改寄存器的值以及如何修改,只對需要修改寄存器值的指令有效。

39480cfc-15e6-11f0-9310-92fbcf53809c.png

CPU仿真(通過內(nèi)存實現(xiàn))

內(nèi)存其實就是一個 reg 數(shù)組,讀內(nèi)存用組合邏輯電路,寫內(nèi)存用時序電路,如下圖代碼所示。對內(nèi)存的初始化可以通過 reset 信號,或者軟件仿真的時候可以直接在 test bench 文件的 initial 里面初始化。

395589c2-15e6-11f0-9310-92fbcf53809c.png

這時候,pcpu的測試文件就要另外再通過memory.v實例化兩個內(nèi)存模塊i_mem、d_mem分別用作指令內(nèi)存和數(shù)據(jù)內(nèi)存了,pcpu模塊與內(nèi)存有關的所有信號(i_datain、d_datain等等)都要連接到這兩個模塊。initial初始化內(nèi)存的方式如下圖:

3964daa8-15e6-11f0-9310-92fbcf53809c.png

另外一種reset信號初始化內(nèi)存的方式需要分開定義指令內(nèi)存i_memory.v和數(shù)據(jù)內(nèi)存d_memory.v,然后在pcpu的測試文件里面實例化這兩個文件的模塊。d_memory.v大致如下

396fbe28-15e6-11f0-9310-92fbcf53809c.png

Testbench:

397d002e-15e6-11f0-9310-92fbcf53809c.png

仿真圖

3989b1c0-15e6-11f0-9310-92fbcf53809c.png

399fbcea-15e6-11f0-9310-92fbcf53809c.png

原文連接:https://tencentcloud.csdn.net/678a0cacedd0904849a6618d.html

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5421

    瀏覽量

    123400
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11038

    瀏覽量

    216038
  • 內(nèi)存
    +關注

    關注

    8

    文章

    3109

    瀏覽量

    75002
  • 五級流水線
    +關注

    關注

    0

    文章

    2

    瀏覽量

    1560

原文標題:RISC_v五級流水線CPU設計

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    RISC-V開放架構(gòu)設計之道|閱讀體驗】RV64指令集設計的思考以及與流水線設計的邏輯

    RISC-V指令集體系結(jié)構(gòu)的設計思想和優(yōu)化技術,包括流水線、分支預測、數(shù)據(jù)轉(zhuǎn)發(fā)和亂序執(zhí)行等。 這本書對RISC-V指令集體系結(jié)構(gòu)進行了深
    發(fā)表于 01-29 10:09

    RISC-V 基礎學習:RISC-V 基礎介紹

    特性使得CPU 指令預取、分支預測、指令流水線等部件的效能大大發(fā)揮,幾乎一個時鐘周期能執(zhí)行多條指令 RISC 的代表產(chǎn)品是 ARM 和 RISC-V。現(xiàn)在,兩者已經(jīng)沒有明顯的界限了,開
    發(fā)表于 03-12 10:25

    RISC-V架構(gòu)的多級流水線處理

    有的單核RISC-V MCU支持四流水線,有的只支持三流水線,是不是級數(shù)越多,帶來的開銷越大,功耗也越高呢?
    發(fā)表于 05-20 16:01

    流水線指令及RISC

    本帖最后由 eehome 于 2013-1-5 09:44 編輯 流水線指令及RISC
    發(fā)表于 08-17 15:49

    現(xiàn)代RISC中的流水線技術

    作Stretch計算機)。后來的CDC 6600同時采用了流水線和多功能部件。到了20世紀80年代,流水線技術成為RISC處理器設計方法中最基本的技術之一。RISC設計方法的大部分技術
    發(fā)表于 03-01 17:52

    什么是流水線技術

    什么是流水線技術 流水線技術
    發(fā)表于 02-04 10:21 ?4046次閱讀

    CPU流水線的定義

    cpu流水線技術是一種將指令分解為多步,并讓不同指令的各步操作重疊,從而實現(xiàn)幾條指令并行處理,以加速程序運行過程的技術。
    發(fā)表于 12-14 15:29 ?4859次閱讀

    基于流水線的HEVCDBF模塊硬件架構(gòu)設計

    基于流水線的HEVCDBF模塊硬件架構(gòu)設計_沈高峰
    發(fā)表于 01-07 21:28 ?0次下載

    處理器系列之CPU流水線科普

    1989年推出的i486處理器引入了流水線。這時,在CPU中不再僅運行一條指令,每一流水線
    發(fā)表于 01-26 01:18 ?4554次閱讀
    處理器系列之<b class='flag-5'>CPU</b><b class='flag-5'>流水線</b>科普

    自制CPU(三)流水線

    我們正在第三執(zhí)行第條指令的執(zhí)行操作,對于整個數(shù)據(jù)通路來講,其它幾級都是空閑狀態(tài),那我們?yōu)榱颂岣?b class='flag-5'>CPU的工作效率,就讓他提前后邊指令的其他幾級操作。這樣一來,我們的CPU就像工廠內(nèi)的
    的頭像 發(fā)表于 07-16 09:20 ?5960次閱讀

    各種流水線特點及常見流水線設計方式

    按照流水線的輸送方式大體可以分為:皮帶流水裝配線、板鏈線、倍速鏈、插件線、網(wǎng)帶線、懸掛線及滾筒流水線這七類流水線
    的頭像 發(fā)表于 07-05 11:12 ?7948次閱讀
    各種<b class='flag-5'>流水線</b>特點及常見<b class='flag-5'>流水線</b>設計方式

    CPU流水線的問題

    1989 年推出的 i486 處理器引入了流水線。這時,在 CPU 中不再僅運行一條指令,每一流水
    的頭像 發(fā)表于 09-22 10:04 ?2290次閱讀

    CPU流水線優(yōu)缺點

    為什么有些CPU的主頻更低,但運算效率卻更高呢? 比如:51單片機30M主頻,STM32單片機20M主頻,執(zhí)行相同一段代碼可能主頻更低的STM32所花的時間更短。 這里就牽涉到CPU流水線的問題,本文圍繞
    的頭像 發(fā)表于 10-24 14:34 ?4956次閱讀

    Andes晶心科技推32/64位、高效能低功耗的RISC-V處理器

    這是一個三流水線的 32 位 RISC-V CPU核心,適合低功耗和高效率的嵌入式處理以及物聯(lián)網(wǎng)應用。
    發(fā)表于 02-09 10:59 ?1033次閱讀

    什么是流水線 Jenkins的流水線詳解

    jenkins 有 2 種流水線分為聲明式流水線與腳本化流水線,腳本化流水線是 jenkins 舊版本使用的流水線腳本,新版本 Jenkin
    發(fā)表于 05-17 16:57 ?1265次閱讀