Пути повышения производительности микропроцессоров
Программные инструкции обрабатываются электронными схемами. Суперскалярная архитектура, конвейерная обработка. Спекулятивное выполнение и предсказание переходов. Условный оператор в любом языке программирования и динамическое выполнение команд.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 19.05.2013 |
Размер файла | 18,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
РЕФЕРАТ
Пути повышения производительности микропроцессоров
Основные черты архитектуры EPIC
В последние несколько лет появились технологии и методы повышения производительности процессора. Разработчики потратили много усилий на развитие усовершенствований, которыми мы пользуемся каждый раз, включая компьютер. В этой части главы речь пойдет о функциях, которые увеличивают производительность современных процессоров.
Суперскалярная архитектура
Программные инструкции (команды) обрабатываются электронными схемами, называемыми операционными блоками или исполнительными устройствами. Термин суперскалярная архитектура означает одновременное использование нескольких операционных блоков, что позволяет центральному процессору выполнять несколько инструкций за один машинный такт (цикл). Например, в процессоре Pentium Pro используются два операционных конвейера (их называют «U» и «V»). Это является формой многопроцессорности внутри самого центрального процессора, поскольку несколько часто выполняемых операций выполняются параллельно несколькими устройствами. Большинство современных процессоров являются суперскалярными на том или ином уровне. За счет сочетания конвейерной обработки команд с несколькими операционными блоками в суперскалярной архитектуре центрального процессора удается достигать чрезвычайно эффективного использования каждого машинного такта.
Конвейерная обработка
Центральный процессор обрабатывает команды и генерирует результат их выполнения посредством сложных серий переключений транзисторов внутри самого кристалла процессора (также как и в случае любой другой логической микросхемы). Первые процессоры выполняли последовательно одну команду за другой. Каждая команда выбиралась из памяти и полностью выполнялась, затем выбиралась следующая команда. Обработка могла занимать несколько машинных тактов (в зависимости от команды). Простые команды могли выполняться за 2 или 3 такта, а сложные команды требовали для своего выполнения от 2 до 7 тактов.
Конвейерная обработка (командный конвейер) позволяет начинать обработку следующей команды еще до окончания выполнения текущей команды. Таким образом, центральный процессор за один машинный такт может обрабатывать несколько команд.
Иными словами, в каждый такт в конвейере могут находиться несколько команд. Конвейерный метод обработки обеспечивает загрузку операционных блоков, не занятых обработкой текущей команды. В то же время центральный процессор может выдавать в каждом такте результат обработки только одной команды.
Суперконвейер
Как было сказано выше, команды обрабатываются в конвейере, каждая часть которого выполняет определенную операцию над командой. Если сделать конвейер более длинным (увеличить количество шагов обработки команды), то на каждом шаге обработки будет выполняться меньше работы (а значит и за меньший промежуток времени) и можно будет увеличить тактовую частоту процессора. Такая технология известна под названием суперконвейера и является усовершенствованием простого конвейера. Длина суперконвейера составляет до 10 шагов. Процессоры Intel Pentium 4 используют гиперконвейер длиной в 20 шагов. Увеличение длины конвейера накладывает ограничение на программу -- чтобы исполняться наиболее эффективным образом, компиляторы должны учитывать особенности конвейерной архитектуры процессоров.
Спекулятивное выполнение и предсказание переходов
Некоторые процессоры обладают способностью одновременного выполнения нескольких команд. В ряде случаев не все результаты обработки этих команд будут использоваться, поскольку ветвление программы может привести к тому, что часть уже загруженных в конвейер команд не должна была исполняться. Такое часто наблюдается на участках программ вблизи команд условных переходов -- где проверяется некоторое условие, и дальнейшее выполнение программы зависит от проверки выполнения этого условия (условный оператор в любом языке программирования). Ветвление программы представляет реальную проблему для конвейера команд, поскольку нет гарантии в том, что программа будет далее выполняться линейно (т.е. не будет выполнена команда перехода на другую часть программы). Менее «интеллектуальные» процессоры останавливают конвейер до того момента, когда будет известен результат проверки условия ветвления программы, что приводит к падению производительности. Более совершенные процессоры будут продолжать обрабатывать конвейер команд в предположении, что выполнение программы продолжится без ветвления.
Еще более совершенные процессоры обладают способностью предсказывать ветвление программы (с достаточно хорошей точностью) на основе анализа предыдущей истории выполнения данного участка программы. Механизм предсказания программных переходов улучшает обработку ветвлений программы. При этом используется специальная небольшая кэш-память, называемая целевым буфером ветвлений. Когда процессор обрабатывает команду перехода, то он запоминает информацию о ней в этой памяти. Если процессор в следующий раз встретит эту команду перехода, то он может уже «догадаться» (на основе записанной информации) о направлении ветвления программы в этом месте. Это позволяет не останавливать конвейер и повышает производительность процессора.
Динамическое выполнение команд
программный команда переход оператор
Даже самый быстрый процессор выполняет команды в том порядке, в котором они располагаются в конкретной программе. Это означает, что неправильно или неэффективно написанная программа будет снижать производительность центрального процессора. Во многих случаях даже хорошо написанная программа ухудшается в процессе ее трансляции в машинные команды. Метод динамического исполнения позволяет процессору оценивать последовательность команд программы и «выбирать» лучшую последовательность обработки команд. Например, команда 2 может быть выполнена раньше окончания обработки команды 1. Результаты же выполнения команд располагаются в первоначальномпорядке для обеспечения правильного выполнения программы. При неграмотном написании программы такое выборочное переупорядочивание команд позволяет процессору лучше использовать свои ресурсы, что повышает его производительность.
Переименование регистров и буфера записи
Методика переименования регистров используется для организации нескольких процессов обработки команд различными операционными блоками, пытающимися использовать одни и те же регистры. Вместо того чтобы довольствоваться единственным набором регистров, используется несколько наборов регистров. Это позволяет различным операционным блокам работать одновременно, без ненужных приостановок в работе конвейера. Буфера записи используются для хранения результатов выполнения команд до тех пор, пока эти результаты не будут опять переписаны в регистры или в память. Чем больше буферов записи, тем больше команд могут выполняться без остановки конвейеров.
Многопроцессорность
Многопроцессорность -- это методика организации работы нескольких процессоров в одной системе. Идея состоит в удвоении производительности системы при использовании двух процессоров вместо одного, или повышении производительности в 4 раза при использовании 4-х процессоров и т.д. На практике дело обстоит не так просто, но в определенных условиях многопроцессорность улучшает производительность системы. Для эффективного использования многопроцессорности главный компьютер должен удовлетворять следующим требованиям:
> Поддержка со стороны системной платы. Системная плата должна располагать дополнительными процессорными разъемами для установки нескольких процессоров, а комплект микросхем должен обеспечивать управление многопроцессорной конфигурацией.
> Поддержка со стороны процессора. Процессоры должны быть приспособлены для работы в многопроцессорных системах. Для подбора соответствующих процессоров необходимо обратиться за помощью к документации на системную плату.
> Поддержка со стороны операционной системы. Многопроцессорные системы обслуживают такие операционные системы как Windows NT/2000/XP или UNIX. Windows 98 не поддерживает многопроцессорность.
Многопроцессорные компьютеры хороши для выполнения на них специального прикладного программного обеспечения. Многопроцессорный компьютер работает под управлением операционной системы, которая распределяет различные задачи по разным процессорам компьютера. Прикладные программы, написанные для многопроцессорного компьютера, должны состоять из отдельных потоков, которые могли бы выполняться независимо друг от друга. Это дает возможность операционной системе запускать их на разных процессорах одновременно и за счет этого увеличивать производительность компьютера в целом. Если же прикладное программное обеспечение не отвечает требованиям многопроцессорной системы, то такая система не даст преимущества (хотя операционная система сможет использовать дополнительные процессоры в том случае, когда необходимо выполнять несколько приложений одновременно).
Многопроцессорные системы могут быть асимметричными или симметричными. Эти термины характеризуют то, как операционная система распределяет задачи между процессорами компьютера. В асимметричных системах некоторые процессоры заняты выполнением только системных задач, а другие процессоры выполняют только прикладные программы. При жестком распределении процессоров по типам задач наблюдается снижение производительности в те периоды, когда компьютеру необходимо выполнять больше системных задач, чем прикладных или наоборот. Симметричная многопроцессор ность (SMP -- symmetric multiprocessing) позволяет на любом процессоре выполнять любые задачи -- системные или прикладные. Это более гибкий подход построения многопроцессорных систем, и он позволяет достичь большей производительности. Большинство многопроцессорных системных плат для персональных компьютеров предназначены для построения симметричных многопроцессорных систем.
Для того чтобы процессор мог работать в многопроцессорном компьютере в режиме SMP, он должен поддерживать многопроцессорный протокол, который определяет способ общения процессоров друг с другом и с системным комплектом микросхем. Процессоры Intel используют протокол SMP под названием «АР1С», а комплекты микросхем Intel, которые поддерживают многопроцессорность, разработаны для реализации этого протокола. Протокол APIC является патентованным стандартом компании Intel. Поэтому хотя процессоры AMD и Cyrix и являются совместимыми с процессорами Intel, они не могут использовать этот протокол в SMP-конфигурациях. Компании AMD и Cyrix разработали свой собственный SMP-протокол под названием «ОрепР1С».
Hyper-Threading
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-х мерных изображений и звука.
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
Архитектура EPIC (от Explicitly Parallel Instruction Computing -- обработка команд с явным параллелизмом) является развитием VLIW-архитектуры. Она была разработана совместно компаниями Intel и Hewlett-Packard (HP). Отличительной чертой EPIC-архитектуры является устранение замеченных недостатков VLIW-архитектуры, требовавших, например, включения группы пустых команд для заполнения машинных тактов, возникающих при реализации параллельного исполнения некоторых команд. Характерные особенности EPIC- архитектуры:
хорошая масштабируемость функциональных блоков процессора;
явно задаваемый параллелизм в машинном коде;
предикатное выполнение команд.
Под масштабируемостью в архитектуре компьютеров понимается возможность значительного увеличения количества каких-либо узлов, блоков, устройств с сохранением исходного режима функционирования компьютера без перенастройки оборудования и без необходимости изменения используемого программного обеспечения.
Даже небольшое изменение количества подключаемых однотипных или разнотипных устройств порождает значительные конструктивные трудности, связанные с необходимостью иметь хотя бы достаточное количество разъемов для их подсоединения. Имеются также проблемы с обеспечением всех устройств электропитанием, с распределением информационных потоков для их безостановочной деятельности, с выбором приоритетного устройства при одновременном запросе одного и того же ресурса, а также множество других проблем, связанных со значительным наращиванием количества устройств. Вместе с тем количество процессоров, входящих в состав одной вычислительной системы, уже в настоящее время исчисляется десятками тысяч. Поэтому проблеме масштабируемости в архитектуре EPIC уделяется много внимания.
Явное задание параллелизма в команде EPIC-архитектуры, как и в архитектуре VLIW, призвано упростить и, соответственно, ускорить работу процессора, а предикатное выполнение фактически превращает обработку ветвлений в параллельное выполнение нескольких линейных фрагментов программы, что избавляет конвейерную схему от проблем с очисткой и заполнением конвейера.
Размещено на Allbest.ru
Подобные документы
Ознакомление с формой записи и работой операторов условного 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, его основные концепции. Вычисления в математических задачах. Изменение порядка выполнения инструкций программы. Выполнение оператора цикла. Логические выражения, линейные алгоритмы, условные операторы.
методичка [847,6 K], добавлен 10.01.2013Цели и задачи дисциплины "Технология программирования". Программные средства ПК. Состав системы программирования и элементы языка. Введение в систему программирования и операторы языка Си. Организация работы с файлами. Особенности программирования на С++.
методичка [126,3 K], добавлен 07.12.2011Основные характеристики микропроцессоров: тактовая частота, кэш память, дополнительные инструкции, разрядность, архитектура, количество ядер. История развития микропроцессоров, главные фирмы-производители. Разработка программы работы с массивом.
курсовая работа [139,4 K], добавлен 24.06.2011Выполнение арифметических операций с помощью вспомогательных переменных, которые позволяют вычислить искомую переменную. Использование оператора цикла с предусловием и полной формы условного оператора. Примеры решения задач на работу с двумерным массивом.
курсовая работа [518,8 K], добавлен 07.03.2014