Как смоделировать 5 этап конвейера в C ++?

Я пытаюсь смоделировать 5 этап конвейера. Я сохранил все инструкции в структуре.
(в основном делается со стадии ликскального анализа)

например:

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 ++?

3

Решение

Похоже, вы просто хотите добавить элемент в начале массива на каждом временном шаге, таким образом перемещая уже существующие элементы массива на один вправо. Вы можете избежать 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] и я [1] соответственно)
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]