Intel PIN:我如何看待投机指令?

问题描述 投票:0回答:2

我正在写PIN工具,我想在其中查看推测地最终被压缩的指令。

即如果预测了分支方向,则推测性地执行了某些指令,分支方向已解决,并且预测显示不正确,然后将压缩执行的指令,并还原寄存器文件。

我假设RTN_AddInstrumentFunction仅向已淘汰的指令(即非推测性或推测性且显示为正确的指令)添加了一种工具功能。我是否可以使用PIN来访问经过推测性执行但随后被压缩的指令?

c++ assembly profiling branch-prediction intel-pin
2个回答
3
投票

[仅使用硬件性能计数器,您无法使用PIN这样的二进制检测工具来做到这一点。

PIN只能沿着正确的执行路径查看指令;它通过在内存中添加/修改指令来运行额外的代码来工作。但是,这个新代码仍然只是CPU必须执行的x86机器代码,给人一种以程序顺序一次运行每个指令的幻想。

错误推测的指令没有架构效果,因此只有对微架构状态具有特殊访问权限的内容(例如性能计数器)才能告诉您有关它们的任何信息。


存在错误预测的性能计数器,例如perf stat -e branch-misses对错误预测的分支数进行计数。

前端在错误推测的阴影下发出的不良信息的数量可以从(在Skylake和其他Intel上)得出。uops_issued.any-uops_retired.retire_slots。两者都计算融合域的微指令,并且彼此匹配〜完全没有任何错误推测(分支,内存顺序错误推测pipenuen nukes或其他任何东西)。


1
投票

您无法使用PIN和Peter has already covered详细信息完成此操作。

© www.soinside.com 2019 - 2024. All rights reserved.