【问题标题】:Instruction Pipelining - Architecture Simulator and Pipeline Visualizer指令流水线 - 架构模拟器和流水线可视化工具
【发布时间】:2012-02-24 07:42:52
【问题描述】:

我正在开发一个编译器,并且写了一个优化,实际上让我的代码变慢了!在调查它时,我发现代码生成器决定在我的优化关闭时使用句柄(在我们的编译器的情况下是双重引用),并在我的优化开启时使用指向句柄的指针!这导致在第二种情况下,每当访问数组时,就会产生一条更多的取消引用指令。

但这条指令导致代码运行时间惊人地降低了 32%。我怀疑这与指令流水线有关,因为这种额外的取消引用会导致 3 个依赖指令,这可能会解释速度下降。

我需要演示同样的内容,并且正在尝试获取有关流水线的更多信息,如果有人能推荐一些关于指令流水线、有用的架构模拟器和流水线可视化器的好材料,那就太好了。

【问题讨论】:

    标签: compiler-optimization computer-architecture


    【解决方案1】:

    当需要取消引用指针时,必须先从内存中加载指针,然后才能加载指针所指向的值。如果你有一个指向一个值的指针,那么你需要做三个连续的加载。这称为指针追逐。如果这些指针不在缓存中,则性能影响可能很大。流水线没有太大帮助。计算机体系结构的标准书籍是轩尼诗和帕特森。那里有几个建筑模拟器。 http://gem5.org 非常受欢迎(完全公开,我是一名提交者),但他们几乎总是有一个陡峭的学习曲线。

    【讨论】:

      猜你喜欢
      • 2013-09-08
      • 2017-04-15
      • 2015-09-09
      • 1970-01-01
      • 2013-11-22
      • 1970-01-01
      • 1970-01-01
      • 2022-11-18
      • 1970-01-01
      相关资源
      最近更新 更多