RISC-V、ARM 和x86微處理器之間的許多差異都很細(xì)微,并且與內(nèi)存尋址方式、分支執(zhí)行方式、異常處理方式等有關(guān)。本文將考慮更高層次的差異,并將簡(jiǎn)要比較精簡(jiǎn)指令集計(jì)算(RISC)和復(fù)雜指令集計(jì)算(CISC),考慮這些差異對(duì)功耗和計(jì)算性能之間的權(quán)衡的影響,看看安全性和預(yù)測(cè)性如何執(zhí)行被處理,虛擬化是如何實(shí)現(xiàn)的,最后是對(duì)RISC-V、ARM 和 x86 設(shè)備的應(yīng)用程序適用性的概述。
Intel的x86架構(gòu)也在AMD的CPU上提供,ARM處理器和IP由ArmLimited提供,RISC-V國(guó)際組織正在開發(fā)RISC-V。英特爾、AMD、ARM 和 RISC-V之間的兩個(gè)非常顯著的區(qū)別在于商業(yè)模式和計(jì)算架構(gòu)。英特爾、AMD 和 ARM 基于專有 IP,并且這些公司銷售和/或許可他們的產(chǎn)品。RISC-V是一個(gè)開放的規(guī)范和平臺(tái);它不是開源處理器??梢允褂瞄_源 RISC-V 內(nèi)核,但也有商業(yè)許可的內(nèi)核。
RISC-V和ARM處理器在計(jì)算架構(gòu)上基于RISC概念,而Intel和AMD的x86處理器則采用CISC設(shè)計(jì)。
一、RISC與CISC的計(jì)算
RISC體系結(jié)構(gòu)具有可以在單個(gè)計(jì)算機(jī)時(shí)鐘周期內(nèi)執(zhí)行的簡(jiǎn)單指令。因此,完成一項(xiàng)特定任務(wù)往往需要執(zhí)行多條指令。同樣的任務(wù)可以在CISC處理器上用更少的指令(甚至單個(gè)指令)完成。
CISC計(jì)算力求用盡可能少的代碼行完成一項(xiàng)任務(wù)。一條CISC指令可能需要多個(gè)計(jì)算機(jī)時(shí)鐘周期才能完成。例如,CISC處理器的兩個(gè)數(shù)相乘可以用一條指令完成:
MUL 1200, 1201
“MUL”是一個(gè)復(fù)雜的指令。它不需要程序員顯式使用任何調(diào)用、加載或存儲(chǔ)函數(shù)。它直接在計(jì)算機(jī)的內(nèi)存上運(yùn)行,類似于高級(jí)編程語(yǔ)言中的命令。RISC
處理器上的乘法不能用單個(gè)命令完成;需要幾個(gè)更簡(jiǎn)單的指令來(lái)從內(nèi)存中的特定位置加載每個(gè)操作數(shù)(下面示例中的 1200 和
1201),將數(shù)字相乘,然后存儲(chǔ)結(jié)果:
Load A, 1200
Load B, 1201
MUL A, B
Store 1200, A
在此示例中,Load指令將來(lái)自內(nèi)存位置1200和1201的數(shù)據(jù)分別存儲(chǔ)到寄存器A和B。MUL指令將兩個(gè)寄存器中的值相乘。它將結(jié)果保存在A中,Store指令將 A 的值存儲(chǔ)在內(nèi)存位置1200(或任何其他指定的內(nèi)存位置)中。在RISC處理器中,諸如MUL之類的操作僅在寄存器上執(zhí)行,而不是直接在內(nèi)存上執(zhí)行。雖然這增加了指令數(shù),但它允許使用更簡(jiǎn)單的指令。
二、功率與性能
與CISC指令相比,執(zhí)行更簡(jiǎn)單的 RISC 指令消耗的功率更少。CISC
處理器試圖以每條指令的計(jì)算機(jī)時(shí)鐘周期數(shù)為代價(jià)來(lái)最小化每個(gè)程序的指令數(shù)。RISC采用相反的方法,使用可以在單個(gè)時(shí)鐘周期內(nèi)執(zhí)行的簡(jiǎn)單指令,但需要更多的指令。以下等式顯示了計(jì)算機(jī)的性能能力(運(yùn)行程序的時(shí)間)與每條指令的周期數(shù)以及每條程序的指令數(shù)之間的關(guān)系:
從這個(gè)等式來(lái)看,有兩種方法可以提高性能,最小化每個(gè)程序的指令數(shù)或減少每個(gè)指令的周期數(shù)。一般而言,RISC方法在降低整體功耗方面更為成功,有時(shí)會(huì)以降低性能為代價(jià)。然而,分歧正在縮小。ARM添加了更復(fù)雜的指令來(lái)提高處理器性能(以更高的功耗為代價(jià))。英特爾將其一些操作碼分解為類似于RISC的微操作,以實(shí)現(xiàn)更低的功耗。
三、安全性
權(quán)限環(huán)(有時(shí)稱為保護(hù)環(huán))是為保護(hù)數(shù)據(jù)和功能免受故障、提高容錯(cuò)能力和提高安全性免受惡意操作而建立的分層域。環(huán)按照從最高特權(quán)或最受信任到最低特權(quán)或最不受信任的層次結(jié)構(gòu)設(shè)置。零環(huán)通常是最高特權(quán)級(jí)別,直接與
CPU 內(nèi)核和內(nèi)存交互。
x86 架構(gòu)包括四個(gè)級(jí)別的特權(quán)環(huán)。ARM v7 架構(gòu)包括三個(gè)特權(quán)級(jí)別;應(yīng)用程序、操作系統(tǒng)和管理程序。ARM 和 RISC-V都使用隔離機(jī)制的概念。ARM 采用基于硬件的安全性,其中域被硬編碼到硬件中,而 RISC-V 使用軟件定義的隔離域。
OP-TEE 是實(shí)現(xiàn) ARM TrustZone 技術(shù)的開源可信執(zhí)行環(huán)境 (TEE)。OP-TEE 已被移植到許多 ARM 設(shè)備和平臺(tái),包括 ARMv8。RISC-V MultiZone 安全軟件模型很小,因此速度更快。RISC-V內(nèi)置了多種安全機(jī)制,包括四級(jí)權(quán)限環(huán)、安全中斷處理和獨(dú)特的物理內(nèi)存保護(hù)(PMP)機(jī)制。RISC-V 還提供了商用安全增強(qiáng)功能,包括加密庫(kù)、信任根和多域
TEE。
RISC-V 的開源特性導(dǎo)致專有 ISA 缺乏的透明度,并為另一個(gè)級(jí)別的安全性提供了可能性。RISC-V社區(qū)龐大而多樣,許多設(shè)計(jì)人員不斷研究安全環(huán)境和潛在威脅向量。一旦識(shí)別出安全風(fēng)險(xiǎn),它通常會(huì)與開放社區(qū)共享,使專家能夠快速開發(fā)或提出解決方案。
四、預(yù)測(cè)執(zhí)行
謂詞執(zhí)行允許某些指令僅在特定的先前條件為真時(shí)才執(zhí)行。例如,先前的結(jié)果必須大于零;否則,處理器繼續(xù)執(zhí)行下一條指令。ARM 和 x86
支持各種格式的謂詞執(zhí)行。
宏操作融合是一種硬件優(yōu)化技術(shù),在解碼之前或解碼過程中,將一系列相鄰的宏操作合并為一個(gè)宏操作。ARM在其最近的微體系結(jié)構(gòu)中支持許多宏操作融合操作。微操作融合在處理器內(nèi)部將兩條指令合二為一,有效實(shí)現(xiàn)無(wú)需指令集幫助的謂詞執(zhí)行。
基本的RISC-V指令集不支持謂詞執(zhí)行。然而,實(shí)驗(yàn)性的BOOMv3亂序推測(cè)RISC-V處理器使用精簡(jiǎn)指令集與微操作融合的組合來(lái)實(shí)現(xiàn)預(yù)測(cè)執(zhí)行。
五、CPU、內(nèi)存和I/O的虛擬化
ARM、x86 和 RISC-V 都支持 CPU 和內(nèi)存的虛擬化。RISC-V ISA 目前不支持 I/O 的虛擬化。在 x86生態(tài)系統(tǒng)中,Intel和AMD有自己的虛擬化方法。英特爾被稱為虛擬化技術(shù)或 VT。VT由 VT-x組成,包含核心側(cè)特征;VT-d,包含輸入輸出內(nèi)存管理單元(IOMMU);和 VT-c,它涵蓋了網(wǎng)絡(luò)接口。AMD在標(biāo)簽AMD-V下提供核心端虛擬化,而IOMMU稱為AMD-Vi。英特爾和 AMD 的產(chǎn)品在實(shí)現(xiàn)細(xì)節(jié)上有所不同,但與 ARM
的產(chǎn)品相比,彼此的架構(gòu)更加緊密。
與 x86 處理器采用的方法類似的虛擬化擴(kuò)展已添加到ARM架構(gòu)中。ARM虛擬化擴(kuò)展使硬件方式能夠使用管理程序虛擬化 CPU。多個(gè)操作系統(tǒng)可以在每個(gè)虛擬
CPU 上運(yùn)行。
RISC-V H(管理程序)擴(kuò)展 v0.6.1 引入了 CPU 狀態(tài)的完整副本:一份副本用于來(lái)賓,一份副本用于主機(jī)(類似于 IntelVT-x)。RISC-V通過將敏感寄存器和指令賦予主機(jī)模式特權(quán)來(lái)支持 CPU 的虛擬化。從預(yù)發(fā)布版本號(hào)可以看出,RISC-V虛擬化是一項(xiàng)正在進(jìn)行的工作。最近發(fā)布了用于嵌入式系統(tǒng)的 Rocket 芯片內(nèi)核中最新版本的 RISC-V 虛擬機(jī)管理程序擴(kuò)展的首次公開實(shí)施和評(píng)估。
與x86和ARM架構(gòu)一樣,RISC-V支持使用多階段頁(yè)表的內(nèi)存虛擬化。此外,RISC-V為來(lái)賓表和主機(jī)表實(shí)現(xiàn)了相同的頁(yè)表?xiàng)l目格式。
I/O虛擬化在RISC-V中留待指定。它主要是IOMMU和平臺(tái)級(jí)中斷控制器(PLIC)的一個(gè)特性,它位于RISC-VISA的域之外,需要指定。當(dāng)前指定的 PLIC 不包括用于配置中斷注入的寄存器。
六、RISC-V和ISA的擴(kuò)展
RISC-V
從一開始就設(shè)計(jì)為不僅支持基本ISA和標(biāo)準(zhǔn)擴(kuò)展,而且還支持自定義ISA擴(kuò)展。雖然ARM最初并未設(shè)計(jì)為使用自定義擴(kuò)展,但這種情況正在發(fā)生變化,并且ARM生態(tài)系統(tǒng)開始使用自定義擴(kuò)展。x86生態(tài)系統(tǒng)是封閉的,一般不支持自定義ISA擴(kuò)展。
RISC-V ISA被組織成指令組(基本 ISA 和標(biāo)準(zhǔn)擴(kuò)展)。使用對(duì)標(biāo)準(zhǔn)ISA的擴(kuò)展的能力可以為特定應(yīng)用程序提供支持。例如,最近發(fā)布的 RISC-V向量擴(kuò)展(RVV)使基于RISC-VISA的處理器內(nèi)核能夠與傳統(tǒng)標(biāo)量運(yùn)算一起處理數(shù)據(jù)數(shù)組,以加速大型數(shù)據(jù)集上單指令流的計(jì)算。適合矢量處理器的任務(wù)示例包括:
(2)壓縮圖像、zip文件等。
(3)密碼學(xué)。
(5)語(yǔ)音和手寫。
(6)奇偶校驗(yàn)、校驗(yàn)和。
(7)散列/連接。
RISC-V
ISA支持自定義擴(kuò)展的能力可以成為特定用例或應(yīng)用程序的關(guān)鍵區(qū)別。使用自定義擴(kuò)展不會(huì)破壞與主要ISA的合規(guī)性。支持自定義擴(kuò)展的處理器也可以運(yùn)行通用 RISC-V
軟件。
上圖顯示了RISC-V軟件堆棧中的自定義ISA擴(kuò)展。操作系統(tǒng)(OS)可以是實(shí)時(shí)操作系統(tǒng)(如embOS、FreeRTOS、LynxOS等),也可以是富操作系統(tǒng)(如Linux、Android、Windows等)。在此示例中,App1
確實(shí)需要性能增強(qiáng)并且不使用自定義 ISA 擴(kuò)展。它可以符合標(biāo)準(zhǔn)編譯器。App2 和 App3 使用自定義 ISA 擴(kuò)展來(lái)提高性能,并且必須使用包含自定義 ISA
擴(kuò)展的編譯器進(jìn)行編譯。
所以,x86、ARM和RISC-V微處理器之間的差異很多而且各不相同。這些差異推動(dòng)了一般應(yīng)用程序的適用性。來(lái)自AMD和Intel的x86處理器在計(jì)算機(jī)和服務(wù)器領(lǐng)域占據(jù)主導(dǎo)地位。在平板電腦和智能手機(jī)上,蘋果和高通的ARM處理器占主導(dǎo)地位。ARM處理器在嵌入式應(yīng)用中也很強(qiáng)大。隨著
RISC-V 越來(lái)越多地用于嵌入式系統(tǒng)、汽車系統(tǒng)、磁盤驅(qū)動(dòng)器、人工智能和機(jī)器學(xué)習(xí)應(yīng)用程序,這種優(yōu)勢(shì)正在受到挑戰(zhàn)。
-
ARM
+關(guān)注
關(guān)注
134文章
9097瀏覽量
367584 -
微處理器
+關(guān)注
關(guān)注
11文章
2263瀏覽量
82457 -
X86
+關(guān)注
關(guān)注
5文章
294瀏覽量
43471 -
RISC-V
+關(guān)注
關(guān)注
45文章
2277瀏覽量
46159
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論