掌桥专利:专业的专利平台
掌桥专利
首页

将故障传送至片上系统的隔离安全区

文献发布时间:2023-06-19 18:32:25


将故障传送至片上系统的隔离安全区

本申请要求提交于2021年7月30日的、题为“将故障传送至片上系统的隔离安全区(COMMUNICATING FAULTS TO ANISOTED SAFETY REGION OF A SYSTEM ON A CHIP)”的印度临时申请No.202111034493的权益,其全部内容通过引用并入本文。

技术领域

至少一个实施例涉及将在电路的一个区域中产生的故障传送到该电路的另一区域。例如,至少一个实施例涉及实现本文描述的各种新技术的片上系统。作为另一示例,至少一个实施例涉及包括这种片上系统的自主车辆。

背景技术

汽车安全完整性等级(“ASIL”)是由国际标准化组织(“ISO”)26262功能安全标准定义的道路车辆功能安全的风险分类系统。该风险分类系统中具有标识为ASIL-A、ASIL-B、ASIL-C、ASIL-D四个风险分类级别,其中ASIL-D为最高风险分类级别。因此,指定为ASIL-D的组件比指定为具有较低风险分类级别的组件(例如ASIL-B)具有更高的安全要求,并且可能更昂贵。在许多汽车平台中,当在控制自主或半自主车辆的各种驾驶功能的汽车片上系统(“SoC”)中检测到特定故障时,至少一些安全服务由外部控制单元执行。一般来说,外部控制单元可在比汽车SoC(例如ASIL-B)更高的风险级别(例如ASIL-D)下操作。不幸的是,这样的外部控制单元会引入延时并且可能是昂贵的,因为它们需要汽车SoC中也存在的单独组件,例如DRAM、非易失性存储器等,并且每个单独组件都占用汽车平台内的空间(例如,在电路板上)。

附图说明

下面参考附图详细描述用于隔离片上系统的区域的本系统和方法,其中:

图1是根据本公开的一些实施例的示例汽车平台的图示;

图2是根据本公开的一些实施例的连接集成到汽车SoC中的安全岛与该汽车SoC的其他组件的示例接口的图示;

图3是根据本公开的一些实施例的示出用于在茧(cocoon)模式和非隔离模式之间转换安全岛的方法的流程图。

图4是根据本公开的一些实施例的从汽车SoC的其他组件向安全岛传送故障的示例故障接口的图示;

图5A是根据本公开的一些实施例的示出用于向安全岛传送故障的方法的流程图;

图5B是根据本公开的一些实施例的示出处理器可以用来处理从SoC故障聚合器接收的中断的方法的流程图;

图5C是根据本公开的一些实施例的示出SI 110可以用来处理经校正和未校正的错误信号的方法的流程图;

图5D是根据本公开的一些实施例的示出SI 110可以用来处理SoC故障聚合器信号的方法的流程图;

图6A示出了根据本公开的一些实施例的在低严重性未校正错误(例如最小值)已经被断言之后由安全岛的处理器接收和发送的信号的示例信号时序图;

图6B示出了根据本公开的一些实施例的在高严重性未校正错误(例如最大值)已经被断言之后由安全岛的处理器接收和发送的信号的示例信号时序图;

图6C示出了根据本公开的一些实施例的在未校正错误(例如最大值)已被断言但安全岛未接收到邮箱中断之后由安全岛的处理器接收和发送的信号的示例信号时序图;

图7是示出了根据本公开的一些实施例的将数据写入由汽车SoC的其他组件和安全岛共享的易失性存储器中定义的保留区(carve-out)的方法的流程图;

图8示出了根据本公开的一些实施例的执行图7的方法的安全岛的检错块的示例;

图9是根据本公开的一些实施例的示出了用于从分离中读取数据的方法的流程图;

图10示出了根据本公开的一些实施例的执行图9的方法的安全岛的检错块的示例;

图11是根据本公开的一些实施例的示出了当检错块包括或被连接到出口和入口定时器时由检错块生成的错误通知的框图的图示;

图12是根据本公开的一些实施例的示例自主车辆的图示;

图13是根据本公开的一些实施例的图12的示例自主车辆的相机位置和视野的示例;

图14是根据本公开的一些实施例的图12的示例自主车辆的示例系统架构的框图;

图15是根据本公开的一些实施例的用于在基于云的一个或更多个服务器与图12的示例自主车辆之间通信的系统图;以及

图16是适合用于实现本公开的一些实施例的示例计算设备的框图。

具体实施方式

所公开的系统和方法涉及将在较高风险级别(例如,ASIL-D)下运行的电路区域与在较低风险级别(例如,ASIL-B)下运行的该电路的其他区域隔离开。例如,专用于功能安全的区域或“岛”可以与片上系统(“SoC”)上的其他组件(例如汽车SoC)(例如,通信地)隔离。图1是根据至少一个实施例的示例汽车平台100的图示。汽车平台100可以实现自主或半自主车辆,例如示例自主车辆1200(见图12)。汽车平台100包括汽车处理系统102,其可以实现大于由汽车工程师协会(“SAE”)定义的级别0(无驾驶自动化)的驾驶自主性级别。例如,汽车处理系统102可以实现由SAE定义的2级(部分驾驶自动化)到5级(完全驾驶自动化)。2级系统可称为高级驾驶员辅助系统(“ADAS”)。

汽车处理系统102包括至少一个汽车SoC 104。该汽车SoC 104执行至少一些功能,但可以将一个或更多个安全功能卸载到可选的外部控制单元106(例如,包括外部ASIL-D微控制器单元)。可选的外部控制单元106可以在比汽车SoC 104更高的风险分类级别(例如,ASIL-D)下操作并符合其要求。在包括可选的外部控制单元106的实施例中,当故障发生在汽车SoC 104中时,该故障被传送到可选的外部控制单元106,其可以采取一个或更多个动作以使汽车平台100返回到安全状态。因此,至少一部分的安全功能可以由可选的外部控制单元106执行。然而,可选的外部控制单元106可能会引入延时并且可能很昂贵,因为它可能需要单独的组件,例如DRAM、非易失性存储器等,每个单独的组件都占用汽车平台100内的空间(例如,电路板上的)。

为了避免由可选的外部控制单元106引入的至少一些延时和费用,图1的汽车平台100包括集成到汽车SoC 104中的功能安全岛或安全岛(“SI”)110。该SI 110可以实现为与汽车SoC 104的其余部分相比在更高风险分类级别(例如,ASIL-D)下操作并且与其相符的计算集群。SI 110可以执行通常由可选的外部控制单元106执行的功能的至少一部分。SI110的存在允许可选的外部控制单元106被完全省略或使用不太复杂和/或较低成本的外部控制单元实现。例如,当可选的外部控制单元106存在时,它可以执行一个或更多个传统功能,例如在控制器局域网(“CAN”总线)总线上提供通信,为汽车SoC 104提供重置控制器,和/或执行板载电压监测。

除了汽车SoC 104和可选的外部控制单元106(当存在时)之外,汽车处理系统102还可以包括用于汽车SoC 104的第一(SoC)时钟112、用于SI 110的第二(SI)时钟114和电源管理集成电路(“IC”)116。汽车处理系统102的每个组件至少部分地以硬件实现。汽车处理系统102的逻辑组件(例如,汽车SoC 104和可选的外部控制单元106)各自通常在一个或更多个集成电路芯片内的硬件逻辑电路中实现。该逻辑可以是硬接线或可编程的,或者是硬接线和可编程元件的组合。另外或替代地,汽车处理系统102的某些功能可以在由嵌入式微处理器或微控制器执行的软件或固件中实现。

第一和第二时钟112和114向汽车SoC 104提供两个单独的时钟信号。具体地,由第一(SoC)时钟112生成的第一时钟信号被提供给汽车SoC 104的组件160,而不是SI 110,并且由第二(SI)时钟114生成的第二时钟信号被提供给SI 110。因此,SI 110和其他组件160可以被表征为在单独的时钟域内操作。SI 110的时钟域将被称为SI时钟域,而其他组件160的时钟域将被称为SoC时钟域。第一和第二时钟112和114中的每一个可以至少部分地被实现为晶体振荡器。第一(SoC)时钟112可以经由第一时钟连接(未示出),例如电线、信号迹线等,连接到汽车SoC 104的至少一些其他组件160中的每一个。因此,第一(SoC)时钟112可以经由第一时钟连接(未示出)将第一时钟信号提供给汽车SoC 104的其他组件160。第二(SI)时钟114可以经由第二时钟连接(未示出),例如导线、信号迹线等,连接到SI 110的至少一些组件中的每一个。因此,第二(SI)时钟114可以经由第二时钟连接(未示出)向SI 110提供第二时钟信号。

电源管理IC 116向汽车处理系统102的其他组件供电。例如,电源轨或连接118A-118C将电源管理IC 116分别连接到汽车SoC 104的其他组件160、SI 110和可选的外部控制单元106。电源连接118A-118C分别有助于将汽车SoC 104的其他组件160、SI 110和可选的外部控制单元106(当存在时)彼此电隔离。因此,SI 110可以在与其他组件160和可选的外部控制单元106(当存在时)分开的电压域内操作。SI 110的电压域将被称为SI电压域,而其他组件160的电压域将被称为SoC电压域。电源管理IC 116可以实现为一个或更多个集成电路,其为汽车处理系统102的组件提供足够的电力。电源连接118A-118C每个都可以实现为导电元件,例如电传输线、电线、电源迹线等。

如上,SI 110在SI时钟域和SI电压域中操作。SI时钟域和SI电压域将一起称为SI域。类似地,其他组件160在SoC时钟域和SoC电压域中操作。SoC时钟域和SoC电压域将一起称为SoC域。

汽车SoC 104的其他组件160可以包括主中央处理单元(“CPU”)复合体120、辅助安全单元122、用于执行汽车SoC功能的电路124、易失性数据存储器或内存126(例如,动态随机存取存储器(“DRAM”))和非易失性数据存储器或内存128。主CPU复合体120可以实现为在ASIL-B下操作的一个或更多个处理器。在这样的实施例中,汽车SoC 104可以在多个或混合ASIL下操作,因为SI 110可以在更高级别的ASIL(例如,ASIL-D)下操作。作为非限制性示例,电路124可以包括实现一个或更多个显示器、一个或更多个汽车输入/输出(“I/O”)控制器、一个或更多个存储器控制器、一个或更多个互连等的硬件。在所示实施例中,电路124被描绘为包括或实现多个逻辑块LB(1)-LB(N),它们通常各自被称为知识产权“IP”。逻辑块LB(1)-LB(N)可以在自主车辆(例如,图12中所示的自主车辆1200)内实现各种功能。

可选的外部控制单元106可以包括控制器130、故障聚合器132、易失性数据存储器或内存136(例如,DRAM)和非易失性数据存储器或内存138。可选的外部控制单元106还可以包括一个或更多个逻辑块(未示出),这些逻辑块实现由可选的外部控制单元106执行的那些安全功能。控制器130可以实现为在ASIL-D下操作的一个或更多个处理器(例如,微控制器)。控制器130执行存储在非易失性存储器138中的指令,例如符合一种或更多种汽车开放系统架构(“AUTOSAR”)软件标准的指令。该指令可以指示控制器130在故障聚合器132接收到来自汽车SoC 104的故障时采取适当的动作。

在一个或更多个实施例中,SI 110包括处理器140、中断控制器141、SI故障聚合器142、易失性数据存储器或内存146(例如,静态随机存取存储器(“SRAM”)),以及一个或更多个逻辑块148。处理器140可以被实现为处理器集群,例如高度额定的ASIL-D安全处理器。处理器140执行在启动时从非易失性存储器128获得并存储在易失性存储器146中的指令149,例如符合AUTOSAR软件标准的指令。指令149可以指示处理器140在SI故障聚合器142从汽车SoC 104的其他组件160接收到故障时采取适当的动作。逻辑块148可以帮助实现由SI 110执行的那些安全功能。

辅助安全单元122可以被实现为实时安全辅助处理单元和/或可以被额定为ASIL-B或更高。换言之,辅助安全单元122可以在与SoC域内的其他组件相同的风险分类级别或更高的风险分类级别下操作。辅助安全单元122包括处理器150、一个或更多个SoC故障聚合器152、中断控制器154和一个或更多个逻辑块,它们将被称为一个或更多个邮箱(mailbox)156。SI故障聚合器142和故障聚合器132(当存在时)可以各自从SoC故障聚合器152接收故障。因此,SoC故障聚合器152可以经由一个或更多个故障接口170连接到故障聚合器132,并且经由一个或更多个故障接口172连接到SI故障聚合器142。故障接口170和172中的每一个都包括将每个SoC故障聚合器152物理地连接到故障聚合器132或SI故障聚合器142中的相应聚合器的连接,例如电线、信号迹线等。

一个或更多个邮箱156可以包括处理器150向其写入并且处理器140从其读取的第一邮箱和处理器140向其写入并且处理器150从其读取的第二邮箱。一个或更多个邮箱156可由处理器150(例如,额定在ASIL-B或更高的中央处理单元(“CPU”))使用以向中断控制器141报告邮箱中断并从中断控制器141接收中断。因此,故障接口172包括将一个或更多个邮箱156连接到中断控制器141的至少一个信号导体。每个邮箱中断包括指示错误的严重性的严重性标识符。作为非限制性示例,严重性标识符可以是范围从最小值(例如,零)到最大值(例如,七)的数值。作为另一个非限制性示例,中断可以具有被先验编码以指示严重性的中断号。处理器140和/或处理器150可以将故障信息写入邮箱156。故障信息包括关于产生故障的错误的信息(例如发生错误的逻辑块名称)、逻辑块诊断标识符、故障性质、严重性标识符等。

将SI 110集成到汽车SoC 104中可以允许从汽车处理系统102中省略若干单独的组件(例如,易失性存储器136和非易失性存储器138),如果可选的外部控制单元106也被省略的话。然而,必须将SI 110与汽车SoC104的其他组件160(例如,主CPU复合体120、辅助安全单元122、电路124、易失性存储器126和非易失性存储器128)隔离开来,如此出现在一个或更多个其他组件160中的潜在问题就不会对SI 110产生负面影响。例如,这种隔离可以帮助防止SI 110受到汽车SoC 104的一个或更多个其他组件160中发生的中断(outage)的影响。可能在一个或更多个其他组件160中发生的中断的类型的非限制性示例包括随机故障、时钟问题、电源问题和/或电压问题。由于空间接近以及SI 110与汽车SoC 104的其他组件160共享的一个或更多个接口200(参见图2),此类中断可能迁移到SI 110并阻止SI 110执行回退和/或将SI 110集成到汽车SoC 104中的故障保护功能。因此,汽车处理系统102将SI110与汽车SoC 104的其他组件160隔离,以实现与汽车SoC 104和可选的外部控制单元106之间的隔离相当的隔离。这种隔离可以由第一和第二时钟112和114、第一和第二电源连接118A和118B以及接口200来实现。

第一(SoC)时钟112与第二(SI)时钟114(例如,包括单独的参考晶体)分离,这有助于将SI 110与汽车SoC 104的其他组件160隔离。同样地,第一电源连接118A与第二电源连接118B隔离,这有助于将SI 110与汽车SoC 104的其他组件160隔离。如上,SI 110可以在与汽车SoC 104的其他组件160分离的SI电压域中操作。但是,即使使用单独的第二(SI)时钟114和单独的第二电源连接118B,SI 110经由接口200(参见图2)与汽车SoC 104的其他组件160通信。

一个或更多个逻辑块148包括连接到专用第二(SI)时钟114的时钟和重置电路230(见图2)。专用第二(SI)时钟114可以用作用于时钟和重置电路230的参考时钟。例如,时钟和重置电路230可以包括内部专用锁相环(“PLL”),其用于导出SI 110的其他功能和调试时钟。作为非限制性示例,时钟和重置电路230可以提供源自于PLL的调试时钟信号和测试时钟信号。时钟和重置电路230可以产生在SI 110内使用的所有时钟和重置信号。换句话说,时钟和重置电路230可以产生在SI域内使用的时钟信号和重置。附加地或替代地,第二(SI)时钟114可以直接用作逻辑块148中的一个或更多个逻辑块的功能时钟。以这种方式,SI110使用本地生成的时钟信号和重置和/或由第二(SI)时钟114提供的时钟信号。在SI 110中不使用来自其他组件160的时钟信号或重置。时钟和重置电路230有助于确保其他组件160内没有来自逻辑生成重置的干扰(例如,重置块)将到达SI 110的组件。

图2是根据至少一个实施例的将SI 110与汽车SoC 104的其他组件160连接的一个或更多个接口200的图示。参见图2,一个或更多个接口200为汽车SoC 104中的SI 110的电路和逻辑提供逻辑隔离。在所示实施例中,一个或更多个接口200包括一个或更多个故障接口172、易失性存储器接口200A、第一控制主干接口200B、第二控制主干接口200C、安全内容接口200D、调试接口200E和测试接口200F。一个或更多个故障接口172可以不与一个或更多个SoC故障聚合器152逻辑隔离,但可以各自通过或包括一个或更多个电压电平移位器240,每个电压电平移位器240在SI电压域和SoC电压域之间提供电隔离。虽然电压电平移位器240每个都提供电隔离,但电压电平移位器240可不为某些类型的故障提供足够的隔离,例如中断风暴、故障风暴和/或连续断言。SI故障聚合器142可以包括一个或更多个状态位242,状态位242经由一个或更多个故障接口172接收故障信息并向由处理器140执行的指令149提供此类故障的通知。在所示实施例中,状态位242包括状态位“BT1”、“BT2”和“BT3”(见图4)。指令149指示处理器140使用该通知来减轻一个或更多个故障接口172上发生的中断。

易失性存储器接口200A是处理器140和汽车SoC 104的易失性存储器126之间的接口。易失性存储器接口200A允许处理器140将信息写入易失性存储器126并从易失性存储器126读取信息。易失性存储器接口200A包括与易失性存储器126的一个或更多个连接,例如导线、信号迹线等。易失性存储器接口200A可以包括逻辑隔离控件220、访问定时器222和域同步电路224。逻辑隔离控件220包括可以由处理器140选择性地锁定和解锁的门或锁定机制。访问定时器222允许处理器140发起的访问尝试超时。

域同步电路224包括相位同步电路和电压电平移位器。相位同步电路有助于同步跨SI和SoC域传送的信号的相位,该信号是使用单独的第一和第二时钟112和114(见图1)生成的。由时钟和重置电路230产生的重置可以由跨越SI和SoC电压和时钟域的任何元件使用,例如相位同步电路。相位同步电路具有SoC部分和SI部分,它们每个都可以用作单独的综合顶部(synthesis top)。SoC部分物理地位于SoC域中,而SI部分物理地位于SI域中。SI和SoC部分两者的逻辑都使用由时钟和重置电路230生成的重置。因此,由SI 110生成的重置可由汽车SoC 104的逻辑使用,汽车SoC 104可以低于SI 110的ASIL操作,但由汽车SoC104生成的重置不传送给SI 110并且不能由SI 110使用。作为非限制性示例,相位同步电路可以实现为分离的先入先出(“fifo”)等。域同步电路224的电压电平移位器可以基本上与电压电平移位器240相同,并且调整跨SI和SoC电压域发送的信号的电压,以允许跨SI和SoC域安全地传送信号。当访问定时器222指示处理器140的访问已经超时时,可以从域同步电路224中移除该请求(例如,从分离的先进先出中弹出)。

当易失性存储器接口200A被解锁时,处理器140可以访问易失性存储器126,这启动访问定时器222。当访问定时器222指示多于第一预定时间量已经过去并且尚未接收到来自易失性存储器126的响应时,处理器140指示安全故障,使用逻辑隔离控件220来锁定易失性存储器接口200A,可选地锁定任何解锁的接口200,并且可选地采取被配置为将汽车平台100(见图1)返回到安全状态的一个或更多个动作。另一方面,当在访问定时器222指示第一预定时间量已过去之前接收到响应时,访问定时器222重置自己,处理器140完成访问,且处理器140在访问完成后锁定易失性存储器接口200A。因此,每当处理器140不访问易失性存储器126时,易失性存储器接口200A保持锁定,这有助于保护SI 110免受从易失性存储器126传播到SI 110的故障和/或中断。

第一和第二控制主干接口200B和200C是处理器140和控制主干210之间的接口。控制主干210可以实现为总线等。第一控制主干接口200B用于从处理器140到控制主干210的通信,第二控制主干接口200C用于从控制主干210到处理器140的通信。作为非限制性示例,处理器140可以经由控制主干210访问汽车SoC 104的至少一些其他组件160(例如,电路124、一个或更多个邮箱156和非易失性存储器128)。

第一控制主干接口200B允许处理器140向控制主干210发送指令和/或信息。第一控制主干接口200B可以包括逻辑隔离控件220、访问定时器222、域同步电路224和防火墙226。第一控制主干接口200B的逻辑隔离控件220与易失性存储器接口200A的逻辑隔离控件220基本相同并且功能基本相同。因此,第一控制主干接口200B的逻辑隔离控件220允许处理器140锁定和解锁第一控制主干接口200B。第一控制主干接口200B的访问定时器222允许由处理器140发起的访问尝试超时。第一控制主干接口200B的域同步电路224与易失性存储器接口200A的域同步电路224基本相同并且功能基本相同。第一控制主干接口200B的防火墙226实现一个或更多个安全规则并且基于安全规则允许或阻止每个通信。

第二控制主干接口200C允许处理器140从控制主干210接收指令和/或信息。第二控制主干接口200C可以包括逻辑隔离控件220、域同步电路224和防火墙226。第二控制主干接口200C的逻辑隔离控件220与易失性存储器接口200A的逻辑隔离控件220基本相同并且功能基本相同。因此,第二控制主干接口200C的逻辑隔离控件220允许处理器140锁定和解锁第二控制主干接口200C。第二控制主干接口200C的域同步电路224与易失性存储器接口200A的域同步电路224基本相同并且功能基本相同。第二控制主干接口200C的防火墙226实现一个或更多个安全规则并且基于安全规则允许或阻止每个通信。

安全内容接口200D是处理器140和安全内容电路212之间的接口。安全内容接口200D允许处理器140接收来自安全内容电路212的指令和/或信息(例如,安全和/或敏感内容)。安全内容接口200D可以包括逻辑隔离控件220和域同步电路224。安全内容接口200D的逻辑隔离控件220与易失性存储器接口200A的逻辑隔离控件220基本相同并且功能基本相同。因此,安全内容接口200D的逻辑隔离控件220允许处理器140锁定和解锁安全内容接口200D。安全内容接口200D的域同步电路224与易失性存储器接口200A的域同步电路224基本相同并且功能基本相同。

调试接口200E是处理器140和调试电路214之间的接口。调试接口200E允许处理器140从调试电路214接收指令和/或信息。调试接口200E可以包括逻辑隔离控件220和域同步电路224。调试接口200E的逻辑隔离控件220与易失性存储器接口200A的逻辑隔离控件220基本相同并且功能基本相同。因此,调试接口200E的逻辑隔离控件220允许处理器140锁定和解锁调试接口200E。调试接口200E的域同步电路224与易失性存储器接口200A的域同步电路224基本相同并且功能基本相同。如上所述,SI 110和其他组件160在单独的时钟域中操作。在一个或更多个实施例中,没有来自汽车SoC 104的一个或更多个其他组件160(例如调试电路214)的外部时钟的信号被馈送到SI 110。由汽车SoC 104执行的调试功能经由调试接口200E的域同步电路224接收调试时钟信号,其切换或转换由汽车SoC 104执行的调试功能,以使用由SI 110和/或第二(SI)时钟114生成的调试时钟信号。因为在SI 110处于任务模式时(例如,当车辆行驶时)不使用调试逻辑,所以SI 110在调试时钟上包括第一时钟门,用于防止可能由调试时钟信号引起的任何干扰。作为非限制性示例,第一时钟门可以是时钟和重置电路230的组件。可以使用由处理器140设置的第一配置位来控制(例如,选择性地打开和关闭)第一时钟门。

测试接口200F是处理器140和测试电路216之间的接口。测试接口200F允许处理器140从测试电路216接收指令和/或信息。测试接口200F可以包括逻辑隔离控件220和域同步电路224。测试接口200F的逻辑隔离控件220与易失性存储器接口200A的逻辑隔离控件220基本相同并且功能基本相同。因此,测试接口200F的逻辑隔离控件220允许处理器140锁定和解锁测试接口200F。测试接口200F的域同步电路224与易失性存储器接口200A的域同步电路224基本相同并且功能基本相同。如上所述,来自汽车SoC 104的一个或更多个其他组件160(例如测试电路216)的外部信号被防止通过这种配置被馈送到SI 110中。汽车SoC104执行的测试功能经由调试接口200E的域同步电路224接收测试时钟信号,其将汽车SoC104执行的测试功能切换或转换为使用由SI 110和/或第二(SI)时钟114生成的测试时钟信号。因为在SI 110处于任务模式时(例如,当车辆行驶时)不使用测试逻辑,所以SI 110在测试时钟上包括第二时钟门,用于防止任何可能由测试时钟信号引起的干扰。作为非限制性示例,第二时钟门可以是时钟和重置电路230的组件。第二时钟门可以使用由处理器140设置的第二配置位来控制(例如,选择性地打开和关闭)。

SI 110可以具有至少两种操作模式,隔离或茧模式和非隔离模式。当SI 110在茧模式下操作时,来自汽车SoC 104的被允许进入SI 110的唯一信息是故障信息,该故障信息经由故障接口172进入SI 110。以此方式,SI故障聚合器142维护汽车SoC 104和SI 110的累积健康状态。另一方面,当SI 110在非隔离模式下操作时,信息可以经由一个或更多个接口200进入SI 110。SI 110是在茧模式下操作还是在非隔离模式下操作,至少部分地由处理器140执行的指令149确定,至少部分地由接口200确定。

为了帮助防止源自汽车SoC 104的其他组件160的潜在安全关键问题经由一个或更多个接口200到达SI 110,每个接口200包括单独的逻辑隔离控件220,其由处理器140选择性地锁定和解锁。当逻辑隔离控件220的锁定机制被处理器140锁定时,锁定机制阻止汽车SoC 104和SI 110之间经由该锁定接口的所有通信。另一方面,接口可以由处理器140解锁以允许经由该解锁接口的这种通信。因此,处理器140选择性地将SI 110置于茧模式或非隔离模式。每当所有接口200被锁定时,处理器140都不能访问易失性存储器126或非易失性存储器128,并且执行在驻留在SI 110中的易失性存储器146(例如,SRAM)中存储的指令149。

现在参考图3,本文描述的方法300的每个框包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,各种功能可以通过处理器(例如,图1、图2和图4所示的处理器140)执行存储在存储器(例如,图1、图2和图4中所示的易失性存储器146)中的指令(例如,图1、图2和图4中所示的指令149)来执行。方法300也可以体现为存储在计算机存储介质上的计算机可用指令。方法300可以由独立应用程序、服务或托管服务(独立地或与另一托管服务组合)或另一产品的插件来提供,仅举几例。此外,作为示例,方法300关于图1的汽车平台100被描述。然而,方法300可以附加地或替代地由任何一个系统或系统的任何组合来执行,包括但不限于本文描述的那些。

图3是根据本公开的一些实施例的示出用于在茧模式和非隔离模式之间转换SI110的方法300的流程图。为了便于说明,方法300将被描述为由处理器140执行(参见图1、图2和图4)。参考图3,在第一框302,处理器140确定它需要与汽车SoC 104的其他组件160(见图1和图2)之一通信。例如,该通信可以通过易失性存储器接口200A或第一控制主干接口200B发生,它们每个都允许SI 110发起与汽车SoC 104的其他组件160的通信。替代地,该通信可以通过第二控制主干接口200C、安全内容接口200D、调试接口200E或测试接口200F发生,它们每个都允许SI 110接收由汽车SoC 104的其他组件160发起的通信。如上所述,与SI110处于茧模式还是非隔离模式无关地,通信发生在故障接口172上(参见图2)。

每当处理器140需要与汽车SoC 104的其他组件160中的特定组件通信时,处理器140在尝试这样做之前确定与该特定组件通信是安全的。为了做出该确定,在框304中,处理器140可以检查SI故障聚合器142的内容,该SI故障聚合器142经由一个或更多个故障接口172(参见图2)从在SI 110外部的一个或更多个SoC故障聚合器152接收故障信息。如上所述,一个或更多个故障接口172与一个或更多个SoC故障聚合器152逻辑上没有隔离,但每个都通过或包括电压电平移位器240,电压电平移位器240提供SI和SoC电压域之间的电气隔离。

在判定框306中,处理器140确定是否已在SI故障聚合器142中检测到任何故障。当至少一个故障被检测到时,这意味着为一个或更多个其他组件160识别的故障已经被SoC故障聚合器152报告给SI故障聚合器142,则判定框306中的判定为“是”。处理器140可以使用SI故障聚合器142内的状态位242来检测故障。状态位242可以被表征为跟踪汽车SoC 104的健康状况。替代地,SI故障聚合器142可以通过向处理器140发送中断来向处理器140通知该故障。否则,当未检测到故障时,判定框306中的判定为“否”。

当判定框306中的判定为“是”时,在框308中,处理器140可以采取一个或更多个校正动作。校正动作可以帮助使车辆进入安全状态。作为非限制性示例,这样的校正动作可以包括应用车辆的制动器、降低车辆的速度、将车辆引导至路肩等。然后,处理器140可以返回到框304。

当判定框306中的判定为“否”时,在框310中,处理器140解锁一个或更多个接口200中连接到特定组件的特定接口的逻辑隔离控件220的锁定机制,如果特定接口的锁定机制被锁定的话。换言之,当SI故障聚合器142没有存储任何故障时,处理器140可以确定经由特定接口访问汽车SoC 104的特定组件是安全的。因此,处理器140在框310中解锁特定接口。

然后,在框312中,处理器140可以经由解锁的特定接口向特定组件发送通信或从特定组件接收通信,这会自动启动特定接口的访问定时器222。当特定接口被解锁时,处理器140可以启动对汽车SoC 104的一个或更多个强顺序访问(一次一个)。访问定时器222在每个访问的基础上自动启动。因此,该访问定时器222可以在处理器140一发起特定访问时就开始倒计时。

在判定框314中,处理器140确定是否已经发生超时。当访问定时器222指示已经过去了多于第一预定时间量并且尚未接收到来自特定组件的响应时,判定框314中的判定为“是”。否则,当在访问定时器222指示已经过去多于第一预定时间量之前从特定组件接收到响应时,判定框314中的判定为“否”。

当判定框314中的判定为“是”时,在框316中,处理器140指示安全故障已经发生。然后,在框318中,处理器140锁定特定接口的逻辑隔离控件220的锁定机制,可选地锁定被解锁的任何其他接口的逻辑隔离控件220的锁定机制,并且可选地采取被配置为将汽车平台100返回到安全状态的一个或更多个动作。

另一方面,当判定框314中的判定为“否”时,在框320中,处理器140完成通信。访问定时器222自动重置。然后,在框318中,处理器140锁定特定接口的锁定机制。因此,方法300确保每当处理器140不访问汽车SoC 104的其他组件160之一时接口200就保持锁定。然后,方法300终止。

SI 110可以通过当汽车SoC 104被启动时将指令149(例如,使系统进入安全状态的关键指令(critical instruction))从共享非易失性存储器128复制到其内部易失性存储器146中来避免访问共享非易失性存储器128。处理器140可以在SI 110进入任务模式之前认证和验证指令149,这实现车辆行驶循环。SI 110可以同时在任务模式和茧模式或非隔离模式下操作。指令149保留在易失性存储器146中,这允许处理器140避免访问共享的非易失性存储器128。可以使用包括在SI 110中的内部直接存储器访问(“DMA”)引擎402(参见图4)来从共享的易失性存储器126中获得非关键数据,例如应用程序代码、融合数据等。DMA引擎402可以可选地是处理器140的组件。DMA引擎402的故障将不会对处理器140产生负面影响,因为即使DMA引擎402在对从共享易失性存储器126获得的数据进行分页(paging)时失败,处理器140也将继续执行存储在易失性存储器146中的指令149。

图4是根据本公开的一些实施例的一个或更多个故障接口172的图示。参考图4,汽车SoC 104的逻辑块LB(1)到LB(N)可以分别与第一故障聚合器260-1到260-N相关联。第一故障聚合器260-1到260-N分别聚合由逻辑块LB(1)到LB(N)产生的故障,并将第一聚合故障信号发送到汽车SoC 104的辅助安全单元122。辅助安全单元122实现第二SoC故障聚合器152,其聚合从第一故障聚合器260-1到260-N接收的第一聚合故障信号并将一个或更多个第二聚合故障信号发送到可选的外部控制单元106(见图1),当存在时。当可选的外部控制单元106被第二聚合故障信号通知故障时,可选的外部控制单元106可以采取若干可能的动作中的一个或更多个动作。首先,可选的外部控制单元106可以清除故障。其次,可选的外部控制单元106可以采取校正动作。第三,可选的外部控制单元106可以通知外部系统(例如,一个或更多个外部微控制器、一个或更多个外部代理等)。但是,如上所述,在一些实施例中,可选的外部控制单元106可以被省略。

参考图1,如上所述,尽管SI 110与汽车SoC 104的其他组件160隔离,但在SI 110和汽车SoC 104的其他组件160之间至少一些通信必须被启用。特别是,在汽车SoC 104的逻辑块LB(1)到LB(N)中发生的故障必须通过故障接口172被传送到SI 110。提供这种通信的一种方法是令第一故障聚合器260-1至260-N(参见图4)将第一聚合故障信号直接发送到SI110。这样做需要故障接口172包括在SI 110和每一个第一故障聚合器260-1至260-N之间的单独的传输线或信号导体,这由SI 110与汽车SoC104的其他组件160的隔离而被复杂化。例如,参考图2,电压电平移位器240必须包括用于每个信号导体的单独的电压电平移位器。此外,SI 110与汽车SoC 104的其他组件160之间的信号导体的数量越大,SI 110就越容易受到源自汽车SoC 104的干扰。

相反,参考图4,每个SoC故障聚合器152可以通过三个信号导体连接到SI 110:(1)经校正错误信号导体410;(2)未校正的错误信号导体412;(3)SoC故障聚合器信号导体414。这种布置可以允许故障接口172将故障从逻辑块LB(1)到LB(N)报告给SI 110,而无需故障接口172包括如此多的导体(该导体引起电干扰)并且无需使故障接口172大到其引起汽车SoC 104和/或SI 110中的拥塞。信号导体410、412和414可以分别设置状态位“BT1”、“BT2”和“BT3”,每个状态位在被设置之后可以随后被处理器140清除。

一个或更多个邮箱156可以通过邮箱中断信号导体416连接到SI 110的中断控制器141。信号导体410-416可以各自实现为导线、信号迹线等。

图5A是根据本公开的一些实施例的示出用于将故障传送到SI 110(参见图1、图2、图4、图8和图10)的方法500的流程图。现在参考图5A,本文描述的方法500的每个框包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,各种功能可以通过处理器(例如,图1和图4中所示的处理器150)执行存储在存储器中的指令来执行。方法500的至少部分可以体现为存储在计算机存储介质上的计算机可用指令。方法500可以由独立应用程序、服务或托管服务(独立地或与另一托管服务组合)或另一产品的插件提供,仅举几例。此外,通过示例的方式,关于图1的汽车平台100描述了方法500。然而,方法500可以附加地或替代地由任何一个系统或系统的任何组合执行,包括但不限于本文描述的那些。

为了便于说明,方法500将被描述为由一个或更多个SoC故障聚合器152(参见图1、图2和图4)中的特定SoC故障聚合器来执行。换言之,方法500可以由硬件来执行。参考图5A,在第一框502处,特定SoC故障聚合器从第一故障聚合器260-1至260-N(参见图2和图4)的至少一部分接收第一聚合故障信号。

在框506中,特定SoC故障聚合器聚合第一聚合故障信号中识别由已经被校正为经校正错误信号的错误引起的故障的那些第一聚合故障信号。然后,在框508中,特定SoC故障聚合器经由经校正错误信号导体410(参见图4)将经校正错误信号发送到SI 110(参见图1、图2、图4、图8和图10)。在框510中,特定SoC故障聚合器针对每个经校正的错误向中断控件154(见图1和图4)发送中断,中断控件154将一个或更多个中断转发到辅助安全单元122(见图1和图4)的处理器150(见图1和图4)。每个中断向处理器150通知与中断相关联的经校正的错误。

在框512中,特定SoC故障聚合器针对在经校正的错误信号中识别的第一经校正错误启动经校正错误定时器420C(参见图4)。

在判定框514中,特定SoC故障聚合器确定第一经校正错误是否已从特定SoC故障聚合器中清除。当在经校正错误定时器420C(参见图4)指示已经过去多于第二预定时间量之前已经清除了第一经校正错误时,判定框514中的判定为“是”。否则,判定框514中的判定为“否”。当判定框514中的判定为“是”时,在框515中,特定SoC故障聚合器不采取动作。另一方面,当判定框514中的判定为“否”时,特定SoC故障聚合器前进到判定框516。

在判定框516中,处理器150确定经校正错误定时器420C(参见图4)是否指示已过去多于第二预定时间量,这意味着经校正错误定时器420C已超时或到期。当第二预定时间量已经过去时,判定框516中的判定为“是”。否则,判定框516中的判定为“否”。当判定框516中的判定为“是”时,特定SoC故障聚合器前进到框518。否则,当判定框516中的判定为“否”时,特定SoC故障聚合器返回判定框514,以等待由处理器150清除第一经校正错误。因此,特定SoC故障聚合器继续监视第一经校正错误是否已被清除以及经校正错误定时器420C是否已到期。如果在经校正错误定时器420C已到期之前清除了第一经校正错误,则特定SoC故障聚合器在框515中不采取动作。另一方面,如果经校正错误定时器420C在第一经校正错误被清除之前到期,则特定SoC故障聚合器前进到框518。在框518中,特定SoC故障聚合器经由SoC故障聚合器信号导体414(参见图4)将SoC故障聚合器信号发送到SI 110(见图1、图2、图4、图8和图10)。

在框520中,特定SoC故障聚合器将在框502中接收到的第一聚合故障信号中的识别由尚未校正为未校正的错误信号的错误引起的故障的那些第一聚合故障信号。然后,在框522中,特定SoC故障聚合器经由未校正错误信号导体412(参见图4)将未校正错误信号发送到SI 110(参见图1、图2、图4、图8和图10)。在框524中,特定SoC故障聚合器针对每个未校正的错误向中断控件154(参见图1和图4)发送中断,中断控件154将一个或更多个中断转发到辅助安全单元122(见图1和图4)的处理器150(参见图1和图4)。每个中断向处理器150通知与该中断相关联的未校正错误。

在框526中,特定SoC故障聚合器针对在未校正错误信号中识别的第一未校正错误启动未校正错误定时器420U(参见图4)。

在判定框528中,特定SoC故障聚合器确定第一未校正错误是否已从特定SoC故障聚合器中被清除。当在未校正错误定时器420U(参见图4)指示多于第三预定时间量已经过去之前第一未校正错误已被清除时,判定框528中的判定为“是”。否则,判定框528中的判定为“否”。当判定框528中的判定为“是”时,在框529中,特定SoC故障聚合器不采取动作。当判定框528中的判定为“否”时,特定SoC故障聚合器前进到判定框530。

在判定框530中,处理器150确定未校正错误定时器420U是否指示多于第三预定时间量已经过去,这意味着未校正错误定时器420U(参见图4)已经超时或到期。当第三预定时间量已经过去时,判定框530中的判定为“是”。否则,判定框530中的判定为“否”。当判定框530中的判定为“是”时,特定SoC故障聚合器前进到框532。另一方面,当判定框530中的判定为“否”时,特定SoC故障聚合器返回判定框528,以等待第一未校正错误被处理器150清除。因此,特定SoC故障聚合器继续监视第一未校正错误是否已被清除以及未校正错误定时器420U是否已到期。如果在未校正错误定时器420U到期之前第一未校正错误被清除,则特定SoC故障聚合器在框529中不采取动作。另一方面,如果未校正错误定时器420U在第一未校正错误被清除之前到期,则特定SoC故障聚合器前进到框532。在框532中,特定SoC故障聚合器经由SoC故障聚合器信号导体414(参见图4)将SoC故障聚合器信号发送到SI 110(参见图1、图2、图4、图8和图10)。此时,方法500终止。

图5B是示出根据本公开的一些实施例的处理器150(参见图1和图4)可以用来处理从SoC故障聚合器152(参见图1、图2和图4)接收的中断的方法540的流程图。现在参考图5B,本文所描述的方法540的每个框包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,各种功能可以通过处理器(例如,处理器150)执行存储在存储器中的指令来执行。方法540的至少部分可以体现为存储在计算机存储介质上的计算机可用指令。方法540可以由独立应用程序、服务或托管服务(独立地或与另一托管服务组合)或另一产品的插件提供,仅举几例。此外,作为示例,方法540是关于图1的汽车平台100描述的。然而,方法540可以附加地或替代地由任何一个系统或系统的任何组合执行,包括但不限于本文的那些。

为了便于说明,方法540将被描述为由处理器150(参见图1和图4)执行。参考图5B,在第一框541,处理器150从一个或更多个SoC故障聚合器152中的特定SoC故障聚合器接收特定中断。然后,在框542,处理器150对在特定中断中识别的一个或更多个错误进行分类,并且可以采取一个或更多个校正动作以解决错误。

如果在处理器150对一个或更多个错误进行分类和/或采取一个或更多个校正动作时出现问题,则处理器150可能无法继续处理特定中断。当这种情况发生时,判定框543中的判定为“是”,并且在框544,处理器150对特定中断不采取进一步的动作。另一方面,如果处理器150能够对特定中断进行分类并可选地采取校正动作,则在判定框543处的判定为“否”。当判定框543中的判定为“否”时,在框545中,处理器150将与特定中断有关的信息写入到一个或更多个邮箱156,该邮箱156可由处理器140读取。接下来,在框546中,处理器150经由邮箱中断信号导体416向中断控制器141发送邮箱中断。邮箱中断指示在框541中接收的中断中识别出的错误的严重性。

然后,在判定框547,处理器150确定处理器150是否应该清除针对从特定SoC故障聚合器生成的特定中断的故障。当处理器150判定清除故障时,判定框547中的判定为“是”。否则,判定框547中的判定为“否”。当处理器150所采取的一个或更多个校正动作能够解决该错误或该故障是由经校正的错误(例如,由逻辑块LB(1)–LB(N)之一校正的错误)产生时,判定框547中的判定可以为“是”。作为另一个非限制性示例,当处理器150从处理器140接收到指示处理器140清除了错误的邮箱中断时,判定框547中的判定可以为“是”。当判定框547中的判定为“否”时,在框548中,处理器150不对特定中断采取进一步的动作。另一方面,当判定框547中的判定为“是”时,在框549中,处理器150从特定SoC故障聚合器清除故障。处理器150可以通知处理器140故障已经从特定SoC故障聚合器中被清除。然后,方法540终止。

图5C是示出根据本公开的一些实施例的SI 110(参见图1、图2、图4、图8和图10)可以用来处理经校正和未校正错误信号的方法550的流程图。现在参考图5C,本文描述的方法550的每个框包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,各种功能可以通过处理器(例如图1、图2和图4所示的处理器140)执行存储在存储器(例如,图1、图2和图4中所示的易失性存储器146)中的指令(例如图1、图2和图4所示的指令149)来执行。方法550的至少部分可以体现为存储在计算机存储介质上的计算机可用指令。方法550可以由独立应用程序、服务或托管服务(独立地或与另一托管服务组合)或另一产品的插件提供,仅举几例。此外,作为示例,方法550关于图1的汽车平台100被描述。然而,方法550可以附加地或替代地由任何一个系统或系统的任何组合执行,包括但不限于本文描述的那些。

为了便于说明,方法550将被描述为由SI故障聚合器142(参见图1、图2和图4)和处理器140(参见图1、图2和图4)执行。参考图5C,在第一框552处,SI 110的SI故障聚合器142(参见图1、图2、图4、图8和图10)接收设置状态位“BT1”的经校正错误信号,和/或设置状态位“BT2”的未校正的错误信号。当SI故障聚合器142在经校正错误信号导体410上接收到经校正错误信号时,在框554中,SI故障聚合器142向处理器140的中断控制器141(参见图1、图2和图4)发送中断。这个中断通知处理器140该经校正的错误。

在判定框556中,处理器140(参见图1、图2和图4)确定是否已经经由邮箱中断信号导体416从处理器150(参见图1和图4)接收到邮箱中断。当接收到邮箱中断时,邮箱中断指示经校正错误的严重性。当处理器140已接收到邮箱中断时,判定框556中的判定为“是”。否则,判定框556中的判定为“否”。当判定框556中的判定为“否”时,在框558中,处理器140等待接收邮箱中断或SoC故障聚合器信号。当判定框556中的判定为“是”时,处理器140前进到判定框560。

在判定框560中,处理器140(参见图1、图2和图4)判定是否读取邮箱156。该判定可以至少部分地基于通过邮箱中断传送给处理器140的经校正错误的严重性。例如,如果经校正错误的严重性等于或高于阈值(例如,7),处理器140可以判定不读取邮箱156,并且如果经校正错误的严重性达到或超过阈值,则处理器140可以判定读取邮箱156。当判定框560中的判定为“是”时,在框562中,处理器140读取邮箱156。然后,处理器140前进到框564,在此处理器140例如通过取消设置状态位“BT1”清除经校正错误。当判定框560中的判定为“否”时,处理器140前进到框564并清除经校正的错误,例如,通过取消设置状态位“BT1”。在处理器140从SI故障聚合器142清除经校正的错误之前,处理器140可以等待来自处理器150的通知,即与经校正的错误相对应的故障已经从特定SoC故障聚合器中清除。然而,因为错误已经被校正,在一些实施例中,处理器140可以简单地清除经校正的错误而不首先接收这样的通知。

当SI故障聚合器142在未校正错误信号导体412上接收到未校正错误信号时,在框566中,SI故障聚合器142将中断发送到处理器140的中断控制器141(参见图1、图2和图4)。该中断通知处理器140该未校正的错误。

在判定框568中,处理器140(参见图1、图2和图4)确定是否已经经由邮箱中断信号导体416从处理器150(参见图1和图4)接收到邮箱中断。当接收到邮箱中断时,邮箱中断指示未校正错误的严重性。当处理器140已接收到邮箱中断时,判定框568中的判定为“是”。否则,判定框568中的判定为“否”。当判定框568中的判定为“否”时,在框558中,处理器140等待接收邮箱中断或SoC故障聚合器信号。当判定框568中的判定为“是”时,处理器140前进到判定框570。

在判定框570中,处理器140(参见图1、图2和图4)判定是否读取邮箱156。该判定可以至少部分地基于未校正错误的严重性。例如,如果未校正错误的严重性等于或高于阈值(例如,7),处理器140可以判定不读取邮箱156,并且如果经校正错误的严重性低于阈值,则处理器140可以判定读取邮箱156。当判定框570中的判定为“是”时,在框572中,处理器140读取邮箱156。然后,处理器140前进到判定框573。当判定框570中的判定为“否”时,处理器140前进到框573。

在判定框573中,处理器140判定是否采取一个或更多个校正动作。当判定框573中的判定为“是”时,在框574中,处理器140采取一个或更多个校正动作,例如应用车辆的制动器。然后,处理器140前进到判定框575。

当判定框573中的判定为“否”时,处理器140前进到判定框575。在判定框575中,处理器140判定是否通知外部系统404。当判定框575中的判定为“是”时,在框576中,处理器140通知外部系统404并前进到框578。当判定框575中的判定为“否”时,处理器140前进到框578。

在框578中,处理器140向邮箱156发送邮箱中断和/或清除未校正的错误,例如,通过取消设置状态位“BT2”。可选地,处理器140可以将故障信息写入邮箱156。处理器140可以等待来自处理器150的通知,即在处理器140清除来自SI故障聚合器142的未校正错误之前,对应于该未校正错误的故障已从特定SoC故障聚合器中清除。然后,方法550终止。邮箱中断由处理器150接收并且可以在判定处理器150是否应该清除对应于未校正错误的故障时在判定框547(参见图5B)中使用。在做出该判定之前,处理器150可以可选地读取由处理器140写入邮箱156的故障信息。

图5D是示出根据本公开的一些实施例的SI 110(参见图1、图2、图4、图8和图10)可以用来处理SoC故障聚合器信号的方法580的流程图。现在参考图5D,本文描述的方法580的每个框包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,各种功能可以通过处理器(例如图1、图2和图4所示的处理器140)执行存储在存储器(例如,图1、图2和图4中所示的易失性存储器146)中的指令(例如图1、图2和图4所示的指令149)来执行。方法580的至少部分可以体现为存储在计算机存储介质上的计算机可用指令。方法580可以由独立应用程序、服务或托管服务(独立地或与另一托管服务组合)或另一产品的插件提供,仅举几例。此外,作为示例,方法580关于图1的汽车平台100被描述。然而,方法580可以附加地或替代地由任何一个系统或系统的任何组合执行,包括但不限于本文的那些。

为了便于说明,方法580将被描述为由SI故障聚合器142(参见图1、图2和图4)、处理器140(参见图1、图2和图4)和SoC错误处理电路422(参见图4)执行。SoC错误处理电路422可以被实现为SI故障聚合器142的组件。参考图5D,在第一框582处,SI故障聚合器142(参见图1、图2和图4)接收设置状态位“BT3”的SoC故障聚合器信号。

如图5D中的虚线箭头所示,当SI故障聚合器142(见图1、图2和图4)接收到SoC故障聚合器信号时,SI 110的SoC错误处理电路422(参见图4)可以自动前进到框584并经由连接406(参见图4)向外部系统404(参见图4)自动发送包括SoC错误的SoC错误信号。替代地,SoC错误处理电路422可以前进到框586并启动SoC故障定时器424(参见图4)。SoC故障定时器424可以在接收到SoC故障聚合器信号和通知外部系统404之间引入延迟。当SoC故障定时器424运行时,处理器140可以采取一个或更多个校正动作。如果校正动作是成功的,则处理器140可以通过取消设置状态位“BT2”来清除未校正的错误,并且通过取消设置状态位“BT3”来清除SoC故障聚合器错误。清除SoC故障聚合器错误会停止SoC故障定时器424。处理器140可以等待来自处理器150的通知,即在处理器140从SI故障聚合器142清除一个或更多个未校正错误之前,对应于一个或更多个未校正错误的故障已经从特定SoC故障聚合器中被清除。

在SoC故障定时器424已启动之后,在判定框588中,SoC错误处理电路422确定SoC故障定时器424是否指示已经过去了多于第四预定时间量。当SoC故障定时器424指示已经过去了多于第四预定时间量并且SoC故障聚合器错误尚未被清除时,判定框588中的判定为“是”。另一方面,当在SoC故障定时器424指示已经过去多于第四预定时间量之前SoC故障聚合器错误已被清除时,判定框588中的判定为“否”。

当判定框588中的判定为“否”时,在框590中,SoC错误处理电路422等待SoC故障定时器424指示已经过去了多于第四预定时间量。另一方面,当判定框588中的判定为“是”时,在框584中,SoC错误处理电路422通过连接406(参见图4)将包括SoC错误的SoC错误信号发送到外部系统404(参见图4),其指示第一未校正错误尚未被清除并且SoC故障聚合器错误已被断言。当SoC错误被发送时,SoC故障定时器424自动停止和/或重置。替代地,SoC错误处理电路422可以重置SoC故障定时器424,或者SoC故障定时器424可以仅仅地到期,而无需SoC错误处理电路422采取任何动作。

在SI故障聚合器142(参见图1、图2和图4)接收到SoC故障聚合器信号之后,在框592中,SI故障聚合器142可以向处理器140发送中断。在框594中,处理器140对第一未校正错误进行分类。在判定框595中,处理器140判定是否采取一个或更多个校正动作。当处理器140判定采取一个或更多个校正动作时,判定框595中的判定为“是”。否则,判定框595中的判定为“否”。当判定框595中的判定为“否”时,处理器140前进到框596并且不采取动作。另一方面,当判定框595中的判定为“是”时,在框597中,处理器140采取校正动作。

然后,在框598中,处理器140向邮箱156发送邮箱中断和/或,例如,通过取消设置状态位“BT3”清除SoC故障聚合器错误和通过取消设置状态位“BT2”清除未校正的错误。清除SoC故障聚合器错误使SoC故障定时器424停止。发送到邮箱156的邮箱中断可以指示未校正的错误已被清除和/或在框597中处理器140已采取了校正动作。可选地,处理器140可以将故障信息写入邮箱156。处理器140可以等待来自处理器150的通知,即在处理器140清除来自SI故障聚合器142的SoC故障聚合器错误和未校正错误之前,对应于未校正错误的故障已经从特定SoC故障聚合器中被清除。然后,方法580终止。邮箱中断由处理器150接收,其可以清除对应于未校正错误的故障。在清除该故障之前,处理器150可以可选地读取由处理器140写入邮箱156的故障信息。

在图5A-5D中,汽车SoC 104包括处理器150。在至少一些实施例中,可以省略处理器150。在这样的实施例中,将不执行方法540。对于每个故障,特定SoC故障聚合器将生成SoC故障聚合器错误(框518和532)并将其发送到SI故障聚合器142。因为处理器150不存在,所以邮箱中断不会被发送到中断控制器141,因此处理器140将在处理器140动作之前等待(图5C的框558)SoC故障聚合器信号。然后,当接收到SoC故障聚合器错误时(图5D的框582),SI 110将冒险进入其他组件160以针对在方法550(参见图5C)中接收到的每个经校正和未校正的错误进行分类(图5D的框594)。如果分类成功,则处理器140采取校正动作(图5D的框597)。另一方面,如果分类不成功,则处理器140不采取动作(图5D的框596),这导致SoC错误处理电路422在SoC故障定时器424到期(图5D的框584)之后发送SoC错误(无需任何软件干预)。SoC错误通知外部系统404(例如,可选的外部控制单元106、一个或更多个外部微控制器、一个或更多个外部代理等)允许外部系统404使汽车平台100(参见图1)返回到安全状态。

图6A-6C示出了当SI 110通过经校正错误信号、未校正错误信号或SoC故障聚合器信号中的至少一个被通知特定故障时,SI 110可以采取的示例动作。图6A示出了根据本公开的一些实施例的在低严重性未校正错误(例如,最小值)已经被断言之后由处理器140接收和发送的信号的示例信号时序图。图6A的线612A-618A分别表示未校正错误信号、邮箱中断信号、SoC故障聚合信号和SoC错误信号。未校正的错误信号、邮箱中断信号、SoC故障聚合信号和SoC错误信号与由线610A表示的时钟信号同步。由线610A表示的时钟信号是基于SI域中的第二(SI)时钟114(参见图1)生成的。

线612A表示由未校正错误信号导体412(参见图4)传导到SI故障聚合器142的未校正错误信号。线612A的部分622A表示未校正错误的断言。在接收到未校正的错误信号之后(例如,图5C的框552),SI故障聚合器142向处理器140发送中断(例如,图5C的框566)。

然后,在图6A中,中断控制器141接收邮箱中断(图5C的判定框568中的判定为“是”)。线614A的部分626A代表邮箱中断(由处理器150发送的),其指示未校正错误的严重性。因为邮箱中断指示特定故障具有低严重性,处理器140判定访问邮箱156(例如,图5C的判定框570中的判定为“是”)并读取一个或更多个邮箱156的内容(例如,图5C的框572)。如果邮箱156包括指示特定故障已被清除的故障信息(由处理器150创建的),则处理器140清除SI故障聚合器142中的特定故障(例如,图5C的框578)。如果这发生在经校正错误定时器420U到期之前,则SoC故障聚合器152将不断言SoC故障聚合器错误(例如,图5A的框529)。

另一方面,如果邮箱156的内容不指示处理器150已经清除了特定故障,则处理器140可以判定采取一个或更多个校正动作(例如,在图5C的判定框573中的判定为“是”)。如果校正动作(例如,在图5C的框574中采取的)成功,则处理器140可以通知处理器150解除断言该错误(或清除该故障)。例如,处理器140可以向处理器150发送邮箱中断和/或可以将故障信息写入邮箱156。在处理器150接收到该通知并解除断言该错误之后,处理器150通知处理器140该错误已被解除断言(例如,经由未校正的错误信号、邮箱中断和/或存储在邮箱156中的故障信息)。在接收到该通知之后,处理器140可以清除该错误,例如,通过取消设置状态位“BT2”(例如,图5C的框578)。线612A的部分624A表示在处理器140读取邮箱156之后对未校正错误的解除断言,并采取校正动作。弯曲箭头628A表示处理器140接收到邮箱中断与处理器140解除断言该错误(或清除该故障)之间的延迟。

当校正动作成功时,处理器140可以向邮箱156发送邮箱中断,其指示处理器140已经清除了特定故障(例如,图5C的框578)。可选地,处理器140可以将故障信息写入邮箱156。处理器150接收邮箱中断,确定特定故障已被处理器140校正(例如,判定框547中的判定为“是”),并从SoC故障聚合器152清除特定故障(例如,图5B的框549)。如果这发生在未校正错误定时器420U到期之前,则SoC故障聚合器152将不断言SoC故障聚合器错误(例如,图5A的框529)。因此,SoC故障聚合器152监视特定故障以确保它已由处理器140和150之一处理,并且在未校正错误定时器420U到期之前尚未清除特定故障时,SoC故障聚合器152通知SoC错误处理电路422。如上所述,在处理器150解除断言该错误之后,处理器150通知处理器140错误已被解除断言(例如,经由存储在邮箱156中的未校正的错误信号、邮箱中断和/或故障信息,并且处理器140可以清除SI故障聚合器142中的错误。

线616A表示SoC故障聚合信号并且说明未断言SoC故障聚合错误。因此,在未校正错误定时器420U到期之前,未校正故障被清除。

线618A表示可以通过连接406被发送到外部系统404(例如,可选的外部控制单元106、一个或更多个外部微控制器、一个或更多个外部代理等)的SoC错误信号。因为未校正的错误已经被处理并且SoC故障聚合错误没有被断言,所以线618A指示SI 110没有通知外部系统404该未校正的错误(例如,判定框575中的判定为“否”)。

图6B示出了根据本公开的一些实施例的在已经断言高严重性未校正错误(例如,最大值)之后由处理器140接收和发送的信号的示例信号时序图。图6B的线612B-618B分别表示未校正错误信号、邮箱中断信号、SoC故障聚合信号和SoC错误信号。未校正的错误信号、邮箱中断信号、SoC故障聚合信号和SoC错误信号与由线610B表示的时钟信号同步。由线610B表示的时钟信号是基于SI域中的第二(SI)时钟114(参见图1)生成的。

线612B表示由未校正错误信号导体412(参见图4)传导到SI故障聚合器142的未校正错误信号。线612B的一部分622B表示未校正错误的断言。在接收到未校正的错误信号之后(例如,图5C的框552),SI故障聚合器142向处理器140发送中断(例如,图5C的框566)。

然后,在图6B中,中断控制器141接收邮箱中断(例如,图5C的判定框568中的判定为“是”)。线614B的一部分624B表示邮箱中断,这指示第一未校正的错误具有高严重性(例如,七)。因为邮箱中断指示特定故障具有高严重性,所以处理器140判定不访问邮箱156(例如,图5C的判定框570中的判定为“否”)。例如,处理器140可以确定访问汽车SoC 104的其他组件160的风险太大并且这样做可能会损害SI 110。在图6B中,处理器140还判定不采取一个或更多个校正动作(例如,图5C的判定框573中的判定为“否”)。在图6B中,由于SI 110不能执行一个或更多个校正动作,因此未校正错误未被解除断言。

然而,处理器140判定通过以SoC错误信号的方式发送SoC错误来通知外部系统404(参见图4)(例如,图5C的判定框575中的判定为“是”)。然后,处理器140发送SoC错误信号(例如,图5C的框576)。因此,在图6B中,当故障的严重性为高(例如,最大值)时,SI 110可以判定不访问汽车SoC 104,不采取任何校正动作,而是通知外部系统404。线618B表示由SI110发送到外部系统404的SoC错误信号,并且线618B的部分626B表示对SoC错误的断言。线616B表示SoC故障聚合信号,并且不指示SoC故障聚合错误已被断言。因此,SI 110认识到未校正的错误尚未被处理,并判定在SoC故障聚合错误被断言之前通知外部系统404。

图6C示出了根据本公开的一些实施例的在未校正的错误(例如,最大值)已经被断言但SI 110没有接收到邮箱中断之后由处理器140接收和发送的信号的示例信号时序图。图6C的线612C-618C分别表示未校正错误信号、邮箱中断信号、SoC故障聚合信号和SoC错误信号。未校正的错误信号、邮箱中断信号、SoC故障聚合信号和SoC错误信号与由线610C表示的时钟信号同步。由线610C表示的时钟信号是基于SI域中的第二(SI)时钟114(参见图1)生成的。

线612C表示由未校正错误信号导体412(参见图4)传导到SI故障聚合器142的未校正错误信号。线612C的部分622C表示对未校正错误的断言。在接收到未校正的错误信号之后(例如,图5C的框552),SI故障聚合器142向处理器140发送中断(例如,图5C的框566)。

在图6C中,线614C不指示接收到邮箱中断。因此,在该示例中,中断控制器141不接收邮箱中断(例如,图5C的判定框568中的判定为“否”)。例如,这可能发生在例如处理器150未能完成对未校正错误的分类时(例如,图5B的框542),这导致(图5C的判定框543中的判定为“是”)处理器150未能发送邮箱中断(例如,图5B的框544)。因此,处理器140等待接收邮箱中断或SoC故障聚合器错误,无论哪个先发生(例如,图5C的框558)。

线628C表示第三预定时间量并且示出了未校正错误定时器420U到期。因为处理器140和处理器150都不能清除第一未校正错误,所以未校正错误定时器420U被允许到期(例如,图5A的判定框530中的判定为“是”),这导致SoC故障聚合器152中的特定SoC故障聚合器将未校正的错误信号发送到SI 110并将中断发送到处理器150,以将SoC故障聚合器信号经由SoC故障聚合器信号导体414(例如,在图5A的框532中)发送到SI故障聚合器142。SI故障聚合器142接收SoC故障聚合器信号(例如,在图5D的框582中)。线616C的部分624C表示由特定SoC故障聚合器发送到SI 110的SI故障聚合器错误。弯曲箭头630C表示SI 110接收到未校正错误与SI 110接收到SI故障聚合器错误之间的延迟。

在接收到SI故障聚合器信号之后(例如,图5D的框582),SI故障聚合器142向处理器140发送中断(例如,图5D的框592)。然后,处理器140可以对第一未校正的错误进行分类(例如,图5D的框594)并判定是否采取任何校正动作。如果处理器140不能采取任何校正动作(例如,图5D的判定框595中的判定为“否”),则SoC错误处理电路422将向外部系统404发送SoC错误信号(例如,图5C的框584)。线612C的部分626C表示发送到外部系统404的SoC错误。在使用SoC故障定时器424的实施例中,当SoC故障定时器424到期时发送SoC错误。在图6C中,线632C指示已经过去了多于第四预定时间量,这意味着SoC故障定时器424到期。弯曲箭头634C表示SI 110接收到SI故障聚合器错误与SI 110断言SoC错误之间的延迟。因此,SI110中的硬件通知外部系统404,外部系统404将尝试使汽车平台100返回安全状态。

参考图2,如上所述,SI 110和汽车SoC 104的其他组件160共享易失性存储器126。但是,SI 110在第一风险分类级别内操作并且汽车SoC 104的其他组件160可以在较低的第二风险分类级别内操作。例如,SI 110可以在ASIL-D下运行,但汽车SoC的其他组件,包括易失性存储器126和在SI 110与易失性存储器126之间的通信路径(例如,互连、存储器控制器等),可以在ASIL-B下操作。

为了允许SI 110与汽车SoC 104的其他组件160共享易失性存储器126,在易失性存储器126中创建单独的专用存储器区域(称为“保留区”250),用于由SI 110排他地使用。保留区250可能对由主CPU复合体120(参见图1)执行的内存管理软件(例如,Rich-OS内存管理Rich-OS内存管理软件)不可见。保留区250可以在启动时间被创建和配置,并且对于给定的启动周期可以保持专用于SI 110。例如,保留区250的大小可以由(例如,由主CPU复合体120执行的)软件用来配置保留区250的用户可编辑软件参数确定。保留区250可以被划分为第一子部分252(参见图8)和第二子部分254(参见图8)。SI 110可以经由在第一风险分类级别下操作的通信路径访问保留区250,并且由SI 110经由通信路径对保留区250的任何访问都可以受到安全许可检查,例如下面描述的那些。

SI 110包括检错块272,其包括位于SI 110的其他组件和保留区250之间的硬件。因此,检错块272可以实现为易失性存储器接口200A的组件。替代地,检错块272可以位于处理器140和易失性存储器接口200A之间。在这样的实施例中,一个或更多个信号导体(例如,导线、信号迹线等)可以将检错块272连接到处理器140和易失性存储器接口200A中的每一个。

检错块272的硬件可以包括代码生成子块273(参见图8)。代码生成子块273可以使用生成循环冗余校验(“CRC”)代码的CRC代码生成电路来实现。替代地,检错块272可以包括其他类型的代码生成电路,其生成不同类型的检错码,例如纠错码(“ECC”)。检错块272的硬件为通过检错块272的数据确定一个或更多个检错码(例如,CRC码)。例如,检错块272可以为通过检错块272的每个数据字节确定单独的检错码。检错码可以基于字节和要存储字节的保留区250中的数据地址来计算。例如,下面的等式1可用于确定用于要写入保留区250的特定数据字节的检错码:

crc_out

在上面的等式1中,变量“crc_out

在确定检错码之后,检错块272确定(例如,使用偏移量)检错码的代码地址。例如,下面的等式2可用于确定用于要写入保留区250的数据的特定字节的检错码。

crc_out_address=write_address+fixed_offset 等式2

在上面的等式2中,变量“crc_out_address”表示基于字节的由变量“write_address(写入地址)”表示的数据地址和由变量“fixed_offset(固定的偏移量)”表示的偏移量来计算的代码地址。如上所述,保留区250可以被划分为多个子部分,其中第一子部分252(参见图8)存储数据且第二子部分254(参见图8)存储检错码。因此,由上述等式1中的变量“Byte Address”表示的数据地址可以位于第一子部分252中,而由上述等式2中的变量“write_address”表示的代码地址可以位于第二子部分254中。在这样的实施例中,变量“fixed_offset”的值可以等于保留区250的第一子部分252的大小,以确保检错码将被存储在第二子部分254中。以这种方式,基于地址的分离用于将数据与检错码分离,使得在第一和第二子部分252和254之一中发生的故障不会影响另一个。

检错块272在数据地址中的数据的存储和代码地址中的检错码的存储之间引入延迟(例如,几个时钟周期)。这种延迟降低了对数据产生负面影响的事件(例如瞬态事件)也会对检错码产生负面影响的可能性。换句话说,延迟有助于提供对共因故障和瞬态故障的免疫力,这有助于防止时钟毛刺之类的问题。检错块272可以在将两个或更多字节的数据及其对应的检错码存储在保留区250中之前对其进行缓存。然后,检错块272可以将数据字节(例如,16个字节)存储在第一子部分252中,随后是延迟。接下来,检错块272可以将对应的检错码(例如,16字节)存储在第二子部分254中。

现在参考图7,本文描述的方法700的每个框包括可以使用硬件、固件和/或软件的任何组合来执行的过程。例如,方法700可以由检错块272(参见图2、图8和图10)的硬件来执行。作为另一个非限制性示例,一个或更多个功能可以通过处理器(例如,图1、图2和图4中所示的处理器140)执行存储在存储器(例如,图1、图2和图4所示的易失性存储器146)中的指令(例如,图1、图2和图4中所示的指令149)来执行。在这样的实施例中,方法700的至少部分可以体现为存储在计算机存储介质上的计算机可用指令。方法700可以由独立应用程序、服务或托管服务(独立地或与另一托管服务组合)或另一产品的插件提供,仅举几例。此外,作为示例,方法700关于图1的汽车平台100进行了描述。然而,方法700可以附加地或替代地由任何一个系统或系统的任何组合执行,包括但不限于本文的那些。

图7是示出根据本公开的一些实施例的用于将数据写入保留区250(参见图2、图8和图10)的方法700的流程图。为了便于说明,方法700将被描述为由检错块272执行(参见图2、图8和图10)。在方法700开始之前,在SI域中操作的启动器(例如,处理器140、DMA引擎402等)将包括数据和数据地址的第一写指令转发到检错块272。启动器可以将具有预定大小(例如,16字节)的数据写入保留区250。

参考图7,在第一框702处,检错块272(参见图2、图8和图10)从启动器接收包括数据和数据地址的第一写指令。在框704中,检错块272选择数据的一部分和对应于该部分的数据地址之一。作为非限制性示例,检错块272可以在框704中选择数据的字节以及对应于所选字节的数据地址。在一些实施例中,第一写指令可以仅包括单个数据地址(例如,第一地址)。后续数据地址可以基于该单个地址来确定(例如,通过将预定数据大小添加到单个数据地址)。因此,在一些实施例中,可以在框704中为至少一些数据计算数据地址。

然后,在框706中,检错块272为在框704中选择的该数据部分确定检错码(例如,使用上面的等式1)。接下来,在框708中,检错块272将包括在框704中选择的数据部分及其对应的数据地址的第一写指令转发到保留区250(参见图2、图8和图10)的第一子部分252(参见图8和10)。根据第一写指令,保留区250将该部分存储在第一子部分252中的对应数据地址中。

在下一个框710中,检错块272(参见图2、图8和图10)确定在框706中确定的检错码的代码地址(例如,使用上面的等式2)。在框712中,检错块272等待(例如,几个时钟周期)以将检错码发送到保留区250(见图2、图8和图10)的第一子部分252(见图8和图10),从而存储在代码地址中。因此,在框712中,检错块272在数据地址中数据的存储与代码地址中检错码的存储之间引入延迟。检错块272可以包括用于确定在框712中检错块272等待多长时间的写延迟定时器(未示出)。因此,检错块272可以在将检错码发送到保留区250以存储在代码地址中之前等待第五预定时间量。接下来,在框714中,检错块272将包括在框706中确定的检错码以及在框710中确定的代码地址的第二写指令转发到保留区250(见图2、图8和图10)的第二子部分254(参见图8和图10)。因此,为了存储数据,检错块272访问保留区250两次,框708和框714中各一次。根据第二写指令,保留区250将检错码存储在第二子部分254中的代码地址中。

然后,在判定框716中,检错块272(参见图2、图8和图10)确定是否还没有存储任何数据。当检错块272确定至少一些数据还没有被存储时,判定框716中的判定为“是”。否则,判定框516中的判定为“否”。当判定框716中的判定为“是”时,检错块272返回到框704以选择新的数据部分。另一方面,当判定框716中的判定为“否”时,检错块272返回到框702以接收新数据和新数据地址。

如上所述,检错块272可以在将两个或更多字节的数据及其对应的检错码存储到保留区250中之前对其进行缓存。例如,可以针对多个数据块(例如,在框704中选择的)执行框706-714中的每一个。作为非限制性示例,检错块272可以在框708中将第一写指令连同两个或更多字节的数据及其对应的数据地址一起发送到保留区250之前针对该字节数据执行框706。例如,检错块272可以将该字节的数据连同第一数据地址一起发送到第一子部分252。第一子部分252可以将该字节的数据写入从第一数据地址开始的连续存储器地址中。然后,在框710中,检错块272可以确定在框706中确定的两个或更多个检错码的代码地址。在框712中,检错块272在写入该字节数据和将检错码写入保留区250之间引入延迟。然后,在框714中,检错块272将包括检错码和代码地址的第二写指令转发到第二子部分254。第二子部分254将检错码写入代码地址。根据实现细节,第二写指令可以仅包括第一代码地址,并且第二子部分254可以将检错码写入从第一代码地址开始的连续存储器地址中。

图8示出了执行方法700(参见图7)的检错块272的示例。SI 110可以包括一个或更多个启动器800,例如处理器140、DMA引擎402等,每个启动器800都在SI域内操作。在图8中,启动器800包括启动器802(例如,处理器140)。启动器802(例如,处理器140)可以将具有预定大小(例如,16字节)的数据写入保留区250。在图8中所示的示例中,启动器802将16字节的数据和第一数据地址发送到检错块272。数据通过名为“wdata_in[127:0]”的128位数组存储在或表示在图8中并且第一数据地址通过名为“Address_0[39:0]”的40位数组存储在或表示在图8中。然而,根据实现细节,数据可以有其他大小,并且128位是以非限制性示例的方式提供的。类似地,第一数据地址可以具有其他大小,并且40位是以非限制性示例的方式提供的。数据的第一字节可以存储在第一数据地址中,然后可以通过将一个字节添加到第一数据地址来识别用于数据的第二字节的下一个数据地址,等等。图8描绘了启动器802经由安全岛互连808在信号806中向检错块272发送第一写指令804。如上所述,第一写指令804包括数据和第一数据地址。安全岛互连808可以实现为总线等。

安全岛互连808将第一写指令804传送到检错块272(例如,图7的框702)。在所示实施例中,安全岛互连808在信号810-0到810-15中传递第一写指令804,每个信号包括第一数据地址和该字节数据中的一个。在本实施例中,检错块272为数据的每个字节生成检错码,并且生成的检错码是CRC码。当在信号810-0到810-15中接收到字节时,检错块272可以开始处理那些字节(例如,图7的框704)。

接下来,代码生成子块273为数据的每个字节确定检错码(例如,图7的框706)。在图8中,携带检错码的信号和携带来自与检错码相关的保留区250的响应的信号838由虚线箭头示出。因此,代码生成子块273输出信号812-0到812-15中的数据字节和信号814-0到814-15中的相应的检错码。(数据)信号812-0到812-15被路由到第一子部分252以用于存储并且(代码)信号814-0到814-15被路由到第二子部分254以用于存储。

检错块272在第一时间(例如,在图8中标识为“Time=T0”)经由易失性存储器接口200A(参见图2)将数据和第一数据地址(例如,在信号812-0到812-15中)发送到保留区250的第一子部分252。换言之,检错块272将第一写指令发送到保留区250的第一子部分252(例如,图7的框708)。易失性存储器接口200A经由汽车SoC 104的数据主干和存储器子系统826将第一写指令传送到保留区250(参见图1、图2和图4)。在图8中,第一写指令由检错块272在信号824中发送到第一子部分252。

第一子部分252通过将第一字节(在图8中表示为“Data0”)存储在第一数据地址(在图8中表示为“Address_0”)并将随后的字节写入第一数据地址之后的后续数据地址来将数据写入存储器。这种写入发生在第一时刻,其在图8中表示为“Time=T0”。然后,第一子部分252向启动器802发送响应信号828,其确认数据已被存储。响应信号828由第一子部分252发送到数据主干和存储器子系统826,其将响应信号828转发到易失性存储器接口200A(见图2)。当易失性存储器接口200A被解锁时,易失性存储器接口200A将响应信号828发送到第一(数据)缓冲区820。

第一(数据)缓冲区820对在来自保留区250的响应信号828中接收到的“数据写入完成响应”进行重新排序。例如,检错块272可以将一对写指令A和B(例如,在图7的框708中发送的第一写指令中)发送到保留区250,写指令B在写指令A之后由检错块272发送。在保留区250写入被包括在写指令A和B中的数据之后,保留区250将第一和第二数据写入完成响应发送到检错块272。但是,所接收的针对写指令B的第二数据写入完成响应可以在针对写指令A的第一数据写入完成响应之前到达检错块272。当发生这种情况时,第一(数据)缓冲区820将存储第二数据写入完成响应,等待第一数据写入完成响应,在它到达时发送第一数据写入完成响应,并在第一数据写入完成响应之后发送第二数据写入完成响应。因此,第一(数据)缓冲区820将数据写入完成响应以期望的顺序放置在响应信号828中。

第一(数据)缓冲区820将响应信号828转发到安全岛互连808,安全岛互连808将响应信号828转发到启动器802。此时,在该示例中,数据(例如,16字节)已经在第一单写操作中被写入第一子部分252。

检错块272还基于第一数据地址确定第一代码地址(例如,图7的框710)。在图8中,第一代码地址是通过将16兆字节(“MB”)添加到第一数据地址来计算的。然而,根据实现细节,偏移量可以具有其他大小,并且以示例的方式提供16MB。此外,可以使用其他方法和/或计算来确定第一代码地址的位置。

检错块272等待(例如,图7的框712),直到第二时刻(例如,在图8中标识为“Time=T1”)。第一时刻和第二时刻不同。在第二时刻,检错块272经由易失性存储器接口200A(参见图2)将检错码和第一代码地址发送到保留区250的第二子部分254。换言之,检错块272将第二写指令发送到保留区250的第二子部分254(例如,图7的框714)。易失性存储器接口200A经由汽车SoC 104的数据主干和存储器子系统826将第二写指令传送到保留区250(参见图1、图2和图4)。在图8中,第二写指令在信号834中由检错块272发送到第二子部分254。

第二子部分254通过将第一检错码(在图8中表示为“CRC0”)存储在第一代码地址(在图8中表示为“Address_1”)并将随后的检错码写入到第一代码地址之后的后续代码地址,来将检错码写入到存储器。然后,第二子部分254向启动器802发送响应信号838,其确认检错码已被存储。在图8所示的实施例中,响应信号838由第二子部分254发送到数据主干和存储器子系统826,其将响应信号838转发到易失性存储器接口200A(参见图2)。当易失性存储器接口200A被解锁时,易失性存储器接口200A将响应信号838转发到第二(代码)缓冲区822。第二(代码)缓冲区822将在响应信号838中从保留区250接收的“代码写入完成响应”重新排序。例如,检错块272分别为写指令A和B中包括的数据确定第一和第二检错码,并将第一和第二检错码发送到保留区250(例如,在第二写指令中)。在保留区250将第一和第二检错码写入存储器之后,保留区250将第一和第二代码写入完成响应分别发送到第二(代码)缓冲区822。但是,所接收的针对第二检错码的第二代码写入完成响应可以在针对第一检错码的第一代码写入完成响应之前到达检错块272。当这种情况发生时,第二(代码)缓冲区822将存储第二代码写入完成响应,等待第一代码写入完成响应,当它到达时发送第一代码写入完成响应,并在第一代码写入完成响应之后发送第二代码写入完成响应。

第二(代码)缓冲区822可以丢弃响应信号838。替代地,第二(代码)缓冲区822可以将响应信号838转发到安全岛互连808,安全岛互连808可以将响应信号838转发到启动器802。此时,在该示例中,检错码(例如,16字节)已在第二单写操作中被写入第二子部分254。

易失性存储器接口200A可以包括将检错块272与易失性存储器126连接的两个并行且可选地专用接口。数据可以通过第一接口发送到第一数据地址并且检错码可以通过第二接口发送到第一代码地址。在这样的实施例中,检错块272可以通过第一接口将包括数据和第一数据地址的第一写指令(例如,在信号824中)发送到第一子部分252,同时检错块272通过第二接口将包括检错码和第一代码地址的第二写指令(例如,在信号834中)发送到第二子部分254。此外,(数据)响应信号828和(代码)响应信号838可以分别通过第一和第二接口同时传送到第一和第二缓冲区820和822。

当SI 110的启动器802(例如,处理器140)希望从保留区250读取数据时,SI 110从保留区250接收数据和检错码两者。SI 110在从数据地址读取数据和从代码地址读取检错码之间引入延迟。这种延迟降低了对数据产生负面影响的事件也会对检错码产生负面影响的可能性。SI 110通过检错块272传递读取的数据,检错块272确定用于读取的数据的校验码并将检错码与校验码进行比较。这种比较可以用下面的等式3表示:

CRC_gen(Requested address, Fetched Data)==crc_in

在等式3中,运算符“==”指示运算符“==”左侧的表达式是否等于运算符“==”右侧的表达式。变量“Fetched Data(获取的数据)”表示在框906中获得的数据的至少一部分(例如,字节x),变量“Requested address(请求的地址)”表示该数据部分的数据地址,而变量“CRC_address”表示基于数据的部分(例如,字节x)的数据地址确定的代码地址。函数“CRC_gen”使用变量“Fetched Data”和“Requested address”的值作为输入,并且函数“CRC_gen”输出该部分(例如,字节x)的校验码。函数“CRC_gen”可以与上述等式1的函数“CRC”相同。当存在时,函数“CRC_gen”的输出可以至少部分地由代码生成子块273(参见图8)计算。表达式“crc_in

现在参考图9,本文描述的方法900的每个框包括可以使用硬件、固件和/或软件的任何组合来执行的过程。例如,方法900可以由检错块272(参见图2、图8和图10)的硬件来执行。作为另一非限制性示例,一个或更多个功能可以通过处理器(例如,图1、图2和图4中所示的处理器140)执行存储在存储器(例如,图1、图2和图4所示的易失性存储器146)中的指令(例如,图1、图2和图4中所示的指令149)来执行。方法900的至少部分可以体现为存储在计算机存储介质上的计算机可用指令。方法900可以由独立应用程序、服务或托管服务(独立地或与另一托管服务组合)或另一产品的插件来提供,仅举几例。此外,通过示例的方式,方法900关于图1的汽车平台100进行描述。然而,方法900可以附加地或替代地由任何一个系统或系统的任何组合执行,包括但不限于本文描述的那些。

图9是示出根据本公开的一些实施例的用于从保留区250(参见图2、图8和图10)读取数据的方法900的流程图。为了便于说明,方法900将被描述为由检错块272执行(参见图2、图8和图10)。在方法900开始之前,启动器802(参见图8)将包括一个或更多个数据地址的第一读指令转发到检错块272。作为非限制性示例,第一读指令可以仅包括第一数据地址。参考图9,在第一框902处,检错块272从启动器802接收包括数据地址的第一读指令。在框904,检错块272将第一读指令转发到第一子部分252,其请求存储在该数据地址处的数据。如果第一读指令仅包括第一数据地址,则第一子部分252可以从开始于第一数据地址的连续内存地址读取预定量的数据(例如,16字节)。在框906中,检错块272从第一子部分252接收存储在该数据地址处的数据。

然后,在框908中,检错块272确定对应于数据的检错码的代码地址(例如,使用上面的等式2)。作为非限制性示例,可以至少部分地基于该数据地址来确定代码地址。例如,根据上面的等式2,每个代码地址可以通过将偏移量(变量“fixed_offset”的值)添加到该数据地址中对应的数据地址(变量“write_address”的值)来计算。根据实现细节,检错块272可以基于第一数据地址仅识别第一代码地址。然后,在框910中,检错块272等待(例如,几个时钟周期)以请求在框908中确定的该代码地址处存储的检错码。因此,在框910中,检错块272在从代码地址读取检错码和读取数据之间引入延迟。检错块272可以包括读取延迟定时器(未示出),用于确定检错块272在框910处等待多长时间。因此,检错块272可以在请求来自第二子部分254的检错码之前等待第六预定时间量。

在等待之后,在下一个框912中,检错块272向包括在框908中确定的代码地址并请求存储在那些代码地址处的检错码的第二子部分254发送第二读指令。因此,为了读取数据,检错块272访问保留区250两次,在框904和框912中各一次。如果第二读指令仅包括第一代码地址,则第二子部分254可以从以第一代码地址开始的连续内存地址读取预定数量的检错码(例如,16个字节)。在框914中,检错块272从第二子部分254接收存储在该代码地址处的检错码。在框916中,检错块272为在框914中获得的每个检错码确定校验码(例如,使用上面的等式1)。

在判定框918,对于每个检错码,检错块272确定检错码是否匹配对应于检错码的校验码(例如,使用上面的等式3)。当检错码与其对应的校验码匹配时,判定框918中的判定为“是”。否则,判定框918中的判定为“否”。当判定框918中的判定为“是”时,在框920中,检错块272将对应于检错码的数据转发给启动器802(参见图8)。当判定框918中的判定为“否”时,在框922中,检错块272生成失配错误并将其发送到启动器802和SI故障聚合器142(参见图1、图2和图4),使得失配错误可以通过由指令149实现并由处理器140执行的安全软件来清除。可选地,在框922中,如果检错码(例如,实现为ECC)包括可用于恢复数据的信息(例如,位),则检错块272可以尝试校正该失配。如果检错块272能够校正错误,则检错块272可以省略在框922中生成失配错误。在框920之后,检错块272前进到框920,并将数据转发给启动器802。然后,方法900终止。

检错块272可以一次从保留区250读取两个或更多字节的数据及其对应的检错码。例如,可以针对多个数据块执行框904-914中的每一个。作为非限制性示例,在框904中,检错块272可以将第一读指令发送到从第一数据地址请求两个或更多字节的数据的第一子部分252。第一子部分252可以从以第一数据地址开始的连续内存地址读取数据字节,并将数据字节发送到检错块272,检错块272在框906中接收这些数据字节。然后,在框908中,检错块272可以基于数据地址确定代码地址。根据实现细节,检错块272可以基于第一数据地址仅识别第一代码地址。然后,在框910中,检错块272在读取数据字节和从保留区250读取检错码之间引入延迟。接下来,检错块272可以请求存储在保留区250中的用于在框906中获得的数据字节的检错码。例如,检错块272可以将第一代码地址发送到第二子部分254。第二子部分254可以从以第一代码地址开始的连续内存地址中读取检错码,并将检错码发送到检错块272,检错块272在框914中接收该检错码。然后,方法900继续框916。

图10示出了执行方法900的检错块272的示例。在该示例中,处理器140从图8所示的示例存储的保留区250中读取16字节的数据。在图10中,读取的数据存储在名为“rdata_in[127:0]”的128位数组中或由其表示,并且数据从第一数据地址处开始存储,其在名为“Address_0[39:0]”的40位数组中存储或由其表示。图10描绘了启动器802(例如,处理器140),其经由安全岛互连808将第一读指令1004发送到检错块272。安全岛互连808将第一读指令1004传递到检错块272(例如,图9的框902)。

检错块272在第三时刻(例如,在图8中标识为“Time=T3”)通过易失性存储器接口200A(参见图2)将第一数据地址发送至保留区250的第一子部分252。换言之,检错块272将第一读指令转发到保留区250的第一子部分252(例如,图9的框904)。易失性存储器接口200A经由汽车SoC 104的数据主干和存储器子系统826将第一读指令传送到保留区250。在图10中,第一读指令由检错块272在信号1010中发送到第一子部分252。

第一子部分252在第一数据地址处从存储器中以第一字节(“byte 0”)开始读取数据,并从第一数据地址之后的后续数据地址读取后续字节。SI110可以从保留区250读取具有预定大小(例如,16字节)的数据。然后,第一子部分252向包括已经读取的数据的启动器802发送响应信号1012。响应信号1012由第一子部分252发送到数据主干和存储器子系统826,其将响应信号1012转发到易失性存储器接口200A(参见图2)。当易失性存储器接口200A被解锁时,易失性存储器接口200A将响应信号1012转发到第一(数据)缓冲区820(例如,图9的框906)。已读取并包括在响应信号1012中的数据自动指示数据读取完成,因此可以表征为数据读取完成响应。与第一(数据)缓冲区820对数据写入完成响应所做的那样,第一(数据)缓冲区820可以将数据读取完成响应按预期顺序放置在响应信号1012中。此时,在该示例中,数据(例如,16字节)已经在第一单读操作中从第一子部分252读取并且由第一(数据)缓冲区820按预期顺序放置。

然后,检错块272基于第一数据地址(例如,图9的框908)确定第一代码地址(“Address_1”)。在图10中,第一代码地址通过将(例如)16兆字节(“MB”)添加到第一数据地址(“Address_0”)来计算。

接下来,检错块272等待(例如,图9的框910)直到第四时刻(例如,在图10中标识为“Time=T4”)。在第四时刻,检错块272经由易失性存储器接口200A(参见图2)请求存储在第二子部分254内的第一代码地址处的检错码。换言之,检错块272将第二读指令发送到保留区250的第二子部分254(例如,图9的框912)。易失性存储器接口200A经由汽车SoC 104的数据主干和存储器子系统826将第二读指令传送到保留区250。在图10中,第二读指令由检错块272在信号1014中发送到第二子部分254。

第二子部分254通过读取第一代码地址处的第一检错码(对于“byte0”)以及从第一代码地址之后的后续代码地址读取后续检错码,从存储器读取检错码。在如图8和图10所示的例子中,检错码的大小均为一字节。然后,第二子部分254向包括从存储器读取的检错码的启动器802发送响应信号1016。在图10中,携带检错码的信号和信号1014由虚线箭头示出。在图10所示的实施例中,响应信号1016由第二子部分254发送到数据主干和存储器子系统826,其将响应信号1016转发到易失性存储器接口200A(参见图2)。当易失性存储器接口200A被解锁时,易失性存储器接口200A将响应信号1016转发到第二(代码)缓冲区822(例如,图9的框914)。已读取并包括在响应信号1016中的检错码自动指示代码读取完成,因此可以表征为代码读取完成响应。与第二(代码)缓冲区822对代码写入完成响应所做的一样,第二(代码)缓冲区822可以将代码读取完成响应按预期顺序放置在响应信号1016中。此时,在该示例中,检错码(例如,16字节)已经在第二单读操作中从第二子部分254中被读取,并由第二(代码)缓冲区822按预期顺序放置。

当检错块272等待(例如,图9的框910)直到第四时刻(例如,在图10中标识为“Time=T4”)时,检错块272仅将第一和第二读指令及时间隔开。在检错块272接收到响应信号1012中的数据之后,检错块272可以从第二子部分254请求检错码。替代地,检错块272在从第二子部分254请求检错码之前可以不等待它接收到响应信号1012中的数据。换句话说,第四时刻可以基于何时发送第一读指令而不是基于何时接收到响应信号1012来确定。

如上所述,因为响应信号1012中的字节可能是乱序的,所以第一(数据)缓冲区820可以对字节重新排序。类似地,当检错码在响应信号1016中乱序时,第二(代码)缓冲区822可以对检错码重新排序。第一(数据)缓冲区820输出信号1022-0到1022-15,每个信号携带一个数据字节,而第二(代码)缓冲区822输出信号1024-0到1024-15,每个信号携带一个检错码。信号1022-0到1022-15分别对应于信号1024-0到1024-15。第一和第二缓冲区820和822可以路由或重新排序信号1022-0到1022-15和1024-0到1024-15,以将每个数据字节相对于为该字节创建的检错码定位在已知位置。在图10所示的实施例中,信号1022-0至1022-15所携带的字节与信号1024-0至1024-15所携带的检错码交错。因此,如图10所示,数据字节被放置在由阴影块b0-b15表示的位置,并且检错码被放置在由块c0-c15表示的位置。

然后,代码生成子块273确定(例如,使用上面的等式1)用于每个数据字节的校验码(例如,图9的框916)。因此,代码生成子块273接收信号1022-0到1022-15中的数据字节和信号1024-0到1024-15中对应的检错码作为输入。

对于每个检错码,检错块272确定检错码是否匹配对应于检错码的校验码(例如,图9的判定框918)。检错块272指示它们是否在传递(pass)信号1030中匹配,该传递信号1030与包括数据字节的数据信号1032一起被转发到逻辑组件1034,如图10所示,该逻辑组件被实现为与(AND)门。如果传递信号1030指示为该字节存储的检错码与为该字节创建的校验码相匹配,则逻辑组件1034将在校验数据信号1036(其仅包括数据字节)中输出该字节并将校验数据信号1036转发给启动器802。另一方面,如果传递信号1030指示失配,则逻辑组件1034不会将校验数据信号1036中的字节转发给启动器802。而是,检错块272可以丢弃该字节和/或用指示失配已发生的信息(例如,零)替换该字节。作为非限制性示例,可以将产生失配的字节的位设置为零。校验数据信号1036被转发到启动器802(例如,图9的框920)。当检错码与对应于该检错码的校验码不匹配时,检错块272可以生成失配错误并将其发送到启动器802(例如,图9的框922)。换言之,如果传递信号1030指示一个或更多个失配,则检错块272可以生成失配错误并将其发送到启动器802。可选地或附加地,检错块272可以将失配错误发送到SI错误聚合器142作为未校正错误。因此,在保留区250中存储和/或从保留区250中检索期间发生在数据或检错码中的任何错误都可以被检测到和报告(例如,作为未校正的错误)。

如上所述,易失性存储器接口200A可以包括将检错块272与易失性存储器126连接的两个并行和可选地专用的接口。在这样的实施例中,检错块272可以在检错块272通过第二接口向第二子部分254发送包括第一代码地址的第二读指令(例如,在信号1014中)的同时,通过第一接口向第一子部分252发送包括第一数据地址的第一读指令(例如,在信号1010中)。此外,从第一子部分252读取的(例如,并在响应信号1012中传送的)数据和从第二子部分254读取的(例如,并在响应信号1016中传送的)检错码可以分别通过第一和第二接口同时传送到第一和第二缓冲区820和822。

参考图2,检错块272可以包括或被连接到至少一个事务定时器,例如出口和入口定时器274和276,其限制检错块272必须从保留区250读取数据和/或写入数据至保留区250的时间量。每当访问传递通过检错块272时,出口定时器274和/或入口定时器276自动启动。例如,每当数据在检错块272和启动器802(例如,处理器140)之间传递时入口定时器276可以启动,并且每当数据在检错块272和SoC域(例如,保留区250)之间传递时出口定时器274就可以启动。入口定时器276可以帮助监控检错块272的功能和/或可以帮助为出口定时器274提供备份功能(例如,如果出口定时器274没有正常工作)。

在写操作期间,在启动器802将数据传递到检错块272以写入保留区250时入口定时器276可以启动(例如,在图7的框702)。然后,当该数据退出检错块272和/或SI域时出口定时器274可以启动(例如,在图7的框708)。当检错块272从保留区250接收到响应(例如,图8中所示的响应信号828)时,出口定时器274可以停止或重置。然后,当响应(例如,图8中所示的响应信号828)由检错块272传送到启动器802(参见图8)时入口定时器276可以停止或重置。如果出口定时器274指示多于第一阈值时间量已经过去并且检错块272没有接收到响应,这意味着启动器802没有接收到来自保留区250的响应(例如,图8中所示的响应信号828),则启动器802(例如,处理器140)生成出口超时错误。如果入口定时器276指示多于第二阈值时间量已经过去并且检错块272没有向启动器802发送响应,这意味着启动器802没有接收到来自保留区250的响应,则启动器802生成入口超时错误。

在读取操作期间,入口定时器276可以在检错块272从启动器802接收到读取请求时启动(例如,在图9的框902)。然后,出口定时器274可以在检错块272从保留区250请求存储在第一数据地址处的数据时(例如,在图9的框904)启动。当检错块272从保留区250接收到数据时(例如,在图9的框906),出口定时器274可以停止或重置。然后,当检错块272将数据传送到启动器802时(例如,在图9的框920),入口定时器276可以停止或重置。如果出口定时器274指示第一阈值时间量已经过去并且检错块272尚未从保留区250接收到数据,这意味着启动器802还没有从检错块272接收到数据(例如,在图10所示的校验数据信号1036中),则启动器802产生出口超时错误。如果入口定时器276指示已经过去了多于第二阈值时间量并且检错块272没有将数据发送到启动器802,这意味着启动器802没有从保留区250接收到数据,则启动器802生成入口超时错误。

图11是根据一些实施例的示出了当检错块272包括或连接到出口和入口定时器274和276(参见图2)时由检错块272(参见图2、图8和图10)生成的错误通知的框图的图示。如图11所示,启动器802(参见图8和图10)向检错块272发送包括第一写指令804(参见图8)或第一读指令1004(参见图10)的信号1102。如上所述,出口定时器274可在写入操作期间数据退出检错块272和/或SI域时启动,出口定时器274可在读取操作期间检错块272从保留区250请求存储在第一数据地址处的数据时启动。框1104指示出口定时器274已超时。例如,当检错块272在写操作期间没有接收到来自保留区250的响应(例如,图8中所示的响应信号828)并且多于第一阈值时间量已经过去时,出口定时器274可超时。作为另一个非限制性示例,当检错块272在读操作期间没有从检错块272接收到数据(例如,在图10中所示的响应信号1012中)并且多于第一阈值时间量已经过去时,出口定时器274可超时。当出口定时器274已超时时,启动器802(例如,处理器140)生成出口超时错误1106并将出口超时错误1106转发到错误记录器1108。另一方面,如果出口定时器274没有超时,则出口定时器274可以停止或重置。这可能发生在在第一阈值时间量已经过去之前检错块272在写操作期间接收到来自保留区250的响应(例如,响应信号828)或者在读操作期间接收到来自保留区250的数据(例如,在响应信号1012中)时,。

如上所述,入口定时器276可以在启动器802在写操作期间将数据传递到检错块272以写入到保留区250(例如,在图7的框702)时启动,或者入口定时器276可以在检错块272在读操作期间接收到来自启动器802的读取请求(例如,在图9的框902)时启动。因此,当信号1102包括第一读指令804(参见图8)或第一读指令1004(参见图10)并且该指令被检错块272(参见图2、图8和图10)接收到时,入口定时器276(参见图2)可以启动。框1114指示入口定时器276已超时。例如,当多于第二阈值时间量已经过去并且启动器802(参见图8)在写操作期间没有接收到来自保留区250的响应(例如,图8中所示的响应信号828)时,入口定时器276可以超时。作为另一个非限制性示例,当多于第二阈值时间量已经过去并且启动器802在读操作期间没有从保留区250接收到数据(例如,图10中所示的校验数据信号1036)时,入口定时器276可以超时。当入口定时器276超时时,启动器802生成入口超时错误1116,并将入口超时错误1116转发给错误记录器1108。另一方面,如果入口定时器276尚未超时,则入口定时器276可以停止或重置。这可能发生在检错块272在写操作期间将响应(例如,响应信号828)传送到启动器802,或者检错块272在读操作期间将数据(例如,校验数据信号1036)传输到启动器802时。

框1124指示检错块272(参见图2、图8和图10)的代码生成子块273(参见图2、图8和图10)可以生成代码生成/校验错误1126,其指示在生成检错码或校验码期间发生了错误。在一些实施例中,代码生成/校验错误1126可用于指示已发生失配。作为非限制性示例,当信号1102包括第一写指令804时,代码生成子块273可以在生成检错码的同时生成代码生成错误。作为其他非限制性示例,当信号1102包括第一读指令1004时,检错块272可以在生成校验码的同时生成失配错误和/或代码生成错误,校验码作为代码生成/校验错误1126被转发到错误记录器1108。

错误记录器1108可以用作将错误1106、1116和1126聚合成错误通知1130的故障聚合器,错误记录器1108将该错误通知1130发送到SI故障聚合器142。

当汽车SoC 104首次启动时,SI 110的处理器140可以尝试从保留区250中预取数据。预取可以表征为来自保留区250的数据的一种类型的非故意读取。由于共享易失性存储器126是易失性的,因此在该点,保留区250可能正存储未初始化数据,其缺少检错码或与失配的检错码相关联。为了防止检错块272产生失配错误,SI 110(例如,处理器140、DMA引擎402和/或类似物)可以针对处理器140将或可能预取的数据将一个或更多个检错码写入保留区250中。作为非限制性示例,SI 110可以将初始数据写入保留区250,这使得检错块272的硬件确定用于初始数据的一个或更多个检错码,每个检错码均与代码地址相关联。然后,SI 110可以使保留区250将每个检错码存储在其相关联的代码地址中。因此,在预取操作期间,由第二子部分254存储的检错码将对应于存储在第一子部分252中的数据,并且检错块272将不会产生失配错误。

参考图2,如果汽车平台100(参见图1)不需要保留区250,SI 110可以将代码生成子块273(参见图2、图8和图10)和/或检错块272关闭(例如使用软件登记写入)。例如,当易失性存储器126以满足汽车平台100的风险等级操作时,SI 110可以关闭代码生成子块273和/或检错块272。

应当理解,本文的这种和其他布置仅作为示例被阐述。除了所示的那些布置和元件之外或代替所示的那些布置和元件,可以使用其他布置和元件(例如,机器、接口、功能、顺序、功能分组等),并且一些元件可以一起省略。进一步,本文描述的许多元件是可被实现为分立或分布式组件或结合其他组件、和在任何合适的组合和位置中实现的功能实体。本文中描述为由实体执行的各种功能可由硬件、固件和/或软件执行。例如,各种功能可通过处理器执行存储在存储器中的指令来执行。

示例自主车辆

图12是根据本公开一些实施例的示例自主车辆1200的图示。自主车辆1200(可替代地在此被称为“车辆1200”)可以包括但不限于,客运车辆,如小汽车、卡车、公共汽车、第一响应车辆,穿梭件、电动或机动自行车、摩托车、消防车、警用车辆,救护车、船、建筑车辆、水下船只、无人机和/或另一类型的车辆(例如,无人机和/或容纳一个或更多个乘客的车辆)。自主车辆通常按照自动化级别进行描述,该自动化级别由国家高速公路交通安全管理局(NHTSA)、美国运输部部门以及汽车工程师协会(SAE)在“与用于道路机动车辆驾驶自动化系统相关的术语的分类和定义”(公开于2018年6月15日的标准号J3016-201806,公开于2016年9月30日的标准号No.J3016-201609,以及此标准的先前和未来版本)来定义。车辆1200能够具有根据由SAE定义的自主驾驶级别中的2级-5级中的一个或更多个的功能。例如,取决于实施例,车辆1200能够具有部分驾驶自动化(级别2)、条件自动化(级别3)、高自动化(级别4)和/或全自动化(级别5)。

车辆1200可包括诸如底盘、车身、车轮(例如,2、4、6、8、18个等)、轮胎、车轴和车辆的其他部件的部件。车辆1200可包括推进系统1250,诸如内燃机、混合电力站、全电力发动机和/或另一推进系统类型。推进系统1250可连接至车辆1200的传动系,该传动系可包括变速器,以使车辆1200能够推进。推进系统1250可响应于从油门/加速器1252接收信号来控制。

当推进系统1250操作时(例如,当车辆在运动中时),可包括方向盘的转向系统1254可用于转向车辆1200(例如,沿着期望的路径或路线)。转向系统1254可从转向致动器1256接收信号。方向盘对于全自动化(级别5)功能可以是可选的。

制动传感器系统1246可用于响应于从制动致动器1248和/或制动传感器接收信号来操作车辆制动器。

可以包括一个或更多个CPU、片上系统(SoC)1204(图14)和/或GPU的控制器1236可以向车辆1200的一个或更多个部件和/或系统提供信号(例如,表示命令)。例如,一个或更多个控制器可以发送信号以经由一个或更多个制动致动器1248来操作车辆制动、经由一个或更多个转向致动器1256来操作转向系统1254和/或经由一个或更多个油门/加速器1252来操作推进系统1250。控制器1236可以包括一个或更多个车载(例如,集成)计算装置(例如,超级计算机),其处理传感器信号,并输出操作命令(例如,表示命令的信号)以使能自主驾驶和/或辅助人类驾驶员驾驶车辆1200。控制器1236可以包括用于自主驾驶功能的第一控制器1236、用于功能安全功能的第二控制器1236、用于人工智能功能(例如,计算机视觉)的第三控制器1236、用于信息娱乐功能的第四控制器1236、用于在紧急情况下冗余的第五控制器1236、和/或其他控制器。在一些示例中,单个控制器1236可以处理以上功能中的两个或更多个,两个或更多个控制器1236可以处理单个功能,和/或其任何组合。

控制器1236可以响应于从一个或更多个传感器接收的传感器数据(例如,传感器输入)提供用于控制车辆1200的一个或更多个部件和/或系统的信号。传感器数据可从例如但不限于全球导航卫星系统传感器1258(例如,全球定位系统传感器)接收,一个或更多个RADAR传感器1260、一个或更多个超声波传感器1262、一个或更多个LIDAR传感器1264、一个或更多个惯性测量单元(IMU)传感器1266(例如,一个或更多个加速度计、一个或更多个陀螺仪、一个或更多个磁罗盘、一个或更多个磁力计等),一个或更多个麦克风1296、一个或更多个立体相机1268、一个或更多个广角相机1270(例如,鱼眼相机),一个或更多个红外相机1272、一个或更多个环绕相机1274(例如,360度相机)、一个或更多个远程和/或中程相机1298,一个或更多个速度传感器1244(例如,用于测量车辆1200的速度)、一个或更多个振动传感器1242,转向传感器1240、制动传感器1246(例如,作为制动传感器系统1246的一部分),和/或其他传感器类型。

控制器1236中的一个或更多个可以从车辆1200的仪表板1232接收输入(例如,由输入数据表示)并且经由人机界面(HMI)显示器1234提供输出(例如,由输出数据、显示数据等表示),可听到的信号器、扬声器、和/或通过车辆1200的其他部件。输出可以包括诸如车辆速度、速度、时间、地图数据(例如,图14的HD映射1222)的信息,位置数据(例如,车辆1200的位置,诸如在地图上),方向、其他车辆(例如,占用网格)的位置、关于如由控制器1236感知的对象和对象的状态的信息,等等。例如,HMI显示器1234可显示关于一个或更多个对象(例如,街道标志、注意标志、交通灯改变等)的存在的信息,和/或关于车辆已进行、正在进行或将进行的驾驶操纵(例如,现在改变车道、在两英里内驶出出口34B等)的信息。

车辆1200进一步包括网络接口1224,该网络接口可以使用一个或更多个无线天线1226和/或调制解调器通过一个或更多个网络进行通信。例如,网络接口1224可以能够通过LTE、WCDMA、UMTS、GSM、CDMA2000等进行通信。无线天线1226还可使用局域网(诸如蓝牙、蓝牙LE、Z波、ZigBee等)和/或低功率广域网(LPWAN)(诸如LoRaWAN、SigFox等)来实现环境中的对象(例如,车辆、移动设备等)之间的通信。

如以上所提到的,在至少一些实施例中,汽车平台100(参见图1)可以是自动车辆1200的组件。在这样的实施例中。一个或更多个控制器1236包括汽车SoC 104。

图13是根据本发明的一些实施例的图12的示例自主车辆1200的相机位置和视野的示例。相机和相应的视场是一个举例实施例,并且不旨在是限制性的。例如,可以包括附加的和/或替代的相机和/或相机可以位于车辆1200上的不同位置。

相机的相机类型可包括但不限于可适于与车辆1200的组件和/或系统一起使用的数码相机。相机可以在汽车安全完整性等级(ASIL)B和/或在另一ASIL操作。取决于实施例,相机类型可以具有任何图像捕获速率,诸如60帧每秒(fps)、120fps、240fps等。相机可能能够使用卷帘式快门、全局快门、另一类型的快门或其组合。在一些示例中,滤色器阵列可包含红色透明透明(RCCC)滤色器阵列,红色透明蓝色(RCCB)滤色器阵列、红色蓝色绿色透明(RBGC)滤色器阵列,Foveon X3滤色器阵列、拜耳传感器(RGGB)滤色器阵列、单色传感器滤色器阵列,和/或另一种类型的滤色器阵列。在一些实施例中,透明像素相机(如具有RCCC、RCCB和/或RBGC滤色器阵列的相机)可以用于努力增加光敏度。

在一些示例中,相机中的一个或更多个可用以执行高级驾驶员辅助系统(ADAS)功能(例如,作为冗余或故障安全设计的部分)。例如,可以安装多功能单摄像头以提供包括车道偏离警告、交通标志辅助和智能前照灯控制的功能。相机中的一个或更多个(例如,所有相机)可同时记录和提供图像数据(例如,视频)。

相机中的一个或更多个可安装在诸如定制设计(3D打印)组件之类的安装组件中,以便削减可能干扰相机的图像数据捕捉能力的来自汽车内的杂散光和反射(例如,来自仪表板的反射在挡风玻璃镜子中反射)。参考翼面镜安装组件,翼面镜组件可以被定制3D打印,使得相机安装板匹配翼面镜的形状。在一些示例中,一个或更多个相机可被集成到翼状镜中。对于侧视相机,相机也可集成在座舱的每个拐角处的四个支柱内。

具有包含车辆1200前方环境的部分的视野的相机(例如,面向前方的相机)可用于环绕视野,在一个或更多个控制器1236和/或控制SoC的帮助下帮助识别面向前的路径和障碍物,以及帮助,提供对生成占用网格和/或确定优选车辆路径至关重要的信息。前置相机可用于执行与LIDAR相同的ADAS功能中的许多功能,包括紧急制动、行人检测和碰撞避免。前置相机还可用于ADAS功能和系统,包括车道偏离警告(LDW)、自主巡航控制(ACC)和/或其他功能(诸如交通标志识别)。

多种相机可以用于面向前方的配置中,包括例如包括CMOS(互补金属氧化物半导体)彩色成像器的单目相机平台。另一示例可为可用以感知从外围进入视图的对象(例如,行人、交叉交通或自行车)的广角相机1270。虽然在图13中仅示出一个广角相机,但是在车辆1200上可存在任意数量的广角相机1270。另外,一个或更多个远程相机1298(例如,长视图立体相机对)可被用于基于深度的对象检测,尤其对于神经网络尚未被训练的对象。远程相机1298还可用于对象检测和分类,以及基本对象跟踪。

一个或更多个立体相机1268也可被包括在面向前方的配置中。立体相机1268可包含集成控制单元,集成控制单元包含可缩放处理单元,可缩放处理单元可提供可编程逻辑(例如,FPGA)和在单个芯片上具有集成CAN或以太网接口的多核微处理器。该单元可用于产生车辆环境的3D图,包括图像中的所有点的距离估计。替代的立体相机1268可以包括紧凑的立体视觉传感器和图像处理芯片,紧凑的立体视觉传感器可以包括两个相机镜头(每个相机镜头在左侧和右侧),图像处理芯片可以测量从车辆到目标物体的距离并且使用所生成的信息(例如,元数据)来激活自主紧急制动和车道偏离警告功能。除了本文描述的立体相机之外或替代本文描述的立体相机,可使用其他类型的立体相机1268。

具有包括车辆1200侧的环境的部分的视野的相机(例如,侧视相机)可用于周围视野、提供用于创建和更新占用网格的信息以及生成侧冲击碰撞警告。例如,一个或更多个环绕相机1274(例如,如图13中所示的四个环绕相机1274)可以定位在车辆1200周围。环绕相机1274可包含广角相机1270、鱼眼相机、360度相机和/或类似物。例如,四个鱼眼摄像头可以位于车辆的前部、后部和侧部。在替代布置中,车辆可使用三个环绕相机1274(例如,左、右和后),且可利用一个或更多个其他相机(例如,面向前方的相机)作为第四环绕视图相机。

具有包括车辆1200后方的环境的部分的视野的相机(例如,后视相机)可以用于停车辅助、环绕视野、后方碰撞警告以及创建和更新占用网格。可使用各种各样的相机,包括但不限于也适合作为一个或更多个前置相机(例如,一个或更多个远程和/或中程相机1298、一个或更多个立体相机1268)、一个或更多个红外相机1272等)的相机,如本文中所描述的。

图14是根据本公开的一些实施例的图12的示例自主车辆1200的示例系统架构的框图。应当理解,本文的这种和其他布置仅作为示例被阐述。除了所示的那些布置和元件之外或代替所示的那些布置和元件,可以使用其他布置和元件(例如,机器、接口、功能、顺序、功能分组等),并且一些元件可以一起省略。进一步,本文描述的许多元件是可被实现为分立或分布式组件或结合其他组件、和在任何合适的组合和位置中实现的功能实体。本文中描述为由实体执行的不同功能可由硬件、固件和/或软件执行。例如,不同功能可由执行存储在存储器中的指令的处理器执行。

图14中的车辆1200的每个部件、特征和系统被示出为经由总线1202连接。总线1202可以包括控制器局域网络(CAN)数据接口(可替代地在此被称为“CAN总线”)。CAN可以是车辆1200内部的网络,用于帮助控制车辆1200的各种特征和功能,诸如制动器的致动、加速、制动、转向、风挡擦拭器等。CAN总线可以被配置成具有几十或甚至几百个节点,每个节点具有其自己的唯一标识符(例如,CAN ID)。可以读取CAN总线以找到方向盘角度、地面速度、发动机每分钟转数(RPM)、按钮位置和/或其他车辆状态指示器。CAN总线可以是符合ASIL B的。

尽管总线1202在本文中被描述为CAN总线,但这并非旨在进行限制。例如,作为CAN总线的补充或替代,可以使用FlexRay和/或以太网。另外,尽管使用单个线来表示总线1202,但这并非旨在进行限制。例如,可以存在任何数量的总线1202,其可以包括一个或更多个CAN总线、一个或更多个FlexRay总线、一个或更多个以太网总线、和/或使用不同协议的一个或更多个其他类型的总线。在一些示例中,两个或两个以上总线1202可用以执行不同功能,和/或可用于冗余。例如,第一总线1202可用于避免碰撞功能,第二总线1202可用于致动控制。在任何示例中,每条总线1202可以与车辆1200的任何部件通信,并且两条或更多条总线1202可以与相同的部件通信。在一些示例中,车辆内的每个SoC 1204、每个控制器1236、和/或每个计算机可以访问相同的输入数据(例如,来自车辆1200的传感器的输入),并且可以连接至公共总线,如CAN总线。

车辆1200可以包括一个或更多个控制器1236,诸如在此关于图12所描述的那些。控制器1236可以用于多种功能。控制器1236可耦接至车辆1200的各种其他部件和系统中的任一个,并且可用于控制车辆1200、车辆1200的人工智能、车辆1200的信息娱乐等。

车辆1200可包括片上系统(SoC)1204。SoC 1204可以包括一个或更多个CPU 1206、一个或更多个GPU 1208、一个或更多个处理器1210、一个或更多个高速缓存1212、一个或更多个加速器1214、一个或更多个数据存储1216和/或未示出的其他组件和特征。一个或更多个SoC 1204可以用于在各种平台和系统中控制车辆1200。例如,一个或更多个SoC 1204可以在系统(例如,车辆1200的系统)中与HD映射1222组合,HD映射1222可以经由网络接口1224从一个或更多个服务器(例如,图15的一个或更多个服务器1278)获得地图刷新和/或更新。

一个或更多个CPU 1206可以包括CPU集群或CPU复合体(可替代地在本文中被称为“CCPLEX”)。CPU 1206可包括多个核和/或L2高速缓存。例如,在一些实施例中,一个或更多个CPU 1206可以包括一致多处理器配置中的八个核。在一些实施例中,一个或更多个CPU1206可以包括四个双核集群,其中,每个集群具有专用L2高速缓存(例如,2MB L2高速缓存)。CPU 1206(例如,CCPLEX)可经配置以支持同时集群操作,从而使得CPU 1206的集群的任何组合能够在任何给定时间活动。

CPU 1206可实现功率管理能力,该功率管理能力包括以下特征中的一个或更多个:各个硬件块可在空闲时被自动时钟门控以节省动态功率;当核归因于WFI/WFE指令的执行而不活跃地执行指令时,可门控每一核时钟;每个核可以被独立地电源门控;当所有核被时钟门控或电源门控时,每个核集群可以被独立地时钟门控;和/或每个核心集群可在所有核心被功率门控时独立地被功率门控。CPU 1206还可以实现用于管理功率状态的增强算法,其中规定了允许的功率状态和期望的唤醒时间,并且硬件/微代码确定针对核、集群和CCPLEX要进入的最佳功率状态。处理核可以在工作卸载到微代码的软件中支持简化的功率状态进入序列。

GPU 1208可以包括集成GPU(可替代地在此被称为“iGPU”)。GPU1208可为可编程的且可对于并行工作负荷有效。在一些示例中,GPU 1208可使用增强的张量指令集。GPU 1208可包含一个或更多个流式微处理器,其中每一流式微处理器可包含L1高速缓冲存储器(例如,具有至少96KB存储容量的L1高速缓冲存储器),且流式微处理器中的两者或两者以上可共享L2高速缓冲存储器(例如,具有512KB存储容量的L2高速缓冲存储器)。在一些实施例中,一个或更多个GPU 1208可以包括至少八个流送微处理器。GPU 1208可以使用基于计算机的应用编程接口(API)。另外,一个或更多个GPU 1208可以使用一个或更多个并行计算平台和/或编程模型(例如,NVIDIA的CUDA)。

GPU 1208可经电力优化以用于汽车和嵌入式使用情况中的最佳性能。例如,GPU1208可制造于鳍式场效应晶体管(FinFET)上。然而,这并不旨在是限制性的,并且可以使用其他半导体制造工艺来制造GPU 1208。每个流式微处理器可以合并被分割成多个块的多个混合精度处理核。例如但不限于,64个PF32核和32个PF64核可分为四个处理块。在此示例中,每一处理块可被分配16个FP32核心、8个FP64核心、16个INT32核心、用于深度学习矩阵运算的两个混合精度NVIDIA TENSOR CORE、LO指令高速缓冲存储器、扭曲调度器、分派单元和/或64KB寄存器文件。此外,流式微处理器可以包括独立的并行整数和浮点数据路径,以便利用计算和寻址计算的混合来提供工作负荷的有效执行。流式微处理器可以包括独立的线程调度能力,以实现并行线程之间的更细粒度的同步和协作。流式微处理器可以包括组合的L1数据高速缓存和共享存储器单元,以便在简化编程的同时改善性能。

GPU 1208可包含高带宽存储器(HBM)和/或16GB HBM2存储器子系统,以在一些示例中提供约900GB/秒的峰值存储器带宽。在一些示例中,作为HBM存储器的补充或替代,可以使用同步图形随机存取存储器(SGRAM),诸如图形双倍数据速率类型五同步随机存取存储器(GDDR5)。

GPU 1208可包含统一存储器技术,统一存储器技术包含存取计数器,以允许将存储器页更准确地迁移到最频繁地存取存储页的处理器,进而改进处理器之间共享的存储器范围的效率。在一些示例中,可使用地址转换服务(ATS)支持来允许GPU 1208直接存取CPU1206页表。在此些示例中,当GPU 1208存储器管理单元(MMU)经历未中时,可将地址转换请求发射到CPU 1206。作为响应,CPU 1206可在其页表中查找地址的虚拟到物理映射,且将翻译传送回到GPU 1208。照此,统一存储器技术可以允许单个统一虚拟地址空间用于一个或更多个CPU 1206和一个或更多个GPU 1208两者的存储器,从而简化一个或更多个GPU 1208将应用编程和移植到一个或更多个GPU 1208。

另外,GPU 1208可包含存取计数器,其可跟踪GPU 1208对其他处理器的存储器的存取频率。存取计数器可帮助确保存储器页移动到最频繁地存取页的处理器的物理存储器。

一个或更多个SoC 1204可以包括任何数量的一个或更多个高速缓存1212,包括在此描述的那些。例如,一个或更多个高速缓存1212可包括可用于一个或更多个CPU 1206和一个或更多个GPU 1208两者(例如,连接到一个或更多个CPU 1206和一个或更多个GPU1208两者)的L3高速缓存。高速缓存1212可包括可诸如通过使用高速缓存一致性协议(例如,MEI、MESI、MSI等)来跟踪行的状态的回写高速缓存。取决于实施例,L3高速缓存可以包括4MB或更多,尽管可以使用较小的高速缓存大小。

一个或更多个SoC 1204可以包括一个或更多个算术逻辑单元(ALU),算术逻辑单元可以在执行关于车辆1200的各种任务或操作中的任何任务或操作(如处理DNN)的处理中被利用。此外,一个或更多个SoC 1204可以包括用于在系统内执行数学运算的一个或更多个浮点单元(FPU)(或其他数学协处理器或数字协处理器类型)。例如,一个或更多个SoC1204可以包括集成为一个或更多个CPU 1206和/或一个或更多个GPU 1208内的执行单元的一个或更多个FPU。

SoC 1204可以包括一个或更多个加速器1214(例如,硬件加速器、软件加速器或其组合)。例如,一个或更多个SoC 1204可包括硬件加速集群,该硬件加速集群可包括经优化的硬件加速器和/或大片上存储器。大片上存储器(例如,4MB的SRAM)可以使硬件加速集群能够加速神经网络和其他计算。硬件加速集群可以用于补充GPU 1208和卸载GPU 1208的一些任务(例如,释放GPU 1208的更多周期用于执行其他任务)。作为示例,一个或更多个加速器1214可以用于足够稳定以易于进行加速的目标工作负荷(例如,感知、卷积神经网络(CNN)等)。如在此所使用的术语“CNN”可以包括所有类型的CNN,包括基于区域的或区域的卷积神经网络(RCNN)和快速RCNN(例如,如用于对象检测)。

加速器1214(例如,硬件加速集群)可以包括深度学习加速器(DLA)。DLA可以包括一个或更多个张量处理单元(TPU),其可以被配置为提供额外的每秒10万亿次操作以用于深度学习应用和推断。TPU可以是配置成执行图像处理功能(例如,针对CNN、RCNN等)并优化用于执行图像处理功能(例如,针对CNN、RCNN等)的加速器。DLA可进一步针对神经网络类型和浮点运算的特定集合以及推断来优化。DLA的设计可以提供比通用GPU每毫米更多的性能,并且大大超过CPU的性能。TPU可执行若干功能,包括单个示例卷积功能,支持例如INT8、INT16和FP16数据类型以用于特征和权重,以及后处理器功能。

DLA可以对用于多种功能中的任何功能的经处理或未经处理的数据快速且高效地执行神经网络,尤其是CNN,包括例如但不限于:CNN,用于使用来自相机传感器的数据进行对象识别和检测;CNN,用于使用来自照相机传感器的数据进行距离估计;CNN,用于使用来自麦克风的数据进行急救车辆检测和识别和检测;CNN,用于使用来自相机传感器的数据进行面部识别和车辆所有者识别;和/或CNN,用于安全和/或安全相关事件。

DLA可以执行GPU 1208的任何功能,并且通过使用例如推断加速器,设计者可以将DLA或GPU 1208作为任何功能的目标。例如,设计者可将对CNN的处理和浮点操作集中在DLA上,且将其他功能留给GPU 1208和/或其他加速器1214。

加速器1214(例如,硬件加速集群)可包括可编程视觉加速器(PVA),其在本文中可替代地被称为计算机视觉加速器。PVA可以设计和配置成加速用于高级驾驶员辅助系统(ADAS)、自主驾驶和/或增强现实(AR)和/或虚拟现实(VR)应用的计算机视觉算法。PVA可提供性能和柔性之间的平衡。例如,每个PVA可以包括例如但不限于任何数量的精简指令集计算机(RISC)核、直接存储器访问(DMA)和/或任何数量的向量处理器。

RISC核可以与图像传感器(例如,在此描述的任何相机的图像传感器)、图像信号处理器等交互。RISC核中的每一个可以包括任何量的存储器。取决于实施例,RISC核可以使用多种协议中的任何一种。在一些示例中,RISC核可执行实时操作系统(RTOS)。RISC核可使用一个或更多个集成电路设备、专用集成电路(ASIC)和/或存储器设备来实现。例如,RISC核可包括指令高速缓存和/或紧密耦合的RAM。

DMA可使得PVA的组件能够独立于CPU 1206来访问系统存储器。DMA可以支持用于向PVA提供优化的任何数量的特征,包括但不限于支持多维寻址和/或循环寻址。在一些示例中,DMA可支持高达六个或更多个寻址维度,其可包含块宽度、块高度、块深度、水平块步进、垂直块步进和/或深度步进。

向量处理器可为可编程处理器,其可经设计以有效且灵活地执行用于计算机视觉算法的编程且提供信号处理能力。在一些示例中,PVA可以包括PVA核和两个向量处理子系统分区。PVA核可包括处理器子系统、一个或更多个DMA引擎(例如,两个DMA引擎)和/或其他外围设备。向量处理子系统可以作为PVA的主处理引擎来操作,并且可以包括向量处理单元(VPU)、指令高速缓存和/或向量存储器(例如,VMEM)。VPU核可包含数字信号处理器,例如单指令、多数据(SIMD)、超长指令字(VLIW)数字信号处理器。SIMD和VLIW的组合可以增强吞吐量和速度。

向量处理器中的每一者可包含指令高速缓冲存储器且可耦合到专用存储器。因此,在一些示例中,向量处理器中的每一者可经配置以独立于其他向量处理器执行。在其他示例中,包括在特定PVA中的向量处理器可以被配置成采用数据并行性。例如,在一些实施例中,包括在单个PVA中的多个矢量处理器可以执行相同的计算机视觉算法,但是在图像的不同区域上。在其他示例中,特定PVA中包含的向量处理器可对同一图像同时执行不同计算机视觉算法,或甚至对连续图像或图像的部分执行不同算法。除其他之外,任何数量的PVA可被包括在硬件加速集群中,并且任何数量的向量处理器可被包括在每个PVA中。另外,一个或更多个PVA可以包括附加的纠错码(ECC)存储器,以增强整体系统安全性。

加速器1214(例如,硬件加速集群)可以包括片上计算机视觉网络和SRAM,用于为加速器1214提供高带宽、低延迟SRAM。在一些示例中,片上存储器可以包括至少4MB的SRAM,其由例如但不限于八个字段可配置的存储器块组成,其可以由PVA和DLA两者访问。每对存储块可以包括高级外围总线(APB)接口、配置电路、控制器和多路复用器。可以使用任何类型的存储器。PVA和DLA可经由向PVA和DLA提供对存储器的高速访问的主干来访问存储器。主干可包括将PVA和DLA互连到存储器(例如,使用APB)的计算机视觉片上网络。

计算机视觉片上网络可以包括在传输任何控制信号/地址/数据之前确定PVA和DLA两者提供就绪信号和有效信号的接口。这种接口可以提供用于传输控制信号/地址/数据的保留区的相位和保留区的信道,以及用于连续数据传输的突发型通信。这种类型的接口可以符合ISO 26262或IEC61508标准,尽管可以使用其他标准和协议。

在一些示例中,一个或更多个SoC 1204可以包括实时光线追踪硬件加速器,如在美国所描述的。2018年8月10日提交的专利申请号16/101,232。实时光线跟踪硬件加速器可以用于快速且高效地确定对象的位置和范围(例如,在世界模型内),生成用于RADAR信号解释、用于声音传播合成和/或分析的实时可视化模拟,用于SONAR系统的模拟、用于一般波传播模拟、用于出于定位和/或其他功能的目的与LIDAR数据进行比较,和/或用于其他用途。在一些实施例中,一个或更多个树遍历单元(TTU)可以用于执行一个或更多个光线跟踪相关操作。

加速器1214(例如,硬件加速器集群)具有用于自主驾驶的广泛的使用阵列。PVA可以是可编程视觉加速器,其可用于ADAS和自动交通工具中的关键处理阶段。PVA的能力对于需要可预测处理的算法域在低功率和低等待时间下是良好匹配的。换言之,PVA对半密集或密集的规则计算、甚至对小数据集执行良好,这些小数据集需要具有低等待时间和低功率的可预测的运行时间。因此,在自动交通工具的平台的背景下,PVA被设计成运行经典计算机视觉算法,因为它们在对象检测方面是高效的并且在整数数学上操作。

例如,根据本技术的一个实施例,PVA用于执行计算机立体视觉。在一些示例中,可使用基于半全局匹配的算法,但这不意欲为限制性的。用于3级自主驾驶的许多应用需要飞行中的运动估计/立体匹配(例如,来自运动的结构、行人识别、车道检测等)。PVA可以对来自两个单目相机的输入执行计算机立体视觉功能。

在一些示例中,PVA可用以执行密集光流。例如,PVA可用于处理原始RADAR数据(例如,使用4D快速傅里叶变换)以在发射下一RADAR脉冲之前提供经处理的RADAR信号。在其他示例中,PVA用于飞行时间深度处理,例如通过处理原始飞行时间数据以提供经处理的飞行时间数据。

DLA可用于运行任何类型的网络以增强控制和驾驶安全性,包括例如输出每个对象检测的置信度测量的神经网络。这种置信度值可以被解释为概率,或被解释为提供每个检测与其他检测相比的相对“权重”。此置信度值使得系统能够做出关于哪些检测应被视为真阳性检测而非假阳性检测的进一步决策。例如,系统可以设置置信度的阈值,并且仅将超过阈值的检测视为真阳性检测。在自动紧急制动(AEB)系统中,假阳性检测将导致车辆自动执行紧急制动,这显然是不期望的。因此,只有最确信的检测应当被认为是AEB的触发。DLA可以运行用于回归置信度值的神经网络。神经网络可以将诸如边界框维度之类的参数的至少一些子集作为其输入,(例如从另一子系统获得的)接地平面估计、与车辆1200取向相关的惯性测量单元(IMU)传感器1266输出,距离、从神经网络和/或其他传感器(例如,LIDAR传感器1264或RADAR传感器1260)获得的对象的3D位置估计,除其他之外。

一个或更多个SoC 1204可以包括一个或更多个数据存储1216(例如,存储器)。一个或更多个数据存储1216可以是一个或更多个SoC 1204的片上存储器,其可以存储要在GPU和/或DLA上执行的神经网络。在一些示例中,一个或更多个数据存储1216的容量可足够大以存储神经网络的多个示例以用于冗余和安全。数据存储1216可包括L2或L3高速缓冲存储器1212。对数据存储1216的引用可以包括对与PVA、DLA和/或其他加速器1214相关联的存储器的引用,如本文所描述的。

SoC 1204可以包括一个或更多个处理器1210(例如,嵌入式处理器)。处理器1210可以包括引导和功率管理处理器,其可以是用于处理引导功率和管理功能和相关安全实施的专用处理器和子系统。引导和功率管理处理器可以是SoC 1204引导序列的一部分,并且可以提供运行时间功率管理服务。启动电源和管理处理器可以提供时钟和电压编程、系统低功率状态转换的辅助、SoC 1204热和温度传感器的管理、和/或SoC 1204功率状态的管理。每个温度传感器可以被实现为其输出频率与温度成比例的环形振荡器,并且SoC 1204可以使用环形振荡器来检测CPU 1206、GPU 1208和/或加速器1214的温度。如果确定温度超过阈值,则启动和电力管理处理器可以进入温度故障例程并且将SoC 1204置于较低电力状态和/或将车辆1200置于排队到安全停止模式(例如,使车辆1200安全停止)。

处理器1210可进一步包含可用作音频处理引擎的一组嵌入式处理器。音频处理引擎可以是音频子系统,其使得能够在多个接口和广泛和灵活范围的音频I/O接口上对多通道音频进行全硬件支持。在一些示例中,音频处理引擎是具有专用RAM的数字信号处理器的专用处理器核。

处理器1210可进一步包含始终开启处理器引擎,其可提供必要的硬件特征以支持低功率传感器管理和唤醒使用情况。常通处理器引擎可以包括处理器核、紧密耦合的RAM、支持外围设备(例如,定时器和中断控制器)、不同I/O控制器外围设备和路由逻辑。

处理器1210可进一步包括安全集群引擎,该安全集群引擎包括用于处理汽车应用的安全管理的专用处理器子系统。安全集群引擎可以包括两个或更多个处理器核心、紧密耦合的RAM、支持外围设备(例如,定时器、中断控制器等)和/或路由逻辑。在安全模式中,两个或更多个核可在锁步模式中操作,并且充当具有比较逻辑的单个核以检测其操作之间的任何差异。

处理器1210可进一步包含实时相机引擎,实时相机引擎可包含用于处理实时相机管理的专用处理器子系统。

处理器1210可进一步包含高动态范围信号处理器,其可包含作为相机处理管线的一部分的硬件引擎的图像信号处理器。

处理器1210可包括视频图像合成器,该视频图像合成器可为处理块(例如,在微处理器上实现),该处理块实现视频回放应用所需的视频后处理功能以产生播放器窗口的最终图像。视频图像合成器可对广角相机1270、周围相机1274和/或舱内监视相机传感器执行透镜失真校正。舱内监视相机传感器优选地由在高级SoC的另一示例上运行的神经网络监视,该神经网络被配置为识别舱内事件并相应地响应。机舱内系统可以执行唇缘读取以激活蜂窝服务并发起电话呼叫、指示电子邮件、改变车辆的目的地、激活或改变车辆的信息娱乐系统和设置、或提供语音激活的网络冲浪。某些功能仅当车辆在自主模式下运行时才对驾驶员可用,否则被禁用。

视频图像合成器可包含用于空间和时间噪声减少的增强的时间噪声减少。例如,在视频中发生运动的情况下,噪声减少适当地加权空间信息,从而减少由相邻帧提供的信息的权重。在图像或图像的部分不包括运动的情况下,由视频图像合成器执行的时间噪声降低可使用来自先前图像的信息来降低当前图像中的噪声。

视频图像合成器还可以被配置为对输入的立体透镜帧执行立体校正。视频图像合成器可进一步在操作系统桌面在使用中时用于用户接口合成,且不需要GPU 1208连续地再现新表面。即使当GPU 1208被上电并主动执行3D渲染时,视频图像合成器也可以用于卸载GPU 1208以改善性能和响应性。

一个或更多个SoC 1204可以进一步包括用于从相机接收视频和输入的移动行业处理器接口(MIPI)相机串行接口、高速接口、和/或可以用于相机和相关像素输入功能的视频输入块。SoC 1204还可以包括输入/输出控制器,输入/输出控制器可以由软件控制并且可以用于接收未提交到特定角色的I/O信号。

一个或更多个SoC 1204可以进一步包括各种各样的外围接口,以使得能够与外围设备、音频编解码器、功率管理、和/或其他设备进行通信。SoC 1204可用于处理来自相机(例如,通过千兆位多媒体串行链路和以太网连接)的数据,传感器(例如,可以通过以太网连接的LIDAR传感器1264、RADAR传感器1260等),来自总线1202的数据(例如,车辆1200的速度、方向盘位置等)、来自GNSS传感器1258(例如,通过以太网或CAN总线连接)的数据。SoC1204还可包括专用高性能大容量存储控制器,该专用高性能大容量存储控制器可包括它们自己的DMA引擎,并且可用于使CPU 1206免于例程数据管理任务。

SoC 1204可以是具有跨越自动化级别35的灵活架构的端到端平台,由此提供全面的功能安全架构,其充分利用和有效地利用计算机视觉和ADAS技术以用于多样性和冗余性,为灵活、可靠的驱动软件栈以及深度学习工具提供平台。SoC 1204可以比常规系统更快、更可靠、甚至更节能和空间高效。例如,一个或更多个加速器1214在与一个或更多个CPU1206、一个或更多个GPU 1208和一个或更多个数据存储设备1216组合时可以提供用于3-5级自主车辆的快速、高效的平台。

因此,本技术提供常规系统不能实现的能力和功能性。例如,计算机视觉算法可在CPU上执行,CPU可使用高级编程语言(例如C编程语言)配置以跨越广泛多种视觉数据执行广泛多种处理算法。然而,CPU常常不能满足许多计算机视觉应用的性能要求,例如与执行时间和功率消耗相关的那些计算机视觉应用。特别地,许多CPU不能实时执行复杂的目标检测算法,这是车辆ADAS应用中的要求,以及对实际3-5级自主车辆的要求。

与常规系统相反,通过提供CPU复合体、GPU复合体和硬件加速集群,本文中所描述的技术允许同时和/或顺序地执行多个神经网络,并且允许结果组合在一起以实现3级自主驾驶功能。例如,在DLA或dGPU(例如,一个或更多个GPU 1220)上执行的CNN可以包括文本和词语识别,从而允许超级计算机读取和理解流量标志,包括神经网络尚未被具体训练的标志。DLA可进一步包括神经网络,该神经网络能够识别、解释和提供对标志的语义理解,并且将该语义理解传递给在CPU复合体上运行的路径规划模块。

作为另一个示例,可以同时运行多个神经网络,如3级、4级或5级驾驶所要求的。例如,由“警告:闪光指示结冰状况”组成的警告标志连同电灯可以独立地或共同地被若干神经网络解释。标志本身可被第一部署的神经网络(例如,已被训练的神经网络)标识为话务标志,文本“闪光灯指示结冰状况”可以由第二部署的神经网络解释,其通知车辆的路径规划软件(优选在CPU复合体上执行)何时检测到闪光灯,存在结冰条件。闪光灯可通过在多个帧上操作第三部署的神经网络来识别,通知交通工具的路径规划软件闪光灯的存在(或不存在)。所有三个神经网络可同时运行,诸如在DLA内和/或在GPU 1208上运行。

在一些示例中,用于面部识别和车辆所有者识别的CNN可使用来自相机传感器的数据来识别授权驾驶员和/或车辆1200的所有者的存在。常通传感器处理引擎可以用于当所有者接近驾驶员门时解锁车辆并打开灯,以及在安全模式中,当所有者离开车辆时禁用车辆。以此方式,一个或更多个SoC 1204提供针对盗窃和/或劫持的安全性。

在另一示例中,用于急救车辆检测和识别的CNN可使用来自麦克风1296的数据来检测和识别急救车辆警报器。与使用通用分类器来检测警报并手动提取特征的常规系统相反,一个或更多个SoC 1204使用CNN来对环境和城市声音进行分类,以及对视觉数据进行分类。在优选实施例中,在DLA上运行的CNN被训练为识别急救车辆的相对关闭速度(例如,通过使用多普勒效应)。CNN还可被训练成识别特定于车辆正在操作的局部区域的急救车辆,如由GNSS传感器1258识别的。因此,例如,当在欧洲操作时,CNN将寻求检测欧洲汽笛,而当在美国时,CNN将寻求仅识别北美汽笛。一旦检测到紧急车辆,控制程序可以用于在超声波传感器1262的帮助下执行紧急车辆安全例程、减慢车辆、向道路侧拉起、停放车辆、和/或使车辆空转,直到紧急车辆经过。

该车辆可以包括一个或更多个CPU 1218(例如,一个或更多个离散CPU、或一个或更多个dCPU),该CPU可以经由高速互连(例如,PCIe)耦合至一个或更多个SoC 1204。CPU1218可包含例如X86处理器。CPU1218可以用于执行多种功能中的任何一种,包括例如仲裁ADAS传感器和SoC 1204之间的潜在不一致的结果,和/或监视控制器1236和/或信息娱乐SoC 1230的状态和健康。

车辆1200可以包括可以经由高速互连(例如,NVIDIA的NVLINK)耦合至一个或更多个SoC 1204的一个或更多个GPU 1220(例如,一个或更多个离散GPU或一个或更多个dGPU)。GPU 1220可以提供额外的人工智能功能,如通过执行冗余的和/或不同的神经网络,并且可以用于基于来自车辆1200的传感器的输入(例如,传感器数据)训练和/或更新神经网络。

车辆1200可进一步包括网络接口1224,该网络接口可包括一个或更多个无线天线1226(例如,用于不同通信协议的一个或更多个无线天线,诸如蜂窝天线、蓝牙天线等)。网络接口1224可用以实现互联网上与云(例如,与服务器1278和/或其他网络装置)、与其他交通工具和/或与计算装置(例如,乘客的客户端装置)的无线连接。为了与其他车辆通信,可以在两个车辆之间建立直接链路和/或可以建立间接链路(例如,跨网络和通过互联网)。可以使用车辆到车辆通信链路来提供直接链路。车辆到车辆通信链路可提供车辆1200关于车辆1200附近的车辆(例如,车辆1200前面、侧面和/或后面的车辆)的信息。该功能可以是车辆1200的协作自适应巡航控制功能的一部分。

网络接口1224可以包括提供调制和解调功能并且使得控制器1236能够通过无线网络通信的SoC。网络接口1224可以包括用于从基带到射频的上转换和从射频到基带的下转换的射频前端。频率转换可通过众所周知的工艺来执行,和/或可使用超外差工艺来执行。在一些示例中,射频前端功能可以由单独的芯片提供。网络接口可以包括用于通过LTE、WCDMA、UMTS、GSM、CDMA2000、蓝牙、蓝牙LE、Wi-Fi、Z波、ZigBee、LoRaWAN和/或其他无线协议进行通信的无线功能。

车辆1200可进一步包括数据存储1228,数据存储1228可包括片外(例如,SoC 1204外)存储。数据存储1228可包括一个或更多个存储元件,包括RAM、SRAM、DRAM、VRAM、闪存、硬盘和/或可存储至少一个数据位的其他组件和/或设备。

车辆1200可进一步包括GNSS传感器1258(例如,GPS和/或辅助GPS传感器),以帮助映射、感知、占用网格生成和/或路径规划功能。可使用任何数量的GNSS传感器1258,包括例如但不限于使用具有以太网到串行(RS 232)桥的USB连接器的GPS。

车辆1200还可包括RADAR传感器1260。车辆1200可使用RADAR传感器1260进行远距离车辆检测,甚至在黑暗和/或恶劣天气条件下。RADAR功能性安全水平可以是ASIL B。在一些示例中,一个或更多个RADAR传感器1260可使用CAN和/或总线1202(例如,以传送由一个或更多个RADAR传感器1260生成的数据)来控制和访问对象跟踪数据,其中访问以太网来访问原始数据。可以使用各种各样的RADAR传感器类型。例如但不限于,一个或更多个RADAR传感器1260可以适于RADAR的前、后和侧使用。在一些示例中,使用了脉冲多普勒RADAR传感器。

RADAR传感器1260可包括不同的配置,诸如具有窄视野的长范围、具有宽视野的短范围、短范围侧覆盖等。在一些示例中,远程离RADAR可以用于自适应巡航控制功能。远程离RADAR系统可提供由两个或更多个独立扫描实现的宽视野,诸如在250m范围内。RADAR传感器1260可以帮助区分静止和移动物体,并且可以由ADAS系统用于紧急制动辅助和前向碰撞警告。远程离RADAR传感器可包括具有多个(例如,六个或更多个)固定RADAR天线和高速CAN和FlexRay接口的单站多模RADAR。在具有六个天线的示例中,中央的四个天线可以创建聚焦波束图案,该聚焦波束图案被设计成以来自相邻车道中的交通的最小干扰的较高速度记录车辆1200的周围。其他两个天线可扩展视场,使得可以快速检测进入或离开车辆1200的车道的车辆。

作为示例,中范围RADAR系统可包括高达1260m(前)或80m(后)的范围以及高达42度(前)或1250度(后)的视场。短程RADAR系统可包括但不限于被设计为安装在后保险杠两端的RADAR传感器。当安装在后保险杠的两端时,这种RADAR传感器系统可以产生两个梁,这两个梁持续地监测车辆后方和旁边的盲点。

短程RADAR系统可用在ADAS系统中用于盲点检测和/或车道变换辅助。

车辆1200可进一步包含超声波传感器1262。可定位在车辆1200的前部、后部和/或侧部处的超声波传感器1262可用于停车辅助和/或创建和更新占用网格。可使用多种超声波传感器1262,且可针对不同检测范围(例如,2.5m、4m)使用不同超声波传感器1262。超声波传感器1262可在ASILB的功能安全水平下操作。

车辆1200可包括LIDAR传感器1264。LIDAR传感器1264可用于对象和行人检测、紧急制动、碰撞避免和/或其他功能。一个或更多个LIDAR传感器1264可以是功能安全水平ASIL B。在一些示例中,车辆1200可包括可使用以太网(例如,向千兆位以太网交换机提供数据)的多个LIDAR传感器1264(例如,两个、四个、六个等)。

在一些示例中,一个或更多个LIDAR传感器1264可能能够提供针对360度视场的对象及其距离的列表。可商购获得的LIDAR传感器1264可具有大约100m的广告范围,具有2cm-3cm的精确度,并且支持例如100Mbps以太网连接。在一些示例中,可以使用一个或更多个不突出的LIDAR传感器1264。在这样的示例中,一个或更多个LIDAR传感器1264可以被实现为可以嵌入车辆1200的前部、后部、侧部和/或拐角中的小型设备。在这样的示例中,一个或更多个LIDAR传感器1264可以提供高达120度的水平和35度的垂直视场,甚至对于低反射率对象具有200m的范围。一个或更多个前置式LIDAR传感器1264可被配置为用于45度和135度之间的水平视场。

在一些示例中,还可使用诸如3D闪光LIDAR的LIDAR技术。3D闪光LIDAR使用激光器的闪光灯作为传输源以照亮车辆周围环境高达约200m。闪光LIDAR单元包括接收器,该接收器在每个像素上记录激光脉冲渡越时间和反射光,每个像素进而对应于从车辆到对象的距离。闪光LIDAR可以允许利用每个激光闪光来生成周围环境的高度准确且无失真的图像。在一些示例中,可以部署四个闪光LIDAR传感器,车辆1200的每一侧各一个。可用的3D闪光LIDAR系统包括除了风扇之外没有移动部件的固态3D启动阵列LIDAR相机(例如,非扫描LIDAR设备)。闪光LIDAR设备可以每帧使用五纳秒I类(眼睛安全)激光脉冲,并且可以以3D范围点云和共同配准的强度数据的形式捕获反射的激光。通过使用闪光LIDAR,并且因为闪光LIDAR是不具有移动部件的固态设备,一个或更多个LIDAR传感器1264可能较不易受到运动模糊、振动和/或震动的影响。

车辆可进一步包括IMU传感器1266。在一些示例中,一个或更多个IMU传感器1266可以位于车辆1200的后轴的中心。IMU传感器1266可包括,例如但不限于,加速计、磁力计、陀螺仪、磁罗盘和/或其他传感器类型。在一些示例中,例如在六轴应用中,IMU传感器1266可包含加速度计和陀螺仪,而在九轴应用中,IMU传感器1266可包含加速度计、陀螺仪和磁力计。

在一些实施例中,一个或更多个IMU传感器1266可被实现为微型高性能GPS辅助惯性导航系统(GPS/INS),其组合了微机电系统(MEMS)惯性传感器、高灵敏度GPS接收器和高级卡尔曼滤波算法以提供位置、速度和姿态的估计。如此,在一些示例中,一个或更多个IMU传感器1266可以通过直接观察和关联从GPS到一个或更多个IMU传感器1266的速度变化来使车辆1200能够在不需要来自磁传感器的输入的情况下估计航向。在一些示例中,IMU传感器1266和GNSS传感器1258可组合在单个集成单元中。

车辆可包括放置在车辆1200内和/或周围的麦克风1296。麦克风1296可用于紧急车辆检测和识别等。

车辆可进一步包含任何数目的相机类型,包含立体相机1268、广角相机1270、红外相机1272、环绕相机1274、远程和/或中程相机1298和/或其他相机类型。相机可以用于捕获车辆1200的整个周边周围的图像数据。所使用的摄像头的类型取决于车辆1200的实施方式和要求,并且摄像头类型的任何组合可用于提供车辆1200周围的必要覆盖。另外,照相机的数量可以根据实施例而不同。例如,车辆可包括六个相机、七个相机、十个相机、十二个相机和/或另一数量的相机。作为示例而非限制,相机可支持千兆位多媒体串行链路(GMSL)和/或千兆位以太网。本文中关于图12和图13更详细地描述相机中的每一者。

车辆1200可进一步包括振动传感器1242。振动传感器1242可测量车辆的部件(诸如车轴)的振动。例如,振动的变化可以指示路面的变化。在另一示例中,当使用两个或更多个振动传感器1242时,振动之间的差可以用于确定路面的摩擦或滑移(例如,当振动差在动力驱动轴和自由旋转轴之间时)。

车辆1200可包括ADAS系统1238。在一些示例中,ADAS系统1238可包括SoC。ADAS系统1238可包括自主/自适应/自动巡航控制(ACC)、协作自适应巡航控制(CACC)、前向碰撞警告(FCW)、自动紧急制动(AEB)、车道偏离警告(LDW)、车道保持辅助(LKA)、盲点警告(BSW)、后十字路口交通警告(RCTW)、碰撞警告系统(CWS)、车道对中(LC)和/或其他特征和功能。

ACC系统可使用RADAR传感器1260、LIDAR传感器1264和/或相机。ACC系统可包括纵向ACC和/或横向ACC。纵向ACC监控并控制到车辆1200正前方的车辆的距离,并且自动调整车辆速度以保持与前方车辆的安全距离。横向ACC执行距离保持,并且在必要时通知车辆1200改变车道。横向ACC涉及其他ADAS应用,诸如LC和CWS。

CACC使用可以经由网络接口1224和/或无线天线1226从其他车辆经由无线链路或间接地通过网络连接(例如,通过互联网)接收的信息的来自其他车辆的信息。直接链路可以由车辆到车辆(V2V)通信链路提供,而间接链路可以是基础设施到车辆(I2V)通信链路。通常,V2V通信概念提供关于紧接在前的车辆(例如,紧接在车辆1200前面并且与车辆1200在同一车道中的车辆)的信息,而I2V通信概念提供关于更前面交通的信息。CACC系统可包括I2V和V2V信息源中的任一者或两者。给定车辆1200前方的车辆的信息,CACC可以更可靠,并且其有可能改善交通流平滑度并减少道路上的拥堵。

FCW系统被设计成用于警告驾驶员危险,使得驾驶员可采取矫正动作。FCW系统使用耦合到专用处理器、DSP、FPGA和/或ASIC的前置相机和/或RADAR传感器1260,其电耦合到驱动器反馈,诸如显示器、扬声器和/或振动组件。FCW系统可提供警告,诸如以声音、视觉警告、振动和/或快速制动脉冲的形式。

AEB系统检测到与另一车辆或其他物体的即将发生的前方碰撞,且可在驾驶员在指定时间或距离参数内未采取校正动作的情况下自动地应用制动。AEB系统可使用耦合到专用处理器、DSP、FPGA和/或ASIC的前置相机和/或RADAR传感器1260。当AEB系统检测到危险时,其通常首先警告驾驶员采取校正措施以避免碰撞,并且如果驾驶员未采取校正措施,则AEB系统可自动施加刹车以努力防止或至少减轻所预测的碰撞的影响。AEB系统可以包括诸如动态制动支持和/或碰撞即将来临的制动之类的技术。

LDW系统提供视觉、听觉和/或触觉警告,诸如方向盘或座椅振动,以在车辆1200越过车道标志时警告驾驶员。当驾驶员通过激活转向信号指示故意车道偏离时,LDW系统不激活。LDW系统可使用耦合到专用处理器、DSP、FPGA和/或ASIC的面向前侧的相机,其电耦合到驱动器反馈,例如显示器、扬声器和/或振动组件。

LKA系统是LDW系统的变体。如果车辆1200开始离开车道,LKA系统提供转向输入或制动以校正车辆1200。

BSW系统检测并警告驾驶员汽车盲点中的车辆。BSW系统可以提供视觉、听觉和/或触觉警报以指示合并或改变车道是不安全的。当驾驶员使用转向信号时,系统可以提供额外的警告。BSW系统可使用耦合到专用处理器、DSP、FPGA和/或ASIC的面向后侧的相机和/或RADAR传感器1260,其电耦合到驾驶员反馈,诸如显示器、扬声器和/或振动组件。

当车辆1200倒车时在后置摄像头范围之外检测到物体时,RCTW系统可提供视觉、听觉和/或触觉通知。一些RCTW系统包括AEB以确保应用车辆制动器以避免碰撞。RCTW系统可使用耦接到专用处理器、DSP、FPGA和/或ASIC的一个或更多个后置RADAR传感器1260,该RADAR传感器1260电耦接到驾驶员反馈,诸如显示器、扬声器和/或振动部件。

常规的ADAS系统可能易于出现假阳性结果,这可能对驾驶员来说是恼人的和分心的,但通常不是灾难性的,因为ADAS系统警告驾驶员并允许驾驶员判定安全状况是否真正存在并相应地行动。然而,在自主车辆1200中,在冲突结果的情况下,车辆1200本身必须判定是从主计算机还是从计算机(例如,第一控制器1236或第二控制器1236)来了解结果。例如,在一些实施例中,ADAS系统1238可以是用于向备份计算机合理化模块提供感知信息的备份和/或辅助计算机。备份计算机合理化监控器可以在硬件部件上运行冗余多样的软件以检测感知和动态驱动任务中的故障。ADAS系统1238的输出可提供给监督MCU。如果来自主计算机和辅计算机的输出冲突,则监督MCU必须确定如何协调冲突以确保安全操作。

在一些示例中,主计算机可被配置为向监督MCU提供置信度得分,该置信度得分指示主计算机在选择的结果中的置信度。如果置信度得分超过阈值,则监督MCU可遵循主计算机的方向,而不管副计算机是否提供冲突或不一致的结果。当置信度分数不满足阈值时,以及当主计算机和辅助计算机指示不同的结果(例如,冲突)时,监督MCU可在计算机之间仲裁以确定适当的结果。

监督MCU可被配置成运行神经网络,该神经网络被训练并被配置成基于来自主计算机和副计算机的输出来确定副计算机提供假警报的条件。因此,监督MCU中的一个或更多个神经网络可以学习副计算机的输出何时可以被信任以及它何时不能被信任。例如,当副计算机是基于RADAR的FCW系统时,监督MCU中的一个或更多个神经网络可以学习FCW系统何时识别实际上不是危险的金属对象,诸如触发警报的排水栅或检修孔盖。类似地,当副计算机是基于相机的LDW系统时,监督MCU中的神经网络可以学习在骑车人或行人存在并且车道偏离实际上是最安全的操纵时超越LDW。在包括在监督MCU上运行的神经网络的实施例中,监督MCU可包括适于运行具有相关联的存储器的神经网络的DLA或GPU中的至少一个。在优选实施例中,监督MCU可包括和/或包括为SoC 1204的部件。

在其他示例中,ADAS系统1238可包含使用计算机视觉的传统规则执行ADAS功能性的次要计算机。照此,副计算机可使用经典计算机视觉规则(如果那么),并且监督MCU中的神经网络的存在可改善可靠性、安全性和性能。例如,不同的实现方式和有意的非身份使得整个系统更容错,尤其是对由软件(或软件硬件接口)功能引起的故障更容错。例如,如果在主计算机上运行的软件中存在软件错误或错误,并且运行在副计算机上的不相同的软件代码提供相同的总体结果,监督MCU可具有更大的置信度,即总体结果是正确的,并且主计算机使用的软件或硬件中的错误不会引起材料错误。

在一些示例中,ADAS系统1238的输出可被馈送到主计算机的感知块和/或主计算机的动态驱动任务块中。例如,如果ADAS系统1238指示由于直接在前的对象引起的向前碰撞警告,则感知块可在识别对象时使用该信息。在其他示例中,副计算机可以具有其自己的经训练的神经网络,并且因此降低误报的风险,如本文中所描述的。

车辆1200可进一步包括信息娱乐SoC 1230(例如,车载信息娱乐系统(IVI))。尽管被示出和描述为SoC,但信息娱乐系统可以不是SoC,并且可以包括两个或更多个离散部件。信息娱乐SoC 1230可以包括可以用于提供音频(例如,音乐、个人数字助理、导航指令、新闻、收音机等)的硬件和软件的组合,视频(例如,TV、电影、流等)、电话(例如,免提呼叫)、网络连接(例如,LTE、Wi-Fi等),和/或到车辆1200的信息服务(例如,导航系统、后部停车辅助、无线电数据系统、车辆相关信息,诸如燃料水平、总行驶距离、制动燃料水平、油水平、门打开/关闭、空气过滤器信息等)。例如,信息娱乐SoC 1230可以包括收音机、磁盘播放器、导航系统、视频播放器,USB和蓝牙连接、汽车娱乐、Wi-Fi、方向盘音频控制、免提语音控制,平视显示器(HUD)、HMI显示器1234、远程信息处理设备、控制面板(例如,用于控制各种部件、特征和/或系统和/或与各种部件、特征和/或系统交互),和/或其他部件。信息娱乐SoC1230可以进一步用于向车辆的用户提供信息(例如,视觉和/或听觉),如来自ADAS系统1238的信息、自主驾驶信息(如计划车辆操控、轨迹)、周围环境信息(例如,交叉口信息、车辆信息、道路信息等)、和/或其他信息。

信息娱乐SoC 1230可以包括GPU功能。信息娱乐SoC 1230可以通过总线1202(例如,CAN总线、以太网等)与车辆1200的其他设备、系统和/或部件通信。在一些示例中,资讯娱乐SoC 1230可以联接至监督MCU上,这样使得资讯娱乐系统的GPU可以在这个或这些主控制器1236(例如,车辆1200的主和/或备份计算机)出故障的情况下执行一些自驱动功能。在这种示例中,信息娱乐SoC 1230可以将车辆1200置于排队到安全停止模式,如在此所描述的。

车辆1200可进一步包括仪表板1232(例如,数字仪表板、电子仪表板、数字仪表板等)。仪表板1232可以包括控制器和/或超计算机(例如,分立的控制器或超计算机)。仪表板1232可包括一组仪表,诸如速度计、燃料水平、油压、转速计、里程表、转向指示器、换档位置指示器、一个或更多个安全带警告灯、一个或更多个停车制动警告灯、一个或更多个发动机故障灯、气囊(SRS)系统信息、照明控制、安全系统控制、导航信息等。在一些示例中,可以在信息娱乐SoC 1230和仪表板1232之间显示和/或共享信息。换言之,仪表板1232可以被包括作为信息娱乐SoC 1230的一部分,或者反之亦然。

如以上所提到的,在至少一些实施例中,汽车平台100(参见图1)可以是自主车辆1200的组件。在这样的实施例中,一个或更多个控制器1236包括汽车SoC 104。例如,汽车SoC 104可以实现为SoC 1204之一。

图15是根据本公开的一些实施例的用于在基于云的服务器与图12的示例自主车辆1200之间通信的系统图。系统1276可以包括一个或更多个服务器1278、一个或更多个网络1290和包括车辆1200的车辆。服务器1278可包括多个GPU 1284(A)1284(H)(本文中统称为GPU1284)、PCIe交换机1282(A)-1282(H)(本文中统称为PCIe交换机1282)和/或CPU1280(A)-1280(B)(本文中统称为CPU 1280)。GPU 1284、CPU 1280和PCIe交换机可以用高速互连(例如但不限于由NVIDIA开发的NVLink接口1288和/或PCIe连接1286)互连。在一些示例中,GPU 1284经由NV链路和/或NV交换机SoC连接,并且GPU 1284和PCIe交换机1282经由PCIe互连连接。尽管示出了八个GPU 1284、两个CPU 1280和两个PCIe交换机,但这不旨在进行限制。取决于实施例,一个或更多个服务器1278中的每一个可以包括任何数量的GPU 1284、CPU 1280和/或PCIe交换机。例如,服务器1278可各自包含八个、十六个、三十二个和/或更多个GPU1284。

一个或更多个服务器1278可经由一个或更多个网络1290和从车辆接收表示示出(例如最近开始的道路工作等)意外或改变的道路条件的图像的图像数据。一个或更多个服务器1278可通过一个或更多个网络1290向车辆传输神经网络1292、经更新的神经网络1292和/或地图信息1294,包括关于交通和道路状况的信息。对地图信息1294的更新可以包括对HD映射1222的更新,诸如关于建筑工地、坑洼、绕路、洪水和/或其他障碍物的信息。在一些示例中,神经网络1292、经更新的神经网络1292和/或地图信息1294可能已经由在从环境中的任何数量的车辆接收的数据中表示的和/或基于在数据中心处执行的训练(例如,使用一个或更多个服务器1278和/或其他服务器)的新训练和/或经验产生。

一个或更多个服务器1278可用以基于训练数据来训练机器学习模型(例如,神经网络)。训练数据可以由车辆生成,和/或可以在模拟(例如,使用游戏引擎)中生成。在一些示例中,训练数据被标记(例如,其中神经网络受益于受监督学习)和/或经历其他预处理,而在其他示例中,训练数据不被标记和/或预处理(例如,其中神经网络不需要受监督学习)。可以根据机器学习技术的任何一个或更多个类别来执行训练,包括但不限于以下类别,如:监督训练、半监督训练、非监督训练、自学习,强化学习、联合学习、转移学习、特征学习(包括主要组成和聚类分析)、多线性子空间学习,流形学习、表示学习(包括备用字典学习)、基于规则的机器学习、异常检测、及其任何变体或组合。一旦训练了机器学习模型,就可以由车辆使用机器学习模型(例如,通过网络1290传输至车辆),和/或可以由服务器1278使用机器学习模型来远程监测车辆。

在一些示例中,一个或更多个服务器1278可以从车辆接收数据,并且将数据应用于最新的实时神经网络以用于实时智能推断。一个或更多个服务器1278可包含由GPU 1284供电的深度学习超级计算机和/或专用AI计算机,例如由NVIDIA开发的DGX和DGX站机器。然而,在一些示例中,一个或更多个服务器1278可包含仅使用由CPU供电的数据中心的深度学习基础结构。

一个或更多个服务器1278的深度学习基础设施可以能够快速、实时地推断,并且可以使用该能力来评估和验证车辆1200中的处理器、软件和/或相关联的硬件的健康。例如,深度学习基础设施可从车辆1200接收周期性更新,诸如车辆1200已位于该图像序列中的图像序列和/或对象(例如,经由计算机视觉和/或其他机器学习对象分类技术)。深度学习基础设施可以运行其自己的神经网络以识别对象,并且将它们与车辆1200所识别的对象进行比较,如果结果不匹配并且基础设施推断车辆1200中的AI发生故障,一个或更多个服务器1278可将指示车辆1200的故障保护计算机采取控制的信号传输到车辆1200,通知乘客,完成安全的停车操作。

为了推断,一个或更多个服务器1278可以包括一个或更多个GPU1284和一个或更多个可编程推断加速器(例如,NVIDIA的TensorRT)。GPU供电的服务器和推断加速的组合可以使得实时响应成为可能。在其他示例中,例如在性能较不关键的情况下,由CPU、FPGA和其他处理器供电的服务器可用于推断。

示例计算设备

图16是适合用于实现本公开的一些实施例的一个或更多个示例计算设备1600的框图。计算设备1600可以包括直接或间接耦合以下设备的互连系统1602:存储器1604,一个或更多个中央处理单元(CPU)1606、一个或更多个图形处理单元(GPU)1608,通信接口1610、I/O端口1612、输入/输出组件1614、电源1616,一个或更多个呈现组件1618(例如,一个或更多个显示器)和一个或更多个逻辑单元1620。

尽管图16的各个框被示出为经由互连系统1602与线路连接,但这并不旨在是限制性的并且仅是为了清楚起见。例如,在一些实施例中,呈现组件1618(诸如显示设备)可被认为是I/O组件1614(例如,如果显示器是触摸屏)。作为另一个示例,CPU 1606和/或GPU 1608可以包括存储器(例如,存储器1604可以表示除了GPU 1608的存储器、CPU 1606、和/或其他部件之外的存储设备)。换言之,图16的计算设备仅是说明性的。在如“工作站”、“服务器”、“膝上型计算机”、“台式计算机”、“平板计算机”、“客户端装置”、“移动装置”、“手持式装置”、“游戏控制台”、“电子控制单元(ECU)”、“虚拟现实系统”、“增强现实系统”和/或其他装置或系统类型的此类类别之间不做区分,因为所有类别都被考虑在图16的计算装置的范围内。

互连系统1602可以表示一个或更多个链路或总线,诸如地址总线、数据总线、控制总线或其组合。互连系统1602可包括一个或更多个总线或链路类型,诸如工业标准体系结构(ISA)总线、扩展工业标准体系结构(EISA)总线、视频电子标准协会(VESA)总线、外围组件互连(PCI)总线、快速外围组件互连(PCIe)总线和/或另一类型的总线或链路。在一些实施例中,部件之间存在直接连接。作为示例,CPU 1606可直接连接到存储器1604。进一步,CPU 1606可直接连接到GPU 1608。在组件之间存在直接或点对点连接的情况下,互连系统1602可以包括用于执行连接的PCIe链路。在这些示例中,PCI总线不需要被包括在计算设备1600中。

存储器1604可包含多种计算机可读介质中的任一者。计算机可读介质可以是可由计算设备1600访问的任何可用介质。计算机可读媒质可以包括易失性和非易失性介质,以及可移除和不可移除介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。

计算机存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型的信息的任何方法或技术实现的易失性和非易失性介质和/或可移动和不可移动介质。例如,存储器1604可存储计算机可读指令(例如,其表示一个或更多个程序和/或一个或更多个程序元件,例如操作系统)。计算机存储介质可以包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术,CD-ROM、数字通用盘(DVD)或其他光盘存储、磁带盒、磁带,磁盘存储装置或其他磁存储装置,或可用于存储所要信息且可由计算装置1600存取的任何其他介质。如本文所使用的,计算机存储介质不包括信号本身。

计算机存储介质可将计算机可读指令、数据结构、程序模块和/或其他数据类型体现在诸如载波或其他传输机制等已调制数据信号中,并且包括任何信息递送介质。术语“调制数据信号”可以指代以编码信号中的信息的方式设置或改变其一个或更多个特性的信号。作为示例而非限制,计算机存储介质可包括有线介质(诸如有线网络或直接有线连接)和无线介质(诸如声学、RF、红外和其他无线介质)。以上任何内容的组合也应包含在计算机可读介质的范围内。

一个或更多个CPU 1606可经配置以执行计算机可读指令中的至少一些,以控制计算装置1600的一或多个组件以执行本文所描述的方法和/或过程中的一或多者。一个或更多个CPU 1606可以各自包括能够同时处理多个软件线程的一个或更多个核(例如,一个、两个、四个、八个、二十八个、七十二个等)。一个或更多个CPU 1606可包含任何类型的处理器,且可取决于所实施的计算装置1600的类型而包含不同类型的处理器(例如,针对移动装置具有较少核心的处理器和针对服务器具有较多核心的处理器)。例如,取决于计算设备1600的类型,处理器可以是使用精简指令集计算(RISC)实现的高级RISC机器(ARM)处理器或使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理器或补充协处理器(诸如数学协处理器)之外,计算设备1600可包括一个或更多个CPU1606。

除一个或更多个CPU 1606之外或替代CPU 1606,一个或更多个GPU1608可经配置以执行计算机可读指令中的至少一些以控制计算装置1600的一个或更多个组件执行本文中所描述的方法和/或过程中的一个或更多个。GPU 1608中的一个或更多个可为集成GPU(例如,与CPU 1606中的一个或更多个和/或GPU 1608中的一个或更多个可为离散GPU)。在实施例中,一个或更多个GPU 1608中的一个或更多个GPU可以是CPU 1606中的一个或更多个CPU的协处理器。一个或更多个GPU 1608可由计算装置1600使用以再现图形(例如,3D图形)或执行通用计算。例如,一个或更多个GPU 1608可用于GPU上的通用计算(GPGPU)。一个或更多个GPU 1608可以包括能够同时处理数百或数千个软件线程的数百或数千个核。一个或更多个GPU 1608可响应于再现命令(例如,经由主机接口从一个或更多个CPU 1606接收的再现命令)而产生输出图像的像素数据。一个或更多个GPU 1608可包含用于存储像素数据或任何其他合适数据(例如,GPGPU数据)的图形存储器(例如,显示存储器)。显示存储器可作为存储器1604的一部分被包括。一个或更多个GPU 1608可包含并行操作(例如,经由链路)的两个或两个以上GPU。链路可以直接连接GPU(例如,使用NVLINK)或可以通过交换机(例如,使用NVSwitch)连接GPU。当组合在一起时,每一GPU 1608可产生用于输出的不同部分或用于不同输出的像素数据或GPGPU数据(例如,用于第一图像的第一GPU和用于第二图像的第二GPU)。每一GPU可包含其自己的存储器,或可与其他GPU共享存储器。

除一个或更多个CPU 1606和/或一个或更多个GPU 1608之外或作为另外一种选择,一个或更多个逻辑单元1620可经配置以执行计算机可读指令中的至少一些,以控制计算装置1600的一个或更多个组件执行本文中所描述的方法和/或过程中的一个或更多个。在实施例中,一个或更多个CPU1606、一个或更多个GPU 1608和/或一个或更多个逻辑单元1620可以离散地或联合地执行方法、过程和/或其部分的任何组合。逻辑单元1620中的一个或更多个可为CPU 1606和/或GPU 1608中的一个或更多个和/或集成于CPU 1606和/或GPU1608中的一个或更多个和/或逻辑单元1620中的一个或更多个可为离散组件或以其他方式在CPU 1606和/或GPU 1608外部。在实施例中,逻辑单元1620中的一个或更多个逻辑单元可以是CPU 1606中的一个或更多个CPU和/或GPU 1608中的一个或更多个GPU的协处理器。

一个或更多个逻辑单元1620的示例包括一个或更多个处理核和/或其组件,诸如张量核(TC)、张量处理单元(TPU)、像素视觉核(PVC)、视觉处理单元(VPU),图形处理集群(GPC)、纹理处理集群(TPC)、流多处理器(SM)、树遍历单元(TTU),人工智能加速器(AIA)、深度学习加速器(DLA)、算术逻辑单元(ALU)、专用集成电路(ASIC),浮点单元(FPU)、I/O元件、外围组件互连(PCI)或快速外围组件互连(PCIe)元件,和/或类似物。

通信接口1610可以包括使计算设备1600能够经由电子通信网络(包括有线和/或无线通信)与其他计算设备通信的一个或更多个接收机、发射机、和/或收发机。通信接口1610可以包括用于启用通过多个不同网络中的任何网络的通信的组件和功能,诸如无线网络(例如,Wi-Fi、Z波、蓝牙、蓝牙LE、ZigBee等)、有线网络(例如,通过以太网或无限带通信)、低功率广域网(例如,LoRaWAN、SigFox等)和/或互联网。

I/O端口1612可以使计算设备1600能够逻辑地耦合到包括I/O组件1614、一个或更多个呈现组件1618和/或其他组件的其他设备,其中一些组件可以被内置到(例如,集成在)计算设备1600中。说明性I/O组件1614包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、扫描仪、打印机、无线设备等。I/O组件1614可以提供处理空中姿势、语音或由用户生成的其他生理输入的自然用户界面(NUI)。在一些情况下,可将输入发射到适当的网络元件以供进一步处理。NUI可实现与计算设备1600的显示器相关联的语音识别、指示笔识别、面部识别、生物特征识别、屏幕上和屏幕附近的姿势识别、空中姿势、头部和眼睛跟踪、以及触摸识别(如以下更详细地描述的)的任何组合。计算设备1600可包括用于手势检测和识别的深度相机,诸如立体相机系统、红外相机系统、RGB相机系统、触摸屏技术和这些的组合。另外,计算设备1600可以包括使得能够检测运动的加速度计或陀螺仪(例如,作为惯性测量单元(IMU)的一部分)。在一些示例中,计算设备1600可以使用加速度计或陀螺仪的输出来渲染沉浸式增强现实或虚拟现实。

电源1616可包含硬接线电源、电池电源或其组合。电源1616可以向计算设备1600提供功率以使得计算设备1600的组件能够操作。

一个或更多个呈现组件1618可包括显示器(例如,监视器、触摸屏、电视屏幕、平视显示器(HUD)、其他显示器类型或其组合)、扬声器和/或其他呈现组件。一个或更多个呈现组件1618可从其他组件(例如,一个或更多个GPU 1608、一个或更多个CPU 1606等)接收数据,且输出数据(例如,作为图像、视频、声音等)。

可以在由计算机或其他机器(如个人数据助理或其他手持式装置)执行的计算机代码或机器可用指令(包括计算机可执行指令,如程序模块)的一般上下文中描述本公开。一般而言,包括例程、程序、对象、组件、数据结构等的程序模块指的是执行特定任务或实现特定抽象数据类型的代码。本公开可以在各种系统配置中实践,包括手持式设备、消费电子产品、通用计算机、更专用计算设备等。本公开还可以在分布式计算环境中实践,其中任务由通过通信网络链接的远程处理设备来执行。

本公开的至少一个实施例可以根据以下条款来描述:

1.一种集成电路,包括:第一部分,其包括第一定时器,所述第一部分将与源自多个逻辑块的至少一个故障相对应的数据聚合成至少一个错误信号,并且发送所述至少一个错误信号,所述第一定时器在所述至少一个错误信号被发送时启动并且在对应于所述至少一个故障的数据已从所述第一部分清除时重置,所述第一部分在所述第一定时器指示至少第一预定时间量已经过去且对应于所述至少一个故障的数据尚未从所述第一部分中清除时发送超时错误信号;和第二部分,用于在已发送所述超时错误信号时接收所述至少一个错误信号和所述超时错误信号,所述第二部分在接收到所述超时错误信号后通知外部系统。

2.如权利要求1所述的集成电路,其中对于所述至少一个故障中的特定故障:所述第一部分识别产生所述特定故障的错误,当所述第一部分确定所述多个逻辑块中的至少一个逻辑块已校正所述错误时,所述第一部分从所述第一部分中清除与所述特定故障相对应的数据,所述第一部分通知所述第二部分对应于所述特定故障的数据已经从所述第一部分中清除,并且所述第二部分从所述第二部分中清除对应于所述特定故障的数据。

3.如权利要求1所述的集成电路,其中对于所述至少一个故障中的特定故障:所述第一部分识别产生所述特定故障的错误,所述第一部分执行校正所述错误的一个或更多个动作并且清除与来自所述第一部分的所述特定故障相对应的数据,所述第一部分通知所述第二部分对应于所述特定故障的数据已经从所述第一部分中被清除,并且所述第二部分从所述第二部分中清除对应于所述特定故障的数据。

4.如权利要求1所述的集成电路,其中对于所述至少一个故障中的特定故障:所述第一部分识别产生所述特定故障的错误,所述第一部分将故障信息写入存储位置并通知所述第二部分该错误的严重性,所述第二部分至少部分地基于该错误的严重性判定是否读取所述故障信息,所述第二部分执行校正该错误的一个或更多个动作并通知所述第一部分从所述第一部分中清除与所述特定故障相对应的数据,在所述第一部分接收到所述通知后,所述第一部分从所述第一部分中清除与所述特定故障相对应的数据,所述第一部分通知所述第二部分对应于所述特定故障的数据已经从所述第一部分中被清除,并且所述第二部分从所述第二部分中清除对应于所述特定故障的数据。

5.如权利要求1所述的集成电路,其中对于所述至少一个故障中的特定故障:所述第一部分识别产生所述特定故障的错误,所述第一部分通知所述第二部分该错误的严重性,并且所述第二部分基于该错误的严重性将该错误通知所述外部系统。

6.如权利要求1所述的集成电路,其中所述第二部分包括第二定时器,所述第二定时器在所述第二部分接收到所述超时错误信号时启动,在对应于所述至少一个故障的数据已从所述第二部分清除后,所述第二定时器重置,并且所述第二部分等待,直到所述第二定时器指示至少第二预定时间量已经过去,然后才通知所述外部系统。

7.如权利要求6所述的集成电路,其中所述第二部分在接收到所述超时错误信号后执行一个或更多个校正动作并通知所述第一部分清除与所述至少一个故障相对应的数据,当在所述第二定时器指示至少所述第二预定时间量已经过去之前所述第二部分已经通知所述第一部分清除与所述至少一个故障相对应的数据时,所述第二部分不通知所述外部系统。

8.如权利要求7所述的集成电路,其中所述第一部分在接收到从所述第二部分清除与所述至少一个故障相对应的数据的通知后,从所述第一部分中清除与所述至少一个故障相对应的数据,所述第一部分通知所述第二部分对应于所述至少一个故障的数据已经从所述第一部分中被清除,并且所述第二部分从所述第二部分中清除对应于所述至少一个故障的数据。

9.如权利要求1所述的集成电路,其位于单片半导体材料上。

10.如权利要求1所述的集成电路,其实现汽车系统的片上系统SoC的一部分。

11.如权利要求1所述的集成电路,其中所述第二部分在比所述第一部分更高的风险分类级别下操作。

12.如权利要求1所述的集成电路,其中所述至少一个错误信号包括未校正的错误信号,与所述至少一个故障相对应的数据包括与由所述第一部分聚合成所述未校正的错误信号的未校正故障相对应的数据,并且所述集成电路还包括:第一信号导体,用于将所述超时错误信号从所述第一部分传导到所述第二部分;和第二信号导体,用于将所述未校正的错误信号从所述第一部分传导到所述第二部分。

13.如权利要求11所述的集成电路,其中所述至少一个错误信号包括经校正错误信号,对应于所述至少一个故障的数据包括与由所述第一部分聚合成所述经校正错误信号的经校正故障相对应的数据,并且所述集成电路还包括:第三信号导体,用于将所述经校正错误信号从所述第一部分传导到所述第二部分。

14.如权利要求1所述的集成电路,还包括:所述第一部分和所述第二部分之间的连接,用于将严重性信号从所述第一部分发送到所述第二部分,所述严重性信号指示所述至少一个故障中的每个故障的严重性级别。

15.如权利要求1所述的集成电路,还包括:多个故障聚合器,每个故障聚合器从所述多个逻辑块中的至少一个逻辑块接收对应于一个或更多个故障的数据,将对应于所述一个或更多个故障的数据聚合成一个或更多个错误信号,以及将所述一个或更多个错误信号发送到所述第一部分,所述第一部分将所述一个或更多个错误信号聚合为所述至少一个错误信号。

16.一种方法,包括:由集成电路的第一电路接收与至少一个故障相对应的数据,每个故障由在所述集成电路的逻辑块中发生的至少一个错误产生;由所述第一电路将对应于所述至少一个故障的所述数据聚合成至少一个错误信号;由所述第一电路将所述至少一个错误信号发送到所述集成电路的第二电路,所述发送启动第一定时器;由所述第一电路确定产生至少一个故障中的特定故障的一个或更多个错误已被校正;在所述第一电路确定所述一个或更多个错误已被校正后,由所述第一电路清除与所述特定故障相对应的数据,当与所述至少一个故障相对应的数据已被清除时,所述第一定时器重置;当所述第一定时器指示至少第一预定时间量已经过去时,由所述第一电路向所述第二电路发送超时错误信号;以及由所述第二电路在所述第二电路接收到所述超时错误信号后通知外部系统。

17.如权利要求16所述的方法,还包括:由所述第一电路识别产生所述特定故障的一个或更多个错误;由所述第一电路确定所述一个或更多个错误已被所述集成电路的至少一个逻辑块校正;由所述第一电路通知所述第二电路对应于所述特定故障的数据已经从所述第一电路中被清除;以及由所述第二电路从所述第二电路中清除对应于所述特定故障的数据。

18.如权利要求16所述的方法,还包括:由所述第一电路识别产生所述特定故障的所述一个或更多个错误;由所述第一电路执行校正所述一个或更多个错误的一个或更多个动作;由所述第一电路通知所述第二电路对应于所述特定故障的所述数据已经从所述第一电路中被清除;以及由所述第二电路从所述第二电路中清除对应于所述特定故障的所述数据。

19.如权利要求16所述的方法,还包括:由所述第一电路识别产生所述特定故障的所述一个或更多个错误;由所述第一电路将故障信息写入存储位置;由所述第一电路向所述第二电路通知所述一个或更多个错误的严重性;由所述第二电路至少部分地基于所述一个或更多个错误的严重性来判定是否读取所述故障信息;由所述第二电路执行校正所述一个或更多个错误的一个或更多个动作;由所述第二电路通知所述第一电路产生所述特定故障的所述一个或更多个错误已被校正;以及从所述第一电路和所述第二电路清除对应于所述特定故障的所述数据。

20.如权利要求16所述的方法,还包括:由所述第一电路识别产生所述特定故障的所述一个或更多个错误;由所述第一电路向所述第二电路通知所述一个或更多个错误的严重性;以及由所述第二电路基于所述错误的严重性向所述外部系统通知所述错误。

21.如权利要求16所述的方法,还包括:所述第二电路等待,直到第二定时器指示在通知所述外部系统之前已经过去了至少第二预定时间量,所述第二定时器在所述第二电路接收到所述超时错误信号时启动并且在对应于所述至少一个故障的数据已从所述第二电路中清除后重置。

22.如权利要求21所述的方法,还包括:所述第二电路在接收到所述超时错误信号之后,执行一个或更多个校正动作,所述一个或更多个校正动作校正产生了所述至少一个故障中的每个故障的所述至少一个错误;以及从所述第一电路和所述第二电路中清除对应于所述至少一个故障的数据,当在所述第二定时器指示至少所述第二预测时间量已经过去之前已经从所述第二电路中清除了对应于所述至少一个故障的数据时,所述第二电路不通知所述外部系统。

23.如权利要求22所述的方法,其中从所述第一电路和所述第二电路中清除对应于所述至少一个故障的数据包括:由所述第二电路通知所述第一电路产生所述至少一个故障中的每个故障的所述至少一个错误已被校正;由所述第一电路从所述第一电路中清除与所述至少一个故障中的每个故障相对应的数据;由所述第一电路通知所述第二电路与所述至少一个故障中的每个故障相对应的数据已经从所述第一电路中被清除;以及由所述第二电路从所述第二电路中清除与所述至少一个故障中的每个故障相对应的数据。

24.如权利要求16所述的方法,其中所述集成电路位于连续的半导体材料片上。

25.如权利要求16所述的方法,其中所述集成电路在汽车系统中实现片上系统SoC的一部分。

26.如权利要求16所述的方法,其中所述第一电路在第一电压域和第一时钟域内操作,并且所述第二电路在第二电压域和第二时钟域内操作,所述第二电压域不同于所述第一电压域,所述第二时钟域不同于所述第一时钟域,并且所述第二电路在比所述第一电路更高的风险分类级别下操作。

27.如权利要求16所述的方法,还包括:由多个故障聚合器中的每个故障聚合器从多个逻辑块中的至少一个逻辑块接收一个或更多个故障;由所述多个故障聚合器中的每个故障聚合器基于由所述故障聚合器接收的一个或更多个故障产生错误信号;以及由所述多个故障聚合器中的每个故障聚合器将由所述故障聚合器产生的所述错误信号发送到所述第一电路,从而发送包括所述至少一个故障的多个错误信号,所述第一电路将与所述至少一个故障相对应的所述数据聚合成所述至少一个错误信号。

28.一种自主车辆的集成电路,所述集成电路包括:安全部分,用于执行多个校正动作以使自主车辆进入安全状态,所述多个校正动作包括:当所述安全部分检测到超时错误已被断言时,将输出错误信号发送到外部系统;驱动部分,用于控制所述自主车辆的至少一个功能,所述驱动部分包括第一定时器,所述第一定时器在所述驱动部分将错误信号中的第一断言错误发送到所述安全部分时启动,所述第一定时器在最后断言错误在所述驱动部分中被解除断言时重置,所述驱动部分在所述第一定时器指示至少第一预定时间量已经过去时断言超时错误信号中的所述超时错误;第一信号导体,用于将所述错误信号从所述驱动部分传导到所述安全部分,所述安全部分包括所述错误信号中每个断言错误的断言错误;和超时信号导体,用于将所述超时错误信号从所述驱动部分传导到所述安全部分。

29.如权利要求28所述的集成电路,其中对于在所述错误信号中被断言的每个错误:所述驱动部分识别该错误被断言的原因,当所述驱动部分确定所述驱动部分的逻辑块充分解决了该错误被断言的原因时,所述驱动部分在所述驱动部分内解除断言该错误,所述驱动部分通知所述安全部分该错误已在所述驱动部分内被解除断言,并且在所述安全部分接收到该错误已在所述驱动部分内被解除断言的通知之后,所述安全部分在所述安全部分内解除断言该错误。

30.如权利要求28所述的集成电路,其中对于在所述错误信号中断言的每个错误:所述驱动部分识别该错误被断言的原因,所述驱动部分执行一个或更多个动作,从而解决该错误被断言的原因,所述驱动部分在所述驱动部分内解除断言该错误,所述驱动部分通知所述安全部分该错误已在所述驱动部分内被解除断言,并且在所述安全部分接收到该错误已在所述驱动部分内被解除断言的通知之后,所述安全部分在所述安全部分内解除断言该错误。

31.如权利要求28所述的集成电路,其中对于在所述错误信号中断言的每个错误:所述驱动部分识别该错误被断言的原因,所述驱动部分将信息写入存储位置并通知所述安全部分该错误的严重性,所述安全部分至少部分地基于该错误的严重性判定是否读取所述信息,所述安全部分执行所述多个校正动作中的至少一个校正动作,从而解决该错误被断言的原因,所述安全部分通知所述驱动部分解除断言该错误,在所述驱动部分接收到解除断言该错误的通知之后,所述驱动部分在所述驱动部分内解除断言该错误,所述驱动部分通知所述安全部分该错误已在所述驱动部分内被解除断言,并且在所述安全部分接收到该错误已在所述驱动部分内被解除断言的通知之后,所述安全部分在所述安全部分内解除断言该错误。

32.如权利要求28所述的集成电路,其中对于在所述错误信号中断言的每个错误:所述驱动部分识别该错误被断言的原因,所述驱动部分通知所述安全部分该错误的严重性,并且所述安全部分基于该错误的严重性将该错误通知所述外部系统。

33.如权利要求28所述的集成电路,其中所述安全部分包括第二定时器,所述第二定时器在所述安全部分接收到所述超时错误信号中的所述超时错误时启动,所述第二定时器在所述安全部分不再包括任何断言错误时重置,并且所述安全部分等待,直到所述第二定时器指示至少第二预定时间量已经过去,然后才将所述输出错误信号发送到所述外部系统。

34.如权利要求33所述的集成电路,其中所述安全部分在接收到所述超时错误信号中的超时错误之后执行所述多个校正动作中的至少一个校正动作,并且通知所述驱动部分解除断言在所述错误信号中被断言的每个错误,当在所述第二定时器指示至少所述第二预定时间量已经过去之前所述安全部分已通知所述驱动部分解除断言在所述错误信号中断言的每个错误时,所述安全部分不发送所述输出错误信号。

35.如权利要求28所述的集成电路,其位于单片半导体材料上。

36.如权利要求28所述的集成电路,其中所述安全部分以比所述驱动部分更高的风险级别下操作。

37.如权利要求28所述的集成电路,其中所述错误信号中的每个断言的错误是未校正的错误,所述错误信号是未校正的错误信号,所述第一信号导体是未校正的错误信号导体,所述驱动部分将经校正错误信号中的断言的经校正错误发送到所述安全部分,并且所述集成电路还包括:经校正信号导体,用于将所述经校正错误信号从所述驱动部分传导到所述安全部分,所述安全部分包括所述经校正错误信号中每个断言的经校正错误的断言的经校正错误。

38.如权利要求28所述的集成电路,还包括:所述驱动部分和所述安全部分之间的连接,用于将严重性信号从所述驱动部分发送到所述安全部分,所述严重性信号指示所述错误信号中断言的错误的严重性级别。

39.如权利要求28所述的集成电路,还包括:多个故障聚合器,每个故障聚合器从多个逻辑块中的至少一个逻辑块接收一个或更多个故障,将所述一个或更多个故障聚合成一个或更多个错误信号,并将所述一个或更多个错误信号发送到所述驱动部分,所述驱动部分将所述一个或更多个错误信号聚合成所述错误信号。

除非另有说明或显然与上下文矛盾,否则在描述所公开的实施例的上下文中(特别是在所附权利要求的上下文中),术语“一”和“一个”和“该”以及类似指代的使用应被解释为涵盖单数和复数,而不是作为术语的定义。除非另有说明,否则术语“包括”、“具有”、“包含”和“含有”应被解释为开放式术语(意味着“包括但不限于”)。术语“连接”(在未经修改时指的是物理连接)应解释为部分或全部包含在内、附接到或连接在一起,即使有某些介入。除非本文另外指出,否则本文中对数值范围的引用仅旨在用作分别指代落入该范围内的每个单独值的简写方法,并且每个单独值都被并入说明书中,就如同其在本文中被单独叙述一样。在至少一个实施例中,除非另外指出或与上下文矛盾,否则术语“集”(例如“项目集”)或“子集”的使用应解释为包括一个或更多个成员的非空集合。此外,除非另外指出或与上下文矛盾,否则术语相应集的“子集”不一定表示对应集的适当子集,而是子集和对应集可以相等。

如本文所使用的,关于两个或更多个元件的“和/或”的叙述应被解释为仅意指一个元件或元件的组合。例如,“元件A、元件B和/或元件C”可以包括仅元件A、仅元件B、仅元件C、元件A和元件B、元件A和元件C、元件B和元件C、或元件A、B和C。

除非以其他方式明确指出或与上下文明显矛盾,否则诸如“A,B和C中的至少一个”或“A,B与C中的至少一个”形式的短语之类的连接语在上下文中理解为通常用来表示项目、条款等,其可以是A或B或C,也可以是A和B和C集的任何非空子集。例如,在具有三个成员的集的说明性示例中,连接短语“A,B和C中的至少一个”和“A,B与C中的至少一个”是指以下任意集:{A},{B},{C},{A,B},{A,C},{B,C},{A,B,C}。因此,这种连接语言通常不旨在暗示某些实施例要求存在A中的至少一个,B中的至少一个和C中的至少一个。另外,除非另有说明或与上下文矛盾,否则术语“多个”表示复数的状态(例如,“多个项目”表示多个项目)。在至少一个实施例中,多个项目中项目的数量至少为两个,但如果明确指示或通过上下文指示,则可以更多。此外,除非另有说明或从上下文中可以清楚得知,否则短语“基于”是指“至少部分基于”而不是“仅基于”。

除非本文另外指出或与上下文明显矛盾,否则本文描述的过程的操作可以任何合适的顺序执行。在至少一个实施例中,诸如本文所述的那些过程(或其变形和/或其组合)之类的过程在配置有可执行指令的一个或更多个计算机系统的控制下执行,并且被实现为代码(例如,可执行指令,一个或更多个计算机程序或一个或更多个应用程序),该代码通过硬件或其组合在一个或更多个处理器上共同执行。在至少一个实施例中,代码以例如计算机程序的形式存储在计算机可读存储介质上,该计算机程序包括可由一个或更多个处理器执行的多个指令。在至少一个实施例中,计算机可读存储介质是非暂时性计算机可读存储介质,其排除了暂时性信号(例如,传播的瞬态电或电磁传输),但包括非暂时性数据存储电路(例如,缓冲区、高速缓存和队列)。在至少一个实施例中,代码(例如,可执行代码或源代码)被存储在其上存储有可执行指令的一组一个或更多个非暂时性计算机可读存储介质(或用于存储可执行指令的其他存储器)上,该可执行指令在由计算机系统的一个或更多个处理器执行时(即,作为被执行的结果),使得计算机系统执行本文所述的操作。在至少一个实施例中,一组非暂时性计算机可读存储介质包括多个非暂时性计算机可读存储介质,并且多个非暂时性计算机可读存储介质中的个体非暂时性存储介质中的一个或更多个缺少全部代码,而是多个非暂时性计算机可读存储介质共同存储全部代码。在至少一个实施例中,可执行指令被执行,以使得不同的指令由不同的处理器执行,在至少一个实施例中,非暂时性计算机可读存储介质存储指令,并且主中央处理单元(“CPU”)执行一些指令,而图形处理单元(“GPU”)执行其他指令。在至少一个实施例中,计算机系统的不同组件具有单独的处理器,并且不同的处理器执行指令的不同子集。

因此,在至少一个实施例中,计算机系统被配置为实现单独地或共同地执行本文所述的过程的操作的一个或更多个服务,并且这样的计算机系统被配置有使能实施操作的适用的硬件和/或软件。此外,实现本公开的至少一个实施例的计算机系统是单个设备,并且在另一实施例中是分布式计算机系统,其包括以不同方式操作的多个设备,使得分布式计算机系统执行本文所述的操作,并且使得单个设备不执行所有操作。

本文提供的任何和所有示例或示例性语言(例如,“诸如”)的使用仅旨在更好地阐明本公开的实施例,并且不对公开的范围构成限制,除非另有要求。说明书中的任何语言都不应被解释为表示任何未要求保护的要素对于实践公开内容是必不可少的。

本文引用的所有参考文献,包括出版物、专利申请和专利,均通过引用并入本文,其程度就如同每个参考文献被单独且具体地指示为以引用的方式并入本文并且其全部内容在本文中阐述一样。

在说明书和权利要求中,可以使用术语“耦合”和“连接”以及它们的派生词。应当理解,这些术语可能不旨在作为彼此的同义词。相反,在特定示例中,“连接”或“耦合”可用于指示两个或更多个元件彼此直接或间接物理或电接触。“耦合”也可能意味着两个或更多个元素彼此不直接接触,但仍彼此协作或交互。

除非另有明确说明,否则可以理解,在整个说明书中,诸如“处理”、“计算”、“计算”、“确定”等之类的术语,是指计算机或计算系统或类似的电子计算设备的动作和/或过程,其将计算系统的寄存器和/或存储器中表示为物理量(例如电子)的数据处理和/或转换为类似表示为计算系统的存储器、寄存器或其他此类信息存储、传输或显示设备中的物理量的其他数据。

以类似的方式,术语“处理器”可以指处理来自寄存器和/或存储器的电子数据并将该电子数据转换成可以存储在寄存器和/或存储器中的其他电子数据的任何设备或存储器的一部分。作为非限制性示例,“处理器”可以是CPU或GPU。“计算平台”可以包括一个或更多个处理器。如本文所使用的,在至少一个实施例中,“软件”进程可以包括随时间执行工作的软件和/或硬件实体,诸如任务、线程和智能代理。同样,每个过程可以指代多个过程,以连续地或间歇地顺序地或并行地执行指令。术语“系统”和“方法”在本文中可以互换使用,只要系统可以体现一种或更多种方法,并且方法可以被认为是系统。

在至少一个实施例中,算术逻辑单元是采用一个或更多个输入来产生结果的一组组合逻辑电路。在至少一个实施例中,处理器使用算术逻辑单元来实现数学运算,诸如加、减或乘。在至少一个实施例中,算术逻辑单元用于实现诸如逻辑“与/或”或“异或”之类的逻辑运算。在至少一个实施例中,算术逻辑单元是无状态的,并且由物理开关元件(诸如被布置成逻辑门的半导体晶体管)制成。在至少一个实施例中,算术逻辑单元可以作为具有关联时钟的有状态逻辑电路在内部运行。在至少一个实施例中,算术逻辑单元可被构造为具有不在关联寄存器集中保持的内部状态的异步逻辑电路。在至少一个实施例中,处理器使用算术逻辑单元来组合存储在该处理器的一个或更多个寄存器中的操作数,并产生可被该处理器存储在另一个寄存器或存储器位置中的输出。

在至少一个实施例中,作为处理由处理器检索的指令的结果,处理器向算术逻辑单元呈现一个或多个输入或操作数,导致算术逻辑单元至少部分地基于提供给算术逻辑单元的输入的指令代码来产生结果。在至少一个实施例中,处理器提供给ALU的指令代码至少部分地基于处理器执行的指令。在至少一个实施例中,ALU中的组合逻辑处理输入并产生置于处理器内总线上的输出。在至少一个实施例中,处理器选择输出总线上的目的地寄存器、存储器位置、输出设备或输出存储位置,从而对处理器进行计时,使由ALU产生的结果被发送到所需的位置。

在本文件中,可以参考获得、获取、接收或将模拟或数字数据输入子系统、计算机系统或计算机实现的机器中。在至少一个实施例中,可以通过多种方式来围成获得、获取、接收或输入模拟和数字数据的过程,例如通过接收作为函数调用或对应用程序编程接口的调用的参数的数据。在一些实现方式中,可以通过经由串行或并行接口传输数据来完成获得、获取、接收或输入模拟或数字数据的过程。在另一实现方式中,可以通过经由计算机网络将数据从提供实体传输到获取实体来完成获得、获取、接收或输入模拟或数字数据的过程。也可以参考提供、输出、传送、发送或呈现模拟或数字数据。在各种示例中,提供、输出、传送、发送或呈现模拟或数字数据的过程可以通过将数据作为函数调用的输入或输出参数、应用程序编程接口或进程间通信机制的参数进行传输来实现。

尽管上面的讨论阐述了所描述的技术的示例实现,但是其他架构可以用于实现所描述的功能,并且旨在落入本公开的范围内。此外,尽管出于讨论的目的在上面定义了具体的职责分配,但是根据情况,可以以不同的方式分配和划分各种功能和职责。

此外,尽管已经用特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,所附权利要求书所要求保护的主题不必限于所描述的特定特征或动作。而是,公开了特定的特征和动作作为实现权利要求的示例性形式。

本文具体描述本公开的主题以满足法定要求。然而,该描述本身并不旨在限制本公开的范围。而是,发明人已预期,结合其他当前或未来技术,所要求保护的主题还可用其他方式来体现,以包括类似于本文档中所描述的步骤的不同步骤或步骤的组合。此外,尽管术语“步骤”和/或“框”在本文中可以用于暗示所采用的方法的不同元件,但是这些术语不应被解释为暗示本文公开的各个步骤之中或之间的任何特定顺序,除非明确描述各个步骤的顺序时。

其他变体在本公开的精神内。因此,虽然所公开的技术易于进行各种修改和替代构造,但其中某些图示的实施例在附图中示出并且已在上文详细描述。然而,应当理解,无意将公开限制为所公开的特定的一个或更多个形式,相反,意图是涵盖落入如所附权利要求定义的公开的精神和范围内的所有修改、替代构造和等同物。

相关技术
  • 片上系统及片上系统的设备隔离方法
  • 电子系统及其故障检测方法、片上系统和总线系统
技术分类

06120115608379