Как найти инструкцию в конвейере при выполнении условного перехода - PullRequest
0 голосов
/ 14 марта 2019

Я столкнулся с вопросом при подготовке к экзамену. Вопрос

Рассмотрим следующий фрагмент кода y86 при ответе на следующие вопросы о реализации условного перехода в 5-этапном конвейере, представленном в классе, с этапами F, D, E, M, WB.

1: irmovq $8, %rsi
2: irmovq $1, %r9
3: jmp label1
4: label2: addq %rsi, %r10
5: label1: subq %r9, %rsi
6: jne label2
7: andq %rbx, %rdx
8: irmovq $10, %r10
9: halt

а. Когда инструкция jne завершила этап F, доступен ли адрес следующей инструкции в процессоре? Обведите один

                     YES                 NO

б. Если процессор предполагает, что условный переход равен TAKEN, в каком конвейерном внутреннем регистре (переменной) будет адрес следующей инструкции, когда инструкция jne завершает этап F? Круг первый icode ifun rA rB ValC ValP ValE ValE

с. Если процессор предполагает, что условный переход НЕ ПРИНЯТ, в каком конвейере внутреннего регистра (переменной) будет адрес следующей инструкции, когда инструкция jne завершает этап F? Обведите один

            icode  ifun  rA  rB  valC  valP  valM  valE

д. После какого этапа трубопровод узнает, следует ли выполнить условный переход или нет? Обведите правильный этап

                      F D E M WB

У меня есть ответы без объяснений Вот ответы:

1) ДА

2) valC

3) valP

4) E

Может кто-то ПОЖАЛУЙСТА, ПОЖАЛУЙСТА, объясните процесс. У меня есть экзамен, и мне действительно нужна помощь .

1 Ответ

1 голос
/ 14 марта 2019

После какой стадии конвейер узнает, следует ли выполнить условный переход или нет?Обведите нужную стадию

Некоторые конвейерные процессоры в определенном порядке обрабатывают ответвления, взятые / не взятые на этапе декодирования, чтобы сделать его только одним циклом пузыря в конвейере.(Например, MIPS делает это, поэтому для классического 5-ступенчатого конвейера MIPS достаточно одного слота задержки ветвления, чтобы полностью скрыть зависимость / опасность управления. https://en.wikipedia.org/wiki/Classic_RISC_pipeline#Control_hazards).

Конструкция, которая останавливается или размышляет доДостигнута ветвь Выполнить тоже можно, но производительность ниже.

Так что этот вопрос кажется не отвечающим, если у вас нет какой-либо другой подсказки о том, как устроен ваш классический пятиступенчатый конвейер y86.

Решениенаправление ветвления в Decode требует, чтобы флаги были готовы быстрее, поэтому cmp или sub, за которыми следует jcc, всегда приводят к остановке зависимости данных. Проверка флагов даже проще, чем проверка регистра после декодирования , регистр которого необходимопроверить и прочитать его из файла реестра. (MIPS не имеет флагов; в нем есть такие инструкции, как beq $t1, $t2, target для перехода на равенство (что может быть выполнено с меньшей задержкой, чем вычитание), или bltz $t1, target для проверкизнаковый бит одного регистра.

...