當前位置: 華文問答 > 數位

ARM架構怎樣設計才能在指令執行效能上超越X86架構?

2019-11-20數位

隨便寫點:

都什麽年代了,還討論精簡指令集,x86架構內部也是精簡指令集的,討論這個沒意義。

ARM的低功耗的一個原因是減少了硬體層面上對cache的一致性的保護,這樣可以節省晶體管數量。很多人把晶體管數量當做低功耗的原因,其實是弄錯了,晶體管數量少是結果,原因是ARM精簡了很多設計(或者,叫偷工減料)

在這個連結裏:https:// en.wikipedia.org/wiki/M emory_ordering 有一個圖:

裏面的"Y"越多,意味著編寫軟體的時候需要的額外的指令就越多,這些指令就是要手工維護記憶體數據一致性的。

對於x86的32和64位元架構來說,reorder的動作最少,所以在Intel和AMD的CPU上,編寫作業系統編寫驅動最容易,而對於ARM來說,需要大量的額外指令去重新整理和同步cache,這對於軟體來說非常不友好,也造成了額外的開銷。

一個典型的例子就是,對於DMA操作來說,x86架構對於細節都做了隱藏,而ARM則需要額外指令通知硬體做重新整理,否則數據就可能不一致,這對於IO操作來說非常不友好。

因為底層硬體設計就是這樣的,除非把ARM推倒重來。網上的很多跑分軟體並不實際做IO操作,單純比較CPU的算力是沒意義的,一個正常的軟體,都需要給外設交換數據,這方面ARM對於x86而言,效能上沒有優勢。

單純的比較單核的算力或者IPC毫無意義,普通使用者不是拿CPU來搞科學計算的,絕大多數使用者的套用都是有大量IO操作的,IO介面的設計才會直接影響到使用者體驗,道理就類似於:升級硬碟到SSD遠比升級CPU效果更明顯。

龍芯的單核同頻率效能特別高,但實際呢?