虚拟机和虚拟机监控程序

神经网络 VM 是具有其自身神经网络计算资源、内存和接口的神经网络加速器的虚拟表示或模拟。每个虚拟机运行单个操作系统;每个操作系统运行多个软件进程;每个进程具有一个或多个线程。虚拟机在空间上相互隔离(内存保护就位,因此没有跨虚拟机的访问),在时间上也相互隔离(每个虚拟机都有可预测的执行时间)。 

在图 1 中,标记为处理器 HW 的底层是物理层。称为虚拟机管理程序的软件将虚拟机的资源与硬件分开。这些小型软件层使虚拟机/操作系统的多个实例能够相互运行 - 每个实例都给定了底层物理硬件。这可以防止 VM 相互干扰。 

例如,如果两台虚拟机在同一处理器上运行,如图 1 所示,则有可能让 VM1 运行关键应用程序,而 VM2 则不运行关键应用程序。虚拟机监控程序软件将保证 VM2 无法访问 VM1 的任何内存或影响 VM1 的最坏情况执行时间。它将保证,VM2 如果崩溃,不会影响 VM1。 

图 1:虚拟机监控程序软件将物理硬件(处理器硬件)与虚拟机分开

订阅 Synopsys IP 技术公告

包括深度技术文章、白皮书、视频、即将举行的网络研讨会、产品公告等等。

虚拟化和自动驾驶汽车

随着对自动驾驶汽车需求的增加,确保这些车辆安全的需求也随之增加。ISO 26262 标准定义了功能安全 (FuSa) 要求,用于检测各种汽车安全完整性等级 (ASIL) 的系统性和随机(永久和瞬态)故障。前向碰撞警告或发动机控制功能需要比管理汽车娱乐系统更高的 ASIL 等级。不同的任务可能需要不同的 Fusa 等级。

虚拟化可以保证在共享资源上运行的不同质量水平的应用程序和操作系统之间彼此互不干扰。将需要更高 ASIL 级别的任务与不需要 ASIL 级别的任务分离,使系统更易于组合(模块化),从而简化了认证汽车系统的任务。需要通过认证来验证您的硬件是否符合相应的汽车标准。每个安全关键型 VM 和虚拟机监控程序软件都需要经过认证。非安全关键型 VM 不需要经过认证,但必须保证它们不会破坏经过认证的软件。

虚拟机包括更少的停机时间,而这对汽车至关重要,因为多个冗余虚拟机可以彼此并肩运行。自动驾驶汽车虚拟化的另一个好处是能够从安全错误中恢复过来。如果 VM1 正在运行安全关键型任务,而 VM2 未运行安全关键型任务,那么如果 VM1 接管 VM2 的资源以优先处理安全关键型任务,则 VM1 上的故障可能会被“恢复”。

虚拟化和 NPU

图 2:Synopsys NPX6 NPU IP 系列支持硬件和软件虚拟化

Synopsys ARC NPX6FS 神经处理单元 (NPU) IP(图 2)是主机处理器使用的 AI 加速器,可以对神经网络提供高面积利用率和低功耗。NPX6FS 系列处理器可从 1K MAC 扩展到 96K MAC,专为汽车安全而设计,支持 ASIL B / ASIL D 进行支持。 NPX6FS 包括内置安全机制,包括内存控制器和互连控制结构上的双核锁步、寄存器上的错误检测代码 (EDC) 、纠错码内存 (ECC) 互连以及内存 ECC 和看门狗定时器。

作为加速器,主机 CPU 在 NPX 上调度 VM,但多个内核上的 VM 中的任务可以在不进行主机交互的情况下同步。本地虚拟机监控程序将在 ARC NPX NPU 上运行。对于空间隔离,ARC NPX 上的每个 VM 都将在专用的访客物理地址空间中运行。NPX 具有包含 MMU 的 L1 和 L2 内存控制器,可保护控制器的加载/存储访问。NPX 需要与 IOMMU 集成,以保护 L2 控制器 DMA 访问。 

NPX6FS 系列的性能等级可从低至 1 TOPS 扩展到数千 TOPS。这些高水平的性能非常重要,因为 ADAS 应用要求正在从 L2 自动驾驶级别的数百 TOPS 增长到 L3 及更高自动驾驶级别所需的数千 TOPS。我们来看看 NPX6-64KFS,它是一种功能安全配置,每个周期具有 64K 或 65,536 个 INT MAC。这是用于执行 CNN 或转换器等视觉神经网络的大量并行计算资源。 

NPX6-64K 有 16 个 4K MAC 内核,用于神经网络计算(图 3a)。每组 4 个内核(或每组 16K MAC)由 L2 紧密耦合存储器 (SRAM) 进行支持。L2 控制器支持每组 8 个内核(或 32K MAC)。(小于 32K 的配置将只有一个 L2 控制器)。IOMMU 不是 NPX6 FS 的一部分,需要集成到系统设计中。

图 3a:无分区的 NPX6=64KFS 示例。外部 IOMMU 与 NPX6-64KFS 集成,NPX6-64KFS 具有 16 个 4K MAC 内核,用于神经网络计算。

虽然 NPX6-64KFS 神经网络处理器被视为一个引擎(并且被软件开发工具视为一个引擎),但资源可以轻松分配给不同的虚拟机。在图 3b 中,我们看到了从 NPX6-64KFS 创建两个分区的可能配置。在这种情况下,每个分区有 8 个 4K MAC 内核,并由一个 L2 内存控制器控制。一个分区可以运行安全关键型 VM,另一个分区可以运行一个非安全关键型 VM。

图 3b:将 NPX6-64KFS 分区为两个虚拟机。

我们在图 3c 中看到,可以从 NPX6-64KFS 的可用物理资源中创建三个分区。在这种情况下,两个较小的分区都将由 L2 控制器管理。在此示例中,分区 A 可能正在运行一个安全关键型 VM,分区 B 运行一个非安全关键型 VM,同时它们都共享一个 L2 控制器的资源。分区 C 可能正在使用另一个 L2 控制器运行一个非安全关键型 VM。

图 3c:NPX6-64KFS 分区为三个虚拟机。

虽然按核心将大型 NPX6 划分为不同的分区和虚拟机似乎是一项简单的任务,但即使是单核 NPX6-1KFS 或 NPX6-4KFS 也可以使用虚拟化来创建多个虚拟机。本地虚拟机监控程序将处理资源分区。虚拟化是一种用于创建灵活 ASIL 系统的工具,也是 NXP6 FS 系列的重要功能。

虚拟化已经迅速成为面向自动驾驶汽车设计的嵌入式汽车解决方案的必备功能。增加虚拟化功能可以帮助最大限度地提高 L3 所需的大型 DSP 和 AI 加速器的有效性。虚拟化还可以提高系统从故障中恢复的能力,并且它只关注功能安全任务,从而可以简化认证过程。对于未来的 ADAS 设计,选择具有虚拟化硬件和软件功能设计的 DSP 和神经网络处理器 IP 非常重要。

Synopsys IP 技术公告

深度技术文章、白皮书、视频、网络研讨会、产品公告等等。

继续阅读