ARM MIPS RISC V三種架構本質上有何區別?

時間 2021-05-06 11:46:59

1樓:勤勞的電門

ISA大家都說了

還有乙個好像沒人說

他們類似的還有乙個重要原因是

都採用了relaxed memory model這一點和x86區別比較大

2樓:XIVN1987

有乙個比較大的差異似乎沒人提:ARM和MIPS指令都是固定長度的,RISC-V指令是變長的

ARM A64指令集固定32位,這通常被認為是優點,因為簡化了解碼,容易提公升效能

但是隨著ARM往A64裡面塞入越來越多的指令,,恐怕固定長度的缺點也在逐漸顯現

比如ARM為了發力AI計算,加入了SVE指令集擴充套件,,SVE也是ARMv9的主要提公升點,,在SVE指令中已經能感覺到一些指令長度的限制了,比如:

指令中需要編碼Px暫存器,因此目的暫存器和第一源暫存器必須是同乙個,這限制了靈活性

SVE ADD指令中立即數寬度只有8位,如果向量元素是16位,那向量加立即數就要拆成兩條指令完成

如果ARM不想再增加一套指令集的話(現在的Cortex-A處理器需要同時支援A32、T32、A64三套指令集),,A64支援變長指令恐怕在所難免

3樓:嵌入式自我修養

本質上沒啥區別,都是精簡指令集。如果非要說區別,就是商業模式的區別了。

MIPS生態沒做起來,ARM生態最好,RISC-V最open,徹底開放,所以前景最看好。

X86是作業系統屆的Windows

ARM是作業系統屆的Ubuntu

MIPS是作業系統屆的Debian

RISC-V是作業系統屆的Linux

4樓:不知道

幾個回答都泥到點上,不邀自來,拋磚引玉下。

大概2023年吧第一次使用arm,是intel產的strongarm跑206mhz。當時翻看指令手冊印象最深也是本人認為arm最有創意最有特點的是,指令條件執行。通常的處理器都是使用jz,jnz等指令進行條件跳轉,而arm可以根據上條指令的執行狀態選擇忽略或執行下條指令,這樣在很多場合就避免跳轉從而避免流水線被打斷,大大提高了執行速度。

以下介紹幾個和本題無關的幾個得有特點的處理器mcs51,小微控制器有位定址功能

msp430,小微控制器,內部有幾個常用常數暫存器,像一些比如0,1等立即數就不用到記憶體去取了,這玩意還有個很好玩的乘法器是外掛程式的,不在alu裡!

adi的blackfin,二級無開銷硬體迴圈,二級以內迴圈無任何開銷並不打斷流水線

5樓:

2019.7.20重新回答。

要說本質區別,那絕不是很多其它答主說的什麼生態區別,設計思想區別,CISC和RISC的區別之類的,甚至還有答主說沒有本質區別。我就一臉問號了,學過計算機體系結構的都應該知道本質區別是什麼,是指令集的區別。

可能有人覺得,這是廢話,說了等於沒說。但是我認為,題主可能並不知道指令集是什麼,意味著什麼。否則,問題不會這麼問,而是問諸如這三種架構現狀如何、前景如何之類的。

至少,知道指令集相關知識的人會認為,本質區別我已經知道是什麼了。

CPU只認識二進位制編碼,也就是只認識0和1。CPU最主要的功能是計算,可以算加法、減法、與或非等等的計算。也可以做記憶體存數取數的操作。

那麼你要讓CPU計算,你就要告訴CPU你要算什麼東西,這時候就要用機器語言。其實是二進位制串。

不同的體系結構,其實本質區別就在於它們的機器語言不一樣。CPU能識別的機器語言也就是指令集了(這是我簡單說的,不是嚴格定義,嚴格定義還是查課本吧)。所以說,本質區別是指令集不同。

例如,同樣是做一次加法,可能乙個是用00001111,乙個是用11000011,乙個是用10100101,之類的,反正根本就是不一樣的指令。還有一些其它的區別。

那你可以想想,一段為ARM體系結構CPU寫的機器語言,如果讓MIPS體系結構的CPU來執行,結果會怎麼樣。不是無法識別就是識別錯誤,肯定是達不到這段程式預期的效果的。

所以,ARM的CPU只能執行ARM程式,MIPD的CPU只能執行MIPS程式,乙個CPU只能執行用它的指令集來寫的程式。

那麼有答主強調的生態的區別是怎麼回事呢?

比如windows為什麼一度只能在x86的CPU上跑?因為windows是C和彙編寫的,組合語言基本和機器語言完美對應。彙編的那一部分,不同體系結構的機器語言不一樣,組合語言也不一樣。

如果要跑在ARM體系結構的CPU上,顯然要把彙編這一部分用ARM彙編再寫一遍,這個只能由微軟來做,畢竟不開源,除了微軟沒人動的了。而微軟一直不做,那自然就不行了,你總不能把x86版本的拿到ARM上跑的。

可能還不光作業系統,連普通應用軟體都有可能要針對某種具體的體系結構做優化,於是用到組合語言或者機器語言(一般如果是人來寫的話都是用彙編),那麼這種軟體也是只能在一種體系結構上跑的。

也就是說,如果沒人給你RISC-V寫軟體,你RISC-V就沒有軟體可用,畢竟不能拿ARM或者x86的軟體來跑。

於是就產生了生態的問題。

6樓:

不要說RISC裡面的這三種。。。在我看來技術上CISC和RISC也沒什麼本質區別。現在的ISA的區別都不叫區別……

優劣之分就是哪種架構被用得多哪種就「優」——未必代表技術上更好,只是有更多人用而已。有沒有更多人用,要看個人奮鬥,但是個人奮鬥只佔一小部分;更多還是看歷史潮流。

7樓:吳乃江

簡單說指令就是機器語言,指令集就是一款CPU支援的所有機器語言。指令系統誕生之初就有兩種設計思想或者說流派,CISC(複雜指令集)和RISC(簡單指令集),CISC系統複雜龐大8086CPU的指令就有300多條,而大多數RISC只有幾十條指令。x86系列指令集屬於CISC是Intel的專利,其他人在取得Intel的授權前是不能夠使用的。

ARM、MIPS、RISC-V都是屬於RISC,只是前兩個是商業公司的專利產品,他人使用前要取得授權,RISC-V是加州大學伯克利分校以BSD協議分發的開源指令集,任何人可以免費使用,且不禁止商業用途。

8樓:歪睿老哥

都是risc,沒有什麼本質的區別。risc的眾多後代,基因90%都一樣。

邏輯運算都是與或非。

算數運算都是加減乘。

左移右移,要不要迴圈或者算數?

沒事比比大小,比完跳轉下乙個執行,或者不管了直接跳。

讀取存入,都是load,store.

甚至他們都定義了16或32個通用暫存器。

什麼?你有特殊控制暫存器啊,我也定義乙個,比你的還多。

你有特殊指令可以加速?我也有。我還能push和pop.

你支援位運算?這也是高科技,你真是想瞎了心了。

有的只是商業模式的區別。

舉個例子,和英語,法語,德語的區別差不多。

9樓:EE外星人

mips是RISC的開山之作,但是生態沒有起來,ARM還是結合了一些cisc的特點,大流行。RSV是綜合以上特點新開發的,完全開源,但是生態鏈還在路上。

雖然看好RSV,但是矽谷在ARM上已經累計了太多的勞動汗水,只有在中國這個新世界才是RSV的方向。

補充一下,RSV看好的方向是高低兩個方向,低端MCU很快就要火,不過要做工具鏈,開發器的多努力,可能賣工具的先會賺到錢,中間和ARM搞PK的沒戲,高階,做伺服器的也能忽悠到錢,做不做的出來就不好說了,sev的生態鏈實在太窄。

如果只能選三種能力,你最想培養孩子哪三種?

巴喳族人 我最想 想想又能怎樣?想想就能把事情做好了嗎?我能夠培養孩子怎麼能力?想到,還要做到了。為孩子成長 賦能 做到了,家長成長在先,這是重點。分享自己,用自己擁有的能力,感覺最有價值 最自信的能力專案,接受挑戰,接納他人的不同資訊而提公升自己,產生相互的影響力。換句話,自己擁有的能力專案,傳承...

vue,angular,avalon這三種MVVM框架之間有什麼優缺點?

fans 還是angular,雖然2.0改得讓我有點矇圈,但仍推薦。任何乙個開源專案,長久穩定的更新維護才是最最最重要的,即使有缺陷,在漫長的生命週期中也可以彌補。從事這行太久了,被太多的太監包傷了心。 易瀟 最近正好在看 Vue.js 說乙個 Vue.js API 設計的槽點 霧 varvm ne...

LR,gbdt,libfm這三種模型分別適合處理什麼型別的特徵,為了取得較好效果他們對特徵有何要求?

GBDT容易因為訓練集中個別樣本的某個稀疏feature與y的偶然關係,擬合到雜訊 用某一特徵將訓練集分至類別單一的葉子結點,無法再分 LR每次隨機選擇batch個樣本對w優化,特徵 0 xi 則梯度 0,實則是用特徵i不為0的樣本對wi梯度下降。如果特徵稀疏,則下降次數也少,不容易過度擬合。 yy...