基於RISC V的CPU可以做到彼此完全互相相容嗎?

時間 2021-05-06 23:30:32

1樓:幸福渠水到俺村

RISC-V屬於模組化的指令集,你可以為CPU所要面對的領域選擇模組的組合,如嵌入式CPU可以僅選擇16位壓縮指令集,或者基本的32位整數指令集(不含乘除),不使用虛擬位址等。一般情況下,具有不同指令集的CPU是無法直接二進位制相容的,因為指令集本身就是一種二進位制編碼的集合。指令集沒有的指令,意味著CPU在硬體上沒有實現該指令,解碼器不認識該指令,會直接產生異常,導致程式終止。

x86和ARM等會經常推出擴充套件指令集,但是會保持"向前相容",就是只加不減。而RISC-V過於自由,導致可以任意定製,可加可減,因此,不同公司製造的RISC-V處理器很可能就是兩個完全不同的指令集,像ARM和MIPS的差別一樣。在這種情況下,要實現互相相容,只能靠軟體做實時的二進位制翻譯。

會造成嚴重的效能損失。

當然,如果所有公司都能保持一套基礎,大家公有的指令集定義,在此基礎上各自擴充套件指令集,那麼,可以通過指定鏈結庫的路徑來相容。就是作業系統包括很多種不同指令集的動態鏈結庫,編寫程式時,需要擴充套件指令集的功能,就可以從庫函式裡呼叫。intel的MKL數學庫差不多就是這樣的。

lib資料夾下有多種不同SIMD指令的實現。不同指令集處理器在使用BLAS和LAPACK做數學計算的時候,就能夠從這裡呼叫不同的動態鏈結庫。

個人不是很看好硬體上搞什麼自由開源。碎片化會直接影響生態,RISC-V這種處理器只適合那種Domain Specific Architecture,其實就是嵌入式的處理器。

2樓:xim1999

Q: 乙個呼叫了擴充套件指令集的應用能否在只有基本指令集的CPU上執行?

A:不行,硬體沒有實現該指令的話其行為不可預期。

Q:是否存在某種機制(編譯時或執行時),將擴充套件指令集轉譯成多條基本指令集的組合?

A:可以存在。之前ARM有些處理器沒有硬體乘法、浮點單元,通過軟體上模擬一樣可以算乘除法和浮點數,從直觀上說就是將一條不支援的指令拆成了多條基本指令組合。

沒有硬限制阻止RISC-V處理器採用同樣方式處理非基本指令能實現的功能。

基於MIPS指令集的cpu能執行linux系統嗎?

醉臥沙場 Linux是少有的還支援MIPS體系結構核心,而且還在持續更新。你可以通過gcc交叉編譯乙個MIPS體系結構的核心,應用層軟體包當然更沒問題。如果你不想自己組裝系統的話好像fedora,debian以前支援過mips體系結構,不知道現在還支不支援,官方如果更新慢的話找找第三方沒準有人還在維...

cpu是怎麼做到越來越快的?

幸福渠水到俺村 第乙個是工藝,工藝進步,能夠整合越來越多的電晶體,同時器件的延時會下降。可能以前有些邏輯設計達不到時序的要求,或者因為面積成本的原因沒有採用。新工藝下可能就可以達到要求。CPU設計是乙個整體,微架構,數字前端和工藝相關數字後端往往不能割裂。第二是開發周期的問題。晶元產品更新換代的速度...

2000元可以買到什麼好的cpu,顯示卡,主機板,記憶體條。1500元的呢?

不想取名 2000元cpui710700 i5 10400f 顯示卡嘛1660super 主機板那就多了 2000的主機板太多了 1500的別說了顯示卡很少能買,CPU把上面的cpu降成9代 主機板還多一點 你猜唄 CPU這貨不追求最新的話我都比較傾向於二手的。能省一大筆錢呢!我去年淘的寶貝如下 扣...