看虚拟化在PowerVR GPU中是如何进行

描述

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

对于电脑来说,目前的虚拟化技术能够让一台计算机同时运行多个操作系统,例如,一个开发人员可以在Microsoft Windows主机上运行一个Linux“访客”操作系统,而对于企业而言,它通常用来整合工作负载以减少CapEx和OpEx。在嵌入式平台上,虚拟化技术的主要目的则是在降低成本的同时通过分离确保安全性。

当涉及到GPU时,虚拟化提供了支持多个操作系统同时运行的能力,每个操作系统都能够将图形工作负载提交给底层的图形硬件实体。这在汽车领域变得越来越重要。例如,通过将一些要求严格的系统比如ADAS(高级驾驶辅助系统)和数字化显示面板分别放在完全独立域内以保证他们安全独立的运行。

为了打破它,虚拟化GPU需要执行如下操作:

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

•  主机操作系统(Host OS)——相比访客操作系统,主机操作系统具有完整的驱动程序并且对底层硬件具有更高级的控制能力。

•  访客操作系统(Guest OS):由虚拟机管理程序托管的具有操作系统的虚拟机,可以是一个或多个,它们可以共享底层可用的硬件资源。

硬件虚拟化 vs 半虚拟化

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

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

GPU虚拟化使用案例:

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

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

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

GPU虚拟化正在成为汽车行业的必备需求。大多数一级代理商和OEM厂商都选择加入更多的ADAS功能,在新款汽车中多个高分辨率的显示器也变得越来越普遍。

随着汽车越来越自动化,ADAS的功能也随之增加。这些功能在计算上十分复杂,而现在GPU强大的并行计算能力使得它们能够很好的处理这些任务。于此同时,仪表板集群和信息娱乐设备(在仪表板和后排座位处)以及挡风玻璃上更高分辨率的显示正在成为发展趋势。

powervr

汽车系统虚拟化环境中支持多个应用程序展示

面向汽车行业

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

隔离

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

下面的视频演示了这个特性,视频中显示的是一个操作系统,一个显示关键信息比如速度、警示灯等的显示器,并在其旁边有一个导航应用程序,这是一个不太重要的操作系统,先是卫星导航应用程序崩溃(人为),紧随其后是“内核崩溃”,然后是全面的重启。我们要注意的关键点是这些并不会影响运行在其他操作系统上的仪表板显示应用;它继续完全不间断的工作,另外请注意,一旦这个操作系统重新启动,它就能再次无缝的向GPU提交任务。

服务质量:保证性能水平

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

在简单的术语中,“上下文切换”是当前操作在尽可能早的时间点暂停的地方,所需的数据会被保存出来以便在稍后的时间点恢复操作时使用。

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

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

下面的视频演示了这一点,视频中在GPU上运

更进一步:Series 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已经证明了这一点,它进一步加强了它的功能,以帮助实现下一代车载信息娱乐和自动驾驶, 安全且经济高效。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分