中文 英语

谁负责处理器验证?

异构设计和AI/ML处理暴露了现有方法和工具的局限性。

受欢迎程度

定义处理器是什么以及它应该做什么并不总是像听起来那么容易。事实上,许多公司正在努力应对将数百个异质处理元素塞进单个芯片或封装所带来的影响。

公司有广泛的验证方法,但不是用于验证。验证是确保实现与规范相匹配的过程,今天的公司有广泛的验证方法。相比之下,验证是确保规范是正确的并且适合目的。处理器的一个重要方面是它们是否正确地执行针对规范和满足要求的代码。

Arm用了超过11000页的密集文本来定义它的处理器家族。这是因为它控制了处理器的一切,从指令集和微架构开始。即使是最新的可扩展性形式也非常受限,并且架构许可方只能更改微架构。

对于可扩展的处理器体系结构,例如RISC-V在美国,验证的概念是一项艰巨的任务,因为其概念的核心是自由度。“ARC或Arm处理器是一块RTL有一个明确的指令集,你就知道这个软件是可行的,”微软高级营销总监约翰内斯•斯塔尔说Synopsys对此.“IP提供商已经为您完成了验证。第二种类型的处理器是指令集,以及允许您实现自己的RTL的体系结构许可。这增加了更多的自由度,也增加了更多的绳索来绞死自己以进行验证。当你没有固定的指令集时,另一个自由度就来了。您正在构建一个新的处理器,它是一个特定于应用程序的处理器。有一些工具可以帮助解决这个问题。第四种可能是采用全新架构的处理器。它们不是指令集处理器。它们是并行处理器,处理AI工作负载。”

根据你想要多少自由度,你需要承担额外的责任。“处理器验证确认它是RISC-V或Arm,”英特尔公司创始人兼首席执行官西蒙·大卫曼说治之软件.“然后是核实。我的RTL与参考文献匹配吗?第三个需要确认的是,我的系统能正常工作吗?在验证、一致性和验证之间存在模糊,验证或符合标准表明它是RISC-V,验证表明它已经正确实现。每个人都必须两者兼顾。”

一致性是验证的一个子集。“系统准备就绪几乎就像一个认证,”Frank Schirrmeister说,他是微软公司解决方案与生态系统的高级集团总监节奏.它定义了一组必须正确运行的测试用例。最重要的是,对于你所做的任何修改,你都需要自己验证。”

没有单一的工具可以执行处理器验证,相反,它需要一个流程,通常从抽象的虚拟原型延伸到物理原型,从硬件延伸到软件和中间的固件。与使用覆盖率定义闭包的验证不同,验证覆盖率看起来是什么并不清楚。这在构建一致性测试套件时产生了问题。

在这两种情况下,很难定义性能、功能和其他非功能性需求的含义,除非在特定工作负载的上下文中提供。Synopsys的斯塔尔说:“当一件事情非常灵活,可以以多种方式实现时,每个人都有自己的变化。“每个人都清楚地意识到,您可以编写C模型,并且可以通过C模型运行工作负载。然而,AI引擎成功的关键衡量标准是功率/性能指标。有效做到这一点的唯一方法是运行有意义的工作负载,这意味着有足够的周期。这是可以做到的模拟以便在通过编译器并在RTL上执行时验证工作负载。一旦你做到了这一点,你就有了这个工作负载在架构上所做的活动概要,你可以利用它并计算功率——希望非常快——并进行优化迭代。”

验证目标
芯片行业不需要处理处理器验证,因为当你从Arm这样的公司购买IP核时,这已经为你做了。Imperas的Davidmann说:“验证和验证对于Arm来说是一样的,因为他们设计和拥有ISA,他们设计和编写RTL,他们构建参考模型。”他们根据参考模型验证ISA。然后他们验证RTL是否匹配。根据定义,RTL已经过验证。因为Arm拥有并控制着它,这是一个有界的问题。为了确保,在录制之前,你可以使用Arm提供的验证技术确认它是否是Arm。”

验证的完成级别可能不同,这取决于您创建的是通用处理器还是深度嵌入式处理器。斯塔尔说:“你无法相信在作为IP提供的处理器核心上进行了多少验证。”“但在其他情况下,你可能会说,它运行这个工作负载并在我的SoC中工作就足够了。这就是我所需要的。”

通常,定义自己的处理器的原因是为应用程序达到高度优化的功率或性能概要。Exostiv Labs首席执行官弗雷德里克•利恩斯(Frederic Leens)表示:“需要评估和调整整体系统性能,这不仅仅是为软件人员提供一个处理器。”“这一切都是关于通过硬件/软件设计优化周期,在你的利基市场达到最佳性能。多核设计会使软件性能难以评估,即使您可以正确地分析软件。这将允许您获得执行“热点”,并捕获执行延迟和处理器等待/空闲时间。但优化需要调整底层平台和软件修改,这样才能达到真正的优化。”

很少有人有能力同时处理这么多事情。Cadence的Schirrmeister表示:“你必须同时验证处理器和软件,特别是在涉及人工智能或非常特定的工作负载的情况下。“你在权衡,‘我能做点什么吗?我能否扩展处理器指令集,并在硬件和软件的整体平衡中获得更好的最终目标,如更好的功率或更好的性能?’”

但是是什么让RISC-V如此困难呢?“RISC-V有一个很小的指令集,但在整个文档中有一系列非常危险的词,这表明这可以由实现定义,”Davidmann说。“这可以是实现定义的。这是实现定义的。所以它没有定义用户所做的很多选择。当这两个中断发生并且调试模式是实现定义的时候会发生什么。这意味着,很难证明或证明一致性。所以挑战在于,它是否符合标准?”

新架构
如今,许多公司都在定义新的非冯诺伊曼处理器。该公司产品管理和产品工程副总裁Jean-Marie Brunet表示:“这与过去的行业做法非常不同。西门子EDA.“大多数设计都是之前设计的衍生品。它们是以N+1循环的方式开发的,重用了大量的环境,因此方法论不需要太大的改变。但最近发生了两件事。首先是插入新的算法。人工智能推理、机器学习——它们都是一种新的架构。它们更基于集群,对于每个集群,内存和计算更接近。它们通过增加集群的数量来增加功能,上升到一个非常大的规模。与传统的CPU或GPU相比,这种架构非常不同。”

布吕内说,第二个区别是他们的工作负荷不同。“这些工作负载正在锻炼新的路径。他们正在使用该设备的新功能。如果一种方法,如电源和性能,是为传统架构量身定制的,我可以依赖于监控我所知道的在硅上重要的东西。这些类型的技术现在绝对是失败的,因为我知道我需要看什么来提高性能,我知道什么时候需要看力量,这种先入为主的观念正在失败。”

体系结构的新颖性要求采用不同的验证方法。斯塔尔说:“如果我想研究具有新处理元素的新架构,比如人工智能处理器,我需要研究整个系统的性能。”“对于单个RISC-V核心,你可能不会涉及到这种级别的系统性能。在架构层面上研究的是神经网络处理器的AI部分,而不是RISC-V处理器。”

您需要注意在虚拟环境中可以做什么。”左移位这意味着你想要尽早在处理器上运行实际的工作负载,”Brunet说。“你可能能够摆脱处理引擎的虚拟模型,但对于AI引擎来说,它将处于RT级别。你验证的是什么是新的,更衍生的东西可以在虚拟模型中。这减少了RTL的数量,您可以更快地运行,然后您可以查看工作负载。”

一些公司已经创建了工具链,这些工具链从ISA和微架构的定义开始,并生成模型和RTL。Synopsys ASIP工具高级总监Gert Goossens表示:“你可以在多个抽象级别上进行模拟。“一个抽象层次是工具的输入,它更像C或c++等语言中的算法描述。您可以在x86主机计算机上本机执行它们,然后使用这些模拟或执行结果作为参考。然后使用一个工具自动为您提供编译器,以便您可以将这些应用程序编译到您的ASIP体系结构上。该工具生成一个指令集模拟器。现在您在处理器上模拟生成的代码的行为,它必须与您从本机执行中获得的引用相匹配。这是为了验证而做的比较。最后,您就有了自动生成的Verilog模型,您可以在RTL模拟器中执行它,并通过将其与参考进行比较来再次检查结果。”

根据处理器的大小,可能需要硬件辅助验证。Brunet说:“模拟器用于架构探索和验证,以及一些验证,但在验证方面作用较小。”“为了验证,你需要工作负载,而现在的工作负载比5到10年前复杂了一个数量级。这些工作负载如何在硅中表现将决定硅是否会成为一个成功的商业游戏。你需要验证,你需要启动周期。这需要不同类别的硬件,可能是FPGA原型或企业原型。在这些工作负载上,你实际上是在并行地进行大量的工作负载验证,其中许多工作负载对于这种类型的设计是新的。您正在跟踪设备的性能是否与工作负载所寻找的性能相匹配。当你发现问题时,你会回到模拟器进行调试。”

这与核查的重点不同。Schirrmeister说:“验证需要临床方法。”“我能访问这些记忆吗?”您已经涵盖了所有代码了吗?我是否有合适的带宽将所有数据带入CNN, DNN?还有一个问题是网络执行的功能,即人工智能本身的性能。一切都有联系吗?它能计算吗?该功能几乎就像在不运行软件的情况下验证处理器是否正常工作。实际工作负载会带来一系列新的验证挑战。”

扩展焦点
巨大的启动功率是关键。Exostiv的Leens说:“FPGA原型以或接近目标运行速度运行,是在交付之前与系统运行有意义的周期数的唯一方法。”“采用FPGA原型作为流程的一部分的另一个原因是,你很难将模拟器放入现实环境中。关于测试平台、模型和减缓环境以适应模拟器和原型较慢的速度,可以说很多,也可以做很多。我们听说工程师们想要快速地与‘真实’环境进行互操作,因为一个残酷的事实是,模型是有缺陷的,从根本上说,一个处理系统是‘突发的’,这意味着它作为一个整体的运行可以揭示出意想不到的行为——尤其是在达到现实的运行速度时。”

为了获得必要的可见性级别,需要考虑整个系统。Schirrmeister说:“你真的不能只看处理器本身。“你必须包括与环境的互连,中间的编译器很重要,因为它定义了函数如何实际映射到核心。在这种特殊情况下,您必须将测试提升到非常特定的软件例程的特定编译之外,因为处理器需要是通用的。你需要提取工作负载的特征,然后专门从I/O的角度验证处理器是否适合这组特征。”

编译器是系统优化的一部分。斯塔尔说:“我们看到了AI引擎或AI加速器的交叉工作负载、RTL和编译器。“这真的很重要,因为当你做一个新的神经网络引擎时,你会有一个新的编译器。编译器有很多独特的工作。这就是人们花费大量时间验证编译器和工作量的地方。”

人们监视处理器性能的另一种方法是使用片上监视器。同样,根据设计是增量式的还是全新的,方法也有所不同。“与此相关的方法论已经存在了30年左右,”布吕内说。“你在设备中插入逻辑,或者监控功能或能力。对于大多数衍生架构,他们从历史上就知道他们想要监视什么,因为他们已经做了很多后硅表征。当你有新的架构时,这种方法就会受到挑战,因为你没有后硅时代的特征。你没有多年的知识。大型处理器公司多年来已经完善了这一点,但必须有人在架构层面上进行研究,并确定要监视什么。”

RISC-V提供了一个有趣的机会,因为其中一些验证问题正在公共论坛上得到解决。大卫曼说:“RISC-V需要一个每个人都能阅读、看到和理解的黄金模型。委员会从剑桥大学选择了一种叫做Sail的语言,它被用来描述一个正式的模型。这是黄金参考。如果有人需要知道某样东西是如何工作的,他们应该能够看到这个模型,推动它,刺激它,看看它是怎么做的。但这很难,他们依靠志愿者来做。这项工作还需要很多年才能完成。”

结论
验证是必不可少的,在一个由特定领域的处理器和新颖架构主导的世界里,它突然变得和验证一样重要。如今,业界正在使用为验证而开发的工具和技术,并试图将其应用于验证问题,但这只能让行业走到目前为止。成熟的处理器IP公司已经花了数年时间来提出他们的处理器的正式定义。然后,工具链尝试生成或验证实现是否与这些匹配。

如果将来需要更多的自定义体系结构来解决特定的工作负载问题,那么就需要更好的方法。

相关的
如何优化处理器
处理器设计至少有三个体系结构层,每一个都起着重要的作用。
为什么比较处理器如此困难
一些设计侧重于功率,而另一些则侧重于可持续性能、成本或灵活性。但是,为基于基准的应用程序选择最佳选项正变得越来越困难。
哪个处理器最好?
英特尔对RISC-V的支持标志着技术和文化的转变。



1评论

Punam Raskar博士 说:

可重构计算

留下回复


(注:此名称将公开显示)

Baidu