滨州化工机械网

当前的位置是:主页 >> 常用仪表

RISCV与ARM与x86有什么区别

时间:2021-07-09 来源网站:滨州化工机械网

RISC-V与ARM与x86 –有什么区别?

RISC-V,ARM和x86微处理器之间的许多差异都很细微,与内存的寻址方式,分支的执行方式,异常的处理方式等等有关。本文将考虑更高级别的差异,并将简要比较精简指令集计算(RISC)和复杂指令集计算(CISC),考虑这些差异对功耗与计算性能之间的折衷产生的影响,并探讨安全性和谓词的方式执行,处理,虚拟化的实现方式,最后概述了应用程序对RISC-V,ARM和x86设备的适用性。

英特尔的x86架构也可用于AMD的CPU上,ARM Limited可提供IP,而Arm Limited则可提供IP ,RISC-V国际组织正在开发RISC-V中国机械网okmao.com。英特尔,AMD,ARM和RISC-V之间的两个非常重要的区别是业务模型和计算体系结构。英特尔,AMD和ARM基于专有IP,并且这些公司销售和/或许可其产品。RISC-V是一个开放的规范和平台;它不是开源处理器。开源RISC-V内核可用,但也有商业许可的内核。

RISC-V与ARM与x86 –有什么区别? 中国机械网,okmao.com

商业与开源IP许可模型。图片:RISC-V International)

RISC-V和ARM处理器在计算体系结构方面基于RISC概念,而Intel和AMD的x86处理器采用CISC设计。

RISC与CISC计算

RISC体系结构具有可以在单个计算机时钟周期内执行的简单指令。结果,特定任务的完成通常需要执行多条指令。在CISC处理器上,用更少的指令(甚至是一条指令)就可以完成相同的任务。

CISC计算试图以尽可能少的代码行来完成一项任务。一条CISC指令可能需要多个计算机时钟周期才能完成。例如,将一个CISC处理器的两个数相乘可以用一条指令完成:

MUL 1200、1201

“ MUL”是一个复杂的指令。它不需要程序员明确使用任何调用,加载或存储函数。它直接在计算机的内存上运行,类似于高级编程语言中的命令。RISC处理器上的乘法不能通过单个命令来完成。需要一些更简单的指令才能从内存中的特定位置(在下面的示例中为1200和1201)加载每个操作数,将数字相乘,然后存储结果:

负载A,1200

负载B,1201

MUL A,B

商店1200,A

在此示例中,Load指令将来自存储器位置1200和1201的数据分别存储到寄存器A和B中。MUL指令将两个寄存器中的值相乘。它将结果保存在A中,并且Store指令将A的值存储在内存位置1200(或任何其他指定的内存位置)中。在RISC处理器中,诸如MUL之类的操作仅在寄存器上执行,而不是直接在存储器上执行。虽然这增加了指令数量,但可以使用更简单的指令。

功率与性能

与CISC指令相比,执行更简单的RISC指令消耗的功率更少。CISC处理器试图以每个指令的计算机时钟周期数为代价来使每个程序的指令数最小化。RISC采用相反的方法,即使用简单的指令,这些指令可以在单个时钟周期内执行,但会增加指令的数量。以下等式显示了计算机的性能(运行程序的时间)与每条指令的周期以及每条程序的指令数之间的关系:

计算机性能比较方程式。图片:斯坦福大学)

根据此等式,可以通过两种方法来提高性能,最小化每个程序的指令数量或减少每个指令的周期数量。通常,RISC方法在减少总体功耗方面更为成功,有时会以降低性能为代价。但是,区别线正在缩小。ARM添加了更复杂的指令以提高处理器性能(以更高的功耗为代价)。英特尔将其某些操作码分解为类似于RISC的微操作,以降低功耗。

安全

特权环(有时称为保护环)是建立的分层域,用于保护数据和功能免于故障,提高容错能力并提高针对恶意操作的安全性。环在从最特权或最受信任的到最小特权或最不信任的层次结构中设置。零环通常是特权最高的级别,并且直接与CPU内核和内存进行交互。

x86在保护模式下可用的特权环(图片来源:Wikipedia)

x86体系结构包括四个级别的特权环。ARM v7体系结构包括三个特权级别;应用程序,操作系统和管理程序。ARM和RISC-V都使用了隔离机制的概念。ARM采用基于硬件的安全性,其中将域硬编码到硬件中,而RISC-V使用软件定义的隔离域。

OP-TEE是实现ARM TrustZone技术的开源受信任执行环境(TEE)。OP-TEE已移植到许多ARM设备和平台,包括ARM v8。RISC-V MultiZone安全软件模型很小,因此速度更快。RISC-V内置了几种安全机制,包括四个级别的特权环,安全中断处理和独特的物理内存保护(PMP)机制。RISC-V还可以使用商业上可获得的安全性增强功能,包括加密库,信任根和多域TEE。

RISC-V的开放源代码性质导致专有ISA缺乏透明性,并为进一步提高安全性提供了可能性。RISC-V社区庞大而多样,许多设计人员不断研究安全环境和潜在威胁向量。一旦确定了安全风险,通常将其与开放社区共享,使专家可以快速开发或提出解决方案。

预定执行

谓词执行仅在某些特定的先前条件为true时才允许执行某些指令。例如,先前的结果必须大于零。否则,处理器继续执行下一条指令。ARM和x86支持各种格式的谓词执行。

宏操作融合是一种硬件优化技术,其中在解码之前或解码期间,将一系列相邻的宏操作合并为单个宏操作。ARM在其最新的微体系结构中支持许多宏操作融合操作。微操作融合将两条指令合并到处理器内部的一条指令中,从而在没有指令集帮助的情况下有效地实现了预先确定的执行。

基本的RISC-V指令集不支持谓词执行。但是,实验性的BOOMv3无序推测RISC-V处理器结合使用了精简指令集和微操作融合来实现预定执行。

CPU,内存和I / O的虚拟化

ARM,x86和RISC-V都支持CPU和内存的虚拟化。RISC-V ISA当前不支持I / O的虚拟化。在x86生态系统中,英特尔和AMD拥有自己的虚拟化方法。英特尔的称为虚拟化技术或VT。VT由VT-x组成,它包含了核心方面的功能;VT-d,包括输入输出内存管理单元(IOMMU);VT-c,它涵盖了网络接口。AMD以标签AMD-V提供核心侧虚拟化,而IOMMU被称为AMD-Vi。英特尔和AMD产品在实现细节上有所不同,但彼此之间的架构比ARM产品更为紧密。

与x86处理器采用的方法类似的虚拟化扩展已添加到ARM体系结构中。ARM虚拟化扩展使硬件手段可以使用管理程序虚拟化CPU。可以在每个虚拟CPU上运行多个操作系统。

RISC-V H(管理程序)扩展v0.6.1引入了CPU状态的完整副本:来宾一个副本和主机一个副本(类似于Intel VT-x)。RISC-V通过将敏感的寄存器和指令设置为主机模式特权来支持CPU的虚拟化。从预发行版本号可以看出,RISC-V虚拟化是一个正在进行的工作。最近首次公开发布和评估了Rocket芯片内核中用于嵌入式系统的RISC-V虚拟机管理程序扩展的最新版本。

与x86和ARM体系结构一样,RISC-V使用多阶段页表支持内存虚拟化。同样,RISC-V为来宾表和主机表实现相同的页表条目格式。

I / O虚拟化留在RISC-V中指定。它主要是IOMMU和平台级中断控制器(PLIC)的功能,后者不在RISC-V ISA的范围之内。当前指定的PLIC不包括用于配置中断注入的寄存器。

RISC-V和ISA定制

RISC-V从一开始就被设计为不仅支持基本ISA和标准扩展,而且还可以支持自定义ISA扩展。尽管ARM最初并未设计为使用自定义扩展,但这种情况正在发生变化,并且ARM生态系统开始采用自定义扩展。x86生态系统已关闭,通常不支持自定义ISA扩展。

RISC-V ISA分为指令组(基本ISA和标准扩展名)。使用标准ISA扩展的功能可以为特定应用程序提供支持。例如,最近发布的RISC-V向量扩展(RVV)使基于RISC-V ISA的处理器内核能够处理数据阵列以及传统的标量运算,从而加快了对大型数据集的单指令流的计算。适用于矢量处理器的任务示例包括:

机器学习

压缩图像,压缩文件等

密码学

多媒体:音频,视频

演讲和手写

奇偶校验,校验和

哈希/联接

RISC-V ISA支持自定义扩展的能力可能是针对特定用例或应用程序的关键区别。自定义扩展的使用不会破坏对主要ISA的遵从性。支持自定义扩展的处理器也可以运行通用RISC-V软件。

RISC-V可以将不使用自定义ISA扩展名(App1)的应用程序与使用自定义ISA扩展名(App2&App3)的应用程序结合起来,以优化性能。图片:Codasip)

上图显示了RISC-V软件堆栈中的自定义ISA扩展。操作系统(OS)可以是实时OS(例如embOS,FreeRTOS,LynxOS等),也可以是功能丰富的OS(例如Linux,Android,Windows等)。在此示例中,App1确实需要提高性能,并且不使用自定义ISA扩展。它可以符合标准的编译器。App2和App3使用自定义ISA扩展来提高性能,并且必须使用包含自定义ISA扩展的编译器进行编译。

概括

x86,ARM和RISC-V微处理器之间的差异是多种多样的。这些差异推动了通用应用程序的适用性。AMD和Intel的x86处理器在计算机和服务器中占主导地位。在平板电脑和智能手机上,苹果和高通公司的ARM处理器占主导地位。ARM处理器在嵌入式应用程序中也很强大。随着RISC-V越来越多地用于嵌入式系统,汽车系统,磁盘驱动器,人工智能和机器学习应用程序中,这种能力正受到挑战。