×

虚拟化为什么在汽车设计中变得至关重要?

消耗积分:2 | 格式:pdf | 大小:267.42KB | 2021-01-28

分享资料个

本文来源:SemiEngineer
作者:ANN STEFFORA MUTSCHLER

随着汽车产业的电气化和自动化不断提高,车辆内部的ECU不断整合、有着更严格的功能安全和信息安全等要求,车辆设计越来越复杂。汽车生态系统的参与者们正以多种方式寻求虚拟化概念,以简化汽车的设计。

其中的一种方法是硬件虚拟化,将一种设备托管在一个或多个虚拟机上,这些虚拟机的行为类似于具有自己操作系统的独立计算机,并且都运行在同一个底层设备硬件上。这意味着单个GPU可以支持多个并发运行的操作系统,每个操作系统都向单个图形硬件设备提交工作负载。

从历史上看,形成这一格局的趋势之一就是隔离,车内完全独立的模块在物理上彼此分离,并且在不同的配置中。

Imagination产品管理高级主管Kristof Beets说:“我们已经看到了这种变化。有些SoC,有两个图形核心,一个用于仪表板,另一个用于驱动屏幕,它们在物理上是分开的。问题是,如果有性能上的差异,如果其中一个GPU比另一个功能弱很多,另外一个的加速效果就会弱很多,同时两者不能协同加速,这是一个大问题。此外,安装太多模块并对其进行过度的设计非常昂贵。”

Drako Motors首席执行官Dean Drako表示,汽车行业的一些活动正在进一步塑造产业格局。“首先,电气化即将到来,这需要不同的软件和不同的功能,没有一家汽车制造商真的能完全掌控。第二是向ADAS和自主车辆发展,每家OEM都在努力开发中,他们甚至还没有弄清楚要在什么操作系统上运行,他们只是想弄清楚如何让它工作。此外,汽车制造商还面临着一个巨大的问题,汽车的计算成本在总成本中所占的比例持续上升。”

1950年,电子产品仅占汽车成本的1%。如今,电子产品已占到总成本的40%。随着自动驾驶功能和安全功能的增加,以及为这些系统定制的软件开发,成本将持续上升。但企业也开始质疑,是否一切都需要独立开发,尤其是在差异化程度很低的领域。

OEM没有1000名工程师来制造、测试,并处理合规性、安全性和安全性,大多数都是希望采用合作伙伴方式共同解决难题。Drako说道:“特斯拉在联网汽车的性能方面大做文章,他们可以用iPhone打开汽车,检查汽车,查看车内的摄像头。其他OEM都无从下手,因为车里有100台电脑,每台电脑只做一件事。有一台电脑负责摄像系统,这样你在倒车时就能看到摄像机。这的确很好,但是这台电脑不能和其他任何电脑通信。当他们为OnStar安装了漂亮的空中电话调制解调器,以便在发生故障时可以通过手机获得帮助时,无法将摄像头连接到手机上,以便通过它观看视频,因为这是两台不同的计算机。OEM商非常困惑,所以这个行业需要另一种操作系统,因为特斯拉不会向其他OEM商公布自己的操作系统。”

硬件虚拟化旨在解决这些问题。“假设你有一个GPU,但它有多个客户端操作系统——受保护的工作负载,可以占据GPU的一定比例。”Beets说。“我们把它完全放在硬件上以减少开销,因为我们希望尽可能多地保留GPU负载,这样就可以很好地将其分配到不同的工作负载上,和虚拟化CPU相似。这是一种基于时间切片的系统,基本上,您可以使用GPU,并使用基于软件的规则来安排不同的工作负载,并相互保护。”

图1:汽车虚拟化模型

Cadence解决方案营销部高级集团总监Frank Schirrmeister指出,鉴于汽车行业正在按照车轮上的数据中心的思路重新思考未来的架构,虚拟化在汽车行业尤为重要。“虚拟化非常重要,尤其是在汽车领域,您面临的是分区体系结构以及放置哪些功能。你真的需要小心地把关键的方面和不那么重要的方面分开,比如音频和视频。其中一些可能会崩溃,但对于自动驾驶和此类应用相关的摄像头来说,则需要有效隔离。”

自本世纪初以来,硬件虚拟化在数据中心得到了广泛的应用,主要是为了提高服务器的利用率,因为为服务器机架供电和冷却成本高昂。通过使用hypervisor,多个任务、操作系统和应用程序可以共享同一个硬件。

Arteris IP的功能安全经理Stefano Lorenzini说:“为同一硬件创建多个虚拟实例的方法可行,实际上都有专用于特定的产品、软件或应用程序。Hypervisor是一个直接在硬件上运行的裸机操作系统,它创建了一个与运行在上面的其他应用程序或软件程序相关的中间层。因此,如果您想从上到下查看体系结构,您可以看到应用程序,然后看到Hypervisor,然后看到硬件层。虚拟机监控程序会给应用程序造成这样一种错觉,即SoC的每个资源都专用于它们。”

这也解决了自动驾驶汽车中的一个问题,在这种情况下,汽车中有许多不同的分布式处理器,但并非每一个处理器都专用于特定的功能。这被视为避免冗余的一种方式,但也会增加重量和成本,同时限制了自动驾驶车辆故障转移系统的能力。

Lorenzini说:“每个供应商都将为特定处理器提供操作系统和应用程序。你可能有几十个不同的处理器。随着系统复杂程度的增加,现在的趋势是尝试将所需的所有计算能力集中在一台集中的计算机上。然而,如果你要把它们放在一起,就要重新利用过去的应用程序、操作系统等的投资,但务必保证在同一块硬件上彼此独立工作。这就是OEM的问题所在,因为每个应用程序可能有不同的安全要求和ASIL级别。例如,您可能有一个制动系统必须是ASIL D,另一个应用程序必须是ASIL B,另一个应用程序没有ASIL等级,因为它不是安全关键。在您将所有这些应用程序放在一起的那一刻,您必须确保这些不同的软件任务之间的分离或隔离。这正是虚拟化所能做的,因为它可以创造分配任务。虚拟化将每个任务分开,例如,如果某个特定任务因软件故障而失败,则其他所有任务都不会受到影响。”

硬件虚拟化

随着这一领域工作的不断发展,工程团队有两种实现硬件虚拟化的方法—准虚拟化和全硬件虚拟化。

准虚拟化就像一个大的软件交换机,其中可能有一个GPU和一个控制该GPU的软件。在用户方面,可能会有一个大的软件切换,表示有两个应用程序,仪表板和信息娱乐系统,允许两者之间切换。

“这种方法的问题在于,你没有真正的虚拟化,因为你基本上都是用软件来做的。另一个问题是,通常只有一个驱动程序软件控制着这个GPU,所以如果其中一个应用程序行为不当,它可能会导致软件崩溃。在这样一个系统中,实际工作的风险要大得多。实际上还有更多的开销,因为它是软件,而且是手动切换。通常情况下,你会运行一个可信应用程序的框架,然后软重置硬件以清理它,以确保它没有被污染。然后运行另一个应用程序。这些类型的重置在硬件上花费了大量时间,但您必须这样做,否则来自上一个应用程序的数据可能会影响下一个应用程序。”

全硬件虚拟化将一切构建到硬件中。硬件设计中有多个软件接口,可以运行许多完全独立的驱动程序栈。每个程序相信它有自己的GPU,而且实际上也就是在和硬件对话。

一些GPU提供商,比如Imagination,使用GPU内部的一个小型固件处理器来管理这些优先级,以及充当看门狗的角色,还可以拒绝工作负载。此外,一个软件模块使用优先级方案来隔离GPU的特定子部分的工作负载,为用户细分GPU以满足灵活性的需求。

软件

虚拟化已经被证明是划分不同软件栈并降低总体硬件成本的有效方法。然而,在安全保障方面,问题仍然需要解决,特别是在汽车领域。

OneSpin Solutions的产品管理总监Shaun Giebel说:“汽车应用的处理器核心发展缓慢。为了支持虚拟化,需要额外的硬件功能。再加上更多的软件层,这使得整个验证和功能安全符合性更加复杂。某些低级软件功能验证已经在特定的安全空间中使用,增加对硬件的正式验证是对系统按预期运行、无干扰和解决关键性能瓶颈的唯一方法。”

如果没有标准化的解决方案,比如汽车专用操作系统,这个问题就会变得更加困难。在这个领域,操作系统的工作是处理许多独特的安全性、安保性和复杂性要求,但要用竞争对手的专有操作系统来实现这一点要困难得多。

“为什么汽车没有自己的操作系统?”Drako问道。“手机、游戏和笔记本电脑都有Android和iOS,服务器也有自己的操作系统。汽车是世界上唯一没有自己操作系统的消费级设备。”

Beets同意,并建议这与认证和功能安全有关。“像Linux和Android这样的东西都经过了一定程度的测试。但是他们仍然是开源的,而且很多人都有贡献。它们也非常复杂。它们非常大,有很多行代码,所以你不能完全保证它们没有bug。在汽车领域,仪表板对用户来说非常重要,它不需要所有丰富功能,因为它基本上只是运行一个应用程序。因此,您可以使用一个更小的操作系统,它更简单,但也可以由第三方验证它是否正确,是否满足要求,并且还有一些工具可以为完成验证工作。但如果你的代码库太大,那是不可能的。”

其中最著名的汽车操作系统是INTEGRITY和QNX。还有一些Linux的汽车级版本,是Linux的简化版本。所有这些都可以在虚拟化系统中运行。

“你可以创建所有这些分离的域沙盒,每个沙盒都可以运行自己的操作系统,”Beets说。“其中一些是功能上安全的操作系统,比如Integrity。其他的可能只是标准的Android或Linux,这没关系。如果它们崩溃,它们基本上会停止提交工作,因此GPU不会从它们那里获得更多的渲染命令,这很好,因为仪表板在资源的另一个子集上运行自己的小操作系统,并且会继续运行。”

安全和虚拟模型

安全性是虚拟化可以发挥重要作用的另一个领域。

“没有信息安全,就没有功能安全,没有功能安全,就没有信息安全,”Cadence的Schirrmeister说。“二者都是齐头并进的,因为如果我没有安全措施,可能会有人闯入并使我的刹车失灵。”

“虚拟化”一词的另一面是数字孪生概念,即整个系统在模型之外虚拟化。还有一些安全特性可以从这个角度来解决,在设计流程中进一步等待。

“如果攻击者控制了系统,他们会怎么做来入侵?”Tortuga Logic的首席执行官Jason Oberg说:“如果你在一家半导体公司制造一个子系统,很难理解攻击者是如何侵入该子系统的,因为你已经走得太远了。但是从虚拟化的角度来看,假设它是一个ADAS系统,您正在尝试检测您是否会遇到一个对象,是否有人访问我系统的这一部分。可能是系统的外部输入,比如调试端口,也可能只是从另一个域访问它的某种方式,比如在你的操作系统中,从用户代码或其他方式。但是如果它进入并实际调用某个东西,它会影响ADAS系统的行为。您可以对整个行为进行建模,并且可以在整个系统级别进行建模,从硬件一直到操作系统,再到应用程序级别。”

虚拟化在这方面也有帮助。“这实际上是在考虑如何在这种环境下部署它,如果有对手试图做一些恶意的事情,他们会如何试图侵入系统?”Oberg说。“然后就是从那里展开和解开一切。通过虚拟化,您真的可以得到完整的图像。当你深入到真实的事物时,事情会变得越来越孤立。这就更难解释了。”

Synopsys验证小组的高级主管Marc Serughetti说:“虚拟化能够充分利用处理器的性能,优化架构,并解决日益增长的软件复杂性问题。它还需要新工具的加入,以加速软件开发、集成和测试。对硬件可用性的依赖会造成延迟、不确定性并限制生产力。使用虚拟原型(从虚拟硬件模拟到基于主机的执行)虚拟化硬件以实现开发目的,是尽早开始开发、部署更具生产力的调试和测试、在服务器场中扩展开发以及在任何时间、任何地点跨协作团队实现此开发的关键技术。”

还有更多的工作要做

其中ISO 26262是汽车发展方向之一。在开发周期的每一个阶段,即使开发步骤没有在车辆中完成,也必须对其进行适当的说明,并且可以跟踪和测试,虚拟化在这方面也可以发挥作用。

“特别是对于安全关键型系统,虚拟化涉及系统工程过程的每一个部分,但测试仍然是脱节的。”西门子公司Mentor集成电气解决方案组首席工程师Lance Brooks说。“由于硬件在设计周期中占据主导地位,因此在设计阶段为安全而做的测试以及类似这样的事情与流程的后期部分是脱节的。尤其是在汽车行业,它们都是以硬件为中心的。”

因此,汽车OEM正在努力磨练他们的软件专业知识。Brooks说:“他们确实在努力解决的一个问题是以硬件为中心的思维方式。虚拟化、数字化和数字孪生兄弟确实可以帮助他们,因为在实际的硬件上不可能验证一切。测试从设计到验证都是分离的,这种使用数字孪生和虚拟化的抽象是帮助他们突破这一障碍的一种方法。如果他们在整个过程中都能做到这一点,他们就会开始打破这些“筒仓”,在设计方面和另一方面进行测试。”

这将大大加快和改善更多自主汽车的开发进程。

原文链接:https://semiengineering.com/virtualization-in-the-car/

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

评论(0)
发评论

下载排行榜

全部0条评论

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

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.lene-v.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'虚拟化为什么在汽车设计中变得至关重要?',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.lene-v.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);