深度分析异构技术如何让性能功耗鱼与熊掌兼得?

作者:Dev Tech

一般来讲高性能处理器都会采用深度压缩、多管道、分支预测和动态执行等技术来最大限度的提升性能,但是这也都是有代价的,尤其会影响功率的效率。

如果这些任务是可以并行执行的,那么就可以采用更多CPU的解决方案,不仅提升了性能还提高了功率效率。为了实现这个功能,CPU供应商开始提供多核和多集群的解决方案,此外操作系统和应用开发者们也开始调整他们的软件设计来利用这些特性。

随着时间的推移应用的性能要求也在不断的变化,因此如果可能,我们需要将它们移植到更高效的CPU上来执行提升功效。对于专业的计算密集型任务,专用的加速器能够提供非常好的功效,但是不宜长时间使用。

当异构处理器时代到来,从性能和低功耗的角度来看我们需要考虑哪些因素呢?不妨看看下面几条。

多线程

即使采用动态执行技术,对于一般的工作负载来讲,在每个时钟周期内CPU都不是被全部占用的,大部分时间是用来等待访问存储器系统。然而当其中一部分程序(指某个线程)发生阻塞时,硬件资源会用于其他线程任务的执行。这也是多线程对我们是有利的原因:当第一个线程阻塞时有机制能够切换到第二个线程来执行,这会提升整个系统的吞吐量。充分利用CPU运行的每个执行周期会带来性能的显著提升。更具不同的应用,设置第二个线程会从总体上提升CPU的性能达40%,芯片的成本则只增加10%左右。Imagination推出的MIPS CPU就专门集成了硬件多线程特性。

共同的观点

将一个执行任务从一个处理器移植到另一个处理器上需要处理器具有相同的指令集和系统内存空间。这个特性主要是通过共享虚拟内存(SVM)来实现的,程序中的任何指针必须连续指向相同的代码或者数据空间,任何被占用的缓存空间对于后续的处理器来说也必须是可见的。

 图1:集群之间转换时内存移动
图1:集群之间转换时内存移动

图2:单个集群内部转换时更小更快的内存移动
图2:单个集群内部转换时更小更快的内存移动

缓存空间的一致性

缓存一致性可以通过软件进行管理,这需要在向后续处理器(CPU B)转换之前初始处理器(CPU A)要清空它的缓存空间,备份到主存储空间。然后CPU B从主存储空间获取数据和指令。这个过程会频繁的对存储空间进行访问,因此会比较耗时而且消耗功率比较大;因为访问主存储空间通常消耗的功率会比从缓存空间取数据明显高很多,因此这个影响会被进一步放大。为了解决这个问题,硬件缓存一致性能够记住这些缓存空间的位置,确保后续的访问能够获取正确的数据。

“在很多异构系统中,一个集群往往采用多个高性能处理器,同时另一个集群也会部署更小的高效处理器。在这些不同类型的处理器之间进行任务的转换意味着新处理器的一级和二级缓存都是空闲的,在转换期间需要之前的缓存结构和时间才能将新的缓存空间利用起来。

然而,我们又另一个选择—MIPS I6500 CPU。I6500通过集成的I/O相干单元模块(IOCU)支持异构混合外部加速器以及同一个集群中不同类型的处理器,即一个集群中允许高性能多线程功率优化的处理器混合使用。现在将任务从一种类型的处理器迁移到另一种类型的处理器上变得更加的高效,因为只有一级缓存是空闲的,而且对于之前的一级缓存的访问代价也很低,这样整个迁移过程就变得更加高效了。”

CPU与专用加速器的结合

CPU是通用的处理机器,它们的灵活性使他们能够处理几乎所有的任务,但是在效率上就大大折扣了。通过优化PowerVR GPU能够处理大型高并行计算密集型任务,并体现出较高的性能和功效,相对CPU而言其灵活性则有所降低,但是逐渐建立起了良好的软件开发生态系统,丰富的API接口如OpenCL、OpneVX等。

专用的硬件加速器具有更高的性能和功效,这一点明显优于CPU,但在灵活性方面则远远落后。

然而对于计算密集型应用使用加速器能够最大限度的提升系统性能和功效,一些专业的计算型应用场景如音频和视频处理、机器学习中的神经网络处理等都采用类似的数学运算。

硬件加速可以集成到CPU器件中,增加单指令多数据(SIMD)特性以及浮点计算单元(ALUs)。然而通过SIMD单元来处理数据时CPU相当于是一个DMA(直接数据访问)控制器搬运数据,CPU作为DMA控制器效率是非常低的。

相反地异构系统则能两者兼顾,它集成了一些专用的硬件加速器,融合了多个CPU内核,通过专用的硬件的设计不仅具备更好的效率,同时也保持非常大的灵活性。

功耗的降低和性能的提升是与加速器执行有效任务占用的时间相关的,适合加速器执行的任务包大小范围很广—你可能期望少量的大型任务,而不是很多小型任务。

当然在CPU和加速器之间的转换也是有代价的,这会限制执行任务的大小从而节省功率提升性能。对于小型任务,功率的消耗和任务传输的时间明显超过了使用加速器节省的功率和时间。

数据传输的代价

为了降低时间和功耗的代价,共享虚拟内存(SVM)和缓存一致性技术(I6500 CPU集成了这两个特性)是最理想的选择,它们解决了任务传输的问题,因为我们不需要再进行数据的拷贝和缓存的清除,当然还有其他可用的技术能够进一步降低数据传输的代价。

HAS组织开发了一个工具来支持异构处理模块的集成,一个系统的设计远远不止CPUs和GPUs,当然HAS系统还提供了一种中间性过渡语言称为HSAL,通过常规的编译转换为异构指令集架构(ISAs),这样就大大简化了系统软件的开发,同时也定义了用户模式队列。

用户模式队列能够让我们有计划的安排任务的执行顺序,以及采用触发信号,这样就可以降低任务执行之间的衔接开销。

异构带来的好处

异构系统能够让我们有机会显著的提升系统性能并且降低系统的功耗,使得系统能够继续扩展,不再受之前处理能力的限制。

多线程、异构和一致性的CPU集群如MIPS I6500处理器集成了所有这些功能特性,是异构系统核心的理想选择。因此很多应用场景都将其用在下一代产品中,例如ADAS(高级驾驶辅助系统)、自动驾驶汽车、网络、无人机、工业自动化、安全、视频分析和机器学习等方面。

声明:
本文为原创文章,转载需注明作者、出处及原文链接,否则,本网站将保留追究其法律责任的权利

--电子创新网--
粤ICP备12070055号