如何在c ++中模拟5级管线?

时间:2013-05-05 03:43:39

标签: c++ c pipeline instruction-set

我正在尝试模拟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 ++表示这个循环?

1 个答案:

答案 0 :(得分:3)

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

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