随着 RISC-V 的成功,许多公司都开始对开发自己的处理器打起了主意,但是,处理器的验证是一项艰巨的挑战。
RISC-V 处理器的问世和现阶段的成功重新激发了业界设计定制处理器的兴趣,但是现在,人们发现对它们的验证成了一个难题。过去二十年曾经出现在市场上的专业经验和工具现在都已经集中到了少数出售处理器芯片或 IP 核的公司手中。
处理器的验证与其他 IP 和 SoC 的验证都有所不同,处理器是通用硬件的终极形式之一,它有自己独特的问题。
Cadence Design Systems 公司副总裁兼总经理 Paul Cunningham 说:“它可以运行任何软件程序。它是您能想象到的配置性最好的深能态器件之一。确切地说,如果我说我已经完成了对 CPU 的验证,那就意味着我已经运行了可以在该 CPU 上运行的所有软件程序,您当然永远不会这样做,因为很难做到这样,所以,CPU 的验证非常困难。”
在一个硬件必须尽可能灵活的时代,在软件中执行尽可能多的操作是一项明智之举。Imperas 软件首席执行官 Simon Davidmann 表示:“只需要编写一点软件便可以在处理器中构建状态机,这种方法比在 Verilog 中创建状态机要好得多。如果您在 Verilog 中构建状态机,当你发现错误的时候,你必须重新烧录芯片。但是,如果您构建了一个小型控制器并在其中对状态机进行编程,当出现问题时你可以等会儿再解决这个问题。”
但这带来了两个问题。 VTool 首席执行官 Hagai Arbel 说:“在最近的处理器验证项目中,你会发现,必须让软件团队参与验证过程。这种做法带来了一系列全新的挑战,因为软件人员无论是在技术上还是在心里面,和验证人员用的都是不同的语言。”
第二个问题是验证。西门子业务部门 Mentor 的首席技术专家 Duaine Pryor 说:“处理器的水准取决于它验证到什么程度,采用暴力算法进行验证收敛是不可行的,我们在高端和低端市场都看到了这种情况。”
处理器的某些方面是通用的,与项目的规模无关。 “处理器验证大致可以分为控制验证和数据路径验证两个部分,” Arm 中央工程团队架构师兼研究员 Daniel Schostak 说。 “这两种验证都不简单,都面临一些挑战。控制验证的主要挑战来自于交互组件的数量,你需要确保覆盖所有的极端情况;数据路径验证的主要挑战来自于确定边界情况,以便能够正确地覆盖这些边界。有关面积、性能或功率的微体系结构特征也会使这些挑战进一步复杂化。”
在开源领域,尤其是在 RISC-V 方面,这个问题更加复杂。 “一方面,您可以进行功能验证,” Aldec 市场营销总监 Louie De Luna 说。 “但是随后您还将进行合规性测试。您需要确保所有的定制指令均与源代码兼容。这会影响您的覆盖模型,并且实际上这一块还没有工具流程。在这方面仍有许多工作要做。除了学习如何使用所有工具外,您还必须了解如何将其用于测试。”
不断攀升的复杂性 尽管自 2000 年左右以来处理器性能没有显著的提升,但这并不意味着它的复杂性一成不变。“我们仍然可以发现,处理器的复杂性在不断增加,” Imagination Technologies 验证平台副总裁 Colin McKellar 说。 “人们越来越渴望挖掘出一个工艺的潜力,而且强烈希望能够拥有某种形式的独特特征集,或者以独特的方式实现某项功能。”
对独特性的渴望正在推动着当下的趋势。“在低端产品上,特别是对于那些边缘设备,它的功耗和成本约束更加严格、价格更低。” Mentor 的 Pryor 说。 “这意味着更紧密耦合的加速算法、可定制性甚至支持删除某些指令都非常有价值。与高端产品相比,较小的设计规模和专属软件有助于降低重新验证的成本。RISC-V 以较低的成本提供了易于定制的平台。总而言之,定制系统利大于弊。”
在高端产品上,则是其它力量在发挥作用。Cadence 的 Cunningham 说:“始于更复杂指令的处理器架构开始向 RISC 的方向迁移,并开始进入多核领域。然后,我们在多核上进行扩展的难度逐渐增加。到了无法增加的临界点上,所有新级别的复杂性都开始围绕定制的特定体系结构展开,即那些针对特定垂直行业而定制的不同类型的计算引擎,比如 AI、图形或视频。内核流水线的潜在复杂性可能变化得没有那么快,但是它依然在变化。还有很多关于安全性的问题,比如在推测执行上就有很多。”
推测执行是一种优化技术,现在人们已经把它和许多著名的处理器漏洞(例如幽灵和熔断)联系在了一起。处理器的安全性是一个持续性的挑战,这是一个仍然需要强化设计要求的领域。
“安全性是衡量现代处理器的一个新维度,确保处理器启用有效的硬件信任根(HRoT)是其中的关键,” Breker Verification Systems 副总裁兼首席营销官 Dave Kelf 说。“为了验证安全性,反向验证(证明除了规定的机制之外没有其他任何方法可以访问相关区域)非常重要。形式验证可以起到一定的作用,但是在系统级别上就力有不逮了。在这种情况下,允许指定和分析系统状态空间的工具将成为处理器验证团队工具箱里的重要组件。”
如果期望在处理器上运行操作系统,则必须提供其他级别的支持。 Valtrix Systems 联合创始人 Shubhodeep Roy Choudhury 说:“通用处理器有望支持所有现代操作系统以及许多最顶层的应用程序。这些用例中的大多数都需要硬件的支持,比如用于虚拟内存的 TLB / MMU、用于虚拟化的虚拟机管理程序以及用于浮点计算的 FPU。对并行执行线程的支持也意味着需要内存排序和缓存一致性。考虑到用例、处理器单元和向量叉乘单元的数量,与其他设计相比,验证通用处理器是一项更具挑战性的任务。”
验证的费用 不可能逃掉处理器内核验证的费用。你要么直接自己支付,要么付钱给他人替你支付这个费用。
Cunningham 说:“顶级处理器公司已经进行了巨额投资,并且拥有很多专业经验,所以他们可以提供出色的产品。必须记住一点,RISC-V 只是个指令集,并不是 CPU 的实际实现。实现的 CPU 必须经过验证,而且必须保证足够高的质量,并满足某些功能、性能和面积目标。相比之下,Arm 不仅仅是一个指令集,他们提供了整个生态系统,他们为此花费了几亿美元。”
质量对处理器很重要。 Imperas 的 Davidmann 说:“ARM 的每个内核运行了大约 1015 秒。这对应相当多条指令,而普通的 RISC-V 开发者或 IP 提供商甚至都没有硬件模拟器。他们显然无法进行和 ARM 数量相当的验证。多年来,当人们购买 Arm、MIPS 和 Power 处理器时,他们依靠 IP 供应商进行验证。”
但是,并非所有内核都那么大或那么复杂。 Imagination 的 McKellar 说:“如今,许多 RISC-V 项目都非常小,而且其复杂性可以控制。与验证相关的开销不会很大。但是,当您开始提高性能或者添加多线程或者并行化等复杂的东西时,验证费用可能会迅速增长。我认为,尝试设计复杂处理器的公司中会有一半觉得验证的挑战太大,而这条产业链上游的人会停止资金支持,因为成本太昂贵了,而且还不一定能正常工作。”
Codasip 副总裁 Jerry Ardizzone 对此表示赞同。他举例说:“我们有一位客户打算用开源工具使用开源的 RISC-V 内核,他们创建了 108 个可重复的协处理器,然后就遇到了一些问题。首先,他们必须证明内核可以正常工作,然后他们意识到,该内核只有一套开源的测试套件,因为所有其他商业工具都在由 Arm、Codasip、MIPS 和 Synopsys 等公司开发的工具包中。然后,他们必须证明,所有这些处理器都可以处理 35 条指令以实现非常特定的加速,这些工作靠开源很难实现。当你用 ARM 时,你可以从 ARM 购买所有产品,保证它能正常工作。您还可以构建自己的内核,但是前提是您知道如何构建处理器,并且能够确保它不会死锁。但是不管怎样,验证始终是最大的瓶颈。”
验证是相当昂贵的。“验证是创建处理器的工作中最困难的部分,也是开销最大的部分,”Ardizzone 说。 “这是瓶颈所在,它至少需要占去四分之三的工作量。而且,每当您开始进行到硬件环节时,都必须重新验证它。”
降低成本是开源硬件的关键卖点之一。Aldec 的 De Luna 表示:“Intel 和 Arm 这样的公司非常擅长降成本,而且您知道,当你把处理器的内核集成到 SoC 中后,您将能够验证其是否有效。现在,业内人士说验证并非易事。如果您把眼光投向开源社区,那么您会发现,很多事情都是基于预算的。但是,整个过程需要把很多部分结合在一起。这个行业需要建立一个端到端的流程,只有更多的合作才能实现这点。”
验证专业知识 二十年前,有几家公司做处理器验证工具。当时,大多数系统公司都拥有自己专有的处理器内核。从那之后,做验证工具的公司都渐渐成为了大型处理器公司的一个部门,现在,验证专业知识都集中在了这些公司中。
“多年的经验和方法学在可靠地验证处理器方面发挥了巨大的优势,” Pryor 说。 “我们对处理器公司在验证流程中推动创新和提高效率的方式一直印象深刻。”
最近,帮助其它公司验证处理器内核的咨询公司谈起了这种经验的重要性。“我们的经验和专业知识至关重要,” VTool 的 Arbel 说。 “我 20 年前就开始从事处理器验证工作,但是如果这是我第一次接触这类问题,我可能也会栽跟头。即使您的处理器很小或很简单,设计验证团队也需要具备这种知识。针对您面向的特定应用,有几种可能的解决方案,我们可能没有找出最佳方案。但是,与竞争者其它类型的设计相比,您肯定需要以不同的方式解决问题。”
McKellar 表示同意这个观点。“您需要专业知识,也需要方法学,它们同等重要。没有专家,这些工具可能发挥不出太大价值,反之,如果没有工具,专家们也会因为工具包太差劲而生出巧妇难为无米之炊的慨叹。这个世界上缺少足够数量的高级验证工程师,许多公司都会相互争抢拥有这些技能的人才。另一方面,很多验证工程师的水平不够深,无法应对需要他们完成的任务。”
而且,想获得这方面的专业知识比较困难。Davidmann 说:“关于如何测试处理器的专业知识基本上已经封锁在三到四家头部厂商内部,这个领域没有多少可以提供帮助的论文、出版物或者工具。”
有用的建议 Cunningham 提供了一些建议。 “首先,你要先把相关人等聘请进来,确保您清楚自己是否真的需要构建自己的处理器,如果需要,请认真对待这件事情。还很重要。”
一切都始于计划。 McKellar 说:“对您实际上可以实现的目标以及所需的上市时间铭记于心。把精力集中于尝试限制功能组合并减少功能特性上。某些您所认为的高级功能或功能组合对最终客户而言可能不是那么有价值,但却会花费你大量的时间和精力来正确地验证它们。保持开放的心态,因为答案可能不止一个,没有任何一样事物能够满足所有人的需要。审查非常重要,进行独立的审查并接受批评非常重要,而且要注意要尽早测试。您应该尽早制作并把大量的时间和精力放在新的硬件上。”
还要反观自心,问一问自己为什么做这件事情。Davidmann 说:“除非您真的想做一些创新和定制的事情,否则好的解决方案已经存在了,根本不用您劳心。如果您想添加一些非常有趣的架构或者定制指令,那也许您应该走 RISC-V 路线。越来越多的人正在构建或者配置自己的处理器,这意味着验证行业需要面对更复杂的任务,进行更多的验证,当然也意味着更多的机会。”
开源验证 RISC-V 当然已经推进了开源硬件的概念,而且,有人开始在想开源验证会不会由 RISC-V 滋生而来。SmartDV 应用工程总监 Bipul Talukdar 表示:“开源模式的成功需要一个基础架构,你可以在这个基础架构上创建真实的设计和产品,并将其投入生产并交付市场。这个必要的基础架构的关键部分是 RISC-V 验证平台,该平台可以使用执行 ISA 的 CPU 的开源规范,以准确地验证设计。”
有些人从中看到了希望。“RISC-V 社区正在共同努力,以帮助找到解决方案,” Imperas Software 市场营销副总裁 Kevin McDermott 说。 “也许,对于使用免费的 riscvOVPsim 参考模型的 RISC-V 随机指令流生成器这个开源项目,一些人在谷歌云上进行该项目的开发和增强,就最好地说明了这一点。”
尽管如此,核心的 EDA 工具仍不太可能被开源工具替代。在处理器的创建过程中,真正的成本不在于 EDA 工具,而在于处理器本身的复杂性,尽管大型处理器供应商在处理这些问题上有多年的经验,但是他们仍然在发现意想不到的错误和漏洞。