什么是采用了Intel最新科记录的开销?(What is the overhead of using

2019-08-16 17:15发布

最后科记录是指存储与最近执行的分支源和目的地址寄存器对(MSR寄存器)的集合。 http://css.csail.mit.edu/6.858/2012/readings/ia32/ia32-3b.pdf文件是如果你有兴趣了解更多信息。

  • 一)有人可以给的LBR多少减缓普通程序的程序执行一个想法 - 无论是CPU和IO密集型?
  • B)的分支预测被关断时LBR跟踪是ON?

Answer 1:

本文英特尔执行代码遗迹资源 (由Arium工人,克雷格·彼得森和杰夫·阿坎波拉,2012年4月29日)列出了分支跟踪的三个变种:

  • 在DebugCtlMSR 最后分支记录(LBR)标志和相应LastBranchToIP和LastBranchFromIP的MSR以及LastExceptionToIP和LastExceptionFromIP的MSR。

  • 使用任一超高速缓存作为-RAM或DRAM系统分支跟踪存储(BTS)。

  • 架构事件跟踪(AET)捕获关闭XDP端口和外部存储在连接的所有靶探针。

由于在第2页说,LBR保存的MSR信息,“不妨碍任何实时性能”,但只有很短的代码是非常有用的(“有效跟踪显示很浅,通常可能只显示数以百计的说明”。) 。 不仅节省了约4-16分支信息。

BTS可以捕捉到许多对分公司的“从” S和“To”,且在高速缓存中存储它们(缓存为-RAM,CAR),或在系统DRAM。 在CAR的情况下,跟踪深度/长度是由高速缓存大小(和一些常数)的限制; 与DRAM走线长度几乎是无限的。 BTS的纸张估计开销从由于附加存储器存储20到100百分比。 在Linux上BTS很容易与建议使用PERF分支记录 (尚未香草)或btrax项目 。 perf branch演示给出了关于BTS组织一些提示:有BTS缓冲区,其中包含“从”,“到”字段和“预测标记”。 因此,在使用时,BTS分支预测未关闭。 此外,当BTS缓冲填充到最大尺寸,产生一个中断。 BTS处理内核(perf_events子系统或btrax内核模块)模块应当以这样的中断的情况下从BTS缓冲器数据复制到其它位置。

因此,在BTS模式有架空两个来源:高速缓存/存储器存储和中断从BTS缓冲区溢出。

AET使用外部代理,以节省调试和跟踪数据。 此剂通过扩展调试端口(XDP)和接口连接配靶探针(ITP)。 AET的开销“可能会对系统的性能,它可以是幅度较大的几个订单显著效果”根据本文,因为AET可以生成/捕获更多类型的事件。 但所收集的数据存储是外部的调试平台。

论文的“摘要”说:

LBR没有开销,但很浅(4-16分支机构,取决于CPU)。 跟踪数据可立即复位的。

BTS要深得多,但对CPU性能产生影响,需要板载RAM。 跟踪数据一旦CAR被初始化可用。

AET需要特殊ITP硬件,而不是适用于所有CPU架构。 它具有存储跟踪数据断板的优点。



文章来源: What is the overhead of using Intel Last Branch Record?