Преимущества многоядерной структуры процессора
За последнее десятилетие удельная производительность процессоров в пересчете на число транзисторов упала на один-два порядка. Дальнейшее развитие полупроводниковых технологий в соответствии с законом Мура не может компенсировать неэффективность современных процессоров. Диспропорцию между числом транзисторов на кристалле и удельной производительностью, которая выражена в скорости выполнения, отнесенной к площади, иногда называют "дефицитом Мура" (Moore Gap). Показатели быстродействия процессоров (в частности, частоты) достигли практически граничных показателей, плотность энергии увеличивается пропорционально уменьшению размеров транзисторов, и, соответственно, увеличиваются проблемы с отводом тепла.
Нетрудно прийти к выводу, что если нельзя использовать возможности закона Мура на одном ядре из-за исключительной сложности такого ядра, то следует пойти по пути увеличения числа ядер.
Под ядром понимается весь объем аппаратуры, необходимый для выполнения одной программы (или потока - в терминах объектов операционной системы). Таким образом, ядро это эквивалент того, что ранее называлось процессором, а под процессором подразумевается не что иное как одна микросхема. Процессор в таком случае рассматривается только как конструктивный компонент компьютера. Процессоры могут быть как одноядерными, так и многоядерными. Количество ядер в оном процессоре определяется многими факторами, в том числе и требуемой производительностью компьютера.
Однако реализовать в одном процессоре n ядер и получить в n раз большую производительность компьютера не реально. Все значительно сложнее — результат будет зависеть от используемого приложения и его оптимизации к многоядерному процессору. Чтобы приложение могло одновременно задействовать несколько процессорных ядер, оно должно хорошо распараллеливаться. Если же программа написана таким образом, что подразумевает только последовательное выполнение команд, от многоядерности проку не будет.
Закон Амдала
Джин Амдал сформулировал в 1967 году закон, обнаружив простое по существу, но непреодолимое по содержанию ограничение на рост производительности при распараллеливании вычислений.
«В случае, когда программа разделяется на несколько частей, суммарное время ее выполнения на параллельной системе не может быть меньше времени выполнения самого длительного фрагмента».
Если p – доля последовательных (не распараллеливаемых ) действий в программе, а (1-p) – доля распараллеливаемых действий в программы, которые могут быть равномерно формально распределены по n ядрам, ускорение S от параллельного выполнения программы будет
.
Закон определяет теоретически возможную верхнюю границу ускорения.
На рис. 33.2 представлены графики зависимости ускорения как функции числа ядер и доли последовательных (не распараллеливаемых) действий в выполняемой программе.
Рис. 33.2. Зависимость прироста производительности от числа ядер процессора
К примеру, даже в случае, когда 90% команд программы распараллеливается на несколько ядер, использование четырехъядерного процессора позволяет получить только трехкратный прирост производительности в сравнении с одноядерной структурой процессора.
Рассмотренный пример представляет собой идеальную ситуацию, но в реальности все несколько сложнее, тем не менее основная идея остается неизменной: использование многоядерных процессоров требует внесения кардинальных изменений в программное обеспечение.
Нужно отметить, что далеко не все приложения достаточно хорошо распараллеливаются. В то же время имеется ряд приложений, которые, наоборот, позволяют получить ощутимый прирост производительности от многоядерности. К ним относятся, например, программы финального рендеринга трехмерных сцен, программы для работы с видеомонтажем и обработки звука и многие другие. Отметим, что все новые версии популярных программ оптимизируются под многоядерную структуру процессоров, поскольку за ними будущее.
До сих пор, обсуждая прирост производительности, который можно получить при переходе от одноядерной структуры к многоядерной структуре, рассматривалась ситуация, когда n ядер выполняли n потоков только одного приложения. Тем не менее, многоядерные процессоры позволяют получить существенный прирост производительности при одновременной работе нескольких приложений. В идеальном случае каждое приложение может исполняться на отдельном ядре процессора независимо от других приложений.
Можно говорить о двух заметно разнящихся между собой тенденциях в процессе увеличения числа ядер. Одна носит название мультиядерность (multi-core). В этом случае предполагается, что ядра являются высокопроизводительными и их относительно немного (в процессорах для персональных компьютеров – 2, 4, 8; в процессорах для серверов – 8, 10, 12, 16, 18), и, согласно закону Мура, их количество может периодически увеличиваться. Основных недостатков два: первый — высокое энергопотребление, второй — высокая сложность микросхемы и, как следствие, более дорогая разработка и более низкий процент выхода готовой продукции.
Другой путь — многоядерность (many-core). В этом случае на кристалле располагается на порядок большее число ядер, но имеющих более простую структуру и потребляющих небольшие мощности. Сейчас количество ядер варьируется от 40 до 200, и если закон Мура будет выполняться и дальше, то можно ожидать появления процессоров с тысячами и десятками тысяч ядер. Очевидно, что увеличение в десятки и сотни раз числа ядер на одной подложке не является панацеей. Многоядерные процессоры, если все сводится к размещению большего числа классических простых ядер на одной подложке, нельзя воспринимать как решение всех проблем. Приложения, которые должны выполняться многими ядрами, чрезвычайно сложно программировать. Множество ядер могут быть эффективны только при выполнении приложений, обладающих естественной многопоточностью. Как справиться с грядущими проблемами пока неясно.
Дата добавления: 2016-06-05; просмотров: 2351;