在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

RISC-V指令集是如何設(shè)計(jì)的

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

我們來(lái)回顧一下上期內(nèi)容:我們定義了兩種指令,第一種是立即數(shù)指令,其指令規(guī)則是:xxxxxxxxxxxx(立即數(shù))xxxxx(源寄存器序號(hào))xxx(運(yùn)算規(guī)則)xxxxx(目標(biāo)寄存器序號(hào))1(立即數(shù)標(biāo)志位)。第二種指令是寄存器指令,其指令規(guī)則是:0000000xxxxx(源寄存器序號(hào)1)xxxxx(源寄存器序號(hào)2)xxx(運(yùn)算規(guī)則)xxxxx(目標(biāo)寄存器序號(hào))0(立即數(shù)標(biāo)志位)。不過(guò)呢,這些指令只是我們的一廂情愿,現(xiàn)實(shí)中實(shí)際的指令集是怎么實(shí)現(xiàn)的?

pYYBAGLwsFuAMLa5AACNBC2MMKU335.png

RISC-V指令格式

我們這次來(lái)講講RISC-V指令集,看看他們的指令集是如何設(shè)計(jì)的。

RISC-V指令集項(xiàng)目在2010年始于伯克利大學(xué),是一個(gè)新穎先進(jìn)的指令集。我們?cè)谇皫渍轮卸啻翁岬竭^(guò)這個(gè)指令集,不過(guò)也就是順嘴一題,這次我們具體看看究竟什么是RISC-V指令集。

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

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

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

pYYBAGLwsHOAc4hVAABmp1yVSCk758.png


add指令釋義

首先是運(yùn)算指令。RV32I一共定義了10種運(yùn)算,分別是加法、減法、有符號(hào)比較、無(wú)符號(hào)比較、與、或、非、異或、邏輯左移、邏輯右移和算數(shù)右移。而這些運(yùn)算分為寄存器指令和立即數(shù)指令。立即數(shù)指令中是無(wú)需減法指令的,因?yàn)槲覀冊(cè)?jīng)說(shuō)過(guò),減法可以通過(guò)對(duì)其中一個(gè)加數(shù)取反加一再與另一個(gè)加數(shù)求和實(shí)現(xiàn),所以立即數(shù)可以直接在立即數(shù)上做文章,不需要減法指令。那我們是否需要十種運(yùn)算電路來(lái)分別對(duì)應(yīng)這十種計(jì)算指令呢?不用,我們只需要八種。少的那兩種分別是減法和移位。減法完全可以復(fù)用加法電路,左移完全可以復(fù)用右移電路。什么是復(fù)用?為什么要復(fù)用?復(fù)用就是重復(fù)利用原有的電路,減少設(shè)置新的電路。這樣可以節(jié)省芯片面積,節(jié)約生產(chǎn)成本,降低發(fā)熱功耗。那么如何復(fù)用呢?不同的電路有不同的復(fù)用方法,以減法復(fù)用加法為例,使用加法電路前,將其中一個(gè)數(shù)取反加一便可成為減法電路。

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

然后我們講一下另一類指令,內(nèi)存讀寫(xiě)指令。不過(guò)我們?cè)诖酥靶枰赋鲆患拢覀儸F(xiàn)在有兩種指令類型了,分別是運(yùn)算指令和內(nèi)存讀寫(xiě)指令,我們?cè)趺磪^(qū)分呢?RV32I設(shè)置了另一種功能數(shù)字,funct7(7位功能數(shù)字),為什么會(huì)有七位呢?因?yàn)橹噶铑愋秃芏?,funct7不單起到區(qū)分RV32I指令類型的作用,同時(shí)還區(qū)分所有RISC-V的所有指令,甚至還包括16位和64位指令,所以funct7會(huì)有7位數(shù)字?;氐絻?nèi)存讀寫(xiě)指令上來(lái),讀和寫(xiě)可以被看成兩種類型,需要一位數(shù)字區(qū)分,這位數(shù)字在funct7中。讀和寫(xiě)都需要地址,否則不知道讀哪或是寫(xiě)哪。

同時(shí)讀指令還需要知道取到的內(nèi)容放到哪,而寫(xiě)指令需要知道寫(xiě)什么內(nèi)容。先說(shuō)地址,地址是由某一寄存器中的數(shù)字加上七位立即數(shù)得到,這樣正好組成之前說(shuō)的12位數(shù)字。讀指令放到哪呢?放到目標(biāo)寄存器嘛。寫(xiě)指令的內(nèi)容從哪來(lái)呢?來(lái)源寄存器嘛。這不就和之前的指令樣式對(duì)應(yīng)起來(lái)了嗎?所以這兩種指令樣式區(qū)別其實(shí)不大。只不過(guò)執(zhí)行內(nèi)容有所區(qū)別。

我們現(xiàn)在剛剛簡(jiǎn)單講完兩種指令類型,是不是很多人就已經(jīng)迷失自我了?難道所有這些指令規(guī)則只能通過(guò)繁瑣的文字來(lái)講述嗎?這里就要提到指令集圖卡了。

pYYBAGLwsLCANZaWAAC_XgiafkQ258.png

RV32I指令集圖卡

上圖就是實(shí)拍RV32I指令集圖卡,每一行都代表著一條指令,你所要做的便是填入對(duì)應(yīng)的寄存器序號(hào)和立即數(shù)即可。其中rs1和rs2分別是來(lái)源寄存器1和2,rd是目標(biāo)寄存器,imm是立即數(shù)。有的指令可能只需要一個(gè)來(lái)源寄存器甚至一個(gè)都不要,有的指令可能不需要目標(biāo)寄存器,有的指令可能需要12位立即數(shù),有的則可能要20位立即數(shù)。這些在指令集圖卡中都體現(xiàn)出來(lái)了??吹接疫呌⑽闹?,我手寫(xiě)的幾道黑橫線了嗎?夾在里面的指令是我們?cè)谇拔闹兴v的指令類型,可以再根據(jù)這張圖對(duì)前文進(jìn)行理解,會(huì)容易得多哦。

舉個(gè)例子,比如加法指令,看到最右側(cè)有兩個(gè)add,分別是I addi和R add,區(qū)別在于一個(gè)是立即數(shù)加法,一個(gè)是寄存器加法。對(duì)應(yīng)到靠右邊的方框中是不是可以看到7位數(shù)字,這就是funct7,中間有3位數(shù)字000,這就是funct3。寄存器指令中的最左側(cè)7位數(shù)字是空著的為0000000,而立即數(shù)指令中最左側(cè)則是12位的立即數(shù)。再看R add下面的R sub,與R add唯一的區(qū)別是不是左邊第二位數(shù)字變成了1?這就是之前所說(shuō)的復(fù)用所需的那一位數(shù)字?,F(xiàn)在是不是能完全和之前所說(shuō)的聯(lián)系起來(lái)了?也沒(méi)那么難對(duì)吧?

剩下的下次再來(lái)吧?還是你們剩下的都能自己看懂了?可以找公眾號(hào)回復(fù)一下,我想看看。


審核編輯:劉清

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

    關(guān)注

    31

    文章

    5425

    瀏覽量

    123545
  • 減法電路
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    8166
  • 指令集
    +關(guān)注

    關(guān)注

    0

    文章

    228

    瀏覽量

    23730
  • RISC-V
    +關(guān)注

    關(guān)注

    46

    文章

    2507

    瀏覽量

    48349
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    RISC-V的未來(lái)應(yīng)走向何方

    半導(dǎo)體行業(yè)正孜孜不倦地推動(dòng)創(chuàng)新,在這個(gè)過(guò)程中,做出正確選擇,正成為芯片成功的關(guān)鍵因素。在眾多操作系統(tǒng)、編譯器、調(diào)試器和其他工具的選項(xiàng)中,開(kāi)放的RISC-V指令集架構(gòu)(ISA)正在加速普及。這種開(kāi)放式ISA賦予了開(kāi)發(fā)者更多自由,使其能夠以開(kāi)源或商業(yè)資源為起點(diǎn),打造專屬的定制
    的頭像 發(fā)表于 04-01 09:30 ?463次閱讀

    中國(guó)開(kāi)放指令生態(tài)聯(lián)盟攜手雄安新區(qū)推動(dòng)RISC-V產(chǎn)業(yè)發(fā)展

    此前,2025年1月7日下午,一場(chǎng)聚焦RISC-V指令集架構(gòu)未來(lái)發(fā)展的高端交流會(huì)議在雄安新區(qū)成功舉辦。本次交流由中國(guó)開(kāi)放指令生態(tài)(RISC-V)聯(lián)盟產(chǎn)業(yè)孵化組的多位核心成員與雄安新區(qū)的
    的頭像 發(fā)表于 01-24 11:22 ?881次閱讀

    若貝集成電路設(shè)計(jì)和RISC-V雙系統(tǒng)平臺(tái)

    RISC-V雙系統(tǒng)平臺(tái)結(jié)合了FPGA的靈活性和RISC-V指令集的開(kāi)放性,為用戶提供了一個(gè)高效、靈活的開(kāi)發(fā)環(huán)境。
    的頭像 發(fā)表于 01-14 09:58 ?597次閱讀
    若貝集成電路設(shè)計(jì)和<b class='flag-5'>RISC-V</b>雙系統(tǒng)平臺(tái)

    RISC-V架構(gòu)及MRS開(kāi)發(fā)環(huán)境回顧

    PowerPC以及現(xiàn)在統(tǒng)治嵌入式市場(chǎng)的ARM。 2. 什么是RISC-V RISC全名Reduced Instruction Set Computer,即精簡(jiǎn)指令集計(jì)算機(jī);V是羅馬字
    發(fā)表于 12-16 23:08

    RISC-V指令集概述

    RISC-V就是RISC的第五代指令集架構(gòu)。而RISC-V目標(biāo)就是“成為一種完全開(kāi)放的指令集架構(gòu),可被任何學(xué)術(shù)機(jī)構(gòu)或商業(yè)組織自由使用”。
    發(fā)表于 11-30 23:30

    關(guān)于RISC-V學(xué)習(xí)路線圖推薦

    一個(gè)號(hào)的RISC-V學(xué)習(xí)路線圖可以幫助學(xué)習(xí)者系統(tǒng)地掌握RISC-V架構(gòu)的相關(guān)知識(shí)。比如以下是一個(gè)較好的RISC-V學(xué)習(xí)路線圖: 一、基礎(chǔ)知識(shí)準(zhǔn)備 計(jì)算機(jī)體系結(jié)構(gòu)基礎(chǔ) : 了解計(jì)算機(jī)的基本組成、
    發(fā)表于 11-30 15:21

    蔣學(xué)剛主任受邀出席RDI生態(tài)·成都創(chuàng)新論壇,并參加《基于RISC-V指令集架構(gòu)的數(shù)字基礎(chǔ)設(shè)施通用要求》標(biāo)準(zhǔn)編

    2024年11月20日,RDI生態(tài)·成都創(chuàng)新論壇·2024將在成都高新區(qū)舉行。論壇以“開(kāi)放合作協(xié)同創(chuàng)新共建共贏”為主題,由工信部中國(guó)電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會(huì)RISC-V工作委員會(huì)指導(dǎo),聚力開(kāi)源生態(tài)技術(shù)
    的頭像 發(fā)表于 11-21 01:06 ?767次閱讀
    蔣學(xué)剛主任受邀出席RDI生態(tài)·成都創(chuàng)新論壇,并參加《基于<b class='flag-5'>RISC-V</b><b class='flag-5'>指令集</b>架構(gòu)的數(shù)字基礎(chǔ)設(shè)施通用要求》標(biāo)準(zhǔn)編

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

    前言 RISC-V是基于RISC精簡(jiǎn)指令集架構(gòu)開(kāi)發(fā)的一個(gè)開(kāi)放式指令集架構(gòu),它是由加州大學(xué)伯克利分校的計(jì)算機(jī)科學(xué)教授Krste Asanovic(克里斯蒂安·阿薩諾維奇)領(lǐng)導(dǎo)的團(tuán)隊(duì)開(kāi)發(fā),
    發(fā)表于 11-16 16:14

    RISC-V指令集位寬的幾點(diǎn)學(xué)習(xí)心得

    在學(xué)習(xí)RISC-V指令集過(guò)程中,指令位寬大多是32位和64的,它并不像其它指令集,還有8位的古老指令集。這估計(jì)也是
    發(fā)表于 10-31 22:05

    英偉達(dá)2024年計(jì)劃出貨10億個(gè)RISC-V內(nèi)核

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

    RISC-V和arm指令集的對(duì)比分析

    RISC-V和ARM指令集是兩種不同的計(jì)算機(jī)指令集架構(gòu),它們?cè)诙鄠€(gè)方面存在顯著的差異。以下是對(duì)這兩種指令集的詳細(xì)對(duì)比分析: 一、設(shè)計(jì)理念 RISC-
    發(fā)表于 09-28 11:05

    ISA ARM 對(duì)比 RISC-V

    ARM和RISC-V同為精簡(jiǎn)指令集RISC)架構(gòu),這意味著它們都基于相似的設(shè)計(jì)理念:通過(guò)簡(jiǎn)化指令集來(lái)提高處理器的效率和執(zhí)行速度。然而,即使同為RI
    的頭像 發(fā)表于 09-10 09:26 ?1482次閱讀

    RISC-V指令集的特點(diǎn)總結(jié)

    開(kāi)源 定義:RISC-V 是完全開(kāi)源的指令集架構(gòu)(ISA),意味著任何人都可以查看、使用、修改以及分發(fā)其設(shè)計(jì),而無(wú)需支付版權(quán)費(fèi)用。 優(yōu)勢(shì):這種開(kāi)源特性促進(jìn)了全球性的創(chuàng)新和合作。 社區(qū)化 定義
    發(fā)表于 08-30 22:05

    RISC-V指令集仿真介紹

    我們有時(shí)需要一種標(biāo)準(zhǔn)的仿真器,這種仿真器獨(dú)立于處理器微架構(gòu),用于模擬處理器在執(zhí)行目標(biāo)應(yīng)用程序時(shí)的各種狀態(tài),包括執(zhí)行結(jié)果,程序流以及CSR。如果當(dāng)前設(shè)計(jì)的處理器在執(zhí)行指定程序時(shí),這三個(gè)指標(biāo)與標(biāo)準(zhǔn)的仿真程序所呈現(xiàn)的結(jié)果不一致,則認(rèn)為處理器設(shè)計(jì)存在問(wèn)題,需要修正。對(duì)于RISCV處理器設(shè)計(jì)來(lái)講,最常見(jiàn)的仿真工具是Spike。本文將著重介紹如何安裝Spike仿真工具。 安裝Spike工具鏈 以下涉及到的安裝步驟都源自兩個(gè)工具鏈的README文件(所以README是個(gè)好東西),經(jīng)作者實(shí)踐后所總結(jié)。 安裝riscv-fesvr 下載riscv-fesvr bash git clone --recursive https://github.com/riscv/riscv-tools.git 設(shè)置RISCV環(huán)境變量 bash RISCV=${HOME}/Software/rv_linux_bare_19-10-17-11-10/bin #riscv工具鏈的路徑 安裝可能會(huì)有用的工具 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 #注意:這些工具并不要求都安裝成功,視后續(xù)需求。此處為保險(xiǎn)措施 創(chuàng)建build文件夾 在riscv-fesvr文件夾下創(chuàng)建新的build文件夾,用于生成編譯 bash mkdir build cd build 配置并生成代碼 bash ../configure --prefix=$RISCV 安裝 bash make install 此時(shí)會(huì)看到大片的編譯過(guò)程,如果沒(méi)有報(bào)錯(cuò),則安裝成功,可以進(jìn)入下一步,否則就要排錯(cuò)并重新安裝。riscv-fesvr工具是安裝spike所必需的工具。 安裝Spike 下載riscv-isa-sim bash git clone --recursive https://github.com/riscv/riscv-tools.git 創(chuàng)建build文件夾 在riscv-isa-sim文件夾下創(chuàng)建新的build文件夾,用于生成編譯 bash mkdir build cd build 配置并生成代碼 bash ../configure --prefix=RISCV --with-fesvr=RISCV 安裝 bash make install 設(shè)置環(huán)境變量 將生成的Spike工具添加到環(huán)境變量中
    發(fā)表于 07-31 23:03

    risc-v的發(fā)展歷史

    RISC-V的發(fā)展歷史可以追溯到2006年左右,當(dāng)時(shí)David Patterson和其他研究者開(kāi)始探索創(chuàng)建一個(gè)開(kāi)放和可擴(kuò)展的指令集架構(gòu)(ISA)。以下是RISC-V發(fā)展的主要里程碑: 一、起源與初步
    發(fā)表于 07-29 17:20
    主站蜘蛛池模板: 日在线视频| 天天干夜啪 | 国产精品秒播无毒不卡 | 天天视频入口 | 最近国语剧情视频在线观看 | 美女扒开腿让男人桶尿口 | 在线观看免费av网站 | 国产三片理论电影在线 | 五月天男人的天堂 | 一级片视频在线 | 欧美一级艳片视频免费观看 | 久久香蕉国产精品一区二区三 | 久久久久久噜噜噜久久久精品 | japanese色系国产在线高清 | 在线网站黄 | 网站在线观看视频 | 欧美尺寸又黑又粗又长 | 欧美视频综合 | 精品视频69v精品视频 | www欧美在线观看 | 免费人成网ww44kk44 | 日日干夜夜操s8 | 国产成人av在线 | 色视频在线免费 | 欧美日韩不卡码一区二区三区 | 在线天堂中文www官网 | 午夜性刺激免费视频观看不卡专区 | 亚洲韩国欧美一区二区三区 | 天天做天天爱夜夜大爽完整 | 最新国产在线播放 | 你懂的免费 | 免费一级欧美片片线观看 | 欧美涩色 | 香港三澳门三日本三级 | 99久久精品免费精品国产 | 1024视频色版在线网站 | 夜夜操综合| 免费a网站| 国产一区二区三区 韩国女主播 | 男女午夜免费视频 | 国产三级精品在线观看 |