Способы повышения производительности процессора

Способы повышения производительности процессора

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

a) увеличением тактовой частоты;

b) расширение методов параллельной обработки данных;

c) совершенствование конвейеризации исполнения команд;

d) дублирование вычислительных средств процессора (переименование регистров);

e) предсказание переходов;

f) спекулятивное (опережающее) выполнение операций;

g) динамическое исполнение инструкций.

Второе достигается за счет:

a) иерархической организации памяти;

b) физического приближения буферной (кэш) памяти к вычислительному устройству процессора;

c) повышения тактовой частоты шины данных;

d) расширения разрядности шины данных;

e) совершенствование архитектуры (например, расслоение) основной памяти.

Аппаратура процессора ориентирована на естественный параллелизм вычислений целочисленных выражений и обработки данных в формате с плавающей точкой, привело к появлению процессоров с разнесенной архитектурой. Упрощенная структура такого процессора (рисунок 3.1), состоит из двух связанных подпроцессоров CPU и FPU, каждый из которых управляется собственным потоком команд.

CPU (Central Processing Unit) – предназначен для обработки целочисленных данных и управления всем вычислительным процессом. FPU (Floating Point Unit) – расширяет вычислительные возможности центрального процессора, выполняя арифметические операции над данными представленными в форме с плавающей точкой, вычисляя различные математические функции и т.д.

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

Конвейеризация (pipelining) предполагает разбивку выполнения каждой инструкции на микрооперации. Каждая микрооперация выполняется отдельным блоком конвейера, причем этап исполнение команды выполняется отдельным конвейером, состоящим из 5÷20 ступеней, в зависимости от модели процессора. При выполнении, инструкция продвигается по конвейеру по мере освобождения последующих ступеней. Таким образом, на конвейере одновременно может обрабатываться несколько десятков последовательных инструкций, и производительность процессора можно оценивать темпом выхода выполненных инструкций со всех его конвейеров. Конвейер «классического» процессора Pentium имеет пять ступеней (рисунок 3.2) Конвейеры процессоров с суперконвейерной архитектурой (superpipelined) имеют большее число ступеней, что позволяет упростить каждую из них и, следовательно, сократить время пребывания в них инструкций.

Суперскалярный (superscalar) процессор имеет более одного (Pentium — два) конвейера, способных обрабатывать инструкции параллельно. Pentium является двухпотоковым процессором (имеет два конвейера), Pentium Pro, Pentium 4–мультипотоковые.

Рисунок 3.2 – Конвейер суперскалярнрго процессора

Переименование регистров (register renaming)

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

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

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

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

Читайте также:  Премудрый каким способом образовано

Статический метод предсказания работает считая, что переходы по одним условиям, вероятнее всего, произойдут, а по другим — нет.

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

Исполнение по предположению, называемое также спекулятивным (speculative execution), идет дальше — предсказанные после перехода инструкции не только декодируются, но и по возможности исполняются до проверки условия перехода. Если предсказание сбывается, то труд оказывается ненапрасным, если не сбывается — конвейер оказывается недогруженным и простаивает несколько тактов.

Динамическое исполнение (исполнение с изменением последовательности инструкций) свойственное RISC-архитектуре, теперь реализуется и для процессоров х86. При этом изменяется порядок внутренних манипуляций данными, а внешние (шинные) операции ввода/вывода и записи в память выполняются, конечно же, в порядке, предписанном программным кодом. Однако эта способность процессора в наибольшей степени может блокироваться несовершенством программного кода (особенно 16-битных приложений), если он генерируется без учета возможности изменения порядка.

Источник

Микропроцессоры

и всё такое xD

Методы повышения производительности процессора

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

Программные инструкции (команды) обрабатываются электронными схемами, называемыми операционными блоками или исполнительными устройствами. Термин суперскалярная архитектура означает одновременное использование нескольких операционных блоков, что позволяет центральному процессору выполнять несколько инструкций за один машинный такт (цикл). Например, в процессоре Pentium Pro используются два операционных конвейера (их называют «U» и «V»). Это является формой многопроцессорности внутри самого центрального процессора, поскольку несколько часто выполняемых операций выполняются параллельно несколькими устройствами. Большинство современных процессоров являются суперскалярными на том или ином уровне. За счет сочетания конвейерной обработки команд с несколькими операционными блоками в суперскалярной архитектуре центрального процессора удается достигать чрезвычайно эффективного использования каждого машинного такта.

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

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

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

Как было сказано выше, команды обрабатываются в конвейере, каждая часть которого выполняет определенную операцию над командой. Если сделать конвейер более длинным (увеличить количество шагов обработки команды), то на каждом шаге обработки будет выполняться меньше работы (а значит и за меньший промежуток времени) и можно будет увеличить тактовую частоту процессора. Такая технология известна под названием суперконвейера и является усовершенствованием простого конвейера. Длина суперконвейера составляет до 10 шагов. Процессоры Intel Pentium 4 используют гиперконвейер длиной в 20 шагов. Увеличение длины конвейера накладывает ограничение на программу — чтобы исполняться наиболее эффективным образом, компиляторы должны учитывать особенности конвейерной архитектуры процессоров.

Спекулятивное выполнение и предсказание переходов

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

Читайте также:  Решение системных линейных уравнений матричным способом

Еще более совершенные процессоры обладают способностью предсказывать ветвление программы (с достаточно хорошей точностью) на основе анализа предыдущей истории выполнения данного участка программы. Механизм предсказания программных переходов улучшает обработку ветвлений программы. При этом используется специальная небольшая кэш-память, называемая целевым буфером ветвлений. Когда процессор обрабатывает команду перехода, то он запоминает информацию о ней в этой памяти. Если процессор в следующий раз встретит эту команду перехода, то он может уже «догадаться» (на основе записанной информации) о направлении ветвления программы в этом месте. Это позволяет не останавливать конвейер и повышает производительность процессора.

Динамическое выполнение команд

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

Переименование регистров и буфера записи

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

Многопроцессорность — это методика организации работы нескольких процессоров в одной системе. Идея состоит в удвоении производительности системы при использовании двух процессоров вместо одного, или повышении производительности в 4 раза при использовании 4-х процессоров и т.д. На практике дело обстоит не так просто, но в определенных условиях многопроцессорность улучшает производительность системы. Для эффективного использования многопроцессорности главный компьютер должен удовлетворять следующим требованиям:

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

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

> Поддержка со стороны операционной системы. Многопроцессорные системы обслуживают такие операционные системы как Windows NT/2000/XP или UNIX. Windows 98 не поддерживает многопроцессорность.

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

Читайте также:  7 способов ограбить бомжа компот

Многопроцессорные системы могут быть асимметричными или симметричными. Эти термины характеризуют то, как операционная система распределяет задачи между процессорами компьютера. В асимметричных системах некоторые процессоры заняты выполнением только системных задач, а другие процессоры выполняют только прикладные программы. При жестком распределении процессоров по типам задач наблюдается снижение производительности в те периоды, когда компьютеру необходимо выполнять больше системных задач, чем прикладных или наоборот. Симметричная многопроцессор ность (SMP — symmetric multiprocessing) позволяет на любом процессоре выполнять любые задачи — системные или прикладные. Это более гибкий подход построения многопроцессорных систем, и он позволяет достичь большей производительности. Большинство многопроцессорных системных плат для персональных компьютеров предназначены для построения симметричных многопроцессорных систем.

Для того чтобы процессор мог работать в многопроцессорном компьютере в режиме SMP, он должен поддерживать многопроцессорный протокол, который определяет способ общения процессоров друг с другом и с системным комплектом микросхем. Процессоры Intel используют протокол SMP под названием «АР1С», а комплекты микросхем Intel, которые поддерживают многопроцессорность, разработаны для реализации этого протокола. Протокол APIC является патентованным стандартом компании Intel. Поэтому хотя процессоры AMD и Cyrix и являются совместимыми с процессорами Intel, они не могут использовать этот протокол в SMP-конфигурациях. Компании AMD и Cyrix разработали свой собственный SMP-протокол под названием «ОрепР1С».

Intel объединила технологии гиперконвейера и многопроцессорности в одной из своих последних разработок — технологии Hyper-Threading1 (НТ). Процессоры с использованием НТ ведут себя как два независимых процессора. При этом они могут параллельно выполнять два потока команд за счет большой длины конвейера. Конечно, при этом производительность процессора не удваивается, но за счет сокращения простоя отдельных блоков процессора удается поднять производительность не менее чем на 30-40%, что дает существенный прирост в многозадачной среде. Следует заметить, что использование НТ может и снизить производительность, если оба виртуальных процессора будут все время конкурировать за исполнительные устройства единственного физического процессора. В частности, в некоторых случаях использование НТ может снизить производительность Microsoft SQL Server.

С увеличением количества мультимедийных программ (графических приложений, презентаций и т.п.) для проведения интенсивных вычислений стало не хватать пропускной способности процессора. Возникла потребность в увеличении скорости выполнения некоторых вычислительных операций, необходимых для выполнения мультимедийных и коммуникационных приложений. В то время как эти операции составляют не более 10% объема программы, их выполнение занимало до 90% времени. Компании Intel и AMD стали состязаться в создании лучших «мультимедийных расширений» для своих процессоров.

ММХ. В 1996 году компания Intel ввела в процессоры семейства Pentium (назвав их «Pentium ММХ») реализацию 57 новых команд, назвав их мультимедийными расширениями (ММХ — multimedia extensions). ММХ-команды обрабатывают несколько элементов целочисленных данных параллельно, используя метод под названием «одна команда — много данных» (SIMD — Single Instruction Multiple Data). С помощью этой технологии процессор может обрабатывать одновременно большое количество данных, за счет чего уменьшается время обработки видео и звуковой информации, присутствующей в мультимедийных приложениях. Следующие модели процессоров Intel (Pentium I I/I I I/I V и Celeron) также поддерживают обработку набора ММХ^команд. Команды ММХ наиболее эффективны при обработке 2-х мерных изображений и звука.

Источник

Оцените статью
Разные способы