跳转到主要内容
Chinese, Simplified

今天我将首先向您介绍RISC-V,它是什么,为什么您应该感兴趣。 我将谈谈RISC-V在状态方面的位置,选择一些主题,我认为这些主题与我们的软件受众有关,现在正在讨论该社区正在进行的讨论,争议和事情。 积极参与发展,然后展望未来以及卡片中的内容,可能会有什么机会与开放标准和开放式指令集做一些不同的事情。

RISC-V 介绍

此前有多少人听说过RISC-V?基本上每个人,但有一些例外,所以我将简要介绍一下RISC-V是什么。首先,RISC-V是指令集架构的开放标准。什么是ISA?这实际上是软件和硬件之间的接口。这是指令的编码,这些指令的语义。说实话,还有很多与之相关的东西,比如内存模型和那种性质的东西。

与ARM或MIPS或x86相比,RISC-V是一个开放标准,意味着任何人都可以自由地实现它。除此之外,它还有一个开放的开发模型。这是一个非盈利组织,旨在管理RISC-V RISC-V基金会的发展,RISC-V基金会的成员包括Google,Qualcomm,Microsemi,Nvidia,NXP以及其他各种公司。 。

我应该说清楚的一件事是,今天我将就开放实现或硬件和参考设计的开源实现进行大量讨论,但这不是RISC-V的必要属性。我们中的许多人都感兴趣,因为我们对开源有兴趣,因为它适用于硬件,但RISC-V并不需要开源实现。实际上,RISC-V基础设置是为了支持专有和开放实现,这是一个非常有意识的决定。

RISC-V的另一个方面与一些其他更成熟的专有指令集不同,它设置为允许并且实际上鼓励自定义扩展。如果我去获得许可证,购买许可证来构建ARM处理器,即使我获得了体系结构许可证,Broadcom或Qualcomm或Samsung等公司也允许我自己实现ARM指令集,也没有能力添加我自己的自定义指令。这最终会让ARM从我们的客户那里获得反馈,然后ISA的未来版本可能会添加新的指令,但这并不是个别被许可人能够添加的,我们可能想要做的,也许是一个新的安全功能,您希望实现或作为特定用例的加速,您希望添加自定义指令。

当然还有其他方法可以获得加速,对于非核心的更紧密耦合的加速器,但自定义扩展指令集本身是不受限制的。正如我所提到的,RISC-V有一个开放式的开发过程。您必须是RISC-V Foundation的成员才能参与一些开发讨论。这是相对较低的成本,我认为公司的最低入场费约为每年5,000美元,然后免费为活跃的开源开发人员或个人100美元。

我不打算画一幅画,说一切都很棒。开源开发和开放式协作是一个难题。从第一天开始就不是所有的彩虹和独角兽,但在许多情况下它已被证明是成功的。关于记忆模型标准的工作是一个特殊的例子,我认为这是一个真正的成功故事,涉及行业和学术界人士的共同努力。 RISC-V本身来自加州大学伯克利分校,所以它基于一系列学术项目。它被称为RISC-V,因为它实际上是他们所使用的RISC风格架构的第五次迭代。最终他们认为值得付出额外的努力来记录这一点,审查所有的设计决策,然后分享更广泛的内容。

由于我们现在看起来几乎是一种奇怪的情况,我们与之交互的几乎所有其他类型的界面都是以某种方式开放的标准。从HTTP,SQL到甚至USB等硬件上的外部接口,但硬件和软件之间的基本接口仍然是非标准的,不能自由实现。

使用RISC-V指令集架构本身,我将完成一些技术设计决策,但实际上,这对任何ISA都是一件好事,它相当无聊。它没有经历特别古怪或有趣的设计决策。 64位和32位ISA,RISC ISA已经存在了几十年,并且有关于如何构建它们的丰富知识。通过良好的工程工作已经应用了这些知识,以生成RISC-V标准。但是没有特别关于用户级别的ISA,因为这是用户空间将要执行的软件,这是特别新颖的,除了它是开放的,标准的并且越来越多地得到工业合作伙伴和软件的支持。

RISC-V的一个关键目标是可扩展性。它的目标是成为一个ISA,它将一直扩展到高性能计算或机架规模计算,一直到没有MMU的深度嵌入式设备,甚至比单个微控制器更小的用例。 ISA很可能是一个小核心,它在一个更大的SoC设计中深深嵌入某些IP模块中。这实际上是一个真正的问题,并且最初吸引了像AMD这样的公司到RISC-V。在早期的一次RISC-V开发者会议上,来自AMD的人举手表示他们感兴趣的原因是因为当他们发布AMD处理器时,最近有一个处理器上有15种不同的ISA。

你有你的声音模块和开机管理,设备,无论AMD的管理引擎是什么,这些都倾向于实现不同的ISA,它们对用户来说有些隐藏。当然,就维护不同的编译器工具链而言,这是一场噩梦。一般来说,RISC-V方法是,如果标准解决方案不适合您,那很好,您可以添加自己的扩展。我们已经非常谨慎地确保用于定义这些自定义扩展的大量编码空间。

当然,这种灵活性可能是一个缺点。正如Justin所说,我花了很多时间在编译器开发上。我是LLVM的RISC-V后端的主要作者和上游维护者。当然,其中一个挑战是RISC-V这样一种多样化的架构。它的结构使你可以分成这一系列的基础ISA,然后有一系列标准扩展,它们分层在不同的功能上,如MAFDC,它是Multiply,Atomics,Single Partition Floating Point,Double Partition Floating Point,和压缩指令集。因此,如果你听到人们谈论RISC-V,他们会很快开始谈论这些非常不透明的小序列,这些ISA字符串,这有点奇怪,我承认,但你确实已经习惯了。

我提到了基础ISA,主要担心的是RV32I和RV64I。这些是32位RISC-V ISA的仅整数子集,因此寄存器的宽度为32位,64位为ISA,其中寄存器的宽度为64位。这些可以在具有MMU,TLB和能够运行Linux的完整虚拟内存系统的系统中实现,或者如我之前所说的那样,可以实现更小,更轻的重量。

还有一个压缩指令集,这是我之前提到的C扩展。它实际上是一个可变宽度指令集,您可以在标准的ISA,16和32位指令中混合使用。如果您有自定义扩展,您实际上可以转到48位或64位指令,为自定义添加提供相当大的编码空间。它的一个有趣的方面,特别是对于我们今天所讨论的,就操作系统设计多样化的有趣方向而言,是对特权与非特权ISA的分离。 RISC-V社区中存在一些争论。可以说其他国际检索单位没有这么干净的分裂。可以说,由于语用学和现实问题,RISC-V拆分并不是完全干净,但至少尽可能多,用户级别ISA之间存在分歧,因此指令语义的定义忽略了支持用于运行操作系统的问题,例如处理中断和异常以及对虚拟内存的支持,或其他机器级控制状态寄存器,您可以使用这些注册表来自定义处理陷阱等等。

然后是特权ISA,它定义了所有这些东西,并定义标准接口足以,例如,启动,FreeBSD或Linux内核。当然,除了ISA之外,还有一大堆标准,你会开始关心它们。其中一些属于RISC-V基金会的范围,其他则不属于调试规范,因此请指定您需要做什么才能通过J-tag与RISC-V实现挂钩GDP 。

边界上的一个是中断控制器规范。对于那些早期熟悉ARM的人来说,受到不同中断控制器激增的影响,我们试图为RISC-V指定一个标准的中断控制器,它现在已成为两个标准的中断控制器。这些都是选择加入,事实上,特权ISA本身也是如此。当前使用RISC-V指定的特权ISA就像基本用户级ISA一样,试图非常无聊。只是为运行现代操作系统提供合理的支持。

如果你想做一些更新颖或更有趣的事情并超越人们倾向于使用的当前界面,那么你完全可以自由地使用标准的,无特权的ISA并且希望与编译器工具链完全兼容和用户级软件编译为标准操作系统API,但然后在特权方面完全自己做。

 

背景:FPGAs,ASICs和半导体电子

我将给出一些背景知识,我不太清楚人们对硬件和FPGA的熟悉程度,所以我想我只需花几分钟来定义我可能会指的术语。后来在谈话中。 FPGA是现场可编程门阵列。它是有效的可编程硬件。你买了这些主板之一,这是Digilent出售的Nexys A7,售价不到300美元。然后,您将采用硬件实现,假设用Verilog编写,这是一种硬件描述语言。您将通过稍微笨重的FPGA综合工具来解决比特流,然后将该比特流放到FPGA上,并假设该比特流可以实现能够运行Linux的RISC-V核心。

通过lowRISC,我们有一个FPGA就绪分布的RISC-V内核以及相关的SoC外设,这些外设在其中一个Nexys板上以50兆赫兹运行,这明显比定制A6慢一个数量级,因此定制芯片。另一方面,它可以非常快速地迭代。可能需要半个小时或一个小时才能完成FPGA工具的运行,但随后又可以将其恢复,相比之下显然是生产芯片的巨大成本和非常非常长的交付周期。当然,对于50兆赫兹来说,它并不适用于Linux,但实际上对于任何基于微控制器的系统来说都是非常合理的速度,[音频不清晰00:14:11]等等。它实际上与微控制器芯片没有什么不同,除了成本,实际上是不同的,但在性能方面,大致相似。

我提到使用FPGA的一个主要优点是快速迭代时间。这对于开始获得某种性能数字也很有用,因此您可以拥有一个有效的真实硬件实现,并且可以将其映射到FPGA并从中获取一些数字。很容易出现一些误导性的数字,稍后我会谈到虚拟内存优化,使用RISC-V进行探索,使用开源RISC-V实现作为基础。

如果你只是天真地从FPGA中获取性能数据,你可能会得到一些误导性的结果,因为DDR控制器的存储器接口是一个强化的逻辑,它以有效的全速运行,因此运行速度很快,而你的核心正在运行相对较慢,有点50兆赫兹。核心性能与内存性能之间的比例有些偏差。相对于真正的ASIC,相对而言,L2缓存未命中的成本要低得多,便宜得多。即使在已发表的文献中,这也是可以惹恼人们的事情,因为除非你实际生产或实现模拟内存控制器,否则它实际上并不是一件容易的事情,模拟内存控制器正在进行模拟优化。

在您完成所有这些之前,修改软件模拟器,QEMU,gem5或类似的东西仍然是一件非常有用的事情。在生产ASIC方面,生产真正的芯片,以及不熟悉半导体经济学的人,有效地你有两个选择,你可以产生一个非常小的数字,所以,10s到100可能你通常通过一个多项目晶圆。您可能还记得,半导体制造商是一个光刻工艺,因此在多项目晶圆上,中介将从一大堆不同的研究团体或公司收集测试设计,将它们全部放在同一面罩上,然后他们'生产一些晶圆,将它们骰子,然后运回给你。

经济上只产生10到100个零件,但这当然是非常有用的,因为你花费10万美元来获得这些测试年份,然后花费数百万美元,在一个完整的批量运行的面具上。问题在于,当你进入完整的批量运行时,你会为自己购买一个完整的面具,这是你的设计被剔除了很多次,而且当你生产数百万个芯片时它真的很经济。中间存在这种相当困难的问题,这绝对是开源硬件的真正障碍之一。从很小的社区访问的东西到稍微大一点的人们访问的东西是很困难的。它会变大或回家。

在半导体许可方面,我提到过,ARM和MIPS有类似的模型。 对于可授权的指令集架构和核心设计,它通常适用于您与公司交谈的地方,您需要支付初始预付费,然后根据您生产和销售的芯片数量支付版税。 这可能与RISC-V相同,具体取决于您所说的公司,但我认为大多数公司甚至那些拥有专有实施的公司都会花费非常低的前期成本,或者只是前期成本而且没有版税,或者前期成本非常低 然后是一些版税。

如果您采用完全开放的实施方式,那么就没有前期成本,没有版税,您可以根据需要多次设计或修改设计版本,而无需担心增加许可费用。

 

RISC-V 的状态

RISC-V自公布以来已经持续了大约四年。 Berkeley向全世界发布了它,RISC-V的原始开发人员随后创建了一个VC支持的初创公司SiFive,它在RISC-V生态系统中做了很多工作,但也有许多其他供应商正在生产核心和在它周围生产工具。

在编译器方面,GCC支持是上游。正如我所提到的,我主要推动LLVM的RISC-V后端工作以支持Clang。对于我们需要支持的大部分RISC-V变体的上游支持,并且正在积极开发中。 Glibc是上游,Musl有一个下游端口,应该很快就会上游,有一些初始的Rust端口基于我为裸机工具链做的LLVM工作,因此Linux在LLVM开发的下一阶段被阻止。还有一些Go支持暂停了一段时间,但我相信现在又有所回升。

我提到模拟是一种流行的入门方式。尽管您可以修改感兴趣的RISC-V核心的真实Verilog实现,但是开始修改更高级别,易于修改的软件表示显然更有效率。有一些选择,例如Qemu,gem5,以及什么成为RISC-V参考软件模型的事实上的参考实现是来自加州大学伯克利分校的尖峰。还有TinyEMU,这是一个值得一提的好项目,因为它是由QEMU和FFMPEG成名的Fabrice Bellard编写的。

在可用硬件方面,SiFive在Linux K4上生产开发板,释放出自由。船上有一个微控制器类开发,还有一个来自中国制造商的Kendryte板。最近,恩智浦已经启动了这项开放的ISA工作,其中有一个开发板,其上有一个PULP微控制器,然后有FPGA就绪分发,就像我们工作的那样,我们在lowRISC上发布。

在开源实现方面,两个主要来源当然是加州大学伯克利分校和SiFive支持的Rocket,以及苏黎世联邦理工学院的PULP,现在包括各种调用,所以在微控制器方面,但在Linux方面,设计称为阿丽亚娜。

在操作系统方面,至少支持FreeRTOS,Zephyr,seL4,也很有趣,一些关于Tock的初步工作。对于之前没有遇到过的人来说,Tock是一个非常有趣的使用Rust实现的RTOS,并且有一些基于Rust RISC-V LLVM工具链的针对RISC-V的初步工作。它有许多有趣的方面,它充分利用了Rust的内存安全性,并且还有一个用于在RTOS中加载应用程序的模型,而更常见的是它将被编译成单个二进制文件,并且它们都在编译时固定。

Linux和FreeBSD支持是上游的,并且发展良好。在更具实验性的一面,还有HarveyOS,它是Plan 9的现代重新构想,也有HelenOS端口。最近有人谈到了HelenOS在FOSDEM的工作。我们有一系列的引导装载机。我稍后会更多地谈论bbl和OpenSBI,因为它触及了RISC-V社区中一个有趣的话题。特别是在Debian和Fedora上,还积极开展工作。

用于这两个发行版的基于Linux的系统的大部分是编译和工作的。从某种意义上说,我在LLVM方面实际上是一个拦截器,因为Rust已经成为编译现代Linux系统的一个非常关键的依赖,例如在Rust中重写librsvg等库。在这两种情况下,他们都在使用旧版本的librsvg之前将其移植到Rust,并且等待上游LLVM支持Linux二进制文件。

 

为什么RISC-V页面为4kb

我在这里引用了一个很大的引用,你会很想读它,但我只是想了解一些我真正喜欢RISC-V规范的东西,这对于大多数 主要的设计选择,如果你想知道为什么做出决定,那么这些非常好的小旁白,可以解释究竟考虑了什么,做出了什么决定,以及为什么他们这样做。

页面大小是一个,这仍然是一个有争议的话题。 有些人认为4千字节的页面有点旧,但是如果你想重新讨论最初的讨论,那么在RISC-V特权规范中有一点点好处,实际上大多数设计决策都有类似的内容,比如 用户级规范方面解释了为什么RISC-V不支持条件移动,即使ARM AR64电源X86和大多数当前的ISA都采用了这种选择。

 

SBI:背景

我想了解一些我认为与这些受众特别相关的主题。我之前提到过的第一个问题,就是本期SBI或Supervisor Binary Interface。这在视觉上可以追溯到分离用户和特权级别ISA的想法。因此,在RISC-V中,不仅有两个权限级别,至少在Linux有线系统上,您往往至少有三个权限级别。你有机器模式,这是最有特权的级别;使用该权限运行的代码通常具有对系统的完全访问权限。这就是早期无法处理的所有东西最终会陷入困境。

管理程序级别是您的操作系统内核将运行的,用户级别当然是您的用户空间二进制文件将运行的内容.RISC-V社区尝试定义称为SBI或Supervisor二进制接口的东西,其目的是在主管和机器模式之间提供明确定义的接口。这用于处理无法从管理程序模式访问的操作,或者可能的操作,其中最佳实现可能因实现而异,或执行环境与执行环境不同。

编写Linux内核和FreeBSD端口是为了使用SBI内核来实现某些关键功能,例如设置定时器,用于处理器间中断,用于远程防护,有一种基本的调试控制台实现,以及关闭等功能系统。

我提到了M模式。除了具有完整的系统访问权限外,您还可以使用它来模拟任何缺少的功能。假设我有一个不支持未对齐加载存储的系统,即使用户级别规范说我应该,或者它没有浮点的硬件实现,或者它可能具有大多数浮点的实现说明,但不是全部。然后,您可以将这些合法指令捕获到M模式,让M模式固件实现这些指令,然后返回到Supervisor模式,因此从某种意义上说,它是一种非常非常小的虚拟化形式。您可以在此基础上查看运行的内核,以某种方式进行最小程度的半虚拟化。虽然您认为这种情况的确切程度取决于SBI界面的确切内容。

已经有一些建议将其进一步扩展到甚至处理诸如上下文切换之类的事情,其中​​我们谈到对RISC-V ISA进行各种扩展的动机。其中一些扩展可能会引入可见状态的新用户。我们在使用标签内存在安全性方面使用扩展之前肯定遇到过这种情况,您至少需要在每个进程的基础上更换标签控制寄存器,或者您可以使用它矢量支持或其他加速器。

这里的挑战之一是它在哪里结束?你可以为上下文,保存和恢复实现API,但至少从我们的经验来看,实现标记内存支持,它并没有结束,因为我们还希望实现支持,以便在将内存从内存交换到支持时保存这些内容存储,实际上还有许多其他情况。这很困难,我认为目前的SBI提案试图保持非常非常小。有些提议尝试和扩展它的方式与ARM上的固件接口已定义用于电源和时钟管理的方式相同。

这在RISC-V社区中引起了很大争议。启动Coreboot项目的Ron Minnich在主列表上写了一系列写得很好的帖子,讨论他对这个方向的关注,特别是对于M模式,你有一个非常非常特权的软件提供核心系统功能以一种操作系统内核可能无法替代内省的方式抽象出硬件,或者根本没有任何可见性。这使得很容易让这些非常可能不透明的二进制blob在启动后保持驻留,从实用的角度来看,内核开发人员通常不喜欢它。他们发现这些斑点往往是马车,并成为麻烦的来源。它还有安全问题或更普遍的关注,即修改和替换您拥有的系统上的代码的能力。

 

虚拟化

 

虚拟化是RISC-V社区中成功协作和开发的另一个非常好的例子。 RISC-V最初的想法是,除了M,S和U模式之外,你还有一个H,你的管理程序模式,高于机器级别。这将是虚拟化支持的基础。 Paolo Bonzini是KVM维护者之一,他在KVM和QEMU社区非常活跃。他们以这种方式反馈的一些人有许多缺点。虽然这实际上是ARM开始使用ARMv7的一种方法,但它们实际上后来转移到更接近x86的东西,现在更接近RISC-V管理程序扩展,最终由Paolo与Andrew Waterman和其他人一起提出。

实际上,它不是添加这种新的H模式,而是添加了虚拟化管理程序和虚拟化用户模式。我建议您查看主要列表或幻灯片以获取更多详细信息。我认为这是一个例子,说明在某个特定领域拥有专业知识的人,希望参与社区提出建议。写它并发送它实际上工作得很好,这表明有机会产生真正的影响。

 

RISC-V和开放硬件的未来

展望RISC-V和开放式硬件我们需要什么才能获得快速的硬件和软件创新?从我的角度来看,有一个愿望清单,你需要一个想法,或者你打算做什么?某种开放标准,因此有一个开放和共享的标准,因此在编译器方面有一些共享基础设施的机会,操作系统每次从头开始这样做显然是行不通的。也许,最重要的是,高质量,经过良好测试,或尽可能地验证开源实现,您希望访问可以从架子上取下的东西。无论是软件模拟器还是硬件实现。

您需要一些保证,当您在新的更改中添加一些内容以进行修改时,如果它不起作用,则可能是您的错,而不是因为它是与胶带一起保存的所有混乱。一个活跃的开发社区,这样当你真正开始分享补丁或想法时,所以有一些回应,它不仅仅是进入一些空白,当然还有一些以某种方式捕获这些贡献的机制。 RISC-V基金会经理就是其中的一个方面,它正在回应提案并进行讨论。我认为可能还有更多来自Swift和Rust社区的社区,他们实际上拥有更加发达的方法,可以从社区成员那里获取详细的提案或RFC,然后应用生命周期来查看谁做出决定在那些,给出了什么反馈,时间表和那种事情。

当然,另一方面是在未来的规范修订版或硬件版中提供这些更改。使用lowRISC,这是我共同创立的非盈利组织,我们正在努力建立一个模型,我们有一个常规硬件磁带,这样当人们为这些变化做出贡献时,你可以得到一些保证。 ,在18到24个月的下一个版本中,它将以某种形式提供,这些形式由我们或由生产衍生设计的工业合作伙伴生产并将其运回给您,因为我认为使其真正重要。

 

可锻铸硬件

我已经谈了很多关于RISC-V的机会。它显然不是一个完全干净的平板机会,除非你抛弃所有操作系统,以及所有基础设施,你想要重用的软件,但情况永远不会如此。对于某些细分市场,实际上存在大量自由。您不需要依赖Linux内核,也不需要依赖Libc,您不需要依赖之前已经完成的相同设计决策。在某些情况下,由于您希望在现有生态系统中使用,因此您可以在变更范围内进行限制。而有些人则有更大胆的能力。在许可方面不再有任何限制,这仅仅是经济问题,以及为这些变化生成软件堆栈以及维护软件堆栈的相对成本是否超过了收益。

使用RISC-V我们或任何指令或架构,我们在安全性,能效和性能方面面临着我们一直面临的相同挑战。但是,我们确实能够查看跨越所有这些元素的更改,因此ISA,微架构设计,操作系统,编译器,语言等等。然而,虽然通过以前的指令集架构显然存在这方面的问题,但它始终是闭门造车。维护指令集架构的供应商将从社区成员和被许可人那里获取输入,但这不是一个开放的过程,并不是任何人都可以使用的过程。

 

从想法到原型

假设你有一个架构修改的想法,我将在下一张幻灯片上有一个例子。这些步骤只是简单地确定您需要做出哪些更改。使用模拟器生成初始原型,进行必要的软件更改,调试和工作是最有意义的。修改硬件实现,使用FPGA或Verilator进行测试。将其发布到更广泛的社区方面的一个重要步骤是发布这些更改并进行编写。当然,这是通过学术界和计算机体系结构研究永远完成的事情。

RISC-V的一个不错的方面是我们能够产生更好的评估,并且与现有工作进行更有意义的比较,因为有一系列高质量的开源RISC-V实现需要修改,而不是只是尝试根据估计修改x86内核或ARM内核时的样子来生成模拟。

正如我所提到的,包含在运输硬件中的途径可能很困难,但是有多个团体在这方面有各种解决方案。它或者只是被那些正在做RISC-V的人所采用。我提到了从加州大学伯克利分校出来的SiFive,他们在这方面做了大量的工作。他们的模型是尝试并最终降低新硅片的成本,因此降低新设计开始的成本,并且我所在地区还有一大批其他初创公司和组织。

我认为这是一个很好的例子,就是为RISC-V添加直接段支持。我称之为基于页面的虚拟内存的优化。优化不使用基于页面的虚拟内存,因此您可以通过将进程的虚拟地址空间的某些部分直接映射到连续的物理内存来避免TLB。 2013年在ISCA上发表了一篇论文,对此进行了讨论。它详细介绍了为什么它可能有趣,即使你有大页面或大页面。简而言之,您在对齐和大小方面获得了更大的灵活性。

这实际上非常好,因为去年有一篇论文实际上是由原作者提出的,他们从2013年开始采用这个想法,然后将其应用于RISC-V硬件设计。他们不会批评他们以前的工作。他们指出了他们在模拟方面所使用的方法的局限性,实际上它产生了错误或误导性的结果,因为它是错误的计数,它引入了一些工件和TLB未命中,这些都令人困惑。

最终对RISC-V设计进行了50行修改,该设计在Chisel(硬件描述语言)中实现,然后在Linux内核中实现400行,因此是一项相对易于管理的工作。 Rocket是我之前提到的RISC-V设计之一,由UC Berkeley开始,现在由SiFive支持,并且用Chisel硬件描述语言实现,你可能听说过Verilog和VHDL。这是一种更新,更新颖的硬件描述语言,在Scala中作为嵌入式特定于域的语言实现。

其中一个希望是软件开发人员更容易访问它。人们对于这个目标的成功地点,或其他小说HDL是否有不同的看法。说实话,使用lowRISC,我们已经采取了一点退步,我们更专注于传统的硬件描述语言,如系统Verilog,因为我们发现它在处理FPGA和硬件综合工具时增加了更多的复杂性,并且它有可能疏远软件开发人员和硬件开发人员,但是有些人用它来度过非常非常高效的时间,所以它是摇摆和环形交叉。

新的安全方案

我认为在新颖的安全解决方案方面存在巨大的潜力。使用lowRISC,我们已经完成了TAG内存的工作,它有效地在非常精细的基础上关联元数据。在我们的例子中,对于具有额外标签的每个存储器字,例如2到4位,可用于编码额外的访问控制信息,或者您可能想要标记存储器的其他情况。来自实习生的一项非常好的工作是查看为Linux内核添加支持所需的工作,我想这涉及我之前提到的一些问题,SBI,你可以在哪里看到你在哪里正在添加一个扩展,它实际上触及了操作系统内核的大部分内容。即使每个部分相对较小,也很难定义接口的API,这允许您抽象掉所有这些,除非您最终最终重新实现抽象层中的大部分操作系统。

有一个关于幽灵减轻的有趣故事。当然,RISC-V的超标量实现与任何架构作者的实现具有相同的基本问题,但我们在BOOM中非常好,这是一个开源,超标量RISC-V设计,一个完整的硬件实现,以便测试和探索减轻诸如此类问题的研究思路。

最终目标

对我而言,最终目标是在职业工程师,编译器作者,微架构师,ISA设计师及其他人员参与的每个人之间建立一个富有成效的公共反馈循环。 这种情况在ARM,MIPS和英特尔等公司的小型圈子中已经明显发生,但我认为RISC-V的机会将以更多的大众参与方式更公开地发生。

没有理由不将RISC-V作为每个本科生学习计算机体系结构设计的起点,正在攻读博士学位的研究人员。 研究,想要进行设计并修改它的初创公司。 当然,最终的希望是它可以带来更快速的创新,以及从设计到真正的运输硬件更清晰的路径。

 

结论

对我来说,首要的关键挑战是降低进入门槛,所以我在本次演讲中讨论了许多障碍。 增加参与的动力,回到确保您拥有一个活跃的开发社区,以及关于何时实际共享这些更改的明确故事。 谁对此作出反应? 他们如何被收养? 你怎么能看到真正的运输硬件? 成功,灾难点是我们实现了这一切,我们获得了一个有趣,多样和新颖的流程实现的景观,我们如何确保最大化代码重用和所有这些不同架构之间的基础架构共享?

在操作系统级别和内核级别的吸引力方面可能还有更多工作要做,以便为此提供支持。 如果这对你来说听起来很有意思,我应该注意到我们正在招聘,我们有7个空缺职位。

 

问答

参与者1:我很好奇 - 我认为你几乎没有碰过它 - 实现之间的差异,比如SoC,就像整个组合系统一样。最近,我参与了将某个操作系统移植到ARM,我们学到的以及之前不知道的是,在移植到ARM时,编译器实际上完成了大部分工作。实际工作实际上是支持其SoC。 RISC-V的情况如何?他们的SoC是否像ARM领域一样多变,或者他们更像是在英特尔世界,基本上所有东西都或多或少都是一样的?

Bradbury:从某种意义上说,它们不是大量的航运生产RISC-V SoC还为时过早。有人试图对过去最痛苦的案件进行标准化。中断控制器就是我提到的一个例子,其中有一个标准的中断控制器可以大大简化移植RTOS或操作系统的任务。对于任意外设,如UR,SBI,I²C,还有待观察。

通过我们正在做的事情,我们正在努力研究人们能够使用的非常明确的可重用组件,谁能够采取并适应他们的设计,但并不要求人们这样做。我们在其他架构中看到了多样性。查看Linux内核上的UI实现数量。希望它不会增长太多,但这只是运输硬件的一个事实。

参与者2:Linus Torvalds最近写了一篇关于ARM以及它如何在商品服务器领域取得成功的文章,直到有一个可行的桌面开发环境供人们购买并在家中使用。您认为RISC-V在那个旅程中的位置在哪里?

Bradbury:我认为在服务器领域还有很长的路要走。即使ARM已经拥有它的力量以及服务器领域的努力,它仍然是一个棘手的道路,各种高调项目似乎被搁置,如Centric。初始RISC-V采用阻力最小的两条路径是深度嵌入的空间,因此人们以前使用自定义内部ISA的情况,以及团队为其重写编译器的情况,在十年前就已经存在,并且维护完全是痛苦的,或许是他们正在使用ARM,他们有理由想要查看别的东西,人们想要定制ISA的情况。我认为Linux能力和服务器端,它可能是一个长期目标。在服务器空间中,可能存在自定义加速器中阻力最小的路径。像Esperanto这样的初创公司正致力于开发具有大量RISC-V内核和高性能浮点引擎的内核。

参与者3:您能谈谈到目前为止RISC-V的行业采用情况吗?或者,您现在可以购买它们,处理器吗?路线图是什么样的?

Bradbury:SiFive是生产RISC-V芯片的最知名公司之一。他们主要是IP供应商。他们出售他们的IP并帮助人们生产磁带,其他公司生产磁带,但他们有可用的开发板。公司已经采用了一些方法。更多的是研发,但你可以找到像恩智浦,谷歌和其他公司的演示文稿。早期,已经有一些承诺,RISC-V内核已经作为大型系统的一小部分引入,但没有任何一个都是非常高的容量和面向用户。

 

作者

Alex Bradbury是lowRISC CIC的联合创始人,旨在通过生产高质量,安全,开源的SoC和相关基础架构,将开源开发的优势带入硬件行业。 他是LLVM社区的知名成员,并且是上游RISC-V后端的代码所有者和主要作者。

slide:https://www.infoq.com/pdfdownload.action?filename=presentations%2FQConLondon2019-AlexBradbury-TheFutureofOperatingSystemsonRISC-V.pdf

 

 

Article
知识星球
 
微信公众号
 
视频号