Здравствуйие! Я хочу пройти курс Введение в принципы функционирования и применения современных мультиядерных архитектур (на примере Intel Xeon Phi), в презентации самостоятельной работы №1 указаны логин и пароль для доступ на кластер и выполнения самостоятельных работ, но войти по такой паре логин-пароль не получается. Как предполагается выполнение самосоятельных работ в этом курсе? |
Обзор архитектуры современных многоядерных процессоров
Одновременная многопотоковость
Организация симметричной мультипроцессорности позволяет достаточно легко увеличивать производительность вычислительных устройств. Однако такое решение при увеличении числа процессоров обладает плохой масштабируемостью из-за проблем с обеспечением когерентности кэш-памяти разных процессоров – SMP системы содержат, как правило, 2 или 4, реже – 8 и совсем редко – большее количество процессоров. Кроме того, такой подход является сравнительно дорогим решением за счёт дорогой реализации компонент (требуются сложные и дорогие материнские платы для размещения нескольких процессоров).
С другой стороны, проанализировав эффективность современных сложных процессоров, насчитывающих в своем составе десятки и сотни миллионов транзисторов, можно обратить внимание на то, что при выполнении большинства операций оказываются полностью задействованными не все составные компоненты процессоров (по имеющимся оценкам, средняя загрузка процессора составляет всего лишь около 30%). Так, если в данный момент времени выполняется операция целочисленной арифметики, то блок процессора для выполнения вещественных операций окажется простаивающим. Для повышения загрузки процессора можно организовать спекулятивное (опережающее) исполнение операций, однако воплощение такого подхода требует существенного усложнения логики аппаратной реализации процессора. Было бы гораздо проще, если бы в программе заранее были предусмотрены последовательности команд (потоки), которые могли быть выполнены параллельно и независимо друг от друга. Такой подход тем более является целесообразным, поскольку поддержка многопоточного исполнения может быть обеспечена и на аппаратном уровне за счет соответствующего расширения возможностей процессора (и такая доработка является сравнительно простой).
Данная идея поддержки одновременной многопоточности (simultaneous multithreading, SMT) была предложена в 1995 г. в университете Вашингтона Дином Тулсеном (Dean Tullsen) и позднее активно развита компанией Intel под названием технологии гиперпоточности (hyper threading, HT). В рамках такого подхода процессор дополняется средствами запоминания состояния потоков, схемами контроля одновременного выполнения нескольких потоков и т. д. За счет этих дополнительных средств на активной стадии выполнения может находиться несколько потоков; при этом одновременно выполняемые потоки конкурируют за исполнительные блоки единственного процессора, и как результат выполнение отдельных потоков может блокироваться, если требуемые в данный момент времени блоки процессора оказываются уже задействованными. Как правило, число аппаратно-поддерживаемых потоков равно 2, в более редких случаях этот показатель достигает 4 и даже 8. Важно при этом подчеркнуть, что аппаратно-поддерживаемые потоки на логическом уровне операционных систем Linux и Windows воспринимаются как отдельные процессоры, т. е., например, единственный процессор с двумя аппаратно-поддержи¬ваемыми потоками в менеджере Task Manager операционной системы Windows диагностируется как два отдельных процессора.
Использование процессоров с поддержкой многопотоковости может приводить к существенному ускорению вычислений (важно отметить – при надлежащей реализации программ). Так, имеется большое количество демонстраций, показывающих, что на процессорах компании Intel с поддержкой технологии гиперпоточности достигается повышение скорости вычислений около 30%.
Стоит заметить, что одновременная многопотоковость не всегда положительно сказывается на производительности. При использовании многопоточности несколько программных потоков делят ресурсы одного вычислительного ядра, поэтому для высокопроизводительных приложений (где потоки выполняют однотипные вычисления и конкурируют за ресурсы ядра) эта технология часто сказывается негативно. Выигрыш от использования одновременной многопотоковости может достигаться, если на одном ядре выполняются потоки разнотипных приложений (например, просмотр почты и проигрывание музыки), если на одном ядре выполняется несколько потоков с интенсивным вводом-выводом и пр.
Многоядерность
Технология одновременной многопоточности позволяет достичь многопроцессорности на логическом уровне. Еще раз отметим, что затраты на поддержку такой технологии являются сравнительно небольшими, но и получаемый результат достаточно далек от максимально-возможного – ускорение вычислений от использования многопоточности оказывается равным примерно 30%. Дальнейшее повышение быстродействия вычислений при таком подходе по-прежнему лежит на пути совершенствования процессора, что – как было отмечено ранее – требует решения ряда сложных технологических проблем.
Возможное продвижение по направлению к большей вычислительной производительности может быть обеспечено за счёт реализации в единственном кремниевом кристалле несколько вычислительных ядер в составе одного многоядерного процессора, при этом по своим вычислительным возможностям эти ядра не уступают обычным процессорам.
Кроме того, можно пойти по пути возврата к более "простым" процессорам с более низкой тактовой частотой и с менее сложной логикой реализации! Такой неординарный ход приводит к тому, что процессоры становятся менее энергоемкими5Проблема энергопотребления является одной из наиболее сложных для процессоров с высокой тактовой частотой. , более простыми для изготовления и как результат – более надежными. А также – что является чрезвычайно важным – "простые" процессоры требуют для своего изготовления меньшее количество логических схем, что приводит к освобождению – в рамках кремниевого кристалла, используемого для изготовления процессоров, – большого количества свободных транзисторов. Эти свободные транзисторы, в свою очередь, могут быть использованы для реализации дополнительных вычислительных устройств, которые могут быть добавлены к процессору6Подобный подход реализован во многих сопроцессорах, часть из которых будет рассмот-рена далее. .
Поясним сказанное на примере рис. 1.3. В центре рисунка (1.3,б) приведены показатели исходного процессора, принятые за 1 для последующего сравнения.
Рис. 1.3. Демонстрация зависимости между тактовой частотой, энергопотреблением и производительностью процессора
Пусть для повышения быстродействия процессора его тактовая частота увеличена на 20% (см. рис. 1.3, а ), тогда производительность процессора увеличится – однако не на 20%, а, например, на 13% (приводимые здесь числовые значения имеют качественный характер), в то время как энергопотребление возрастет существенно – в приведенном примере на 73%. Данный пример является на самом деле очень характерным – увеличение тактовой частоты процессора приводит в большинстве случаев к значительному росту энергопотребления. Теперь уменьшим тактовую частоту процессора – опять же на 20% (см. рис. 1.3, в ). В результате снижения тактовой частоты производительность процессора, конечно, уменьшится, но опять же не на 20%, а примерно на ту же величину 13% (т. е. станет равной 87% от производительности исходного процессора). И опять же, энергопотребление процессора уменьшится, причем достаточно значительно – до уровня примерно 51% энергопотребления исходного процессора. И тогда, добавив в процессор второе вычислительное ядро за счет появившихся свободных транзисторов, мы можем довести суммарные показатели процессора по энергопотреблению до уровня 1.02 энергопотребления исходного процессора, а производительность – до уровня 1.73!!!
На логическом уровне архитектура многоядерного процессора соответствует практически архитектуре симметричного мультипроцессора (рис. рис. 1.2 и рис. 1.4). На рис. 1.4 приведена возможная архитектура двуядерного процессора – различия для разных многоядерных процессоров могут состоять в количестве имеющихся ядер и в способах использования кэш-памяти ядрами процессора – кэш-память может быть как общей, так и распределенной для разных ядер. Так, на рис. 4 кэш-память первого уровня L1 локальна для каждого ядра, в то же время кэш-память всех последующих уровней и оперативная память является общей.
Как следует из проведенного рассмотрения, многоядерность позволяет повышать производительность процессоров, и данный подход обладает целым рядом привлекательных моментов (уменьшение энергопотребления, снижение сложности логики процессоров и т. п.). Все сказанное приводит к тому, что многоядерность становится одним из основных направлений развития компьютерной техники.
Значимость такого подхода привела даже к тому, что известный закон Мура теперь формулируется в виде "Количество вычислительных ядер в процессоре будет удваиваться каждые 18 месяцев". Стоит отметить, что удвоение числа ядер не приводит к мгоновенному увеличению производительности, т.к. требуется время для разработки алгоритмов способных эффективность использовать эти ядра. В настоящее время для массового использования доступны двух-, четырех-, шести- и восьми- ядерные процессоры. В научно-технической литературе наряду с рассмотрением обычных многоядерных (multi-core) процессоров начато широкое обсуждение процессоров с массовой многоядерностью (many-core), когда в составе процессоров будут находиться сотни и тысячи ядер!
И в заключение следует отметить еще один принципиальный момент – потенциал производительности многоядерных процессоров может быть задействован только при надлежащей разработке программного обеспечения – программы должны быть очень хорошо распараллелены. А, как известно, сложность разработки параллельных программ значительно превышает трудоемкость обычного последовательного программирования. Тем самым проблема обеспечения высокопроизводительных вычислений перемещается теперь из области компьютерного оборудования в сферу параллельного программирования. И здесь нужны новые идеи и перспективные технологии для организации массового производства параллельных программ.