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

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

3天內不再提示

如何使用RISC-V創(chuàng)建自定義處理器

電子設計 ? 來源:EDN ? 作者:Rich Quinnell ? 2021-04-14 15:55 ? 次閱讀

RISC-V(風險五)基金會將開源自由與標準化的好處融合在一起,引起了業(yè)界的廣泛關注。它的內核規(guī)格穩(wěn)定且一經批準就可以使用,軟,硬CPU內核以及芯片,開發(fā)板和工具已在市場上出售,并且主要公司已開始采用RISC-V來替代其自定義體系結構。該體系結構吸引人的一個關鍵特征是,CPU開發(fā)人員可以在不犧牲為基本標準創(chuàng)建的工具和庫的適用性的情況下,使RISC-V功能適應其需求。適應的關鍵在于了解RISC-V的模塊化指令集體系結構。

RISC-V最初是UC Berkeley的簡化指令集計算(RISC)設計工作的第五次迭代,但隨后迅速地從學術研究演變成旨在重新定義電子行業(yè)處理硬件設計方法的運動。當前,系統(tǒng)開發(fā)人員必須選擇通常針對特定應用程序空間進行了優(yōu)化的專有CPU架構,或者設計自己的CPU架構。但是,通過追求自己的設計,開發(fā)人員放棄了已建立的CPU開發(fā)的廣泛支持生態(tài)系統(tǒng)。有一個折衷方案:采用專有的CPU架構來獲得自定義功能,同時保留許多支持生態(tài)系統(tǒng)。不幸的是,由于專有架構的高昂架構許可費用,這種折衷對于許多設計團隊而言是不切實際的。

RISC-V計劃試圖為設計人員提供一種替代方案,該方案允許定制和創(chuàng)新,同時保留許多標準化的好處。為此,RISC-V Foundation維護并推動了模塊化,開源RISC-V處理器指令集體系結構(ISA)的社區(qū)發(fā)展,該體系結構旨在滿足從嵌入式系統(tǒng)到服務器場以及其他應用的需求。該體系結構的規(guī)范可以免費下載,開發(fā)人員可以自由地基于ISA實施設計,而無需支付許可費用。他們也沒有義務像其他開源計劃一樣將其設計提供給其他人。ISA是開源的。如果開發(fā)人員愿意,則各個設計,硬件體系結構和自定義項可以保持專有。

該倡議取得了可觀的勢頭?,F(xiàn)在有商業(yè)和開放源代碼的RISC-V芯片和內核可用。公司如SiFive,GreenWaves技術,以及Microsemi的對他們的RISC-V實現(xiàn)開發(fā)板。開發(fā)工具,軟件庫和操作系統(tǒng)端口(包括Linux)都是當前RISC-V支持生態(tài)系統(tǒng)的一部分。不過,要充分利用對定制設計的所有支持,首先要仔細研究RISC-V ISA的結構。

基本規(guī)格

定義RISC-V ISA的兩個關鍵文檔是:用戶級ISA規(guī)范和特權ISA規(guī)范。在這些定義中,既定義了基本需求,又定義了許多標準化的模塊化擴展。標準擴展是模塊化的,因為在CPU設計中實現(xiàn)任何給定的標準擴展都不會干擾任何其他標準擴展的實現(xiàn)。一些擴展可以在其他擴展的基礎上構建,但是,要求將基本擴展實現(xiàn)為所需擴展的一部分。

總體設計基于寄存器,需要進行所有操作的31個通用寄存器,并具有對通用存儲空間的加載和存儲訪問。已經為32位,64位和128位地址空間定義了指令集,并定義了額外的減少寄存器計數(shù)的32位指令集,專門針對嵌入式系統(tǒng)設計的較小門數(shù)實現(xiàn)。除了存在用于操縱更長的字長以及與地址空間匹配的寄存器大小的附加指令外,這些變體的指令編碼都是相同的。

圖1以示意圖形式顯示了核心規(guī)范和標準擴展如何相互作用。RISC-V基金會現(xiàn)在凍結了許多規(guī)范,以確?;谶@些規(guī)范的實施將隨著ISA的發(fā)展而保持有效。這確保了今天編寫的軟件將永遠在類似的RISC-V內核上運行。某些擴展名仍處于草稿模式,因此可能會發(fā)生變化。保留了一些,即等待未來發(fā)展的占位符。例如,凍結了32位和64位基本整數(shù)ISA,而128位和嵌入式變體仍處于草稿形式。

基本整數(shù)ISA(I)是構建所有其他整數(shù)的基礎,并且在任何實現(xiàn)中都必須存在。除基本整數(shù)ISA之外,所有標準RISC-V實現(xiàn)都必須至少包括Privileged ISA的計算機級別部分;否則,不執(zhí)行任何操作。主管級別(S)和管理程序部分是標準擴展。但是,特權ISA的定義方式是,開發(fā)人員可以根據(jù)需要實現(xiàn)特權代碼執(zhí)行的自定義形式,而又不影響基本整數(shù)ISA。

o4YBAGB2noOAabLKAAC_5vztIvQ781.png

圖1RISC-V ISA構成了指令的模塊化集合,這些指令可以在CPU設計中實現(xiàn)而不會互相干擾。

通過標準擴展增強基本功能

基本整數(shù)(I)和計算機級特權ISA提供了基本的通用CPU所需的所有功能。但是,開發(fā)人員可以通過向ISA添加擴展來增強此基本功能。自定義擴展總是可能的,但是RISC-V Foundation中的技術任務組管理著標準擴展,確定它們對設計界具有廣泛的吸引力,并且其說明與其他標準擴展不沖突。因此,開發(fā)人員可以在設計中自由地包含他們所需的任何標準擴展,而無需擔心指令編碼中的沖突。這些標準擴展包括:

  • M –將兩個整數(shù)寄存器中保存的值相乘和除的指令(凍結)
  • A –原子讀寫修改內存以支持同步(凍結)的指令
  • F,D和Q –符合IEEE 754-2008算術標準的(F)單精度,(D)雙精度和(Q)四精度浮點計算的說明。每個精度的擴展名取決于存在的較低精度的擴展名。(凍結)
  • G –包含基本整數(shù)規(guī)范(I)以及M,A,F(xiàn)和D標準擴展名的實現(xiàn)如此流行,以至于基金會將集合定義為G,并將G配置設置為編譯器的標準目標。開發(fā)中的工具鏈。(凍結)
  • V –向浮點擴展添加矢量指令的指令(草稿)
  • L –十進制浮點計算說明(保留)
  • B –比特級操作說明(保留)
  • N –處理用戶級中斷的指令(草稿)
  • P –支持打包的單指令,多數(shù)據(jù)指令的擴展(保留)
  • T –支持事務性內存操作的指令(保留)
  • J –支持使用動態(tài)翻譯語言的擴展(保留)
  • C –支持壓縮指令執(zhí)行?;菊麛?shù)(I)規(guī)范要求指令字長32位,并在內存中的32位邊界上對齊。實施C標準擴展提供了常見操作的16位編碼,并允許CPU設計在自由混合的32位和16位邊界上進行對齊,從而將代碼大小減少了25%到30%??梢杂萌魏位菊麛?shù)位寬度以及任何其他標準擴展來實現(xiàn)。(凍結)
  • S –特權ISA的管理員級別擴展(草稿)

像用戶級ISA一樣,特權ISA使設計人員能夠選擇要包含的復雜程度。該規(guī)范定義了兩個ISA集:機器級別和管理員級別,以及保留占位符以獲取支持虛擬機管理程序功能的指令。反過來,這些指令集允許開發(fā)人員最多支持三個特權級別,代碼可以在這些特權級別上運行。單一特權級別(機器級別)意味著所有正在運行的代碼都具有對系統(tǒng)資源的完全訪問權限,例如在簡單的嵌入式系統(tǒng)中運行的單個應用程序。具有兩個特權級別,同時需要計算機和主管ISA指令,它們支持將某些系統(tǒng)資源與應用程序代碼隔離,以增強軟件安全性并允許操作系統(tǒng)訪問多個并發(fā)應用程序。

pIYBAGB2npSAL8kvAAKP4YauorM148.png

圖2這兩個特權ISA級別可以一起支持許多軟件配置,包括一個簡單的應用程序執(zhí)行環(huán)境(AEE),一個具有管理者執(zhí)行環(huán)境(SEE)的操作系統(tǒng)上的多個應用程序以及一個具有管理程序的操作系統(tǒng)。(來源:RISC-V基金會)

通過標準擴展和特權級別的所有可能組合,簡單的名稱“ RISC-V”不足以表示ISA的實際硬件實現(xiàn)。為了闡明程序員在采用給定的硬件實現(xiàn)時可以訪問哪些指令,基金會設計了一種核心命名術語。名稱包括三個部分:使用的基本規(guī)范(RV32I,RV64I等),添加的標準擴展名(M,F(xiàn),A等)以及每個元素的版本號(1.2版等為1p2)。 ,如圖3所示。在許多情況下,為簡單起見,可以省略版本號(RV32IC,RV64G等)。

pIYBAGB2nqqAZmy9AAEg-bxOiCg876.png

圖3RISC-V實現(xiàn)的名稱編碼了對其支持的指令集的完整描述。

命名約定也允許標識自定義的擴展名?;菊麛?shù)ISA的擴展使用開發(fā)人員選擇的名稱,并具有Xname形式,并帶有適當?shù)陌姹咎枴H绻麛U展名涉及特權ISA的管理員級別,則該表單為SX名稱。

超越標準擴展

即使具有模塊化標準擴展提供的設計靈活性,RISC-V標準也無法提供開發(fā)人員可能期望的許多指令增強功能。例如,考慮一個經常需要對兩個16位整數(shù)進行四舍五入取平均值((r1 + r2)/ 2)的應用,例如兩次ADC測量。使用基本整數(shù)ISA,所需的平均計算將需要執(zhí)行兩條指令:整數(shù)加法和算術右移(有效執(zhí)行整數(shù)除以2,向下舍入)。因此,在一個步驟中執(zhí)行兩項操作的自定義指令可以加快應用程序的軟件執(zhí)行速度。如果您采用ISA的標準指令格式,則RISC-V ISA可以輕松地添加此類指令。

RV32I基本指令集遵循四種基本格式,如圖4所示。R型指令從兩個源寄存器(rs1和rs2)獲取值,并以某種方式(加,異或等)將它們組合以形成一個值,該值將存儲在目標寄存器(rd)的第三個寄存器中。I型指令將源值(rs1)和在指令本身中編碼的12位值(imm)合并并存儲在目標寄存器(rd)。加載指令使用I型格式,結合源值和立即值來確定存儲器地址,并將其內容傳輸?shù)侥繕思拇嫫?。S型指令從一個源寄存器獲取值,以將第二個寄存器的內容和立即值(組合在一起時)所指向的地址存儲在內存中。S型指令的B型變體具有相同的格式,但是使用這兩個值來計算條件分支指令的地址。U型指令允許使用大于12位的立即數(shù),而J型變量則使用立即數(shù)執(zhí)行無條件跳轉。

pIYBAGB2nreAKgaFAAEiO972fY4063.png

圖4RISC-V指令的四種基本格式。(來源:RISC-V基金會)

這些指令格式的定義提供了一些有關開發(fā)人員如何輕松地將自定義指令添加到組合中的線索。所有指令的低位都包含一個7位操作碼,除U型格式外,所有指令的第12位至第14位都具有功能代碼(funct3)。R型指令具有第二個功能代碼(funct7)。)在第25到31位。當涉及目標寄存器地址時,它總是在第7到11位,第一個源寄存器的地址總是在第15到19位,另一個源寄存器在第20到24位。這種一致性代碼和寄存器指針的位置意味著如果您可以將新指令映射到這些基本格式之一,并且您具有符合要求的RISC-V設計,則用于實現(xiàn)該指令的硬件設計幾乎已經完成。大部分新操作(例如指令解碼和寄存器數(shù)據(jù)訪問)都在現(xiàn)有設計中,您可以使用它。

為了說明平均示例,請考慮圖5中的流程圖?,F(xiàn)有的用于整數(shù)的RV32I ADD和SUB指令遵循R型格式,并且具有完全相同的操作碼(0110011)和funct3(000)代碼值,僅在它們的funct7代碼上有所不同(0000000與0100000)。沒有其他RV32I指令使用該操作碼和funct3組合,從而留下了120多個可能的funct7可用于對新指令進行編碼的值,而無需遵循任何標準指令。這些標準指令的可能實現(xiàn)方式是顯示來自兩個源寄存器的值進入算術單元,該算術單元(取決于位指令30)將這些值相加或相減,然后將結果傳遞給目標寄存器。

pIYBAGB2nvOAQA10AAML9JvxWrc224.png

圖5對標準RISV-V實現(xiàn)的修改,以添加兩個新指令

添加新的平均指令只需要對該硬件進行最少的更改。例如,可以通過從指令解碼邏輯中提取指令位25并使用它來命令在算術單元之后插入的一組新的多路復用器來完成此操作。該位使多路復用器將原本標準的ADD或SUB結果右移一位,然后再將其傳送到目標寄存器。現(xiàn)在,該設計將實現(xiàn)ADD和SUB以及兩個新指令:平均值[[rs1+rs2/ 2]和平均差[[rs1-rs2/ 2] / 2],僅需少量額外的門。這種自定義擴展可圍繞現(xiàn)有的指令編碼工作,稱為“棕場擴展”。

指令擴展的機會比比皆是

RISC-V為棕地擴展提供了許多機會。RV32I基本ISA通過利用3位funct3和7位funct7值定義主要指令類型的次要變化,僅使用可用的128個(7位)主要操作碼中的11個來定義其47條不同的指令。大多數(shù)標準擴展和更長的基整數(shù)變體(RV64I,RV128I)僅需要幾個附加的主要操作碼。這為編碼新的Brownfield擴展指令留出了足夠的空間。只有壓縮指令(C)標準擴展才添加了大量獨特的指令代碼,以說明其指令長度的許多變體。但是,這也已經以最小化操作碼需求的方式實現(xiàn)。

下圖(圖6)顯示了在具有G標準擴展名的32位,64位和128位寬基本整數(shù)實現(xiàn)中可用的未定義主要操作碼,它們被認為是開發(fā)人員可用來構建的最常見配置?;饡⒈苊庠趯淼娜魏螛藴蕯U展中使用其中一些,以幫助確保開發(fā)人員其設計將與此類擴展兼容。其他保留給將來的標準擴展使用以及預期的128位基本整數(shù)標準使用,但對于不關心避免將來可能出現(xiàn)的不兼容問題的開發(fā)人員來說,它們是可用的。

o4YBAGB2nwmAT7UwAANJ7Q2n2js625.png

圖6可用的RISC-V主要操作碼圖

對于希望在不考慮所有標準擴展的情況下為基本整數(shù)(I)規(guī)范創(chuàng)建自定義擴展的開發(fā)人員來說,機會甚至更多。例如,RISC-V ISA定義了其所有基本整數(shù)(I)和大多數(shù)標準擴展指令,其編碼的兩個最低有效位(LSB)設置為x11。僅壓縮(C)標準擴展名定義了將這些位設置為x00,x01或x10的指令。然后,不需要C標準擴展的開發(fā)人員可以隨意使用其所需的LSB位模式來定義指令。這為它們提供了三個30位指令編碼空間,可在其中進行播放而不會損害基本整數(shù)ISA或任何其他標準擴展。

RISC-V計劃的主要目標是允許創(chuàng)新和定制,而不會造成正在成長的生態(tài)系統(tǒng)的過度分散。在擴展基本體系結構時遵守ISA準則和要求的開發(fā)人員可以幫助確保達到目標。

Rich Quinnell是AspenCore網絡工程師,作家和全球執(zhí)行編輯。

編輯:hfy

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

    關注

    31

    文章

    5275

    瀏覽量

    119678
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10780

    瀏覽量

    210512
  • 操作系統(tǒng)

    關注

    37

    文章

    6620

    瀏覽量

    123045
  • RISC-V
    +關注

    關注

    44

    文章

    2181

    瀏覽量

    45906
收藏 人收藏

    評論

    相關推薦

    如何在RISC-V處理器上使用FreeRTOS?

    RISC-V指令集體系結構(ISA)易于擴展,并且沒有指定關于特定RISC-V微控制或片上系統(tǒng)(SoC)實現(xiàn)的所有內容。因此,F(xiàn)reeRTOS RISC-V移植也是可擴展的-它提供了
    發(fā)表于 11-29 15:54

    為什么選擇RISC-V?

    RISC-V是一種開放式ISA(指令集體系結構),為處理器體系結構的創(chuàng)新開創(chuàng)了新紀元。RISC-V基金會由325多家成員公司組成。這是該技術的主要優(yōu)勢。軟件架構師/固件工程師/軟件開發(fā)
    發(fā)表于 07-27 17:38

    學習RISC-V入門 基于RISC-V架構的開源處理器及SoC研究

    Waterman、Yunsup Lee決定設計一種新的指令級架構,并決定以BSD授權的方式開源,希望借此可以有更多創(chuàng)新的處理器產生、有更多的處理器開源,并以此降低電子產品成本[2]。RISC-V自2014年
    發(fā)表于 07-27 18:09

    請問RISC-V自定義指令如何保持軟件的兼容性?

    請問RISC-V自定義指令如何保持軟件的兼容性?
    發(fā)表于 06-17 07:51

    RISC-V是什么?如何去設計RISC-V處理器?

    RISC-V是什么?有哪些特點?如何去設計RISC-V處理器?
    發(fā)表于 06-18 09:24

    RISC-V開源處理器核介紹

    本期文章目錄一個小型RISC-V開源處理器核介紹!#SOC#FPGA#RISC-V點擊閱讀數(shù)字積木從零開始寫RISC-V處理器(超詳細)#
    發(fā)表于 07-23 09:42

    如何使用J-Link和Embedded Studio讀寫RISC-V處理器的CSR?

    在對RISC-V處理器進行調試時,就很方便了。不論是標準的CSR,還是廠商自定義的CSR,只需要給出它的地址即可實現(xiàn)讀或寫操作。在此之前只能通過IDE的調試系統(tǒng)查看標準的CSR,而自定義
    發(fā)表于 08-25 15:51

    RISC-V IDE MRS使用筆記(六):新建文件時使用自定義文件頭

    RISC-V IDE MRS使用筆記(六):新建文件時使用自定義文件頭MRS新建文件時,用戶可以選擇創(chuàng)建空白文件,也可以使用預置的自定義文件模板來新建對應格式的文件。同時,用戶還可自由
    發(fā)表于 12-06 14:30

    RISC-V是通用RISC處理器還是可定制的處理器?

    隨著這些年的發(fā)展,RISC-V的受重視程度與與日俱增。這主要因為它是免費的、靈活的,并且速度很快。這使RISC-V成為許多開發(fā)人員的安全便捷選擇。但是您會認為RISC-V是通用RISC
    的頭像 發(fā)表于 11-17 16:11 ?3438次閱讀

    Codasip采用Imperas技術來強化其RISC-V處理器驗證優(yōu)勢

    RISC-V是一種模塊化架構,它可提供由許多不同基本指令、標準可選擴展項和自定義指令構成的組合,這引起了業(yè)界對RISC-V實現(xiàn)方法和碎片化風險的擔憂。
    發(fā)表于 11-25 14:24 ?1318次閱讀
    Codasip采用Imperas技術來強化其<b class='flag-5'>RISC-V</b><b class='flag-5'>處理器</b>驗證優(yōu)勢

    如何看待RISC-V SoC設計中自定義擴展的指令集架構

    談論配置基本處理器或添加自定義擴展以解決片上系統(tǒng) (SoC) 中的硬件-軟件設計權衡并不是什么新鮮事。這一直是 RISC-V 社區(qū)所支持的價值主張的關鍵部分,發(fā)布了許多信息并從中受益,例如
    發(fā)表于 07-18 15:38 ?2022次閱讀
    如何看待<b class='flag-5'>RISC-V</b> SoC設計中<b class='flag-5'>自定義</b>擴展的指令集架構

    RISC-V的 CPU 驗證挑戰(zhàn)

    RISC-V 正受到整個半導體行業(yè)的關注。它提供了一個開源解決方案的誘惑,任何人都可以利用它來創(chuàng)建自己的 CPU 或自定義加速。
    的頭像 發(fā)表于 07-27 17:21 ?2151次閱讀
    <b class='flag-5'>RISC-V</b>的 CPU 驗證挑戰(zhàn)

    處理器使開發(fā)人員能夠實現(xiàn)自定義指令并添加加速

    Bluespec 宣布推出新的MCUX RISC-V處理器,使開發(fā)人員能夠輕松實現(xiàn)自定義指令,并為FPGA和ASIC添加加速。MCUX是Bluespec的MCU
    的頭像 發(fā)表于 07-04 11:05 ?539次閱讀

    Out項目之增強RISC-V處理器性能的自定義硬件模塊

    電子發(fā)燒友網站提供《Out項目之增強RISC-V處理器性能的自定義硬件模塊.zip》資料免費下載
    發(fā)表于 07-11 10:48 ?0次下載
    Out項目之增強<b class='flag-5'>RISC-V</b><b class='flag-5'>處理器</b>性能的<b class='flag-5'>自定義</b>硬件模塊

    RISC-V自定義計算 – 構建您的抱負

    RISC-V自定義計算 – 構建您的抱負演講ppt分享
    發(fā)表于 07-14 17:15 ?0次下載