Введение

Слот инструкции, выполняющийся без эффектов от предыдущей инструкции.

В компьютерной архитектуре слот задержки — это слот инструкции, выполняющийся без эффектов от предыдущей инструкции. Наиболее распространенной формой является одна произвольная инструкция, расположенная непосредственно после инструкции перехода на архитектурах RISC или DSP; эта инструкция будет выполнена, даже если предыдущий переход будет осуществлен. Это приводит к выполнению инструкции не по порядку, в котором она указана в исходном коде на языке ассемблера. Современные конструкции процессоров обычно не используют слоты задержки, а вместо этого применяют все более сложные методы предсказания переходов для решения этой проблемы. В этих системах процессор немедленно переходит к тому участку кода, который, по его мнению, будет выполнен после перехода, тем самым устраняя необходимость указывать в коде несвязанную инструкцию, которая не всегда очевидна на этапе компиляции. Если предположение окажется неверным и потребуется выполнить другую ветку, это может привести к значительной задержке. Однако это происходит достаточно редко, чтобы выигрыш от избежания слота задержки с лихвой компенсировал небольшое количество ошибочных предсказаний.

Трубопроводы

Центральный процессор обычно выполняет инструкции из машинного кода, используя четырехэтапный процесс: сначала инструкция считывается из памяти, затем декодируется для понимания необходимых действий, эти действия выполняются, и, наконец, любые результаты записываются обратно в память. В ранних конструкциях каждый из этих этапов выполнялся последовательно, поэтому выполнение инструкции занимало несколько циклов машинного тактирования. Например, в Zilog Z80 минимальное количество тактов, необходимых для выполнения инструкции, составляло четыре, но для некоторых (редких) инструкций могло достигать 23 тактов. На любом этапе обработки инструкции задействована только одна часть чипа. Например, на этапе выполнения обычно активна только арифметико-логическая единица (АЛУ), в то время как другие блоки, взаимодействующие с основной памятью или декодирующие инструкцию, простаивают. Один из способов повышения общей производительности компьютера – использование инструкционного конвейера. Это добавляет дополнительную схему для хранения промежуточных состояний инструкции по мере её прохождения через блоки процессора. Хотя это не улучшает время выполнения отдельной инструкции, идея заключается в том, чтобы позволить второй инструкции использовать другие подсистемы процессора, когда предыдущая инструкция перешла на следующий этап. Например, пока одна инструкция использует АЛУ, следующая инструкция из программы может находиться в декодере, а третья – извлекаться из памяти. В такой конвейерной организации общее количество обрабатываемых инструкций в любой момент времени может быть увеличено до количества этапов конвейера. Например, в Z80 четырехэтапный конвейер мог бы увеличить общую пропускную способность в четыре раза. Однако из-за сложности синхронизации инструкций это было бы нелегко реализовать. Гораздо более простая архитектура набора команд (ISA) MOS 6502 позволила реализовать двухэтапный конвейер, что обеспечило ей производительность примерно вдвое выше, чем у Z80 при той же тактовой частоте.