在 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++ 和汇编代码进行微架构分析的主要内容,如果未能解决你的问题,请参考以下文章

优化系列汇编优化技术:MIPS架构纯汇编优化及demo

优化系列MIPS架构汇编优化总结

优化系列MIPS架构汇编优化资料

mipsel汇编指令学习

MIPS汇编及模拟器下载

优化系列汇编优化技术:MIPS架构MSA Intrinsic优化及demo