Другие части: Часть 1. Часть 2.
Данный пост является продолжением рассказа «Жизнь в эпоху «тёмного» кремния». В предыдущей части рассказ шел о использовании универсальной логики в темных областях кремния. В этот раз рассмотрим использование специализированной логики.
«The Specialized Horseman» или использование специализированных решений.
“We will use all of that dark silicon
area to build specialized
cores, each of them tuned for
the task at hand (10-100x more
energy efficient), and only turn
on the ones we need…”
По мере того, как всё большая часть транзисторов микропроцессора становится «тёмной», занимаемая ими площадь становится экспоненциально более дешевым ресурсом с точки зрения тепловыделения и потребляемой мощности. Один из возможных способов использования этой площади для повышения энергоэффективности за счет параллелизации описывался ранее. Однако, такой подход имеет ряд ограничений. Даже в идеальных условиях возможно лишь 2-2.5 кратное снижение энергопотребления, при увеличении занимаемой площади в 2-3 раза. Кроме того, далеко не все узлы в принципе поддаются распараллеливанию и не во всякой программе можно найти параллелизм данных…
Один из подходов, позволяющих эффективнее расходовать площадь в обмен на энергоэффективность, это использование тёмного кремния для реализации специализированных блоков (сопроцессоров), каждый из которых на конкретной задаче либо намного быстрее, либо намного энергоэффективнее (порядка 100-1000 раз), чем процессоры общего назначения [1]. Ну а выполнение необходимых действий можно распределять между сопроцессорами и ядрами общего назначения наиболее предпочтительным образом. В то же время, неиспользуемые в данный момент блоки сопроцессоров могут быть полностью выключены для экономии энергии.
Перспективы для всестороннего использования специализированных узлов в будущем видны невооруженным глазом: уже сегодня широко распространены специализированные ускорители для таких задач, как, например, обработка, графики, компьютерное зрение, кодирование видео и других. Эти ускорители позволяют на порядки повысить производительность и энергоэффективность, особенно для высокопараллельных вычислений.
Исследователи [2] экстраполировали эту тенденцию и высказывают ожидания, что в ближайшем будущем мы увидим системы, которые на большую часть состоят из специализированных блоков, а не из ядер общего назначения. В литературе такие системы получили называние Coprocessor Dominated Architectures, или CoDAs.
Если взглянуть на схему микропроцессора Intel Medfield, приведенную ниже, то можно заметить, что это «ближайшее будущее» гораздо ближе, чем кажется :). Это тот самый процессор, который используется в Intel Mint – первом смартфоне на основе x86 архитектуры. И, как видно, помимо, собственно, процессорного ядра в кристалл входит множество разнообразных специализированных блоков.
Платформа Intel Medfield
Однако, рост использования специализированных узлов для борьбы с проблемой темного кремния приводит к тому, что разработчики (да и не только они) столкнулись с множеством проблем, вместе получивших название «кризис вавилонской башни» (tower-of-babel problem). Это отсылка к современной интерпретации библейского сюжета о «вавилонском столпотворении», когда из за смешения языков люди перестали понимать друг друга и не могли продолжать строительство. Из-за использования ускорителей наше представление о вычислениях общего назначения становится всё более фрагментарным и всё более размываются традиционно четкие границы между разработчиками программ, программным обеспечением и железом, которое, в конечном счете, и выполняет вычисления. Приведем несколько примеров.
Уже сейчас мы видим, как набирают популярность специализированные языки, такие как CUDA, которые фактически монополизированы одной компанией, предназначены для конкретного железа и не могут быть перенесены даже на аналогичные архитектуры (AMD). (у CUDA есть альтернативы, но речь здесь не о том)
Существуют проблемы чрезмерной специализации ускорителей, которые делают их неприменимыми даже для тесно связанных с их основным назначением задач. Например, известны случаи, когда вычисления с двойной точностью (double), проводимые в научных целях, дают неверные результаты на GPU, Floating-Point Unit'ы которых специализируются на графических задачах.
Также известны проблемы с внедрением разработок из-за чрезмерных усилий на программирование гетерогенного «железа». Например, медленный рост популярности Sony Playstation 3 в связи с трудностями портирования игр и использования возможностей архитектуры процессоров Cell в программировании.
Ну и наконец, специализированные аппаратные узлы подвержены риску устаревания, т.к. стандарты иногда пересматриваются (например, обновление стандарта JPEG), а изменить их аппаратную реализацию иначе как заменой устройства уже не получится.
Изоляция людей от сложности системы. Все перечисленные выше факторы говорят о потенциально экспоненциальном росте усилий, требуемых от человека для разработки CoDAs и для их программирования. Борьба с кризисом вавилонской башни требует, появления новых подходов к тому, какими средствами выражается специализация и как она используется в будущих системах обработки. Нужны новые масштабируемые архитектурные решения, повсеместно использующие специализированные узлы для минимизации энергопотребления и максимальной производительности.
Преодоление ограничений, накладываемых на специализацию законом Амдала. Закон Амдала иллюстрирует ограничение роста производительности вычислительной системы с увеличением количества вычислителей. Его трактовка применительно к специализации и энергопотреблению означает, что если, например, на ускорители можно перенести лишь половину производимых вычислений, то и энергопотребление может быть снижено не более чем в два раза (за счет ускорителей). Это служит дополнительным препятствием для специализации и заставляет искать подходы, которые бы позволили экономить энергию на большинстве вычислений, не только регулярных, параллельных и предсказуемых, но и нерегулярных.
Сейчас ведутся исследования в области автоматизированной генерации ускорителей из фрагментов программного кода. Цель – обнаружить часто используемые, медленные или энергозатратные участки программы – «горячие точки». А затем, синтезировать описание специализированного ядра, выполняющего те же действия, но гораздо быстрее или затрачивая меньше энергии. Такие специализированные ядра называются conservation cores или c-cores.
Примером такого подхода к построению CoDA систем, направленного как на регулярные, так и на нерегулярные вычисления является процессор UCSD GreenDroid [3]. Подход основан на обнаружении «горячих точек» в мобильной среде Android и использовании сотен conservation cores, на которые компилятором переносится исполнение «горячих» участков кода. Такой подход позволяет достичь 8-10 кратного выигрыша в энергоэффективности без дополнительных усилий со стороны программиста. (Хотя, конечно, данная тема заслуживает отдельного поста :) )
Жизненный цикл conservation cores в GreenDroid
В отличие от NTV процессоров, с таким подходом нет необходимости искать дополнительный параллелизм, чтобы покрыть потери производительности на последовательном исполнении. В результате, c-cores, скорее всего, смогут использоваться в более широком спектре задач, включая последовательные задачи. Тем не менее, для высоко параллельных нагрузок NTV процессоры могут иметь преимущество.
На этом я заканчиваю рассказ о том, что такое «тёмный» кремний и какие основные подходы к его использованию существуют. Несмотря на то, что кремний становится всё темнее с каждым поколением закона Мура, для исследователей в этой области будущее выглядит ярким и волнующим. Со временем тёмный кремний изменит весь вычислительный стек. А эти изменения принесут много возможностей для дальнейших исследований и усовершенствований.
*А еще есть такая «неклассическая» тема, связанная «тёмным» кремнием, энерго- и температурными вопросами, как оптимизация на системном уровне (system-level optimization). Если эта тема вызовет интерес, то будет связанное с этим продолжение.
Источники
1. Venkatesh, Sampson, Goulding, Garcia, Bryksin, Lugo-Martinez, S. Swanson, and M. B. Taylor. «Conservation cores: Reducing the energy of mature computations.» In ASPLOS, 2010.
2. N. Hardavellas, M. Ferdman, B. Falsa_, and A. Ailamaki. “Toward dark silicon in servers." IEEE Micro, 2011.
1. N. Goulding-Hotta et al “The GreenDroid mobile application processor: An architecture for silicon's dark future." Micro, IEEE, March 2011.
Автор: yurav