CN118251660A - 检测数据处理管线中的硬件故障 - Google Patents

检测数据处理管线中的硬件故障 Download PDF

Info

Publication number
CN118251660A
CN118251660A CN202280072419.0A CN202280072419A CN118251660A CN 118251660 A CN118251660 A CN 118251660A CN 202280072419 A CN202280072419 A CN 202280072419A CN 118251660 A CN118251660 A CN 118251660A
Authority
CN
China
Prior art keywords
error detection
block
data
blocks
circuit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202280072419.0A
Other languages
English (en)
Inventor
朱嵘喆
张山刚
N·巴拉苏布拉曼亚
卢金跃
苗廷海
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of CN118251660A publication Critical patent/CN118251660A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0787Storage of error reports, e.g. persistent data storage, storage using memory protection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Hardware Redundancy (AREA)

Abstract

一种***包括至少一个电路,所述至少一个电路用于检测在由该至少一个电路执行操作期间是否已经发生故障。该至少一个电路生成错误检测值并且在这些错误检测值与预定的错误检测数据不匹配时确定已经发生故障。

Description

检测数据处理管线中的硬件故障
技术领域
至少一个实施例涉及一种硬件诊断电路,该硬件诊断电路可以用于检测目标***中的硬件故障。例如,至少一个实施例涉及在实现本文所描述的各种新颖技术的片上***的数据处理单元内包括错误检测硬件。作为另一个示例,至少一个实施例涉及包括这种片上***的自主车辆。
背景技术
硬件故障可以被分类为暂时性的或永久性的。暂时性硬件故障包括数据的一个或更多个比特被损坏(例如,翻转)且可由电磁干扰引起。因此,暂时性硬件故障的原因可能是临时的。另一方面,永久性硬件故障可以由更持久或者甚至无限期地持续(例如,直到修复)的硬件问题引起。永久性硬件故障的示例可以包括使导体(例如,迹线、电线、传输线等)总是携带特定逻辑信号值(例如,1或0)的短路或开路。硬件故障可以表现为不期望的结果。例如,比特被卡在特定值(例如,1或0)处可由永久性硬件故障引起。
功能安全是一个概念,其目标是实现不存在由于运行时***的一个或更多个出错引起的故障而导致的不合理风险。功能安全操作试图将可能由故障引起的危害的风险降低至可容许或可接受的水平。例如,纠错编码(“ECC”)已经用于检测数据存储(例如,存储器)中的暂时故障,但是可能不是检测处理逻辑中的故障的有效方法。使目标***执行诊断操作的软件诊断方法可用于检测处理逻辑中的一些但非全部暂时性故障和永久性故障。执行此类诊断操作也可能负面地影响***性能,因为代替执行功能操作,计算资源被捆绑执行诊断操作。
附图说明
下面参考附图详细描述用于检测数据处理管线中的硬件故障的本***和方法,其中:
图1是根据本公开的一些实施例的检测处理***内的硬件故障的示例***的框图;
图2是根据本公开的一些实施例的由处理***的一个或更多个处理块实现的示例处理管线的框图的图示;
图3是根据本公开的一些实施例的可以包括在每个处理块中的示例组件的框图的图示;
图4是根据本公开的一些实施例的用于说明故障何时在结构上和/或工作负载可观察的示例电路的电路图的图示;
图5是根据本公开的一些实施例的可用于实现错误检测块的示例电路的电路图的图示;
图6是根据本公开的一些实施例的可用于在处理***中实现诊断和功能性任务或操作的示例指令的框图的图示;
图7是示出了根据本公开的一些实施例的检测处理***中的故障的方法的流程图的图示;
图8是根据本公开的一些实施例的描绘执行功能操作的处理块之一的任务协调流程图的图示;
图9是根据本公开的一些实施例的描绘执行诊断操作的处理块之一的任务协调流程图的图示;
图10A是根据本公开的一些实施例的示例自主车辆的图示;
图10B是根据本公开的一些实施例的图10A的示例自主车辆的相机位置和视场的示例;
图10C是根据本公开的一些实施例的图10A的示例自主车辆的示例***架构的框图;
图10D是根据本公开的一些实施例的用于在基于云的服务器与图10A的示例自主车辆之间通信的***图;以及
图11是适合用于实现本公开的一些实施例的示例计算设备的框图。
具体实施方式
图1是根据本公开的一些实施例的检测处理***102内的硬件故障的示例***100的框图的图示。应当理解,本文所述的这种布置和其他布置仅作为示例进行阐述。除了或代替所示的布置和元件,可使用其他布置和元件(例如,机器、接口、函数、次序、函数分组等),并且可完全省略一些元件。进一步,本文描述的许多元件是可以被实现为分立或分布式组件或与其他组件结合以及以任何合适的组合和位置的功能实体。本文描述为由实体执行的各个功能可由硬件、固件和/或软件执行。例如,各个功能可以通过处理器执行存储在存储器中的指令来实现。
在图1所示的实施例中,***100包括***控制器104,该***控制器实现安全监视器106和应用程序108两者。***控制器104向处理***102发送由安全监视器106和/或应用程序108生成的一条或更多条指令110。例如,一条或更多条指令110可包括由安全监视器106生成的指示处理***102执行一个或更多个诊断操作的指令110A。指令110A可包括预定输入112(例如,测试或诊断数据)或对可从其获得预定输入112的一个或更多个存储器位置的引用。处理***102根据在指令110A中识别的一个或更多个诊断操作来处理预定输入112。作为另一非限制性示例,一条或更多条指令110可包括由应用程序108生成的指示处理***102执行功能操作(例如,分析图像数据)的指令110B。
***控制器104可以至少部分地由电路实现,该电路包括到处理***102的一个或更多个连接、至少一个处理器以及存储有待由一个或更多个处理器执行的处理器可执行指令的存储器(例如,非暂时性处理器可读介质)。安全监视器106和/或应用程序108可以通过由***控制器104的一个或更多个处理器或连接到***控制器104的至少一个处理器执行的处理器可执行指令(例如,存储在***控制器104的存储器中)来实现。安全监视器106可以实现为永久故障软件诊断(“PFSD”)软件应用程序。因此,诊断操作可以包括一个或更多个PFSD任务,并且预定输入112可以是PFSD数据。应用程序108可以被实现为至少部分地实现自主车辆内的至少一个高级驾驶员辅助***(“ADAS”)的一个或更多个应用程序。例如,功能操作可以至少部分地实现和/或操作处理图像数据(诸如由自主车辆的前摄像头***捕获的图像数据)的计算机视觉管线。
在图1所示的实施例中,***100包括模拟***114,所述模拟***可以被指示模拟由处理***102对在指令110A中标识的相同诊断操作的执行。模拟***114模拟一个或更多个诊断操作的执行以生成预期或预定错误检测值(称为“黄金参考”116)。可以单独地和/或在不同时间指示处理***102和模拟***114以执行一个或更多个诊断操作。在至少一个实施例中,模拟***114在诊断操作由处理***102执行之前执行一个或更多个诊断操作。因此,黄金参考可以被表征为相对于处理***102执行的一个或更多个诊断操作而被预先确定。
模拟***114可以实现模拟处理***102的模拟过程122以及错误检测过程120。模拟过程122可以生成模拟输出118,并且错误检测过程120可以至少部分地基于模拟输出118来确定黄金参考116。模拟过程122可以相对于处理***102离线执行。因此,模拟过程122可以模拟一个或更多个诊断操作的执行、生成模拟输出118(例如,至少部分地基于预定输入112)、以及至少部分地基于模拟输出118来确定黄金参考116(例如,使用错误检测过程120)。模拟***114可以由存储在非暂时性处理器可读介质上并由计算***的至少一个处理器执行的处理器可执行指令来实现。
如上所述,处理***102可以根据指令110A执行一个或更多个诊断操作,和/或根据指令110B执行一个或更多个功能操作。处理***102包括一个或更多个处理块124,每个处理块实现一个或更多个过程126,每个过程通过执行一个或更多个诊断操作的至少一部分和/或一个或更多个功能操作的至少一部分来生成输出。例如,一个或更多个处理块124的一个或更多个过程126可各自通过执行指令110A中所识别的诊断操作中的一个或更多个的至少一部分而生成实际输出128。一个或更多个过程126各自将其实际输出128提供给错误检测过程130,该错误检测过程至少部分地基于实际输出128确定一个或更多个实际错误检测值132。错误检测过程130将一个或更多个错误检测值132提供给比较过程134,该比较过程通过将黄金参考116之一与一个或更多个错误检测值132中的每一个进行比较来获得比较结果136。处理***102评估比较结果136并确定是否已发生任何故障。如果处理***102确定发生了故障,则处理***102可以生成故障通知138并将故障通知138发送到安全监视器106。安全监视器106和/或***控制器104可在接收到故障通知138之后采取一个或更多个纠正动作。
作为另一个示例,一个或更多个处理块124的一个或更多个过程126可以各自通过执行指令110B中所标识的(一个或更多个)功能操作中的一个或更多个的至少一部分来生成功能输出(未示出)。然而,当处理***102根据指令110B执行一个或更多个功能操作时,处理***102可能不确定是否已发生任何故障。由此,当处理***102执行一个或更多个功能操作时,处理***102可以禁用错误检测过程130。在这种实施例中,错误检测过程130可以不确定针对功能输出的任何错误检测值,并且比较过程134不用于获得比较结果。由此,处理***102可以不确定是否已经发生任何故障。
可以将可选地供应至处理***102的预定输入112与执行一个或更多个诊断操作的指令110A一起存储在存储器子***140中。存储器子***140可以包括易失性存储器(例如,动态随机存取存储器(“DRAM”))和/或非易失性存储器。作为非限制性示例,处理***102可以被实现为集成电路,该集成电路可选地包括***控制器104和存储器子***140。集成电路可以在一个或更多个硅基板(例如,硅芯片)上实现。例如,处理***102、***控制器104和存储器子***140可以是片上***(“SoC”)150的组件。SoC 150可以被安装在目标设备或***中,如自主车辆、电气设备(例如,膝上型计算机、平板计算机、蜂窝电话、智能电话等)、机器人设备等。
(一个或更多个)处理块124中的一个或更多个可以执行与(一个或更多个)处理块124中的至少一个其他处理块不同类型的操作和/或实现不同的过程。一个或更多个处理块124可以是同构的或异构的。在所示实施例中,处理块124被实现在SoC 150的不同硬件区域中。然而,在至少一个实施例中,(一个或更多个)处理块124中的一个或更多个可以共享硬件组件。作为另一个非限制性示例,(一个或更多个)处理块124中的一个或更多个可以被实现为单独的SoC的一部分。
图2是根据本公开的一些实施例的由处理***102(见图1)的一个或更多个处理块124所实施的示例处理管线200的框图的图示。在图2中示出的实施例中,(一个或更多个)处理块124可包括已示出为实现计算机视觉管线(例如,用于自主车辆)的处理块202A-202F。在这种实现方式中,处理块202A-202F可以分别实现视频输入(“VI”)块、图像传感器处理器(“ISP”)块、视频图像合成器(“VIC”)块、光流加速器(“OFA”)块、可编程视觉加速器(“PVA”)块、以及深度学习加速器(“DLA”)块。在替代实施例中,(一个或更多个)处理块124可实施由自主车辆和/或其他类型的设备使用或并入自主车辆和/或其他类型的设备中的其他类型的处理管线。作为非限制性示例,(一个或更多个)处理块124中的一个或更多个可以实现为硬件加速器。
一条或更多条指令110(见图1)在图2中已经被示出为包括命令210-220。如图2所示,一个或更多个处理块124中的一个的输出可被输入到一个或更多个处理块124中的另一个。例如,在图2中,***控制器104向处理块202A发送命令210以处理存储在存储器子***140中的输入数据(例如,图1中所示的预定输入112)。处理块202A获得输入数据、处理该输入数据并且将输出数据(例如,图1中所示的实际输出128)存储在存储器子***140中。处理块202A还可以通知***控制器104:处理块202A已经完成了对其输入数据的处理并且将输出数据存储在存储器子***140中。然后,***控制器104向处理块202B发送命令212,以处理由处理块202A存储的输出数据作为输入数据。处理块202B获得输入数据,对其进行处理,并且将新的输出数据存储在存储器子***140中。处理块202B还可通知***控制器104:处理块202B已完成处理其输入数据并且将新输出数据存储在存储器子***140中。该过程随着***控制器104分别向处理块202C-202F发送命令214-220而重复,每一个处理块获得其各自的输入数据,对其进行处理,将新输出数据存储在存储器子***140中,以及可选地通知***控制器104该新输出数据已被存储在存储器子***140中。
一个或更多个处理块124中的每个包括本地处理器块230、数据处理单元(“DPU”)232、本地存储器234、以及直接存储器访问(“DMA”)块236。本地处理器块230解释从***控制器104(参见图1-3、图5、图8和图9)接收的命令,并管理其处理块内的其他块(例如,DPU232、DMA块236、本地存储器234等),以执行由这些命令指定的操作。本地处理器块230可以被实施为主中央处理单元(“CPU”)复合体、一个或更多个微处理器、一个或更多个微控制器、一个或更多个图形处理单元(“GPU”)、一个或更多个数据处理单元(“DPU”)等。本地存储器234可以包括易失性存储器(例如,DRAM、静态随机存取存储器(“SRAM”)等)和/或非易失性存储器。DPU 232和/或DMA块236可实现为一个或更多个电路。
当处理***102正在执行一条或更多条指令110(见图1)中所标识的一个或更多个诊断操作和/或一个或更多个功能操作时,处理块202A-202F各自执行一个或更多个子操作。例如,当指令110包括指令110B(参见图1)时,处理块202A-202F中的每一个(参见图2)的DPU 232可执行特定于应用程序108(参见图1、图8和图9)的过程(例如,功能操作的至少一部分)。当一条或更多条指令110包括指令110A(参见图1)时,处理块202A-202F中的每一个(参见图2)的DPU 232可执行相同的过程(例如,相对于图1中示出的预定输入112)。
图3是根据本公开的一些实施例的可以包括在每个处理块202A-202F(参见图2)中的示例组件的框图的图示。为了便于说明,图3将被描述为示出处理块202A的组件。然而,一个或更多个处理块124中的每一个可包括与图3中示出的那些基本上相同的组件。
参考图3,本地处理器块230可以从***控制器104接收命令210。在该示例中,命令210指示处理块202A执行诊断操作的至少一部分,这要求处理块202A处理存储在存储器子***140中的DPU输入数据302(例如,图1中所示的预定输入112)。响应于命令210,本地处理器块230可以指示DMA块236从存储器子***140提取DPU输入数据302,并将DPU输入数据302存储在本地存储器234的高速缓存304中。DPU 232处理DPU输入数据302并产生DPU输出数据306,DPU 232将DPU输出数据306存储在本地存储器234中的缓冲器308中。本地处理器块230可以指示DMA块236从缓冲器308获得DPU输出数据306,并将DPU输出数据306存储在存储器子***140中。可选地,本地处理器块230可以通知***控制器104:处理块202A已经完成了DPU输入数据302的处理,并且已经将DPU输出数据306存储在存储器子***140中。高速缓存304和/或缓冲器308可以帮助减少与访问存储器子***140相关联的延迟。
此时,***控制器104可以将命令212(参见图2)发送至处理块202B(参见图2),这可以使处理块202B的本地处理器块230指示处理块202B的DMA块236从存储器子***140中提取DPU输出数据306并且将DPU输出数据306存储在处理块202B的本地存储器234中的高速缓存304中作为处理块202B的DPU输入数据302。处理块202B的DPU 232处理DPU输入数据302并产生新的DPU输出数据306,处理块202B的DPU 232将新的DPU输出数据306存储在处理块202B的本地存储器234中的缓冲器308中。处理块202B的本地处理器块230可以指示处理块202B的DMA块236从处理块202B的缓冲器308中获得DPU输出数据306,并且将DPU输出数据306存储在存储器子***140中。可选地,处理块202B的本地处理器块230可以通知***控制器104:处理块202B已经完成了处理其DPU输入数据302并且已经将新的DPU输出数据306存储在存储器子***140中。此时,***控制器104可以向处理块202C(见图2)等发送命令214(见图2),直到处理块202F(见图2)已经完成了处理其DPU输入数据302并且已经将其DPU输出数据306存储在存储器子***140中。换言之,该过程继续,直到所有处理块202A-202F已经处理了它们相应的DPU输入数据302。
当处理其对应的DPU输入数据时,处理块202A-202F中的一个或更多个处理块的DPU 232的硬件和/或连接至一个或更多个DPU的硬件可以潜在地经历一个或更多个硬件故障。可以使用功能安全操作来将由这种故障潜在地引起的危害的风险降低至可容忍或可接受的水平。
这种功能安全操作可以包括用于检测暂时性硬件故障和/或永久性硬件故障的操作。例如,可以通过使用错误检测码(“EDC”)电路来检测暂时性硬件故障,来生成EDC(例如,校验位、错误校正码(“ECC”)等)。举非限制性示例而言,如果正在执行的操作是将数据存储在SRAM中的写入请求,则EDC电路内的被定位成接收写入请求的生成器块将至少部分地基于数据生成一个或更多个校验位。EDC电路可以将一个或更多个校验位和写入请求转发到SRAM,SRAM将一个或更多个校验位与数据一起存储。当SRAM接收到对数据的读取请求时,SRAM检索一个或更多个校验位和数据,并将它们两者发送到EDC电路内的终止块。终止块使用一个或更多个校验位来确定数据的任何位是否已经损坏。可选地,如果在数据中存在任何损坏的位,则终止块可校正一个或更多个损坏的位。例如,EDC电路可以实现存储器奇偶校验、存储器纠错码(“ECC”)(也称为ECC存储器)等。
永久性硬件故障可以使用软件诊断方法来检测,如***内测试(“IST”)方法和/或永久故障软件诊断(“PFSD”)方法。与通过处理流经目标***的功能数据来检测暂时性硬件故障的EDC电路不同,软件诊断方法使目标***执行诊断操作(例如,处理测试、处理诊断数据等)。由此,软件诊断方法可被表征为运用目标***中存在的硬件。
PFSD方法发布可以穿插有功能操作(例如,源自应用程序108)的PFSD任务。例如,PFSD任务可被调度为在容错时间间隔(“FTTI”)内偶尔(例如,周期性地)执行。FTTI是在不期望的事件(例如,危险)发生之前在目标***中可能存在故障的时间量。PFSD任务可通过以与功能操作使用硬件相同的方式使用硬件来运用目标***的硬件。例如,相同的硬件接口可由PFSD任务和功能操作两者用于配置访问和/或数据访问。类似地,当执行PFSD任务和功能操作两者时,相同的编程序列可以跟随有在目标***上执行的软件。换句话说,PFSD方法使用目标***的现有硬件和软件组件,这可使得PFSD方法易于部署。进一步,PFSD方法不需要附加的上下文切换,因为硬件以与功能操作相同的方式处理PFSD任务。
可以通过诊断方法测试的硬件的百分比被称为其诊断覆盖率。PFSD方法可实现的诊断覆盖率可至少部分地由预定数量的可用的PFSD任务(实现为软件诊断任务)来确定。硬件处理块(例如,一个或更多个处理块124中的一个)可以表征为包括控制和配置块、通信块和数据处理块。控制和配置块可包括处理器(例如,本地处理器块230),该处理器过于通用而不能被预定数量的PFSD任务全面地练习。由此,PFSD方法关于控制和配置块的有效性可以相对较低。例如,将模拟永久硬件故障注入到目标***的控制和配置块中已经显示,PFSD方法可以提供目标***中的控制和配置块的约10%至约20%的诊断覆盖率。不幸的是,增加预定软件诊断任务的数量以增加诊断覆盖率,可能增加运行时并捆绑硬件。
通信块可包括用于处理特殊条件的逻辑,这些特殊条件难以(如果不是不可能的话)使用PFSD任务进行测试,因为将需要大量PFSD任务来测试大量逻辑组合,这些逻辑组合中的一些甚至可能不可行并且因此不需要进行测试。将模拟永久硬件故障注入到目标***的通信块中已经显示,PFSD方法可以提供目标***中通信块的约40%至约50%的诊断覆盖率。虽然可以实现通信块的诊断覆盖率的适度可接受水平,但是增加该诊断覆盖率可能是困难的。
数据处理块可根据由特定应用程序(例如,应用程序108)确定的工作模式来执行固定功能。此外,数据处理块所支持的工作模式可能是有限的,并且仅(例如,由应用程序108使用的)可用工作模式的子集对于PFSD方法是感兴趣的。因此,不捆绑目标***的硬件的PFSD任务的合理数目可足以充分锻炼数据处理块。由此,PFSD方法关于数据处理块的有效性可以相对较高。例如,将模拟永久硬件故障注入到目标***的数据处理块中已经显示,PFSD方法可以提供目标***中数据处理块的约60%至约80%的诊断覆盖率。
参考图2,如上所述,可选择充分锻炼数据处理块而不消耗不期望的处理资源量(例如,增加运行时和/或捆绑硬件)的预定数量的PFSD任务。数据处理块可包括一个或更多个处理块124中的每一个的DPU 232,DPU 232可执行特定于应用程序108的一个或更多个功能过程(见图1、图8和图9)。换言之,一个或更多个处理块124的数据处理块可以根据由应用程序108确定的工作模式来执行固定功能。例如,(例如,由处理块202F的DPU 232实现的)DLA引擎可以执行卷积神经网络(“CNN”)操作。作为另一非限制性实例,VIC引擎(例如,由处理块202C的DPU 232实施)可在指定比例因子之后执行像素内插或外插。
不幸的是,一些硬件故障可能发生但未被PFSD任务检测到。故障是否可检测被称为其故障效应可观测性。PFSD任务被设计成生成与预定结果进行比较的实际结果。通过PFSD方法仅检测引起实际结果与预定结果之间的不匹配的那些故障。换言之,不导致失配的故障可以保持未被检测到或潜伏。
故障发生的位置可以被称为故障点,并且收集实际结果以与预定结果进行比较的位置被称为诊断点。故障的可观测性取决于诊断点在目标***内的放置。典型的诊断点包括硬件引擎(例如,一个或更多个处理块124中的一个)的主输出,并且可以包括仅指示硬件引擎的总体健康性的一个或更多个寄存器位。虽然增加诊断点的数目可增加诊断覆盖率,但这样做也可增加运行时并捆绑硬件。此外,PFSD方法的常规实现由软件执行,这需要处理器时间。例如,软件用于通过处理实际结果来获得一个或更多个值(例如,基于实际结果计算一个或更多个校验和)和/或将(一个或更多个)值与预定结果进行比较。因此,PFSD方法的此类软件实现的时间和空间成本可能不可忽略。当目标***实现CV管线时,由于硬件引擎(例如,处理块,如处理块202A-202F)所处理的视频帧中的像素数据量,甚至当使用校验和算法(如循环冗余校验(“CRC”))时也可能尤其如此。
故障点可以连接到其他硬件。因此,故障的影响可通过连接的硬件(也称为中间***逻辑)从故障点传播到诊断点,在该点处故障可通过PFSD方法来观测。硬件设计的复杂性使得故障通过连接的硬件传播成为可使用两个概念度量探索的难题:结构可观测性和工作负载可观测性。
结构可观测性确定目标***中是否存在从故障点到诊断点的路径,并且不考虑逻辑状态。例如,当卡住故障(stuck-at fault)的效应达到至少一个诊断点或者包括在任何诊断点的扇入锥(fan-in cone)中时,认为卡住故障在结构上可观测到。图4是根据本公开的一些实施例的用于说明故障何时在结构上可观测和/或工作负载可观测的示例电路400的电路图的图示。参照图4,电路400包括与(AND)逻辑门G1、或(OR)逻辑门G2和异或(XOR)逻辑门G3以及两个触发器FF1和FF2。AND逻辑门G1具有两个输入端口402和404,OR逻辑门G2具有输入端口406。在输入端口402-406中的一个或更多个处可能发生故障。触发器FF2具有作为诊断点的输出端口408。因为输入端口402-406的状态可以通过电路400传播到输出端口408,所以在输入端口402-406处发生的故障都是结构性可观测的。然而,PFSD任务将不能检测所有结构可观测的故障,因为一些故障的影响可被PFSD任务设置的静态值(例如,充当逻辑钳位)抵消。例如,当PFSD任务将输入端口404设置为等于零时,AND逻辑门G1将输出零,并且在输入端口402处接收的输入将不会改变AND逻辑门G1的输出。因此,在输入端口402处发生的任何故障将不能在输出端口408处检测到。作为另一示例,当PFSD任务将输入端口406设置为等于1时,OR逻辑门G2将输出1,并且从AND逻辑门G1接收的输入将不改变OR逻辑门G2的输出。因此,在输入端口402和/或输入端口404处发生的任何故障在输出端口408处将是不可检测的。
如之前示例所示出的,结构可观测故障的可检测性可以取决于工作负载,该工作负载由PFSD任务确定。可在特定工作负载下传播通过诊断点的故障表示为工作负载可观测的。PFSD任务是否实际检测到工作负载可观测故障取决于PFSD任务的设计。因此,故障效应可观测性可以以两种方式改进。首先,可以向目标***添加附加诊断点。例如,此类附加诊断点可包括安全应用所使用的所有值,以防止故障影响安全应用的运行。其次,PFSD任务可被定制成生成确保结构可观测故障是工作负载可观测的并且可由检查机制检测的工作负载。这种定制被称为精化过程。为了增加诊断覆盖,实施PFSD方法的软件可精化或增强由PFSD任务生成的工作负载,以增加故障效应可观测性。但是,精化的工作负载可能遇到一些瓶颈并且可能具有增加的运行时间。
参考图3,DPU 232可以通过使用硬件来增加诊断点的数量、确定错误检测值(例如,通过执行校验和计算)、以及将错误检测值与黄金参考进行比较来避免这种瓶颈和/或增加的运行时间。例如,在图3所示的实施例中,DPU 232包括通道C1-CM、子块310和错误检测块312。子块310在通道C1-C(M-1)上接收和/或发送信息(例如,作为数据分组)。在示出的实施例中,子块310包括通过通道C2-C(M-2)串联地连接在一起的子块310-1至310-N,但是可以使用其他布置,诸如并联以及组合的并联和串联布置。在所示实施例中,错误检测块312包括分别连接到通道C1-CM的错误检测块312-1至312-M。错误检测块312可被表征为分别被动地监测由子块310-1至310-N输出并在通道C2-C(M-1)中传输的数据。
在所示出的实施例中,通道C1-C(M-2)分别向子块310-1至310-N提供子块输入数据,并且通道C2-C(M-1)分别从子块310-1至310-N获得子块输出数据。通道C1将高速缓存304连接到子块310-1,通道CM将缓冲器308连接到DMA块236。在示出的实例中,通道C1-CM的数量M可以比子块310-1至310-N的数量N大两个。子块310-1至310-N中的每一个对由通道C1-C(M-2)之一传导到子块的子块输入数据执行一个或更多个子操作,并产生被通道C2-C(M-1)之一传导远离子块的子块输出数据。由此,在所示的实例中,子块310-1至310-N中的一个子块的子块输出数据是子块310-1至310-N中的另一个子块的子块输入数据。
在所示出的示例中,通道C1将DPU输入数据302输入到子块310-1和错误检测块312-1中。子块310-1至310-N串联连接在一起,其中子块310-1接收DPU输入数据302(作为其子块输入数据),处理其子块输入数据,并且通过通道C2将其子块输出数据供应到子块310-2和错误检测块312-2两者。如上所述,子块310-2至310-(N-1)中的每个子块从子块310-1至310-(N-2)的前一个子块接收子块输出数据作为其子块输入数据,处理其子块输入数据,并且将其子块输出数据供应到子块310-3至310-N中的后一个子块和错误检测块312-3至312-(M-2)中的一个错误检测块。子块310-N从子块310-(N-1)接收(作为其子块输入数据的)子块输出数据,处理其子块输入数据,并且通过通道C(M-1)将其子块输出数据供应至缓冲器308和错误检测块312-(M-1)两者。通道CM将缓冲器308的输出供应至DMA块236和错误检测块312-M。
错误检测块312-1至312-M中的每个至少部分地基于其输入来生成错误检测值(例如,校验和)并且确定该错误检测值是否匹配黄金参考。在示出的实例中,错误检测块312-1至312-M分别产生比较结果R1-RM,并且将比较结果R1-RM存储在状态寄存器320(例如,滚动寄存器)中。本地处理器块230连接到状态寄存器320并且从其获得比较结果R1-RM。本地处理器块230可以将比较结果R1-RM中的一个或更多个作为故障通知138转发到***控制器104。例如,如果比较结果R1-RM之一指示已经发生故障,则本地处理器块230可以向***控制器104转发故障通知138。
在所示出的实施例中,通道C1-CM各自充当诊断点,并且包括错误检测块312-1至312-M增加了DPU 232中的诊断点的数量(例如,增加了至少数量N)。除了增加DPU 232内部的诊断点的数量之外,错误检测块312-2至312-(M-1)包括确定错误检测值(例如,通过执行校验和计算)的硬件以及将错误检测值与黄金参考进行比较的硬件。因此,错误检测值的确定及其与黄金参考的比较不捆绑本地处理器块230。
图5是根据本公开的一些实施例可以用于实现错误检测块312(参见图3)中的一个或更多个的示例电路500的电路图的图示。参考图5,电路500可包括错误检测电路502(例如,EDC电路)、三个寄存器504-508以及比较电路510。寄存器504-508中的一个或更多个可被实现为软件可编程寄存器。
参照图3,错误检测电路502可以从高速缓存304、缓冲器308或子块310-3至310-(N)中的一个接收输入520。参考图5,错误检测电路502至少部分地基于输入520确定错误检测值522,并且将错误检测值522传输至存储错误检测值522的第一寄存器504。作为非限制性示例,错误检测值522可以是由错误检测电路502确定的CRC码。在至少一个实施例中,可以基于输入520和从第一寄存器504接收的先前错误检测值524来确定错误检测值522。一些错误检测方法可包括附加值,诸如预定多项式。例如,如果输入520作为一系列数据分组被接收,则错误检测电路502可以确定该系列中的第一数据分组的第一CRC码、预定多项式以及存储在第一寄存器504中的值,该值可以是初始化值(例如,零)。错误检测电路502可将第一CRC码存储在第一寄存器504中。然后,错误检测电路502可以确定针对系列中的第二数据分组的第二CRC码、预定多项式和针对第一分组确定的存储在第一寄存器504中的值。该过程针对系列中的每个数据分组继续,直到所有数据分组都已经被错误检测电路502处理,此时,第一寄存器504存储最终错误检测值526。
第二寄存器506接收并存储黄金参考528(例如,图1中所示的黄金参考116之一)。在所示出的实施例中,第二寄存器506可以从本地处理器块230接收黄金参考528。本地处理器块230可以已经从***控制器104接收黄金参考528(例如,在图1所示的指令110A中)。
第三(控制)寄存器508可以帮助管理电路500,这可以包括初始化第一寄存器504、启用最终错误检测值526的计算、禁用最终错误检测值526的计算和/或触发比较电路510来比较由第一寄存器504和第二寄存器506存储的值。例如,第三(控制)寄存器508可以从本地处理器块230接收一个或更多个命令530。命令530可致使第三(控制)寄存器508存储致使第一寄存器504初始化(例如,将其值设定为等于零)的值532。
一个或更多个命令530可以使第三(控制)寄存器508存储使错误检测电路502能够确定最终错误检测值526的值534。在图5所示的示例中,电路500可包括AND逻辑门536,该AND逻辑门536接收值534和值538并在值534和538都不是低值(例如,零)时输出预定高值(例如,一)。当输入520(例如,新数据分组)准备好处理时,值538具有预定的高值(例如,一)。换言之,当输入520有效时,值538具有预定的高值。AND逻辑门536可以从向包括AND逻辑门536的错误检测块312中的特定一个提供数据的任何结构(如高速缓存304(参见图3)、缓冲器308(参见图3)或子块310中的任一个(参见图3、图8和图9))接收值538。换言之,值538可从通道C1至CM中的任一个接收(见图3)。当AND逻辑门536输出预定高值(例如,一)时,第一寄存器504将预定高值(例如,与先前错误检测值524一起)提供给错误检测电路502,这启用错误检测电路502。当值534和538中的至少一个是低值(例如,零)时,AND逻辑门536输出预定的低值(例如,零)。作为非限制性示例,错误检测电路502可以通过对第一寄存器504轮询该值来获得AND逻辑门536所输出的值。
一个或更多个命令530可以使第三(控制)寄存器508存储禁用错误检测电路502的值(未示出),从而使得错误检测电路502不确定最终错误检测值526。在图5所示的示例中,该值(未示出)可以是低的(例如,零),从而使得AND逻辑门536输出错误检测电路502接收(例如,与先前的错误检测值524一起接收)的并且禁用错误检测电路502的预定低值(例如,零)。
一个或更多个命令530可以使第三(控制)寄存器508存储值540,该值540使比较电路510将最终错误检测值526与分别由第一寄存器504和第二寄存器506存储的黄金参考528进行比较,并且将该比较的结果542(例如,图3中示出的比较结果R1-RM之一)输出至状态寄存器320。作为非限制性示例,比较电路510可以针对值540轮询第三(控制)寄存器508。在所示实施例中,本地处理器块230可以从可以充当专用端口的状态寄存器320获得结果542。因此,第三(控制)寄存器508可以通过初始化第一寄存器504、启用错误检测值522的计算、禁用错误检测值522的计算和触发比较电路510的比较来管理电路500。
参考图3,如上所述,错误检测块312-1至312-M将比较结果R1-RM分别提供至本地处理器块230(例如,经由状态寄存器320)。如果比较结果R1-RM中的一个或更多个指示已经发生故障,则本地处理器块230可以通知***控制器104,因此可以采取纠正动作。例如,参考图5,本地处理器块230可以通过向***控制器104发送故障通知544(例如,在图1和图3所示的故障通知138中)来通知***控制器104。
如上所述,错误检测块312可以被实施为CRC块并且错误检测值可以被实施为CRC码。在这样的实施例中,错误检测块312可以被表征为实施硬件CRC辅助的软件诊断,该硬件CRC辅助的软件诊断检测目标***(诸如处理管线)中的永久性故障和/或暂时性故障。
图6是根据本公开的一些实施例的示例指令600的框图的图示,这些指令可以用于在处理***102(见图1)中实现诊断和功能性任务或操作。例如,指令600可以存储在SoC150上。指令600实现设备功能602和操作***604。在处理***102是自主车辆的组件的实施例中,设备功能602可以实现驾驶。设备功能602包括安全监视器106、应用程序108、诊断应用编程接口(“API”)606、应用程序API 608和***任务管理器(“STM”)610。操作***604可以包括与硬件引擎620通信的一个或更多个库614和一个或更多个驱动器616。
应用程序108使用应用程序API 608将功能请求(例如,图8中示出的第一命令810)转换成一个或更多个功能任务或操作(例如,图8中示出的第二命令812)。安全监视器106使用诊断API 606将安全请求(例如,图9所示的第一命令902)转换成一个或更多个诊断任务或操作(例如,图9所示的第二命令904)。
STM 610将诊断操作(源自安全监控器106)与功能操作(源自应用程序108)任务交错并且使诊断操作与下游软件层(例如,库614和驱动器616)以及硬件引擎620的功能操作不可区分。STM还管理任务仲裁,使得诊断操作的等待时间目标(例如,PFSD任务)和功能操作的性能目标(例如,ADAS功能)均可调和。架构图中的其余组件对于任务的发起者(例如,安全监视器106或应用程序108)是不可知的。
一个或更多个库614可以被实现为一个或更多个用户库并且提供STM 610与一个或更多个驱动器616之间的通信。一个或更多个驱动器616可以指示硬件引擎620执行特定的诊断和/或功能操作。硬件引擎620可实施为一个或更多个处理块124(见图1和图2)。
图7是示出了根据本公开的一些实施例的检测处理***102中的故障的方法700的流程图的图示。现在参考图7,本文描述的方法700的每个框包括可以使用硬件、固件和/或软件的任何组合执行的计算过程。例如,各个功能可以通过处理器执行存储在存储器中的指令来实施。所述方法还可实施为存储于计算机存储介质上的计算机可用指令。仅举几例,所述方法可由独立应用、服务或托管服务(独立或与其他托管服务组合)或到另一产品的插件提供。此外,通过示例的方式,关于图1的***100描述方法700。然而,这些方法可以另外地或可替代地由任何一个***或***的任何组合来执行,这些***包括但不限于本文描述的那些***。
方法700的至少一部分可以由处理块202A-202F之一执行(见图2)。为了便于说明,方法700的一部分将被描述为由处理块202A执行,但该部分可替代地或附加地由处理块202A-202F中的任一个来执行。
参考图7,在第一框702中,本地处理器块230(见图2、图3、图5、图8和图9)接收一条或更多条指令110(见图1)中的至少一个。在决策框704中,本地处理器块230确定一条或更多条指令引导DPU 232(参见图2、图3、图8和图9)执行至少一个诊断操作或至少一个功能操作。当一条或更多条指令引导一个或更多个DPU 232执行一个或更多个功能操作时,本地处理器块230前进到可选框706(如果存在),或者当可选框706已经被省略时前进到框710。另一方面,当一条或更多条指令指示DPU 232执行一个或更多个诊断操作时,本地处理器块230前进到框712。
在可选框706中,如果启用错误检测块312(参见图3),则本地处理器块230禁用错误检测块312。因此,当DPU 232正在执行功能操作(或使命任务)时,错误检测块312被禁用。在可选框706中,本地处理器块230可以编程第三(控制)寄存器(例如,图5所示的第三寄存器508)以存储禁用错误检测电路(例如,图5所示的错误检测电路502)的值。在下一个框710中,DPU 232执行一个或更多个功能操作。然后,本地处理器块230返回至框702以接收指令110中的至少一条新指令(参见图1)。
在框712中,本地处理器块230将黄金参考存储在错误检测块312的第二寄存器(例如,第二寄存器506)中(参见图3)。
然后,在框714中,本地处理器块230初始化错误检测块312的第一寄存器(例如,第一寄存器504)(参见图3)。在框714中,本地处理器块230可以编程第三(控制)寄存器(例如,第三寄存器508)以存储使得第一寄存器初始化(例如,存储零值)的值(例如,值532)。
接下来,在可选框716中,如果错误检测块312(参见图3)被禁用,则本地处理器块230启用错误检测块312。在可选框716中,本地处理器块230可以对第三(控制)寄存器(例如,图5中所示的第三寄存器508)进行编程以存储启用错误检测电路(例如,图5中所示的错误检测电路502)以确定最终错误检测值(例如,最终错误检测值526)的值(例如,值534)。
在框718中,DPU 232执行一个或更多个诊断操作并且错误检测块312(参见图3)确定最终错误检测值(例如,最终错误检测值526)。在框718中,当执行诊断操作时,错误检测块312-1至312-M(参见图3)分别连续采样在通道C1-CM上传输的信息(例如,数据分组),确定传输的信息的错误检测值(例如,每个传送的数据分组),并且在确定每个错误检测值之后更新第一寄存器的值。第一寄存器的值可以随着在通道C1-CM上进行的每个数据分组而改变。在完成诊断操作之后,每个第一寄存器将存储在诊断操作的执行期间由通道C1-CM中的相应通道传导的信息(例如,所有数据分组)的最终错误检测值。
在可选框720中,本地处理器块230可以禁用错误检测块312(参见图3)。在可选框720中,本地处理器块230可以执行在可选框706中使用的相同的方法,以禁用错误检测块312。在省略可选框720的实施例中,在框718已经完成之后,本地处理器块230可以执行框722。
在框722中,本地处理器块230通过使错误检测块312(参见图3)中的比较电路(例如,图5中所示出的比较电路510)将黄金参考(例如,存储在图5中所示出的第二寄存器506中)与最终错误检测值(例如,存储在图5中所示出的第一寄存器504中)进行比较来生成比较结果(例如,比较结果R1-RM)。在框722中,本地处理器块230可以对第三(控制)寄存器进行编程以存储使比较电路(例如,比较电路510)将第一寄存器所存储的最终错误检测值(例如,最终错误检测值526)与第二寄存器所存储的黄金参考(例如,黄金参考528)进行比较并输出比较结果(例如,比较结果R1-RM)的值(例如,图5中所示出的值540)。
在框724中,错误检测块312(参见图3)将比较结果(例如,图3中示出的比较结果R1-RM)存储在状态寄存器(例如,图3中示出的状态寄存器320)中。比较结果可(例如,通过专用线)发送到状态寄存器。
接下来,在决策框726中,本地处理器块230检查状态寄存器(例如,状态寄存器320)并且确定存储在状态寄存器中的比较结果中的任一者是否指示已经发生故障。由此,在决策框726中,本地处理器块230确定状态寄存器的内容是否指示已经发生了故障。当本地处理器块230确定比较结果中的至少一个指示已经发生故障时,决策框726中的决策为“是”。否则,决策框726中的决策为“否”并且本地处理器块230返回至框702以接收一条或更多条指令110中的至少一条新指令(参见图1)。
当决策框726中的决策为“是”时,在框728中,本地处理器块230尝试确定故障的原因。例如,本地处理器块230可以识别管线中的错误检测块312中检测到故障的第一错误检测块312。
然后,在决策框730中,本地处理器块230决定是否将故障通知(例如,图5中所示出的故障通知544)升级至处理块(例如,处理块202A)中的外部处置设施(例如,***控制器104)。当本地处理器块230决定升级故障通知时,决策框730中的决策为“是”。否则,决策框730中的决策为“否”并且本地处理器块230返回至框702以便接收一条或更多条指令110中的至少一条新指令(参见图1)。
当决策框730中的决策为“是”时,在框732中,本地处理器块230将故障通知(例如,图5中所示出的故障通知544)传输至***控制器104(参见图1-3、图5、图8和图9)。然后,本地处理器块230返回至框702以接收指令110中的至少一条新指令(参见图1)。参考图1,在***控制器104接收故障通知(例如,在故障通知138中)之后,***控制器104可以采取一个或更多个纠正动作。例如,***控制器104可关闭和/或重置(一个或更多个)处理块124。在处理***102安装在自主车辆中的实施例中,***控制器104可以将自主车辆的控制返回至人类驾驶员。
图8是根据本公开的一些实施例的描绘执行功能操作的处理块124(见图1和图2)之一的任务协调流程图800的图示。为了便于说明,处理块202A(见图2)将被描述为执行功能操作。然而,任何处理块202A-202F(见图2)可执行图8中所示的功能操作。
参考图8,应用程序108将第一命令810发送到应用程序API 608。例如,第一命令810可包含在指令110B中(见图1)。应用程序API 608可以将第一命令810分解为处理块202A-202F执行一个或更多个功能操作的命令。为了便于说明,图8仅描绘了被路由到处理块202A的第二命令812。但是,应用程序API 608可以将第一命令810分解成用于处理块202A-202F中的一个或更多个的命令。
在处理块202A的本地处理器块230接收到第二命令812(例如,包括指令110B)之后,处理块202A的本地处理器块230向处理块202A的错误检测块312发送通信814,该通信禁用它们。处理块202A的本地处理器块230可以执行在可选框706(参见图7)中使用的相同的方法以禁用处理块202A的错误检测块312。
然后,处理块202A的子块310各自执行由第二命令812指定的至少一个功能操作816。当每个子块310完成执行功能操作816时,处理块202A的本地处理器块230向应用程序API 608发送确认消息818。在应用程序API 608接收到确认消息818之后,应用程序API 608向应用程序108发送确认消息820。此时,处理块202A的本地处理器块230可以接收子块310执行一个或更多个功能操作的另一命令(类似于第二命令812)和/或子块310执行一个或更多个诊断操作的命令。
图9是根据本公开的一些实施例的描绘执行诊断操作的一个或更多个处理块124(参见图1和图2)之一的任务协调流程图900的图示。为了便于说明,处理块202A(见图2)将被描述为执行诊断操作。然而,处理块202A-202F中的任何一个(见图2)可执行图9中所示的诊断操作。
参考图9,安全监视器106将第一命令902发送到诊断API 606。例如,第一命令902可包括在指令110A中(见图1)。诊断API 606可将第一命令902分解成处理块202A-202F执行一个或更多个诊断操作的命令。为了便于说明,图9仅描绘了被路由到处理块202A的第二命令904。但是,诊断API 606可将第一命令902分解为用于处理块202A-202F中的一个或更多个的命令。在本示例中,第二命令904包括一个或更多个黄金参考906。
在处理块202A的本地处理器块230接收到第二命令904(例如,包括指令110A)之后,处理块202A的本地处理器块230将一个或更多个黄金参考906存储在错误检测块312中的至少一个的第二寄存器506(参见图5)中。处理块202A的本地处理器块230可以执行在框712(参见图7)中使用的相应的一个或更多个方法来将黄金参考906存储在错误检测块312中的至少一个的第二寄存器506(参见图5)中。
然后,处理块202A的本地处理器块230向错误检测块312中的至少一个发送通信908,该通信对(一个或更多个)错误检测块的第一寄存器504(参见图5)进行初始化。例如,通信908可以使第三(控制)寄存器508(参见图5)存储初始化错误检测块的第一寄存器504的值532(参见图5)。处理块202A的本地处理器块230可以执行在框714(参见图7)中使用的相同方法以初始化(一个或更多个)错误检测块的第一寄存器504。
然后,处理块202A的本地处理器块230发送通信910,该通信910启用由通信908初始化的那些错误检测块312。处理块202A的本地处理器块230可以执行在可选块716(参见图7)中使用的相同方法,以启用经初始化的错误检测块。
接下来,处理块202A的子块310执行由第二命令904指定的至少一个诊断操作912,并且错误检测块312确定最终错误检测值914(如在图5中示出的最终错误检测值526)。处理块202A可以执行框718中所使用的相同方法(参见图7)来执行诊断操作912并获得最终错误检测值914。
在已经确定最终错误检测值526之后,处理块202A的本地处理器块230发送禁用处理块202A的错误检测块312的通信916。处理块202A的本地处理器块230可以执行在可选框706(参见图7)中使用的相同的方法来禁用处理块202A的错误检测块312。
然后,处理块202A的本地处理器块230发送通信918,该通信触发将最终错误检测值526与一个或更多个黄金参考906之一进行比较。处理块202A的本地处理器块230可以执行在框722(参见图7)中使用的相同的方法来触发比较。在比较之后,处理块202A的本地处理器块230执行在框724-732(见图7)中使用的相同的方法并且如果适当的话将故障通知920(例如,图5中所示出的故障通知544)发送至诊断API 606。诊断API 606可以将故障通知转发到安全监视器106。诊断API 606和/或安全监视器106可以使***控制器104(参见图1-3、图5、图8和图9)关于故障采取一个或更多个纠正动作。
在子块310完成执行一个或更多个诊断操作912之后,处理块202A的本地处理器块230向诊断API 606发送确认消息922。在诊断API 606接收到确认消息922之后,诊断API606向安全监视器106发送确认消息924。此时,处理块202A的本地处理器块230可以接收子块310执行一个或更多个功能操作的另一命令(类似于第二命令904)和/或子块310执行一个或更多个诊断操作的命令。
图10A-10D示出了包括一个或更多个传感器(例如,一个或更多个相机)的示例自主车辆1000。车辆1000处理大量传感器数据以实时地感知其周围环境并实现自主驾驶功能(例如,ADAS功能)。例如,这些传感器可以由车辆1000使用以执行ADAS功能,如自主紧急制动(“AEB”)、车道保持辅助(“LKA”)、交通警车辅助(“TJA”)等。传感器可以是车辆1000的前置相机***的部件,其在下面更详细地描述。替代地和/或另外地,传感器可以是其他***的组件,包括其他相机***,诸如后置相机***、侧置相机***等。
车辆1000的传感器可以捕获数据(例如,图像数据、视频等)并将该数据提供至处理***102(参见图1)以供处理。例如,处理***102可以实现处理由车辆1000的前置相机***捕获的实时视频数据的计算机视觉管线。在这样的实施例中,参见图1,SoC 150可以被实现为SoC 1004(图10C)。参照图3,子块310可以各自执行专用于处理流过通道C1-C(M-2)的图像数据的方法并且以管线方式执行操作(例如,ADAS功能所需的操作)。处理块124中的一个或更多个可以被实现为帮助实时地对视频执行操作的硬件加速块。这样的操作的示例包括获得光流、降噪、图像缩放、执行一个或更多个图像变换等。
处理***102可以通过对车辆1000的传感器(例如,一个或更多个相机)捕获的数据(例如,高分辨率图像)执行功能操作而在有限时间量内(例如,以避免碰撞)检测一个或更多个感兴趣的对象(例如,行人、骑自行车的人、摩托车等)。处理***102可以执行计算机视觉方法和/或机器学习(“ML”)方法来感知感兴趣的对象。处理***102所执行的功能操作的输出可以被提供给ADAS***,ADAS***可以至少部分地基于处理***102的输出来执行一个或更多个适当的动作。
参考图2,如上所述,处理块202A-202F可以分别实现计算机视觉管线(例如,安装在车辆1000中)的VI块、ISP块、VIC块、OFA块、PVA块、和DLA块。在这样的实施例中,VI块(例如,处理块202A)可以捕获携带图像数据的一个或更多个相机流,并且将图像数据存储在存储器子***140中。在该示例中,图像数据可包括用广角透镜捕获的帧。
ISP块(例如,处理块202B)可以从存储器子***140获得图像数据、处理图像数据、并且将经ISP处理的图像数据存储在存储器子***140中。例如,ISP块可以对图像数据执行高动态范围(“HDR”)处理,诸如局部色调映射。经ISP处理的图像数据可包括具有16比特颜色和YUV420格式的帧。
VIC块(例如,处理块202C)可以从存储器子***140获得经ISP处理的图像数据、处理经ISP处理的图像数据、并且将经VIC处理的图像数据存储在存储器子***140中。例如,VIC块可对用广角透镜捕捉的经ISP处理的图像数据的帧执行透镜失真校正。
OFA块(例如,处理块202D)可以从存储器子***140获得经VIC处理的图像数据、处理经VIC处理的图像数据、并且将经OFA处理的图像数据存储在存储器子***140中。OFA块可对经VIC处理的图像数据(例如,用一个或更多个立体透镜捕获的帧)执行立体校正,且确定光流(例如,针对两个所得帧)以确定场景中的运动。VIC块也可以执行立体校正操作。
PVA块(例如,处理块202E)从存储器子***140获得经OFA处理的图像数据,处理经OFA处理的图像数据,并且将经PVA处理的图像数据存储在存储器子***140中。PVA块可执行旨在基于应用来检测不同对象类型的计算(例如,使用经典计算机视觉算法)。
DLA块(例如,处理块202F)从存储器子***140获得经PVA处理的图像数据,处理经PVA处理的图像数据,并且将经DLA处理的图像数据存储在存储器子***140中。DLA块可执行高度并行的矩阵数学运算,其支持深度学习神经网络的高速处理。
当用于安全关键功能(如一个或更多个ADAS功能)时,可能需要处理块202A-202F来满足一个或更多个汽车安全标准(例如,国际标准化组织(“ISO”)26262功能安全标准)的要求。这样的汽车安全标准可以帮助确保任何潜在的风险(例如,使ADAS性能恶化)是合理可接受的,例如,如由汽车安全标准定义的可应用的风险分类级别规定的。潜在风险可包括一个或更多个硬件故障。安全监视器106可以根据任何适用的汽车安全标准来安排诊断操作。例如,诊断操作可在整个驾驶周期期间与功能操作交织,该整个驾驶周期在车辆1000启动时开始(例如,在钥匙开启测试(Key-On-Test)确定车辆1000开启之后)并在车辆1000停止时结束(例如,在钥匙关闭测试(Key-Off Test)确定车辆1000关闭之前)。因此,在整个驾驶周期中,处理***102可以交替执行功能操作和诊断操作。
ISO 26262定义了四个风险分类水平(也称为汽车安全完整性水平)ASIL-A、ASIL-B、ASIL-C、和ASIL-D,其中ASIL-D是最高风险分类水平并且指示最高安全水平。错误检测块312与FTTI内的调度诊断操作相结合可有助于提高处理***102的风险分类级别(例如,从ASIL-B到ASIL-C)。
汽车安全标准可能需要并且安全监视器106可以收集关于发生的任何故障的一个或更多个定量测量,如单点故障度量(“SPFM”)、潜在故障度量(“LFM”)等。汽车安全标准可能要求安全监视器106检测到硬件故障,报告硬件故障,并在FTTI规定的时间量内对硬件故障作出反应。
参考图3,通过将错误检测块312包括在DPU 232中,处理块202A-202F中的每一个可以改善故障效应可观测性,允许以更大粒度检测故障,并且释放本地处理器块230以用于其他任务。当处理***102是自主车辆(例如,图10A-10D中所示的车辆1000)的部件(例如,计算机视觉管线)时,这些改进可帮助增加车辆安全性。
本文中描述的***和方法可由但不限于非自主车辆、半自主车辆(例如,在一个或更多个自适应驾驶员辅助***(ADAS)中)、驾驶和未驾驶机器人或机器人平台、仓库车辆、越野车辆、耦接到一个或更多个拖车的车辆、飞行船、船、穿梭机、紧急响应车辆、摩托车、电动或机动自行车、飞机、施工车辆、水下船、无人机和/或其他车辆类型使用。进一步,本文描述的***和方法可用于各种目的,作为示例而非限制,用于机器控制、机器运动、机器驾驶、合成数据生成、数字孪生、模型训练、感知、增强现实、虚拟现实、混合现实、机器人、安全和监视、自主或半自主机器应用、深度学习、环境模拟、数据中心处理、会话AI、光传输模拟(例如,光线跟踪、路径跟踪等)、用于3D资产的协作内容创建、云计算和/或任何其他合适的应用。
所公开的实施例可以包括在各种不同的***中,诸如汽车***(例如,用于自主或半自主机器的控制***、用于自主或半自主机器的感知***),使用机器人实现的***、空中***、内侧***、划船***、智能区域监视***、用于执行深度学习操作的***、用于执行模拟和数字孪生操作的***、使用边缘设备实现的***、包括一个或更多个虚拟机(VM)的***、用于执行合成数据生成操作的***、至少部分地在数据中心中实现的***、用于执行会话AI操作的***、用于执行光传输模拟的***、用于执行3D资产的协作内容创建的***、至少部分地使用云计算资源实现的***,和/或其他类型的***。
示例自主车辆
图10A是根据本公开的一些实施例的示例自主车辆1000的图示。自主车辆1000(可替代地,在本文称为“车辆1000”)可以包括但不限于,客运车辆,如小汽车、卡车、公共汽车、第一响应车辆、摆渡车、电动或机动自行车、摩托车、消防车、警用车辆,救护车、船、施工车辆、水下船只、无人机和/或另一类型的车辆(例如,无人驾驶的和/或容纳一个或更多个乘客的车辆)。自主车辆通常按照美国运输部的一个部门——国家公路交通安全管理局(NHTSA)以及汽车工程师协会(SAE)“Taxonomy and Definitions for Terms Related toDriving Automation Systems for On-Road Motor Vehicles”(2018年6月15日发布的标准No.J3016-201806,2016年9月30日发布的标准No.J3016-201609,以及该标准的先前和未来的版本)定义的自动化级别进行描述。车辆1000可能够实现符合自主驾驶级别的3级-5级中的一个或更多个的功能。例如,取决于实施例,车辆1000可能够实现条件自动化(3级)、高度自动化(4级)和/或全自动化(5级)。
车辆1000可以包括诸如底盘、车身、车轮(例如2个、4个、6个、8个、18个等)、轮胎、车轴之类别的部件以及车辆的其他部件。车辆1000可以包括推进***1050,例如内燃机、混合动力发电厂、全电动发动机和/或另一种推进***类型。推进***1050可以连接到可以包括变速器的车辆1000的传动系以便实现车辆1000的推进。可以响应于接收到来自油门/加速器1052的标志而控制推进***1050。
可以包括方向盘的转向(steering)***1054可以用来在推进***1050操作时(例如在车辆运动时)使车辆1000转向(例如沿着希望的路径或路线)。转向***1054可以接收来自转向致动器1056的标志。对于全自动(5级)功能而言,方向盘可以是可选的。
制动传感器***1046可以用来响应于接收到来自制动致动器1048和/或制动传感器的标志而操作车辆制动器。
可以包括一个或更多个CPU、一个或更多个片上***(SoC)1004(图10C)和/或一个或更多个GPU的一个或更多个控制器1036可以向车辆1000的一个或更多个部件和/或***提供(例如表示命令的)标志。例如,一个或更多个控制器可以发送经由一个或更多个制动致动器1048操作车辆制动器、经由一个或更多个转向致动器1056操作转向***1054、和/或经由一个或更多个油门/加速器1052操作推进***1050的标志。一个或更多个控制器1036可以包括一个或更多个板载(例如集成)计算设备(例如超级计算机),所述计算设备处理传感器标志并且输出操作命令(例如表示命令的标志),以实现自主驾驶和/或辅助人类别驾驶员驾驶车辆1000。一个或更多个控制器1036可以包括用于自主驾驶功能的第一控制器1036、用于功能性安全功能的第二控制器1036、用于人工智能功能(例如计算机视觉)的第三控制器1036、用于信息娱乐功能的第四控制器1036、用于紧急情况下的冗余的第五控制器1036和/或其他控制器。在一些示例中,单个控制器1036可以处理上述功能中的两个或更多,两个或更多控制器1036可以处理单个功能,和/或其任意组合。
一个或更多个控制器1036可以响应于接收自一个或更多个传感器的传感器数据(例如传感器输入),提供用于控制车辆1000的一个或更多个部件和/或***的标志。传感器数据可以接收自例如且不限于全球导航卫星***传感器1058(例如全球定位***传感器)、RADAR传感器1060、超声传感器1062、LIDAR传感器1064、惯性测量单元(IMU)传感器1066(例如加速度计、陀螺器、磁罗盘、磁力计等)、麦克风1096、立体相机1068、广角相机1070(例如鱼眼相机)、红外相机1072、环绕相机1074(例如360度相机)、远程和/或中程相机1098、速度传感器1044(例如用于测量车辆1000的速率)、振动传感器1042、转向传感器1040、制动传感器1046(例如作为制动传感器***1046的部分)和/或其他传感器类型。
控制器1036中的一个或更多个可以接收来自车辆1000的器表组1032的输入(例如由输入数据表示),并且经由人机接口(HMI)显示器1034、听觉标志器、扬声器和/或经由车辆1000的其他部件提供输出(例如输出数据、显示数据等表示的)。这些输出可以包括诸如车辆速度、速率、时间、地图数据(例如图10C的HD地图1022)、位置数据(例如,车辆1000诸如在地图上的位置)、方向、其他车辆的位置(例如占用网格)之类别的信息,如控制器1036所感知的关于对象和对象状态的信息等等。例如,HMI显示器1034可以显示关于一个或更多个对象(例如街道指示牌、警示牌、交通灯变化等)的存在性的信息和/或关于车辆已经做出、正在做出或者将会做出的驾驶机动的信息(例如现在变道、两英里后离开34B,等等)。
车辆1000还包括网络接口1024,其可以使用一个或更多个无线天线1026和/或调制解调器通过一个或更多个网络通信。例如,网络接口1024可能够通过LTE、WCDMA、UMTS、GSM、CDMA2000等通信。一个或更多个无线天线1026也可以使用诸如蓝牙、蓝牙LE、Z波、ZigBee等等之类别的一个或更多个局域网和/或诸如LoRaWAN、SigFox等等之类别的一个或更多个低功率广域网(LPWAN)实现环境中的对象(例如车辆、移动设备等等)之间的通信。
图10B为根据本公开一些实施例的用于图10A的示例自主车辆1000的相机位置和视场的示例。相机和各自的视场是一个示例实施例,并不意图是限制性的。例如,可以包括附加的和/或可替换的相机,和/或这些相机可以位于车辆1000上的不同位置。
用于相机的相机类型可以包括但不限于可以适于与车辆800的部件和/或***一起使用的数字相机。所述相机可以在汽车安全完整性级别(ASIL)B下和/或在另一个ASIL下操作。相机类型可以具有任何图像捕获率,例如60帧每秒(fps)、120fps、240fps等等,这取决于实施例。相机可能够使用滚动快门、全局快门、另一种类型的快门或者其组合。在一些示例中,滤色器阵列可以包括红白白白(RCCC)滤色器阵列、红白白蓝(RCCB)滤色器阵列、红蓝绿白(RBGC)滤色器阵列、Foveon X3滤色器阵列、拜耳传感器(RGGB)滤色器阵列、单色传感器滤色器阵列和/或另一种类型的滤色器阵列。在一些实施例中,诸如具有RCCC、RCCB和/或RBGC滤色器阵列的相机之类别的清晰像素相机可以用在提高光敏感度的努力中。
在一些示例中,所述相机中的一个或更多个可以用来执行高级驾驶辅助***(ADAS)功能(例如作为冗余或故障安全设计的部分)。例如,可以安装多功能单目相机以提供包括车道偏离警告、交通指示牌辅助和智能前照灯控制在内的功能。所述相机中的一个或更多个(例如全部相机)可以同时记录和提供图像数据(例如视频)。
所述相机中的一个或更多个可以安装在诸如定制设计的(3-D打印的)组件之类别的安装组件中,以便切断可能干扰相机的图像数据捕获能力的杂散光和来自汽车内的反射(例如挡风玻璃镜中反射的来自器表板的反射)。关于翼镜安装组件,翼镜组件可以是定制3-D打印的,使得相机安装板匹配翼镜的形状。在一些示例中,一个或更多个相机可以集成到翼镜中。对于侧视相机而言,一个或更多个相机也可以集成到驾驶室每个拐角的四根柱子内。
具有包括车辆1000前面的环境部分的视场的相机(例如前置相机)可以用于环视,以帮助识别前向路径和障碍,以及在一个或更多个控制器1036和/或控制SoC的帮助下辅助提供对于生成占用网格和/或确定优选车辆路径至关重要的信息。前置相机可以用来执行许多与LIDAR相同的ADAS功能,包括紧急制动、行人检测和碰撞避免。前置相机也可以用于ADAS功能和***,包括车道偏离警告(LDW)、自主巡航控制(ACC),和/或诸如交通指示牌识别之类别的其他功能。
各种各样的相机可以用于前置配置中,包括例如包括CMOS(互补金属氧化物半导体)彩色成像器在内的单目相机平台。另一个示例可以是广角相机1070,其可以用来感知从周边进入视场的对象(例如行人、十字路***通或者自行车)。尽管图10B中图示出仅仅一个广角相机,但是在车辆1000上可以存在任意数量的广角相机1070。此外,远程相机1098(例如长视立体相机对)可以用于基于深度的对象检测,尤其是用于尚未针对其训练神经网络的对象。远程相机1098也可以用于对象检测和分类以及基本的对象追踪。
一个或更多个立体相机1068也可以包括在前置配置中。一个或更多个立体相机1068可以包括集成控制单元,该单元包括可扩展处理单元,其可以提供在单个芯片上具有集成的CAN或以太网接口的多核微处理器和可编程逻辑(例如FPGA)。这样的单元可以用来生成车辆环境的3-D地图,包括针对图像中的所有点的距离估计。可替代的立体相机1068可以包括紧凑型立体视觉传感器,其可以包括两个相机镜头(左右各一个)以及可以测量从车辆到目标对象的距离并且使用生成的信息(例如元数据)激活自主紧急制动和车道偏离警告功能的图像处理芯片。除了本文所描述的那些之外或者可替代地,可以使用其他类型的立体相机1068。
具有包括车辆1000的侧面的环境部分的视场的相机(例如侧视相机)可以用于环视,提供用来创建和更新占用网格以及生成侧撞击碰撞警告的信息。例如,环绕相机1074(例如如图10B中所示的四个环绕相机1074)可以置于车辆1000周围。环绕相机1074可以包括广角相机1070、鱼眼相机、360度相机和/或类别似物。例如,四个鱼眼相机可以置于车辆的前面、后面和侧面。在一种可替代的布置中,车辆可以使用三个环绕相机1074(例如左边、右边和后面),并且可以利用一个或更多个其他相机(例如前向相机)作为第四环视相机。
具有包括车辆1000的后面的环境部分的视场的相机(例如后视相机)可以用于辅助停车、环视、后面碰撞警告以及创建和更新占用网格。可以使用各种各样的相机,包括但不限于也适合作为如本文所描述的前置相机(例如远程和/或中程相机1098、立体相机1068、红外相机1072等等)的相机。
图10C为根据本公开一些实施例的用于图10A的示例自主车辆1000的示例***架构的框图。应当理解,这种布置和本文描述的其他布置仅仅作为示例而被阐述。除了所示的那些之外或者代替它们的是,可以使用其他的布置和元素(例如机器、接口、功能、顺序、功能分组等等),并且一些元素可以完全省略。进一步,许多本文描述的元素是功能实体,其可以实现为分立的或分布式部件或者结合其他部件实现,以及以任何适当的组合和位置实现。本文描述为由实体执行的各个功能可以通过硬件、固件和/或软件实现。例如,各个功能可以通过处理器执行存储在内存中的指令而实现。
图10C中车辆1000的部件、特征和***中的每一个被图示为经由总线1002连接。总线1002可以包括控制器区域网络(CAN)数据接口(可替代地,本文称为“CAN总线”)。CAN可以是车辆1000内部的网络,用来辅助控制车辆1000的各种特征和功能,例如制动器、加速、制动、转向、挡风玻璃雨刷等等的驾驶。CAN总线可以被配置为具有数十或者甚至数百个节点,每个节点具有其自己的唯一标识符(例如CAN ID)。可以读取CAN总线以找到方向盘角度、地速、每分钟发动机转速(RPM)、按钮位置和/或其他车辆状态指示符。CAN总线可以是ASIL B兼容的。
尽管这里将总线1002描述为CAN总线,但是这并不意图是限制性的。例如,除了CAN总线之外或者可替代地,可以使用FlexRay和/或以太网。此外,尽管用单条线来表示总线1002,但是这并不意图是限制性的。例如,可以存在任意数量的总线1002,其可以包括一个或更多条CAN总线、一个或更多条FlexRay总线、一个或更多条以太网总线和/或一个或更多条使用不同协议的其他类型的总线。在一些示例中,两条或更多总线1002可以用来执行不同的功能,和/或可以用于冗余。例如,第一总线1002可以用于碰撞避免功能,并且第二总线1002可以用于驾驶控制。在任何示例中,每条总线1002可以与车辆1000的任何部件通信,并且两条或更多总线1002可以与相同的部件通信。在一些示例中,车辆内的每个SoC 1004、每个控制器1036和/或每个计算机可以有权访问相同的输入数据(例如来自车辆1000的传感器的输入),并且可以连接到诸如CAN总线之类别的公共总线。
车辆1000可以包括一个或更多个控制器1036,例如本文关于图10A所描述的那些控制器。控制器1036可以用于各种各样的功能。控制器1036可以耦合到车辆1000的任何其他不同的部件和***,并且可以用于车辆1000的控制、车辆1000的人工智能、用于车辆1000的信息娱乐和/或类别似物。
车辆1000可以包括一个或更多个片上***(SoC)1004。SoC 1004可以包括CPU1006、GPU 1008、处理器1010、高速缓存1012、加速器1014、数据存储1016和/或未图示出的其他部件和特征。在各种各样的平台和***中,SoC 1004可以用来控制车辆1000。例如,一个或更多个SoC 1004可以在***(例如车辆1000的***)中与HD地图1022结合,所述HD地图可以经由网络接口1024从一个或更多个服务器(例如图10D的一个或更多个服务器1078)获得地图刷新和/或更新。
CPU 1006可以包括CPU簇或者CPU复合体(可替代地,本文称为“CCPLEX”)。CPU1006可以包括多个核和/或L2高速缓存。例如,在一些实施例中,CPU 1006在一致性多处理器配置中可以包括八个核。在一些实施例中,CPU 1006可以包括四个双核簇,其中每个簇具有专用的L2高速缓存(例如2MB L2高速缓存)。CPU 1006(例如CCPLEX)可以被配置为支持同时簇操作,使得CPU 1006的簇的任意组合能够在任何给定时间是活动的。
CPU 1006可以实现包括以下特征中的一个或更多个的功率管理能力:各硬件块在空闲时可以自动进行时钟门控以节省动态功率;由于WFI/WFE指令的执行,每个核时钟可以在该核不主动地执行指令时进行门控;每个核可以独立地进行功率门控;当所有核都进行时钟门控或者功率门控时,可以独立地对每个核簇进行时钟门控;和/或当所有核都进行功率门控时,可以独立地对每个核簇进行功率门控。CPU 1006可以进一步实现用于管理功率状态的增强算法,其中指定允许的功率状态和期望的唤醒时间,并且硬件/微代码为所述核、簇和CCPLEX确定要进入的最佳的功率状态。处理核可以在软件中支持简化的功率状态进入序列,该工作被卸载到微代码。
GPU 1008可以包括集成的GPU(可替代地,本文称为“iGPU”)。GPU 1008可以是可编程的,并且对于并行工作负载而言是高效的。在一些示例中,GPU 1008可以使用增强张量指令集。GPU 1008可以包括一个或更多个流式微处理器,其中每个流式微处理器可以包括L1高速缓存(例如具有至少96KB存储能力的L1高速缓存),并且这些流式微处理器中的两个或更多可以共享L2高速缓存(例如具有512KB存储能力的L2高速缓存)。在一些实施例中,GPU1008可以包括至少八个流式微处理器。GPU 1008可以使用基于计算机的应用编程接口(API)。此外,GPU 1008可以使用一个或更多个并行计算平台和/或编程模型(例如NVIDIA的CUDA)。
在汽车和嵌入式使用的情况下,可以对GPU 1008进行功率优化以实现最佳性能。例如,可以在鳍式场效应晶体管(FinFET)上制造GPU 1008。然而,这并不意图是限制性的,并且GPU 1008可以使用其他半导体制造工艺来制造。每个流式微处理器可以合并划分成多个块的若干混合精度处理核。例如且非限制性地,可以将64个PF32核和32个PF64核划分成四个处理块。在这样的示例中,每个处理块可以分配16个FP32核、8个FP64核、16个INT32核、用于深层学习矩阵算术的两个混合精度NVIDIA张量核、L0指令高速缓存、线程束(warp)调度器、分派单元和/或64KB寄存器文件。此外,流式微处理器可以包括独立的并行整数和浮点数据路径,以利用计算和寻址计算的混合提供工作负载的高效执行。流式微处理器可以包括独立线程调度能力,以允许实现并行线程之间的更细粒度的同步和协作。流式微处理器可以包括组合的L1数据高速缓存和共享内存单元,以便在简化编程的同时提高性能。
GPU 1008可以包括在一些示例中提供大约900GB/s的峰值内存带宽的高带宽内存(HBM)和/或16GB HBM2内存子***。在一些示例中,除了HBM内存之外或者可替代地,可以使用同步图形随机存取存储器(SGRAM),例如第五代图形双倍数据速率同步随机存取存储器(GDDR5)。
GPU 1008可以包括统一内存技术,其包括访问计数器以允许内存页面更精确地迁移到最频繁地访问它们的处理器,从而提高处理器之间共享的内存范围的效率。在一些示例中,地址转换服务(ATS)支持可以用来允许GPU 1008直接访问CPU 1006页表。在这样的示例中,当GPU 1008内存管理单元(MMU)经历遗漏时,可以将地址转换请求传输至CPU 1006。作为响应,CPU 1006可以在其页表中寻找用于地址的虚拟-物理映射,并且将转换传输回GPU 1008。这样,统一内存技术可以允许单个统一虚拟地址空间用于CPU 1006和GPU 1008二者的内存,从而简化了GPU 1008编程和将应用程序移(port)到GPU 1008。
此外,GPU 1008可以包括访问计数器,其可以追踪GPU 1008访问其他处理器的内存的频率。访问计数器可以帮助确保内存页面移至最频繁地访问这些页面的处理器的物理内存。
SoC 1004可以包括任意数量的高速缓存1012,包括本文描述的那些高速缓存。例如,高速缓存1012可以包括CPU 1006和GPU 1008二者可用的L3高速缓存(例如,其连接到CPU 1006和GPU 1008二者)。高速缓存1012可以包括回写高速缓存,其可以例如通过使用高速缓存一致性协议(例如MEI、MESI、MSI等)追踪行的状态。取决于实施例,L3高速缓存可以包括4MB或者更多,但是也可以使用更小的高速缓存大小。
SoC 1004可以包括算术逻辑单元(ALU),所述算术逻辑单元可以在执行关于车辆1000的各种任务或操作中的任何任务或操作(如处理DNN)的处理中被利用。此外,SoC 1004可以包括用于在***内执行数学运算的浮点单元(FPU)(或其他数学协处理器或数字协处理器类型)。例如,SoC104可以包括集成为CPU 1006和/或GPU 1008内的执行单元的一个或更多个FPU。
SoC 1004可以包括一个或更多个加速器1014(例如硬件加速器、软件加速器或者其组合)。例如,SoC 1004可以包括硬件加速器簇,其可以包括优化的硬件加速器和/或大型片上内存。该大型片上内存(例如4MB SRAM)可以使得硬件加速器簇能够加速神经网络和其他计算。硬件加速器簇可以用来次要GPU 1008,并且卸载GPU 1008的一些任务(例如释放GPU 1008的更多周期以用于执行其他任务)。作为一个示例,加速器1014可以用于足够稳定以易于控制加速的有针对性的工作负载(例如感知、卷积神经网络(CNN)等等)。当在本文中使用时,术语“CNN”可以包括所有类型的CNN,包括基于区域的或者区域卷积神经网络(RCNN)和快速RCNN(例如用于对象检测)。
加速器1014(例如硬件加速器簇)可以包括深度学习加速器(DLA)。DLA可以包括可以被配置成为深度学习应用和推理提供额外的每秒10万亿次操作的一个或更多个张量处理单元(TPU)。TPU可以是被配置为执行图像处理功能(例如用于CNN、RCNN等)且针对执行图像处理功能而优化的加速器。DLA可以进一步针对特定的一组神经网络类型和浮点运算以及推理进行优化。DLA的设计可以比通用GPU提供每毫米更高的性能,并且远远超过CPU的性能。TPU可以执行若干功能,包括单实例卷积函数,支持例如用于特征和权重二者的INT8、INT16和FP16数据类型,以及后处理器功能。
DLA可以在处理的或者未处理的数据上针对各种各样的功能中的任何功能快速且高效地执行神经网络,尤其是CNN,例如且不限于:用于使用来自相机传感器的数据进行对象识别和检测的CNN;用于使用来自相机传感器的数据进行距离估计的CNN;用于使用来自麦克风的数据进行应急车辆检测和识别与检测的CNN;用于使用来自相机传感器的数据进行面部识别和车主识别的CNN;和/或用于安全和/或安全相关事件的CNN。
DLA可以执行GPU 1008的任何功能,并且通过使用推理加速器,例如,设计者可以使DLA或GPU 1008针对任何功能。例如,设计者可以将CNN的处理和浮点运算聚焦在DLA上,并且将其他功能留给GPU 1008和/或其他加速器1014。
加速器1014(例如硬件加速器簇)可以包括可编程视觉加速器(PVA),其在本文中可以可替代地称为计算机视觉加速器。PVA可以被设计和配置为加速用于高级驾驶辅助***(ADAS)、自主驾驶和/或增强现实(AR)和/或虚拟现实(VR)应用的计算机视觉算法。PVA可以提供性能与灵活性之间的平衡。例如,每个PVA可以包括例如且不限于任意数量的精简指令集计算机(RISC)核、直接内存访问(DMA)和/或任意数量的向量处理器。
RISC核可以与图像传感器(例如本文描述的任何相机的图像传感器)、图像标志处理器和/或类别似物交互。这些RISC核中的每一个可以包括任意数量的内存。取决于实施例,RISC核可以使用若干协议中的任何协议。在一些示例中,RISC核可以执行实时操作***(RTOS)。RISC核可以使用一个或更多个集成电路设备、专用集成电路(ASIC)和/或存储设备实现。例如,RISC核可以包括指令高速缓存和/或紧密耦合的RAM。
DMA可以使得PVA的部件能够独立于CPU 1006访问***内存。DMA可以支持用来向PVA提供优化的任意数量的特征,包括但不限于支持多维寻址和/或循环寻址。在一些示例中,DMA可以支持高达六个或更多维度的寻址,其可以包括块宽度、块高度、块深度、水平块步进、竖直块步进和/或深度步进。
向量处理器可以是可编程处理器,其可以被设计为高效且灵活地执行用于计算机视觉算法的编程并且提供标志处理能力。在一些示例中,PVA可以包括PVA核和两个向量处理子***分区。PVA核可以包括处理器子***、一个或更多个DMA引擎(例如两个DMA引擎)和/或其他***设备。向量处理子***可以作为PVA的主处理引擎而操作,并且可以包括向量处理单元(VPU)、指令高速缓存和/或向量内存(例如VMEM)。VPU核可以包括数字标志处理器,诸如例如单指令多数据(SIMD)、超长指令字(VLIW)数字标志处理器。SIMD和VLIW的组合可以增强吞吐量和速率。
向量处理器中的每一个可以包括指令高速缓存并且可以耦合到专用内存。结果,在一些示例中,向量处理器中的每一个可以被配置为独立于其他向量处理器执行。在其他示例中,包括在特定PVA中的向量处理器可以被配置为采用数据并行化。例如,在一些实施例中,包括在单个PVA中的多个向量处理器可以执行相同的计算机视觉算法,但是在图像的不同区域上执行。在其他示例中,包括在特定PVA中的向量处理器可以在相同的图像上同时执行不同的计算机视觉算法,或者甚至在序列图像或者图像的部分上执行不同的算法。除其他的以外,任意数量的PVA可以包括在硬件加速器簇中,并且任意数量的向量处理器可以包括在这些PVA中的每一个中。此外,PVA可以包括附加的纠错码(ECC)内存,以增强总体***安全性。
加速器1014(例如硬件加速器簇)可以包括片上计算机视觉网络和SRAM,以提供用于加速器1014的高带宽、低延迟SRAM。在一些示例中,片上内存可以包括由例如且不限于八个现场可配置的内存块组成的至少4MB SRAM,其可以由PVA和DLA二者访问。每对内存块可以包括高级***总线(APB)接口、配置电路***、控制器和复用器。可以使用任何类型的内存。PVA和DLA可以经由向PVA和DLA提供高速内存访问的主干(backbone)访问内存。主干可以包括(例如使用APB)将PVA和DLA互连到内存的片上计算机视觉网络。
片上计算机视觉网络可以包括在传输任何控制标志/地址/数据之前确定PVA和DLA二者都提供就绪且有效的标志的接口。这样的接口可以提供用于传输控制标志/地址/数据的单独相位和单独通道,以及用于连续数据传输的突发式通信。这种类型的接口可以符合ISO 26262或者IEC 615010标准,但是也可以使用其他标准和协议。
在一些示例中,SoC 1004可以包括例如在2018年8月10日提交的美国专利申请No.16/101,232中描述的实时光线追踪硬件加速器。该实时光线追踪硬件加速器可以用来快速且高效地确定(例如世界模型内的)对象的位置和范围,以便生成实时可视化仿真,以用于RADAR标志解释、用于声音传播合成和/或分析、用于SONAR***仿真、用于一般波传播仿真、用于为了定位和/或其他功能的目的与LIDAR数据相比较和/或用于其他用途。在一些实施例中,一个或更多个树遍历单元(TTU)可以用于执行一个或更多个光线跟踪相关操作。
加速器1014(例如硬件加速器簇)具有广泛的自主驾驶用途。PVA可以是可编程视觉加速器,其可以用于ADAS和自主车辆中的关键处理阶段。PVA的能力是需要可预测处理、低功率和低延迟的算法域的良好匹配。换言之,PVA在半密集或者密集规则计算上,甚至在需要具有低延迟和低功率的可预测运行时间的小数据集上都表现良好。因此,在用于自主车辆的平台的背景下,PVA被设计为运行经典计算机视觉算法,因为它们在对象检测和整数数学运算方面很有效。
例如,根据该技术的一个实施例,PVA用来执行计算机立体视觉。在一些示例中,可以使用基于半全局匹配的算法,但是这并不意图是限制性的。许多用于3-5级自主驾驶的应用都需要即时运动估计/立体匹配(例如来自运动的结构、行人识别、车道检测等等)。PVA可以在来自两个单目相机的输入上执行计算机立体视觉功能。
在一些示例中,PVA可以用来执行密集的光流。例如,PVA可用于处理原始RADAR数据(例如,使用4D快速傅里叶变换)以在发射下一个RADAR脉冲之前提供经处理的RADAR信号。在其他示例中,PVA用于飞行时间深度处理,其例如通过处理原始飞行时间数据以提供经处理的飞行时间数据。
DLA可以用来运行任何类型的网络以增强控制和驾驶安全性,包括例如输出用于每个对象检测的置信度度量的神经网络。这样的置信度值可以解释为概率,或者解释为提供每个检测与其他检测相比的相对“权重”。该置信度值使得***能够做出关于哪些检测应当被认为是真阳性检测而不是假阳性检测的进一步决定。例如,***可以为置信度设置阈值,并且仅仅将超过阈值的检测看作真阳性检测。在自动紧急制动(AEB)***中,假阳性检测会使得车辆自动地执行紧急制动,这显然是不希望的。因此,只有最确信的检测才应当被认为是AEB的触发因素。DLA可以运行用于回归置信度值的神经网络。该神经网络可以将至少一些参数子集作为其输入,例如边界框维度,(例如从另一个子***)获得的地平面估计,与车辆1000取向、距离相关的惯性测量单元(IMU)传感器1066输出,从神经网络和/或其他传感器(例如LIDAR传感器1064或RADAR传感器1060)获得的对象的3D位置估计等。
SoC 1004可以包括一个或更多个数据存储1016(例如内存)。数据存储1016可以是SoC 1004的片上内存,其可以存储要在GPU和/或DLA上执行的神经网络。在一些示例中,为了冗余和安全,数据存储1016可以容量足够大以存储神经网络的多个实例。数据存储1016可以包括L2或L3高速缓存1012。对数据存储1016的引用可以包括对与如本文所描述的PVA、DLA和/或其他加速器1014关联的内存的引用。
SoC 1004可以包括一个或更多个处理器1010(例如嵌入式处理器)。处理器1010可以包括启动和功率管理处理器,其可以是用于处理启动功率和管理功能以及有关安全实施的专用处理器和子***。启动和功率管理处理器可以是SoC 1004启动序列的一部分,并且可以提供运行时间功率管理服务。启动功率和管理处理器可以提供时钟和电压编程、辅助***低功率状态转换、SoC 1004热和温度传感器管理和/或SoC 1004功率状态管理。每个温度传感器可以实现为环形振荡器,其输出频率与温度成比例,并且SoC 1004可以使用环形振荡器检测CPU 1006、GPU 1008和/或加速器1014的温度。如果确定温度超过阈值,那么启动和功率管理处理器可以进入温度故障例程并且将SoC 1004置于较低功率状态和/或将车辆1000置于司机安全停车模式(例如使车辆1000安全停车)。
处理器1010可以还包括可以用作音频处理引擎的一组嵌入式处理器。音频处理引擎可以是一种音频子***,其允许实现对于通过多个接口的多声道音频的完全硬件支持以及一系列广泛而灵活的音频I/O接口。在一些示例中,音频处理引擎是具有带有专用RAM的数字标志处理器的专用处理器核。
处理器1010可以还包括始终在处理器上的引擎,其可以提供必要的硬件特征以支持低功率传感器管理和唤醒用例。该始终在处理器上的引擎可以包括处理器核、紧密耦合的RAM、支持***设备(例如定时器和中断控制器)、各种I/O控制器***设备和路由逻辑。
处理器1010可以还包括安全簇引擎,其包括处理汽车应用的安全管理的专用处理器子***。安全簇引擎可以包括两个或更多处理器核、紧密耦合的RAM、支持***设备(例如定时器、中断控制器等等)和/或路由逻辑。在安全模式下,所述两个或更多核可以操作于锁步模式下,并且用作具有检测它们的操作之间的任何差异的比较逻辑的单核。
处理器1010可以还包括实时相机引擎,其可以包括用于处理实时相机管理的专用处理器子***。
处理器1010可以还包括高动态范围标志处理器,其可以包括图像标志处理器,该图像标志处理器是一种硬件引擎,该硬件引擎是相机处理管线的部分。
处理器1010可以包括可以是(例如微处理器上实现的)处理块的视频图像复合器,其实现视频回放应用程序产生用于播放器窗口的最终图像所需的视频后处理功能。视频图像复合器可以对广角相机1070、环绕相机1074和/或对驾驶室内监测相机传感器执行镜头畸变校正。驾驶室内监测相机传感器优选地由运行在高级SoC的另一个实例上的神经网络监测,被配置为识别驾驶室内事件并且相对应地做出响应。驾驶室内***可以执行唇读,以激活移动电话服务并拨打电话、口述电子邮件、改变车辆目的地、激活或改变车辆的信息娱乐***和设置或者提供语音激活的网上冲浪。某些功能仅在车辆操作于自主模式下时对于驾驶员可用,并且在其他情况下被禁用。
视频图像复合器可以包括用于空间和时间降噪的增强时间降噪。例如,在视频中出现运动的情况下,降噪适当地对空间信息加权,降低邻近帧提供的信息的权重。在图像或者图像的部分不包括运动的情况下,视频图像复合器执行的时间降噪可以使用来自先前的图像的信息以降低当前图像中的噪声。
视频图像复合器也可以被配置为对输入立体镜头帧执行立体校正。当操作***桌面正在使用并且GPU 1008无需连续地渲染(render)新的表面时,视频图像复合器可以进一步用于用户接口组成。甚至在GPU 1008上电并且激活,主动执行3D渲染时,视频图像复合器可以用来减轻GPU 1008的负担以提高性能和响应能力。
SoC 1004可以还包括用于从相机接收视频和输入的移动行业处理器接口(MIPI)相机串行接口、高速接口和/或可以用于相机和有关像素输入功能的视频输入块。SoC 1004可以还包括可以由软件控制并且可以用于接收未提交到特定角色的I/O标志的输入/输出控制器。
SoC 1004可以还包括大范围的***设备接口,以使能与***设备、音频编解码器、功率管理和/或其他设备通信。SoC 1004可以用来处理来自(通过千兆多媒体串行链路和以太网连接的)相机、传感器(例如可以通过以太网连接的LIDAR传感器1064、RADAR传感器1060等等)的数据,来自总线1002的数据(例如车辆1000的速率、方向盘位置等等),来自(通过以太网或CAN总线连接的)GNSS传感器1058的数据。SoC 1004可以还包括专用高性能大容量存储控制器,其可以包括它们自己的DMA引擎,并且其可以用来从日常数据管理任务中释放CPU 1006。
SoC 1004可以是具有灵活架构的端到端平台,该架构跨越自动化3-5级,从而提供利用和高效使用计算机视觉和ADAS技术以实现多样性和冗余、连同深度学***台的综合功能安全架构。SoC 1004可以比常规的***更快、更可靠,甚至更加能量高效和空间高效。例如,当与CPU 1006、GPU 1008和数据存储1016结合时,加速器1014可以提供用于3-5级自主车辆的快速高效平台。
因此该技术提供了不能通过常规***实现的能力和功能。例如,计算机视觉算法可以在CPU上执行,这些CPU可以使用诸如C编程语言之类别的高级编程语言配置为跨各种各样的视觉数据执行各种各样的处理算法。然而,CPU常常不能满足许多计算机视觉应用的性能要求,诸如与例如执行时间和功耗有关的那些要求。特别地,许多CPU不能实时地执行复杂的对象检测算法,这是车载ADAS应用的要求和实用3-5级自主车辆的要求。
与常规***形成对比的是,通过提供CPU复合体、GPU复合体和硬件加速器簇,本文描述的技术允许同时和/或顺序地执行多个神经网络,并且将结果组合在一起以实现3-5级自主驾驶功能。例如,在DLA或dGPU(例如GPU 1020)上执行的CNN可以包括文本和单词识别,允许超级计算机读取和理解交通指示牌,包括尚未针对其特别地训练神经网络的指示牌。DLA可以还包括能够识别、解释和提供对指示牌的语义理解,并且将该语义理解传递给运行在CPU复合体上的路径规划模块的神经网络。
作为另一个示例,如3、4或5级驾驶所需的,多个神经网络可以同时运行。例如,由“注意:闪烁的灯指示结冰条件”组成的警告指示牌连同电灯可以由若干神经网络独立地或者共同地进行解释。指示牌本身可以由部署的第一神经网络(例如经过训练的神经网络)识别为交通指示牌,文本“闪烁的灯指示结冰条件”可以由部署的第二神经网络解释,该部署的第二神经网络告知车辆的路径规划软件(优选地在CPU复合体上执行)当检测到闪烁的灯时,存在结冰条件。闪烁的灯可以通过在多个帧上操作部署的第三神经网络而识别,该神经网络告知车辆的路径规划软件闪烁的灯的存在(或不存在)。所有三个神经网络可以例如在DLA内和/或在GPU 1008上同时运行。
在一些示例中,用于面部识别和车主识别的CNN可以使用来自相机传感器的数据识别车辆1000的授权的驾驶员和/或车主的存在。始终在传感器上的处理引擎可以用来在车主接近驾驶员车门时解锁车辆并且打开灯,并且在安全模式下,在车主离开车辆时禁用车辆。按照这种方式,SoC 1004提供了防范盗窃和/或劫车的安全性。
在另一个示例中,用于应急车辆检测和识别的CNN可以使用来自麦克风1096的数据来检测并且识别应急车辆警报(siren)。与使用通用分类器检测警报并且手动地提取特征的常规***形成对比的是,SoC 1004使用CNN以对环境和城市声音分类以及对视觉数据分类。在优选的实施例中,运行在DLA上的CNN被训练为识别应急车辆的相对关闭速率(例如通过使用多普勒效应)。CNN也可以被训练为识别如GNSS传感器1058所识别的特定于车辆在其中操作的局部区域的应急车辆。因此,例如,当在欧盟操作时,CNN将寻求检测欧盟警报,并且当在美国时,CNN将寻求识别仅仅北美的警报。一旦检测到应急车辆,在超声传感器1062的辅助下,控制程序可以用来执行应急车辆安全例程,使车辆放慢速度,开到路边,停下车辆,和/或使车辆空转,直到应急车辆通过。
车辆可以包括可以经由高速互连(例如PCIe)耦合到SoC 1004的CPU 1018(例如分立的CPU或dCPU)。CPU 1018可以包括例如X106处理器。CPU 1018可以用来执行各种各样的功能中的任何功能,包括例如仲裁ADAS传感器与SoC 1004之间潜在地不一致的结果,和/或监测控制器1036和/或信息娱乐SoC 1030的状态和健康状况。
车辆1000可以包括可以经由高速互连(例如NVIDIA的NVLINK)耦合到SoC 1004的GPU 1020(例如分立的GPU或dGPU)。GPU 1020可以例如通过执行冗余的和/或不同的神经网络而提供附加的人工智能功能,并且可以用来至少部分地基于来自车辆1000的传感器的输入(例如传感器数据)来训练和/或更新神经网络。
车辆1000可以还包括网络接口1024,该网络接口可以包括一个或更多个无线天线1026(例如用于不同通信协议的一个或更多个无线天线,例如蜂窝天线、蓝牙天线等等)。网络接口1024可以用来使能通过因特网与云(例如与服务器1078和/或其他网络设备)、与其他车辆和/或与计算设备(例如乘客的客户端设备)的无线连接。为了与其他车辆通信,可以在这两辆车之间建立直接链接,和/或可以建立间接链接(例如跨网络以及通过因特网)。直接链接可以使用车对车通信链路提供。车对车通信链路可以向车辆1000提供关于接近车辆1000的车辆(例如车辆1000前面、侧面和/或后面的车辆)的信息。该功能可以是车辆1000的协作自适应巡航控制功能的部分。
网络接口1024可以包括提供调制和解调功能并且使得控制器1036能够通过无线网络通信的SoC。网络接口1024可以包括用于从基带到射频的上转换以及从射频到基带的下转换的射频前端。频率转换可以通过公知的过程执行,和/或可以使用超外差(super-heterodyne)过程执行。在一些示例中,射频前端功能可以由单独的芯片提供。网络接口可以包括用于通过LTE、WCDMA、UMTS、GSM、CDMA2000、蓝牙、蓝牙LE、Wi-Fi、Z波、ZigBee、LoRaWAN和/或其他无线协议通信的无线功能。
车辆1000可以还包括可包括片外(例如SoC 1004外)存储装置的数据存储1028。数据存储1028可以包括一个或更多个存储元件,包括RAM、SRAM、DRAM、VRAM、闪存、硬盘和/或可以存储至少一个比特的数据的其他部件和/或设备。
车辆1000可以还包括GNSS传感器1058(例如GPS和/或辅助GPS传感器)用于辅助映射、感知、占用网格生成和/或路径规划功能。可以使用任意数量的GNSS传感器1058,包括例如且不限于使用带有以太网到串行(RS-232)网桥的USB连接器的GPS。
车辆1000可以还包括RADAR传感器1060。RADAR传感器1060可以甚至在黑暗和/或恶劣天气条件下也由车辆1000用于远程车辆检测。RADAR功能安全级别可以是ASIL B。RADAR传感器1060可以使用CAN和/或总线1002(例如以传输RADAR传感器1060生成的数据)以用于控制以及访问对象追踪数据,在一些示例中接入以太网以访问原始数据。可以使用各种各样的RADAR传感器类型。例如且非限制性地,RADAR传感器1060可以适合前面、后面和侧面RADAR使用。在一些示例中,使用脉冲多普勒RADAR传感器。
RADAR传感器1060可以包括不同的配置,例如具有窄视场的远程、具有宽视场的短程、短程侧覆盖等等。在一些示例中,远程RADAR可以用于自适应巡航控制功能。远程RADAR***可以提供通过两个或更多独立扫描实现的广阔视场(例如250m范围内)。RADAR传感器1060可以帮助区分静态对象和运动对象,并且可以由ADAS***用于紧急制动辅助和前方碰撞警告。远程RADAR传感器可以包括具有多根(例如六根或更多)固定RADAR天线以及高速CAN和FlexRay接口的单站多模RADAR。在具有六根天线的示例中,中央四根天线可以创建聚焦的波束图案,其被设计为在更高速率下以来自邻近车道的最小交通干扰记录车辆1000的周围环境。其他两根天线可以扩展视场,使得快速地检测进入或离开车辆1000的车道的车辆成为可能。
作为一个示例,中程RADAR***可以包括高达1060m(前面)或80m(后面)的范围以及高达42度(前面)或1050度(后面)的视场。短程RADAR***可以包括但不限于被设计为安装在后保险杠两端的RADAR传感器。当安装在后保险杠两端时,这样的RADAR传感器***可以创建持续地监测后方和车辆旁边的视盲点的两个波束。
短程RADAR***可以在ADAS***中用于视盲点检测和/或变道辅助。
车辆1000可以还包括超声传感器1062。可以置于车辆1000的前面、后面和/或侧面的超声传感器1062可以用于停车辅助和/或创建和更新占用网格。可以使用各种各样的超声传感器1062,并且不同的超声传感器1062可以用于不同的检测范围(例如2.5m、4m)。超声传感器1062可以操作于功能安全级别的ASIL B。
车辆1000可以包括LIDAR传感器1064。LIDAR传感器1064可以用于对象和行人检测、紧急制动、碰撞避免和/或其他功能。LIDAR传感器1064可以为功能安全级别的ASIL B。在一些示例中,车辆1000可以包括可以使用以太网(例如以将数据提供给千兆以太网交换机)的多个LIDAR传感器1064(例如两个、四个、六个等等)。
在一些示例中,LIDAR传感器1064可能够对360度视场提供对象列表及其距离。商业上可用的LIDAR传感器1064可以具有例如近似100m的广告范围,精度为2cm-3cm,支持100Mbps以太网连接。在一些示例中,可以使用一个或更多个非突出的LIDAR传感器1064。在这样的示例中,LIDAR传感器1064可以实现为可以嵌入到车辆1000的前面、后面、侧面和/或拐角的小设备。在这样的示例中,LIDAR传感器1064可以甚至对于低反射率对象提供高达120度水平的和35度竖直的视场,具有200m的范围。前面安装的LIDAR传感器1064可以被配置用于45度与135度之间的水平视场。
在一些示例中,也可以使用诸如3D闪光LIDAR之类别的LIDAR技术。3D闪光LIDAR使用激光的闪光作为发射源,以照亮高达约200m的车辆周围环境。闪光LIDAR单元包括接受器,该接受器将激光脉冲传输时间和反射光记录在每个像素上,其进而与从车辆到对象的范围相对应。闪光LIDAR可以允许利用每个激光闪光生成周围环境的高度精确且无失真的图像。在一些示例中,可以部署四个闪光LIDAR传感器,车辆1000的每一侧一个。可用的3D闪光LIDAR***包括没有风扇以外的运动部件(moving part)的固态3D凝视阵列LIDAR相机(例如非扫描LIDAR设备)。闪光LIDAR设备可以使用每帧五纳秒I类别(眼睛安全)激光脉冲,并且可以以3D范围点云和共同寄存的强度数据的形式捕获反射的激光。通过使用闪光LIDAR,并且因为闪光LIDAR是没有运动部件的固态设备,LIDAR传感器1064可以不太容易受到运动模糊、振动和/或震动的影响。
该车辆可以还包括IMU传感器1066。在一些示例中,IMU传感器1066可以位于车辆1000的后轴的中心。IMU传感器1066可以包括例如且不限于加速度计、磁力计、陀螺器、磁罗盘和/或其他传感器类型。在一些示例中,例如在六轴应用中,IMU传感器1066可以包括加速度计和陀螺器,而在九轴应用中,IMU传感器1066可以包括加速度计、陀螺器和磁力计。
在一些实施例中,IMU传感器1066可以实现为微型高性能GPS辅助惯性导航***(GPS/INS),其结合微机电***(MEMS)惯性传感器、高灵敏度GPS接收器和高级卡尔曼滤波算法以提供位置、速度和姿态的估计。这样,在一些示例中,IMU传感器1066可以使得车辆1000能够在无需来自磁传感器的输入的情况下通过直接观察从GPS到IMU传感器1066的速度变化并且将其相关来估计方向(heading)。在一些示例中,IMU传感器1066和GNSS传感器1058可以结合到单个集成单元中。
该车辆可以包括置于车辆1000中和/或车辆1000周围的麦克风1096。除别的以外,麦克风1096可以用于应急车辆检测和识别。
该车辆可以还包括任意数量的相机类型,包括立体相机1068、广角相机1070、红外相机1072、环绕相机1074、远程和/或中程相机1098和/或其他相机类型。这些相机可以用来捕获车辆1000整个***周围的图像数据。使用的相机类型取决于实施例和车辆1000的要求,并且相机类型的任意组合可以用来提供车辆1000周围的必要覆盖。此外,相机的数量可以根据实施例而不同。例如,该车辆可以包括六个相机、七个相机、十个相机、十二个相机和/或另一数量的相机。作为一个示例且非限制性地,这些相机可以支持千兆多媒体串行链路(GMSL)和/或千兆以太网。所述相机中的每一个在本文关于图10A和图10B更详细地进行了描述。
车辆1000可以还包括振动传感器1042。振动传感器1042可以测量车辆的诸如车轴之类别的部件的振动。例如,振动的变化可以指示道路表面的变化。在另一个示例中,当使用两个或更多振动传感器1042时,振动之间的差异可以用来确定道路表面的摩擦或滑移(例如当动力驾驶轴与自由旋转轴之间存在振动差异时)。
车辆1000可以包括ADAS***1038。在一些示例中,ADAS***1038可以包括SoC。ADAS***1038可以包括自主/自适应/自动巡航控制(ACC)、协作自适应巡航控制(CACC)、前方撞车警告(FCW)、自动紧急制动(AEB)、车道偏离警告(LDW)、车道保持辅助(LKA)、视盲点警告(BSW)、后方穿越交通警告(RCTW)、碰撞警告***(CWS)、车道居中(LC)和/或其他特征和功能。
ACC***可以使用RADAR传感器1060、LIDAR传感器1064和/或相机。ACC***可以包括纵向ACC和/或横向ACC。纵向ACC监测并控制到紧接在车辆1000前方的车辆的距离,并且自动地调节车速以维持离前方车辆的安全距离。横向ACC执行距离保持,并且在必要时建议车辆1000改变车道。横向ACC与诸如LC和CWS之类别的其他ADAS应用程序有关。
CACC使用来自其他车辆的信息,该信息可以经由网络接口1024和/或无线天线1026经由无线链路或者通过网络连接(例如通过因特网)间接地从其他车辆接收。直接链接可以由车对车(V2V)通信链路提供,而间接链接可以是基础设施到车辆(I2V)的通信链路。通常,V2V通信概念提供关于紧接在前的车辆(例如紧接在车辆1000前方且与其处于相同车道的车辆)的信息,而I2V通信概念提供关于前方更远处的交通的信息。CACC***可以包括I2V和V2V信息源中的任一个或者二者。给定车辆1000前方车辆的信息,CACC可以更加可靠,并且它有可能提高交通流的畅通性且降低道路拥堵。
FCW***被设计为提醒驾驶员注意危险,使得驾驶员可以采取纠正措施。FCW***使用耦合到专用处理器、DSP、FPGA和/或ASIC的前置相机和/或RADAR传感器1060,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类别的驾驶员反馈。FCW***可以提供例如声音、视觉警告、振动和/或快速制动脉冲形式的警告。
AEB***检测即将发生的与另一车辆或其他对象的前方碰撞,并且可以在驾驶员在指定的时间或距离参数内没有采取纠正措施的情况下自动地应用制动器。AEB***可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的前置相机和/或RADAR传感器1060。当AEB***检测到危险时,它典型地首先提醒(alert)驾驶员采取纠正措施以避免碰撞,并且如果驾驶员没有采取纠正措施,那么AEB***可以自动地应用制动器以努力防止或者至少减轻预测的碰撞的影响。AEB***可以包括诸如动态制动支持和/或碰撞迫近制动之类别的技术。
LDW***提供了诸如方向盘或座位振动之类别的视觉、听觉和/或触觉警告,以在车辆1000穿过车道标记时提醒驾驶员。当驾驶员指示有意偏离车道时,通过激活转弯标志,不激活LDW***。LDW***可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的前侧朝向相机,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类别的驾驶员反馈。
LKA***是LDW***的变型。如果车辆1000开始离开车道,那么LKA***提供纠正车辆1000的转向输入或制动。
BSW***检测并向驾驶员警告汽车视盲点中的车辆。BSW***可以提供视觉、听觉和/或触觉警报以指示合并或改变车道是不安全的。***可以在驾驶员使用转弯标志时提供附加的警告。BSW***可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的后侧朝向相机和/或RADAR传感器1060,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类别的驾驶员反馈。
RCTW***可以在车辆1000倒车时在后置相机范围之外检测到对象时提供视觉、听觉和/或触觉通知。一些RCTW***包括AEB以确保应用车辆制动器以避免撞车。RCTW***可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的一个或更多个后置RADAR传感器1060,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类别的驾驶员反馈。
常规的ADAS***可能易于出现假阳性结果,这可能会让驾驶员烦恼并分散注意力,但是典型地不是灾难性的,因为ADAS***提醒驾驶员并且允许驾驶员决定安全条件是否真正存在并且相对应地采取行动。然而,在自主车辆1000中,在冲突结果的情况下,车辆1000本身必须决定是否注意(heed)来自主计算机或者辅助计算机(例如第一控制器1036或第二控制器1036)的结果。例如,在一些实施例中,ADAS***1038可以是用于向备用计算机合理性模块提供感知信息的备用和/或辅助计算机。备用计算机合理性监视器可以在硬件部件上运行冗余多样的软件,以检测感知和动态驾驶任务中的故障。来自ADAS***1038的输出可以提供给监督MCU。如果来自主计算机和辅助计算机的输出冲突,那么监督MCU必须确定如何协调该冲突以确保安全操作。
在一些示例中,主计算机可以被配置为向监督MCU提供置信度评分,指示主计算机对所选结果的置信度。如果置信度评分超过阈值,那么监督MCU可以遵循主计算机的方向,而不管辅助计算机是否提供冲突或不一致的结果。在置信度评分不满足阈值的情况下并且在主计算机和辅助计算机指示不同的结果(例如冲突)的情况下,监督MCU可以在这些计算机之间进行仲裁以确定适当的结果。
监督MCU可以被配置为运行神经网络,所述神经网络被训练并且被配置为至少部分地基于来自主计算机和辅助计算机的输出,确定辅助计算机提供假警报的条件。因此,监督MCU中的神经网络可以了解何时可以信任辅助计算机的输出以及何时不能。例如,当辅助计算机为基于RADAR的FCW***时,监督MCU中的神经网络可以了解FCW***何时正在识别事实上不是危险的金属对象,例如触发警报的排水网格或井盖。类别似地,当辅助计算机是基于相机的LDW***时,监督MCU中的神经网络可以学习在骑车者或行人在场并且车道偏离实际上是最安全的策略时无视该LDW。在包括运行在监督MCU上的神经网络的实施例中,监督MCU可以包括适合于利用关联的内存运行神经网络的DLA或GPU中的至少一个。在优选的实施例中,监督MCU可以包括SoC 1004的部件和/或作为SoC1004的部件而被包括。
在其他示例中,ADAS***1038可以包括使用传统计算机视觉规则执行ADAS功能的辅助计算机。这样,辅助计算机可以使用经典的计算机视觉规则(如果-那么),并且在监督MCU中存在神经网络可以提高可靠性、安全性和性能。例如,多样化的实现方式和有意的非完全相同(non-identity)使得整个***更加容错,对于软件(或者软件-硬件接口)功能造成的故障而言尤其如此。例如,如果在主计算机上运行的软件中存在软件漏洞或错误并且运行在辅助计算机上的非完全相同的软件代码提供相同的总体结果,那么监督MCU可以更加确信总体结果是正确的,并且由主计算机使用的软件或硬件中的漏洞不造成实质性的错误。
在一些示例中,ADAS***1038的输出可以馈送至主计算机的感知块和/或主计算机的动态驾驶任务块。例如,如果ADAS***1038由于对象紧接在前的原因而指示前方碰撞警告,那么感知块可以在识别对象时使用该信息。在其他示例中,辅助计算机可以具有它自己的神经网络,其被训练并且因此如本文所描述的降低假阳性的风险。
车辆1000可以还包括信息娱乐SoC 1030(例如车载信息娱乐***(IVI))。尽管被图示和描述为SoC,但是信息娱乐***可以不是SoC,并且可以包括两个或更多分立的部件。信息娱乐SoC 1030可以包括可以用来向车辆1000提供音频(例如音乐、个人数字助理、导航指令、新闻、广播等等)、视频(例如TV、电影、流媒体等等)、电话(例如免提呼叫)、网络连接(例如LTE、WiFi等等)和/或信息服务(例如导航***,后停车援助,无线电数据***,诸如燃油水平、覆盖的总距离、制动燃油水平、油位、车门开/关、空气过滤器信息之类别的车辆有关信息,等等)的硬件和软件的组合。例如,信息娱乐SoC 1030可以包括收音机、盘播放器、导航***、视频播放器、USB和蓝牙连接、车载电脑、车载娱乐、WiFi、方向盘音频控件、免提语音控件、平视显示器(HUD)、HMI显示器1034、远程信息处理设备、控制面板(例如用于控制各种部件、特征和/或***,和/或与其交互)和/或其他部件。信息娱乐SoC 1030可以进一步用来向车辆的用户提供信息(例如视觉的和/或听觉的),例如来自ADAS***1038的信息,诸如规划的车辆机动、轨迹、周围环境信息(例如交叉路口信息、车辆信息、道路信息等等)之类别的自主驾驶信息,和/或其他信息。
信息娱乐SoC 1030可以包括GPU功能。信息娱乐SoC 1030可以通过总线1002(例如CAN总线、以太网等)与车辆1000的其他设备、***和/或部件通信。在一些示例中,信息娱乐SoC 1030可以耦合至监督MCU,使得在主控制器1036(例如车辆1000的主和/或备用计算机)出现故障的情况下,信息娱乐***的GPU可以执行一些自驾驶功能。在这样的示例中,信息娱乐SoC 1030可以如本文所描述的将车辆1000置于司机安全停车模式。
车辆1000可以还包括器表组1032(例如数字器表板、电子器表组、数字器表面板等等)。器表组1032可以包括控制器和/或超级计算机(例如分立的控制器或超级计算机)。器表组1032可以包括一套器器,例如车速表、燃油水平、油压、转速表、里程表、转弯指示器、换档位置指示器、安全带警告灯、停车制动警告灯、发动机故障灯、安全气囊(SRS)***信息、照明控件、安全***控件、导航信息等等。在一些示例中,信息可以被显示和/或在信息娱乐SoC 1030和器表组1032之间共享。换言之,器表组1032可以作为信息娱乐SoC 1030的部分而被包括,或者反之亦然。
图10D为根据本公开一些实施例的基于云的服务器与图10A的示例自主车辆1000之间的通信的***示意图。***1076可以包括服务器1078、网络1090以及包括车辆1000在内的车辆。服务器1078可以包括多个GPU 1084(A)-1084(H)(这里统称为GPU 1084)、PCIe交换机1082(A)-1082(H)(这里统称为PCIe交换机1082)和/或CPU 1080(A)-1080(B)(这里统称为CPU 1080)。GPU 1084、CPU 1080和PCIe交换机可以与诸如例如且不限于NVIDIA开发的NVLink接口1088之类别的高速互连和/或PCIe连接1086互连。在一些示例中,GPU 1084经由NVLink和/或NVSwitch SoC连接,并且GPU 1084和PCIe交换机1082经由PCIe互连连接。尽管图示出八个GPU 1084、两个CPU 1080和两个PCIe交换机,但是这并不意图是限制性的。取决于实施例,服务器1078中的每一个可以包括任意数量的GPU 1084、CPU 1080和/或PCIe交换机。例如,服务器1078中的每一个可以包括八个、十六个、三十二个和/或更多GPU 1084。
服务器1078可以通过网络1090并且从车辆接收图像数据,该图像数据表示示出诸如最近开始的道路工程之类别的意外或改变的道路状况的图像。服务器1078可以通过网络1090并且向车辆传输神经网络1092、更新的神经网络1092和/或地图信息1094,包括关于交通和道路状况的信息。对地图信息1094的更新可以包括对于HD地图1022的更新,例如关于建筑工地、坑洼、弯道、洪水或其他障碍物的信息。在一些示例中,神经网络1092、更新的神经网络1092和/或地图信息1094可以已从新的训练和/或从环境中的任意数量的车辆接收的数据中表示和/或基于数据中心处执行的训练(例如使用服务器1078和/或其他服务器)的经验产生。
服务器1078可以用来基于训练数据训练机器学习模型(例如神经网络)。训练数据可以由车辆生成,和/或可以在仿真中生成(例如使用游戏引擎)。在一些示例中,训练数据被标记(例如在神经网络受益于有监督学习的情况下)和/或经历其他预处理,而在其他示例中,训练数据不被标记和/或预处理(例如在神经网络无需有监督学习的情况下)。可以根据任何一类别或更多类别别的机器学习技术来执行训练,包括但不限于诸如以下类别别:监督训练、半监督训练、非监督训练、自学习、强化学习、联合学习、转移学习、特征学习(包括主要组成和聚类别分析)、多线性子空间学习、流形学习、表示学习(包括备用字典学习)、基于规则的机器学习、异常检测及其任何变体或组合。一旦机器学习模型被训练,机器学习模型可以由车辆使用(例如通过网络1090传输至车辆),和/或机器学习模型可以由服务器1078用来远程地监测车辆。
在一些示例中,服务器1078可以接收来自车辆的数据,并且将该数据应用到最新的实时神经网络以用于实时智能推理。服务器1078可以包括由GPU 1084供电的深度学习超级计算机和/或专用AI计算机,例如NVIDIA开发的DGX和DGX站机器。然而,在一些示例中,服务器1078可以包括仅使用CPU供电的数据中心的深度学习基础设施。
服务器1078的深度学习基础设施可能够快速实时推理,并且可以使用该能力来评估并验证车辆1000中的处理器、软件和/或关联硬件的健康状况。例如,深度学习基础设施可以接收来自车辆1000的定期更新,例如图像序列和/或车辆1000已经定位的位于该图像序列中的对象(例如经由计算机视觉和/或其他机器学习对象分类技术)。深度学习基础设施可以运行它自己的神经网络以识别对象并且将它们与车辆1000识别的对象相比较,如果结果不匹配并且该基础设施得出车辆1000中的AI发生故障的结论,那么服务器1078可以向车辆1000传输标志,指示车辆1000的故障保护计算机进行控制,通知乘客,并且完成安全停车操作。
为了推理,服务器1078可以包括GPU 1084和一个或更多个可编程推理加速器(例如NVIDIA的TensorRT)。GPU供电的服务器和推理加速的组合可以使得实时响应成为可能。在其他示例中,例如在性能不那么重要的情况下,CPU、FPGA和其他处理器供电的服务器可以用于推理。
如上所述,在至少一个实施例中,SoC 150(见图1和图2)可以是车辆1000的组件。例如,SoC 150可以实现车辆1000的前置相机***的计算机视觉管线。在这样的实施例中,SoC 150可以被实现为SoC 1004中的一个(参见图10C)。参考图10C,***控制器104可以由一个或更多个CPU 1006、一个或更多个GPU 1008和/或一个或更多个处理器1010实现。存储器子***140可以由一个或更多个高速缓存1012和/或一个或更多个数据存储1016实现。一个或更多个处理块124可实施为加速器1014。
示例计算设备
图11是适合用于实现本公开的一些实施例的示例计算设备1100的框图。计算设备1100可以包括直接或间接耦合以下设备的互连***1102:存储器1104、一个或更多个中央处理单元(CPU)1106、一个或更多个图形处理单元(GPU)1108、通信接口1110、I/O端口1112、输入/输出组件1114、电源1116,一个或更多个呈现组件1118(例如,一个或更多个显示器)和一个或更多个逻辑单元1120。
尽管图11的各个方框被示出为利用线路经由互连***1102连接,但这并不旨在是限制性的并且仅是为了清楚起见。例如,在一些实施例中,呈现组件1118(诸如显示设备)可被认为是I/O组件1114(例如,如果显示器是触摸屏)。作为另一个示例,CPU 1106和/或GPU1108可以包括存储器(例如,存储器1104可以表示除了GPU 1108的存储器、CPU 1106和/或其他组件之外的存储设备)。换言之,图11的计算设备仅是说明性的。在如“工作站”、“服务器”、“膝上型计算机”、“桌面型计算机”、“平板计算机”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ECU)”、“虚拟现实***”、“增强现实***”和/或其他设备或***类型的此类别类别别之间不做区分,因为所有都被考虑在图11的计算设备的范围内。
互连***1102可表示一个或更多个链路或总线,诸如地址总线、数据总线、控制总线或其组合。互连***1102可以包括一个或更多个总线或链路类型,诸如工业标准架构(ISA)总线、扩展工业标准架构(EISA)总线、视频电子标准协会(VESA)总线、***组件互连(PCI)总线、快速***组件互连(PCIe)总线和/或另一类型的总线或链路。在一些实施例中,组件之间存在直接连接。作为示例,CPU 1106可直接连接到存储器1104。进一步,CPU 1106可直接连接到GPU 1108。在组件之间存在直接或点对点连接的情况下,互连***1102可包括PCIe链路以执行连接。在这些示例中,PCI总线不需要被包括在计算设备1100中。
存储器1104可以包括各种计算机可读介质中的任何计算机可读介质。计算机可读介质可以是可由计算设备1100访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质,以及可移除和不可移除介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。
计算机存储介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型的信息的任何方法或技术实现的易失性和非易失性介质和/或可移动和不可移动介质。例如,存储器1104可以存储计算机可读指令(例如,表示一个或更多个程序和/或一个或更多个程序元件,诸如操作***)。计算机存储介质可以包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术,CD-ROM、数字通用盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储装置或其他磁性存储装置,或可用于存储所要信息且可由计算设备1100存取的任何其他介质。如本文所使用的,计算机存储介质不包括标志本身。
计算机存储介质可将计算机可读指令、数据结构、程序模块和/或其他数据类型体现在诸如载波或其他传输机制之类别的已调制数据标志中,并且包括任何信息传递介质。术语“调制数据标志”可以指代以编码标志中的信息的方式设置或改变其一个或更多个特性的标志。作为示例而非限制,计算机存储介质可包括有线介质(诸如有线网络或直接有线连接)和无线介质(诸如声学、RF、红外和其他无线介质)。以上任何内容的组合也应包含在计算机可读介质的范围内。
CPU 1106可经配置以执行计算机可读指令中的至少一些以控制计算设备1100的一个或更多个组件执行本文中所描述的方法和/或过程中的一个或更多个。CPU 1106可各自包含能够同时处置众多软件线程的一个或更多个核心(例如,一个、两个、四个、八个、二十八个、七十二个等)。CPU 1106可包含任何类型的处理器,且可取决于所实施的计算设备1100的类型而包含不同类型的处理器(例如,针对移动装置具有较少核心的处理器和针对服务器具有较多核心的处理器)。例如,取决于计算设备1100的类型,处理器可以是使用精简指令集计算(RISC)实现的高级RISC机器(ARM)处理器或使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理器或次要协处理器(诸如数学协处理器)之外,计算设备1100还可包括一个或更多个CPU 1106。
除一个或更多个CPU 1106以外或替代一个或更多个CPU 1106,一个或更多个GPU1108可被配置成执行计算机可读指令中的至少一些以控制计算设备1100的一个或更多个组件执行本文所描述的方法和/或过程中的一个或更多个。GPU 1108中的一个或更多个可为集成GPU(例如,有CPU 1106中的一个或更多个)和/或GPU 1108中的一个或更多个可为离散GPU。在实施例中,GPU 1108中的一个或更多个可以是CPU 1106中的一个或更多个的协处理器。GPU 1108可由计算设备1100使用以渲染图形(例如,3D图形)或执行通用计算。例如,GPU 1108可用于GPU上的通用计算(GPGPU)。GPU 1108可包含能够同时处置数百或数千软件线程的数百或数千核心。GPU 1108可响应于渲染命令(例如,经由主机接口从CPU 1106接收的渲染命令)而产生输出图像的像素数据。GPU 1108可包含用于存储像素数据或任何其他合适数据(例如,GPGPU数据)的图形存储器(例如,显示存储器)。显示存储器可作为存储器1104的一部分被包括。GPU 1108可包含并行操作(例如,经由链路)的两个或两个以上GPU。链路可以直接连接GPU(例如,使用NVLINK)或可以通过交换机(例如,使用NVSwitch)连接GPU。当组合在一起时,每一GPU 1108可产生用于输出的不同部分或用于不同输出的像素数据或GPGPU数据(例如,用于第一图像的第一GPU和用于第二图像的第二GPU)。每一GPU可包含其自己的存储器,或可与其他GPU共享存储器。
除CPU 1106和/或GPU 1108之外或替代CPU 1106和/或GPU 1108,逻辑单元1120可经配置以执行计算机可读指令中的至少一些以控制计算设备1100的一个或更多个组件执行本文中所描述的方法和/或过程中的一个或更多个。在实施例中,一个或更多个CPU1106、一个或更多个GPU 1108、和/或一个或更多个逻辑单元1120可以离散地或联合地执行方法、过程和/或其部分的任何组合。逻辑单元1120中的一个或更多个可为CPU 1106和/或GPU 1108中的一个或更多个中的一部分和/或集成于CPU 1106和/或GPU 1108中的一个或更多个和/或逻辑单元1120中的一个或更多个可为离散组件或以其他方式在CPU 1106和/或GPU 1108外部。在实施例中,逻辑单元1120中的一个或更多个可以是CPU 1106中的一个或更多个和/或GPU 1108中的一个或更多个的协处理器。
逻辑单元1120的示例包括一个或更多个处理核心和/或其组件,诸如张量核心(TC)、张量处理单元(TPU)、像素视觉核心(PVC)、视觉处理单元(VPU)、图形处理群集(GPC)、纹理处理群集(TPC)、流多处理器(SM)、树横向单元(TTU)、人工智能加速器(AIA)、深度学习加速器(DLA)、算术逻辑单元(ALU)、专用集成电路(ASIC)、浮点单元(FPU)、I/O元件、***组件互连(PCI)或快速***组件互连(PCIe)元件等。
通信接口1110可以包括使计算设备1100能够经由电子通信网络(包括有线和/或无线通信)与其他计算设备通信的一个或更多个接收机、发射机和/或收发机。通信接口1110可包括实现通过多个不同网络中的任一个进行通信的组件和功能,诸如无线网络(例如,Wi-Fi、Z-Wave、蓝牙、蓝牙LE、ZigBee等)、有线网络(例如,通过以太网或无限带通信)、低功率广域网(例如,LoRaWAN、SigFox等)和/或互联网。
I/O端口1112可以使得计算设备1100能够逻辑地耦合到包括I/O组件1114、一个或更多个呈现组件1118和/或其他组件的其他设备,其中一些可以被内置到(例如,集成在)计算设备1100中。说明性I/O组件1114包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、扫描器、打印机、无线设备等。I/O组件1114可以提供处理空中姿态、语音或由用户生成的其他生理输入的自然用户界面(NUI)。在一些情况下,可将输入发射到适当的网络元件以供进一步处理。NUI可实现与计算设备1100的显示器相关联的语音识别、指示笔识别、面部识别、生物特征识别、屏幕上和屏幕附近的姿态识别、空中姿态、头部和眼睛跟踪、以及触摸识别(如以下更详细地描述的)的任何组合。计算设备1100可以包括用于手势检测和识别的深度相机,诸如立体相机***、红外相机***、RGB相机***、触摸屏技术和这些的组合。另外,计算设备1100可包含使得能够检测运动的加速度计或陀螺器(例如,作为惯性测量单元(IMU)的部分)。在一些示例中,计算设备1100可以使用加速度计或陀螺器的输出来渲染沉浸式增强现实或虚拟现实。
电源1116可包括硬连线电源、电池电源或其组合。电源1116可向计算设备1100提供电力以使得计算设备1100的组件能够操作。
呈现组件1118可包括显示器(例如,监视器、触摸屏、电视屏幕、平视显示器(HUD)、其他显示器类型或其组合)、扬声器和/或其他呈现组件。呈现组件1118可从其他组件(例如,GPU 1108、CPU 1106等)接收数据,且输出所述数据(例如,作为图像、视频、声音等)。
在至少一个实施例中,模拟***114(见图1)可以实施在一个或更多个计算设备1100之一上。如上所述,模拟***114可以由处理器可执行指令实现。在这样的实施例中,这些指令可以由存储器1104存储并且由CPU 1106、GPU 1108和/或逻辑单元1120执行。
鉴于以下条款可以描述本公开的至少一个实施例:
1.一种***,包括:第一电路,所述第一电路包括多个子块,以在所述多个子块执行与预定的错误检测数据相关联的诊断操作时生成输出数据;以及第二电路,所述第二电路包括多个错误检测块,以针对所述输出数据生成一个或更多个错误检测值并且将所述一个或更多个错误检测值与所述预定的错误检测数据进行比较。
2.如条款1所述的***,其中所述多个子块中的两个或更多个子块被串联地布置,以共同地执行功能操作,其中所述两个或更多个子块中的每一个子块执行所述功能操作的至少一部分,以及所述两个或更多个子块在不同的时间执行所述诊断操作和所述功能操作。
3.如条款2所述的***,其中所述预定的错误检测数据包括多个值,所述输出数据包括多个部分,所述输出数据的至少两个部分由所述多个子块中的不同子块输出,以及所述多个错误检测块用于:针对所述多个部分中的至少一个部分生成所述一个或更多个错误检测值中的至少一个错误检测值,并且将所述错误检测值中的所述至少一个错误检测值与所述多个值中的不同的值进行比较。
4.如条款1-3中任一项所述的***,用于与***控制器一起使用,所述***进一步包括:至少一个处理器,所述至少一个处理器用于将至少一个错误检测值与所述预定的错误检测数据进行比较以产生至少一个比较结果,所述至少一个处理器用于确定所述至少一个比较结果是否指示已经发生故障,并且当所述至少一个处理器确定已经发生故障时,通知所述***控制器。
5.如条款4所述的***,与存储预定输入数据的外部存储器***一起使用,所述***进一步包括:本地存储器;以及第三电路,所述第三电路包括存储器访问块,所述至少一个处理器引导所述存储器访问块从所述外部存储器***获得所述预定输入数据并将所述预定输入数据存储在所述本地存储器中,所述多个子块中的至少一个子块从所述本地存储器获得所述预定输入数据,所述多个子块通过处理所述预定输入数据来生成所述输出数据,以及所述存储器访问块将所述输出数据存储在所述外部存储器***中。
6.如条款5所述的***,进一步包括:第四电路,所述第四电路包括至少一个第一错误检测块,所述至少一个第一错误检测块用于针对从所述外部存储器***获得的所述预定输入数据生成至少一个第一错误检测值,并且将所述至少一个第一错误检测值与所述预定的错误检测数据的第一部分进行比较;以及第五电路,所述第五电路包括至少一个第二错误检测块,所述至少一个第一错误检测块用于在所述输出数据被存储在所述外部存储器***中之前针对所述输出数据生成至少一个第二错误检测值,并且将所述至少一个第二错误检测值与所述预定的错误检测数据的第二部分进行比较。
7.如条款1-6中任一项所述的***,其中所述多个错误检测块中的至少一个错误检测块将通过对由所述多个子块中的不同子块生成的输出执行循环冗余校验来生成所述一个或更多个错误检测值中的至少一个错误检测值。
8.如条款1-7中任一项所述的***,其中所述预定的错误检测数据通过离线模拟生成,并且所述多个错误检测块中的至少一个错误检测块包括:第一存储器位置,所述第一存储器位置用于存储所述预定的错误检测数据的至少一部分;第二存储器位置,所述第二存储器位置用于存储由所述错误检测块生成的所述一个或更多个错误检测值中的特定错误检测值;以及比较电路,所述比较电路用于比较由所述第一存储器位置和所述第二存储器位置存储的值,从而将所述特定错误检测值与所述预定的错误检测数据的所述部分进行比较。
9.如条款8所述的***,其中所述多个错误检测块中的每个错误检测块包括:第三存储器位置,所述第三存储器位置用于存储指令,所述指令用于指示所述错误检测块的所述比较电路比较由所述错误检测块的所述第一存储器位置和所述第二存储器位置存储的值。
10.如条款1-9中任一项所述的***,其中诊断操作包括永久故障软件诊断(“PFSD”)任务。
11.如条款1-10中任一项所述的***,进一步包括:自主车辆,所述自主车辆包括所述第一电路和所述第二电路。
12.如条款11所述的***,其中所述自主车辆包括计算机视觉管线,所述计算机视觉管线包括所述第一电路和所述第二电路。
13.一种方法,包括:利用电路的第一部分执行诊断操作以产生诊断输出,所述第一部分在产生所述诊断输出之前生成一个或更多个第一中间值;利用所述第一部分针对所述一个或更多个第一中间值生成一个或更多个第一错误检测值;以及当所述一个或更多个第一错误检测值与预定的错误检测数据不匹配时,使用所述第一部分确定已经发生故障。
14.如条款13所述的方法,进一步包括:当确定已经发生故障时,利用所述第一部分向所述电路的第二部分发送通知。
15.如条款13或14所述的方法,其中所述第一部分包括用于生成所述一个或更多个第一错误检测值的一个或更多个错误检测块,并且所述方法进一步包括:在所述一个或更多个错误检测块生成所述一个或更多个第一错误检测值之后,禁用所述一个或更多个错误检测块。
16.如条款13-15中任一项所述的方法,进一步包括:利用所述电路的所述第一部分执行功能操作以产生功能输出,所述第一部分生成一个或更多个第二中间值,所述第一部分包括用于生成所述一个或更多个第一错误检测值的一个或更多个错误检测块;以及禁用所述一个或更多个错误检测块,使得不针对所述一个或更多个第二中间值生成一个或更多个第二错误检测值。
17.如条款16所述的方法,还包括:在所述一个或更多个错误检测块生成所述一个或更多个第一错误检测值之前,启用所述一个或更多个错误检测块。
18.如条款13-17中任一项所述的方法,进一步包括:对于所述一个或更多个第一中间值中的至少一个第一中间值:生成错误检测码作为所述一个或更多个第一错误检测值中的一个第一错误检测值,并且将所述错误检测码作为第一值存储在第一存储器位置中;将所述预定的错误检测数据的一部分作为第二值存储在第二存储器位置中;通过将所述第一值与所述第二值进行比较来获得比较结果;以及将所述比较结果存储在由所述电路的所述第一部分的至少一个处理器可访问的第三存储器位置中,所述至少一个处理器至少部分地基于所述比较结果来确定是否已经发生故障。
19.如条款13-18中任一项所述的方法,进一步包括:通过模拟由所述第一部分对所述诊断操作的执行来生成所述预定的错误检测数据。
20.一种***,包括:用于执行操作的多个电路,所述多个电路中的一个或更多个电路包括多个子电路,所述多个子电路用于生成输出并且通过针对所述输出生成错误检测值并且确定所述错误检测值是否与预定的错误检测值相匹配来检测在所述操作执行期间是否已发生故障。
21.如条款20所述的***,进一步包括***控制器,其中所述一个或更多个电路中的至少一个电路包括至少一个处理器,所述至少一个处理器用于从所述***控制器接收指令以执行所述操作的一部分,所述至少一个电路的所述至少一个处理器用于指示所述至少一个电路的所述多个子电路中的至少一个子电路在所述至少一个处理器接收到生成所述子电路的输出的指令之后执行至少一个子操作,所述至少一个电路的所述至少一个处理器用于在所述至少一个处理器获得指示已经发生所述故障的信息时,将所述至少一个电路的所述多个子电路中的故障源子电路标识为故障源,以及所述至少一个电路的所述至少一个处理器将所述故障源通知给所述***控制器。
22.如条款20或21所述的***,进一步包括:***控制器,所述***控制器用于指示多个电路执行诊断操作或功能操作作为所述操作,所述一个或更多个电路中的至少一个电路用于在所述至少一个电路的所述多个子电路中的至少一个子电路检测到故障时,向所述***控制器发送故障通知。
23.如条款20-22中任一项所述的***,进一步包括:多个硬件加速器,所述多个硬件加速器包括所述多个电路。
24.如条款20-23中任一项所述的***,其中所述多个电路用于实现处理管线。
25.如条款24所述的***,其中所述处理管线是计算机视觉管线。
26.如条款20-25中任一项所述的***,进一步包括:自主车辆,所述自主车辆包括所述多个电路。
27.如条款26所述的***,其中所述多个电路包括视频输入(“VI”)电路、图像传感器处理器(“ISP”)电路、视频图像合成(“VIC”)电路、光流加速器(“OFA”)电路、可编程视觉加速器(“PVA”)电路、或深度学习加速器(“DLA”)电路中的至少一个。
28.如条款20-27中任一项所述的***,进一步包括:电气设备,所述电气设备包括所述多个电路。
29.如条款20-28中任一项所述的***,其中所述操作是诊断操作,以及所述多个电路用于在所述一个或更多个电路中的至少一个电路的所述多个子电路在功能操作执行期间没有检测到是否已发生故障的情况下执行所述功能操作。
30.如条款29所述的***,进一步包括:自主车辆,所述自主车辆包括所述多个电路;以及***控制器,所述***控制器交替指示所述多个电路执行新的诊断操作和新的功能操作。
31.如条款29或30所述的***,其中所述功能操作是高级驾驶员辅助***(“ADAS”)操作。
32.如条款20-31中任一项所述的***,所述***是在单硅基板上实现的片上***。
本公开可以在由计算机或者诸如个人数字助理或其他手持式设备之类别的其他机器执行的、包括诸如程序模块之类别的计算机可执行指令的机器可使用指令或者计算机代码的一般背景下进行描述。通常,包括例程、程序、对象、组件、数据结构等等的程序模块指的是执行特定任务或者实现特定抽象数据类型的代码。本公开可以在各种各样的***配置中实践,这些配置包括手持式设备、消费电子器件、通用计算机、更专业的计算设备等等。本公开也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实践。
如在本文中使用的,“和/或”关于两个或更多元件的叙述应当解释为仅指一个元件或者元件组合。例如,“元件A、元件B和/或元件C”可以包括仅仅元件A,仅仅元件B,仅仅元件C,元件A和元件B,元件A和元件C,元件B和元件C,或者元件A、B和C。此外,“元件A或元件B中的至少一个”可以包括元件A中的至少一个,元件B中的至少一个,或者元件A中的至少一个和元件B中的至少一个。进一步,“元件A和元件B中的至少一个”可以包括元件A中的至少一个,元件B中的至少一个,或者元件A中的至少一个和元件B中的至少一个。
这里详细地描述了本公开的主题以满足法定要求。然而,描述本身并非意在限制本公开的范围。相反地,本公开人已经设想到,要求保护的主题也可以以其他的方式具体化,以包括与本文中结合其他当前或未来技术描述的步骤不同的步骤或者相似的步骤的组合。而且,尽管术语“步骤”和/或“块”在本文中可以用来隐含采用的方法的不同元件,但是这些术语不应当被解释为暗示本文公开的各个步骤之中或之间的任何特定顺序,除非明确描述了各步骤的顺序。

Claims (32)

1.一种***,包括:
第一电路,所述第一电路包括多个子块,以在所述多个子块执行与预定的错误检测数据相关联的诊断操作时生成输出数据;以及
第二电路,所述第二电路包括多个错误检测块,以针对所述输出数据生成一个或更多个错误检测值并且将所述一个或更多个错误检测值与所述预定的错误检测数据进行比较。
2.如权利要求1所述的***,其中所述多个子块中的两个或更多个子块被串联地布置,以共同地执行功能操作,其中所述两个或更多个子块中的每一个子块执行所述功能操作的至少一部分,以及
其中所述两个或更多个子块在不同的时间执行所述诊断操作和所述功能操作。
3.如权利要求2所述的***,其中所述预定的错误检测数据包括多个值,
所述输出数据包括多个部分,所述输出数据的至少两个部分由所述多个子块中的不同子块输出,以及
所述多个错误检测块用于:针对所述多个部分中的至少一个部分生成所述一个或更多个错误检测值中的至少一个错误检测值,并且将所述错误检测值中的所述至少一个错误检测值与所述多个值中的不同的值进行比较。
4.如权利要求1所述的***,用于与***控制器一起使用,所述***进一步包括:
至少一个处理器,所述至少一个处理器用于将至少一个错误检测值与所述预定的错误检测数据进行比较以产生至少一个比较结果,所述至少一个处理器用于确定所述至少一个比较结果是否指示已经发生故障,并且当所述至少一个处理器确定已经发生故障时,通知所述***控制器。
5.如权利要求4所述的***,与存储预定输入数据的外部存储器***一起使用,所述***进一步包括:
本地存储器;以及
第三电路,所述第三电路包括存储器访问块,所述至少一个处理器引导所述存储器访问块从所述外部存储器***获得所述预定输入数据并将所述预定输入数据存储在所述本地存储器中,所述多个子块中的至少一个子块从所述本地存储器获得所述预定输入数据,所述多个子块通过处理所述预定输入数据来生成所述输出数据,以及所述存储器访问块将所述输出数据存储在所述外部存储器***中。
6.如权利要求5所述的***,进一步包括:
第四电路,所述第四电路包括至少一个第一错误检测块,所述至少一个第一错误检测块用于针对从所述外部存储器***获得的所述预定输入数据生成至少一个第一错误检测值,并且将所述至少一个第一错误检测值与所述预定的错误检测数据的第一部分进行比较;以及
第五电路,所述第五电路包括至少一个第二错误检测块,所述至少一个第一错误检测块用于在所述输出数据被存储在所述外部存储器***中之前针对所述输出数据生成至少一个第二错误检测值,并且将所述至少一个第二错误检测值与所述预定的错误检测数据的第二部分进行比较。
7.如权利要求1所述的***,其中所述多个错误检测块中的至少一个错误检测块将通过对由所述多个子块中的不同子块生成的输出执行循环冗余校验来生成所述一个或更多个错误检测值中的至少一个错误检测值。
8.如权利要求1所述的***,其中所述预定的错误检测数据通过离线模拟生成,并且所述多个错误检测块中的至少一个错误检测块包括:
第一存储器位置,所述第一存储器位置用于存储所述预定的错误检测数据的至少一部分;
第二存储器位置,所述第二存储器位置用于存储由所述错误检测块生成的所述一个或更多个错误检测值中的特定错误检测值;以及
比较电路,所述比较电路用于比较由所述第一存储器位置和所述第二存储器位置存储的值,从而将所述特定错误检测值与所述预定的错误检测数据的所述部分进行比较。
9.如权利要求8所述的***,其中所述多个错误检测块中的每个错误检测块包括:
第三存储器位置,所述第三存储器位置用于存储指令,所述指令用于指示所述错误检测块的所述比较电路比较由所述错误检测块的所述第一存储器位置和所述第二存储器位置存储的值。
10.如权利要求1所述的***,其中所述诊断操作包括永久故障软件诊断(“PFSD”)任务。
11.如权利要求1所述的***,进一步包括:
自主车辆,所述自主车辆包括所述第一电路和所述第二电路。
12.如权利要求11所述的***,其中所述自主车辆包括计算机视觉管线,所述计算机视觉管线包括所述第一电路和所述第二电路。
13.一种方法,包括:
利用电路的第一部分执行诊断操作以产生诊断输出,所述第一部分在产生所述诊断输出之前生成一个或更多个第一中间值;
利用所述第一部分针对所述一个或更多个第一中间值生成一个或更多个第一错误检测值;以及
当所述一个或更多个第一错误检测值与预定的错误检测数据不匹配时,使用所述第一部分确定已经发生故障。
14.如权利要求13所述的方法,进一步包括:
当确定已经发生故障时,利用所述第一部分向所述电路的第二部分发送通知。
15.如权利要求13所述的方法,其中所述第一部分包括用于生成所述一个或更多个第一错误检测值的一个或更多个错误检测块,并且所述方法进一步包括:
在所述一个或更多个错误检测块生成所述一个或更多个第一错误检测值之后,禁用所述一个或更多个错误检测块。
16.如权利要求13所述的方法,进一步包括:
利用所述电路的所述第一部分执行功能操作以产生功能输出,所述第一部分生成一个或更多个第二中间值,所述第一部分包括用于生成所述一个或更多个第一错误检测值的一个或更多个错误检测块;以及
禁用所述一个或更多个错误检测块,使得不针对所述一个或更多个第二中间值生成一个或更多个第二错误检测值。
17.如权利要求16所述的方法,进一步包括:
在所述一个或更多个错误检测块生成所述一个或更多个第一错误检测值之前,启用所述一个或更多个错误检测块。
18.如权利要求13所述的方法,进一步包括:对于所述一个或更多个第一中间值中的至少一个第一中间值:
生成错误检测码作为所述一个或更多个第一错误检测值中的一个第一错误检测值,并且将所述错误检测码作为第一值存储在第一存储器位置中;
将所述预定的错误检测数据的一部分作为第二值存储在第二存储器位置中;
通过将所述第一值与所述第二值进行比较来获得比较结果;以及
将所述比较结果存储在由所述电路的所述第一部分的至少一个处理器可访问的第三存储器位置中,所述至少一个处理器至少部分地基于所述比较结果来确定是否已经发生故障。
19.如权利要求13所述的方法,进一步包括:
通过模拟由所述第一部分对所述诊断操作的执行来生成所述预定的错误检测数据。
20.一种***,包括:
用于执行操作的多个电路,所述多个电路中的一个或更多个电路包括多个子电路,所述多个子电路用于生成输出并且通过针对所述输出生成错误检测值并且确定所述错误检测值是否与预定的错误检测值相匹配来检测在所述操作执行期间是否已发生故障。
21.如权利要求20所述的***,进一步包括***控制器,其中所述一个或更多个电路中的至少一个电路包括至少一个处理器,所述至少一个处理器用于从所述***控制器接收指令以执行所述操作的一部分,
所述至少一个电路的所述至少一个处理器用于指示所述至少一个电路的所述多个子电路中的至少一个子电路在所述至少一个处理器接收到生成所述子电路的输出的指令之后执行至少一个子操作,
所述至少一个电路的所述至少一个处理器用于在所述至少一个处理器获得指示已经发生所述故障的信息时,将所述至少一个电路的所述多个子电路中的故障源子电路标识为故障源,以及
所述至少一个电路的所述至少一个处理器将所述故障源通知给所述***控制器。
22.如权利要求20所述的***,进一步包括:
***控制器,所述***控制器用于指示多个电路执行诊断操作或功能操作作为所述操作,所述一个或更多个电路中的至少一个电路用于在所述至少一个电路的所述多个子电路中的至少一个子电路检测到故障时,向所述***控制器发送故障通知。
23.如权利要求20所述的***,进一步包括:
多个硬件加速器,所述多个硬件加速器包括所述多个电路。
24.如权利要求20所述的***,其中所述多个电路用于实现处理管线。
25.如权利要求24所述的***,其中所述处理管线是计算机视觉管线。
26.如权利要求20所述的***,进一步包括:
自主车辆,所述自主车辆包括所述多个电路。
27.如权利要求26所述的***,其中所述多个电路包括视频输入(“VI”)电路、图像传感器处理器(“ISP”)电路、视频图像合成(“VIC”)电路、光流加速器(“OFA”)电路、可编程视觉加速器(“PVA”)电路、或深度学习加速器(“DLA”)电路中的至少一个。
28.如权利要求20所述的***,进一步包括:
电气设备,所述电气设备包括所述多个电路。
29.如权利要求20所述的***,其中所述操作是诊断操作,以及
所述多个电路用于在所述一个或更多个电路中的至少一个电路的所述多个子电路在功能操作执行期间没有检测到是否已发生故障的情况下执行所述功能操作。
30.如权利要求29所述的***,进一步包括:
自主车辆,所述自主车辆包括所述多个电路;以及
***控制器,所述***控制器交替指示所述多个电路执行新的诊断操作和新的功能操作。
31.如权利要求29所述的***,其中所述功能操作是高级驾驶员辅助***(“ADAS”)操作。
32.如权利要求20所述的***,所述***是在单硅基板上实现的片上***。
CN202280072419.0A 2022-04-29 2022-04-29 检测数据处理管线中的硬件故障 Pending CN118251660A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2022/090219 WO2023206346A1 (en) 2022-04-29 2022-04-29 Detecting hardware faults in data processing pipelines

Publications (1)

Publication Number Publication Date
CN118251660A true CN118251660A (zh) 2024-06-25

Family

ID=88512102

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280072419.0A Pending CN118251660A (zh) 2022-04-29 2022-04-29 检测数据处理管线中的硬件故障

Country Status (4)

Country Link
US (1) US20230350744A1 (zh)
CN (1) CN118251660A (zh)
DE (1) DE102023132823A1 (zh)
WO (1) WO2023206346A1 (zh)

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58105500A (ja) * 1981-11-23 1983-06-23 スペリ・コ−ポレ−シヨン メモリ駆動回路故障検出システム及び方法
US5168499A (en) * 1990-05-02 1992-12-01 California Institute Of Technology Fault detection and bypass in a sequence information signal processor
US6732300B1 (en) * 2000-02-18 2004-05-04 Lev Freydel Hybrid triple redundant computer system
US6587970B1 (en) * 2000-03-22 2003-07-01 Emc Corporation Method and apparatus for performing site failover
US20030051186A1 (en) * 2001-09-11 2003-03-13 Sun Microsystems, Inc. Methods to restore tests execution after unexpected crashes for use in a distributed test framework
DE10302456A1 (de) * 2003-01-23 2004-07-29 Robert Bosch Gmbh Vorrichtung für sicherheitskritische Anwendungen und sichere Elektronik-Architektur
US7409594B2 (en) * 2004-07-06 2008-08-05 Intel Corporation System and method to detect errors and predict potential failures
US7320114B1 (en) * 2005-02-02 2008-01-15 Sun Microsystems, Inc. Method and system for verification of soft error handling with application to CMT processors
JP5179726B2 (ja) * 2006-06-27 2013-04-10 マーベル ワールド トレード リミテッド 半導体デバイス
JP2009223506A (ja) * 2008-03-14 2009-10-01 Fujitsu Ltd データ処理システム
US8069367B2 (en) * 2009-05-05 2011-11-29 Lockheed Martin Corporation Virtual lock stepping in a vital processing environment for safety assurance
US8499193B2 (en) * 2010-07-30 2013-07-30 Honeywell International Inc. Integrated dissimilar high integrity processing
US9063574B1 (en) * 2012-03-14 2015-06-23 Amazon Technologies, Inc. Motion detection systems for electronic devices
US9047184B2 (en) * 2012-07-13 2015-06-02 Arm Limited Processing error detection within pipeline circuitry
JP6217086B2 (ja) * 2013-01-28 2017-10-25 日本電気株式会社 情報処理装置、エラー検出機能診断方法およびコンピュータプログラム
EP2759939B1 (de) * 2013-01-29 2016-06-08 dSPACE digital signal processing and control engineering GmbH Verfahren zum Manipulieren einer Speicheroperation eines Steuergeräteprogramms auf einen virtuellen oder realen Speicher
KR20140134376A (ko) * 2013-05-14 2014-11-24 한국전자통신연구원 오류감지가 가능한 프로세서 및 이를 이용한 프로세서 코어 오류 감지 방법
JP6496562B2 (ja) * 2014-04-11 2019-04-03 ルネサスエレクトロニクス株式会社 半導体装置、診断テスト方法及び診断テスト回路
US10656992B2 (en) * 2014-10-22 2020-05-19 Cavium International Apparatus and a method of detecting errors on registers
CN105843699B (zh) * 2015-02-02 2019-06-04 国际商业机器公司 用于错误监视与校正的动态随机存取存储器设备与方法
US11644834B2 (en) * 2017-11-10 2023-05-09 Nvidia Corporation Systems and methods for safe and reliable autonomous vehicles
US10606678B2 (en) * 2017-11-17 2020-03-31 Tesla, Inc. System and method for handling errors in a vehicle neural network processor
US11335428B2 (en) * 2018-10-09 2022-05-17 Intel Corporation Methods, systems and apparatus for in-field testing for generic diagnostic components
CN109710682A (zh) * 2018-12-31 2019-05-03 深圳市道通科技股份有限公司 一种诊断数据处理方法、装置、诊断设备和服务器
US10911181B2 (en) * 2019-04-02 2021-02-02 Hangzhou Fabu Technology Co., Ltd. Method for checking address and control signal integrity in functional safety applications, related products
GB2583509B (en) * 2019-05-01 2023-02-22 Advanced Risc Mach Ltd System and method for fault detection and correction
EP4096978A4 (en) * 2020-02-21 2024-03-06 Bluespace AI, Inc. METHOD FOR OBJECT AVOIDANCE DURING AUTONOMOUS NAVIGATION

Also Published As

Publication number Publication date
WO2023206346A1 (en) 2023-11-02
US20230350744A1 (en) 2023-11-02
DE102023132823A1 (de) 2024-06-06

Similar Documents

Publication Publication Date Title
US20240078363A1 (en) Virtual environment scenarios and observers for autonomous machine applications
US11966673B2 (en) Sensor simulation and learning sensor models with generative machine learning methods
CN111919225B (zh) 使用模拟环境对自主机器进行培训、测试和验证
CN113056749B (zh) 用于自主机器应用的未来对象轨迹预测
CN113139642B (zh) 在自主驾驶应用中使用神经网络执行故障检测
CN112989914B (zh) 具有自适应加权输入的注视确定机器学习***
WO2021138010A1 (en) Three-dimensional intersection structure prediction for autonomous driving applications
WO2020163390A1 (en) Driving lane perception diversity and redundancy in autonomous driving applications
CN113597613A (zh) 用于图像分析的形状融合
CN113632091A (zh) 迭代空间图生成
US20220297706A1 (en) Combining rule-based and learned sensor fusion for autonomous systems and applications
CN115599460A (zh) 用于优化自主车辆的启动过程的状态暂停
US20220340149A1 (en) End-to-end evaluation of perception systems for autonomous systems and applications
CN115701623A (zh) 自主机器应用中范围图像映射的置信传播
JP2023001859A (ja) 駐車に適した車両進路計画立案の並列処理
CN115840438A (zh) 用于自主***中的路径确定的安全性分解
CN118119981A (zh) 用于自主***和应用的使用机器学习的自由空间检测
US20230360232A1 (en) Object tracking and time-to-collision estimation for autonomous systems and applications
US12039362B2 (en) Processing interrupt requests for autonomous systems and applications
CN117581117A (zh) 自主机器***和应用中使用LiDAR数据的动态对象检测
CN116772874A (zh) 用于自主***和应用的使用占用网格进行危险检测
CN116106905A (zh) 基于雷达的变道安全***
CN117396926A (zh) 用于自主机器***和应用的基于感知的标志检测和解释
WO2023206346A1 (en) Detecting hardware faults in data processing pipelines
US20230391365A1 (en) Techniques for generating simulations for autonomous machines and applications

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination