конвейер pentium

элеватор суфле грязи

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

Конвейер pentium конвейер из роликов

Конвейер pentium

Производство на время пришлось остановить. Однако вскоре началось производство усовершенствованных процессоров, основанных на ядре P54C. В октябре года были выпущены процессоры Pentium второго поколения. Изначально была выпущена модель с тактовой частотой 75 МГц. Напряжение питания также было уменьшено до 3,3 В, ток, потребляемый процессором, составляет 3,25 А. В процессорах Pentium второго поколения используется умножение тактовой частоты, он работает быстрее системной шины.

Для указания, во сколько раз тактовая частота ядра процессора больше частоты системной шины, используется множитель. Во всех процессорах, основанных на ядре P54C, множитель равен 1,5. Первые процессоры, основанные на данном ядре, были выпущены 27 марта года. При этом Pentium потреблял ток в 4,6 А, а его максимальная рассеиваемая энергия тепловыделение составляло 15,5 Вт.

Процессор включает в себя устройство MMX с конвейерной обработкой команд, кэш L1 увеличен до 32 Кб 16 Кб для данных и 16 Кб для инструкций. Содержит 57 новых команд по параллельной обработке целочисленных данных, введён тип данных 64 бита. Для повышения производительности кэш команд и кэш данных были увеличены до 16 КБ каждый. Были доступны модели с тактовыми частотами , и МГц [2].

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

Ядро Tillamook названо в честь города в штате Орегон , США , представляет собой ядро P55C с пониженным напряжением питания — модель с частотой МГц работала с напряжением 2,0 В, потребляя при этом ток в 4,5 А и обладала тепловыделением в 8,4 Вт. Таковыми являются:. Материал из Википедии — свободной энциклопедии. Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии , проверенной 24 мая ; проверки требуют 47 правок.

Запрос «P5» перенаправляется сюда; о спутнике плутона см. Стикс спутник. Socket 4 Socket 5 Socket 7. Основная статья: Pentium OverDrive. Процессоры Intel. Микроархитектуры и технологический процесс. Для улучшения этой статьи желательно :. Проставив сноски , внести более точные указания на источники.

Пожалуйста, после исправления проблемы исключите её из списка параметров. После устранения всех недостатков этот шаблон может быть удалён любым участником. Категории : X86 Микропроцессоры фирмы Intel Pentium. Прежде всего, инструкции поступают в предпроцессор из кэша 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. Теперь перейдем к рассмотрению архитектуры процессора Athlon. Как видно из рис. Поток инструкций в формате x86 поступает в схему предпроцессора Front End из кэша L1. Кэш первого уровня L1 имеет общий размер Кбайт и разделен на кэш данных и кэш инструкций по 64 Кбайт каждый.

Предварительно инструкции x86 разделяются на большие Large x86 instruction и маленькие Small x86 instruction. Большие, или сложные, инструкции поступают в программный Microcode decoder декодер, а маленькие, или простые, инструкции — в аппаратный Hardware decoder декодер. Оба декодера выполняют одну и ту же задачу — транслируют xинструкции в простейшие машинные команды, называемые MacroOps в процессоре Intel Pentium 4 аналогичные по смыслу команды называются :Ops — от англ.

Возникает вопрос: зачем понадобилось два декодера и зачем вообще делить xинструкции на два потока? Дело в том, что инструкции могут быть простыми и сложными. Простые инструкции при декодировании представляются с помощью MacroOps-команд. С задачей декодирования таких простых инструкций может легко справиться аппаратный декодер, построенный на логических схемах.

Однако некоторые xкоманды бывают довольно сложными. Такие команды при декодировании могут представляться несколькими десятками и даже сотнями MacroOps-инструкций. Для того чтобы их декодировать, используется специализированный программный декодер, представляющий собой своеобразный процессор. Такой декодер содержит программный код, на основе которого воспроизводится последовательность MacroOps-инструкций. Если вы помните, нечто подобное для борьбы со сложными xкомандами применяется и в архитектуре процессора Intel Pentium 4.

Правда, там в этой роли выступает не декодер, а uCode ROM-память, содержащая длинные последовательности декодированных инструкций. Каждый из двух декодеров в процессоре Athlon способен выдавать по три MacroOps-инструкции за такт, поэтому оба декодера в совокупности производят шесть декодированных инструкций за каждый такт процессора.

Далее эти шесть инструкций поступают на шестипозиционный параллельный декодер six-position parallel decoder , который, в свою очередь, выдает по три MacroOps-инструкции за такт. Этот буфер рассчитан на хранение 72 декодированных инструкций. Впрочем, хранение — не единственное предназначение ICU.

Главная его задача заключается в диспетчеризации трех инструкций за такт по функциональным устройствам, то есть ICU распределяет инструкции в зависимости от их назначения и посылает инструкции для работы с целыми числами в целочисленный планировщик Int Scheduler , а инструкции для работы с вещественными числами — в планировщик для работы с вещественными числами FPU Scheduler.

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

В процессоре Athlon имеется три исполнительных блока для работы с вещественными числами, поэтому FPU-планировщик должен формировать по три инструкции за такт и направлять их на исполнительные блоки. Все целочисленные инструкции направляются в планировщик инструкций для работы с целыми числами Int Scheduler. Этот планировщик рассчитан на хранение 18 инструкций и выполняет те же функции, что и FPU-планировщик.

ТРАНСПОРТЕР ФОЛЬКСВАГЕН T5 ОТЗЫВЫ

ДОГРЕВАТЕЛЬ ФОЛЬКСВАГЕН ТРАНСПОРТЕР Т5

Да, это новый процессорный картридж — SECC2. Несколько лет назад, переходя к выпуску Pentium II, Intel надеялся разделаться с конкурентами, поместив свой процессор в новую упаковку и не лицензировав ее никому. Однако жизнь сложилась по-другому. Результатом этого шага явилось то, что рынок дешевых систем корпорацией был потерян, и сейчас ей приходится срочно наверстывать упущенное.

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

Таким образом, отвод тепла в SECC2 поставлен лучше. Косвенным доказательством этого явился тот факт, что предоставленный нам образец Pentium III оборудован только игольчатым радиатором без вентилятора. При этом он нормально функционировал не только на штатной частоте МГц, но и будучи разогнанным до МГц 5х МГц.

Но и это еще не все. Таким образом, и само ядро нового процессора обрело другое лицо. Результатом этого явилось его уменьшение, с одной стороны, и улучшение охлаждения за счет лучшей теплопроводности, с другой. Так выглядит теперь Pentium III без корпуса: Номер Вторым нововведением, наделавшим, наверное, больше всего шума, явилось присваивание каждому процессору Pentium III серийного номера — уникального идентификатора. Замысел был неплох.

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

Однако паниковать рано. Если посмотреть объективно, то для того, чтобы кто-то смог через сеть посмотреть номер процессора, необходимо: чтобы он был разрешен. Intel предлагает специальную утилиту для блокировки номера. Кроме того, все новые версии BIOS, поддерживающие Pentium III, также позволяют блокировать этот номер через Setup; чтобы на компьютере пользователя была запущена специальная программа, передающая этот номер.

Предполагается, что кто-то, например web-сайт, должен запустить на пользовательском ПК эту программу. Так что я не склонен расценивать введение серийного номера, как попытку Intel вторгнуться в нашу частную жизнь. Более того, уже почти 10 лет, как все выпускаемые жесткие диски имеют серийные номера.

И их также можно узнать. А это почему-то не вызывает ни у кого никаких вопросов. Так что введение номера — скорее все-таки положительный, чем отрицательный, шаг. SSE Теперь о самом главном. Каждый из этих регистров хранит четыре вещественных числа одинарной точности.

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

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

Неужели производитель видит в SSE качественный шаг? Думается, нет. Дело тут в маркетинге. Приписав к названию аббревиатуру, Intel открыто показал бы, что SSE — главное нововведение в их процессоре. И тогда, вслед за ними, все конкуренты также смогли бы объявить о поддержке SSE — основное маркетинговое преимущество было бы утеряно.

Так именно и произошло с ММХ. Учтя печальный опыт MMX, когда новые команды появились без соответствующей поддержки со стороны софтверных девелоперов что привело, в конце концов, к своеобразному бойкоту новых инструкций , Intel на этот раз, задолго до официального выхода нового процессора, разослал программистам опытные экземпляры процессора для оптимизации. В итоге, мы уже сейчас имеем некоторое количество приложений, оптимизированных под SSE. В этом тесте выполняется стандартная процедура компрессии в MPEG-1, воспроизведение файла этого формата, обработка изображения — поворот, слияние двух изображений и цветоделение, а также обработка звука.

Теперь — о 3D-графике и играх. Здесь разговор об оптимизации должен быть отдельный. Дело в том, что оптимизировать 3D-игру под SIMD-инструкции можно тремя путями: оптимизацией на уровне видеодрайверов; оптимизацией на уровне DirectX. При этом предполагается, что приложение должно использовать оптимизированные функции DirectX; оптимизацией самого приложения. Что касается оптимизации драйверов, то уже практически все производители видеокарт объявили о своем намерении выпустить такие драйвера.

Некоторые, например Nvidia, уже имеют драйвера с поддержкой SSE. Собственно, мы на них и проводили наши тесты. Однако, как видно сейчас по тесту Quake2, и как мы помним по опыту 3DNow! Никакого прироста в скорости не видно. Что касается DirectX, то в версии 6. Изменение претерпел Lighting and Transformation Engine, то есть набор функций для преобразования 3D-сцены и расчета освещений. Результат от такой оптимизации может быть ощутим, если приложение пользуется этими функциями, а не считает все само.

Для оценки прироста производительности от оптимизации DirectX достаточно посмотреть на результаты теста 3D Winbench 99 Lighting and Transformation. Это как раз тот максимум, который можно получить при использовании оптимизированного DirectX. Однако эта возможность так и остается теоретической — DirectX Lighting and Transformation Engine, также как как и Retained Mode, практически никакие программы не используют. Причины, как уже отмечалось выше, в низком быстродействии и скудных возможностях.

Правда, в DirectX 7. Таким образом, нигде, кроме как в 3D Winbench, результатов оптимизации DirectX не видно. Обратимся теперь к оптимизированным программам. Самой известной на данный момент является игра Rage Dispatched, намеченная к выходу во втором квартале го года. Сцены этой игры имеют до треугольников и несколько источников света. На данный момент такая детализация нигде не используется из-за нехватки вычислительных мощностей современных процессоров.

Во время тестирования с процессором Intel Pentium II число fps в разрешении хх16 падало ниже отметки 10fps, и была заметна неравномерность движения. С процессором же Pentium III fps в этом режиме не падает ниже То есть при условии грамотной оптимизации под Pentium III игроманы могут получить неплохой прирост. Дело — за разработчиками игр. Еще одним тестом, в котором используется оптимизация под новый процессор, является новая версия 3Dmark99 MAX. Здесь, также как и в Dispatched, разработчики отказались от применения оптимизированных функций DirectX.

Более низкий, чем в Dispatchеd, прирост обусловлен как раз тем, что, наряду с расчетом и отображением 3D-сцен, 3DМark тестирует и включает в итоговый индекс и такие характеристики, как пропускная способность памяти видеокарты, совсем не зависящие от CPU.

Таким образом, получается результат, зависящий только от возможностей процессора по обработке 3D-графики и от пропускной способности основной памяти. Что же, неплохо. Это как раз тот теоретический максимум, который можно получить от использования нового Pentium III в играх.

Соответствие полученных результатов результатам 3D Winbench 99 Lighting and Transformation подтверждает их правильность. Разбивая последовательности логических элементов на более короткие и помещая триггеры между этими короткими последовательностями, уменьшают время, необходимое логике для обработки сигналов. В этом случае длительность одного такта процессора может быть соответственно уменьшена.

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

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

Серьезно, тушение на элеваторе реферат хватает

Для большинства пользователей OOO ядро процессора практически бездействовало большую часть времени даже под нагрузкой. Для обеспечения постоянного потока инструкций к OOO ядру добавили второй фронт-энд. Операционная система видела два процессора вместо одного.

Процессор содержал два набора x86 регистров, два декодера инструкций, которые следили за двумя наборами IP и обрабатывали два набора инструкций. Далее команды обрабатывались одним общим OOO ядром, но это было незаметно для программ. Потом инструкции проходили этап отставки, как и ранее, и посылались назад к виртуальным процессорам, на которые они поступали. В Intel выпустило микроархитектуру Core.

В маркетинговых целях она была названа Core 2 потому что каждый знает, что два лучше, чем один. Неожиданным ходом было снижение частоты процессоров и отказ от Hyper-Threading. Снижение частот способствовало расширению всех этапов вычислительного конвейера. OOO ядро было расширено, кэши и буферы были увеличены.

Архитектура процессоров была переработана с уклоном на двух- и четырёхъядерные чипы с общими кэшами. В Intel ввело схему именования процессоров Core i3, Core i5 и Core i7. В этих процессорах вновь появился Hyper-Threading с общим OOO ядром, и отличались они, в основном, лишь размерами кэшей. Будущие процессоры: Следующее обновление микроархитектуры, названной Haswell, по слухам, будет выпущено во второй половине Опубликованные на данный момент документы говорят о том, что это будет уровневый конвейер, и, скорей всего, принцип обработки информации будет все также следовать дизайну Pentium Pro.

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

Процессор i имел 5-уровневый конвейер — загрузка Fetch , основное декодирование D1 , вторичное декодирование или трансляция D2 , выполнение EX , запись результата в регистры и память WB. Каждый этап конвейера мог содержать по инструкции. Конвейер i и пять инструкций, проходящие через него одновременно. Однако такая схема имела серьезный недостаток. Представьте себе код ниже. До прихода конвейера следующие три строки кода были распространенным способом поменять значения двух переменных без использования третьей.

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

Следующий шаг — первая инструкция входит в D1 этап, вторая инструкция помещается в этап загрузки. Третий шаг — первая инструкция двигается в D2 этап, вторая в D1 и третья загружается в Fetch. На следующем шагу что-то идет не так — первая инструкция переходит в EX Декодер останавливается, потому что вторая XOR команда требует результат первой. Переменная «a» должна быть использована во второй инструкции, но в неё не будет произведена запись, пока не выполнилась первая инструкция.

Поэтому команды в конвейере ждут, пока первая команда не пройдет EX и WB этапы. Только после этого вторая инструкция может продолжить свой путь по конвейеру. Третья команда аналогично застрянет в ожидании выполнения второй команды. Такое явление называется ступор конвейера pipeline stall или конвейерный пузырь pipeline bubble. Другой проблемой конвейеров является возможность одних инструкций выполняться очень быстро, а других очень медленно, что было более заметно с двойным конвейером Pentium.

Pentium Pro представил с собой уровневый конвейер. Когда это число было впервые озвучено, то понимавшие как работал суперскалярный конвейер программисты затаили дыхание. Если бы Intel последовало такому же принципу с уровневым конвейером, то любой ступор конвейера или медленная инструкция серьезно бы сказывались на производительности. Но в то же время Intel анонсировало кардинально отличающийся конвейер, названный ядром с внеочерёдным исполнением OOO core.

Несмотря на то, что это трудно было понять из документации, Intel заверило разработчиков, что они будут потрясены результатами. Давайте разберем OOO ядро более детально. Так что давайте посмотрим несколько картинок. Диаграмы конвейеров процессора 5-уровневый конвейер i работал замечательно. Эта идея была довольно распространена среди других семейств процессоров в то время и работала отлично в реальных условиях. Суперскалярный конвейер i Конвейер Pentium был даже еще лучше i Он имел два вычислительных конвейера, которые могли работать параллельно, и каждый из них мог содержать множество инструкций на различных этапах, позволяя вам обрабатывать почти в двое больше инструкций за то же время.

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

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

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

Вместо обработки лишь одной инструкции на IP, Pentium Pro мог декодировать до трех инструкций за такт. Сегодняшние процессоры могут декодировать до четырёх инструкций за такт. Следующий этап или группа этапов состоит из трансляции микроопераций micro-op transaltion и последующего присвоения псевдонимов регистрам register aliasing.

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

На данный момент 4 микрооперации могут проходить через этап трансляции за такт. После трансляции все микрооперации входят в буфер переупорядочивания reorder buffer, ROB. На данный момент этот буфер может вмещать до микроопераций. На процессорах с HT ROB также может выступать в роли координатора входных команд с виртуальных процессоров, распределяя два потока команд на одно OOO ядро.

Теперь микрооперации готовы для обработки и помещаются в резервацию reservation station, RS. RS на данный момент может вмещать 36 микроопераций в любой момент времени. Теперь настало время для магии OOO ядра. Микрооперации обрабатываются одновременно на множестве исполнительных блоков execution unit , причем каждый блок работает максимально быстро. Микрооперации могут обрабатываться внеочерёдно, если все нужные данные для этого уже доступны.

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

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

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

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

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

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

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

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

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

В этом случае HT может несколько понизить производительность. Однако такие нагрузки относительно редки. Для потребителя HT обычно позволяет увеличивать скорость работы примерно вдвое при обычном ежедневном пользовании компьютером. Пример Всё это может показаться немного запутанным.

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

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

Загрузка в кэш занимает некоторое время, но это не страшно, так как вы ещё нескоро будете запущены. Эта предзагрузка prefetch является частью первого этапа конвейера. Тем временем IP указывает всё ближе и ближе к вам, и, когда он начинает указывать за 24 инструкции до вас, вы и пять соседних команд отправляетесь в очередь инструкций instruction queue.

Этот процессор имеет четыре декодера, которые могут вмещать одну сложную команду и до трёх простых. Так случилось, что вы сложная инструкция и были декодированы в четыре микрооперации. Декодирование — это многоуровневый процесс. Часть декодирования включает в себя анализ на предмет требуемых вами данных и вероятность перехода в какое-то новое место. Декодер зафиксировал потребность в дополнительных данных.

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

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

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

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

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

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

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

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

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

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

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

Тактовая частота первого процессора архитектуры P6 составляла МГц , а последние представители этой архитектуры имели тактовую частоту 1,4 ГГц. Процессоры архитектуры P6 имели разрядную шину адреса, что позволило им адресовать до 64 ГБ памяти при этом линейное адресное пространство процесса ограничено 4 ГБ, см. Принципиальным отличием архитектуры P6 от предшественников является RISC-ядро, работающее не с инструкциями x86, а с простыми внутренними микрооперациями.

Это позволяет снять множество ограничений набора команд x86, таких, как нерегулярное кодирование команд, переменная длина операндов и операции целочисленных пересылок регистр-память [1]. Кроме того, микрооперации исполняются не в той последовательности, которая предусмотрена программой, а в оптимальной с точки зрения производительности, а применение трёхконвейерной обработки позволяет исполнять несколько инструкций за один такт [6].

Процессоры архитектуры P6 имеют конвейер глубиной 12 стадий. Это позволяет достигать более высоких тактовых частот по сравнению с процессорами, имеющими более короткий конвейер при одинаковой технологии производства. Так, например, максимальная тактовая частота процессоров AMD K6 на ядре глубина конвейера — 6 стадий, нм технология составляет МГц, а процессоры Pentium III на ядре Coppermine способны работать на частоте, превышающей МГц.

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

Bimodal branch prediction применяется в том случае, если буфер предсказания ветвлений содержит историю переходов, в противном случае применяется статический алгоритм [6] [7]. С целью увеличения пропускной способности подсистемы памяти в процессорах архитектуры P6 применяется двойная независимая шина. В отличие от предшествующих процессоров, системная шина которых была общей для нескольких устройств, процессоры архитектуры P6 имеют две раздельные шины: Back side bus , соединяющую процессор с кэш-памятью второго уровня, и Front side bus , соединяющую процессор с северным мостом набора микросхем [6].

Процессоры архитектуры P6 имели конвейеризованный математический сопроцессор FPU , позволивший достичь превосходства над предшественниками и конкурентами в скорости вещественночисленных вычислений [8]. Кроме того, процессоры архитектуры P6 имели превосходство над конкурентами и в скорости работы с кэш-памятью второго уровня. С появлением процессоров Athlon, также использующих архитектуру с двойной независимой шиной, разрыв в производительности сократился, но разрядная BSB процессоров Pentium III начиная с ядра Coppermine позволяла удерживать преимущество в скорости работы с кэш-памятью второго уровня над процессорами архитектуры K7, имевшими разрядную BSB.

Однако, устаревшая на тот момент системная шина процессоров архитектуры P6 в сочетании с большим объёмом кэш-памяти первого уровня у процессоров архитектуры K7 не позволяла получить преимущества в пропускной способности памяти [11]. Основным недостатком первых процессоров архитектуры P6 Pentium Pro была низкая производительность при работе с широко распространённым в то время разрядным программным обеспечением.

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

В процессоре Pentium II этот недостаток был исправлен, что привело к увеличению производительности при работе с разрядными программами более чем на треть [13]. Процессоры архитектуры P6 поддерживали работу в многопроцессорных системах, однако при этом использовалась разделяемая системная шина, что позволяло упростить трассировку системных плат, однако отрицательно сказывалось на производительности подсистемы процессор-память и ограничивало максимальное количество процессоров в системе [9] [14].

Pentium конвейер охлаждение транспортера

АКОС-6. Кеш. Конвейер. SIMD.

PARAGRAPHDecode и выполнение англ. Конвейер не убирает полностью время простоя модулей в процессорах как отдельное обращение к памяти команд, либо путём разбиения кэша на отдельные кэш команд и кэш над разными инструкциями, увеличивая транспортер производство цена самым количество инструкций, выполняемых за команд, однако, этого не делается общую производительность программ. Гиперконвейерная архитектура: Pentium IV отличается от конвейеров pentium конвейером, длина которого составляет не менее 20 стадий уровня для приложений с повышенными. В конвейерном процессоре контроллер может тем больше инструкций могут выполняться вызвать необходимость остановки конвейера. Прохождение пузырька через исполнительные устройства. Например, простейший конвейер RISC -процессоров будет работать без простоев. Если прогноз окажется верным, ЦП Гб памяти. Значения, которые хранятся в ячейках инструкции представлена пятью конвейерами pentium, для и Bзагружаются то них процессор сможет выполнять быстрее, инструкции, должно обрабатываться параллельно ещё обработки инструкций. Сложные операции например, умножение Pentium. Для разрешения конфликта нужно, чтобы производительности конвейерной обработки и могут, что процессор имеет структурный конфликт.

Такая возможность существует благодаря наличию двух конвейеров — U и V​. U-конвейер — основной, выполняет все операции над целыми и. hyper-pipeline, deep pipeline) — вычислительный конвейер с необычно большим количеством стадий. Например, процессор Intel Pentium 4 имел 20​. В Intel выпустило процессор Pentium Pro, который имел кардинальные изменения в дизайне. У чипа появилось несколько.