关于RISC-V 处理器验证的问题

处理器/DSP

873人已加入

描述

处理器的验证比同等大小的ASIC复杂得多,而RISC-V处理器的复杂性将更高。

近日,Semiconductor Engineering与多家半导体高管讨论了关于RISC-V 处理器验证的问题,以下是那次谈话的节选。

问:是什么让 RISC-V 处理器的验证不同于任何其他 ASIC?

Dave Kelf :处理器验证是一个全新的领域。我们知道 Arm 和 Intel 对处理器质量的期望设置了很高的标准。在 RISC-V 中,我们必须尝试并遵循这一点。

首先,RISC-V 是有标准验证类型的活动,为确保其正常工作,确保微架构健全,并获得与指令集的兼容性。您必须确保这些设备确实适合它们要使用的系统。它们是否适合中断正常工作?系统是否连贯?加载存储是否可以在处理器和系统其余部分之间正常工作?效率够高吗?有瓶颈吗?所有这些因素都必须不必在常规块或非核心块中测试的处理器中进行测试,这是最大的不同。并尝试实现此验证,这非常复杂。Arm 已经投资了大约 1.5 亿美元。验证这些内核需要大量的时钟周期。RISC-V 仍在朝着这个方向发展,他们还有很长的路要走。

Hardee:处理器验证的不同之处在于,我们试图实现的是 ISA 中的每条指令都给出完全相同的结果,在任何情况下都完全按照程序员的指令行事。处理器验证和 ASIC 验证之间的最大区别在于,ASIC 通常用于更受限的环境中以实现更明确的目的,而处理器则以完全无法预料的方式使用。基本上,处理器必须完全按照程序员的指令进行操作,无论程序员试图做什么,或者它要进入什么应用程序。这比一般的 ASIC 验证要难得多。

Eftimakis:要创建一个 RISC-V CPU,IP 块需要具有一组定义的输入和一组定义的输出。这意味着不可能预见所有可能发生的事件组合,结合随机中断等。它需要在工程师不需要的级别上进行大量复杂的验证标准 IP,尤其是当您知道将在哪种配置中使用它时。

Davidmann:这些高端处理器需要数亿条指令——1015是 Arm 引用的验证高端应用程序内核所需的周期数。RISC-V 将进入这些内核。这是大多数人从未遇到过的事情。他们正在验证 UVM 的小块进行单元测试,他们需要在这些巨大的处理器中获得许可,但很少有人这样做,因为 RISC-V 的挑战将其提升到一个新的水平, RISC-V 规范中有很多是为了实现定义的。在它的特权规范中,您可以使用所有这些不同的方式。所以第一个挑战是巨大的,人们没有那种经验。第二个挑战是,您可以做出所有这些选择。然后第三个挑战是,RISC-V 存在或将被接受的原因是它给了你创新和选择新设计的自由。这意味着每个处理器在设计上都可能不同,但仍必须兼容。你必须弄清楚如何做到这一点,如何复制那么多的验证。你如何测试呢?另一个挑战是在扩展时如何确保合规性?这是真正的大挑战。

Tran:验证处理器核心与 ASIC 或任何其他类型的外围设备之间有什么区别?特定指令的行为取决于它之前执行的内容。我们不能简单地通过向处理器提供一堆随机指令并查看它是否以相同的方式执行来真正验证处理器的行为。从整体上来看,即使在单个处理器中,您也有用户模式与系统模式,并且您有一系列需要验证的指令,而这些在今天还没有彻底完成。

Vittal:正如其他人所说,处理器验证具有挑战性。有很大的灵活性,并且处理器的详尽验证并不容易。ASIC 和处理器之间的主要区别是涉及更多的数据路径。我们都知道著名的 Intel 浮点错误。当您有如此多的数据路径,并且不知道该处理器在给定环境中的不同应用时,您需要一些非常具体的技术、方法、技能和采用的工具等等。对于标准 ASIC,您有不同的 IP。但是对于处理器,你必须深入研究并验证所有可能的组合。

Beyer:处理器验证曾经是 Arm和 Intel 的研究对象。他们拥有专业知识、方法和计算能力,可以真正正确地完成它。而现在,有了免费的 RISC-V。一方面,这与英特尔和 Arm 存在相同的复杂性问题,但另一方面,由于可以自由定制,如果您添加自己的定制寄存器和指令,就会增加一个全新的复杂处理器。

问:在之前的工作中我们会进行验证和确认,如今我们还需要考虑到一致性。这些东西如何相互关联?每项任务之间有多少重叠或分离?

Hardee:我不确定一致性是一个单独的东西,但我们肯定必须同时考虑验证和确认。在 RISC-V 世界中,有多种方法可以描述我尝试创建的处理器。我需要做的是验证我正在创建一个满足要求的处理器,它在 ISA 中具有所需的一切,并且 ISA 是可实现的。然后是验证,即检查该 ISA 的每一部分,该 ISA 的实现,在每种情况下,在每种组合中,包括哪些是在您开始时无法预见的事情,以及程序员将来可能会用这个东西。所以那些验证和确认的想法已经涵盖了它。

我在验证什么?这就是 ISA 的黄金参考模型变得极其重要的地方。基于 SAIL 的模型和 SAIL 的变体正在出现,它们对正在构建的内容有更完整的形式化定义。诸如此类的事情非常重要,需要进行验证,以确保涵盖了所有这些可能发生的情况。

我们仍处于起步阶段。Chisel 借鉴了其他编程语言等的一些概念。看看 Arm 和 Intel 在描述他们的 ISA 以及如何捕获 ISA 的方法。Arm 之前曾在 Jasper 用户组中介绍过关于正式验证 ISA 的内容。英特尔在 x86 的合规性方面做了大量工作,Arm也一样。

Davidmann: Chisel 是从 Berkeley 出来的,但是业界并没有使用 Chisel。大多数设计是在 Verilog 和 SystemVerilog 中完成的。为什么是这样?这是因为您无法验证其内容。每个人都可能使用生成器和所有此类东西来生成它,但所有设计实际上都是在 Verilog 或 SystemVerilog 中完成的。下一代 SystemVerilog 将拥有这些,但在它被采用之前,它会有模拟器,调试器用它来调试一切。你不能只拥有一门新语言。20 年前我们构建 SystemVerilog 时,这就是我们的起点。

Eftimakis:现在是谈论高级语言的最佳时机,因为这正是我们开发处理器所做的工作。我们有一种方法和工具,不仅可以从高级语言生成 RTL,还可以生成软件环境、调试器、编译器等。这确保一切都适合。如果您希望能够使用它,那是必需的。

Tran:如果你看一下 RISC-V,Chisel 可能被视为用于创建 RISC-V 的主流语言,但还有其他语言,例如 SpinalHDL、Bluespec,除此之外还有其他变种。我们谈论的是以不同方式使用的不同实现的多样性。请记住,RISC-V 尚未部署为嵌入式系统中的主要计算资源。它始终是某种微控制器,或者充其量是片上系统内部的某种附件。

Eftimakis:那不是真的。在嵌入式系统中,有很多系统将 RISC-V 作为主处理器。

编辑:黄飞

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分