建筑模拟器中的流水线

时间:2016-02-06 05:17:15

标签: pipeline computer-architecture

所以我正在研究建筑模拟器(主要是简单标量)来弄清楚微处理器内部真正发生了什么。我注意到一件令人着迷的事情是,整个管道被倒退了!也就是说,在纯粹顺序的while循环中,回写阶段出现在发布阶段之前,它发生在解码阶段之前,依此类推。

这是什么意思?假设假设fetch()阶段的输出存储在由decode()阶段的输入访问的共享缓冲区(' latch')中。由于它是一个纯粹的顺序while循环,我没有看到这个锁存器/缓冲区被覆盖的问题。但是,像this这样的问题的答案:声称以某种方式反向模拟管道避免了这个问题&#39 ;?我们非常感谢正确方向的一些见解/指导!

1 个答案:

答案 0 :(得分:2)

我不太了解Simplescalar,但我在其他建筑模拟器中看到过这种情况。

管道的外部循环应该代表处理器的一个循环。想象一下,这是第一个循环 - 为简单起见 - 前端的宽度为1。如果每个阶段按fetchcommmit的顺序执行,会发生什么?

cycles 1
- fetch: instruction 1 (place it in fetch/decode latch)
- decode: instruction 1 (place it in decode/rename latch)
- rename: instruction 1 (place it in rename/dispach latch)
- dispatch: instruction 1 (place it in issue queue)
- issue: instruction 1
etc...

你没有在这里模拟任何有用的东西,因为这不是一个管道。当循环按commitfetch的顺序执行每个阶段时会发生什么?

cycle 1
- issue: noop
- dispatch: noop
- rename: noop
- decode: noop
- fetch: instruction 1 (place it in fetch/decode latch)

cycle 2
- issue: noop
- dispatch: noop
- rename: noop
- decode: instruction 1 (place it in decode/rename latch)
- fetch: instruction 2 (place it in fetch/decode latch)

这不是一个非常复杂的想法,但它有助于简化模拟器。