首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

测量Cortex-R7和Cortex-R8分支预测的影响

测量Cortex-R7和Cortex-R8分支预测的影响

ARM®Cortex®-R7和Cortex-R8处理器是用于调制解调器和存储设计的最先进的处理器。ARM架构的一个重要方面是不同核心之间的软件兼容性。这是软件复用的伟大之处,但识别各种Cortex-R家庭成员之间的差异性却有挑战。例如,考虑一个设计使用Cortex-R4或Cortex-R5升级到Cortex-R7或Cortex-R8。ARMv7-R架构的兼容性是指软件将兼容,但是会有一些重要的差异。分支预测就是这样一个例子。ARM周期级模型Cycle Models提供了监视Cortex-R8分支预测影响的一个好方法。

分支预测介绍

分支预测用于在微处理器中以流水线效率为目标来预测程序流。有许多方法来实现分支预测,通常在更好的预测结果和增加硬件做预测之间需要进行权衡。  
Cortex-R8使用静态和动态分支预测技术。静态分支预测是基于解码指令,可以用于没有被执行过新的代码,但由于决策发生在流水线之后而没有更多时间去考虑分支目标地址的预取代码。
动态分支预测可用于当代码执行之前。Cortex-R8将基于指令执行记录来考虑取指。动态分支预测将预测:
是否在一个给定的地址的一个分支指令
无条件和条件分支
循环、调用函数,或者函数返回
目标地址 和/或 目的状态(ARM/Thumb指令)
条件分支方向(采取或不采取)
动态分支预测使用额外的内存缓冲区来记录历史.。
分支预测通常是一件好事,像缓存的硬件提供了改进的性能,而无需注意软件。系统软件的主要任务是实现硬件的最大效益。

启用分支预测

在为CPU编写软件时要理解的关键问题之一是获得最佳性能需要什么样的编程。一些性能改进的硬件功能自动启用,但也可以被软件禁用。一些功能也可能开始禁用,随后启用,以提高性能。很多时候有些功能可能会先禁用因为需要在特别需要时才启用它们,如使某一块缓存失效。
在ARM CPU提供周期精确模型的早期,最常见的问题是如何使能Cache缓存。架构师感兴趣的是做性能分析,只是想在最大性能运行CPU,看看发生了什么事。他们并不总是有经验去做底层次的编程来配置CPU的最佳性能。分支预测也是类似的,这就是为什么所有的ARM周期精确模型提供示例软件,以帮助硬件配置。
Cortex-R4 和 Cortex-R5分支预测功能在复位时是自动启用的。不需要软件配置做就能获得最大的性能。然而,Cortex-R7和Cortex-R8复位时不自动使能分支预测。这意味着软件必须使能分支预测,以获得最大的硬件性能。
一个获得硬件编程细节的好地方是DS-5实例目录。文件Bare-metal_examples_ARMv7.zip包含不同的CPU的启动代码示例。解压文件可以查看到每个CPU提供了如何确保最大性能实现的代码细节。文件startup_cortex-R8/ startup.s说明如何设置Z比特来使能分支预测。
Z比特位于系统控制寄存器SCTLR的第11位。

使能分支预测的示例代码如下。


这意味着,当之前的产品使用Cortex-R4或Cortex-R5迁移到Cortex-R7或Cortex-R8时,确保分支预测启用将非常重要。虽然这听起来很容易,但实际并非如此,原因有二:首先,这些软件在不同的CPU上即使不经任何改动仍能工作。其次,没有一个特别的地方可以看到CPU A与CPU B之间“有什么不同”. 这些对于CPU相比较的信息提供只是相对的,更多的ARM处理器是基于增量式的改进,想找出其中区别还是需要花一番功夫。

基准测试结果

评估分支预测的影响可以使用周期级模型。使用周期级模型来测量性能的一般方法是运行到一个断点(感兴趣代码开始的地方),开始分析和统计。然后继续执行到另一个断点(感兴趣代码的结尾),关闭分析和研究结果。
如果需要收集使用不同的编译器优化选项的结果,上面所有操作都可以编写脚本来自动化实现。
启动仿真开始软件运行,分别使能与不使能分支预测。运行Cortex-R8 CPAK并使用软件调试器在感兴趣的起点设置断点。周期级模式允许连接任何支持 CADI的软件调试器包括modeldebugger和DS-5。

在代码感兴趣部分的结尾,进行分析。测量分支预测影响最简单的方法是查看运行相同的软件需要多少个仿真周期.。如果分支预测是有帮助的,周期数将更少。
这里使用一个Cortex-R8四核的CPAK(Cycle Model Performance Analysis Kits)用于CPU的分支预测实验。它可以运行在Windows或Linux上,并使用SoC Designer工具。关于其他CPAKs更多的细节请访问ARM System Exchange网站。

这里使用Dhrystone,CoreMark,Whetstone等基准来评估是否使能分支预测对系统的性能影响。下表显示了运行同一代码时分别在使能与不使能分支预测时所需的周期数。



SoC Designer提供简便、非侵入性的性能分析功能用以检查PMU事件、总线活动和软件的执行。
下面是分支预测PMU事件的两个视图。第一个是分支预测禁用情况下的CoreMark运行情况,第二个是相同的CoreMark在分支预测启用时的情况。Zbit没有设置为1时,错误预测数是非常大的,而Z-bit设置为1时错误预测数非常低。“Total”列中的数字表示整个仿真过程的事件总数。可以点击图表以获得更好的视图。


SoC Designer分析功能也可以捕获许多其他事件。

结论

ARM周期级模型,可用于研究各种不同的系统配置。常见的用途是比较不同的CPU,高速缓存的大小或分支预测,分析内存子系统的设计或更多。对Cortex-R8分支预测的三个基准的影响论证了确保使用所有使得性能最好的硬件功能的重要性。
返回列表