用于处理载具神经网络处理器中的错误的系统和方法与流程

文档序号:20920265发布日期:2020-05-29 14:03阅读:179来源:国知局
用于处理载具神经网络处理器中的错误的系统和方法与流程

相关申请的交叉引用

本申请是于2017年11月17日提交的美国专利申请号15/817,005的继续申请并且要求其优先权,其全部内容通过引用并入本文。

本公开涉及用于处理在载具(vehicle)中发生的错误的系统和方法,更具体地涉及用于处理载具神经网络处理器中的错误的系统和方法。



背景技术:

如今,许多载具配备有被设计为提高安全性和可靠性的各种特征。在某种程度上,这是因为载具事故和/或故障伴随着很高的人身伤害、死亡和财产损害风险。至少,事故和/或故障很可能给车主带来极大的不便和/或费用。因而,已经做出了许多努力来开发用于载具的改进的安全特征。

计算机正在越来越多地被集成到载具中,以实现从乘客舒适性和娱乐性到部分或完全自动驾驶操作的目的。虽然计算机有可能解决载具中的许多安全性和可靠性问题,但它们也带来了尚未完全解决的新风险和新故障模式。重要的是,必须采取防护措施以确保载具的计算机启用和/或计算机辅助特征不会增加操作载具的风险。在将计算机实现的载具特征投入生产之前,可以采用各种策略来测试它们。然而,即使执行了彻底的测试,当在实际条件下操作时仍然很可能会遇到错误。

因而,提供用于处理用于载具应用的处理器中的错误的改进系统和方法将是有利的。



技术实现要素:

根据一些实施例,一种用于处理神经网络中的错误的系统可以包括神经网络处理器,神经网络处理器用于执行与载具的使用相关联的神经网络。该神经网络处理器包括:错误检测器,被配置为检测与神经网络的执行相关联的数据错误;以及神经网络控制器,被配置为从错误检测器接收数据错误的报告。响应于接收到该报告,神经网络控制器还被配置为:在不终止神经网络的执行的情况下,发信号通知该神经网络的未决结果被污染。

根据一些实施例,一种系统可以包括:神经网络处理器,用于执行与载具的自主操作相关联的神经网络;以及中断控制器,被耦合到神经网络处理器。中断控制器被配置为:经由神经网络处理器的错误中断引脚来接收错误信号;经由神经网络处理器的一个或多个状态寄存器来访问错误信息,该错误信息指示由神经网络处理器遇到的错误的类型;以及当错误的类型与数据错误相对应时,将神经网络处理器的未决结果标识为损坏。

根据一些实施例,一种用于处理神经网络处理器中的错误的方法可以包括:基于由载具神经网络处理器在载具的操作期间遇到的错误来接收错误报告;基于该错误报告来确定错误的类型;响应于确定错误的类型与数据错误相对应,在允许载具神经网络处理器继续进行操作的同时,发信号通知载具神经网络处理器的未决结果是损坏的。

实施例的概述也由说明书后面的权利要求提供。

应当理解,前面的总体描述和下面的具体实施方式两者本质上都是示例性和解释性的,并且旨在提供对本公开的理解,而非限制本公开的范围。就这点而言,根据下面的具体实施方式,对于本领域技术人员而言,本公开的附加方面、特征和优点将是显而易见的。

附图说明

图1是根据一些实施例的具有神经网络处理系统的载具的简化图。

图2是根据一些实施例的用于处理神经网络的系统的简化图。

图3是根据一些实施例的超时错误检测器的简化图。

图4是根据一些实施例的具有调试模式的神经网络处理器的简化图。

图5是根据一些实施例的用于神经网络处理器中的错误处理的方法的简化图。

通过参考下面的具体实施方式,本公开的实施例及其优点得以最好理解。应当领会,相同的附图标记用于标识在附图中的一个或多个附图中图示的相同元件,其中在附图中的示出用于说明本公开的实施例,而非用于限制本公开的实施例。

具体实施方式

在下面的描述中,对描述与本公开一致的一些实施例的具体细节进行了阐述。对许多具体细节进行了阐述,以便提供对实施例的透彻理解。然而,对于本领域的技术人员而言显而易见的是,可以在没有一些或所有这些具体细节的情况下实践一些实施例。本文中所公开的具体实施例意在说明而非限制。尽管本文中没有具体描述,但是本领域技术人员应当认识到其他元件也在本公开的范围和精神内。另外,为了避免不必要的重复,除非另外特别说明或者如果一个或多个特征可能使一个实施例不起作用,否则与一个实施例相关联示出和描述的一个或多个特征可以并入其他实施例中。在一些实例中,没有对公知方法、过程、部件和电路进行详细描述,以免不必要地使实施例的各方面晦涩难懂。

神经网络使用从大型数据集中提取的模式,以基于输入数据进行预测。预测可以包括对输入数据进行分类(例如,标记图像中的对象),基于输入数据来做出判定(例如,操纵自动驾驶汽车或选择游戏中的移动),对输入数据进行聚类等。一般而言,可以使用通用计算硬件来运行神经网络。然而,使用专用硬件可以显著提高神经网络的性能。例如,计算神经网络可能涉及矩阵操作,其可以使用具有应用特定硬件实现方式的单输入多数据(simd)处理技术而被高效执行。

虽然设计和使用专用神经网络处理器可以提供性能优点,但是专用硬件可能遇到神经网络处理器所独有的错误和/或在神经网络处理器中发生频率高于在通用处理器中发生频率的错误。而且,与现成解决方案相比,开发和测试专用硬件的过程可能更耗时和/或成本更高。因而,期望提供改进系统和方法,其用于处理神经网络并且处理在初启(bring-up)和生产神经网络处理器(诸如用于载具的操作的载具神经网络处理器)期间所遇到的错误。

图1是根据一些实施例的具有神经网络处理系统的载具100的简化图。根据一些实施例,载具100可以与陆地载具(诸如汽车、摩托车或卡车)、空中载具(诸如飞机、航天器、无人驾驶飞机或卫星)、水上载具(诸如船或潜艇)等相对应。在一些示例中,载具100可以是全电动载具、混合电动载具、汽油动力载具等。

在一些示例中,载具100可以完全或部分地自动驾驶。与这样的实施例一致,载具100可以配备有一个或多个传感器110,其收集与载具100和/或其周围环境相关联的数据。传感器数据可以包括图像数据、音频数据、时间序列数据等。传感器110的说明性示例包括相机(包括可见光相机、红外相机等)、麦克风、温度传感器、lidar单元、加速度计、转速计等。

在一些实施例中,载具100可以包括控制器120,以执行与自动驾驶载具100相关联的实时决策任务。例如,自动驾驶任务可以包括标识或分类载具100附近的物体;控制载具100的转向、传动、加速和/或制动;向载具100的驾驶员提供警报;向远程服务器发送驾驶数据等。

在一些示例中,控制器120可以控制硬件和/或软件的操作和/或执行。在一些示例中,控制器120可以包括一个或多个处理器、cpu、多核处理器、现场可编程门阵列(fpga)、专用集成电路(asic)等。在一些示例中,控制器120还可以包括存储器,存储器可以包括一种或多种类型的机器可读介质。机器可读介质的一些常见形式可以包括软盘、柔性盘、硬盘、磁带、任何其他磁介质、cd-rom、任何其他光学介质、打孔卡、纸带、带孔图案的任何其他物理介质、ram(例如,dram、sram等)、prom、eprom、flash-eprom、任何其他存储器芯片或盒式磁带、以及/或者处理器或计算机适于从中读取的任何其他介质。在一些示例中,控制器120可以包括多个封装中的多个芯片、单个封装中的多个芯片(例如,系统级封装(sip))、和/或单个芯片(例如,片上系统(soc))。

在驾驶操作期间,控制器120可以从传感器110接收实时输入数据流。在一些示例中,控制器120可以使用神经网络来处理来自传感器110的输入数据。例如,神经网络可以包括一系列层,其中每个层对一个或多个先前层的输出进行操作。各个层使用基于机器学习技术的训练数据所“学习”的权重和/或偏差而被配置。层的示例包括卷积层、紧密连接层、循环层、激活层、池化层等。在一些示例中,可以使用描述神经网络的结构的一个或多个模型定义文件、包括神经网络的预训练权重和/或偏差的一个或多个参数文件等来定义神经网络。

在说明性示例中,神经网络可以是图像识别网络,其被训练为标记图像中出现的对象。例如,到神经网络的输入数据可以与由载具100的相机捕获的图像(或一批图像)相对应。与该示例一致,神经网络的一个或多个第一层可以被实现为卷积层,并且神经网络模型的一个或多个最后层可以实现为紧密连接层。卷积层应用经预训练的滤波器,其确定某些特征是否出现在图像中。例如,经预训练的滤波器可以与图像中的特定形状、颜色、热签名、移动、子图像的大小和/或图案以及图像的大小和/或全局参数相对应。然后,紧密连接层将图像中出现的特征集合映射到经标记的对象(例如,“行人”、“树”、“车道标记”、“停车标志”等)。

在许多情况下,处理神经网络为数据密集和/或计算密集的。例如,用于图像识别的深度卷积神经网络可以包括数百万或数十亿个参数。对应地,通过神经网络的前向传递可以包括数百万或数十亿次的计算。因而,可能期望使用专用计算资源(例如,硬件和/或软件资源)来处理神经网络,以便改善神经网络的性能和/或减少神经网络的执行与控制器110的其他应用之间的干扰。在一些实施例中,控制器120可以使用神经网络处理器130来处理神经网络,该神经网络处理器130可以包括基本上专用于处理神经网络的一个或多个处理器核。例如,神经网络处理器130可以使用专用集成电路(asic)和/或现场可编程门阵列(fpga)来实现,以当执行神经网络时实现硬件加速性能。

在一些示例中,神经网络处理器130可以串行和/或并行地处理多个神经网络。例如,神经网络处理器130可以处理从前置相机接收输入数据流的第一图像识别模型、从后置相机接收输入数据流的第二图像识别模型、从麦克风接收音频数据的音频识别模型等。与这样的示例一致,神经网络处理器130可以在接收到图像和/或音频数据的新帧时,顺序地处理每个模型。在其他示例中,可以使用多个神经网络处理器和/或处理器核并行处理多个神经网络。

尽管出于说明性目的,控制器120和神经网络处理器130被描绘为集成到载具100中,但是应当理解,控制器120和/或神经网络处理器130可以位于载具100上和/或载具100外。例如,载具100可以经由网络而将输入传感器数据传输到远程位置的神经网络处理器130。此外,神经网络处理器130可以用于在包括非载具背景在内的各种背景中处理神经网络。例如,神经网络处理器130可以用于诸如通用计算、移动计算、基于服务器的应用、嵌入式应用、工业制造等之类的应用。

在自动驾驶应用以及其他应用中,神经网络处理器130的一个目标是连续且可靠地操作。例如,在输入数据变得陈旧之前(即,输入数据不再表示载具100的当前状态和/或周围环境)之前,神经网络处理器130可能具有有限量的时间来对输入数据进行操作。在一些情况下,这可能会在百分之几秒内发生,如同快速移动的载具的情况一样。就这点而言,在载具100处于运动的同时,神经网络处理器130的功能丧失、处理延迟和/或异常行为可能引起事故,从而导致财产损害、伤害和/或死亡。

神经网络处理器130上的特定错误的影响可以取决于错误的类型而变化。一些类型的错误可能导致神经网络处理器130挂起或超时。也就是说,神经网络处理器130的一个或多个部分可能在超过预先确定的时间量内冻结或以其他方式保持不活动。当遇到超时错误时,神经网络处理器130可以停止提供输出数据和/或响应输入数据。其他类型的错误(诸如程序错误和/或数据错误)可能导致由神经网络处理器130所生成的输出数据被损坏。当遇到这样的错误时,神经网络处理器130可以继续提供输出数据,但是结果可能不正确、无意义和/或无法使用。

为了解决与这样的错误相关联的安全问题,神经网络处理器130可以包括用于防止、检测和/或响应错误的安全特征。可以在神经网络处理器130的设计周期的各个阶段实现和/或激活安全特征。例如,神经网络处理器130的设计周期可以包括初启阶段和生产阶段。在初启期间,神经网络处理器130可以经历测试以验证神经网络处理器130的功能是否符合预期。例如,初启可以发生在已经设计了神经网络处理器130并且将其下线(taped-out)到制造商之后、但是在神经网络处理器130被投入生产之前。然后,在神经网络处理器130被部署在载具100的生产模型中或以其他方式被提供给最终消费者之前,可以安全地解决在初启期间发现的缺陷。例如,在初启期间,神经网络处理器130可以被放置在独立测试环境中和/或载具100的原型模型中。

在一些示例中,神经网络处理器130可以具有高等级的复杂度和/或可以包括若干个子系统,每个子系统可以由不同的团队和/或供应商设计。鉴于这种复杂性,在初启期间对神经网络处理器130进行测试的过程可能很广泛(例如,发生在数周或数月的时段内),并且可能会对神经网络130和处理器100的整体安全性和可靠性产生重大影响。例如,测试可以揭示在神经网络处理器130的设计期间未被捕获的不期望行为和/或错误行为。因此,如下文参考图2至图5所更详细讨论的,神经网络处理器130可以包括安全特征,这些安全特征加速和/或提高在启动期间检测、分析和/或调试缺陷的能力。

即使在初启期间进行了广泛的测试,神经网络处理器130仍可能在生产期间(例如,当被部署在载具100的生产模型中时)遇到错误。在生产期间,与初启不同,神经网络处理器130通常希望以最小的中断和/或停机时间从错误中平稳恢复。具体地,神经网络处理器130可以负责执行与驾驶载具100相关联的实时决策任务。因此,如下文参考图2至图5所更详细地讨论的,神经网络处理器130可以包括安全特征,以高效地越过错误并且在生产阶段期间尽可能快地恢复正常操作。

图2是根据一些实施例的用于处理神经网络的系统200的简化图。根据与图1一致的一些实施例,系统200可以包括神经网络处理器210,其通常与控制器120的神经网络处理器130相对应。

在一些示例中,神经网络处理器210可以包括外部接口220,其用于从一个或多个外部资源(例如,控制器110的其他处理和/或存储器资源)接收数据和/或向一个或多个外部资源发送数据。除其他功能外,外部接口220可以用于从cpu接收指令,从存储器中读取模型定义和/或参数(例如,权重和/或偏差),访问传感器数据,写出神经网络的结果等。在一些实施例中,外部接口220可以包括直接存储器访问(dma)控制器。

在一些实施例中,外部接口220可以实现一个或多个通信协议。例如,外部接口220可以使用诸如高级可扩展接口(axi)协议之类的非相干总线协议与控制器110的cpu(和/或其他处理器)对接。在另一示例中,外部接口220可以使用诸如axi相干扩展(ace)协议之类的相干总线协议与控制器110的dram(和/或其他存储器)对接。应当理解,这些仅仅是示例,并且外部接口模块220可以实现除axi和ace之外和/或作为其备选的各种通信协议。

在一些示例中,神经网络处理器210可以包括本地存储器230,本地存储器230为神经网络处理器210提供本地数据存储。例如,本地存储器230可以存储与神经网络相关联的数据,诸如模型定义;模型参数(例如,权重和/或偏差);用于神经网络的输入数据;由神经网络处理器210所生成的中间结果(例如,神经网络的隐藏层的输出);神经网络的最终结果等。在一些实施例中,本地存储器230可以存储要由神经网络处理器210执行的指令和/或程序。在一些实施例中,可以使用静态ram(sram)来实现本地存储器230。

在一些示例中,神经网络处理器210可以包括计算引擎240。计算引擎240执行指令,以针对输入数据的给定集合计算神经网络的结果。在一些实施例中,可以针对神经网络计算来优化计算引擎240。例如,计算引擎240可以包括单指令多数据处理器、向量处理器等。在一些示例中,由计算引擎240执行的指令可以是浮点指令。

在操作期间,神经网络处理器210和/或其组成模块(例如,外部接口220、本地存储器230和/或计算引擎240)可以遇到可能破坏神经网络处理器210的功能的错误,导致神经网络处理器210的结果变得破坏或污染等。因而,神经网络处理器210可以包括一个或多个错误检测器251-257,以监测神经网络处理器210的操作并且检测错误的发生。响应于检测到错误,错误检测器251-257可以报告检测到的错误,使得可以采取适当的补救动作。

在一些实施例中,错误检测器251-257可以包括与外部接口220相关联的响应错误检测器251。在一些实施例中,响应错误检测器251可以基于从经由外部接口220接收的响应消息中提取的状态信息来报告响应错误。例如,当外部接口220发出读取和/或写入请求时,外部接口220可以接收包括一个或多个状态位的响应分组,以表明在完成请求期间是否遇到错误。在一些示例中,可以在诸如ace协议之类的适用协议中定义状态位。例如,状态位可以包括n位状态代码,诸如两位代码,其中00指示没有错误,01指示从属错误,10指示解码错误,而11未定义。因而,响应错误检测器251可以确定响应分组的状态码是否指示错误(例如,除00以外的任何状态码)。

在一些实施例中,错误检测器251-257可以包括与外部接口220相关联的完整性错误检测器252。在一些实施例中,完整性错误检测器252可以验证经由外部接口220接收的数据的完整性,并且当接收的数据被破坏时,报告完整性错误。例如,接收的数据可以包括错误检测码,诸如循环冗余校验(crc)。与这样的示例一致,完整性错误检测器252可以验证错误检测码与接收的数据匹配。当请求长时间保留在存储器中的数据时,使用错误检测代码可能会特别有益。例如,在操作载具100的同时,神经网络的模型定义和/或模型参数可以被存储在存储器中几分钟或几小时,因此容易出现随机错误(例如,由热波动引起的位翻转)。在这种情况下,完整性错误检测器252对错误检测代码的验证可以允许高效检测破坏的数据。相反,实时传感器数据通常被存储在存储器中一个短时间段(例如,小于一秒),从而使数据不太容易出现随机错误,因此可以不包括错误检测代码。

在一些实施例中,错误检测器251-257可以包括与外部接口220相关联的协议错误检测器253。在一些实施例中,当检测到与由外部接口220实现的通信协议相关联的错误时,协议错误检测器253可以报告协议错误。例如,当从cpu接收指令时,协议错误检测器253可以检测与axi协议相关联的非法读取和/或写入事务(例如,非法突发类型、高速缓存行交叉而不包裹突发类型等)。

在一些实施例中,错误检测器251-257可以包括与本地存储器230相关联的奇偶校验错误检测器254。在一些实施例中,奇偶校验错误检测器254可以验证被存储在本地存储器230中的数据的完整性,并且当存储的数据被标识为损坏时,产生奇偶校验错误。在一些示例中,奇偶校验模块242可以维持一个或多个奇偶校验位,并且当奇偶校验位与存储的数据不匹配时,报告奇偶校验错误。

在一些实施例中,错误检测器251-257可以包括与本地存储器230相关联的指令错误检测器255。在一些实施例中,指令错误检测器255可以验证被存储在本地存储器230中的指令,并且当所存储的指令无效时,产生指令错误。例如,当检测到无法识别的指令(例如,具有不与神经网络处理器210被配置为执行的操作相对应的指令代码的指令)时,指令错误检测器255可以产生指令错误。在一些实施例中,指令错误检测器255可以在操作期间的各个时间验证指令,例如,在指令被写入本地存储器230的同时(例如,当它们在执行神经网络之前经由外部接口220的编程接口被接收时),在指令从本地存储器230中被取回的同时(例如,当它们由计算引擎240执行时)和/或在任何其他合适的时间。

在一些实施例中,错误检测器251-257可以包括与计算引擎240相关联的计算错误检测器256。在一些实施例中,计算错误检测器256可以报告与经由计算引擎240执行计算相关联的错误。由计算引擎240在操作期间遇到的说明性错误可以包括无效操作、零除、上溢、下溢、反规范化、不精确数字等。在一些示例中,错误中的一个或多个错误可以与由ieee754标准定义的浮点异常相对应。

在一些实施例中,错误检测器251-257可以包括超时错误检测器257。在一些实施例中,当由神经网络处理器210执行的一个或多个模块和/或任务挂起或以其他方式变得不响应时,超时错误检测器257可以报告超时错误。例如,超时错误检测器257可以监测神经网络处理器210中的某些类型的活动,诸如经由外部接口220接收和/或发送数据。在不活动时段之后,超时错误检测器257可以确定由神经网络处理器210执行的一个或多个模块和/或任务挂起并且标记错误。在一些示例中,超时错误检测器257可以使用看门狗计时器(wdt)来实现。超时错误检测器257的示例性实施例在图3中进行进一步详细讨论。

应当理解,图2中所描绘的错误检测器251-257仅是示例,并且神经网络处理器210可以包括许多其他类型的错误检测器。此外,尽管错误检测器251-257被描绘为与神经网络处理器210的特定模块(例如,外部接口220、本地存储器230和/或计算引擎240)相关联和/或嵌入在其内,但是错误检测器251-257可以以各种附加配置和/或备选配置被布置。例如,除了和/或代替本地存储器230,指令错误检测器255可以被并入外部接口220和/或计算引擎240中。

在一些实施例中,神经网络处理器210可以包括神经网络控制器270。在一些实施例中,神经网络控制器270可以维持与在神经网络处理器210上运行的一个或多个神经网络中的每个神经网络相关联的状态信息。神经网络控制器270可以维持用于每个神经网络的一个或多个状态寄存器275。在一些示例中,状态寄存器275可以使用诸如进度指示器(例如,未决、正在运行、已完成等)、错误指示器、地址指针(例如,其中存储神经网络的当前结果的存储器中的位置)等之类的变量来跟踪每个神经网络的执行状态。

在一些示例中,神经网络控制器270可以设置用于每个神经网络的一个或多个中断引脚280的电平。中断引脚280被耦合到中断处理器290,以使得系统200能够响应中断信号。例如,中断引脚280可以包括完成引脚282,完成引脚282用于发信号通知何时已经完成计算和/或神经网络的结果已经在输出缓冲器226中进行了更新。在一些示例中,完成引脚282可以被操作为边缘敏感中断和/或电平敏感中断。响应于在完成引脚282上检测到中断信号,系统200可以检索对应神经网络的更新结果。

在一些实施例中,神经网络控制器270可以集中地管理和/或响应由错误检测器251-257报告的错误。例如,错误可以使用机器检查体系架构(mca)报告而被报告给神经网络控制器270。与这样的实施例一致,状态寄存器275可以存储用于每个神经网络的错误代码,诸如16位mca错误代码。在一些示例中,错误代码可以指示错误是否在相应神经网络中发生(例如,使用错误有效位),如果是,则指示所遇到的错误的类型(例如,响应错误、完整性错误等)。同样,中断引脚280可以包括错误引脚284,该错误引脚284用于发信号通知神经网络何时遇到错误。在一些示例中,错误引脚284可以被用作边缘敏感中断和/或电平敏感中断。响应于检测到错误引脚284上的中断信号,系统200可以通过经由状态寄存器275访问错误代码来确定错误的类型,并且基于错误的类型来采取适当的补救动作。

在一些实施例中,完成引脚282和错误引脚284可以异步地操作。也就是说,可以在错误引脚284上传输错误中断信号,而无需等待在完成引脚282上传输对应的完成中断信号。因此,中断处理程序290可以选择立即响应错误中断处理程序(例如,通过终止神经网络)、或者尽管有错误也等待未决计算完成。在一些实施例中,是立即终止神经网络还是等待完成的决定可以取决于错误的类型。

如上文所讨论的,神经网络处理器210可以标识并且标记在神经网络的处理期间发生的若干种类型的错误。在一些示例中,通常,错误可以分类为程序错误(例如,分别由错误检测器253和/或255检测到的协议错误和/或指令错误)、数据错误(例如,分别由错误检测器251、252、254和256检测到的响应错误、完整性错误、奇偶校验错误和/或计算错误)和/或超时错误(例如,由超时错误检测器257检测到的超时错误)。

对于某些类型的错误,可以在错误检测后立即终止神经网络的执行。例如,当遇到程序错误(例如,协议错误和/或指令错误)时,可以在检测到错误后立即重新启动神经网络,以便重新加载程序。在另一示例中,当遇到超时错误时,神经网络处理器210可以在检测到错误后立即被重新启动,以便解冻任何挂起的模块。

对于其他类型的错误,神经网络计算的下一结果可以被视为受污染或损坏,但仍可以允许未决计算继续进行。例如,当遇到数据错误(例如,响应错误、完整性错误、奇偶校验错误和/或计算错误)时,可以允许基于错误数据的未决计算继续进行,而不终止神经网络的执行和/或重新启动神经网络处理器210。然而,可以指令系统200忽略或跳过计算结果。在不重新启动神经网络的情况下跳过由神经网络生成的被污染的结果的双重目的是避免不合时宜地依赖污染数据,同时还避免与完全重新启动神经网络相关联的破坏。例如,在自动驾驶汽车应用中,神经网络每秒可以处理数十或数百个图像帧。在这种情况下,偶尔跳帧可能认为没有问题和/或对自动驾驶性能不会产生重大影响。同时,因为被污染的结果如此被标识并且丢弃,所以这种方法避免了与依赖错误数据相关联的风险。

在一些实施例中,对某些类型的错误的响应可以取决于系统200的设计周期阶段。例如,在初启阶段期间,当遇到超时错误时,神经网络处理器210可以转换为调试模式。如下文参考图4所更详细地讨论的,在调试模式下,可以暂停神经网络处理器的执行,从而允许访问神经网络处理器210的详细状态信息(例如,寄存器状态)和/或允许指令的单步执行。进入调试模式可以通过提供在错误发生时对神经网络处理器210的状态的访问来促进快速和/或准确地标识超时错误的原因。另一方面,进入调试模式可能不适用于生产阶段;在生产阶段响应于超时错误的优选行为可以是尝试尽快恢复神经网络处理器210的正常操作。因此,在生产阶段期间,当遇到超时错误时,可以终止神经网络和/或可以立即重新启动神经网络处理器210。

尽管为了简化示出了状态寄存器275和中断引脚280的单个集合,但是应当理解,神经网络处理器210可以包括状态寄存器和中断引脚的多个集合。具体地,状态寄存器和中断引脚的集合的数目可以与神经网络处理器210被配置为串行和/或并行处理的神经网络的数目相对应。在说明性实施例中,神经网络处理器210可以包括状态寄存器和中断引脚的32个集合,使得神经网络处理器210能够一次处理多达32个神经网络。

图3是根据一些实施例的超时错误检测器300的简化图。根据与图1至图2一致的一些实施例,超时错误检测器300可以用于实现神经网络处理器210的超时错误检测器257。

如图3所描绘的,超时错误检测器300包括一个或多个主计时器311-319。在一些示例中,主计时器311-319可以监测神经网络处理器210的一个或多个块或模块中的空闲周期。例如,主计时器311可以监测自外部接口220已经接收到数据(例如,从存储器读取的数据)以来的经过时间。在另一示例中,主计时器312可以监测自外部接口220已经发送数据(例如,写入存储器的数据)以来的经过时间。在另一示例中,主计时器319可以监测自计算引擎240已经激活(例如,执行的指令)以来的经过时间。

在一些实施例中,可以通过对自上次检测到活动以来的时钟周期进行计数来确定经过时间。例如,主计时器311-319可以从阈值数目个时钟周期开始递减计数。在一些示例中,被监测的块中的每个块可以发出指示活动发生(例如,从存储器读取和/或写入到存储器的分组、计算引擎所执行的指令等)的信号。当从被监测的块接收信号时,计数重置为阈值。如果计数达到零,则产生错误。附加地或备选地,主计时器311-319可以从零开始递增计数,直到达到阈值数目为止。

在一些实施例中,超时检测模块300可以附加地包括一个或多个复合计时器,诸如层计时器320和/或神经网络计时器330。在一些实施例中,复合计时器可以监测神经网络处理器210的多个块中的聚合活动。例如,复合计时器可以同时地监测自外部接口200已经接收到数据以来的经过时间、自外部接口200已经发送数据以来的经过时间、和/或自计算引擎240已经激活以来的经过时间。

在一些示例中,当处理神经网络的层所花费的时间已经超过预先确定的时间量时,层计时器320可以超时。与这样的示例一致,层计时器320可以监测与执行神经网络中的层有关的活动的总和,其可以包括但不限于存储器读取、存储器写入以及计算引擎活动。在一些示例中,用于层计时器320的阈值时间可以大于用于主计时器311-319中的每个主计时器的阈值时间。

在一些示例中,当处理整个神经网络所花费的时间已经超过预先确定的时间量时,神经网络计时器330可以超时。与这样的示例一致,神经网络计时器330可以监测与执行神经网络有关的活动的总和,其可以包括但不限于存储器读取、存储器写入以及计算引擎活动。在一些示例中,用于神经网络计时器330的阈值时间可以大于用于主计时器311-319和/或层计时器320的阈值时间。例如,用于神经网络计时器330的阈值时间可以是十亿个时钟周期。

在一些示例中,聚合器340可以基于主计时器311-319和/或复合计时器(例如,布局计时器320和/或神经网络计时器330)的输出来提供聚合超时错误信号。根据一些实施例,当主计时器311-319、层计时器320和/或神经网络计时器330中的任何计时器超时时,聚合超时错误信号可以指示错误。也就是说,当神经网络处理器210的各个模块挂起(导致主计时器311-319中的一个或多个主计时器超时)时、当神经网络的层挂起(导致层计时器320超时)时和/或当神经网络挂起(导致网络计时器330超时)时,超时错误检测器300可以报告超时错误。

图4是根据一些实施例的具有调试模式的神经网络处理器400的简化图。根据与图1至图3一致的一些实施例,神经网络处理器400可以用于实现系统200的神经网络处理器210。图4图示了当在初启期间调试处理器400时访问神经网络处理器400的隐藏寄存器的能力。在一些示例中,在初启期间,神经网络处理器400可以响应于诸如超时错误之类的错误而自动从操作模式(例如,神经网络的正常执行)转换到调试模式。

神经网络处理器400包括多个寄存器,其存储与神经网络处理器400相关联的状态信息和/或各种其他类型的信息(例如,指令、数据、地址指针等)。在一些示例中,多个寄存器可以包括一个或多个顶层寄存器412,其可以经由外部接口(例如,使用axi总线协议经由外部接口220)而被容易和/或直接地访问以用于调试目的。而且,多个寄存器包括一个或多个深寄存器414,其不能由外部装置容易和/或直接地访问。例如,可以通过经由复用器420将数据迁移到顶层寄存器412中来访问存储在深寄存器414中的数据。因而,存储在深寄存器414中的数据可能花费大量时间来取回。

常规地,当处理器遇到错误(诸如超时错误)时,处理器的运行过程被终止和/或重新启动,而不提供对存储在处理器寄存器中的状态信息的访问。备选地,可以保存快照,该快照在发生超时错误时捕获处理器状态信息的子集。例如,快照可以包括来自一个或多个顶层寄存器(例如,顶层寄存器412)的数据。然而,快照通常不包括来自深寄存器(例如,深寄存器414)的数据。特别地,生成深寄存器的综合快照可能花费很长时间并且效率很低,因为存储在深寄存器中的许多信息可能与手头的错误无关。然而,从深寄存器选择性地访问相关数据的能力将是期望的,以加速调试处理器的过程。

为了解决这些问题,在调试模式下暂停由神经网络处理器400执行的神经网络,使得神经网络处理器400的许多寄存器中的数据不再像在操作模式下那样改变值。在一些实施例中,神经网络处理器400否则仍然能够在调试模式下响应于外部刺激和/或请求。因此,任务在于调试错误的工程师保留对来自包括顶层寄存器412和深寄存器414在内的寄存器的数据的访问。例如,工程师可以控制多路复用器420以手动查找与存储在深寄存器414中的错误相关的信息。而且,如图4所描绘的,工程师可以具有在神经网络处理器400上运行单步指令以确定增量操作如何影响神经网络处理器400的状态的能力。这些能力可以帮助工程师确定错误的根本原因。因而,相对于传统方法,可以显著地加速调试神经网络处理器400的过程。

图5是根据一些实施例的用于神经网络处理器中的错误处理的方法500的简化图。根据与图1至图4一致的一些实施例,方法500可以由神经网络处理器120、220和/或400实现。

在过程510处,接收错误报告。例如,可以响应于检测到错误,从神经网络处理器的一个或多个错误检测器(诸如错误检测器251-257)接收错误报告。错误报告的说明性示例包括响应错误、完整性错误、协议错误、奇偶校验错误、指令错误、计算错误和/或超时错误,如先前关于图2所讨论的。在一些示例中,错误报告可以与机器检查体系架构(mca)错误报告相对应。

在过程520处,确定错误的类型。在一些实施例中,确定错误的类型可以包括:确定错误是否与程序错误、数据错误和/或超时错误相对应。例如,程序错误可以包括协议错误和/或指令错误;数据错误可以包括响应错误、完整性错误、奇偶校验错误和/或计算错误;并且超时错误可以包括由超时错误检测器257引起的错误。当遇到程序错误时,方法500可以进行到过程530和540,以分别用于终止神经网络的执行并且将神经网络的未决结果标识为损坏。当遇到数据错误时,方法500可以进行到过程540,以用于将神经网络的未决结果标识为损坏,而不在过程530处终止神经网络的执行。当遇到超时错误时,取决于神经网络处理器是在初启模式下还是在生产模式下操作,方法500可以进行到用于转换到调试状态的过程550、或者用于终止神经网络的执行并且重置神经网络处理器的过程560。

在过程530处,立即终止和/或暂停神经网络的执行,而不重置神经网络处理器。在一些实施例中,当遇到程序错误时,可以执行过程530,因为当要执行的指令有缺陷时(例如,当程序指令包括无法识别或无效的命令和/或指令代码时),神经网络处理器可能无法继续执行神经网络。因而,可以立即停止神经网络的执行,使得可以重新加载和/或以其他方式纠正指令。

在过程540处,神经网络的未决结果被标识为损坏。在一些实施例中,通过改变神经网络处理器的诸如错误中断引脚284之类的错误中断引脚的电平,未决结果可以标识为损坏。改变错误中断引脚的电平可以导致诸如中断处理程序290之类的外部系统访问错误信息(例如,通过从神经网络处理器的状态寄存器中取回错误信息)并且确定适当的补救动作。响应于被标识为损坏的神经网络的未决结果而采取的补救动作的示例可以包括:从头开始和/或从先前检查点重试未决神经网络计算;完全丢弃未决结果并且继续进行下一计算;重新启动神经网络处理器等。

在过程550处,当神经网络处理器在初启期间遇到超时错误时,神经网络处理器转换为调试模式。如先前关于图4所描述的,当神经网络处理器转换到调试模式时,暂停神经网络处理器的执行,使得超时错误时的寄存器值停止改变。在这点上,工程师可以通过检查寄存器值和/或通过单步执行指令来调试超时错误。

在过程560处,当神经网络处理器在生产中遇到超时错误时,终止神经网络的执行并且重新启动神经网络处理器。与初启情况不同,希望响应于超时错误而使神经网络处理器尽快恢复运行。而且,通常没有工程资源可用于调试生产中的神经网络处理器。因而,重新启动神经网络处理器以消除挂起状态可以是对生产中的超时错误的优选响应。

诸如神经网络处理器120、220和/或400之类的处理器的一些示例可以包括非暂态有形机器可读介质,其包括可执行代码,该可执行代码当由一个或多个处理器(例如,处理器120、220和/或400)运行时,可以使得一个或多个处理器执行方法500的过程。可以包括方法500的过程的机器可读介质的某些常见形式例如为软盘、柔性盘、硬盘、磁带、任何其他磁性介质、cd-rom、任何其他光学介质、打孔卡、纸带、带孔图案的任何其他物理介质、ram、prom、eprom、flash-eprom、任何其他存储器芯片或盒式磁带、以及/或者处理器或计算机适于从中读取的任何其他介质。

尽管已经示出和描述了说明性实施例,但是在前述公开中设想了各种修改、改变和替换,并且在一些实例中,可以采用实施例的一些特征,而无需相应使用其他特征。本领域普通技术人员将认识到许多变化、备选和修改。因此,本发明的范围应当仅由所附权利要求来限制,并且适当的是,权利要求被广义地解释、并且以与本文中所公开的实施例的范围相一致的方式进行解释。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1