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

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

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

3天內不再提示

前ARM工程師批評:RISC-V不完美之處

Q4MP_gh_c472c21 ? 來源:嵌入式ARM ? 作者:嵌入式ARM ? 2020-12-30 09:49 ? 次閱讀

前言

本文最初完成于幾年之前,彼時作者正在 ARM 公司擔任執行核心驗證工程師職位。作者當時的工作深入或圍繞多種處理器核心,而文中提到的觀點深受這些經驗的影響,換句話說,這些觀點存在不同程度的偏見。

作者依舊堅持認為 RISC-V 的設計并不完美,但同時也承認,如果現在需要搭建一個 32 或 64 位的 CPU,他在實現構建時也會從現有工具中受益。

本文主要基于 RISC-V ISA 規范 v2.0,部分已更新至 v2.2。

一些觀點

RISC-V ISA 對極簡主義的追求鉆了牛角尖,它極力強調減少指令數量,規范編碼等等。而這種追求則導致了錯誤的正交性(分支、調用、返回時重復使用同一指令),以及對贅余指令的需求,這些在程序大小和指令數量上都會影響到代碼密度。

以下面的 C 代碼為例:

int readidx(int *p, size_t idx){ return p[idx]; }


簡單的數組索引,非常常見的操作。將其在 x86_64 中編譯:

mov eax, [rdi+rsi*4]ret

或者是 ARM 中:

ldr r0, [r0, r1, lsl #2]bx lr // return

但是在 RISC-V 中需要的代碼則是:

# 很抱歉如果有任何語法錯誤,risc-v 并沒有在線編譯器slli a1, a1, 2add a0, a1, a1lw a0, a0, 0jalr r0, r1, 0 // return

RISC-V 的極簡主義讓解碼器(CPU 前端)變得更簡單,代價則是需要執行更多的指令。然而,相對于拓寬流水線這個難題而言,解碼不規則指令的問題很好解決,主要難點在于確定指令的長度是否一致。x86 的眾多前綴就是個極佳的反面教材。對指令集的簡化不應追求極限。寄存器 + 移位寄存器的內存操作指令是程序中非常常見且簡單的操作,對于 CPU 而言也很容易實現。即使無法直接執行,CPU 也可以相對輕松地將其分步執行,其操作復雜程度遠遜色于融合簡單操作的序列。

CISC CPU 中的“復合”指令,繁復、少有使用且普遍性能低下,而 CISC 和 RISC CPU 通用的“功能”指令則意指結合了少量操作序列并且使用率高、性能高的指令。這二者應當有所區分。

還不錯的部分

幾乎不受任何限制的可擴展性。雖說這是 RISC-V 的賣點,但它同時也是碎片化、不兼容生態系統的罪魁禍首,在管理時還需加倍小心。

調用、返回和寄存器間接分支使用同一指令(JALR)。分支預測需要額外解碼。

調用:Rd = R1

返回:Rd = R0, Rs =R1

間接分支: Rd = R0, Rs≠ R1

(奇怪分支:Rd≠ R0, Rd ≠ R1)

可變長度編碼無法自我同步。x86 和 Thumb-2 中都存在的常見問題,會導致實現和安全性方面的各種漏洞,例如面向返回的編程攻擊。

RV64I 規定所有 32 位值的符號擴展。這一點會導致不必要的上半切換,或者需要對寄存器的上半部分進行特殊調整。建議采用零擴展,在減少切換的同時,通常還可以在已知上半部分為零的情況下,通過追蹤”為零“位來進行優化。

乘法是可選項。考慮到高速乘法器在微型實現中占用的面積不容忽視,創建占用更小,還可以將現有 ALU 廣泛用于多循環乘法的小型乘法器不失為良策。

LR/SC 指令對有限使用子集有嚴格的最終轉發要求。盡管這項限制頗為嚴苛,但對于沒有緩存的小型實現而言有可能會帶來一些問題。

這一點似乎是 CAS 指令的替代品,具體請參照有關該指令的注釋。

FP 粘性位和舍入模式處于同一寄存器中。如果想通過執行 RMW 操作改變舍入模式,則需要對 FP 管道進行序列化。

FP 指令支持的編碼精度有 32 位、64 位和 128 位,唯獨沒有硬件中更為常見的 16 位。

這點很容易修正:我們有免費的字組編碼 2’b10。

更新:v2.2 中添加了十進制 FP 擴展占位符,但仍然沒有半精度占位符。迷惑行為。

FP 寄存器文件中的 FP 值未指定,但可以通過加載 / 存儲觀察到。

仿真器作者要恨死你了。

VM 遷移會將變為不可能。

更新:v2.2 需要 NaN 裝箱更寬的值。

糟糕的部分

沒有條件代碼,只有比較和分支指令。這一點自身沒什么問題,但它意味著:需要編碼一到二個寄存器說明符,導致條件分支中的編碼空間減少。

沒有條件選擇,這一點在高度不可預測的分支中很有用。

加法 / 減法沒有加進位或借位。(即使這樣,這也比 ISA 將 flag 寫入通用寄存器 GPR,然后在結果 flag 上分支要好。)

用戶級 ISA 需要高精度計數器。在實踐中,將這些計數器暴露給應用程序意味著側通道攻擊的好機會。

乘法和除法同屬于一個擴展,無法單獨實現其中之一。相比除法,乘法要簡單許多,而且在大多的 CPU 上很常見。

基礎 ISA 中沒有原子指令。多核微型處理器越來越普遍的今天,LL/SC 類型原子指令也越來越廉價:只需要 1 位 CPU 狀態即可完成最小 CPU 實現。

LR/SC 和更復雜的原子指令同屬于一個擴展。直接限制了小型實現的靈活性。

非 LR/SC 的一般原子指令不包含 CAS 原語

CAS 的設計是為了避免需要一條指令讀取 5 個寄存器的情況,例如:加法器、Cmp:CmpLo,SwapHi:SwapLo。但 LR/SC 用于取代 CAS 的保底進度很可能只會在實現上帶來更高的開銷。

原子指令僅支持 32 位或 64 位操作,不支持 8 位或 16 位。

對 RV32I 而言,想在整數和浮點寄存器文件之間轉換 DP 和 FP,只能通過內存解決。

舉例來說:RV32I 的 32 位 ADD 和 RV64I 的 64 位 ADD 共用同一套編碼,RV64I 又多加了一套 ADD.W 編碼。如此一來,CPU 實現這兩種指令時麻煩了許多,不如直接新增一套 64 位編碼。

沒有 MOV 指令。匯編器對于 MV 的等效指令是:MV rD, rS -> ADD rD, rS, 0。MOV 優化通常由高端處理器,尤其是失序處理器完成。識別 RISC-V 規范的 MV 需要一個 12 位的立即數。

在沒有 MOV 指令的情況下,ADD rD, rS, r0 是對 MOV 不錯的替代。它更易被解碼,而 CPU 通常也會有特殊情況下的邏輯來識別零寄存器。

尤為糟糕的部分

JAL 在本該只是 R1(分支時是 R0)的鏈接寄存器編碼上浪費了 5 比特。

這意味著 RV32I 有 21 位的分支位移(對于諸如瀏覽器等大型應用時,不使用多指令序列或者分支 island 時會不夠用)。

其實是 1.0 版本 ISA 的歷史遺留問題

盡管 RISC-V 在統一編碼上花了大功夫,但加載 / 存儲指令的編碼仍然是不同的(寄存器 vs 立即字段互換)。

似乎寄存器編碼的最終正交性要比兩種高度相關指令的正交性更受歡迎。考慮到地址生成是對時序更為敏感的操作,這種選擇有點奇怪。

寄存器偏移量(Rbase +Roffset)或索引(Rbase + Rindex << Scale)沒有負載。

FENCE.I 意味著指令緩存和前面的存儲區必須完全同步,無論是否有 fence。實現時需要在 fence 上刷新 I,或者通過snoop的方式監視D 和存儲緩存區。

RV32I 中,讀取 64 位計數器需讀取上半部分兩次,并進行比較和分支,以防在讀取操作時下半部分和上半部分發生借位。

通常 32 位 ISA 包含了一個“讀取一對特殊寄存器”的指令來避免這個問題。

架構上沒有定義“提示”編碼空間。提示編碼是指在當前處理器上作為 NOP 執行,但在之后的變量上有操作的編碼。

“NOP 提示”的常見例子是自旋鎖 yield。

更復雜的提示也有實現。即那些對新處理器有明顯副作用的提示,例如 x86 的邊界檢查指令被編碼在提示空間,以便二進制文件保持向后兼容。

責任編輯:xj

原文標題:前ARM工程師批評:RISC-V尤為糟糕的部分!

文章出處:【微信公眾號:嵌入式ARM】歡迎添加關注!文章轉載請注明出處。

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

    關注

    5142

    文章

    19561

    瀏覽量

    315408
  • RISC-V
    +關注

    關注

    46

    文章

    2507

    瀏覽量

    48343

原文標題:前ARM工程師批評:RISC-V尤為糟糕的部分!

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    “開放·連接 ”2025玄鐵 RISC-V 生態大會議程公布!

    2025年2月28日,我們誠邀您參與“開放·連接 ”2025玄鐵 RISC-V 生態大會。與來自全球的行業專家、技術領袖、企業決策者和 RISC-V 資深工程師共赴北京,一同探討技術趨勢、行業洞見及產業未來,齊心共筑
    發表于 02-24 16:25

    ArmRISC-V架構的優劣勢比較

    關于ArmRISC-V的討論涉及多個層面。雖然多種因素共同作用于這些架構的整體性能,但每種架構都有其最適合的幾類主要應用場景。 Arm 長期以來,專有技術往往意味著高昂的許可費用,Arm
    發表于 02-01 22:30

    RISC-V架構及MRS開發環境回顧

    PowerPC以及現在統治嵌入式市場的ARM。 2. 什么是RISC-V RISC全名Reduced Instruction Set Computer,即精簡指令集計算機;V是羅馬字
    發表于 12-16 23:08

    RISC-VARM 架構的區別 RISC-V與機器學習的關系

    在現代計算機架構中,RISC-VARM是兩種流行的處理器架構。它們各自具有獨特的特點和優勢,適用于不同的應用場景。 1. RISC-V架構 RISC-V(讀作“risk-five”)
    的頭像 發表于 12-11 17:50 ?2725次閱讀

    RISC-V能否復制Linux 的成功?》

    。與開源軟件的共同點是,RISC-V也沒有IP版權問題,參與者可以共享其設計成果。簡而言之,RISC-V允許設計工程師進行創新,為他們提供選擇的自由。 SiFive聯合創始人兼首席架構
    發表于 11-26 20:20

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

    工程師共同開發的,以下是一些主要貢獻者: Krste Asanovic:加州大學伯克利分校電子工程與計算機科學教授,RISC-V的創始人之一。 Andrew Waterman:加州大學伯克利分校博士
    發表于 11-16 16:14

    RISC-Varm指令集的對比分析

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

    ISA ARM 對比 RISC-V

    、擴展方式以及目標應用場景等方面有顯著差異。 要深入對比ARMRISC-V的指令集,需要從指令集架構(ISA)的設計原則、擴展模塊、指令的復雜性、特性以及它們的實際性能表現來進行討論。RISC-V作為第五代的
    的頭像 發表于 09-10 09:26 ?1476次閱讀

    加入全球 RISC-V Advocate 行列,共筑 RISC-V 的未來 !

    加入RISC-VAdvocate行列!我們正在尋找來自世界各地的RISC-V愛好者,通過全球推廣和參與,成為支持RISC-V進步的關鍵參與者。作為一名RISC-VAdvocate,您將
    的頭像 發表于 09-10 08:08 ?799次閱讀
    加入全球 <b class='flag-5'>RISC-V</b> Advocate 行列,共筑 <b class='flag-5'>RISC-V</b> 的未來 !

    RISC-V Summit China 2024 青稞RISC-V+接口PHY,賦能RISC-V高效落地

    沁恒在歷屆峰會上分享RISC-V在MCU領域的創新成果,和大家共同見證了本土RISC-V產業的成長。早在第一屆RISC-V中國峰會上,沁恒就公開了青稞RISC-V系列量產芯片的關鍵技術
    的頭像 發表于 08-30 18:18 ?2196次閱讀
    <b class='flag-5'>RISC-V</b> Summit China 2024  青稞<b class='flag-5'>RISC-V</b>+接口PHY,賦能<b class='flag-5'>RISC-V</b>高效落地

    RISC-V Summit China 2024 | 青稞RISC-V+接口PHY,賦能RISC-V高效落地

    裝,針對各式客戶量體裁衣。 07 免費專業開發環境 MRS讓RISC-V落地更省 沁恒重視廣大工程師群體,通過配套、完善RISC-V的開發工具,為客戶提供更舒適的產品體驗。專業的免費開發環境
    發表于 08-30 17:37

    risc-varm哪個更有前途?

    如今risc-v發展迅猛,我想預測將來他與arm誰會更優秀?
    發表于 08-29 21:12

    risc-v的發展歷史

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

    rIsc-v的缺的是什么?

    RISC-V作為一種開源的指令集架構(ISA),自其誕生以來就受到廣泛關注和應用,但它也存在一些不足之處。以下是RISC-V架構目前存在的主要缺點: 1. 性能問題 相對于專用ISA的性能差距:盡管
    發表于 07-29 17:18

    淺析RISC-V領先ARM的優勢

    RISC-V相對于ARM的優勢主要體現在以下幾個方面: 開源與免費: RISC-V是一個完全開源的指令集架構(ISA),其規范公開且可以免費使用。這意味著任何人都可以基于RISC-V
    發表于 06-27 08:45
    主站蜘蛛池模板: 台湾佬自偷自拍情侣在线 | 午夜窝窝| 男人j桶进女人免费视频 | 免费在线亚洲 | 国产一二三区在线观看 | 午夜视频福利在线观看 | 成人欧美一区二区三区小说 | 黄色网址在线免费观看 | 久久青草18免费观看网站 | 国产性较精品视频免费 | 综合啪啪 | 国产三级一区 | 久久午夜影院 | 四虎永久精品免费网址大全 | 欧美第四色 | 色偷偷资源 | 色偷偷亚洲天堂 | 五月花亚洲 | 男女一区二区三区免费 | 亚洲精品久久婷婷爱久久婷婷 | 国产精品视频久久久 | 1024国产看片在线观看 | 色中射 | 欧日韩美香蕉在线观看 | 亚洲经典一区二区三区 | 全免费一级午夜毛片 | 日本在线视 | 1区2区3区| www五月天com | 97射射 | 天天干天天上 | 国产一级特黄aa大片爽爽 | 天天躁日日躁狠狠躁一级毛片 | 久久精品隔壁老王影院 | 男男h全肉耽污 | 四虎影院网 | 久久这里只有精品免费视频 | 免费一级视频在线播放 | 欧美三级色 | 午夜视频福利在线 | 亚洲成人在线播放 |