在 MIPS 上对 C++ 和汇编代码进行微架构分析
Posted
技术标签:
【中文标题】在 MIPS 上对 C++ 和汇编代码进行微架构分析【英文标题】:Microarchitectural profiling of C++ and assembly code on MIPS 【发布时间】:2012-11-22 08:04:28 【问题描述】:作为课程项目的一部分,我需要分析一段 C++ 代码的性能,并找出计算机体系结构(MIPS 或 x86)的哪些部分在运行代码时最常被使用,并且可能是性能的瓶颈。我正在查看各种 Profiler 来分析性能,发现 SimpleScalar 这是一个很棒的工具,但遗憾的是只适用于 C 代码。
由于我更熟悉MIPS architecture,如果有像 SimpleScalar 这样的工具来模拟和分析 MIPS 的 C++ 代码,那就太好了。我正在研究性能关键部分,例如分支、缓存、指令集、寻址模式等。如果没有,提及任何可以对 x86 架构进行类似分析的工具也很好。
(澄清一下,我不是在寻找任何旧的分析器,而是寻找一个了解 CPU 微架构并知道 CPU 的哪些部分被利用或未充分利用的分析器。)
【问题讨论】:
【参考方案1】:CACTI 有详细的低级缓存模拟。
SESC 是支持 MIPS 的循环精确 computer architecture simulator。 SESC 包括 CACTI。
【讨论】:
【参考方案2】:我怀疑你想要的东西是可能的。 C++ 是语言,但仍需要编译为目标架构。优化(或缺少优化)将决定您的许多性能标准,例如缓存使用等。所以我想您需要寻找机器级分析器(希望它们支持编译器的调试格式,所以您可以查看源代码上下文)。
【讨论】:
【参考方案3】:我的理解是,SimpleScalar 可以模拟和分析 MIPS 机器代码,无论它是用什么原始语言编译的。 (SimpleScalar 附带的源代码级调试器“DLite!”可能只支持几种语言,但听起来您不需要“调试”您的代码。)
【讨论】:
如果我可以将 cpp 代码编译成 MIPS 代码,我可以在上面运行 SimpleScalar 吗? 是的,你可以使用 gcc 将 cpp 代码编译成 MIPS 机器码。如果我正确阅读 SimpleScalar 文档,它看起来像是模拟和分析此类机器代码,就好像它来自汇编语言一样。以上是关于在 MIPS 上对 C++ 和汇编代码进行微架构分析的主要内容,如果未能解决你的问题,请参考以下文章