参考:https://www.eet-china.com/mp/a39867.html
RISC-V和ARM都是基于**精简指令集计算 (RISC)**原理建立的指令集架构。他们的主要区别在于他们的授权模式和开放性:
- ARM 是一种专有的指令集架构,众多使用ARM架构的厂商,只能根据自身需求,调整产品频率和功耗,不得改变原有设计。
- ARM架构和RISC-V架构都源自1980年代的精简指令计算机RISC,两者最大的不同就在于其推崇的大道至简的技术风格和彻底开放的模式。
对于开发应用程序的人来说,性能和功耗更多地取决于具体的芯片实现,而不是指令集架构本身。因此,无论你选择使用ARM还是RISC-V,你都需要考虑你的应用程序的特定需求,例如处理能力、功耗、成本等。然而,如果你主要关注的是编写应用程序,而不是处理器设计,那么这些差异可能对你来说并不重要。你的主要关注点可能会更多地集中在如何最有效地使用你选择的平台和工具,以及如何编写高效、可维护的代码。
-
开放性与专有性:
- RISC-V是一种开源架构,这意味着任何想要在其设计中包含RISC-V CPU的设计师都可以自由地使用RISC-V。
- 而ARM是一种专有的指令集架构,使用ARM架构的厂商,只能根据自身需求,调整产品频率和功耗,不得改变原有设计。
-
生态系统:ARM的生态系统相对成熟,拥有广泛的支持和丰富的开发工具。而RISC-V虽然也有全套开源免费的编译器、开发工具和软件开发环境,但相比ARM的商用编译器和IDE而言,还颇有差距。
-
指令集特性:ARM指令集中的指令几乎全部都带有cond条件码,也就是说ARM的一条指令其实做了两件原子操作------判断+执行。而RISC-V指令集做到了指令功能的平衡与规整,平衡意味着在空间和时间上都控制得当,规整意味着解码单元会很好做,有大量逻辑门可以复用。
-
授权模式:ARM是需要授权费用的,而RISC-V是免费的。
因此,开发者在选择使用RISC-V或ARM时,需要根据自己的具体需求和应用场景来决定。例如,如果你需要更多的灵活性和定制性,可能会选择RISC-V;如果你需要一个成熟的生态系统和丰富的开发工具,可能会选择ARM。
- 指令集:ARM和RISC-V都有自己的指令集,这些指令集定义了处理器可以执行的基本操作。例如,RISC-V的指令集比ARM更简洁,这可能会影响编程人员如何编写和优化底层代码。
- 中断处理:不同的处理器架构可能会有不同的中断处理机制。这可能会影响底层编程人员如何编写中断处理程序。
- 内存管理:ARM和RISC-V可能会有不同的内存管理策略,这可能会影响底层编程人员如何管理内存。
- 开发工具:由于RISC-V是一个相对较新的开源架构,其开发工具可能不如ARM成熟。这可能会影响底层编程人员的开发效率。
- 性能优化:由于ARM和RISC-V的架构差异,底层编程人员在进行性能优化时可能需要采用不同的策略。
总的来说,虽然大部分的编程工作都可以在不同的处理器架构上进行,但是在进行底层编程时,理解处理器架构的差异是非常重要的。
RISC-V和ARM都是指令集架构(ISA),它们定义了处理器可以理解和执行的指令集。然而,它们之间存在一些关键的区别:
-
开源与专有:RISC-V是开源的,这意味着它是免许可和免版税的。任何人都可以使用和修改RISC-V的指令集,甚至可以添加新的指令。相反,ARM是专有的,这意味着任何想要在其设计中包含ARM CPU的设计师都必须向ARM支付版税。
-
指令集的复杂性 :RISC-V的基础指令集只有40多条,加上其他的模块化扩展指令总共几十条指令。而ARM有超过1000条指令。
-
微架构:实现了一个指令集的CPU叫微架构。例如,ARM的Cortex-A7处理器,就是一个实现了ARMv8指令集的具体CPU,是一个微架构。
assembly
VLD v0, x10 # 将整数寄存器x10内存储的内存地址处的数据加载到向量寄存器v0中
而在ARM中,加载指令可能看起来像这样:
assembly
LD1 v0.16b, [x10] # 在内存地址x10处加载16个字节的值
这两条指令都是从内存中加载数据,但是由于它们使用的指令集不同,因此它们的语法和行为也有所不同。