对克尔斯特·阿萨诺维奇博士的采访:将驱动力注入 RISC-V
本文信息来源:morethanmoore
如今我们在报道处理器时,主要会谈到三种架构。最大的一种是 x86,大约有四家公司在生产 x86 处理器(如果你能全部说出来,特别值得点赞)。但这是一种受限的许可证模式,只有这些公司才能参与。接下来是 Arm,Arm 授权其架构,也授权其设计,全球有超过 200 家公司在生产基于 Arm 的芯片。第三种选择是 RISC-V。

RISC-V 在生态系统中已经存在了近 20 年,承诺向所有希望使用它的人提供开源 CPU 的优势。今天与我一同对话的是 Krste Asanović 博士。他是 SiFive 的联合创始人,也是最初开发 RISC-V ISA 的团队成员之一。我有机会与他聊聊他如何看待自己的这一创造、它如今的发展,以及整个生态系统的情况。
以下内容为上方嵌入式视频采访的文字记录。为增强可读性,部分措辞略有调整!
Ian:你研究计算机体系结构的时间,可能比我活着的时间还要长!你亲眼见证了它的演进,你对它未来的发展感到兴奋吗?
Krste: 我刚从 Hot Chips 大会回来,看到的一切令人难以置信。我一直跟别人说,我参加 Hot Chips 已经 35 年了,但每次总能看到新东西。计算机体系结构领域总是在发生新的变化,这是一个真正令人兴奋的领域。能够在这个行业里深耕这么久,真的很有意思。
Ian:让我们回到你和团队创建 RISC-V 的时候。当时其实有多种选择,“开源”这一概念,包括软件的开源,仍然处在一种模糊的状态中,但还没有人真正把它整合成体系。那么,是什么火花促使你们选择走上这条道路的?
Krste: 需要认识到的一点是,在我参与的各个团队中——无论是我在伯克利读研究生的时候,在麻省理工学院担任教授的时候,还是后来回到伯克利任教——这些项目里我始终都很喜欢构建硅原型。有一点与其他一些团队略有不同的是,我的团队一直都会构建研究型原型。因此,我们需要一套真正的指令集,因为我们是在构建一颗真正的芯片,必须把软件映射到其上。此前,我们在实际芯片上大量使用行业里的 ISA,通常是某些版本的 MIPS,因为那是一种相对直接的 RISC 设计,实现起来相当简单。
Ian:当然,如今 MIPS 已经成为一家 RISC-V IP 公司。
Krste: 是的,这是一个很有意思的发展。使用一个已经存在的标准 ISA 的好处在于,所有软件基本上都已经就绪,你可以直接使用。但问题在于,一旦你开始做研究,你就会想要修改 ISA。这正是你在做的事情,而在那一刻,面对大量标准软件,你就失去了这种优势。所以我们立刻意识到:“好吧,我们正在构建这个标准的东西,但一旦我们对它进行修改,就失去了我们采用标准的理由。”于是你不得不费尽周折去保持与 MIPS 的兼容性,但只要你做出改变,这一切就都会失去。
因此,在经历了几代发展和许多项目之后,大约在 2010 年于伯克利,我们正在做并行计算实验室的工作,研究并行计算,而我们需要构建大量新的模拟基础设施,因为当时几乎没有现成的东西,而且我们也无法获得并行硬件。比如当 Intel 找到我们时,他们说:“好吧,我们可以给你并行机器,它有两个核心或者四个核心。”这并不令人兴奋。我们还需要去模拟规模大得多的系统。
我们也对专用扩展和架构扩展很感兴趣,于是四处寻找,尝试使用现有的 ISA。研究生们太聪明了!他们不想再做一个新的,他们会说:“我们只想省点力气,用一个已经存在的!”
Ian:我觉得这里面也有“上市时间”的因素!
Krste: 是的,也到了毕业的时候,他们想要毕业。但当我们审视所有现有的设计时,我们考察了所有主流的 RISC 架构。它们都有问题——在架构上、技术上,而且大多数还不是开放的。问题在于,如果我们想构建基础设施并与学术界的同事共享,这是做不到的,比如 x86 或 Arm。由于许可限制,这根本不可能。
当时其实已经有一些开源 ISA,比如 Spark v8,32 位版本已经成为 IEEE 标准。但当 Oracle 收购 Sun 并推出 v9 之后,它就不再是开放的了,而我们又需要一个 64 位架构来支撑我们的工作。此外,还有 OpenRISC 项目,我们对此进行了非常仔细的评估。当时它仍然只有 32 位,而且我们在其设计中看到了许多技术挑战。那个团队实际上更多是把单个核心当作成果来做,也就是说,他们开源的是一个具体实现,并没有真正从架构层面去思考。因此,综合考察了这些情况并明确了我们的需求之后,我们最终决定干脆从零开始设计一套 ISA,这应该不会太难。那其实是我成功“忽悠”研究生们的一个谎言!我当时说:“你们知道的,这不过是个暑期项目,几个月就能搞定!”
实际上是在 2010 年 5 月 18 日,我们最终决定要做自己的 ISA。到了当年秋季,从 8 月/9 月开始,我们就在课堂上使用第一个原型进行教学。
所以从某种意义上说,我们确实把它作为一个初始版本做了出来,而且只用了一个夏天。可怜的本科生们成了“试验对象”,我们用它来授课。这就是整个过程的起点:在教学和研究中使用它,并且拥有足够多的学生。
我认为需要认识到的一点是,我们在伯克利是幸运的,我们拥有足够的“临界规模”。学生数量充足,使我们能够完成 RTL 实现、进行 Linux 移植、完成 GCC 移植,而且还能多次重复这些工作,不断迭代,并在相当短的时间内把它推进到一个非常可用的状态。这一切都得益于我们拥有这样一个由大量优秀学生构成的临界规模。

Ian:这里面有两三个问题。第一,大致来说,我们讨论的本科生班级规模有多大?300 人?
Krste: 不,这是在“爆发”之前。所以更像是一个班级里只有三四十人。
Ian:第二点是,我认为当时 OpenPOWER 应该已经存在了吧?
Krste: 当时的开放程度并没有达到我们希望的水平。
Ian:听起来你们当初的设计目标,现实地说,主要是为了在自己团队内部进行大量学术使用。那么在那个阶段,大家对于走出自身狭小研究领域、扩展到更广泛的应用,甚至商业化,有多大的意愿?
Krste: 回顾这些年参与的大量项目,你会意识到另一件事。我记得在某个特定的年份,我会想:“我对这个感兴趣,而对另一些东西没兴趣。”但五年之后,我却非常想去做当初不感兴趣的那些事情。所以你永远不知道未来自己会做什么。除此之外,在做了这么多项目之后,每次开发新处理器时,总会遇到同样的绊脚石。最关键的一点就是,你需要一个 C 编译器。别去纠结那些花哨架构里的奇思妙想——如果没有 C 编译器,你什么都做不了。很多项目都会掉进这个陷阱:他们不可能所有事情都靠汇编来完成,你需要的是一个完整的系统。而我当时看到的是,我们可以构建一个非常精简的基础,只要刚好能够运行 C 编译器即可,而且这几乎不会对其余的设计空间造成负担。有了这样一个基础,你就能让软件环境运转起来,同时仍然保留通过扩展进行优化的巨大自由度。 因此,这种非常精简的基础架构理念由此而来——在不对机器整体模型造成太多约束的前提下,能够以最快速度把系统跑起来,而这一点至关重要。
这也是这种模块化 ISA 设计起源的一部分。从受众来看,它主要是为我们自己服务,但不仅是当下的我们,而是五到十年后的我们。我不想再重来一次,而是希望思考如何让它成为一项能够长期延续的东西。你也知道,直到今天,它仍然在研究领域被广泛使用,对吧?
Ian:带我梳理一下这个过程。你们已经有了它,并且开始把它用于教学。有研究生在其基础上进行开发,使用你们构建的基础和各种工具。那么,是什么时刻让你们意识到,它已经不仅仅是教学用途,而是点燃了超出这个范围的应用火花?
Krste: 嗯,有些参与者会对我们说:“你知道的,这会变得非常大,因为你们是在伯克利做这件事,你们有名气,有扩音器,只要你们这么做,所有人都会听你们的。”但真正让我们意识到不同的是,当我们开始收到这些偶然的电子邮件、这些故事时——而且都是真的!我们会收到一封来自某个印度工程师的电子邮件,说:“你们为什么要改规范?”我们就想:“你是谁?为什么会在意这个?我们只是把它当作一个课堂项目来做。”于是我们会说:“这是一个作业题目——假设我们有这样一条指令,你的流水线会如何变化?”
Ian:哦,也就是说,可能是有人在线看过课程,或者拿到了讲座讲义?
Krste: 这些人是在别的地方开发产品和项目,他们依赖的是一份规范,而我们却为了习题集或班级作业随意地修改规范,他们就不明白我们为什么要改。我们的回应是:“第一,我们根本没意识到他们在看;第二,他们为什么会在意我们做这些修改呢?”
所以我们在2010年起步,到了2013年前后,逐渐发现学术界之外真的有很多人对它感兴趣,来自外部的需求非常强烈。那时我们并没有刻意去推广,但关注的人很多。因为我们把所有东西都开放了,完全按照伯克利的风格放到网上。一切资料都在那里,任何人都可以使用,而且确实有人在使用。

Ian:所以你们感受到了来自外部的推动力,这些主要是其他学术界人士吗?还是当时已经有更多来自企业的力量?
Krste: 我们当时也不太确定。有一些对这件事感兴趣的企业人士主动联系了我们。实验室里有与我们合作的工业赞助方,但同时也收到了不少来自外部的随机邮件。
于是,在 2014 年 8 月,我们去了 Hot Chips。到那时,我们已经为此工作了四年,设计也基本稳定下来。我们觉得这大概就是正确的设计。我们经历了多次迭代,做了多个芯片、多个编译器移植、多个实现。所以我和 Dave Patterson 一起写了这篇立场论文《Instruction Sets Want To Be Free》。我们逐渐意识到,有这样一个切入点:“为什么没有一个开放标准的 ISA?”
事后看来,我们本该提出这个问题,这一点几乎显而易见,但在当时,人们问的是“为什么你会想要一个开放标准的 ISA?”而我们反问:“为什么不呢?”仔细想想就会发现,其实并没有什么好的反对理由。于是我们写了这篇立场论文,提出“为什么它不能像计算领域的其他标准一样是开放的?”
我们确实得到了 《The Tech Report》 的报道,随后 《The Microprocessor Report》 也进行了报道。接着 Arm 写了一篇反驳文章,说实话,那篇反驳相当软弱!我们读了之后发现,里面其实并没有什么真正有力的论点。
Ian:我想在那个时候,他们也正好处在智能手机热潮刚刚开始的阶段。
Krste: 他们的论点主要集中在必须由一家公司来集中主导并构建整个生态系统。你付钱给他们,他们来打造生态系统,而你可以复用这些 IP。这就是他们反驳的核心:一个分布式的开放体系永远不可能建立一个让所有人都能在其上繁荣发展的稳定标准。尽管在计算领域的其他几乎所有方面,我们采用的正是这种模式。所以我们说,为什么不能有这样一种东西——一个开放的 ISA 标准。
随后我们去了 Hot Chips,并有意识地向业界推广这一理念,现场的反响远远超出我们的预期。业内很多人都表示“是的,这正是我们想要的”。而且原因与我们原先设想的并不一样。人们原本以为,“哦,这完全是因为成本低”,但这并不是大家最主要的不满。大家最主要的诉求是灵活性。至于来自其他公司的授权,仅仅是合同谈判就要花上数月,甚至在某些情况下需要数年时间。他们只是希望能够快速行动,并以自己的方式做事。现有的架构无法满足这一点,这正是他们最大的抱怨。当然,成本也是一个因素。但我认为这些其他方面的因素让我们感到惊讶——在 2014 年的 Hot Chips 上,我们收到了如此多的积极反馈。
Ian:那是在 2014 年。我们现在就在 SiFive 的办公室。SiFive 成立于 2015 年。投资人是如何说服你们创建一家围绕该 ISA 构建 IP 的公司的?
Krste: 这是一连串事件的结果。我们在 2015 年 1 月举办了第一次 RISC-V 工作坊,说实话我们有些意外——现在你仍然可以在网上看到那些视频。活动很快就满额了,来了 140 个人,但更让人震惊的是,现场出现了 40 多家不同的公司,这一点出乎我们的预料。另一个更大的意外是,Rumble 已经在一款游戏相机中出货了商用 RISC-V 芯片,也就是用于野生动物追踪的相机。这让我们意识到,业界对它的兴趣非常强烈。伯克利有很多面向产业的活动,我们都会举办开放日,邀请产业界人士来参加。来自 Sutter Hill 的一位人士曾来访,我们当时一直在讨论 Firebox,而 Firebox 是一个独立的研究项目,着眼于未来,提出“这些超大规模厂商将会构建自己的定制 SoC”。在当时,这还不是一件正在发生的事情,但我们已经在说,“看,这显然是必然会发生的。”
Ian:这在某种程度上也属于 AI 之前的时期吧?AlexNet 不是到 2012 年才出现吗?
Krste: 是的,就 RISC-V 本身而言,我们在当前这一波 AI 浪潮之前就已经开始了相关工作。但当时我们一直在关注光子互连、非易失性存储器方面的进展,也在思考这些大型数据中心集群将如何构建。我们开始提出一个名为 Firebox 的构想,这是一种规模非常大的数据中心架构。其中一个组成部分就是我们将构建定制硅芯片。我们当时已经看到,超大规模云服务商将会转向定制硅。
当时这件事颇具争议,很多人质疑他们是否真的会这么做。因此,Sutter Hill 的人对此产生了兴趣,后来来自 Sutter Hill 的 Stefan Dyckerhoff——至今仍是我们在那里的首席投资人——来访,我们一起度过了一个非常愉快的下午,深入讨论了对专用计算的需求。
这实际上构成了 SiFive 的基础:许多公司在不同领域都需要专用芯片,而 RISC-V 似乎是开展所有这些工作的绝佳基础平台。
这实际上就是 SiFive 的起源。当我们创办公司时,我们认为自己不会做 IP,因为我们设计了一种非常简单、易于实现的 ISA。我们已经将伯克利的一批内核开源了,那要如何靠 IP 来做生意呢?因此,我们最初打算专注于定制硅芯片。但在公司成立后不久,我们就意识到自己并不具备“隐身初创公司”的条件。所有人都知道“这些搞 RISC-V 的人一定会做点什么”。随后,许多大型公司纷纷前来寻求 RISC-V 内核。起初,我们的反应是:“走开,别来打扰我们!我们正忙着做别的事情!”但过了一段时间,我们意识到自己是一家小公司,而同时又有这么多大公司对 RISC-V 感兴趣。于是我们做出了战略转变,开始从事 IP 业务。我们的目标是让 RISC-V 无处不在,同时借此了解这些公司是如何构建 SoC 的,并进一步深入市场。
因此从那时起,我认为在最初大约 18 个月里,我们只有三家客户,因为我们还在学习如何做 IP。这与做芯片是完全不同的!所以我会担心那些认为自己可以从“有一个芯片想法”转型为一家 IP 公司的企业——这两者差别非常大。为自有设计流程构建一个内核以及相关的一切要容易得多,而要构建一个能被众多客户集成到各自流程中并完成硬化的内核则要困难得多。我们也从中吸取了教训,这花了我们一段时间。
因此在最初的一年半里,我们只有少数客户;但在那之后,随着我们逐渐摸清该怎么做,以及 RISC-V 需求的增长,在接下来的一两年里,我们的设计中标数量就超过了一百个。

Ian:所以我把这个从墙上取下来,是因为我一进来就看到了。这些是你们多年来做过的一些芯片,我想我家里也有其中一些开发板。
Krste: 因此需要认识到的一点是,当我们刚开始做这件事时,还根本没有 RISC-V 硬件。所以我们做了第一款商用 RISC-V 芯片,也就是 FE310 芯片——这样做是为了启动整个生态。硬件真的至关重要!所以在第一代阶段,几乎完全依赖于工具提供商,以及那些为我们的嵌入式客户开发各种工具的团队。
随后我们推出了第一款 Linux SoC——FU540,这一下子真正起飞了。从我们把这块板子交给 Debian 社区开始,你就能在图表上清楚地看到变化:他们从只有极少数软件包完成移植,在短短几周内就达到了大约 80% 到 90% 的软件包完成移植。这充分说明,在生态系统中拥有这些开发板的重要性。
此后,我们一直尝试通过硅片层面与客户展开合作。许多客户的产品并不适合作为开发板,因为它们的 I/O 接口是为其他应用场景定制的。要找到一款适合做开发板的产品,并且还愿意让从事开发的人能够接触到它,并不容易。但幸运的是,我们在这方面有一些非常出色的合作伙伴,比如 ESWIN,我们在那里有一位非常棒的合作伙伴。
Ian:如果我没记错的话,你们有一款开发板当时准备了 2000 块,本以为足够开发者社区使用,结果大概两周内就售罄了?
Krste: 是的!所以我认为,在 RISC-V 领域,至今仍面临的一个挑战是如何提供足够的开发硬件来满足需求。尤其是现在,如果我们快进到去年正式批准的 RVA23 Profile,大家都明白这是 RISC-V 的一个重大里程碑,但目前还没有可用的硅片。一切都在路上。我想很多爱好者都在疑惑,为什么我们还没有像 Raspberry Pi 那样便宜的开发板?他们可能没有意识到,这些开发板实际上都是“赔本赚吆喝”——我们每出货一块板子都在亏钱。但为了培育生态系统、让开发者动起来,这一步是必须的。不过这些都会到来,而且会以多种不同形态和规格的 RVA23 产品,由多家厂商推出,不仅仅是基于 SiFive 内核,也包括其他厂商。现在大家已经在标准上达成一致,共同推动生态系统向前发展。
Ian:所以你提到了 Profiles,我想我们稍后会谈到这一点——但围绕这一切的另一个层面是 RISC-V International。这是一个为推动标准发展而成立的机构,因此不再只是你和伯克利的团队在进行调整。你能谈谈 RISC-V International 最初的设想,以及它是如何演变的吗?因为自成立之初,你显然一直是其中的关键人物。
Krste: 我提到过,我们在 2015 年 1 月举办了第一次 RISC-V 工作坊。正如我所说,来了很多公司。很快就变得很清楚:企业确实非常希望这件事能够推进,但他们并不信任由大学来管理这一标准。
Ian:这是因为学术界按学术节奏做事吗?
Krste: 更多是因为学者容易被分心!你会看到一个闪闪发光的新玩意儿。就像我说的,研究主题经常变化,他们会说:“我现在要去做这个了!”
行业需要一个长期稳定的组织来管理这一标准。Rick O’Connor 参加了第一次工作坊,我与他合作,在最初创建了 RISC-V 基金会。我们的设想是,在第一年允许创始成员加入,并制定会员章程。想法是到第一年年底,我们将起草会员协议,所有人共同推进。我们原本预计会有六到七家公司参与其中。然而在第一年结束时,成员公司达到了 42 家。于是你可以想象,我们需要与 42 个法务部门一起起草会员协议,对文本进行逐条修订,而每一家都要花上一周时间。
但我心目中的模式是要确保我们搭建的是一个“大帐篷”。我更希望所有公司一开始都能在帐篷里,承担尽量少的义务,而不是制定过于严格的要求,把大家都挡在帐篷外,那样我们反而无法获得这些大公司的支持。因此,业界的响应非常积极。我们成立了基金会,其成员规模增长得非常迅速。 对我来说,有一点至关重要,那就是 ISA 在许可证规范层面必须是免费的,任何人都可以下载。我非常厌倦那种必须先到某个网站注册才能拿到一个 PDF 的做法——我们不希望这样。规范文档必须公开可获取,包括黄金模型和合规套件,任何人都可以下载并使用,这一直都是基金会章程的一部分。

Ian:所以,基金会的职责只是构建规范。如果我们把 RISC-V International 看作一个更大的组织,就会看到有专注于高性能内核和向量内核的机构,还有内存、汽车等各个不同的分支。在我看来,这些机构的运作方式是由成员驱动的,他们做的是成员希望他们做的事情——你看到的情况也是这样吗?
Krste: 是的,确实有一小部分工作人员。但所有工作主要都是由参与其中的志愿成员完成的。我认为还有一点需要认识到的是,RISC-V International 只负责标准,本身并不持有任何 IP。我觉得很多人会产生误解,说 RISC-V 就像微处理器领域的 Linux,但这其实并不正确,因为 Linux 是一个你可以下载的成品。你可以去 Linux Foundation,下载 Linux 内核和源代码。而在 RISC-V International,这里并不存在任何 RISC-V 内核,这一安排是出于两个刻意的考虑。其一是我们不希望去背书任何一种特定的开源实现。其二是出于出口管制方面的考虑。我们只拥有标准而不持有任何 IP 这一点非常重要。因此,它完全只是一个标准组织,根本不涉及任何 IP。这是在我们成立该基金会时就有意做出的决定。
Ian:我记得四五年前和时任 RISC-V International 负责人交谈时,她曾问我 RISC-V 推广过程中存在哪些障碍。当时我们已经看到 NVIDIA 在其设计中成功引入了 RISC-V 内核,Western Digital 也将其应用于硬盘。我当时说,感觉尽管这是一个开放的 ISA,但却缺乏一个标准化层。她告诉我,这项工作正在推进中,我们称之为“Profiles(配置规范)”。RVA23 作为首个重要的 Profile,于 2024 年底在整个产品线中得到支持。这对你来说是一个多大的里程碑?
Krste: 这件事意义重大。对我来说尤为重要,因为规范实际上是我亲自编写的,但让成员们达成一致是一项艰巨的工作。围绕哪些内容应该纳入、哪些不应该纳入,曾有过一些广为人知的激烈争论。我们非常希望能够支持 Android,而 Android 团队也非常善于与我们合作,明确他们认为哪些特性是必不可少的,同时也结合了他们在其他 ISA 上的经验。比如,Android SDK 目前仍然以 ARM v8.0 为目标。因此,你第一次推出的版本,基本上就会一直沿用下去,几乎是“用到无限期”。正因如此,我们希望打造一个非常丰富的 ISA。这一点非常重要,而来自他们的反馈、他们的意见,以及将他们希望加入的一些安全特性纳入 RVA23 发布版本,都是关键所在。
Ian: 我想在这件事进行的过程中我和 Balaji(Ventana Micro)以及他的团队聊过,因为他也参与其中。
Krste: 我认为需要认识到的一点是,这本质上是所有厂商达成一致的结果。我们一方面希望提供丰富的功能集合,让实现能够跑得非常快,同时让软件可以依赖这些功能的存在;但另一方面,硬件厂商也必须承诺交付这些特性,而不能被甩在后面。因此就会有这样的权衡:“这个特性在合理的时间表内是不是太难实现了?我们是否应该对这个特性持保留态度?”但最终我们达成了共识,这也是基金会运作的方式。所以我们非常高兴 RVA23 能够落地,它是一个相当完整的 ISA。
Ian:机器学习是否影响了开发?
Krste: 影响并不大,至少对 RVA23 来说是这样。它真正面向的是通用计算。AI 影响最大的部分是在向量指令集上。RISC-V 的向量 ISA 对我来说有着特殊的意义,我已经在这方面工作了很多年!
Ian:你与他们的合作经历是积极的还是消极的?
Krste: 非常积极!我是说,Cray 是我的偶像之一。我在研究生阶段阅读关于 Cray 机器的资料,后来在上世纪九十年代初我为 AI 构建了一款向量微处理器,那是我的哲学博士项目。许多从事加速器开发的人并没有意识到,其实他们本该直接去做向量机。在我略带偏见的看法中,很多加速器项目实际上都是做得很糟糕的向量机。
Ian:观点够犀利!
Krste: 确实是个火热的观点!向量扩展是其中非常重要的一部分——事实上我们还开过玩笑,说在 RISC-V 里,那个 V 其实就是指“vectors(向量)”,这是个双关。所以向量确实是核心组成之一。当我们设计向量指令扩展时——现在有些人抱怨它过于复杂!——我认为他们的思维方式并不完全正确。这个扩展的设计目标,是在不改变 ISA 的前提下,能够从非常小规模一直扩展到非常大规模,同时还能非常干净地支持混合位宽操作,而这对 AI 来说至关重要。你会看到窄数据类型累加到更宽的数据类型,这一点在向量指令集中是内建支持的。相比之下,如果你看看其他架构,它们在处理这些问题时方式都非常笨拙。在另外两种主流架构中,你必须做类似高位、低位、奇数或偶数的区分处理,结果是静态代码体积翻倍、动态代码体积也翻倍,对硬件资源的利用效率非常低。
因此,从这个角度来看,向量部分在设计之初就考虑了 AI,但总体而言,RVA23 是一个非常通用的 ISA。而且和所有 RISC-V 一样,它还保留了大量空间,可以在标准 ISA 上运行完整的标准软件栈。如果你希望在不干扰标准软件栈的情况下加入自定义扩展,也有充足的余地。这在开发过程中是一个非常重要的方面。现在,我们正在为 AI 开发矩阵扩展,而这在 RVIA 目前是一项进展非常迅速的工作。

Ian:这考虑的是在内核内部发生的计算,而不是直接附加到内核上的加速器。据我理解,两者之间的控制流目前还不属于规范的一部分。
Krste: 我认为需要认识到的一点是,RISC-V 是一种非常通用的 ISA,人们既可以用它来构建主要的应用核心,也可以用来构建加速器。因此,不同于 x86 或 GPU 领域那种“x86 在这边,GPU 在那边,拥有完全不同的硬件架构和 ISA”的情况,在 RISC-V 的世界里,模型是这样的:我们可以让应用处理器经过优化,用来运行功能丰富的操作系统、虚拟机监控器等;同时,我们也可以在 RISC-V 向量之上构建 AI 加速器,并将其嵌入为设备的一部分。妙就妙在,它们拥有相同的性能模型、相同的内存模型、相同的同步原语——因此,在两种架构之间切换时常见的那些头疼问题,如果两边都使用 RISC-V,就几乎不存在了。无论是主机还是设备,整体都非常无缝。
<strong>Ian:</strong> 当你们最初在制定这一标准、随后人们开始采用它时,你当时是否预料到它能够从微瓦级扩展到千瓦级的应用规模?
Krste: 是的!从技术上讲,完全没有理由不可以。我认为持相反看法的人只是没有想得足够深入。我的意思是,你当然可以设计出一种无法向下扩展的 ISA,但要设计出一种无法向上扩展的 ISA 却非常困难——看看 x86 就知道了,它几乎是从计算器级别一路发展到服务器。只不过,如果一开始没有考虑到这一点,在高端应用上效率会略低一些。
但我也知道,x86 阵营在向嵌入式领域缩减规模时遇到了极大的困难——他们始终没法把规模真正压下来,因为这个 ISA 太过庞杂,一旦你开始删减某些东西,比如摩托罗拉 68000 转向 ColdFire 时,那就已经是完全不同的一套 ISA 了,对吧?或者就像 ARM 当年所做的那样。
Arm 拥有多套 ISA,这本身也是一个问题。它们之间都存在内部碎片化。ARM 到底有多少种不同的 ISA?它们分别面向不同的市场和应用场景。而 RISC-V 采用的是一种模块化形式的基础架构,大家共享同一个基础,然后在此之上进行扩展,这是其能够从极小规模扩展到超大规模的重要原因之一。但这不仅如此,这个基础本身就是 ISA 的根本。即便我们只保留这个基础,在高端应用中它也已经相当不错了,只要有足够的硬件资源,就能让它跑得非常快。当然,我们还加入了其他指令,帮助它进一步提升性能。
Ian:这正是外界对 RISC-V 提出的一项批评——碎片化问题。如果一切都是开放的,又允许支持客户自定义指令,那么任何人都可以随意扩展,互操作性似乎就只能停留在理想之中。
Krste: 在我看来,这是最荒谬的说法之一,因为首先,住在玻璃房子里的人不该扔石头。我们不妨看看 x86——至少有两家主要厂商,两套不同的虚拟机监控器指令集,两种不同的 IOMMU 标准。他们仅凭两家厂商就把生态搞得如此碎片化!更不用说历史上的 3DNow!,以及 AVX512 之间的各种差异了。碎片化当然是坏事,但这些人最近才凑到一起,或许是想挽救不断下滑的 x86 市场份额。即便在单一厂商内部,x86 也问题重重——人们对 AVX512 的吐槽就是明证,对它根本不存在一致、连贯的理解。
Ian:我这儿有一张来自我们好朋友 InstLatx64 的精彩图片,你大概知道我说的是哪一张。它时不时会在社交媒体上流传,展示了 AVX-512 的碎片化现状。不过,只有两大主要分支的碎片化,总归比一千种要容易应对得多。
Krste: 是的,但关键在于,他们彼此是竞争关系。因此,至少在最近之前,他们并不认为有必要合作。现在看看 Arm,作为单一厂商——如果你看看他们实际上拥有多少种不同的 ISA。从 32 位到 64 位显然是一个巨大的跨越,也就是 AArch32 和 AArch64。但即便在 AArch32 内部,也有最初的 Thumb,随后是 Thumb,再后来是 Thumb-2,然后又转向 AArch64 以及不同的变体。要针对其中某一个进行开发是非常困难的。
因此,他们在这一层面上为不同的使用场景开发了不同的 ISA。转向 RISC-V 之后,所有人都通过 RVA 来协作。有一个组织专门负责制定统一的公共标准。理论上,Arm 作为一家公司也可以做到这一点,而直到最近,Intel 和 AMD 并没有这样做。所以我会说,我们通过成立一个负责标准的组织来避免碎片化,这正是当初的初衷。
不同的人可以加入不同的扩展子集——这正是人们想要的灵活性。在你掌控软件的情况下,互操作性并不重要。因为如果我是在做一把电动牙刷,我会围绕这把牙刷来优化市场控制,并为这把牙刷编写软件。我不会把 Ubuntu 下载到这把牙刷上。好吧,也许将来会,但现在我还不会在牙刷上跑 Doom。所以,这正是 RISC-V 的优势所在。它是模块化的,你可以只用你需要的组件来构建你想要的东西,并加入你希望添加的新功能。但这种模块化也可以通过 Profiles 来使用。我可以把一切都固定下来,规定每个人都必须具备这一整套内容。
因此,底层架构 RISC-V 是基于模块化设计的,可以按需组合。你可以灵活使用,也可以选择严格约束。具体该怎么做,要按不同市场来决定。凡是需要互操作性的地方,就使用一个 Profile。RVA 显然是我们为应用处理器所做的,而在嵌入式领域,现在也正在推动制定一个面向汽车的 Profile,用于汽车 MCU。因此,如果大家认为有必要构建一个标准的 RVM Profile,我们也将其定义为面向微控制器的方案。关键在于,多家厂商都看到了避免碎片化的价值,并且正在积极合作来实现这一点;而其他 ISA 提供方当初没有这样做,结果只能通过碎片化来相互竞争。
Ian:我现在大部分时间都花在数据中心,介于主机和设备之间。你会说如果目标是这个领域,那么应用程序的个人资料会转向数据中心,还是说数据中心需要更为具体的东西?
Krste: 我认为数据中心所需的很多基础内容已经包含在 RVA23 中。当然,总会有更多功能可以加入,而 RISC-V 的模式是对 Profile 进行大版本发布,比如 RVA23 就是一次主要发布。后续还会有一些小版本发布,用于增加选项,但不会引入新的强制性特性。因此,有时我们称之为扩展选项,比如矩阵扩展。这类功能并非总是必需,而且相对独立,所以会以扩展选项的形式提供。还有一些我们称为开发选项的内容,目前是可选的,但我们预计在未来的某个主要版本中会成为强制要求。不过,下一个主要版本还需要几年时间,因此我们需要提前开展工具方面的工作,并让整个生态在这些内容上达成一致,这正是开发选项存在的意义。对于高端数据中心来说,关于新功能的需求一直不断,同时也会出现新的 AI 数据类型,以及其他随时间演进的技术,这些都会进入下一个主要版本。但目前已经有很多厂商基于 RVA23 进军数据中心领域,并认为它已经能够满足其中相当一部分需求。
Ian:本周有人向我提出的一项抱怨是,当我们谈到其他行业标准,比如 PCIe 时,它们会先制定规范,其中包含强制和可选部分,人们据此去构建实现,随后再推出合规测试套件,以实现互操作性。我们在 RVA23 的合规性方面目前还没走到这一步,这部分仍有待完成。
Krste: 那方面有很多工作正在推进,我今天早上刚和一些人谈过!因此正有大量精力投入到推动这件事上。大家都明白这必须要完成,目前确实有很高的投入和动力。
Ian:我想我从大家那里听到的主要抱怨,还是合规测试套件准备所需的时间。这是否只是因为标准组织里参与的人太多所导致的结果?
Krste: 这其实就是“需要更多人去干活”的问题!
我认为其中一部分在于组织性。我觉得我们是有组织的,而且有一项明确的工作正在推进。因此,我对能够在合理的时间内完成这件事相当有信心。另一点需要认识到的是,合规测试套件固然重要,但所有厂商在设计过程中都会仔细对照规范进行检查。还有一点是大家在谈到碎片化时需要理解的——我真正担心的并不是有人做功能 A、有人做功能 B,从而导致分化;更大的问题在于有人误解了规范,把事情做错了。他们本意是合规的,但在某些细节上并不合规。这类问题往往是最糟糕的缺陷。不过,你也知道,厂商有责任去研读规范,并确保自己的实现符合规范。
另外一点——另一种“强制机制”来自上游软件。如果你下载了 GCC,而你的机器上出了问题,你就必须弄清楚到底是 GCC 的问题,还是硬件本身的问题。因此,这里存在一种“看不见的手”在推动兼容性。大家都在使用这些上游软件,如果它们在自己的机器上无法正确运行,就会去找出问题出在哪里。
但这还不够。我并不是说这样就已经足够了。我只是想说,情况并没有你想象的那么糟,仅仅因为存在这样一种“强制机制”——也就是大家都使用同一个上游版本来驱动各自的系统。

Ian:从 SiFive 的角度来看,你们拥有一系列内核——从嵌入式到智能计算领域,甚至延伸到向量计算。你们在推出新设计时,是如何决定要瞄准哪些市场的?
Krste: 嗯,我们寻找的是有客户的市场!
需要理解的一点是,我们几乎与所有主要的半导体制造商合作,而其中大多数都同时涉足多个市场。通常的情况是,我们先与一家公司的某个团队合作,随后发现新的机会,再与同一家公司中的另一个团队接触,这也会为我们带来对未来产品的想法。因此,对一些公司来说,就是在一家大型企业内部“先落地、再扩展”,不断寻找其他机会。
另一种方式是观察竞争对手正在退出哪些市场,或者他们是否在给客户带来压力,从中寻找机会。正如我所说,这让我感到惊讶——自公司创立之初,我们就收到了大量主动找上门的合作请求,运气非常好。从第一天开始,所有的大厂就都在与我们联系,而直到今天,我们仍然与这些重量级企业保持合作,因为他们将我们视为 RISC-V 领域的领导者。他们都希望转向 RISC-V,因此我们获得了大量的合作邀约。但与此同时,我们必须在内部评估一个市场是否值得进入,因为我们需要获得工程投资的回报。
Ian:你们即将推出一系列符合 RVA23 规范的新产品。这只是把现有内核调整为符合 RVA23,还是需要全新构建?这些产品是否已经有对接的上市客户?
Krste: 例如,在数据中心领域,客户已经在使用我们高端的 P870D 内核进行流片。该内核可以扩展到 256 核节点!
但需要理解的是,这是我们第三代乱序执行内核。最早是 P550,然后是 P670。现在这一代是 P870D,另一款已经交付客户并实现流片。因此,我们已经经历了多代高端乱序执行内核。没错,这是一次迭代,但我们是在充分利用前几代的经验。构建这类内核时你会意识到,高性能乱序执行内核存在大量潜在的缺陷,如果没有经历多轮硅验证迭代、没有完成数万亿周期的 FPGA 仿真、没有达到这种级别的核实,系统就很难可靠运行。这正是我们内核所具备的成熟度,并且这种成熟度正在传承到下一代设计中。同时,我们也在持续加入对 RVA23 的新特性支持。
Ian:当一家公司发布一款产品时,很多人——除非他们深度参与这个行业——都会问什么时候可以买到。如果是像 AMD 或 Intel 这样的芯片,基本上是立刻就能买到。如果是 IP 公司,那就要晚一些,因为他们需要等待客户。有一些针对 SiFive 的反馈是,当 P550 发布时,从发布到我们真正看到硅片之间隔了整整三年。你是否希望未来这一过程能加快,还是说这主要取决于客户?
Krste: 其中一个决定因素是我们选择在什么时候发布产品!这里面有很多不同的因素。有些产品比其他产品需要更长的前期准备时间。但当我们把可用于量产的 RTL 交付给客户之后,接下来的问题在于他们所构建的系统有多复杂——包括他们自身走到流片、板级设计以及完成各项认证的路径。因此,这个过程不太可能少于两年。当然,越快越好。
但你知道,其中一个例子是我们的一些智能核心——得知它们明年就会装车量产上路,而下一代则会在后一年上路。在汽车研发方面,路线图的某些部分推进得非常快。所以看到这一点令人欣慰,有些方面确实进展神速。
Ian:是什么让你每天早上充满动力?
Krste: 闹钟!
Ian:这是个聪明的回答。
Krste: 我们是一个全球性的组织,所以经常要很早开会。但我喜欢造机器,喜欢解决问题,喜欢做大型硬件,也喜欢做小型硬件。任何类型的设计问题我都觉得很有意思。去学习新的领域,并思考如何以一种通用、可编程的方式来解决它们。同时也在思考,如何把各种零散的加速思路整合起来,放进一个人人都能使用、并且在未来可以加以杠杆利用的通用可编程平台中。
Ian:你会怀念学术界吗?
Krste: 我现在每周仍然会去校园一次。我还有几名学生刚刚毕业。我最想念的是研究生,这是最主要的。所以我确实会想念,但我仍然会和校园里的同事们保持来往。