Слоты задержки полезны только для короткого скалярного конвейера в порядке, а не для высокопроизводительного суперскалярного или, особенно, с неупорядоченным выполнением.
Они значительно усложняют обработку исключений (для HW и программного обеспечения).), потому что вам нужно записать текущий счетчик программ и отдельно адрес следующего ПК на случай, если инструкция в интервале задержки принимает исключение.
Слоты задержки ветвления архитектурно представляют детали реализации в- заказывайте классические конвейеры RISC, чтобы повысить производительность такого типа UARCH, но все остальное должно обходиться без этого.Он позволяет избежать появления пузырей выборки кода из взятых ветвей (даже без предсказания ветвления), если ваш уарх - классический RISC .
Даже современному порядковому уарху нужно предсказание ветвления для хорошей производительности, с задержкой памяти (измеряемой в тактах ЦП), которая значительно выше, чем во времена раннего MIPS.
Слоты задержки ветвления не всегда могут быть оптимально заполнены компиляторами, поэтомудаже если мы сможем реализовать их в высокопроизводительном ЦП без значительных накладных расходов, они действительно будут стоить пропускной способности с точки зрения общей работы, выполняемой для каждой инструкции.Программы обычно должны выполнять больше инструкций, а не меньше, со слотами задержки в ISA.
(Хотя иногда делая что-то безоговорочное после , сравнение и ветвление может разрешить повторное использование регистравместо того, чтобы нуждаться в новом регистре, на ISA без флагов, таких как MIPS, где инструкции ветвления тестируют целочисленные регистры напрямую.)