色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

RISC-V指令集是如何設計的

冬至配餃子 ? 來源:天奇工作室 ? 作者:LRC ? 2022-08-08 14:47 ? 次閱讀

我們來回顧一下上期內容:我們定義了兩種指令,第一種是立即數指令,其指令規則是:xxxxxxxxxxxx(立即數)xxxxx(源寄存器序號)xxx(運算規則)xxxxx(目標寄存器序號)1(立即數標志位)。第二種指令是寄存器指令,其指令規則是:0000000xxxxx(源寄存器序號1)xxxxx(源寄存器序號2)xxx(運算規則)xxxxx(目標寄存器序號)0(立即數標志位)。不過呢,這些指令只是我們的一廂情愿,現實中實際的指令集是怎么實現的?

pYYBAGLwsFuAMLa5AACNBC2MMKU335.png

RISC-V指令格式

我們這次來講講RISC-V指令集,看看他們的指令集是如何設計的。

RISC-V指令集項目在2010年始于伯克利大學,是一個新穎先進的指令集。我們曾在前幾章中多次提到過這個指令集,不過也就是順嘴一題,這次我們具體看看究竟什么是RISC-V指令集。

首先RISC-V指令集由幾部分組成。最主要的部分是最基礎32位的RV32I,這部分是最基礎的指令集,是兼容RISC-V程序的必要部分。其次是16位的RVC,作為壓縮指令,可以極大節省程序占用內存的空間。再者是32位的RV32M,用以支持乘除法指令。此外還有RV32F、RV32A等等。為什么要分成這么多部分呢?因為我們設計的CPU大多不會對這些指令全部兼容,而是選擇有目的的部分兼容。比如,設計一個低功耗的單片機CPU,我們就用不到乘除法等指令,我們可以選擇只兼容RV32I,既簡單又高效。當然這些指令還有64位版本,用以支持更高位數的計算。

RISC-V指令集規定了CPU中有32個寄存器。有疑問嗎?你可能覺得指令集不就是指令的集合嘛,為什么還規定我們的硬件設計?不要忘了,32個寄存器意味著寄存器序號一共是5位,而這是由指令集決定的。順便一說X86指令集中僅規定有8個寄存器。其中,00000即第一個寄存器本質并不是寄存器而是硬件連線0,始終代表數字0。這個設計是有意義的,可以借此寫出許多騷操作的指令。

我們先講最基礎的RV32I指令集。作為最基礎的指令集,其包括幾種指令類型。分別是數字運算指令(包括寄存器指令和立即數指令)、pc跳轉指令、分支指令和內存讀寫指令。我們上次定義的指令集屬于數字運算指令,二者類型相同但內容并不完全一致?,F在我來說說RV32I中的數字運算指令,你們可以和上次定義的指令集比比有何不同?這些差別能帶來好處還是壞處?

pYYBAGLwsHOAc4hVAABmp1yVSCk758.png


add指令釋義

首先是運算指令。RV32I一共定義了10種運算,分別是加法、減法、有符號比較、無符號比較、與、或、非、異或、邏輯左移、邏輯右移和算數右移。而這些運算分為寄存器指令和立即數指令。立即數指令中是無需減法指令的,因為我們曾經說過,減法可以通過對其中一個加數取反加一再與另一個加數求和實現,所以立即數可以直接在立即數上做文章,不需要減法指令。那我們是否需要十種運算電路來分別對應這十種計算指令呢?不用,我們只需要八種。少的那兩種分別是減法和移位。減法完全可以復用加法電路,左移完全可以復用右移電路。什么是復用?為什么要復用?復用就是重復利用原有的電路,減少設置新的電路。這樣可以節省芯片面積,節約生產成本,降低發熱功耗。那么如何復用呢?不同的電路有不同的復用方法,以減法復用加法為例,使用加法電路前,將其中一個數取反加一便可成為減法電路。

綜上所述,我們仍需要3位數字表示這八種運算邏輯,它們分別是000到111,這三位數字被稱為funct3(3位功能數字)。不過加法和移位運算中需要額外的一位數字用以區分加減和左右。這一位數字在哪呢?我們先講立即數移位指令,立即數一般是12位數字,但在移位運算中用不到這么多位數,一般只有5位。那么在這五位數之前會有7個空位,第二個空位便是這位數字所在。立即數加法指令不需要這一位數字,原因剛才有指出。寄存器指令中,同樣會存在7位空位,第二位空位是這位數字所在。

然后我們講一下另一類指令,內存讀寫指令。不過我們在此之前需要指出一件事,我們現在有兩種指令類型了,分別是運算指令和內存讀寫指令,我們怎么區分呢?RV32I設置了另一種功能數字,funct7(7位功能數字),為什么會有七位呢?因為指令類型很多,funct7不單起到區分RV32I指令類型的作用,同時還區分所有RISC-V的所有指令,甚至還包括16位和64位指令,所以funct7會有7位數字?;氐絻却孀x寫指令上來,讀和寫可以被看成兩種類型,需要一位數字區分,這位數字在funct7中。讀和寫都需要地址,否則不知道讀哪或是寫哪。

同時讀指令還需要知道取到的內容放到哪,而寫指令需要知道寫什么內容。先說地址,地址是由某一寄存器中的數字加上七位立即數得到,這樣正好組成之前說的12位數字。讀指令放到哪呢?放到目標寄存器嘛。寫指令的內容從哪來呢?來源寄存器嘛。這不就和之前的指令樣式對應起來了嗎?所以這兩種指令樣式區別其實不大。只不過執行內容有所區別。

我們現在剛剛簡單講完兩種指令類型,是不是很多人就已經迷失自我了?難道所有這些指令規則只能通過繁瑣的文字來講述嗎?這里就要提到指令集圖卡了。

pYYBAGLwsLCANZaWAAC_XgiafkQ258.png

RV32I指令集圖卡

上圖就是實拍RV32I指令集圖卡,每一行都代表著一條指令,你所要做的便是填入對應的寄存器序號和立即數即可。其中rs1和rs2分別是來源寄存器1和2,rd是目標寄存器,imm是立即數。有的指令可能只需要一個來源寄存器甚至一個都不要,有的指令可能不需要目標寄存器,有的指令可能需要12位立即數,有的則可能要20位立即數。這些在指令集圖卡中都體現出來了。看到右邊英文中,我手寫的幾道黑橫線了嗎?夾在里面的指令是我們在前文中所講的指令類型,可以再根據這張圖對前文進行理解,會容易得多哦。

舉個例子,比如加法指令,看到最右側有兩個add,分別是I addi和R add,區別在于一個是立即數加法,一個是寄存器加法。對應到靠右邊的方框中是不是可以看到7位數字,這就是funct7,中間有3位數字000,這就是funct3。寄存器指令中的最左側7位數字是空著的為0000000,而立即數指令中最左側則是12位的立即數。再看R add下面的R sub,與R add唯一的區別是不是左邊第二位數字變成了1?這就是之前所說的復用所需的那一位數字?,F在是不是能完全和之前所說的聯系起來了?也沒那么難對吧?

剩下的下次再來吧?還是你們剩下的都能自己看懂了?可以找公眾號回復一下,我想看看。


審核編輯:劉清

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

    關注

    31

    文章

    5392

    瀏覽量

    121930
  • 減法電路
    +關注

    關注

    0

    文章

    15

    瀏覽量

    8099
  • 指令集
    +關注

    關注

    0

    文章

    228

    瀏覽量

    23534
  • RISC-V
    +關注

    關注

    46

    文章

    2395

    瀏覽量

    47253
收藏 人收藏

    評論

    相關推薦

    中國開放指令生態聯盟攜手雄安新區推動RISC-V產業發展

    此前,2025年1月7日下午,一場聚焦RISC-V指令集架構未來發展的高端交流會議在雄安新區成功舉辦。本次交流由中國開放指令生態(RISC-V)聯盟產業孵化組的多位核心成員與雄安新區的
    的頭像 發表于 01-24 11:22 ?494次閱讀

    若貝集成電路設計和RISC-V雙系統平臺

    RISC-V雙系統平臺結合了FPGA的靈活性和RISC-V指令集的開放性,為用戶提供了一個高效、靈活的開發環境。
    的頭像 發表于 01-14 09:58 ?274次閱讀
    若貝集成電路設計和<b class='flag-5'>RISC-V</b>雙系統平臺

    RISC-V指令集概述

    RISC-V就是RISC的第五代指令集架構。而RISC-V目標就是“成為一種完全開放的指令集架構,可被任何學術機構或商業組織自由使用”。
    發表于 11-30 23:30

    關于RISC-V學習路線圖推薦

    一個號的RISC-V學習路線圖可以幫助學習者系統地掌握RISC-V架構的相關知識。比如以下是一個較好的RISC-V學習路線圖: 一、基礎知識準備 計算機體系結構基礎 : 了解計算機的基本組成、
    發表于 11-30 15:21

    什么是RISC-V?以及RISC-V和ARM、X86的區別

    前言 RISC-V是基于RISC精簡指令集架構開發的一個開放式指令集架構,它是由加州大學伯克利分校的計算機科學教授Krste Asanovic(克里斯蒂安·阿薩諾維奇)領導的團隊開發,
    發表于 11-16 16:14

    RISC-V指令集位寬的幾點學習心得

    在學習RISC-V指令集過程中,指令位寬大多是32位和64的,它并不像其它指令集,還有8位的古老指令集。這估計也是
    發表于 10-31 22:05

    英偉達2024年計劃出貨10億個RISC-V內核

    盡管英偉達GPU的核心技術圍繞其專有的CUDA核心構建,這些核心具備獨特的指令集架構并能處理多樣化的數據格式,但它們卻是由基于行業標準RISC-V指令集架構(ISA)的定制核心所控制的,盡管這些定制核心包含了一些擴展功能。
    的頭像 發表于 10-26 15:46 ?698次閱讀

    RISC-V和arm指令集的對比分析

    RISC-V和ARM指令集是兩種不同的計算機指令集架構,它們在多個方面存在顯著的差異。以下是對這兩種指令集的詳細對比分析: 一、設計理念 RISC-
    發表于 09-28 11:05

    ISA ARM 對比 RISC-V

    ARM和RISC-V同為精簡指令集RISC)架構,這意味著它們都基于相似的設計理念:通過簡化指令集來提高處理器的效率和執行速度。然而,即使同為RI
    的頭像 發表于 09-10 09:26 ?1134次閱讀

    RISC-V指令集的特點總結

    開源 定義:RISC-V 是完全開源的指令集架構(ISA),意味著任何人都可以查看、使用、修改以及分發其設計,而無需支付版權費用。 優勢:這種開源特性促進了全球性的創新和合作。 社區化 定義
    發表于 08-30 22:05

    RISC-V指令集仿真介紹

    我們有時需要一種標準的仿真器,這種仿真器獨立于處理器微架構,用于模擬處理器在執行目標應用程序時的各種狀態,包括執行結果,程序流以及CSR。如果當前設計的處理器在執行指定程序時,這三個指標與標準的仿真程序所呈現的結果不一致,則認為處理器設計存在問題,需要修正。對于RISCV處理器設計來講,最常見的仿真工具是Spike。本文將著重介紹如何安裝Spike仿真工具。 安裝Spike工具鏈 以下涉及到的安裝步驟都源自兩個工具鏈的README文件(所以README是個好東西),經作者實踐后所總結。 安裝riscv-fesvr 下載riscv-fesvr bash git clone --recursive https://github.com/riscv/riscv-tools.git 設置RISCV環境變量 bash RISCV=${HOME}/Software/rv_linux_bare_19-10-17-11-10/bin #riscv工具鏈的路徑 安裝可能會有用的工具 bash yum install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev libusb-1.0-0-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev device-tree-compiler pkg-config libexpat-dev #注意:這些工具并不要求都安裝成功,視后續需求。此處為保險措施 創建build文件夾 在riscv-fesvr文件夾下創建新的build文件夾,用于生成編譯 bash mkdir build cd build 配置并生成代碼 bash ../configure --prefix=$RISCV 安裝 bash make install 此時會看到大片的編譯過程,如果沒有報錯,則安裝成功,可以進入下一步,否則就要排錯并重新安裝。riscv-fesvr工具是安裝spike所必需的工具。 安裝Spike 下載riscv-isa-sim bash git clone --recursive https://github.com/riscv/riscv-tools.git 創建build文件夾 在riscv-isa-sim文件夾下創建新的build文件夾,用于生成編譯 bash mkdir build cd build 配置并生成代碼 bash ../configure --prefix=RISCV --with-fesvr=RISCV 安裝 bash make install 設置環境變量 將生成的Spike工具添加到環境變量中
    發表于 07-31 23:03

    risc-v的發展歷史

    RISC-V的發展歷史可以追溯到2006年左右,當時David Patterson和其他研究者開始探索創建一個開放和可擴展的指令集架構(ISA)。以下是RISC-V發展的主要里程碑: 一、起源與初步
    發表于 07-29 17:20

    RISC--V架構的特點

    RISC--V架構的特點 RISC-V架構RISC-V 架構是基于 精簡指令集計算(RISC)原
    發表于 05-24 08:01

    RISC-V指令集說明哪里有?

    RISC-V指令集說明哪里有?匯編指令文檔哪有?
    發表于 04-30 17:44

    有沒有RISC-V指令集文檔分享一下?

    有沒有RISC-V指令集文檔分享一下?了解一下他的匯編指令。
    發表于 03-30 11:48
    主站蜘蛛池模板: 91偷偷久久做嫩草电影院 | a级男女性高爱潮高清试看 A级毛片无码久久精品免费 | www.青青草原| 成年人国产视频 | 日本女人bb | 中文字幕在线免费视频 | 国产系列视频二区 | 囯产精品一区二区三区线 | 欧美久久综合网 | 国产精品7777人妻精品冫 | 国产成人在线视频免费观看 | 伊在香蕉国产在线视频 | china年轻小帅脸直播飞机 | 亚洲AV色香蕉一区二区三区 | 伊人第一路线 | 亚洲精品婷婷无码成人A片在线 | 在线观看日韩一区 | 国产树林野战在线播放 | 吸奶舔下面 | 男男腐文污高干嗯啊快点1V1 | 色悠久久久久综合网小说 | 美女胸网站| 添加一点爱与你电视剧免费观看 | 亚洲AV无码久久流水呻蜜桃久色 | 女子初尝黑人巨嗷嗷叫 | 国产精品亚洲国产三区 | AV72啪啪网站| 国产在线播放91 | 玩弄朋友娇妻呻吟交换电影 | 久久婷婷色香五月综合激情 | 菠萝菠萝蜜高清观看在线 | 国产精品视频免费观看 | 国产在线观看www鲁啊鲁免费 | 一个人HD在线观看免费高清视频 | 亚洲一日韩欧美中文字幕在线 | 久久99精品久久久久久园产越南 | 狠狠色狠狠色综合日日小说 | 国产又黄又粗又爽又色的视频软件 | 诱人的女邻居9中文观看 | 亚色九九九全国免费视频 | 羞羞影院午夜男女爽爽影院网站 |