Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
Слот инструкции, выполняющийся без эффектов от предыдущей инструкции.
Instruction slot being executed without the effects of a preceding instruction
В компьютерной архитектуре слот задержки — это слот инструкции, выполняющийся без эффектов от предыдущей инструкции. Наиболее распространенной формой является одна произвольная инструкция, расположенная непосредственно после инструкции перехода на архитектурах RISC или DSP; эта инструкция будет выполнена, даже если предыдущий переход будет осуществлен. Это приводит к выполнению инструкции не по порядку, в котором она указана в исходном коде на языке ассемблера. Современные конструкции процессоров обычно не используют слоты задержки, а вместо этого применяют все более сложные методы предсказания переходов для решения этой проблемы. В этих системах процессор немедленно переходит к тому участку кода, который, по его мнению, будет выполнен после перехода, тем самым устраняя необходимость указывать в коде несвязанную инструкцию, которая не всегда очевидна на этапе компиляции. Если предположение окажется неверным и потребуется выполнить другую ветку, это может привести к значительной задержке. Однако это происходит достаточно редко, чтобы выигрыш от избежания слота задержки с лихвой компенсировал небольшое количество ошибочных предсказаний.
In computer architecture, a delay slot is an instruction slot being executed without the effects of a preceding instruction. The most common form is a single arbitrary instruction located immediately after a branch instruction on a RISC or DSP architecture; this instruction will execute even if the preceding branch is taken. This makes the instruction execute out of order compared to its location in the original assembler language code. Modern processor designs generally do not use delay slots, and instead perform ever more complex forms of branch prediction to solve this problem. In these systems, the CPU immediately moves on to what it believes will be the correct side of the branch and thereby eliminates the need for the code to specify some unrelated instruction, which may not always be obvious at compile time. If the assumption is wrong, and the other side of the branch has to be called, this can introduce a lengthy delay. This occurs rarely enough that the speed up of avoiding the delay slot is easily made up by the smaller number of wrong decisions.
Трубопроводы
Центральный процессор обычно выполняет инструкции из машинного кода, используя четырехэтапный процесс: сначала инструкция считывается из памяти, затем декодируется для понимания необходимых действий, эти действия выполняются, и, наконец, любые результаты записываются обратно в память. В ранних конструкциях каждый из этих этапов выполнялся последовательно, поэтому выполнение инструкции занимало несколько циклов машинного тактирования. Например, в Zilog Z80 минимальное количество тактов, необходимых для выполнения инструкции, составляло четыре, но для некоторых (редких) инструкций могло достигать 23 тактов. На любом этапе обработки инструкции задействована только одна часть чипа. Например, на этапе выполнения обычно активна только арифметико-логическая единица (АЛУ), в то время как другие блоки, взаимодействующие с основной памятью или декодирующие инструкцию, простаивают. Один из способов повышения общей производительности компьютера – использование инструкционного конвейера. Это добавляет дополнительную схему для хранения промежуточных состояний инструкции по мере её прохождения через блоки процессора. Хотя это не улучшает время выполнения отдельной инструкции, идея заключается в том, чтобы позволить второй инструкции использовать другие подсистемы процессора, когда предыдущая инструкция перешла на следующий этап. Например, пока одна инструкция использует АЛУ, следующая инструкция из программы может находиться в декодере, а третья – извлекаться из памяти. В такой конвейерной организации общее количество обрабатываемых инструкций в любой момент времени может быть увеличено до количества этапов конвейера. Например, в Z80 четырехэтапный конвейер мог бы увеличить общую пропускную способность в четыре раза. Однако из-за сложности синхронизации инструкций это было бы нелегко реализовать. Гораздо более простая архитектура набора команд (ISA) MOS 6502 позволила реализовать двухэтапный конвейер, что обеспечило ей производительность примерно вдвое выше, чем у Z80 при той же тактовой частоте.
A central processing unit generally performs instructions from the machine code using a four step process; the instruction is first read from memory, then decoded to understand what needs to be performed, those actions are then executed, and finally, any results are written back to memory. In early designs, each of these stages was performed in series, so that instructions took some multiple of the machine's clock cycle to complete. For instance, in the Zilog Z80, the minimum number of clocks needed to complete an instruction was four, but could be as many as 23 clocks for some (rare) instructions. At any given stage of the instruction's processing, only one part of the chip is involved. For instance, during the execution stage, typically only the arithmetic logic unit (ALU) is active, while other units, like those that interact with main memory or decode the instruction, are idle. One way to improve the overall performance of a computer is through the use of an instruction pipeline. This adds some additional circuitry to hold the intermediate states of the instruction as it flows through the units. While this does not improve the cycle timing of any single instruction, the idea is to allow a second instruction to use the other CPU sub units when the previous instruction has moved on. For instance, while one instruction is using the ALU, the next instruction from the program can be in the decoder, and a third can be fetched from memory. In this assembly line type arrangement, the total number of instructions processed at any time can be improved by up to the number of pipeline stages. In the Z80, for example, a four stage pipeline could improve overall throughput by four times. However, due to the complexity of the instruction timing, this would not be easy to implement. The much simpler instruction set architecture (ISA) of the MOS 6502 allowed a two stage pipeline to be included, which gave it performance that was about double that of the Z80 at any given clock speed.