本文介绍了RISC-V架构,它是一种精简指令集计算机(RISC)指令集架构,具有开源、模块化和可扩展的特点。文章回顾了CISC和RISC的历史,解释了RISC-V的优势,如无需授权费、可定制的模块化设计以及对现有编译器的良好支持。最后,探讨了RISC-V在中国的应用、Android实验以及区块链和Web3领域的潜力。
最近,我经常听到关于 RISC-V 的消息。
从对现代密码学和嵌入式系统非常有帮助,到一些强大的经济体大力投资于该技术,RISC-V 似乎无处不在,并且看起来准备成为市场上一个新的重要参与者。
因此,至少尝试理解这个概念是明智的。就我而言,这是我忽略了很长时间的事情之一 —— 虽然我觉得我掌握了这门学科,但我每次尝试解释任何相关内容都以惨败告终。
因此,今天,我想用这篇文章来探讨这项技术到底是什么,它带来了什么,以及它可能如何影响我们所了解和喜爱的系统。
但是,这个故事不能从 RISC-V 开始。首先,我们需要了解一些关于 计算机 如何工作的事情。
很难想象没有电脑的生活,不是吗?
我的意思是,它们 无处不在,并在许多方面帮助我们 —— 从简单的日常琐事助手,到高度复杂的任务,如模拟复杂结构或帮助开发新药。
或者,你知道的,当你要求你选择的 GPT 嘲讽你 时,你可以自娱自乐。
我感到困惑的是,这些不同的功能是如何从非常简单的构建模块中产生的。逻辑门以某种方式排列,从而可以创建内存单元,这反过来又使我们能够执行复杂且可编程的操作。
在这最后一点上,我们必须停下来,专注于计算机中使其成为可能的核心组件:中央处理器,或 CPU。
CPU 本质上是任何计算机的 大脑。它是一个能够接收和执行 指令 的组件,这些指令在正确排序后,可以表达出各种不同的行为。
这些序列就是我们通常所说的 程序。
但问题是:它们只能理解非常具体且实际上非常 简单 的指令。你不可能要求它们做诸如“播放此视频”之类的事情,但你可以要求它们将两个数字相加,或者将一些数据从一个地方移动到另一个地方。
当我们设计 CPU 时,我们必须 准确 地确定这些指令是什么,这些指令将成为我们开发人员创建程序或指示 CPU 执行我们需要它执行的计算的工具。
虽然,这通常发生在幕后。我们很少直接编写这些指令。更多内容稍后介绍!
一组指令称为 指令集架构(简称 ISA)。这是今天讨论的核心,因为我们在 设计它 时做出的选择将对未来产生重大影响。
让我们假设我们对现有的 ISA 一无所知,并且我们想要提出一组合理的指令,我们可以用它来做任何事情。我们会如何处理这个问题?
我们已经提到了一些显而易见的事情,例如将数字加在一起或移动数据。其他明显的选择包括加、减、乘和除数字。我们可能想要比较值 —— 你知道,检查一个数字是否大于另一个数字,或者两个值是否相等。
但是,事情可能会变得更加棘手。更复杂的操作呢?我们是否应该有一个可以计算 平方根 的单个指令?或者 文本处理 呢?那么像 对数字列表进行排序 这样复杂的事情呢?
诚然,最后一个几乎是荒谬的,我认为没有 ISA 包含为此的指令!
这很快就变成了一个复杂的 设计难题。正如之前预示的那样,我们所做的决定会产生重要的后果。你看,我们想要支持的指令越多,CPU 就需要越复杂才能解释它们。
这转化为:
另一方面,如果我们只有太少的指令,我们可能无法执行某些操作。即使我们的集合足够表达,我们的程序也会变得更长,因为我们需要许多简单的指令来完成一个复杂指令可以完成的事情。
虽然这种 CPU 更容易构建和优化,但更长的程序可能会导致更多的错误!
总而言之,这感觉像是一种 平衡行为 —— 在这种行为中,我们需要非常注意我们的决策。
幸运的是,我们不需要从头开始解决这个问题。
我们描述的问题实际上是一个非常棘手的问题。
这是一个复杂的数学优化问题,我们对成本和易出错性的思考可能会影响我们的最终结果。
换句话说,没有单一的 最佳解决方案。相反,人们历史上所做的是提出好的 经验法则(启发式)来设计 ISA,这些经验法则已经发展成 两种主要的哲学:
是的,没错 —— 这就是 RISC-V 中的 RISC!
有了这样的全景,我们倾向于认为这里没有明显的赢家,因为这两种系统都有其优点和缺点。
然而,多年来,市场讲述了一个不同的故事。
CISC 哲学在很长一段时间内都占据着市场的主导地位。
CISC 更长更复杂的指令为何有用可能并不明显,但实际上有一个非常好的理由:内存。
我们的程序(再次,指令序列)必须存储在 内存中的某个位置 才能让 CPU 执行它们。当计算机开始在 70 年代 和 80 年代 进入家庭时,内存是昂贵且稀缺的。
当然,更短的程序意味着需要的内存更少。由于 CISC 架构可以将大量功能打包到更短的程序中(因此,更短的指令集),这意味着显着降低的制造成本和真正的经济优势。
这导致了 CISC 受欢迎的另一个因素:软件兼容性。
英特尔 迅速将 x86 确立为标准。因此,大多数程序都是为这种架构量身定制的。因此,如果由于某种原因你想要使用不同的 ISA,你必须重写所有现有的软件(程序)。
你可以想象,那些投入数百万美元开发在 x86 上运行的程序的企业不会轻易放弃他们的投资!
因此,CISC 牢牢控制着市场。即使内存变得更便宜并且 RISC 的优势变得更加明显,客户仍然继续使用 CISC 处理器。市场被锁定,因为每个人都依赖于相同的标准。
随着时间的流逝,内存变得更便宜。也涌现出新的市场,RISC 可以在其中大放异彩 —— 例如,移动计算机(又名你的智能手机)需要更高效的处理器,以便它们可以在电池上运行,并且 大型服务器农场(随着 互联网 的出现)非常关注降低能源成本。
自然地,RISC 迅速在这些领域占据了市场主导地位。再一次,一些公司迅速制定了标准,再次将客户锁定在他们的技术中。因此,虽然 RISC 的复兴从技术角度来看非常有趣,但似乎很明显还存在另一个问题。
这两个市场都面临着 相同的根本难题:谁控制了 ISA,谁就控制了市场。
这本质上是一个关于 专有控制 的问题。如果你想使用特定的架构,你必须遵守其所有者的规则,支付他们的许可费,并且还希望他们不会突然做出有影响力的更改。
这就是最终促使 替代方案 开发的背景和紧张局势。
它的发音是 “risk-five”。
RISC-V 最初于 2010 年在伯克利 开发,其唯一的想法是:如果计算的构建块 不属于任何人 会怎样?
我的意思是,这样说听起来几乎是荒谬的 —— 但市场现实清楚地表明并非如此。
因此,RISC-V 是 完全开源的。任何人都可以使用它、修改它或基于它构建处理器,而无需支付许可费或请求许可。
然而,RISC-V 的吸引力不仅仅在于其使用策略 —— 它的设计从一开始就是 模块化的 和 可扩展的。
这是什么意思?好吧,首先有一个 基本指令集,它的设计是 最小的。也就是说,足以运行基本的软件。从那里,你可以添加 标准化的扩展 以满足特定的需求,例如浮点运算、向量运算,甚至 密码学。
就像 CPU 的乐高积木一样。虽然乐高是专有的……但你明白我的意思!
模块化 解决了关于现有解决方案的一个问题,我们实际上尚未解决:臃肿。
几十年来,专有的 RISC 和 CISC 架构已经积累了数百条指令,以满足 许多不同的用例。因此,你的智能手机的处理器携带着一些它永远不会遇到的情况的指令。你的笔记本电脑可能携带着来自 80 年代的遗留指令,现代软件几乎从未使用过。
毕竟,成为标准意味着你需要迎合各种各样的应用程序和市场!
使用 RISC-V,你 只包含你需要的,这直接转化为更小更高效的特定应用处理器。
好的,这听起来很有希望。
但是,存在一个小问题:我们通常不使用 ISA 语言编写程序,而是选择一些 编程语言,并使用它来制作我们的程序。
除非你是个疯子,喜欢直接用 CPU 指令编写程序。
我知道有些朋友会非常喜欢这样做 —— 但也许他们也可以从心理学家的拜访中受益。
那么,我可以编写一个在 RISC-V 上运行的 C++ 程序吗?它是如何工作的?
这就是 编译器 发挥作用的地方 —— 这也是 RISC-V 最大的成功案例之一。
一个 编译器 本质上是一个翻译器。它接受用你典型的高级语言(C、Python 或 Rust)编写的程序,并将它们转换为处理器将理解的指令。
当然,不同的处理器架构需要 不同的编译器,以生成正确的指令集。这似乎有些问题:由于 RISC-V 是模块化的,指令集取决于你选择使用的模块!
但实际上,这 完全没有问题 —— RISC-V 提供的模块化甚至可以使编译器的工作 更容易。由于指令集是干净且结构良好的,因此可以准确地告诉编译器目标处理器上可用的扩展,并利用任何专门的指令来使你的代码更快。
如今,所有主要的编译器工具链(如 GCC、LLVM/Clang 等)都支持 RISC-V。这意味着,如果你有一个用 C、C++、Rust 或许多其他语言之一编写的程序,你可以编译它以在 RISC-V 处理器上运行,而无需对你的代码进行 最小的 或 无需任何更改。
这种支持实际上对于 RISC-V 的成功 至关重要 —— 这意味着它 不必从零开始。现有的软件有可能在 RISC-V 上运行,而不会出现太多问题。
如果你还记得,这是专有架构在市场上占据主导地位的主要原因之一!
那么,RISC-V 正在被使用吗?在哪里?
截至最近,采用速度 很快 —— 也许比许多人预期的要快。推动这种速度的原因既有 经济 因素,也有 地缘政治 因素。
在地缘政治方面,中国一直在 大力投资 RISC-V 开发,以此作为其减少对西方芯片架构依赖的战略的一部分。贸易紧张局势和政治分歧可能会在一眨眼的功夫切断对关键技术的访问 —— 因此,拥有一个开放的标准可能成为一个关键的战略因素,甚至是国家安全的问题。
但并非一切都是地缘政治。主要的科技公司也开始涉足 RISC-V。谷歌 尝试使用 RISC-V 开发安卓 设备一段时间,而 SiFive(由 RISC-V 的原始创建者创立)等公司已经在构建商业处理器。
区块链和 web3 行业也开始关注,并慢慢地将 RISC-V 引入游戏中。正如我们所知,效率是这些系统中可扩展性的关键,这意味着这片新技术的沃土。
与此相关的是,零知识 证明机制也在围绕 RISC-V 构建,这有望使它们更有效和通用。
你可以在 官方页面 上查看更多案例研究。
我们仍处于早期阶段,但 RISC-V 无疑已经加快了步伐,并且在正确的场景中绝对是一个值得探索的替代方案。
我认为通过这篇文章,你应该对 RISC-V 的全部内容有一个很好的了解 —— 并且对计算机也有一些额外的了解。
现在,你是否应该关心这一点,实际上取决于你自己的好奇心,以及你的项目是什么。你不一定需要开始构建模块化 CPU,或者关心将你的程序编译为特定的 ISA。
实际上,我敢说我们大多数凡人不会很快玩这些东西。
但是,这项技术就在那里,慢慢地爬进我们的系统。谁知道 —— 你可能很快就会在 RISC-V 驱动的设备上阅读这篇文章。
时间会证明一切。最好做好准备!
- 原文链接: medium.com/@francomangon...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!