RISC-V 自定义指令这一主题的重要性日益增加。本文解释了这一主题为何变得如此重要,并概述了一些以前的处理器硬件和软件优化方法,以说明现在使用 RISC-V 可以实现的技术。RISC-V 是一种开放式 ISA(指令集架构),它定义了处理器设计的硬件与其将执行的软件(如操作系统和应用程序)之间的边界。在传统或闭源 ISA 中,结构和未来路线图受到严格控制并引导到特定方向。同时,一个共同的要求是优先考虑向后兼容。可以添加新硬件,但仍必须支持所有以前的软件,以确保永久保留旧功能。随着处理器在多个市场领域取代专用硬件,硬件创新和软件重用优势的结合产生了许多创新和成功的解决方案。然而,在某些情况下,这种一刀切的做法可能会留下一些未被探索的选项。
RISC-V 是作为开放式 ISA 开发的,允许在典型的基础结构周围实现更多的自由。这种模块化方法允许更好的可配置性,以使处理器硬件与最终应用程序要求相匹配。这在创建新功能时提供了更大的设计自由度,并且具有开放性,允许许多参与者开发或修改处理器。这些实现可以从头开始,也可以使用来自众多商业 IP 提供商或开源存储库之一的基础设计作为起点。除了 ISA 中定义的可配置选项外,RISC-V 还支持自定义指令或扩展,可以添加这些指令或扩展来优化特定任务、功能或处理器间通信的性能。
一般而言,ISA 规范的设计是在灵活性方面的权衡,以使通用软件能够在处理器的专用硬件资源上高效运行。如果支持的硬件功能太有限,那么软件领域就会执行更多的工作,这会影响系统成本的许多方面,从内存存储到电源效率。相反,如果硬件过于广泛,实现了许多很少使用的功能,软件就会变得复杂,无法有效地管理所有可用资源,硬件开销也会变得过大。这是 CISC(复杂指令集计算机)和 RISC(精简指令集计算机)架构方法之间的根本区别,在 RISC-V 等 RISC 设计中,目的是通过一组有限的关键功能操作单元来最小化硬件,这些单元可以非常高效地执行,并在性能上优于更大、更复杂的 CISC。但与任何分类方法一样,虽然这些想法看起来很明确,但在处理器 ISA 的奇妙世界中,妥协总是会引起一些关于最佳平衡的有趣讨论。因此,我们已经看到许多 ISA 随着时间的推移而发展,以至于这些分类变得有些学术化。考虑到开发处理器的成本和复杂性以及相关的软件支持,自然的做法是针对更通用的用例,以利用最广泛的潜在用户群体。虽然硬件一开始很简单,但随着时间的推移,软件会变得越来越复杂,以解决不同的应用问题。因此,用户一直在寻找提高性能和效率的方法。这些选项通常包括:- 硬件加速器也许最明显的方法是构建专用硬件块来加速关键功能。因此,充当处理器的外围设备,但这只在某些有限的情况下有效。处理器缺乏共享基础设施,使得这种方法有些孤立。任何固定块在与软件接口时也会面临问题。作为单片功能,它缺乏随着需求随时间变化而发展和适应的灵活性。- 协处理器根据应用程序,可以对系统进行分区。在许多通信系统中,可以将任务划分为控制平面和数据平面。此过程允许异构设计,每种操作风格都有专用处理器。但是,完成此分区后,仍需要解决每个处理器的任何进一步改进。多核设计的一个领域是处理器节点之间的内部通信基础设施。与总线开销不同,支持自定义指令的自定义硬件基础设施可以显著提高通信效率。- 自定义指令扩展 ISA 可实现内存和子系统基础架构之间的紧密集成,同时提供软件灵活性。ISA 设计的艺术在于获得性能优势和增强可用性之间的微妙平衡。已经提出了许多自定义架构,但实现正确的平衡取决于应用软件和未来的开发计划。自定义指令和扩展提供了足够的增益来调节功能,同时具有足够的软件灵活性,并且仍可随着应用程序需求的变化而进行调整。由于存在许多可能的架构选择和选项,许多人采用的一种帮助评估过程的方法是使用代表软件应用程序某些方面的标准基准。理论上,在不同配置上运行这些相同的基准可以为相对优点或性能提供一些指导。在初步评估审查之后,这可能是分析计划中有用的第一步。由于最终应用程序将具有其独特的一组约束,因此找到代表所有关键考虑因素的最佳基准可能是一个挑战。自定义指令方法对设计优化的优势之一是能够在标准核心配置上开发和分析软件性能。一旦确定了软件关键循环,就可以建模一组自定义指令来验证改进,并围绕实际应用而不是理论基准微调优化的硬件和软件平衡。