Файл: Курсовая работаПроцессор персонального компьютера. Назначение, функции, классификация процессора..pdf
Добавлен: 04.04.2023
Просмотров: 121
Скачиваний: 1
Это имеет преимущественное значение для упрощения ЦП, как с точки зрения дизайна, так и с точки зрения компонентов. Тем не менее, это также обуславливает тот недостаток, что весь процессор должен ждать своих самых медленных элементов, хотя некоторые его части намного быстрее. Это ограничение в значительной степени компенсировалось различными способами увеличения параллелизма ЦП.
Однако, только архитектурные улучшения не устраняют все недостатки глобальных синхронных процессоров. Например, тактовый сигнал подвергается задержкам любого другого электрического сигнала. Более высокие тактовые частоты во все более сложных ЦП затрудняют сохранение синхронизирующего сигнала в фазе (синхронно) по всему блоку.
Это привело к тому, что многие современные процессоры потребовали множественных идентичных тактовых сигналов, чтобы избежать задержки одного сигнала, достаточного для того, чтобы вызвать неисправность ЦП. Еще одна важная проблема, поскольку тактовые частоты резко возрастают, - это количество тепла, которое рассеивается процессором.
Постоянно изменяющиеся часы заставляют переключать многие компоненты независимо от того, используются ли они в это время. В общем, компонент, который переключается, использует больше энергии, чем элемент в статическом состоянии. Таким образом, по мере увеличения тактовой частоты происходит также рассеяние тепла, в результате чего ЦП требует более эффективных решений для охлаждения.
Один из способов обращения с ненужными компонентами называется синхронизацией часов, которая включает в себя выключение тактового сигнала для ненужных компонентов (что фактически отключает их). Однако это часто считается сложным для реализации и поэтому не видит общего использования вне конструкций с очень малой мощностью [6].
Другим методом решения некоторых проблем с глобальным тактовым сигналом является удаление тактового сигнала в целом. При удалении глобального тактового сигнала процесс проектирования значительно усложняется по многим параметрам, асинхронные (или не требующие времени) конструкции имеют заметные преимущества в потреблении энергии и рассеивании тепла по сравнению с аналогичными синхронными конструкциями.
В то время как некоторые необычные, целые процессоры были построены без использования глобального тактового сигнала. Двумя примечательными примерами этого являются ARM-совместимый AMULET и совместимый с MIPS R3000 MiniMIPS.
Вместо полного удаления тактового сигнала некоторые конструкции процессора позволяют некоторым частям устройства быть асинхронными, например, используя асинхронные ALU в сочетании с суперскалярной конвейерной обработкой для достижения некоторой арифметической производительности.
Хотя совершенно неясно, могут ли полностью асинхронные проекты работать на сравнимом или более высоком уровне, чем их синхронные аналоги, очевидно, что они, по крайней мере, превосходят более простые математические операции. Это в сочетании с их превосходным энергопотреблением и свойствами рассеивания тепла делает их очень подходящими для встроенных компьютеров.
4. Параллелизм
Описание базовой операции CPU, предлагаемой в предыдущем разделе, описывает простейшую форму, которую может принять процессор. Этот тип ЦП, обычно называемый субскалярным, работает и выполняет одну инструкцию по одному или двум частям данных за раз.
Этот процесс приводит к присущей неэффективности в субскалярных ЦП. Поскольку за один раз выполняется только одна команда, весь процессор должен дождаться завершения этой команды, прежде чем перейти к следующей инструкции. В результате подкалиберный процессор получает «зависание» по инструкциям, для выполнения которых требуется более одного тактового цикла.
Даже добавление второго исполнительного блока не улучшает производительность; вместо того, чтобы подвешивать один путь, в настоящее используются время два канала, а количество неиспользуемых транзисторов увеличивается.
Эта конструкция, в которой ресурсы выполнения ЦП могут работать только по одной команде за раз, может достигать скалярной производительности (одна инструкция за такт). Тем не менее, производительность почти всегда субскалярная (менее одной инструкции за цикл).
Попытки добиться скалярной и лучшей производительности привели к появлению различных методологий проектирования, которые приводят к тому, что ЦП будет вести себя менее линейно и более параллельно. Когда речь идет о параллельности в процессорах, для классификации этих методов проектирования обычно используются два термина.
Параллельность уровня инструкций (ILP) направлена на увеличение скорости, с которой инструкции выполняются в ЦП (то есть для увеличения использования ресурсов выполнения на диске) и целей параллелизма уровня потока (TLP) для увеличения количества потоков, которые CPU может выполнять одновременно.
Каждая методология отличается как тем, как они реализованы, так и относительной эффективностью, которую они позволяют увеличить производительность процессора для приложения. [7]
4.1 Параллельность уровня инструкций
Одним из простейших методов, используемых для достижения увеличенного параллелизма, является начало первых шагов извлечения и декодирования команд до того, как предыдущая инструкция завершит выполнение.
Это простейшая форма метода, известная как конвейерная обработка инструкций, и используется практически во всех современных ЦП общего назначения. Конвейеризация позволяет выполнять несколько команд в любой момент времени, разбивая путь выполнения на отдельные этапы.
Это разделение можно сравнить с конвейерной линией, в которой инструкция становится более полной на каждом этапе до тех пор, пока она не выйдет из конвейера выполнения и не будет удалена.
Однако, конвейеризация дает возможность для ситуации, когда результат предыдущей операции необходим для завершения следующей операции; условие, часто называемое конфликтом зависимости от данных. Чтобы справиться с этим, необходимо соблюдать дополнительную осторожность, чтобы проверить эти условия и задержать часть конвейера команд, если это произойдет.
Естественно, для этого требуется дополнительная схема, поэтому конвейерные процессоры более сложны, чем субскалярные (хотя и не очень значительно). Конвейерный процессор может стать почти скалярным, запрещенным только конвейерными стойлами (инструкция, затрачивающая более одного такта на этап).
Дальнейшее совершенствование идеи конвейерной обработки инструкций привело к разработке метода, который еще больше сокращает время простоя компонентов ЦП. Конструкции, которые, как говорят, являются суперскалярными, включают в себя длинный конвейер команд и несколько идентичных исполнительных блоков.
В суперскалярном конвейере несколько команд считываются и передаются диспетчеру, который решает, могут ли команды выполняться параллельно (одновременно). Если это так, они отправляются в доступные исполняемые модули, что приводит к одновременному выполнению нескольких команд.
В общем, чем больше инструкций, которые суперскалярный процессор может отправлять одновременно ожиданиям, тем больше инструкций будет завершено в заданном цикле.
Большая часть сложности в разработке архитектуры суперскалярного процессора заключается в создании эффективного диспетчера. Диспетчер должен иметь возможность быстро и правильно определить, могут ли команды выполняться параллельно, а также отправлять их таким образом, чтобы как можно большее количество исполнительных блоков было занято.
Это требует, чтобы конвейер команд заполнялся как можно чаще и вызывал необходимость в суперскалярных архитектурах для значительных объемов кэша процессора. Он также делает методы предотвращения опасности, такие как предсказание ветвей, спекулятивное исполнение и исполнение вне порядка, что крайне важно для поддержания высоких уровней производительности.
Путем попытки предсказать, какая ветвь (или путь) примет условная инструкция, ЦП может свести к минимуму количество раз, когда весь конвейер должен ждать завершения условной инструкции. Спекулятивное выполнение часто обеспечивает умеренное повышение производительности за счет выполнения частей кода, которые могут потребоваться или не понадобиться после завершения условной операции.
Выполнение вне порядка несколько изменяет порядок выполнения инструкций, чтобы уменьшить задержки из-за зависимостей данных.
В случае, когда часть ЦП является суперскалярной, а часть - нет, то часть, которая не подвергается штрафу за производительность из-за расписания ларьков. Первоначально Intel Pentium (P5) имел два суперскалярных ALU, которые могли принимать одну инструкцию за каждый такт, но ее FPU не мог принять одну инструкцию за такт.
Таким образом, P5 был целым суперскалярным, но не суперскалярным с плавающей запятой. Преемник Intel в архитектуре Pentium, P6, добавил суперскалярные возможности к своим функциям с плавающей запятой и, следовательно, значительно увеличил производительность команд с плавающей запятой.
Как простая конвейерная обработка, так и суперскалярная конструкция увеличивают ILP процессора, позволяя одному процессору завершить выполнение инструкций со скоростью, превышающей одну команду за цикл (IPC). [8]
Большинство современных процессоров, по крайней мере, несколько сверхскалярных, и почти все процессоры общего назначения, разработанные в последнее десятилетие, являются суперскалярными. В последующие годы некоторые из акцентов при разработке компьютеров с высоким уровнем ILP были перенесены из аппаратного обеспечения процессора и в его программный интерфейс или ISA.
Стратегия очень длинного слова инструкции (VLIW) приводит к тому, что ILP напрямую подразумевается программным обеспечением, уменьшая объем работы, которую должен выполнять процессор, чтобы повысить ILP и тем самым уменьшить сложность дизайна.
4.2 Параллельность уровня нити
Другая стратегия, обычно используемая для увеличения параллелизма процессоров, заключается в том, чтобы включить возможность одновременного запуска нескольких потоков (программ). В целом, процессоры с высоким уровнем TLP используются намного дольше, чем высоко-ILP.
Многие из проектов, разработанных Cray в конце 1970-х и 1980-х годов, были сосредоточены на TLP в качестве основного метода, позволяющего использовать огромные вычислительные возможности. Фактически, TLP в виде усовершенствований выполнения нескольких потоков использовался уже в 1950-х годах (Smotherman 2005).
В контексте проектирования с одним процессором двумя основными методологиями, используемыми для выполнения TLP, являются многопроцессорность на чипе (CMP) и одновременная многопоточность (SMT). На более высоком уровне очень часто приходится создавать компьютеры с несколькими полностью независимыми процессорами в таких устройствах, как симметричная многопроцессорность (SMP) и неравномерный доступ к памяти (NUMA). [9]
При использовании самых разных средств все эти методы достигают той же цели: увеличение количества потоков, которые CPU (ы) могут выполнять параллельно.
Методы параллелизма CMP и SMP похожи друг на друга и наиболее просты. Они подразумевают концептуальную концепцию, а не использование двух или более полных и независимых процессоров. В случае CMP несколько процессорных «ядер» входят в один и тот же пакет, иногда в одну и ту же интегральную схему. [10]
SMP, с другой стороны, включает в себя несколько независимых пакетов. NUMA несколько похожа на SMP, но использует неравномерную модель доступа к памяти. Это важно для компьютеров с большим количеством процессоров, потому что время доступа каждого процессора к памяти быстро исчерпано с использованием модели общей памяти SMP, что приводит к значительным задержкам из-за ожидающих памяти процессоров.
Таким образом, NUMA считается гораздо более масштабируемой моделью, успешно позволяя использовать еще много процессоров на одном компьютере, чем SMP может реально поддерживать. SMT несколько отличается от других улучшений TLP тем, что он пытается дублировать как можно больше частей процессора.
Несмотря на то, что стратегия TLP считается стратегией TLP, ее реализация на самом деле больше напоминает суперскалярную конструкцию, и ее часто используют в суперскалярных микропроцессорах (таких как IBM POWER5). Вместо того, чтобы дублировать весь процессор, SMT разрабатывает только дублирующие части, необходимые для извлечения, декодирования и отправки команд, а также для таких вещей, как регистры общего назначения.
Это позволяет процессору SMT поддерживать работу своих исполнительных блоков чаще, предоставляя им инструкции из двух разных потоков программного обеспечения. Опять же, это очень похоже на суперскалярный метод ILP, но одновременно выполняет команды из нескольких потоков, а не одновременно выполняет несколько инструкций из одного потока.