谈论配置基本处理器或添加自定义扩展以解决片上系统 (SoC) 中的硬件-软件设计权衡并不是什么新鲜事。这一直是 RISC-V 社区所支持的价值主张的关键部分,发布了许多信息并从中受益,例如“使用恰到好处的 RISC-V 自定义指令加速应用程序的指南”。
在为当今的许多产品设计系统时,功耗、性能和芯片面积限制了许多复杂的人工 (AI) 和机器学习 (ML) SoC 要求。
扩展开源 RISC-V 指令集架构 (ISA) 作为解决这些限制的有效手段经常被忽视。最近由半导体行业设计服务公司 Quantum Leap SoluTIons 领导的网络研讨会小组试图帮助解开扩展 RISC-V ISA 以用于 SoC 设计的谜团。这场题为“ RISC-V 灵活性——自定义扩展的力量”的网络研讨会回答了 100 多名与会者的提问。
小组成员试图深入了解修改后的 ISA 在设计新兴应用程序中的作用,以及设计人员如何看待对新型 RISC-V 指令集架构的扩展。
Quantum Leap SoluTIons RISC-V 扩展网络研讨会的小组成员
由 Quantum Leap SoluTIons 创始人兼总裁 Mike Ingster 主持,小组成员有:
Andes Technology 的 FAE 总监 John Min
Imperas Software 销售副总裁 Larry Lapides
Mentor 高级应用工程师 Taek Nam
Mike Ingster:为什么 RISC-V 比其他 CPU 架构更适合 AI 和 ML 学习应用程序?
John Min:RISC-V 的发明时间恰逢人工智能成为主流。RISC-V 矢量指令集的设计考虑了 AI 和 VR 类型的应用程序。
Larry Lapides:我要补充一点,在具有多路异构处理器阵列的 AI 应用程序中——我们已经看到不止一次实现的架构——设计人员可以在阵列中组合标量和矢量处理器。其次,RISC-V 架构允许设计人员删除不必要的功能,同时保留向量指令。这提供了更好的价格、性能和面积——PPA。
Ingster:带有矢量扩展的 RISC-V 内核也可以使用自定义指令进行扩展吗?
敏:是的。一个示例是具有参考实现的 RISC-V 矢量内核,该参考实现采用客户扩展来添加额外的缓冲区。这可以防止向量单元因缺少数据而停止。
Lapides: Imperas 和 Andes 有共同的客户,他们已经实施了自定义功能来帮助该领域。
Ingster:在多处理器阵列中,是否所有 CPU 都需要相同的配置?或者他们可以有不同的自定义说明吗?
Lapides:是的,SoC 设计中的异构处理器很常见。此外,不仅是自定义指令会因处理器而异。每个处理器的基本指令也可以不同。例如,一个处理器可能有向量指令和另一个处理器标量指令。这些可以交错和组合。
Min:在多路复用阵列中,CPU 和模拟器都可以是异构的,以启用多核模拟。
Ingster:您在市场上看到服务器级 RISC-V 处理器吗?
敏:它来了。随着时间的推移,CPU 设计以不同的方式变得更快。一是提高频率。另一个是通过扩展 CPU 管道。另一种是通过设计处理器来乱序执行指令。并且将扩大执行宽度以提供更超标量的组织,或者——今天变得普遍——采用数千个多核的设计。我们看到这些元素被整合到用于人工智能企业应用程序的下一代 RISC-V 处理器中只是时间问题。
Lapides:如果我们回顾 RISC-V 的过去历史,我们会发现最初有 32 位和 64 位 SoC 的概念验证,但大约两年前,我们开始看到专注于安全和物联网的 SoC:32 位 SoC与微控制器竞争。现在我们开始看到第一个应用级处理器。它们不是服务器级的,但我们在 64 位 RISC-V 处理器上看到了初始芯片,运行真正的 RTOS,着眼于高端应用程序。我们开始看到正在构建一些乱序的管道。我预计在未来两到三年内会出现第一款服务器级 RISC-V 处理器。
Ingster:自定义扩展能否提供设备安全性和生命周期管理?
Min:是的,取决于实施。例如,通过启用指令扩展来执行检查。程序检查自定义扩展。如果它不存在,则阻止该软件执行。另一种选择是实现一个自定义端口到内存。因此,RISC-V CPU 将有一条专用总线连接到内存,而不是使用主总线。
Taek Nam:设计人员可以使用 Tessent 嵌入式分析 IP 在具有自定义扩展的 SoC 中进行安全和生命周期管理。
Ingster:为什么 RISC-V 的自定义指令方法与 ARC 和 Tensilica 等其他方法不同?
Min:CPU 使用自定义扩展来加速特定任务。RISC-V 的不同之处在于它提供了一种正式的机制来将自定义扩展合并到标准中。
Ingster:开发人员如何与客户或合作伙伴共享自定义指令?
敏:有三个选项。首先,保持私密。其次,提议在标准中加入RISC-V InternaTIonal。例如,Andes 向 RISC-V International 捐赠了一套 DSP 指令。这些现在是 RISC-V 标准的 P 扩展。第三,如果您与他人共享指令的用法,您将共享内在函数和头文件。如果您计划共享自定义指令的实现,您可能需要进行三向 NDA。
Lapides:定制扩展开发人员可以将模型作为开源或二进制模型、ISS 或指令精确处理器模型传递给他们的客户或合作伙伴,可用于早期的硅前软件开发。
Ingster:自定义扩展会导致 RISC-V 社区内的兼容性问题吗?
Min:这将取决于自定义指令的使用方式。如果自定义指令是专有的,根据定义,它不会导致碎片,因为开发人员是唯一使用它的人。如果自定义指令变得如此成功,它被许多其他人使用,也许是时候将其合并到基本的 RISC-V 集中了。将其公开或保持专有由创建者决定。无论哪种方式,都不会发生碎片。
Ingster:当前版本的编译器是否支持矢量处理器?
Min: The RISC-V vector extensions, version 0.8, are stable enough that compilers support them. Both GCC and LLVM support the existing 0.8 version of the spec. Final versions of the compilers will be available when the RISC-V Vector Extension specification has been finalized.
Ingster: How are custom extensions supported in the software tool chain?
Lapides: Designers add the custom extensions to their RISC-V model, thus providing an instruction set simulator that can be used for software development. On the tool chain side, support for new custom extensions can be added into GCC and LLVM. Both are open source tool chains and can be modified at the customer’s discretion. Designers can also assemble a macro implementation to support a custom instruction.
Ingster: How is the compiler made aware of a newly created custom instruction?
Lapides: The software team has to implement the instruction in the compiler.
Min: An alternative without the hard work of making the addition, especially if the intent is to keep the instruction proprietary is to treat the custom instruction like a library – for example, DSP libraries. Then when the custom instruction is needed in program execution, call the library with a header file. Thus, for minimal work, the design team achieves much of the gain expected from creating a custom function.
Ingster: What OSs are supported on RISC-V and is there support for Android?
Lapides:我还没有看到支持 Android,但有一些使用 RISC-V 设计的可穿戴设备。Linux free RTOS,Zephyr RTOS 是主要支持的。还支持其他实时 *** 作系统。RISC-V International 的软件网页有完整的列表。
最小值:Android OS 尚未在 RISC-V 处理器上得到验证。我相信这更像是一个移植练习,而不是它能否运行的问题。RISC-V 内核当前运行 Linux。
Ingster:如何验证自定义扩展?
Lapides:自定义扩展被添加到设计的 RTL 中,但它们也必须添加到处理器模型中。可以使用此功能验证自定义指令和自定义寄存器。通常,向在指令集模拟器上运行的处理器模型添加扩展允许软件开发。
Taek:我们最近有一个客户在他们的 SoC 中实现了自定义指令。使用我们的嵌入式分析 IP,他们的目标是通过添加自定义扩展来验证他们的软件性能改进。这是通过使用跟踪来跟踪数据和指令执行来实现的。这是验证性能改进的有效方法。
Ingster:添加嵌入式分析 IP 需要多少面积?
Taek:没有标准答案,但 1% 是嵌入式分析 IP 领域的典型报价。该估计包括分析模型、通信器和连接这些元素的消息结构。因为这些块有多个选项,所以不同的配置是可能的。评估每个客户的设计,并配置嵌入式分析 IP 以在他们的设计中实施。以此方式估计总面积。我们确定了一种解决方案,可以最大限度地减少对区域的影响,从而为给定的设计提供最佳价值。
这些是小组的亮点,其完整版由Quantum Leap Solutions托管。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)