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

Обновлено: 05.07.2024

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

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

- разгонять процессор нужно постепенно;

- ни в коем случае не пренебрегать охлаждением процессора;

- после разгона процессора необходимо протестировать стабильность работы ПК с различными программами.

Скорость выполнения операций процессора определяется следующим соответствием:

Скорость процессора = скорость (тактовая частота)

системной шины * множитель частоты

Поэтому его совместную тактовую частоту можно повысить тремя способами:

- увеличить множитель частоты;

- увеличить скорость системной шины;

- увеличить и скорость системной шины, и множитель.

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

- изменяйте частоту системной шины не белее чем на 10 МГц за одну итерацию;

- не изменяйте множитель частоты за одну итерацию на величину, большую единицы;

- после каждого изменения параметров системы перезагружайте ПК и убеждайтесь, что Windows загружается без проблем;

- дойдя до такой скорости, при которой Windows не загружается, вернитесь к предыдущему значению скорости (уменьшение скорости также проводите постепенно);

- определив необходимую скорость работы процессора и, перезагрузив компьютер, проведите тестирование системы на предмет стабильной ее работы.

Аппаратное и программное управление разгоном

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

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

Тестирование стабильности работы

Особенности разгона процессоров AMD и INTEL

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

Для определения температуры применяются специальные датчики, например LM75 от компании National Semiconductor, которые размещаются под процессором или рядом с ним. (Это реализовано только в новых материнских платах). В основу работы этих датчиков положено свойство некоторых металлов изменять электрическую проводимость при изменении температуры.

Но если процессор нагружается не полностью, то специальные утилиты, такие как CPUIdle, Rain или Waterfall, могут переводить неиспользуемые части процессора в режим экономии энергии. Понижая таким способом энергопотребление, можно достичь того, что процессор значительно дольше не будет нагреваться.

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

Список использованной литературы:

Раздел: Информатика, программирование
Количество знаков с пробелами: 49482
Количество таблиц: 0
Количество изображений: 0

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

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 19.05.2013
Размер файла 18,2 K

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Пути повышения производительности микропроцессоров

Основные черты архитектуры EPIC

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

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

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

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

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

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

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

программный команда переход оператор

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

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

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

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

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

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

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

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

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

3DNow. Компания AMD также сочла необходимым улучшить мультимедийные возможности своих процессоров. Но вместо того, чтобы сосредоточить основное внимание на командах обработки 2-х мерных изображений (как это сделала компания Intel в расширении ММХ), компания AMD разработала 21 команду для обработки 3-х мерных изображений, которые существенно увеличили производительность процессоров при обработке 3-х мерных изображений (а также декодировании MPEG-файлов). Компания AMD создала набор мультимедийных команд (под названием 3DNow) в 1998 году на 9 месяцев раньше выхода набора команд SSE компании Intel. Поскольку компания AMD опередила Intel в этой области, то компьютеры с процессорами AMD Кб, К6-2, Athlon и Duron, использующими набор команд 3DNow, стали заманчивой перспективой для выполнения на них игровых программ и приложений, работающих с 3-х мерной графикой.

SSE и SSE-II. К 1999 году компания Intel обновила свой набор мультимедийных команд и разработала новый под названием SSE (Streaming SIMD Extensions -- потоковые расширения SIMD), предназначенный для процессоров Pentium III. Набор команд SSE основан на командах ММХ, и содержит 70 новых команд, которые более эффективно обрабатывают числа с плавающей точкой, что значительно повышает производительность обработки 3-хмерной графики. Этот набор обеспечивает потоковую обработку видео и звуковой информации, распознавание речи, в него также добавлены несколько функций, предназначенных для организации работы в сети Интернет. Для процессоров Pentium 4 были разработаны 144 новые мультимедийные команды, объединенных в набор под названием SSE-II.

Архитектура EPIC (от Explicitly Parallel Instruction Computing -- обработка команд с явным параллелизмом) является развитием VLIW-архитектуры. Она была разработана совместно компаниями Intel и Hewlett-Packard (HP). Отличительной чертой EPIC-архитектуры является устранение замеченных недостатков VLIW-архитектуры, требовавших, например, включения группы пустых команд для заполнения машинных тактов, возникающих при реализации параллельного исполнения некоторых команд. Характерные особенности EPIC- архитектуры:

хорошая масштабируемость функциональных блоков процессора;

явно задаваемый параллелизм в машинном коде;

предикатное выполнение команд.

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

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

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

Подобные документы

Ознакомление с формой записи и работой операторов условного if (если) и безусловного а goto (идти к) переходов как способами организации ветвления в программе. Изучение оператора выбора альтернативы - switch (переключатель). Использование функции default.

лабораторная работа [72,0 K], добавлен 15.07.2010

Организация современного микропроцессора. Кэш инструкций в традиционных процессорах. Предсказание адреса и направления переходов. Выборка и декодирование инструкций. Intel Pentium III, Pentium M и Core Duo, AMD Athlon 64/Opteron (K8), IBM PowerPC 97027.

контрольная работа [235,5 K], добавлен 11.01.2012

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

реферат [74,6 K], добавлен 13.02.2012

Классификация параллельных ВС. Системы с общей и распределенной памятью. Конвейеры операций. Производительность идеального конвейера. Суперскалярные архитектуры. VLIW-архитектура. Предсказание переходов. Матричные процессоры. Законы Амдала и Густафсона.

курсовая работа [810,9 K], добавлен 03.10.2008

Рассмотрение принципов работы операторов, реализующих циклические алгоритмы: while (выполнение условия, пока заданное выражение истинное), do-while, for, break (прекращение работы из-за обнаружения ошибки), continue (пропуск "оставшейся" части итерации).

лабораторная работа [54,2 K], добавлен 15.07.2010

курс лекций [692,5 K], добавлен 23.11.2009

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

Производительность является одной из наиболее важных характеристик процессора. Согласно /1/, в общем случае она определяется количеством вычислительной работы, выполняемой в единицу времени. К важнейшим факторам, влияющим на производительность, относятся тактовая частота, число команд программы, среднее время выполнения отдельной команды. Для упрощённой оценки производительности процессора часто используют показатель, указывающий число команд, выполняемых за секунду КС (команд за секунду). КС определяется как частное от деления тактовой частоты на среднее время выполнения процессором отдельной команды и измеряется в MIPS (Meg Insruction Per Second) для целочисленных задач и MFLOPS (Meg Floating Point Operations Per Second) для вычислений с плавающей точкой. При этом оценки показателя КС проводят для операций с регистровыми операндами, не привязываясь к быстродействию основной памяти. Однако показатель КС не учитывает особенности архитектуры конкретных процессоров. Поэтому для сравнительных характеристик различных процессоров используются относительные оценки производительности, для получения которых используются специальные тестовые программы.

В соответствии с /1/, повышение производительности процессоров в большинстве случаев достигается за счёт применения специальных технологических и архитектурных решений. Технологические подходы (совершенствование технологий производства ИС, увеличение степени интеграции) были рассмотрены ранее, во второй лекции. Поэтому подробнее остановимся на архитектурных способах повышения производительности процессоров. Совершенствование архитектуры процессоров, обеспечивающее повышение его производительности, в настоящее время связано, прежде всего, с развитием средств параллельной обработки данных. Здесь можно выделить следующие направления:

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

3) Многоэлементная обработка данных - параллельная обработка данных в нескольких операционных блоках (ОУ) процессора.

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

Рассмотрим более детально два последних направления.

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

Рисунок 4.3 – Многофазная обработка данных

Между фазами имеются буферы для хранения промежуточных результатов. После выполнения первой фазы результат запоминается в буфере и начинается обработка второй фазы. Средства выполнения первой фазы освобождаются, и на них поступает следующая порция данных. Если длительность фаз обработки одинакова и составляет T/n, то при таком способе производительность системы увеличится в n раз. Этот способ соответствует конвейерной обработке.

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

Типовые этапы выполнения команды: 1) выборка команды IF (Instruction Fetch), 2) дешифрация команды ID (Instruction Decode), 3) чтение операндов RD (Read Memory), 4) исполнение заданной в команде операции EX (Execute), 5) запись результата WB (Write Back). В ходе выполнения команда продвигается по конвейеру, освобождая очередную ступень для следующей команды. Содержимое буферов, которые используются для хранения информации, передаваемой по ступеням конвейера, обновляется в каждом такте по завершению этапа исполнения очередной команды. Промежуточные буферы обеспечивают параллельную независимую работу блоков конвейерной цепочки: в то время, когда последующий блок начинает выполнять этап очередной команды, предыдущий блок может приступать к обработке следующей команды, что демонстрирует рисунок 4.4.

Такты работы процессора
Команда i IF ID RD EX WB
Команда i+1 IF ID RD EX WB
Команда i+2 IF ID RD EX WB
Команда i+3 IF ID RD EX WB
Команда i+4 IF ID RD EX WB
Команда i+5 IF ID RD EX WB

Рисунок 4.4 – Конвейерная обработка команд

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

Процессор, в котором процесс выполнения команды разбивается на 5-6 ступеней, называется обычным конвейерным процессором. Если увеличить количество ступеней конвейера, то каждая отдельная ступень будет выполнять меньшую работу, а, следовательно, содержать меньше аппаратной логики. Благодаря более коротким задержкам распространения сигналов в каждой отдельно взятой ступени конвейера достигается повышение частоты работы и соответствующее повышение производительности процессора. Процессор, имеющий конвейер существенно глубже 5-6 ступеней, называется суперконвейерным. Например, Pentium II содержит 12 ступеней, UltraSPARC III – 14 ступеней, Pentium 4 – 20 ступеней.

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

Рисунок 4.5 – Многоэлементная параллельная обработка данных

Если время выполнения работы на отдельном элементе составляет T и в системе используется n элементов, то при определённой идеализации можно ожидать, что среднее время выполнения такой работы составит T/n (реально - меньше). В современных процессорах такой способ обработки связан с понятием суперскалярной архитектуры.

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

A = B + C; D = E + F.

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

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

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

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

Всё время существования вычислительных машин, начиная ещё с арифмометров, создатели всегда хотели их ускорить. Какими способами у них это получалось и получается? Разумеется, никакого основного метода увеличить скорость вычислений нет, одновременно применяются почти все из до сих пор найденных. Поэтому для классификации потребуется разделение на качественные (интенсивные) и количественные (экстенсивные) ускорения. Разделение весьма условное — чёткой границы между методами повышения производительности нет, да и внутри себя они тоже делятся на разные подклассы. Т.к. за обработку данных отвечает один или несколько центральных процессоров (ЦП), а производительность является его/их главной характеристикой — большинство способов так или иначе касаются именно этой части системы. Заранее предупредим, что под процессором мы понимаем микросхему с корпусом и выводами, вставленную в разъём (сокет).

Первое разделение относится к числу процессоров: качественные методы предполагают ускорение работы ЦП при неизменном его/их количестве, количественные — наращивание числа ЦП с целью сложить их усилия. Многопроцессорные архитектуры применяются, когда другие способы уже внедрены и более не эффективны, и при должном умении инженеров и программистов дают отличный результат (если, конечно, задача хорошо распараллеливается) — совокупная производительность системы растёт почти линейно числу процессоров благодаря тщательно слаженной синхронизации взаимодействий вычислительных узлов. В последних выпусках рейтинга самых быстрых суперкомпьютеров планеты Top500 почти все машины используют кластерную архитектуру, основанную на концепции массового параллелизма (MPP, massively parallel processing). В этих вычислительных монстрах, занимающих целые залы, одновременно работают десятки, а скоро, возможно, и сотни тысяч процессоров.


Для ускорения таких систем применяется два способа — численно увеличить число узлов (вплоть до десятков тысяч) и ускорять сами узлы. Уже по цифрам видно, что для суперкомпьютеров первый способ — основной, но жрущие мегаватты и шумящие вентиляторами шкафы домашнему пользователю не подойдут. Так что не менее важной задачей будет ускорение системы, не приводящее к линейному увеличению её физических размеров. Самый очевидный (количественный) способ — нарастить число ЦП в пределах системного блока и платы. Качественно же (потому что это сложнее) требуется наращивать число вычислительных ядер внутри одного ЦП — что активно происходит и в персональных компьютерах. Наращивать можно, устанавливая несколько 1-ядерных чипов в один корпус, или делая чип с несколькими ядрами. Возможны и комбинации — 4-ядерные ЦП Intel Core 2 Quad имеют два 2-ядерных чипа. Более тесное расположение ядер имеет плюсы и минусы. Достоинства — умещается больше ядер на единицу физического объёма системы, возможен быстрый обмен данными между ядрами через внутрипроцессорные шины и общую кэш-память. Недостатки — у ядер есть общие конкурентно разделяемые ресурсы (кэши, контроллёры шин и памяти), многоядерные ЦП больше потребляют энергии и больше греются (а отвести сотни ватт с микросхемы — дело непростое, особенно, когда процессоров несколько), у однокристальных многоядерных ЦП меньше частотный потолок (максимальная частота, на которой надёжно заработает самая быстрая микросхема среди всех себе подобных) из-за отсутствия возможности согласовать характеристики нескольких ядер (а вот отдельные чипы согласовать можно). Несмотря на сложности, количественное усиление параметров системы размножением её компонентов практикуется давно: есть RAID-массивы для винчестеров, 2-3 видеокарты в одной упряжке и многомониторные конфигурации, 2-3-канальные контроллёры памяти — уместно добавить сюда и пару многоядерных процессоров.

Увеличение частоты достижимо двумя способами. Физически: уменьшая проектные нормы, т.е. минимальные размеры проводников и транзисторов на чипе — за счёт этого последние работают быстрее и потребляют меньше энергии (это главная причина, почему в своё время мир отказался от ТТЛ- и ЭСЛ-семейств логики в пользу КМОП — у тех при уменьшении размеров таких масштабных приемуществ не было). И архитектурно: увеличивая частотный потолок разделением процессора на отдельные стадии, т.е. организацией вычислительного конвейера. А если он уже есть — увеличением числа этих стадий.


Впрочем, десяти и более стадий мы бы не увидели ни в одном процессоре, если бы не прозорливое решение Intel совместить коня и трепетную лань — быструю, но сложную для программирования архитектурную модель RISC с удобной, но медленной парадигмой CISC. Получившийся процессор, а это был Pentium Pro, имел внутренний декодер, транслирующий внешнюю CISC-команду набора x86 в одну или несколько внутренних RISC-подобных микроопераций (мопов) — они и путешествуют далее по конвейеру до исполнения. (Справедливости ради — в 1994 г., за год до PPro вышел NexGen Nx586 с почти таким же внутренним устройством, после чего NexGen была куплена AMD, и через 2 года вышел первый K5.) Более простые команды проще подготавливать и исполнять, но их самих требуется больше для реализации алгоритма. Тем не менее, получаемое частотное ускорение того стоит, хотя такой шаг можно сделать лишь раз: дальнейшее разбиение мопов на ещё более простые операции уже невозможно, поэтому это улучшение качественное, а не количественное.

Производительность за такт характеризуется двумя взаимно обратными величинами — среднее число тактов для выполнения одной команды (clocks per instruction, CPI) и среднее число выполненных за такт команд (instructions per clock, IPC). До появления суперскалярных ЦП главным способом ускорения помимо частотной гонки было уменьшение CPI (или увеличение IPC, хотя такой термин ещё не применялся за ненадобностью). Это можно отвести к качественному улучшению, т.к. главный способ один — вместо размножения или разгона имеющихся структур добавляются новые, аппаратно (т.е. быстрее) вычисляющие то, что ранее неспешно делалось в блоках общего назначения.

У 386-го процессора удвоили очередь предзагрузки команд (prefetch queue) до 12 байт, расширили до 3 байт разрядность декодера, добавили после него буфер микрокоманд (теперь это ЦП с 3-стадийным конвейером), и заменили последовательный регистр сдвига параллельным (barrel shifter, производит любой вид сдвига на любое число бит за фиксированное время). 486-й наделён конвейерным исполнением, встроенным вещественным блоком, буфером записи и внутренним кэшем L1 (тот, что на плате, теперь L2). 486DX2 получил возможность кэшировать в L1 запись (write-back, не во всех моделях), а 486DX4 — удвоенный кэш и матричный умножитель (правда, пока только целочисленный и половинной разрядности — 16·16). Все подобные улучшения продолжаются до сих пор — например, до появления архитектур AMD К10 и Intel Core 2 процессоры выполняли арифметические команды над векторными вещественными данными с темпом 2 такта — векторные АЛУ и умножители там половинной, 64-битной ширины, а у К10 и Core 2 они стали полноразрядными.

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

Главный такой костыль — внеочередное исполнение (Out-of-order execution, OoOE или OOO): мопы накапливаются в специальном перетасовочном буфере (reorder buffer, ROB) и считываются оттуда уже не в указанном программой порядке, а в произвольном при появлении возможности одновременного исполнения. Т.к. буфер вмещает десятки мопов, этого хватит на 3-4 запускаемые за такт команды, даже далеко стоящие друг от друга (если они уже считаны и декодированы). Особенно хорошо OOO работает с ещё одним механизмом улучшения — переименование регистров удаляет ложные взаимозависимости по операндам последующих команд от предыдущих. Однако и это пока не позволяет поднять IPC свыше 4-х. Отчасти потому, что мопов больше, чем команд, так что считывая 4 команды, мы получаем 5-10 мопов, для хранения и исполнения которых потребуется такое же количество свободных ресурсов каждый такт. Поэтому придумана схема слияния (fusion), позволяющая объединять на время предварительной подготовки пару команд (пока пару, но вполне возможно, что больше ни у кого не получится). Для мопов это микрослияние: декодер генерирует слитые мопы, которые при распределении запускаются в пару разных ФУ, выполняя там разные операции, что экономит число занятых мопами конвейерных шин и ячеек буферов. Для внешних команд это макрослияние: декодер трактует некоторые пары команд как одну, генерируя для неё 1 моп (возможно, тоже слитый), что в редких случаях также поднимает IPC.

Но и эти методы недостаточны, когда происходят такие рушащие производительность события, как неверно предсказанный переход, кэш-промах (запрошенная информация не закэширована), долго исполняющаяся команда и т.п. — при заторе в одной стадии остальные ждут, пока нужный ресурс станет доступным. Тогда между стадиями добавляют многочисленные буферы и очереди, сглаживающие разницу в производительности отдельных этапов и поддерживающие на плаву весь конвейер первые несколько тактов после фатального затора. А дальше всё равно надо откуда-то брать команды и данные. И если с текущей программой мы ничего сделать не сможем, пока не рассосётся затор, — может, переключимся на другую, раз уж все процессоры многозадачные?


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

По числу пунктов выше видно, что добавление дополнительных наборов команд — один из основных методов увеличения скорости ЦП. Уже сейчас общее число команд в архитектуре x86 перевалило за 1000, что привело к исключительному усложнению декодеров и ФУ, а также к сильному затруднению программирования и оптимизации на ассемблере. Тем не менее, Intel (а именно она ввела подавляющее большинство таких наборов) продолжает снабжать новые процессоры очередными видами инструкций, заставляя то же самое делать и конкурента.


Предсказать ветвления технической мысли инженеров, архитекторов и микроэлектронщиков, пытающихся найти очередной способ ускорить процессор — задача не проще, чем самому ЦП предсказать ветвления в исполняемой программе с 99%-ной точностью. Тем не менее, если посмотреть с высоты на историю методов ускорения вычислений, замечается любопытная закономерность: сначала некий способ появляется в больших машинах — мэйнфреймах и суперкомпьютерах, где он проверяется и оттачивается. Затем, благодаря прогрессу в микроэлектронике, то, что ранее занимало шкафы и залы, стало возможным уместить на одну плату, потом в корпус процессора, а затем и на его чип. Конвейеры, кэши, суперскалярность, ОOО, SIMD и остальное — всё это родом из 60-80-х. Надо полагать, что подобное будет происходить и далее — просто посмотрим на сегодняшние суперкомпьютеры и постараемся через 10-20 лет сделать то же самое в одной микросхеме. Однако тут ждёт неожиданная развязка — большинство мощнейших компьютеров планеты сегодня сами основаны на архитектуре x86. Просто она оказалось столь успешной и универсальной, так быстро вобрала в себя всё лучшее от конкурентов, что, наоборот, это суперкомпьютеры теперь делаются на архитектуре, изначально созданной для персоналок. Фактически, вычислительная техника, сделав полный круг, упёрлась сама в себя.

Конвейеры операций могут быть синхронными и асинхронными. Если для выполнения этапа выделено одно и то же время tт, то такой конвейер называется синхронным. Время tт называется тактом процессора и равно продолжительности самого длинного этапа. Продолжительность i-го этапа Если процессор имеет отдельную аппаратуру для выполнения каждого этапа, то эту аппаратуру можно соединить в обрабатывающую… Читать ещё >

Методы повышения производительности работы процессора ( реферат , курсовая , диплом , контрольная )

Конвейеризация (конвейер операций)

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

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

— продолжительность i-го этапа Если процессор имеет отдельную аппаратуру для выполнения каждого этапа, то эту аппаратуру можно соединить в обрабатывающую линию и получить конвейер операций.

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

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

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

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

Пусть процесс выполнения команд разбит на 5 этапов. Тогда временная диаграмма имеет следующий вид:

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

На временной диаграмме одинаковыми символами помечены разные этапы рабочего цикла одной и той же команды. Всего команд на диаграмме 7. Эти 7 команд выполняются за 11 тактов на конвейере или за 35 тактов при последовательном методе выполнения команд, т. е. при отсутствии конвейера (16, "https://referat.bookap.info").

Таким образом, рост производительности не менее, чем в К раз и не более, чем в К раз. 2.

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

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

Читайте также: