原文:Want to get more out of your hardware? Think system.
作者gmarshall
您可能已经看到了我们发布一系列新 IP 产品的消息,包括 ARM® Cortex®-A12 处理器、Mali™-T622 GPU 和 Mali-V500 视频解决方案。这些 IP 块组合起来就是未来的主流移动平台,能够提供大多数消费者在未来一段时间内期待的性能和能效。但请注意,我说的是能够提供。好的软件工程师会认识到,这要依赖于软件架构及其优化实施。ARM Development Studio 5 (DS-5™) 工具链可以在这方面提供很大帮助。
DS-5中的 ARM Streamline™ 性能分析器具有软件分析和内核跟踪功能,并提供系统范围的硬件和软件事件可见性。在当前的多核设计中,随着软件负载变化,性能瓶颈会在多个系统组件之间动态转移(例如,通过缓存和互联,从CPU 转移至GPU),该分析器让您能够快速识别这些瓶颈。与以CPU 为中心的分析(例如基于指令跟踪的分析)相比,这种优化方法能够实现更高的性能和能效。它可对软件进行优化,以最大程度提升其他系统组件的利用率,否则它们会妨碍整体性能的提高。
过去,图形处理单元 (GPU) 仅用于处理您只有在游戏或其他专业图形平台上才会遇到的工作负载。这种情况现在已经发生了很大变化。除了常见的移动和家庭娱乐设备之外,GPU当前还广泛应用于工业、医疗和汽车领域。即便您目前还不需要GPU,但在随后几年内,GPU将会继续应用于更加贴近您需求的产品设计中。
下面是在一个 SoC 上捕捉的 Streamline 屏幕截图,该 SoC 包含双核 Cortex-A9 处理器和四核 Mali-400 GPU,因为 Cortex-A12 和 Mali-T622 在芯片上尚不可用。顶部的三个图表从上至下依次显示CPU(总计)、GPU顶点单元和GPU 片段处理单元(总计)的利用率水平。图表和过程热图之间的漂亮胶片是帧缓冲的采样捕捉,从视觉上帮助用户关联屏幕内容和性能指标。在这次示例捕捉中,我在Android 系统上运行了一个演示游戏,该游戏允许逐渐提高游戏视觉效果的复杂性。从捕捉开始,我一直在调节视觉效果,直至达到最复杂配置(如果您注意到顶部的标尺,您会发现整个过程大约有23 秒),随后游戏切换回到线框图。
CPU 和 GPU 结合分析
通过此分析,我们可以获取大量有用信息,但我现在只重点讨论我们的目标:性能瓶颈。首先,请注意胶片两侧的小蓝点。它们代表了游戏的帧速率。正如我们预测的那样,随着我们增加纹理、阴影等要素的复杂性,每秒显示的帧数有所减少。但再看一次屏幕截图,您可以发现片段处理单元达到饱和的精确位置(在10 秒位置)以及顶点处理单元达到最大负载的精确位置(在28 秒位置)。CPU始终并非该系统中的瓶颈所在。这种信息应该帮助您优化系统,从而实现目标(例如最大帧速率、场景复杂性与帧速度之间的最佳平衡)。在今后的博客中,我们将更多地讨论GPU 计算…
软件开发人员很少关注互联链接系统组件的带宽。在几年前的手机中,由于只使用简单的单核系统,因此不存在这个问题。但由于现在ARM 处理器用于包含8 个、16个甚至更多核心的配置中,高效使用缓存一致性互联/网络变得至关重要。我借用了arm.com 的以下示意图,显示系统中CCI-400 IP 的概况(针对不熟悉相关知识的读者)。
显示 CoreLink CCI-400 互联的系统示意图
ARM CoreLink™ CCI-400 缓存一致性互联和 CCN-504 缓存一致性网络带有方便的性能监控计数器,可用于提供有关通过它们的流量的详细信息,帮助开发人员发现交换结构中的瓶颈(例如,从CPU、GPU和显示控制器对同一存储器设备进行同步访问时出现的瓶颈)。DS-5版本5.14 Streamline 可以充分利用这些数据(最初仅针对CCI-400),提供对系统性能的更高可见性。请参见以下示例,其中数据从ARM Versatile™ Express开发板捕捉,该开发板运行双核 Cortex-A15(集群 0,红色)和三核 Cortex-A7(集群 1, 黄色)big.LITTLE™ 处理系统。
显示big.LITTLE 和 CCI-400 的Streamline 屏幕截图
本文到此结束,在下一篇博客中,我将介绍优化工作流的另一个指标:能效。但是,如果您迫不及待要了解相关知识,可以查看Streamline 的有关 ARM Energy Probe 和 NI-DAQ 接口的网页。再见!
相关博客: