使用公正右RISC-V自定义说明加速应用程序的指南

文章作者:Lee Moore, Duncan Graham

使用RISC-V,标准扩展可以用来配置基本处理器…

RISC-V的开放指令集体系结构(ISA)允许广泛的实现灵活性,并提供了可选的特性,这些特性可以支持解决软硬件设计权衡的新方法。基于模块化结构,可以使用许多标准扩展和选项来配置基本处理器作为起点。然而,真正的价值实际上在于RISC-V为开发人员提供了创建新的扩展、指令和配置的机会,这些都独特地满足了他们创新应用思想的需要。

固定isa的软件挑战

传统上,ISAS一直是想要销售微处理器或微控制器的商业组织的知识产权(IP),或者希望为其他人提供许可的设计。万博投注网址嵌入式开发人员留下来执行基准测试软件,以确定哪种解决方案最适合其应用需求。Due to the cost of developing an independent ISA with all the necessary ecosystem, semiconductor vendors had been increasingly relying on the standard fixed ISAs offered by the mainstream IP providers, relying on Moore’s Law and integrated peripherals to deliver differentiation, such as ultra-low power, to their customers.

这里的挑战是无法更改用于执行代码的指令。因此,不能通过例如通过用于加密算法的优化指令来获得潜在的效率,不能实现。这可能意味着开发人员的应用程序太慢,可能使用太多的电源,或者定期错过控制循环中的硬实时截止日期。即使是世界上最好的意志,这些是挑战纯粹与半导体制造改进或过程缩小的因素。

RISC-V ISA在加利福尼亚大学伯克利大学开始作为一个项目,现在由RISC-V国际协会进行维持,这是一个超过300名成员的非营利组织。这些有助于ISA规范,软件工具,例如模拟器和编译器,以及支持此类事业所需的其余生态系统。使用是否有意义,取决于是否可以利用两个因素中的一个:它在许可方面是免费的,或者提供的自由。

由于它是开放和免费的,它提供了一个基本的处理平台,可以方便地用于教学和研究,以及商业应用程序。开放ISA还为寻求半导体IP来源的开发人员支持许多业务模式,从商业IP提供者到开放源代码项目和干净的表、自建设计。万博投注网址商业组织也发现这很有吸引力,将其用于fpga、soc,甚至微控制器的核心或标准产品。

由于它提供的自由度,学术界可以研究解决计算挑战的新方法,实现任何东西,从新的指令和其他加速器,多核和多核异构设计加上不同的微体系结构选项。万博投注网址这些选择对于那些希望解决复杂挑战的初创公司和企业来说也很有吸引力,比如低功耗人工智能(AI)芯片组,通过添加定制指令来调整最终应用需求。

由于建立了risc-v灵活性的生态系统,任何标准配置或自定义扩展都应该能够利用ISA符合框架内的工具和软件。

了解开放式RISC-V ISA的灵活性

由于RISC-V ISA和相关工具的可访问性,启动调查项目很简单,以评估其在特定应用中使用的适用性。仿真工具允许试验标准基础ISA以确定开箱即用的性能。例如,良好的起点是具有整数“I”的32位RISC-V配置,并将“M”扩展(可称为RV32IM),为基站32位整数指令集提供支持;有更多选项可用,但这足以实现此示例。然后将其与模拟存储器一起实例化,包括访问延迟和等待状态。

用C/ c++编写的应用程序可以使用标准工具链进行交叉编译。它可以在裸金属上运行,也可以作为(实时)操作系统(RTOS/OS)的一部分。然后使用指令集模拟器(ISS)等工具执行生成的二进制代码,这些工具允许集成和模拟所选的基本处理器模型(图1)。该环境还提供了标准的输入/输出功能和对主机文件系统的访问。标准集成开发环境(IDE)工具,如Eclipse,可以用来控制代码的执行,通过GNU调试器GDB进行接口。

从这里,通过分析和分析的过程,确定,设计和建模指令候选。通过使用原始应用程序代码作为基本功能模型,可以快速测试,验证和性能。这种谱分析和分析的这种快速迭代允许快速选择和优化值得实施的说明。可以从模型生成文档,并形成寄存器传输逻辑(RTL)设计和优化模型的函数规范的基础。

图1:根据现有应用程序代码的需要,可以在模拟中开发和评估新的说明。

作为示例,诸如Chacha20的加密算法可能对特定应用是至关重要的。可用的源代码可以编译“vanilla”RV32IM基础,执行,然后使用基本块分析进行估计的指令周期定时分析,以确定在哪些代码部分花费了多少时间。Chacha20算法的核心批量使用XOR和旋转指令称为四分之一轮(图2)。块分析的结果立即突出显示大多数执行时间在这些功能中。

图2:Chacha20算法大量使用XOR并旋转说明。
图像来源:维基共享

也可以通过使用验证,分析和分析(VAP)工具来生成这些热点的图形可视化。不是提供文本输出,执行时间作为可折叠统计的树提供,有助于更好地以具有高比例的执行指令可视化热点。这可以在函数的图3中看到processWord ()实现ChaCha20算法,依次调用这四个QRX_C.函数实施所需的四分之一函数。

图3:ImperAs VAP分析工具突出显示与Chacha20算法相关的功能消耗了处理器的时间约为90%

通过检查编译器生成的汇编代码和/或运行基本块分析,可以确定哪些指令和指令组合被用于实现算法。从这里开始,下一步是确定在ISA规范的范围内哪些自定义指令可以潜在地提高执行速度。

确定潜在的改进RISC-V可以提供

ChaCha20算法大量使用异或和7、8、12和16位的左旋。使用RV32IM基本规范的可用指令可以看出,这需要一个异或指令,然后是一个向左移位指令。这意味着有可能将这两个步骤优化为四个专用指令,实现一个异或与7、8、12或16位左旋转。

作为一个负载-存储体系结构,任何自定义指令都必须假设要操作的数据已经驻留在RISC-V的32位寄存器中。这就立即决定了需要一个r型(寄存器)指令,该指令可以位于Custom-1解码空间(图4)。

图4:在寄存器中处理数据的说明需要利用R型格式来对其进行编码
(图片:RISC-V指令集手册Vol I

ISA为这类指令提供了一个清晰的结构。通过遵循这些规则,我们可以快速确定如何编码我们的新指令。低7位被定义为操作码,控件中指定的值将其标记为自定义指令Custom-1解码空间。这与op.或者Op-Imm分别用于现有异或和左移指令的操作码。

ISA定义中保留了三个预定义的位块,用于指定结果的两个源寄存器和目标寄存器。这就留下了一个比特块funct3..这三个位为我们提供了空间来编码8个可能的指令,其中4个将在本例中使用。

对于这些指令,不需要详细的RTL硬件实现,可以在ISS环境中模拟它们,看看它们是否对所面临的挑战有任何好处。这四个新指令使用开放虚拟平台(OVP) VMI应用程序编程接口(API)建模。这使开发人员能够快速迭代指令的设计,根据目标应用程序的新指令提供最佳的预期结果。只有实现了这一点,才有必要向RTL实现提交资源。

对于指令的初始功能评估,有两种可能的方法。第一种方法是调用算法的原始C/ c++版本,将新指令绑定到这个函数(图5a)。第二种方法是将它们实现为创建相同行为的VMI变形指令(图5b)。这样做的好处是效率更高,是推荐的方法。

图5a:新的季度指令用C实现
图5B:在VMI Morph Code中实现的新四分之一条指令

当然,只有新指令的存在并不意味着编译器可以立即利用它们。因此,需要使用内联汇编程序重新编写原始的C / C ++应用程序,并交叉编译以使用新的指令。随着候选指令的分析和分析可以是迭代任务,基于内部的方法提供了适应原始C应用程序的最有效的方法来使用新的自定义指令。

加载到模拟器中的RISC-V基本实现也需要知道新指令,以便从中受益。这是通过在重新运行模拟之前将它们包含在模型中来实现的。在这个特定的例子中,重复分析表明执行算法花费的总时间更少(图6)processWord ()功能,使用专用的内衬指令,现在占整个算法执行的66%,但算法的整体执行时间大大减少(图6B)。

图6a:使用新指令时,ChaCha20算法的相对处理时间大大缩短

结果与原来的C实现
信息模拟说明:316,709,013
模拟时间:5.15秒

结果定制说明
模拟指令:60,474,426
模拟时间:1.38秒

图6B:算法实现的仿真统计显示近5倍执行改进

一旦确定了正确的功能,通过向处理器周期中的每个指令声明执行时间,进一步改进模型。然后可以使用进一步的仿真来确定任何性能改进,甚至考虑到与最终硬件实现中可能发生的存储器访问相关联的等待状态。

由于与共同开源IDE和GDB工具的紧密集成,可以在将设计提交到硬件实现之前,可以与优化的RISC-V设计一起进行全面调试解决方案(图7)。

图7:在Eclipse中使用GDB调试显示了内联汇编程序(左)和反汇编中的解码指令(右)

从模拟到实现

通过确定潜在的性能改进,下一步需要在RTL中实现四个新指令。由于采取的初步工作,这成为定义要求的功能规范,也可以作为RTL验证测试计划的一部分作为金色参考模型。虽然在C应用程序中使用内部函数帮助分析和分析了自定义说明,但这种方法也可以用于将来的生产代码开发,或者可以考虑潜在的编译工具链增强功能。

另一个剩余的基本任务,文档,也是一个简单的过程。所有开放虚拟平台(OVP)快速处理器模型都包括可以扩展的文档,以涵盖更改和修改的功能。按照给定的模板,可以声明和描述新的指令,允许开发人员社区发现它们的功能并利用它们。然后将文档转换为TeX文件,从中可以生成PDF(图8)。

图8:对所选的RISC-V基的新扩展文档中四个自定义四分之一循环指令中的两个的解释

概括

由于RISC-V开放ISA的自由度,除了规范中定义的标准选项和功能外,用户还可以开发进一步的自定义扩展和说明。简单地说,它支持新的和创造性的商业模式,包括商业和开源实现,此外,它还允许更广泛的自由来探索主流传统方法之外的增值特性。

然而,真正的价值来自于采用成熟的、有文档记录的和受支持的基础核心,并修改它以满足特定的应用程序需求。通过仔细的应用程序分析、代码分析和模拟,可以获得通过固定的isa无法实现的显著性能改进。在开始详细的硬件实现之前,所有这些都可以使用实际的应用程序工作负载进行开发和分析。

- - - - - -李·摩尔和邓肯·格雷厄姆是Imperas软件公司的高级应用工程师

留下你的评论