【问题标题】:how to simulate 5 stage of pipe line in c++?如何在 C++ 中模拟 5 级管道?
【发布时间】:2013-05-05 03:43:38
【问题描述】:

我正在尝试模拟 5 阶段的管道。我已将所有指令保存到一个结构中。 (基本完成了 lixcal 分析阶段)

例如:

ADD R1 R2 R3 // R1 = R2+ R3 ... struct pipe{ int pc, string instruction , int r1, int r2....}

现在如果p[i] 是流水线阶段之一并且(p[1] 可能是pc=pc+1; I[i] 是指令,(I[1] 可能是 ADD R1 R2 R3

我想做的是

at t=1 : p[1] = I[1]

at t=2 :p[2] = I[1], p[1] = I[2]

at t=3 :p[3] = I[1], p[2] = I[2], p[1] = I[3]

at t=4 :p[4] = I[1], p[3] = I[2], p[2] = I[3], p[1] = I[4]

... 就这样 到目前为止,我正在使用 c++。怎么会有人用 c++ 来表示这个循环?

【问题讨论】:

  • 换句话说,您正在尝试创建一个类似 ARM 的小虚拟机?
  • @icktoofay 是的
  • 我不明白你的问题。您在问题中描述了算法,那么您需要什么?
  • 在c++中如何表示上述循环

标签: c++ c pipeline instruction-set


【解决方案1】:

看起来您只想在每个时间步的数组前面添加一个元素,从而将已经存在的数组元素向右移动一个。您可以避免像这样进行O(n**2) 操作

int& p_at_time(int index, int time_moment) {
    return &p[time_moment-index+1];
}
  • 并且在 t=1:p_at_time(1,1) = I[1];
  • 在 t=2: p_at_time(1,2) = I[2], (p_at_time(2,2) 已经是== I[1])
  • 在 t=3:p_at_time(1,3) = I[3], (p_at_time(2,3) 和 p_at_time(3,3) 具有值 I[2] 和 I[1])

【讨论】:

    猜你喜欢
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    • 2019-08-17
    • 2017-01-10
    • 2016-03-26
    相关资源
    最近更新 更多