что называется ступенью конвейера

вебасто транспортер т5 предохранитель

Наклонная камера — неотъемлемая часть системы, которая размещается посередине между жаткой и молотилкой комбайна. Главная ее задача — доставка травы, которую скосили, фиксация жатки, ее привода. Как правило, после длительного использования камеры наклонного типа, ее детали изнашиваются. Купить новые запчасти можно на сайте компании «ПрофАгро».

Что называется ступенью конвейера виды элеваторов км

Что называется ступенью конвейера

Эта процедура называется выборкой. После этого выбранные из кэша инструкции декодируются в понятные для данного процессора примитивы машинные команды. Данная процедура называется декодированием. Далее декодированные команды поступают на исполнительные блоки процессора, выполняются, а результат записывается в оперативную память.

Процессы выборки инструкций из кэша, их декодирование и продвижение к исполнительным блокам осуществляются в предпроцессоре, а процесс выполнения декодированных команд — в постпроцессоре. Таким образом, даже в самом простейшем случае команда проходит как минимум четыре стадии обработки:. Данные стадии принято называть конвейером обработки команд. В нашем случае конвейер является четырехступенчатым.

Важно, что каждую из этих ступеней команда должна проходить ровно за один такт. Соответственно для четырехступенчатого конвейера на выполнение одной команды отводится ровно четыре такта. Конечно, рассмотренный нами процессор является в определенной мере гипотетическим.

В реальных процессорах конвейер обработки команд может быть более сложным и включать большее количество ступеней. К примеру, как мы увидим в дальнейшем, конвейер процессора Intel Pentium 4 включает 20 ступеней. Однако сама идеология построения процессора остается неизменной. Причина увеличения длины конвейера заключается в том, что многие команды являются довольно сложными и не могут быть выполнены за один такт процессора, особенно при высоких тактовых частотах.

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

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

Таким образом, по существу реализуется множество параллельных коротких конвейеров. При этом постпроцессор работает по классической схеме: осуществляет выборку команд, их декодирование и посылку на множество исполнительных блоков. Такой подход позволяет в полной мере реализовать параллелизм на уровне инструкций Instruction-Level Parallelism, ILP , когда несколько инструкций выполняются одновременно в различных исполнительных блоках процессора.

Важно, что количество ступеней конвейера внутри постпроцессора исполнительного блока здесь невелико, поэтому инструкции выполняются за небольшое количество циклов. Для того чтобы реализовать параллелизм на уровне инструкций, необходимо, чтобы поступающие на исполнительные блоки команды можно было выполнять параллельно. Однако если, к примеру, для выполнения следующей по порядку инструкции требуется знать результат выполнения предыдущей инструкции взаимозависимые инструкции , то в этом случае параллельное выполнение невозможно.

Поэтому препроцессор прежде всего проверяет взаимозависимость команд и переупорядочивает их не в порядке поступления out of order , а так, чтобы их можно было выполнять параллельно. На последних ступенях конвейера инструкции выстраиваются в исходном порядке. Короткий конвейер, как, впрочем, и длинный, имеет свои сильные и слабые стороны.

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

В этом случае увеличение числа команд, выполняемых за единицу времени, достигается за счет распараллеливания инструкций и наращивания исполнительных блоков процессора. При использовании длинного конвейера возможно увеличение тактовой частоты процессора, то есть сам конвейер оказывается более быстрым. Использование длинных конвейеров с высокими тактовыми частотами процессора — это второй подход к увеличению производительности процессора.

Именно такая идеология длинного конвейера заложена в архитектуре процессора Intel Pentium 4. При использовании длинного конвейера в постпроцессоре, то есть на стадии исполнения инструкций, задействуется меньшее количество исполнительных блоков, каждый из которых обладает длинным и соответственно быстрым конвейером. Это означает, что каждый блок исполнения Execution Unit имеет больше доступных для выполнения тактов и способен одновременно выполнять довольно много инструкций.

К примеру, вместо трех устройств для выполнения операций с вещественными числами FPU , имеющих короткий конвейер, у процессора может быть только один блок FPU с длинным конвейером, на различных ступенях которого может одновременно выполняться большее количество инструкций. Как мы уже отмечали, длинный конвейер имеет свои подводные камни. Дело в том, что в случае длинного конвейера постпроцессора предпроцессору необходимо обеспечивать его соответствующую загрузку.

Для этого предпроцессор должен обладать довольно большим буфером, способным вмещать достаточное количество инструкций. Если же в кэше L1 отсутствует инструкция или данные для конвейера, то образуются так называемые pipeline bubbles конвейерные пузырьки. Такие pipeline bubbles проходят все ступени конвейера, ни на одной из которых не производятся никакие действия. Наличие таких pipeline bubbles негативно отражается на производительности процессора, поскольку ресурсы процессора просто-напросто простаивают.

Избежать возникновения подобных нежелательных простоев в процессорах позволяют различные хитроумные алгоритмы. Конечно, новым этот процессор назвать нельзя. Время его рождения — август года. Но, пожалуй, именно й можно считать годом его окончательной победы и завоевания всеобщего признания как самим процессором, так и новой процессорной микроархитектурой.

Начав со скромной по сегодняшним меркам тактовой частоты в 1,4 ГГц в году, сегодня Intel Pentium 4 перешагнул рубеж в 3 ГГц, но наряду с количественным ростом тактовой частоты изменение претерпела и микроархитектура процессора — к концу года корпорация Intel анонсировала процессор с поддержкой революционной технологии Hyper-Threading.

Современный модельный ряд процессоров Intel Pentium 4 весьма широк и включает модели, различающиеся как тактовой частотой, так и размером кэша L2, частотой процессорной шины, технологией производства, ядром процессора. Процессор Intel Pentium 4 может быть построен на ядре Willamette или на ядре Northwood. Разница между этими двумя типами процессоров следующая:.

У процессоров Intel Pentium 4 бывает либо мегагерцевая, либо мегагерцевая процессорная шина. Разрядность этих шин одинаковая, и различаются они только своей максимальной пропускной способностью. Процессоры Intel Celeron аналогичны Intel Pentium 4, но отличаются вдвое меньшим размером кэша второго уровня Кбайт. Кроме того, все процессоры Intel Celeron рассчитаны на мегагерцевую шину. Именно с нее мы и начнем наше рассмотрение процессоров Intel. Как уже отмечалось выше, процессор Intel Pentium 4 имеет беспрецедентно длинный конвейер — 20 ступеней Hyper-Pipelined Technology.

Архитектура, заложенная в процессоре, получила название Intel NetBurst. Структурная схема процессора изображена на рис. Сравнивая схему классического процессора со схемой процессора Intel Pentium 4, можно заметить несколько конструктивных различий. Прежде всего, инструкции поступают в предпроцессор из кэша L2, а не из кэша L1, как в классической схеме. Имеющий битную шину, работающую на частоте ядра, и усовершенствованную схему передачи данных, этот кэш обеспечивает высочайшую пропускную способность, столь важную для потоковых процессов обработки.

Кроме того, в схеме предпроцессора появился новый элемент — кэш L1 декодированных микроинструкций с отслеживанием исполнения Trace Cache. Наличие такого кэша — одна из составляющих архитектуры NetBurst. Кэш L1 данных размеров 8 Кбайт также присутствует в процессоре, но разнесен с кэшем L1 инструкций. Давайте попробуем разобраться, зачем потребовалось изменять классическую схему процессора и вводить новый кэш микроинструкций. При работе процессора инструкции выбираются из кэша L2, транслируются в команды х86 и декодируются.

При этом с учетом того, что конвейер имеет много ступеней и должен быть достаточно быстрым, при декодировании инструкции разбиваются на более мелкие микрокоманды, которые затем поступают в Trace Cache. Для выборки команд из кэша L2, их транслирования в команды х86 и последующего декодирования отводится несколько начальных ступеней конвейера восемь ступеней. Соответственно при выполнении фрагмента программного кода для декодирования команд будет использовано восемь процессорных тактов.

Однако во многих современных прежде всего мультимедийных приложениях один и тот же фрагмент кода может повторяться многократно. В этом случае тратить процессорные такты на повторную выборку, транслирование и декодирование было бы нерационально.

Выгоднее хранить уже готовые к исполнению микроинструкции в специальном кэше L1, где из них формируются мини-программы, называемые отслеживаниями traces. При попадании в кэш L1 происходит внеочередное выполнение команд; при этом значительно экономятся ресурсы процессора, так как по своей сути внеочередное выполнение команд подразумевает устранение восьми первых ступеней конвейера, фактическая длина которого в этом случае составляет уже 20 ступеней. В кэше с отслеживанием может храниться до 12 декодированных микрокоманд.

Если рассмотреть работу процессора Intel Pentium 4 при внеочередном выполнении команд, то есть когда происходит попадание в Trace Cache и используются уже декодированные команды, то схема работы процессора Intel Pentium 4 будет подобна схеме работы классического процессора. Режим работы процессора при внеочередном выполнении команд является естественным для процессора Intel Pentium 4 рис. Общая же длина конвейера составляет 28 ступеней. Этот блок предсказания позволяет модифицировать мини-программы, основываясь на спекулятивном предсказании.

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

Технология использования кэша с отслеживанием вкупе с усовершенствованным алгоритмом предсказания получила название Advanced Dynamic Execution и является составляющей частью технологии NetBurst. Кэш микроинструкций с отслеживаниями имеет еще одну особенность. Дело в том, что большинство команд х86 при декодировании преобразуются в две-три микроинструкции.

Однако встречаются и такие команды, для декодирования которых потребовались бы десятки и даже сотни микрокоманд. Естественно, что сохранять такие декодированные команды в кэше L1 было бы нерационально. Структурные конфликты возникают из-за конфликтов ресурсов, когда аппаратура не может поддерживать все возможные комбинации одновременно выполняемых команд [7].

Если какая-то комбинация команд не может быть поддержана, то говорят, что процессор имеет структурный конфликт. Наиболее часто структурные конфликты происходят, когда некоторый функциональный блок не полностью конвейеризован. Например, некоторые процессоры совместно используют единый конвейер памяти для данных и команд. В результате, когда команда содержит обращение к памяти данных, она вступает в конфликт с обращением более поздней командой.

Чтобы этот конфликт разрешался при обращении к памяти за данными, конвейер приостанавливается на один такт. В качестве альтернативы такому структурному конфликту разработчик мог бы обеспечить отдельное обращение к памяти команд либо путём разбиения кэша на отдельные кэш команд и кэш данных, либо используя множество буферов, называемыми буферами команд для хранения команд, однако, этого не делается во избежание увеличения стоимости блока [8].

Конфликты по данным возникают, когда зависимость команды от результатов предыдущей проявляется при совмещении команд в конвейере. Существует метод устранения конфликта по данным: форвардинг англ. К сожалению, не все потенциальные конфликты по данным можно обработать с помощью байпаса, в этом случае конвейер приостанавливается до разрешения конфликта.

Конфликты по управлению возникают при конвейерном выполнении условных передач управления и других команд, которые изменяют значение программного счетчика. Существует много способов обработки остановки конвейера , вызванных задержкой передачи управления, но для глубоких конвейеров в основном используются агрессивные средства [10] , такие как предсказания передач управления.

Бесконвейерная архитектура значительно менее эффективна из-за меньшей загрузки функциональных модулей процессора в то время, пока один или небольшое число модулей выполняет свою функцию во время обработки инструкций. Конвейер не убирает полностью время простоя модулей в процессорах как таковое и не уменьшает время выполнения каждой конкретной инструкции, но заставляет модули процессора работать параллельно над разными инструкциями, увеличивая тем самым количество инструкций, выполняемых за единицу времени, а значит, и общую производительность программ.

Процессоры с конвейером внутри устроены так, что обработка инструкций разделена на последовательность стадий, предполагая одновременную обработку нескольких инструкций на разных стадиях. Результаты работы каждой из стадий передаются через ячейки памяти на следующую стадию, и так — до тех пор, пока инструкция не будет выполнена.

Подобная организация процессора, при некотором увеличении среднего времени выполнения каждой инструкции, тем не менее, обеспечивает значительный рост производительности за счёт высокой частоты завершения выполнения инструкций. Не все инструкции являются независимыми. В простейшем конвейере, где обработка инструкции представлена пятью стадиями, для обеспечения полной загрузки, в то время, пока заканчивается обработка первой инструкции, должно обрабатываться параллельно ещё четыре последовательных независимых инструкции.

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

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

Верхняя серая область — список инструкций, которые предстоит выполнить. Нижняя серая область — список инструкций, которые уже были выполнены. И средняя белая область является самим конвейером. Для разрешения конфликтов конвейера процессор вынужден задерживать обработку инструкции путём создания «пузырька» bubble в конвейере. Прохождение пузырька через исполнительные устройства не сопровождается никакой полезной работой. Во втором такте обработка фиолетовой инструкции задерживается, и на стадии декодирования в третьем такте теперь находится пузырёк.

Все инструкции, следующие «за» фиолетовой инструкцией, задерживаются на один такт, тогда как инструкции, находящиеся «перед» фиолетовой инструкцией, продолжают исполняться. Очевидно, что наличие пузырька в конвейере даёт суммарное время исполнения в 8 тактов вместо 7 на схеме исполнения, показанной выше. Исполнительные устройства должны выполнять какое-то действие на каждом такте. Пузырьки являются способом создания задержки при обработке инструкции без прекращения работы конвейера.

При их выполнении не происходит полезной работы на стадиях выборки, декодирования, исполнения и записи результата. Они могут быть выражены при помощи инструкции NOP [11] [12] [13] ассемблера. Эта инструкция суммирует значения, находящиеся в ячейках памяти A и B , а затем кладет результат в ячейку памяти C.

В конвейерном процессоре контроллер может разбить эту операцию на последовательные задачи вида. Ячейки R1 , R2 и R3 являются регистрами процессора. Значения, которые хранятся в ячейках памяти, которые мы называем A и B , загружаются то есть копируются в эти регистры, затем суммируются, и результат записывается в ячейку памяти C. В данном примере конвейер состоит из трех уровней — загрузки, исполнения и записи. Эти шаги называются, очевидно, уровнями или шагами конвейера.

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

Поэтому, когда первая инструкция находится на шаге исполнения, вторая инструкция будет на стадии раскодирования, а третья инструкция будет на стадии прочтения. Конвейер не уменьшает время, которое необходимо для того, чтобы выполнить инструкцию, но зато он увеличивает объём число инструкций, которые могут быть выполнены одновременно, и таким образом уменьшает задержку между выполненными инструкциями — увеличивая т. Чем больше уровней имеет конвейер, тем больше инструкций могут выполняться одновременно и тем меньше задержка между завершенными инструкциями.

Каждый микропроцессор, произведенный в наши дни, использует как минимум двухуровневый конвейер. И так далее. Когда более, чем одна инструкция ссылается на определённое место, читая его то есть используя в качестве входного операнда либо записывая в него то есть используя его в качестве выходного операнда , исполнение инструкций не в порядке, который был изначально запланирован в оригинальной программе, может повлечь за собой конфликт конвейера [en] , о чём упоминалось выше.

Существует несколько зарекомендовавших себя приёмов либо для предотвращения конфликтов, либо для их исправления, если они случились. Множество схем включают в себя конвейеры в 7, 10 или даже 20 уровней как, например, в процессоре Pentium 4. Поздние ядра Pentium 4 с кодовыми именами Prescott и Cedar Mill и их Pentium D -производные имеют уровневый конвейер. Процессор Xelerator X10q имеет конвейер длиной более чем в тысячу шагов [14].

Обратной стороной медали в данном случае является необходимость сбрасывать весь конвейер в случае, если ход программы изменился например, по условному оператору. Эту проблему пытаются решать предсказатели переходов. Предсказание переходов само по себе может только усугубить ситуацию, если предсказание производится плохо.

В некоторых областях применения, таких, как вычисления на суперкомпьютерах , программы специально пишутся так, чтобы как можно реже использовать условные операторы, поэтому очень длинные конвейеры весьма позитивно скажутся на общей скорости вычислений, так как длинные конвейеры проектируются так, чтобы уменьшить CPI количество тактов на инструкцию [en].

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

СКРЕБКОВЫЙ КОНВЕЙЕР ТРАНСПОРТЕР

Именно такая идеология длинного конвейера заложена в архитектуре процессора Intel Pentium 4. При использовании длинного конвейера в постпроцессоре, то есть на стадии исполнения инструкций, задействуется меньшее количество исполнительных блоков, каждый из которых обладает длинным и соответственно быстрым конвейером. Это означает, что каждый блок исполнения Execution Unit имеет больше доступных для выполнения тактов и способен одновременно выполнять довольно много инструкций.

К примеру, вместо трех устройств для выполнения операций с вещественными числами FPU , имеющих короткий конвейер, у процессора может быть только один блок FPU с длинным конвейером, на различных ступенях которого может одновременно выполняться большее количество инструкций. Как мы уже отмечали, длинный конвейер имеет свои подводные камни. Дело в том, что в случае длинного конвейера постпроцессора предпроцессору необходимо обеспечивать его соответствующую загрузку.

Для этого предпроцессор должен обладать довольно большим буфером, способным вмещать достаточное количество инструкций. Если же в кэше L1 отсутствует инструкция или данные для конвейера, то образуются так называемые pipeline bubbles конвейерные пузырьки. Такие pipeline bubbles проходят все ступени конвейера, ни на одной из которых не производятся никакие действия.

Наличие таких pipeline bubbles негативно отражается на производительности процессора, поскольку ресурсы процессора просто-напросто простаивают. Избежать возникновения подобных нежелательных простоев в процессорах позволяют различные хитроумные алгоритмы. Конечно, новым этот процессор назвать нельзя. Время его рождения — август года. Но, пожалуй, именно й можно считать годом его окончательной победы и завоевания всеобщего признания как самим процессором, так и новой процессорной микроархитектурой.

Начав со скромной по сегодняшним меркам тактовой частоты в 1,4 ГГц в году, сегодня Intel Pentium 4 перешагнул рубеж в 3 ГГц, но наряду с количественным ростом тактовой частоты изменение претерпела и микроархитектура процессора — к концу года корпорация Intel анонсировала процессор с поддержкой революционной технологии Hyper-Threading. Современный модельный ряд процессоров Intel Pentium 4 весьма широк и включает модели, различающиеся как тактовой частотой, так и размером кэша L2, частотой процессорной шины, технологией производства, ядром процессора.

Процессор Intel Pentium 4 может быть построен на ядре Willamette или на ядре Northwood. Разница между этими двумя типами процессоров следующая:. У процессоров Intel Pentium 4 бывает либо мегагерцевая, либо мегагерцевая процессорная шина. Разрядность этих шин одинаковая, и различаются они только своей максимальной пропускной способностью. Процессоры Intel Celeron аналогичны Intel Pentium 4, но отличаются вдвое меньшим размером кэша второго уровня Кбайт.

Кроме того, все процессоры Intel Celeron рассчитаны на мегагерцевую шину. Именно с нее мы и начнем наше рассмотрение процессоров Intel. Как уже отмечалось выше, процессор Intel Pentium 4 имеет беспрецедентно длинный конвейер — 20 ступеней Hyper-Pipelined Technology. Архитектура, заложенная в процессоре, получила название Intel NetBurst.

Структурная схема процессора изображена на рис. Сравнивая схему классического процессора со схемой процессора Intel Pentium 4, можно заметить несколько конструктивных различий. Прежде всего, инструкции поступают в предпроцессор из кэша L2, а не из кэша L1, как в классической схеме.

Имеющий битную шину, работающую на частоте ядра, и усовершенствованную схему передачи данных, этот кэш обеспечивает высочайшую пропускную способность, столь важную для потоковых процессов обработки. Кроме того, в схеме предпроцессора появился новый элемент — кэш L1 декодированных микроинструкций с отслеживанием исполнения Trace Cache. Наличие такого кэша — одна из составляющих архитектуры NetBurst. Кэш L1 данных размеров 8 Кбайт также присутствует в процессоре, но разнесен с кэшем L1 инструкций.

Давайте попробуем разобраться, зачем потребовалось изменять классическую схему процессора и вводить новый кэш микроинструкций. При работе процессора инструкции выбираются из кэша L2, транслируются в команды х86 и декодируются. При этом с учетом того, что конвейер имеет много ступеней и должен быть достаточно быстрым, при декодировании инструкции разбиваются на более мелкие микрокоманды, которые затем поступают в Trace Cache.

Для выборки команд из кэша L2, их транслирования в команды х86 и последующего декодирования отводится несколько начальных ступеней конвейера восемь ступеней. Соответственно при выполнении фрагмента программного кода для декодирования команд будет использовано восемь процессорных тактов.

Однако во многих современных прежде всего мультимедийных приложениях один и тот же фрагмент кода может повторяться многократно. В этом случае тратить процессорные такты на повторную выборку, транслирование и декодирование было бы нерационально. Выгоднее хранить уже готовые к исполнению микроинструкции в специальном кэше L1, где из них формируются мини-программы, называемые отслеживаниями traces.

При попадании в кэш L1 происходит внеочередное выполнение команд; при этом значительно экономятся ресурсы процессора, так как по своей сути внеочередное выполнение команд подразумевает устранение восьми первых ступеней конвейера, фактическая длина которого в этом случае составляет уже 20 ступеней. В кэше с отслеживанием может храниться до 12 декодированных микрокоманд. Если рассмотреть работу процессора Intel Pentium 4 при внеочередном выполнении команд, то есть когда происходит попадание в Trace Cache и используются уже декодированные команды, то схема работы процессора Intel Pentium 4 будет подобна схеме работы классического процессора.

Режим работы процессора при внеочередном выполнении команд является естественным для процессора Intel Pentium 4 рис. Общая же длина конвейера составляет 28 ступеней. Этот блок предсказания позволяет модифицировать мини-программы, основываясь на спекулятивном предсказании. Так, если в программном коде имеется точка ветвления, то блок предсказаний может предположить дальнейший ход программы вдоль одной из возможных ветвей и с учетом этого спекулятивного предсказания построить мини-программу.

Технология использования кэша с отслеживанием вкупе с усовершенствованным алгоритмом предсказания получила название Advanced Dynamic Execution и является составляющей частью технологии NetBurst. Кэш микроинструкций с отслеживаниями имеет еще одну особенность. Дело в том, что большинство команд х86 при декодировании преобразуются в две-три микроинструкции. Однако встречаются и такие команды, для декодирования которых потребовались бы десятки и даже сотни микрокоманд. Естественно, что сохранять такие декодированные команды в кэше L1 было бы нерационально.

При попадании на такую метку управление потоком инструкций передается ROM-памяти. Рассмотрим теперь процесс продвижения микроинструкций по основному конвейеру, то есть когда процессор работает в режиме внеочередного выполнения инструкций. В течение первых двух тактов в Trace Cache передается указатель на следующие выполняемые инструкции — это первые две ступени конвейера, называемые Trace Cache next instruction pointer.

После получения указателя в течение двух тактов происходит выборка инструкций из кэша Trace Cache Fetch — это две следующие ступени конвейера. После этого выбранные инструкции должны быть отосланы на внеочередное выполнение. Для того чтобы обеспечить продвижение выбранных инструкций по процессору, то есть доставить их из предпроцессора в постпроцессор, используется еще одна дополнительная, или передаточная, ступень конвейера, называемая Drive.

На этой ступени не происходит обработки инструкции. Фактически такая «пустая» ступень конвейера представляет собой временную задержку и вводится для компенсации высоких тактовых частот. В процессоре Intel Pentium 4 содержится дополнительных регистров, которые не определены архитектурой набора команд.

Переименование регистров позволяет добиться их бесконфликтного существования. На следующих трех ступенях конвейера происходит планирование и распределение Schedule микрокоманд. Планировщик выполняет две основные функции: переупорядочивание микрокоманд и распределение их по функциональным устройствам. Суть переупорядочивания микрокоманд заключается в том, что планировщик Scheduler определяет, какую из микрокоманд уже можно выполнять, и в соответствии с их готовностью меняет порядок их следования.

Распределение микрокоманд происходит по четырем функциональным устройствам, то есть формируются четыре очереди. Эти очереди формируются из очереди памяти Mem Queue. Fast ALU Scheduler — это распределитель простых целочисленных операций. Он собирает простейшие микроинструкции для работы с целыми числами, чтобы затем послать их на исполнительный блок ALU, работающий на двойной скорости. В процессоре Pentium 4 имеется два исполнительных блока ALU, работающих на удвоенной скорости. К примеру, если тактовая частота процессора составляет 2,8 ГГц, то эти два устройства ALU работают с частотой 4,8 ГГц и в параллельном режиме способны выполнять четыре целочисленные операции за один такт.

Это устройство распределяет остальные операции ALU и операции с плавающей точкой. Simple FP Scheduler — распределитель простых операций с плавающей точкой. Это устройство формирует очередь простых операций с плавающей точкой и операций по доступу к памяти с плавающей точкой. Следующие две ступени конвейера — этап диспетчеризации Dispatch. На этих ступенях инструкции попадают на один из четырех портов диспетчеризации dispatch ports , которые выполняют функцию шлюзов к функциональным устройствам.

После того как инструкции пройдут порты диспетчеризации, они загружаются в блок регистров для дальнейшего выполнения. Для этого предназначены следующие две ступени процессора, называемые Register Files. Таким образом, после загрузки инструкций в блок регистров все готово для непосредственного выполнения команд. Процесс непосредственного выполнения инструкций в исполнительных устройствах происходит на следующей, семнадцатой, ступени конвейера, которая называется Execute.

Следующие три ступени конвейера: ступень изменения состоянии флагов Flags — если результат выполнения инструкции этого требует; ступень проверки ветвления Branch Check , на которой процессор узнает, сбылось ли предсказание ветвления.

Последняя ступень процессора — еще одна передаточная ступень Drive, назначение которой мы уже рассматривали. Заканчивая рассмотрение микроархитектуры процессора Intel Pentium 4, давайте еще раз остановимся на ключевых аспектах технологии Intel NetBurst:. Все эти ключевые моменты мы уже представили, за исключением последнего, то есть нового набора инструкций SSE2.

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

Эти процессоры имеют кэш L2 размером Кбайт, поддерживают высокоскоростную системную шину с частотой МГц и построены на основе архитектуры, называемой QuantiSpeed. Таким образом, к концу конвейера цепочка рабочих полностью выполняет все поставленные задачи, сохраняя высокий темп производства. Например, если на самую медленную операцию затрачивается одна минута, то каждая деталь будет сходить с конвейера через одну минуту. В процессорах роль рабочих исполняют функциональные модули, входящие в состав процессора.

Простейшая форма совмещения выполнения инструкций во времени была реализована в машине « Z3 » Конрада Цузе в году [2]. В проекте IBM Stretch были предложены термины «выборка» англ. Fetch , «декодирование» англ. Decode и «выполнение» англ.

Execute , которые затем стали общеупотребительными. Многие современные процессоры управляются тактовым генератором. Процессор внутри состоит из логических элементов и ячеек памяти — триггеров. Когда приходит сигнал от тактового генератора, триггеры приобретают своё новое значение, и «логике» требуется некоторое время для декодирования новых значений. Затем приходит следующий сигнал от тактового генератора, триггеры принимают новые значения, и так далее.

Разбивая последовательности логических элементов на более короткие и помещая триггеры между этими короткими последовательностями, уменьшают время, необходимое логике для обработки сигналов. В этом случае длительность одного такта процессора может быть соответственно уменьшена. Например, простейший конвейер RISC -процессоров можно представить пятью стадиями с наборами триггеров между стадиями:. Ситуации, называемые конфликтами конвейера [en] англ. Конфликты уменьшают реальное ускорение в производительности конвейерной обработки и могут вызвать необходимость остановки конвейера.

Для разрешения конфликта нужно, чтобы некоторые команды в конвейере могли продолжать выполняться, в то время как другие были задержаны. Существует три класса конфликтов [6]. Структурные конфликты возникают из-за конфликтов ресурсов, когда аппаратура не может поддерживать все возможные комбинации одновременно выполняемых команд [7]. Если какая-то комбинация команд не может быть поддержана, то говорят, что процессор имеет структурный конфликт.

Наиболее часто структурные конфликты происходят, когда некоторый функциональный блок не полностью конвейеризован. Например, некоторые процессоры совместно используют единый конвейер памяти для данных и команд. В результате, когда команда содержит обращение к памяти данных, она вступает в конфликт с обращением более поздней командой.

Чтобы этот конфликт разрешался при обращении к памяти за данными, конвейер приостанавливается на один такт. В качестве альтернативы такому структурному конфликту разработчик мог бы обеспечить отдельное обращение к памяти команд либо путём разбиения кэша на отдельные кэш команд и кэш данных, либо используя множество буферов, называемыми буферами команд для хранения команд, однако, этого не делается во избежание увеличения стоимости блока [8].

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

Существует много способов обработки остановки конвейера , вызванных задержкой передачи управления, но для глубоких конвейеров в основном используются агрессивные средства [10] , такие как предсказания передач управления. Бесконвейерная архитектура значительно менее эффективна из-за меньшей загрузки функциональных модулей процессора в то время, пока один или небольшое число модулей выполняет свою функцию во время обработки инструкций. Конвейер не убирает полностью время простоя модулей в процессорах как таковое и не уменьшает время выполнения каждой конкретной инструкции, но заставляет модули процессора работать параллельно над разными инструкциями, увеличивая тем самым количество инструкций, выполняемых за единицу времени, а значит, и общую производительность программ.

Процессоры с конвейером внутри устроены так, что обработка инструкций разделена на последовательность стадий, предполагая одновременную обработку нескольких инструкций на разных стадиях. Результаты работы каждой из стадий передаются через ячейки памяти на следующую стадию, и так — до тех пор, пока инструкция не будет выполнена. Подобная организация процессора, при некотором увеличении среднего времени выполнения каждой инструкции, тем не менее, обеспечивает значительный рост производительности за счёт высокой частоты завершения выполнения инструкций.

Не все инструкции являются независимыми. В простейшем конвейере, где обработка инструкции представлена пятью стадиями, для обеспечения полной загрузки, в то время, пока заканчивается обработка первой инструкции, должно обрабатываться параллельно ещё четыре последовательных независимых инструкции. Если последовательность содержит инструкции, зависимые от выполняемых в данный момент, то управляющая логика простейшего конвейера приостанавливает несколько начальных стадий конвейера, помещая этим самым в конвейер пустую инструкцию «пузырёк» , иногда неоднократно, — до тех пор, пока зависимость не будет разрешена.

Существует ряд приёмов, таких, как форвардинг, значительно снижающих необходимость приостанавливать в таких случаях часть конвейера. Однако зависимость между инструкциями, одновременно обрабатываемыми процессором, не позволяет добиться увеличения производительности кратно количеству стадий конвейера в сравнении с бесконвейерным процессором.

Конвейер помогает не во всех случаях. Существует несколько возможных минусов. Конвейер инструкций можно назвать «полностью конвейерным», если он может принимать новую инструкцию каждый машинный цикл. Иначе в конвейер должны быть вынужденно вставлены задержки, которые выравнивают конвейер, при этом ухудшая его производительность. Верхняя серая область — список инструкций, которые предстоит выполнить.

Нижняя серая область — список инструкций, которые уже были выполнены. И средняя белая область является самим конвейером. Для разрешения конфликтов конвейера процессор вынужден задерживать обработку инструкции путём создания «пузырька» bubble в конвейере. Прохождение пузырька через исполнительные устройства не сопровождается никакой полезной работой. Во втором такте обработка фиолетовой инструкции задерживается, и на стадии декодирования в третьем такте теперь находится пузырёк.

Все инструкции, следующие «за» фиолетовой инструкцией, задерживаются на один такт, тогда как инструкции, находящиеся «перед» фиолетовой инструкцией, продолжают исполняться. Очевидно, что наличие пузырька в конвейере даёт суммарное время исполнения в 8 тактов вместо 7 на схеме исполнения, показанной выше. Исполнительные устройства должны выполнять какое-то действие на каждом такте.

Пузырьки являются способом создания задержки при обработке инструкции без прекращения работы конвейера. При их выполнении не происходит полезной работы на стадиях выборки, декодирования, исполнения и записи результата. Они могут быть выражены при помощи инструкции NOP [11] [12] [13] ассемблера.

Эта инструкция суммирует значения, находящиеся в ячейках памяти A и B , а затем кладет результат в ячейку памяти C. В конвейерном процессоре контроллер может разбить эту операцию на последовательные задачи вида. Ячейки R1 , R2 и R3 являются регистрами процессора. Значения, которые хранятся в ячейках памяти, которые мы называем A и B , загружаются то есть копируются в эти регистры, затем суммируются, и результат записывается в ячейку памяти C. В данном примере конвейер состоит из трех уровней — загрузки, исполнения и записи.

Помощь этом вентилятор на элеваторе ответ Видела

Спекулятивное выполнение. На конечном этапе порядок инструкций восстанавливается и переводится в обычное машинное состояние. Представлены иллюстрации к возможностям архитектуры IA Предикация — центральный метод планирования параллельной обработки. Обычный процессор, в зависимости от исхода условия, исполняет один из этих базовых блоков, пропуская все другие. Более развитые процессоры пытаются прогнозировать исход операции перехода и заранее спекулятивно, по предположению выполняют один из блоков, теряя время при ошибке прогнозирования.

Поэтому выигрыш оказывается небольшим. Затем компилятор группирует машинные коды в битовые связки bundles , по 3 команды в каждой. В описания связок template заносится информация о том, какие команды могут исполняться параллельно независимо. Например, если компилятор находит 16 команд, которые не имеют взаимной связи, он укладывает их в 6 независимых связок по 3 в первых 5 и одна в 6- й и помечает их в описании.

Технология Hyper-Threading HT. Процессор Pentium. Если предсказание верно, то эффективность увеличивается. Если нет, то конвейер приходится сбрасывать полностью. При динамических методах исследуется поведение команд перехода за. Блок плавающей точки Floating Point Unit. Выполняет обработку. Кэш-память 1- го уровня Level 1 cache, L1. Интерфейс шины Bus Interface. Передает в ЦП поток команд и данных, а также передает данные из ЦП. Архитектура ЭВМ.

Поиск по сайту. Главная страница. Вычислительные устройства и приборы, история вопроса. Классы вычислительных машин. Информация, кодирование, обработка в ЭВМ. История развития ЭВМ. Проверь себя. Базовые представления об архетиктуре ЭВМ. Процессор, структура и функционирование.

Технологии повышения производительности процессоров. Конвейерная обработка команд. Организация оперативной памяти. Основные принципы. Локальные шины VLB. Интерфейс переферийных устройств. Внешние устройства. Периферийные устройства. Ввод-вывод текстовой, графической, мультимедийной информации. Карта сайта. Раздел 2. Главная страница Раздел 1.

Вычислительные приборы и устройства 1. В музыкальной акустике под «ступенью» подразумевают точку деления какого-либо интервала на более мелкие интервалы, своего рода «техническую метку» например, в выражениях «ступенное деление фортепианной октавы», «ступенный звукоряд тара».

Ключевым в таком понимании ступени является звуковысотная уникальность метки. Даже если близлежащая к данной иная метка находится на расстоянии микроинтервала и маркируется той же буквой буквенной нотации, что и её высотный вариант, обе сравниваемые звуковысотные позиции в акустических исследованиях и справочниках называются «ступенями» [1].

Музыковеды находят «ступени» в любых доладовых звуковысотных структурах, так называемых звуковых системах например, «меса — центральная ступень Полной системы», «ступень дасийного звукоряда», «в каждом из согласий обиходного звукоряда три ступени» и т. Наконец, в ступенях исчисляют ладовые звукоряды, независимо от типа лада модального, тонального , его исторической и региональной специфики. В мажорно-минорной тональности ступенью также называется особенно в разговорной речи, по принципу «часть вместо целого» аккорд, основной тон которого является ступенью мажорного или минорного звукоряда.

Так, словесная инструкция «после пятой ступени бери шестую низкую» может означать рекомендацию сыграть последовательность не звуков, а любых аккордов, принадлежащих этим ступеням, например, V7 — нVI. Гармоники натурального звукоряда против словарного определения ступени «ступенями» не называют. При усвоении того или иного значения термина «ступень» следует учитывать контекст словоупотребления.

Остальные ответы. Глеб Табаков Мастер 8 лет назад ноты в гамме. Похожие вопросы.

СТОМАТОЛОГ ИСПОЛЬЗУЕТ ЭЛЕВАТОР

Такой подход позволяет в полной мере реализовать параллелизм на уровне инструкций Instruction-Level Parallelism, ILP , когда несколько инструкций выполняются одновременно в различных исполнительных блоках процессора. Важно, что количество ступеней конвейера внутри постпроцессора исполнительного блока здесь невелико, поэтому инструкции выполняются за небольшое количество циклов. Для того чтобы реализовать параллелизм на уровне инструкций, необходимо, чтобы поступающие на исполнительные блоки команды можно было выполнять параллельно.

Однако если, к примеру, для выполнения следующей по порядку инструкции требуется знать результат выполнения предыдущей инструкции взаимозависимые инструкции , то в этом случае параллельное выполнение невозможно. Поэтому препроцессор прежде всего проверяет взаимозависимость команд и переупорядочивает их не в порядке поступления out of order , а так, чтобы их можно было выполнять параллельно.

На последних ступенях конвейера инструкции выстраиваются в исходном порядке. Короткий конвейер, как, впрочем, и длинный, имеет свои сильные и слабые стороны. Чем больше количество ступеней, на которые разбит конвейер, тем меньшее количество работы выполняется на каждой ступени и, следовательно, тем меньше времени требуется для прохождения командой данной ступени. С учетом того, что каждая ступень выполняется за один процессорный такт, длинные конвейеры позволяют повышать тактовые частоты процессора, что невозможно в случае коротких конвейеров.

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

При использовании длинного конвейера возможно увеличение тактовой частоты процессора, то есть сам конвейер оказывается более быстрым. Использование длинных конвейеров с высокими тактовыми частотами процессора — это второй подход к увеличению производительности процессора. Именно такая идеология длинного конвейера заложена в архитектуре процессора Intel Pentium 4.

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

Это означает, что каждый блок исполнения Execution Unit имеет больше доступных для выполнения тактов и способен одновременно выполнять довольно много инструкций. К примеру, вместо трех устройств для выполнения операций с вещественными числами FPU , имеющих короткий конвейер, у процессора может быть только один блок FPU с длинным конвейером, на различных ступенях которого может одновременно выполняться большее количество инструкций. Как мы уже отмечали, длинный конвейер имеет свои подводные камни.

Дело в том, что в случае длинного конвейера постпроцессора предпроцессору необходимо обеспечивать его соответствующую загрузку. Для этого предпроцессор должен обладать довольно большим буфером, способным вмещать достаточное количество инструкций. Если же в кэше L1 отсутствует инструкция или данные для конвейера, то образуются так называемые pipeline bubbles конвейерные пузырьки. Такие pipeline bubbles проходят все ступени конвейера, ни на одной из которых не производятся никакие действия.

Наличие таких pipeline bubbles негативно отражается на производительности процессора, поскольку ресурсы процессора просто-напросто простаивают. Избежать возникновения подобных нежелательных простоев в процессорах позволяют различные хитроумные алгоритмы. Конечно, новым этот процессор назвать нельзя. Время его рождения — август года. Но, пожалуй, именно й можно считать годом его окончательной победы и завоевания всеобщего признания как самим процессором, так и новой процессорной микроархитектурой.

Начав со скромной по сегодняшним меркам тактовой частоты в 1,4 ГГц в году, сегодня Intel Pentium 4 перешагнул рубеж в 3 ГГц, но наряду с количественным ростом тактовой частоты изменение претерпела и микроархитектура процессора — к концу года корпорация Intel анонсировала процессор с поддержкой революционной технологии Hyper-Threading. Современный модельный ряд процессоров Intel Pentium 4 весьма широк и включает модели, различающиеся как тактовой частотой, так и размером кэша L2, частотой процессорной шины, технологией производства, ядром процессора.

Процессор Intel Pentium 4 может быть построен на ядре Willamette или на ядре Northwood. Разница между этими двумя типами процессоров следующая:. У процессоров Intel Pentium 4 бывает либо мегагерцевая, либо мегагерцевая процессорная шина. Разрядность этих шин одинаковая, и различаются они только своей максимальной пропускной способностью.

Процессоры Intel Celeron аналогичны Intel Pentium 4, но отличаются вдвое меньшим размером кэша второго уровня Кбайт. Кроме того, все процессоры Intel Celeron рассчитаны на мегагерцевую шину. Именно с нее мы и начнем наше рассмотрение процессоров Intel. Как уже отмечалось выше, процессор Intel Pentium 4 имеет беспрецедентно длинный конвейер — 20 ступеней Hyper-Pipelined Technology.

Архитектура, заложенная в процессоре, получила название Intel NetBurst. Структурная схема процессора изображена на рис. Сравнивая схему классического процессора со схемой процессора Intel Pentium 4, можно заметить несколько конструктивных различий. Прежде всего, инструкции поступают в предпроцессор из кэша L2, а не из кэша L1, как в классической схеме.

Имеющий битную шину, работающую на частоте ядра, и усовершенствованную схему передачи данных, этот кэш обеспечивает высочайшую пропускную способность, столь важную для потоковых процессов обработки. Кроме того, в схеме предпроцессора появился новый элемент — кэш L1 декодированных микроинструкций с отслеживанием исполнения Trace Cache. Наличие такого кэша — одна из составляющих архитектуры NetBurst.

Кэш L1 данных размеров 8 Кбайт также присутствует в процессоре, но разнесен с кэшем L1 инструкций. Давайте попробуем разобраться, зачем потребовалось изменять классическую схему процессора и вводить новый кэш микроинструкций. При работе процессора инструкции выбираются из кэша L2, транслируются в команды х86 и декодируются. При этом с учетом того, что конвейер имеет много ступеней и должен быть достаточно быстрым, при декодировании инструкции разбиваются на более мелкие микрокоманды, которые затем поступают в Trace Cache.

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

Выгоднее хранить уже готовые к исполнению микроинструкции в специальном кэше L1, где из них формируются мини-программы, называемые отслеживаниями traces. При попадании в кэш L1 происходит внеочередное выполнение команд; при этом значительно экономятся ресурсы процессора, так как по своей сути внеочередное выполнение команд подразумевает устранение восьми первых ступеней конвейера, фактическая длина которого в этом случае составляет уже 20 ступеней.

В кэше с отслеживанием может храниться до 12 декодированных микрокоманд. Если рассмотреть работу процессора Intel Pentium 4 при внеочередном выполнении команд, то есть когда происходит попадание в Trace Cache и используются уже декодированные команды, то схема работы процессора Intel Pentium 4 будет подобна схеме работы классического процессора.

Режим работы процессора при внеочередном выполнении команд является естественным для процессора Intel Pentium 4 рис. Общая же длина конвейера составляет 28 ступеней. Этот блок предсказания позволяет модифицировать мини-программы, основываясь на спекулятивном предсказании.

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

Кэш микроинструкций с отслеживаниями имеет еще одну особенность. Дело в том, что большинство команд х86 при декодировании преобразуются в две-три микроинструкции. Однако встречаются и такие команды, для декодирования которых потребовались бы десятки и даже сотни микрокоманд. Естественно, что сохранять такие декодированные команды в кэше L1 было бы нерационально.

При попадании на такую метку управление потоком инструкций передается ROM-памяти. Рассмотрим теперь процесс продвижения микроинструкций по основному конвейеру, то есть когда процессор работает в режиме внеочередного выполнения инструкций. В течение первых двух тактов в Trace Cache передается указатель на следующие выполняемые инструкции — это первые две ступени конвейера, называемые Trace Cache next instruction pointer. После получения указателя в течение двух тактов происходит выборка инструкций из кэша Trace Cache Fetch — это две следующие ступени конвейера.

После этого выбранные инструкции должны быть отосланы на внеочередное выполнение. Для того чтобы обеспечить продвижение выбранных инструкций по процессору, то есть доставить их из предпроцессора в постпроцессор, используется еще одна дополнительная, или передаточная, ступень конвейера, называемая Drive. На этой ступени не происходит обработки инструкции. Фактически такая «пустая» ступень конвейера представляет собой временную задержку и вводится для компенсации высоких тактовых частот.

В процессоре Intel Pentium 4 содержится дополнительных регистров, которые не определены архитектурой набора команд. Переименование регистров позволяет добиться их бесконфликтного существования. На следующих трех ступенях конвейера происходит планирование и распределение Schedule микрокоманд.

Планировщик выполняет две основные функции: переупорядочивание микрокоманд и распределение их по функциональным устройствам. Суть переупорядочивания микрокоманд заключается в том, что планировщик Scheduler определяет, какую из микрокоманд уже можно выполнять, и в соответствии с их готовностью меняет порядок их следования. Распределение микрокоманд происходит по четырем функциональным устройствам, то есть формируются четыре очереди. Эти очереди формируются из очереди памяти Mem Queue.

Fast ALU Scheduler — это распределитель простых целочисленных операций. Он собирает простейшие микроинструкции для работы с целыми числами, чтобы затем послать их на исполнительный блок ALU, работающий на двойной скорости. В процессоре Pentium 4 имеется два исполнительных блока ALU, работающих на удвоенной скорости. К примеру, если тактовая частота процессора составляет 2,8 ГГц, то эти два устройства ALU работают с частотой 4,8 ГГц и в параллельном режиме способны выполнять четыре целочисленные операции за один такт.

Это устройство распределяет остальные операции ALU и операции с плавающей точкой. Simple FP Scheduler — распределитель простых операций с плавающей точкой. Это устройство формирует очередь простых операций с плавающей точкой и операций по доступу к памяти с плавающей точкой. Следующие две ступени конвейера — этап диспетчеризации Dispatch.

Конвейер инструкций можно назвать «полностью конвейерным», если он может принимать новую инструкцию каждый машинный цикл. Иначе в конвейер должны быть вынужденно вставлены задержки, которые выравнивают конвейер, при этом ухудшая его производительность. Верхняя серая область — список инструкций, которые предстоит выполнить. Нижняя серая область — список инструкций, которые уже были выполнены.

И средняя белая область является самим конвейером. Для разрешения конфликтов конвейера процессор вынужден задерживать обработку инструкции путём создания «пузырька» bubble в конвейере. Прохождение пузырька через исполнительные устройства не сопровождается никакой полезной работой. Во втором такте обработка фиолетовой инструкции задерживается, и на стадии декодирования в третьем такте теперь находится пузырёк.

Все инструкции, следующие «за» фиолетовой инструкцией, задерживаются на один такт, тогда как инструкции, находящиеся «перед» фиолетовой инструкцией, продолжают исполняться. Очевидно, что наличие пузырька в конвейере даёт суммарное время исполнения в 8 тактов вместо 7 на схеме исполнения, показанной выше. Исполнительные устройства должны выполнять какое-то действие на каждом такте. Пузырьки являются способом создания задержки при обработке инструкции без прекращения работы конвейера.

При их выполнении не происходит полезной работы на стадиях выборки, декодирования, исполнения и записи результата. Они могут быть выражены при помощи инструкции NOP [11] [12] [13] ассемблера. Эта инструкция суммирует значения, находящиеся в ячейках памяти A и B , а затем кладет результат в ячейку памяти C. В конвейерном процессоре контроллер может разбить эту операцию на последовательные задачи вида.

Ячейки R1 , R2 и R3 являются регистрами процессора. Значения, которые хранятся в ячейках памяти, которые мы называем A и B , загружаются то есть копируются в эти регистры, затем суммируются, и результат записывается в ячейку памяти C. В данном примере конвейер состоит из трех уровней — загрузки, исполнения и записи.

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

В конвейерном процессоре все эти шаги могут выполняться одновременно на разных инструкциях. Поэтому, когда первая инструкция находится на шаге исполнения, вторая инструкция будет на стадии раскодирования, а третья инструкция будет на стадии прочтения. Конвейер не уменьшает время, которое необходимо для того, чтобы выполнить инструкцию, но зато он увеличивает объём число инструкций, которые могут быть выполнены одновременно, и таким образом уменьшает задержку между выполненными инструкциями — увеличивая т.

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

И так далее. Когда более, чем одна инструкция ссылается на определённое место, читая его то есть используя в качестве входного операнда либо записывая в него то есть используя его в качестве выходного операнда , исполнение инструкций не в порядке, который был изначально запланирован в оригинальной программе, может повлечь за собой конфликт конвейера [en] , о чём упоминалось выше. Существует несколько зарекомендовавших себя приёмов либо для предотвращения конфликтов, либо для их исправления, если они случились.

Множество схем включают в себя конвейеры в 7, 10 или даже 20 уровней как, например, в процессоре Pentium 4. Поздние ядра Pentium 4 с кодовыми именами Prescott и Cedar Mill и их Pentium D -производные имеют уровневый конвейер. Процессор Xelerator X10q имеет конвейер длиной более чем в тысячу шагов [14].

Обратной стороной медали в данном случае является необходимость сбрасывать весь конвейер в случае, если ход программы изменился например, по условному оператору. Эту проблему пытаются решать предсказатели переходов. Предсказание переходов само по себе может только усугубить ситуацию, если предсказание производится плохо. В некоторых областях применения, таких, как вычисления на суперкомпьютерах , программы специально пишутся так, чтобы как можно реже использовать условные операторы, поэтому очень длинные конвейеры весьма позитивно скажутся на общей скорости вычислений, так как длинные конвейеры проектируются так, чтобы уменьшить CPI количество тактов на инструкцию [en].

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

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

После того, как ветка будет пройдена и станет известно, куда процессору необходимо переходить в дальнейшем, следующая инструкция должна будет пройти весь путь через конвейер перед тем, как результат становится доступным и процессор снова «работает». В крайнем случае, производительность конвейерного процессора может теоретически упасть до производительности бесконвейерного, или даже быть хуже за счёт того, что будет занят только один уровень конвейера и между уровнями присутствует небольшая задержка.

Если процессор оснащён конвейером, код, читаемый из памяти, не выполняется сразу, а помещается в очередь очередь предвыборки, prefetch input queue. Если код, содержащийся в памяти, будет изменён, код, содержащийся в очереди конвейера, останется прежним. Также не изменятся инструкции, находящиеся в кэше инструкций. Стоит учитывать, что данная проблема характерна только для самомодифицирующихся программ и упаковщиков исполняемых файлов. Материал из Википедии — свободной энциклопедии.

Необходимо проверить качество перевода и исправить содержательные и стилистические ошибки. Вы можете помочь улучшить эту статью. Оригинал на английском языке — Instruction pipelining. Эта отметка стоит на статье с 05 апреля года. У этого термина существуют и другие значения, см. Конвейер значения. Основная статья: Тактовый генератор. The First Computers: History and Architectures. Основы программирования для цифровой машины «Урал». Информационные технологии в СССР.

Создатели советской компьютерной техники. Memory Systems and Pipelined Processors. Технологии цифровых процессоров. Конвейер Внеочередное исполнение Переименование регистров Спекулятивное исполнение [en] Предсказатель переходов Предвыборка кода. Бит Инструкций Суперскалярность Данных Задач. Многопоточность Superthreading Одновременная многопоточность Hyperthreading Аппаратная виртуализация.