在过去的几年中,虚拟化的概念,——,将软件与承载它的硬件分离,已经被很多人所熟知。在本文中,我们将描述什么是虚拟化,看看它如何在PowerVR GPU中工作,并解释它如何为各种市场,尤其是汽车行业带来巨大的好处。

对于电脑来说,目前的虚拟化技术可以让一台电脑同时运行多个操作系统。例如,开发人员可以在Microsoft Windows主机上运行Linux“来宾”操作系统,但对于企业来说,它通常用于集成工作负载以减少资本支出和运营支出。在嵌入式平台上,虚拟化技术的主要目的是通过分离来降低成本和保证安全性。

就GPU而言,虚拟化提供了支持多个操作系统同时运行的能力,每个操作系统都可以将图形工作负载提交给底层图形硬件实体。这在汽车领域变得越来越重要。比如ADAS(高级驾驶辅助系统)和数字显示面板等一些严格的系统,都是放在完全独立的域中,保证其安全独立运行。

要打破这种局面,虚拟化GPU需要做到以下几点:

Hypervisor:这基本上是一个软件实体,为客户操作系统提供一个共享的虚拟硬件平台(在本例中是GPU硬件),并管理客户操作系统的托管。

主机操作系统(Host OS)——与客户操作系统相比,主机操作系统拥有完整的驱动程序,对底层硬件的控制水平也更高。

来宾操作系统:一个或多个虚拟机,其操作系统由虚拟机管理程序托管,可以共享底层的可用硬件资源。

硬件虚拟化与半虚拟化

从Series6系列GPU内核开始,PowerVR就具备了先进完备的硬件虚拟化特性,在Series8XT中得到进一步增强。我们将在本文后面深入讨论这个细节。通过完全虚拟化,这意味着在虚拟机管理程序下运行的每个客户操作系统都不会意识到它正在与其他客户操作系统和主机操作系统共享GPU资源。每个客户系统都有一个完整的驱动程序,可以以独立和并发的方式直接向底层硬件提交任务。这种方式的好处是,在处理不同“访客”的任务提交时,不会有主管的开销,也减少了向GPU提交任务的等待时间,因此具有较高的利用率。

这与半虚拟化解决方案不同,在半虚拟化解决方案中,客户操作系统可以意识到它们是虚拟化的,并与其他客户系统共享底层硬件资源。在这种情况下,客户系统需要通过Hypervisor提交任务,整个系统必须作为一个内聚的单元一起工作。这种方案的缺点是hypervisor(运行在CPU上)开销太高,任务提交延迟太长,潜在地降低了底层GPU硬件的有效利用率。此外,需要修改客户操作系统(添加额外的功能),以便它们可以通过虚拟机管理程序进行通信。

GPU虚拟化用例:

GPU虚拟化的应用有很多,以下主要集中在嵌入式市场:汽车数字电视(DTV)/机顶盒(STB)、物联网(IoT)/可穿戴设备、智能手机/平板电脑。

我们在本文中讨论的虚拟化主要集中在汽车上,因为在这个市场上,虚拟化会带来很多好处。它有特定的要求,这使它成为更复杂的市场之一。这个内容你可以参考我们的白皮书。

汽车市场为什么需要虚拟化?

GPU虚拟化正在成为汽车行业的一项基本要求。大部分一级代理商和主机厂选择增加更多ADAS功能,多个高分辨率显示屏在新车上越来越常见。

随着汽车越来越自动化,ADAS的功能也越来越多。这些函数在计算上非常复杂,但是现在GPU强大的并行计算能力使得它们能够很好地处理这些任务。与此同时,仪表盘和信息娱乐设备(在仪表盘和后座)以及挡风玻璃上的更高分辨率显示器正在成为一种发展趋势。

在汽车行业的汽车系统虚拟化环境中支持多种应用程序演示。

那么,为什么PowerVR虚拟化这么适合汽车呢?从本质上说,这是因为它提供了一系列功能来解决各种问题,例如实现最大安全性和服务质量的硬件健壮性,确保连续性能,以及确保最大的硬件利用率。

隔离;隔离

首先,我们来看一下基本的隔离方法,即不同操作系统(OS)及其对应的应用程序之间的隔离。这些应用程序通过分离应用程序来提供安全性,这当然是虚拟化的基本优势之一。

以下文章演示了这一功能。文章显示了一个操作系统,一个显示速度和警告灯等关键信息的显示器,以及旁边的导航应用程序。这是一个不太重要的操作系统。先是卫星导航应用崩溃(人为),接着是“内核崩溃”,然后是全面重启。我们要注意的重点是,这些不会影响运行在其他操作系统上的仪表盘显示应用;它继续完全不间断地工作,请注意,一旦操作系统重新启动,它可以再次无缝地向GPU提交任务。

服务质量:保证性能水平。

汽车行业的关键需求之一是要求一个或多个关键应用程序/操作系统获得足够的资源来提供所需的性能。在PowerVR上,这是通过优先级机制实现的,GPU中的专用微控制器(MCU)处理调度并设置每个操作系统的优先级(如果需要,也可以设置每个操作系统中应用/工作负载的优先级)。当较高优先级操作系统的工作负载被提交给GPU时,较低优先级操作系统的工作负载将被切换出上下文。

简而言之,“上下文切换”是指在最早可能的时间点暂停当前操作,并保存所需的数据,以便在稍后的时间点恢复操作时使用。

本次演示使用的Series6XT(第一代PowerVR GPU支持完全硬件虚拟化)平台最早可能的时间点有:几何处理:调用绘图粒度像素处理:面片粒度计算处理:工作组粒度。

一旦较高优先级操作系统的工作完成,较低优先级工作负载将恢复并完成,这有助于确保关键的较高优先级工作负载获得所需的GPU资源,从而确保所需的性能要求。

下面的文章演示了这一点,该文章在GPU上运行。

更进一步:8XT系列增强了虚拟化。

第一个支持完全硬件虚拟化的PowerVR系列是Series6XT,上面所有的文章/演示都是基于Series 6XT平台。在本节中,我们将讨论如何进一步增强Series8XT,并提供一些新特性和增强功能。

细粒度的上下文切换

在Series8XT上,可以以更精细的粒度执行上下文切换,从而确保更快的上下文切换以及低优先级工作负载和高优先级工作负载之间的切换。目前上下文切换的精细粒度主要是:顶点处理:原始粒度像素处理:子分块或者,最坏的情况下,回到面片粒度。

每个主数据的终止

在优先级较低的应用程序无法在定义的时间范围内切换上下文的情况下,需要根据数据所有者(计算、顶点或像素处理)使用DoS机制来终止一个集成或重置应用软件。前几代只支持计算终止,而顶点和像素处理需要软重置,因此如果与不安全的低优先级应用重叠,就会影响高优先级工作负载。在Series8XT中,现在可以终止所有数据所有者,确保即使高优先级/关键工作负载与需要终止的应用重叠,它们也不会受到影响。

提交对每个SPU工作负载的控制

得益于这一特性,特定应用可以在GPU中为自己的可扩展处理单元(SPU)执行其工作负载。例如,基于汽车中的计算,有利于长期运行的ADAS应用程序可以不间断地运行自己的专用SPU,而其他可能来自其他操作系统的应用程序则使用另一种机制(如基于上下文切换的更高优先级任务)来共享剩余的GPU资源。

紧密集成的两级MMU

上一代GPU采用了一级MMU,因此要求SoC厂商设计并实现二级/系统级MMU或类似机制来支持虚拟化。现在Series8XT在GPU中集成了二级MMU,带来了以下好处:优化设计并与一级MMU紧密耦合,实现低延迟和提高效率,降低SoC供应商的开发难度,使产品能够更快推出,支持管理应用中对应独立软件的全/双向连贯支持,提高性能,降低系统带宽。本质上,它可以在虚拟化环境中提供更高级别的保护和更小的粒度(页面边界,特定于计算机的术语)。

摘要

PowerVR GPU集成硬件虚拟化技术非常有效,非常适合并满足汽车行业的诸多需求。我们最新的Series8XT GPU已经证明了这一点,它进一步加强了功能,以帮助实现下一代车载信息娱乐和自动驾驶,安全、经济、高效。