<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • RISC-V 的原子擴展如何讓你具有了出色的位操作能力

    發布時間:2022-4-14 10:52    發布者:eechina
    關鍵詞: RISC-V , 原子擴展
    來源:Digi-Key
    作者:Bill Giovino

    RISC-V 架構的使用量正滾雪球般地迅速增長,而且有充分的理由相信,這種架構在業內的影響力在逐步擴大。

    除了內核架構及其真正的精簡指令集架構 (ISA) 外,該架構還通過一系列標準化擴展得到了增強 (圖 1) 。例如,按照所示擴展列表,將支持單精度浮點和壓縮指令的 32 位 RISC-V 內核 (RV32) 命名為 RV32FC。


    圖 1:RISC-V ISA 通過一系列標準化指令擴展得到了增強,用內核名稱后的一個字母后綴表示。(圖片來源:RISC-V.org)

    對于許多人工智能 (AI)、機器學習 (ML) 應用以及先進的嵌入式系統,四個最必要的擴展是整數乘除 (M) 、原子指令 (A) 、單精度浮點 (F) 和雙精度浮點 (D) 。然而,不是把內核指定為 RV32MAFD,而是把這些都歸入 G 后綴,如 RV32G。

    關于各種擴展和 RISC-V 的更多信息,參見 Digi-Key 在EDU 網站上發布的 RISC-V 電子書。

    就我個人而言,由于我對處理器的最初經驗是在深度嵌入式系統方面,我更傾向于密切關注架構對數據存儲器的“讀改寫位操作”的支持。對于這些應用,設置和清除外設寄存器和信號系統的位是很常見的事情。如果沒有原生位操作指令,內核需要把數據存儲器位置的內容復制到一個內核寄存器,分別使用 OR、AND 或 XOR 指令來設置、清除或切換位,然后把結果仍存儲在數據存儲器位置。這不僅需要額外的時間,而且在某些情況下,我看到有些嵌入式控制應用的代碼膨脹高達 20%。

    對于有些應用來說,代碼膨脹和性能下降是可以接受的。然而在執行這三條指令時,一個中斷就能粗暴地將程序控制權從操作中移除,甚至更糟的是,多處理器系統中的另一個內核可能會從同一內存位置讀取數據。禁用中斷或鎖定存儲器以確保這些事件不會破壞數據存儲器,這要求另外的指令和可能會造成性能問題的復雜情況。

    Arm 試圖通過實施“位綁定”來解決這些問題,這種方法對簡單的位操作有效。然而在我看來,RISC-V 已經實施了一種更巧妙、更靈活的解決方案。

    為什么 Atomic 擴展如此巧妙

    RISC-V A(原子)擴展支持兩種操作,一種是 Load-Reserved/Store-Conditional 指令(本文將不予討論);另一種是二進制/位操作指令,可實現對數據存儲器的簡單位操作。雖然 RISC-V B 位操作擴展支持一系列復雜的位控制指令,但 Atomic 擴展并不只是針對多處理器系統。它也有助于那些必要的位操作需求比較簡單的較小嵌入式系統。例如,Seeed Technology 的 114991684 雙核 64 位 RISC-V 模塊就屬于這種系統。該系統包含兩個 RV64GC 內核。這兩個內核需要很好地協調工作并共享數據 SRAM。

    RISC-V A 擴展原子存儲器操作 (AMO) 的格式見圖 2。


    圖 2:RISC-V 的 AMO 指令格式僅需一條指令即可支持對數據存儲器進行原子二進制操作。(圖片來源:RISC-V.org(通過 Bill Giovino 增強))

    AMO 是一條強大的“讀改寫”指令,只需一條指令即可支持直接在 rs1 中指向的數據存儲器上進行各種不同的二進制操作。參照圖 2,該操作加載 rs1 中數據存儲器地址位置的內容,并將該值存儲在寄存器 rd 中。然后用 rs2 中的值對 rd 值進行二進制運算,并將結果保存回 rd 中,保存回在 rs1 的數據存儲器地址位置。

    所支持的二進制操作有 OR(位設置) 、AND(位清除) 和 XOR(位切換) 。這允許直接在數據存儲器上對一個或多個位進行原子位操作。這也防止了兩個 RV64GC 內核同時使用同一個存儲器地址時出現存儲器沖突的問題。在配置存儲器中的外設寄存器時,這對小型嵌入式應用極為有用,并能簡化旗語標操作。

    RISC-V AMO 還支持整數最大值、整數最小值和交換。此外,還支持允許直接進行二進制加法的二進制 ADD,包括直接增加數據存儲器中的計數器值。

    RV64 內核同時支持 32 位和 64 位操作。對于 RV64 的位操作,重要的是它只對 64 位數據進行操作,因為該操作將對放置在 rd 中的 32 位數據進行符號擴展。

    總結

    RISC-V ISA 是第一個敢于挑戰 Arm ISA 的嚴肅競爭者。它的 ISA 擴展提供了一種標準化方法,通過能夠以經濟實惠的方式提升應用性能的指令來增強內核。我尤其對可選的 Atomic 擴展感興奮。

    雖然對于多處理器系統來說很有用,而且幾乎是必須的,但原子擴展也是一種直接在數據存儲器上進行位操作控制的有效方法。與許多現有的架構相比,這種架構優勢顯著——減少代碼長度,提高性能。
    本文地址:http://www.portaltwn.com/thread-787595-1-1.html     【打印本頁】

    本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
    您需要登錄后才可以發表評論 登錄 | 立即注冊

    廠商推薦

    • Microchip視頻專區
    • Dev Tool Bits——使用MPLAB® Discover瀏覽資源
    • Dev Tool Bits——使用條件軟件斷點宏來節省時間和空間
    • Dev Tool Bits——使用DVRT協議查看項目中的數據
    • Dev Tool Bits——使用MPLAB® Data Visualizer進行功率監視
    • 貿澤電子(Mouser)專區

    相關視頻

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷