我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:六合特码 > 多处理器分配 >

如何利用多核CPU提高虚拟现实性能?

归档日期:05-26       文本归类:多处理器分配      文章编辑:爱尚语录

  虚拟现实引领新时代令人惊喜的新体验,但也带来了各种新的挑战。其中之一就是虚拟现实应用“耗能”问题。

  虚拟现实挑战了图形和仿真技术,以至于创造优秀虚拟现实体验的硬件需求成为日前热点。这些高要求给虚拟现实体验背后的软件带来了巨大的压力。这些软件该如何充分利用现有的硬件,包括如何更好利用多核CPU。

  在提升计算机工作速度的道路上,晶体管数量成倍增加,CPU时钟频率也稳步提高。不幸的是,随着晶体管数量增多、时钟频率的提升,处理器就需要消耗更多的能源,产生的热量也随之增加。过热会损坏CPU元件。你也许留意到,使用手机玩游戏时,手机会发烫。因此CPU制造商需要在速度和热量之间寻求平衡,确保所产生的热量对设备无害,也就是通常提到的散热层。

  处理这个问题的趋势是把多核CPU执行核置于时钟频率较低的物理芯片上。双核CPU执行任务的速度是单核的双倍。但是,它耗能少,产热少。

  单核CPU几乎退出了市场。iPhone 6带有双核处理器。高端安卓手机通常是八核。主流PC电脑制造商也在推出八核芯片。甚至PlayStation 4也配备八核处理器。但是目前为止,开发商只使用了八核中的六核。

  常言道:“天下无免费的午餐。”多线程编程或引擎使用多核CPU需要深思。头号麻烦就是数据冲突。多核CPU执行路径需要访问相同的数据。

  这有一个相对简单的例子。一个CPU将数值写入内存,同时另一个CPU试图读取同一个数值。第二个CPU可能只读到部分数据,因此这个数据是无用的。这会导致程序奔溃或意料之外的结果。

  为保护被CPU同步访问的数据,程序员使用了同步对象。但进行同步时,CPU需要等待同步完成,就会出现性能不平衡和耗费时间。从架构设计最大限度地减少同步数据量是最优的方案,但这也使得充分发挥多核的作用变得困难起来。如果程序员错误地设计和执行程序,有可能会让多核的执行速度变得更慢。

  游戏引擎的性能就是有关收集信息、模拟和渲染。引擎运行得更快更稳,帧率就更快、用户体验也更好。要做到每秒90帧,就需要在11毫秒内完成信息收集、模拟和渲染。

  而虚拟现实需要渲染两次,每只眼睛一次。11毫秒的时间非常短,所以游戏开发者为了保持每秒90帧的速度,通常会降低内容的质量。当然,体验感就变得较差。

  许多引擎需要进行设计上的改进以支持多核。这可以提高一些核的性能,但数据冲突又会抵消一些。这不再是几个CPU核心的问题了。

  一般首要做的就是将渲染划分到两个不同的线程中,然后确定有助于(如物理和AI )平行化的区域。

  较于线性地循环所有的物理和AI对象,工作会被分配到多核CPU运行的多线程上。当工作完成时,程序就回到线性执行。更高级的系统允许线程空闲的时候能自己给自己安排工作。事实上,这种多线程有一定的好处,但CPU需要耗费大量的时间实现同步,导致一个或多个CPU闲置。手动调优适用于单个产品,但它并不能自动地负载均衡。造成的结果就是CPU使用率不均衡。大的游戏社区能够识别多数旧游戏引擎,超过四核的处理器反而无法显示其优势。

  对比现下的CPU结构和未来设备蓝图时,发现需要一个新的系统。这个新系统能够承载多核、可测的负载平衡、可扩展、在N核间保持流畅控制,以及最重要的是最大限度减少数据冲突。

  这种模拟通过修改来延展到CPU各个内核,并保留其中一个内核用于渲染。为了实现这点,模拟会分解成多任务,以便CPU能以任意顺序分开处理。

  这就意味着任务将分为多个阶段,如读取阶段、决策阶段和编写阶段。另外你会需要一个广播阶段,方便对象间的交流。

  现阶段任务确保完成后,才能进入下一阶段。每一阶段的执行,都需要有效分配,确保负载平衡。当中有内核提前完成任务时,就会被分配更多的任务,直至现阶段任务全部结束。

  这个设计应允许大型模拟带有异步渲染器。为了说明潜在的性能提升,我们提供一些采用类似结构的MaxPlay 运行引擎的测试数据。

  以上你能看到六核(带六个超线程) CPU运行密集群体模拟的性能表现。这个视频展示了两核到四核到六核模拟的性能提升。

  在许多情况下,我们发现采用这个技巧能大幅度提升性能,开发商就可以加入更多的体验内容。硬件生产商预测核数量将会持续增加,所以考虑十二、十六甚至二十四核的解决对策相当重要。

  对怀疑DirectX12和Vulkan graphic APIs系统的人来说,这个架构可以很好传输显示列表,在有需要时,能从任一阶段使用返回数据进行渲染。

  所以,如果你打算利用多核处理器来丰富虚拟现实体验,你应该找到一个解决方案使用多级数据并行模拟。

本文链接:http://ticketsareus.net/duochuliqifenpei/485.html