Почему слот задержки перехода устарел или устарел? - PullRequest
0 голосов
/ 16 февраля 2019

Когда я читал руководство по ISA пользовательского уровня RISC-V, я заметил, что в нем сказано, что «OpenRISC имеет коды условий и интервалы задержки ветвления, что усложняет реализацию с более высокой производительностью».поэтому RISC-V не имеет слота задержки ветвления RISC-V Пользовательский уровень ISA, ручная ссылка .Более того, в Википедии сказано, что в большинстве более новых RISC-дизайнов отсутствует интервал задержки ветвления.Почему в большей части новой архитектуры RISC постепенно пропускается интервал задержки перехода?

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Ссылаясь на Хенесси и Паттерсона (Компьютерная архитектура и дизайн, 5-е изд.)

Ошибка: вы можете проектировать безупречную архитектуру.
Весь дизайн архитектуры предполагает компромиссы, сделанные в контекстенабор аппаратных и программных технологий.Со временем эти технологии могут измениться, и решения, которые могли быть правильными во время их принятия, выглядели как ошибки.(...) Примером в лагере RISC является отложенный филиал.Управлять опасностями конвейера с помощью пятиступенчатых конвейеров было несложно, но это было проблемой для процессоров с более длинными конвейерами, которые выдают несколько инструкций за такт.

Действительно, с точки зрения программного обеспечения, задержка ветвления имеет только недостатки, поскольку делает программы более трудными для чтения и менее эффективными, поскольку слот часто заполняется nops.

С точки зренияаппаратное обеспечение, это было технологическое решение, имевшее некоторый смысл в восьмидесятых годах, когда конвейер состоял из 5 или 6 этапов, и не было никакого способа избежать штрафа за одноцилиндровое ветвление.

Но в настоящее время конвейеры намного сложнее.Штраф ветвления составляет 15-25 циклов на последних архитектурах Pentium.Таким образом, одна ветвь с задержкой инструкций бесполезна, и было бы бессмысленно и явно невозможно попытаться скрыть этот интервал задержки с ветвью с задержкой 15 команд (что нарушило бы совместимость наборов команд).

И мы разработали новые технологии.Прогнозирование отрасли - очень зрелая технология.В существующих предикторах ветвления неправильное прогнозирование намного меньше числа ветвей с бесполезным (nop) интервалом задержки и, соответственно, более эффективно, даже на компьютере с 6 циклами (например, nios-f).

Так что отложенные ветви менее эффективны в аппаратном и программном обеспечении.Нет причин их хранить.

0 голосов
/ 16 февраля 2019

Слоты задержки полезны только для короткого скалярного конвейера в порядке, а не для высокопроизводительного суперскалярного или, особенно, с неупорядоченным выполнением.

Они значительно усложняют обработку исключений (для HW и программного обеспечения).), потому что вам нужно записать текущий счетчик программ и отдельно адрес следующего ПК на случай, если инструкция в интервале задержки принимает исключение.


Слоты задержки ветвления архитектурно представляют детали реализации в- заказывайте классические конвейеры RISC, чтобы повысить производительность такого типа UARCH, но все остальное должно обходиться без этого.Он позволяет избежать появления пузырей выборки кода из взятых ветвей (даже без предсказания ветвления), если ваш уарх - классический RISC .

Даже современному порядковому уарху нужно предсказание ветвления для хорошей производительности, с задержкой памяти (измеряемой в тактах ЦП), которая значительно выше, чем во времена раннего MIPS.


Слоты задержки ветвления не всегда могут быть оптимально заполнены компиляторами, поэтомудаже если мы сможем реализовать их в высокопроизводительном ЦП без значительных накладных расходов, они действительно будут стоить пропускной способности с точки зрения общей работы, выполняемой для каждой инструкции.Программы обычно должны выполнять больше инструкций, а не меньше, со слотами задержки в ISA.

(Хотя иногда делая что-то безоговорочное после , сравнение и ветвление может разрешить повторное использование регистравместо того, чтобы нуждаться в новом регистре, на ISA без флагов, таких как MIPS, где инструкции ветвления тестируют целочисленные регистры напрямую.)

...