Я полагаю, что формат инструкция op <dest>, <src1>, <src2>
Мы можем проследить зависимость явно
1. ADD X, Y, Y Depends on: Y Produces: X
2. ADD Z, Y, X Depends on: Y, X Produces: Z
3. SUB V, X, W Depends on: X, W Produces: V
4. ADD Z, Z, V Depends on: Z, V Produces: Z
Зная, что нет операнда пересылки и инструкции я могу прочитать результат инструкция j только после j завершает WR этап.
ADD X, Y, Y
зависит от Y, но никакая инструкция не производит его, она уже готова. Таким образом, он может начать выполнение сразу после извлечения и декодирования.
Так начинается цикл 1 и заканчивается на цикле 5
ADD Z, Y, X
извлекается как только блок выборки является свободным, это произойдет в цикле 2. Затем декодировать как только блок декодирования свободна после этого, в цикле 3.
это не может быть выполнена сразу после того, на 4 цикла, поскольку она зависит от у и Х, причем последний получают путем инструкции 1 и, таким образом доступна только на цикле 6.
Примечание здесь, что этап, который останавливается, не IF, но ID. На этом этапе не удается перенести данные на следующий. Представьте, что между каждой стадией есть защелка.
IF может, начинает выборку новую инструкцию на следующий цикл, но он не может завершить (т.е. должны быть застопорился тоже) до ID разрешается писать свой выход (в противном случае вход ID изменится и так бы его вывод).
SUB V, X, W
может быть выбран в цикле 3, так как выборка инструкции 2 заканчивается в цикле 3, и поэтому выборки блок свободен.
Однако блок выборки не может записать результат в защелку между собой и блоком декодирования, поскольку блок декодирования остановлен и должен сохранять текущее входное значение (или изменение декодирования).
Таким образом, выборка также должна быть остановлена, пока блок декодирования не запишет ее выходную защелку в цикле 6.
Таким образом, декодирование может начинаться с цикла 6.
Инструкция зависит от X и W, первая имеется в цикле 6, а вторая с цикла 1; таким образом, EX банки начинается сразу после ID, т.е. в цикле 7.
ADD Z, Z, V
может начать быть извлекаются в цикле 6, когда выборка блок написал свой результат на защелку к декодированию Блок.
Выполнение может начаться только в цикле 10, потому что эта команда зависит от V, который получают с помощью инструкции 3 при цикле 10.
Зависимость от Z не является проблемой, так как эти данные доступны в цикле 9.
Нам нужна дополнительная информация: 1) Имеется ли пересылка? т.е. результаты, записанные на этапе * WR *, немедленно считываются на этапе * EX *? 2) Может ли архитектура извлекаться при доступе к памяти? Гарвардские архитектуры или архитектуры с двумя портами памяти могут. Наконец, есть ли причина, по которой этап * ID * третьей команды не может начаться в цикле 5? Кроме того, такая инструкция зависит от * X * и * W *, которые готовы к циклу 7. Расскажите нам свои рассуждения, чтобы мы могли сказать, правильно это или нет, иначе мы сводимся к угадыванию –
Привет, госпожа Блум, вопрос только эти данные. _Пожалуйста, мы используем конвейер с 5-ступенчатой инструкцией: IF, ID, EX, MEM и WR. Предположим, что конвейер не использует переадресацию операндов и что единственными источниками конвейерных киосков являются опасности данных. Нарисуйте диаграмму конвейера с несколькими циклами, чтобы показать выполнение пяти инструкций, перечисленных в (a). Сколько времени требуется для завершения последовательности инструкций? _ – Trang