中文gydF4y2Ba 英语gydF4y2Ba

驯服不可预测系统gydF4y2Ba

大多数系统的不可预测性本质上并不是坏事,只要它是被理解的,是有界限的——但这正成为一个更大的挑战。gydF4y2Ba

受欢迎程度gydF4y2Ba

半导体系统的可预测性如何?该行业的目标是创建可预测的系统,但当一个胡萝卜被悬挂起来,提供更快、更便宜或其他收益的可能性时,决策者总是决定一定程度的不确定性是必要的。理解不确定性至少是做出明智决策的第一步,但是需要新的工具来评估目前正在做出的一些新的不准确决策的影响。gydF4y2Ba

从一些定义良好的术语开始是很重要的。考虑图1,其中分离了准确性和精密度的概念。我们经常追求的是在有限的精度范围内的准确性。不准确通常是系统问题的结果,而系统问题是可以解决的。在这种情况下,决定论意味着如果向系统提供相同的输入,我们可以期望每次都有相同的输出。gydF4y2Ba


图1:精确度和精密度。资料来源:Semiconductor EngineeringydF4y2BaggydF4y2Ba

半导体中不准确/精确的一个例子来自制造问题。例如,所有设备都可能有一个共同的错误,导致计时与预期的不同。不精确/不准确的结果可能来自使用未经充分训练的人工智能系统。准确/不精确的结果可能来自软件,可能导致在硬件上操作意想不到的场景。它们可能是可预测的,但也出乎意料。gydF4y2Ba

如果您曾经不得不追踪不可预测问题的根本原因,您就会知道这有多令人沮丧。它不仅难以重现,而且当问题被定位后,设计一个测试来证明它始终是固定的也同样困难。为了减少系统中不确定性的数量,我们应该做一切可以做的事情,然而我们也邀请它。有时收获是值得的,或者补救措施并不实际。gydF4y2Ba

系统设计处理不确定性的主要方面有两个。计时从一开始就是一个不精确的领域。最近,不确定性也成为一个重要的权力考虑因素。人工智能系统带来了一个新的不确定性领域,其准确性存在更大程度的不确定性。gydF4y2Ba

时间的不确定性gydF4y2Ba
时间的不确定性可能由以下几个问题引起。“构建可预测(或确定性)执行的基于处理器的系统在相当长一段时间内一直是业界高度关注的问题,”ginjder Panesar表示gydF4y2Ba西门子EDAgydF4y2Ba.“这个问题有两个方面。首先,硬件架构和缓存是决定论的死亡之吻。另一个是编程范式。这两个方面是相互交织的。例如,在PicoChip架构中,多核阵列中的每个核心都可以独立编码,进程之间的通信通过任意对任意通信网格处理。重要的是,通信流是在编译时定义的,而不是在运行时定义的,因此整个系统将可预测地运行。”gydF4y2Ba

不确定性在某些行业更为重要。“决定论,以及对决定论的验证,在汽车等应用中至关重要,”公司解决方案营销高级集团总监Frank Schirrmeister说gydF4y2Ba节奏gydF4y2Ba.“像缓存这样的东西,有些方面会以未知的方式变得不可预测。当多个不相关的任务并行运行时,尤其如此。在时间关键型应用中,无论发生什么事情,都需要在特定时间内完成。”gydF4y2Ba

这样的系统通常被称为实时系统。“实时是一个‘可伸缩’的术语,”微软的研究员兼系统架构师迈克尔·弗兰克(Michael Frank)说gydF4y2BaArteris IPgydF4y2Ba.“一般来说,它意味着某项行动在有限的时间内以100%的概率完成,这与工程进度相反。对于大多数实时系统,定义并不是那么严格。如果平均值在满足要求的特定窗口内,例如视频解码,那么有些系统就没问题。其他情况可能会查看是否只有在一定的低随机概率下才会错过截止日期。这些系统可以通过预测/插值来替换缺失的结果,例如丢失的音频样本。”gydF4y2Ba

系统的设计是一组权衡,通常是在性能和功率之间。缓存是一个有趣的例子,因为它试图通过放弃时间可预测性来提高性能和功耗。在某些情况下,它可能会恶化它试图改善的两个指标。gydF4y2Ba

西门子的Panesar说:“缓存在处理任务分配不足的大型多指令多数据(MIMD)程序时很有帮助。”“它们不仅会导致时间问题,还会影响整个系统的功能行为。缓存丢失和重新填充会产生不可预测的开销和潜在的时间问题。在除了最简单的系统之外的所有系统中,还必须确保一致性。对缓存中数据的更改必须(以正确的顺序)传播到其他本地缓存资源。这些过程不可避免地会对功率和硅面积产生影响。”gydF4y2Ba

这就产生了一个真正的验证问题。Cadence的Schirrmeister说:“缓存通常需要在多个处理器之间保持一致。“一致性逻辑和协议的复杂性,以及在不同的子系统中识别谁有最新的条目,然后系统采取适当的行动,远非微不足道。公司花费大量时间和金钱来确保这不会带来错误。”gydF4y2Ba

缓存并不是唯一的问题领域。芯片上任何有争议的资源,如果不能同时被两个进程使用,就会带来挑战。例如仲裁互连和内存控制器。gydF4y2Ba

不确定性产生了额外的验证难题。Arteris的Frank说:“设计和验证非确定性(任何不具有100%概率的行为)一直是一个挑战。例子包括异步时钟边界、调度器、概率网络(排队)模型或近似计算。解决这个问题的一种方法是随机刺激,并将结果与预期分布进行比较,而不是将结果与固定值进行比较。这些类型的系统并不是那么新——它们过去被称为模糊逻辑,这个术语是由加州大学伯克利分校的Lotfi Zadeh博士在1965年提出的。gydF4y2Ba

其中一些问题非常重要,因此已经设计了验证解决方案来识别和修复它们。”gydF4y2Ba时钟域交叉gydF4y2Ba(CDC)是一种非常普遍的故障模式,如果你不注意它,那么你的设备就会有一个很小的平均故障间隔时间(MTBF),”Real Intent首席执行官Prakash Narain说。“重置域交叉(RDC)问题在设计中也存在了很长一段时间,但它们并不普遍,这意味着RDC故障的MTBF比CDC大得多。例如,你必须大约每三周重新启动你的设备。根本原因可能是RDC,但将其与RDC故障关联起来非常困难,因为到故障的平均时间非常长。随着可靠性要求的提高,越来越多的人开始关注它。”gydF4y2Ba

功能的不确定性gydF4y2Ba
虽然时间不确定性可能导致功能不确定性,但我们今天正在处理利用AI/ML的系统中的新型不确定性。人工智能系统经过了准确性测试,我们应该更加关注它们的准确性。网络上充斥着对图像进行细微修改的例子,其中一些对我们来说可能是看不见的,这导致了人工智能系统对图像的完全不同的解释。gydF4y2Ba

一个gydF4y2Ba人工智能gydF4y2Ba系统本身和其他系统一样是可预测的gydF4y2Ba冯·诺依曼gydF4y2Ba机器。给定一组特定的系数,你可以预测处理一组数据所花费的时间。每次提供相同的输入数据,它的行为都是相同的。但是任何改变系数的东西都会改变时间和功率。每次重新训练或修改将系数映射到硬件的编译器时,系数都会发生变化。gydF4y2Ba

Panesar说:“如果可以在编译时确定计算和进程间通信流,通常可以提高可预测性和进程性能。”“本质上,你需要将进程划分到可用的计算资源上;运行这些进程;然后沟通数据;然后重新配置并再次启动该流程。这种方法在今天的一些AI/ML架构中很常见。”gydF4y2Ba

但最大的问题是,结果本身是一个统计过程的输出,其精度未知。Schirrmeister说:“CNN/DNN工作的纯粹机制只是计算软件。”“这只是一堆mac,你可以预测所有系数的预测速度。现在你有了输出,你在确定的时间内有了输出,但你必须在它周围设置安全措施。离群值非常重要。也许是因为训练集的原因,或者没有得到充分的训练,你必须确定结果是否是一个异常值。我们需要对它们进行定位,以提供一定程度的可预测性。”gydF4y2Ba

如何识别和处理异常值?“神经网络组件产生的结果可能需要某种类型的‘模拟’解释,”Frank解释道。“我认为,更重要的问题是在系统核查的背景下,沿着这样的思路:gydF4y2Ba

对于范围[xmin…xmax]中的所有x,函数fNN (x)是否足够接近ftarget (x),我们如何验证而不访问每个数据点并检查结果是否在< maxError范围内?gydF4y2Ba

“这是一个真正的难题,”他说。“定义一个度量来评估离散样本空间上的函数近似是困难的,我不确定是否存在所有可能映射的解决方案。它很可能需要系统行为级别的规范,类似于定义模拟系统。问题在于系统传递函数——如何证明“机器学习”的近似将与任何输入的真实函数匹配,甚至更复杂的是,在时间行为中,如果网络是一个gydF4y2Ba递归网络gydF4y2Ba(RNN)和/或有记忆。”gydF4y2Ba

分析和可预测性gydF4y2Ba
具有讽刺意味的是,有些系统故意增加不可预测性来提高安全性。Schirrmeister说:“你不希望人们能够通过查看权力档案来提取重要数据。“添加一些不可预测的元素可以作为隐藏攻击面的一种方式。”gydF4y2Ba

为了避免意想不到的结果,你必须充分了解问题,知道你所做的决定是否合理。Frank说道:“在设计和开发管道的前端,我们需要学习更多关于统计学的知识。“统计方法,如随机化、模拟退火和近似,已经被用于后端工具和验证一段时间了,传播它们需要一些思考。将这些范例应用到数字电路中,在某种程度上让我觉得类似于将逻辑转换回模拟表示。”gydF4y2Ba

新的AccelleragydF4y2Ba便携式刺激gydF4y2Ba(PSS)语言和在其上运行的工具可以在某些领域提供帮助。Schirrmeister说:“PSS让你能够查看所有可能发生的选项和可能发生的序列。“当你在上面添加更多的上下文时,它们会变得更加复杂。您正在使用约束求解器来识别设计中可以实现特定结果的所有路径。在验证和性能分析之间出现了一个新的灰色区域,因为如果在得到结果方面有太多的延迟,您可能会得到不好的结果。你必须在考虑范围的时候开始验证。您需要以某种方式模拟所有的变化,以获得任务的最终结果。然后你可以确定你是否在安全范围内。”gydF4y2Ba

这涉及到硬件和软件,使得分析更加困难。gydF4y2Ba正式的gydF4y2Ba这类问题存在复杂性问题。gydF4y2Ba

一些公司正试图解决这种不确定性。Schirrmeister补充道:“德国的一家公司Inchron正在研究软件计时,它受到其执行硬件的影响。“它有正式的概念,你会经历可能发生的所有变化。例如,如果中断服务例程触发,但您需要在特定时间内返回结果,该怎么办?他们有方法来预测。这是非常短的响应时间关键应用程序。”gydF4y2Ba

另一种方法是通过内置在设备中的功能监控。Panesar说:“你可以从总线事务、指令执行和硬件状态等方面观察SoC的行为。“您可以在运行时配置监控基础设施,以查看各种相当复杂的性能度量。实际上,您正在使用一组基于实际硅的行为的运行时断言,就像验证工程师可能在流程的早期使用设计断言一样。这可以提醒您注意不可预测的行为,并允许您在现场作业数小时或数天后发现可能出现的问题。”gydF4y2Ba

对5G的日益关注加剧了这些担忧。Panesar补充说:“这种系统需要一个功能监控系统来检查周期或时间预算是否得到满足。”“当嵌入式分析基础设施检测到偏离‘理想’性能时,它会提醒软件调度器重新映射系统,并使其恢复到令人满意的实时性能。当编译器和开发工具链中的其他工具存在反馈循环时,此功能监视数据也是一个强大的工具。通过编译器重新映射资源可以解决可预测性问题。从更长远的角度来看,未来几代芯片的架构决策可以由现场收集的可预测性数据提供信息。”gydF4y2Ba

结论gydF4y2Ba
使系统完全可预测的相关成本是无法维持的。大多数设计都不受某种程度的不可预测性的影响,只要它的大小是可以理解的。随着系统变得越来越大,相互联系越来越紧密,精度也越来越成为一个问题,这仅仅是因为不可能进行足够的分析来绑定问题。gydF4y2Ba



留下回复gydF4y2Ba


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

Baidu