指令流水线-体系结构模拟器和流水线可视化器



我正在开发一个编译器,并编写了一个优化程序,这实际上使我的代码变慢了!在调查它时,我发现代码生成器决定在我的优化关闭时使用Handle(在我们的编译器中是双重引用),在优化打开时使用指向Handle的指针!这导致在第二种情况下,每当访问数组时,都会多出一条去引用指令。

但这一条指令导致代码运行时间惊人地减少了32%。我怀疑这与指令管道有关,因为这种额外的去引用会导致3条相关指令,这可能解释了速度减慢的原因。

我需要展示同样的东西,并试图获得更多关于流水线的信息,如果有人能提出一些关于指令流水线的好材料、有用的架构模拟器和流水线可视化工具,那就太好了。

当你需要取消引用指针时,你必须首先从内存加载指针,然后才能加载指针指向的值。如果你有一个指向某个值的指针,那么你需要连续加载三次。这被称为指针追逐。如果这些指针不在缓存中,则会对性能产生巨大影响。管道并没有多大帮助。关于计算机体系结构的标准书籍是hennessy&帕特森。有几个体系结构模拟器。http://gem5.org非常受欢迎(完全公开,我是一个承诺者),但他们几乎总是有一个陡峭的学习曲线。

最新更新