От нынешних высокопроизводительных кластеров до реальных, по-настоящему массовых и продуктивных теравычислений дистанция не меньше, чем от автомобиля Blitzen Benz (200 лошадиных сил при объеме двигателя 21,5 литра), на котором в 1909 году был преодолен барьер 200 км/ч, до современных серийных автомобилей, спокойно развивающих эту скорость. Наличие приставки «тера» в названии программы Tera-Scale Computing, стартовавшей корпорации Intel в 2006 году, не означает, что эта программа ставит своей целью установление рекордов, ее функция – в создании реальной возможности для широкомасштабного внедрения высокопроизводительных вычислений. О программе Tera-Scale Computing рассказывает ее научный руководи-
тель – Джим Хелд.

Что стало основным мотивом для запуска программы Tera-Scale Computing?

Прежде надо определить, куда вообще сейчас движутся вычислительные архитектуры. В середине следующего десятилетия, если исходить из количественных характеристик, мы войдем в четвертый период развития компьютерных систем – многие показатели будут измеряться в единицах с приставкой «тера». Вначале доминировала приставка «кило», а подавляющую массу приложений составляли счет и работа с текстами. На втором этапе произошел переход от ЦПУ из дискретных компонентов к микропроцессорам, а вместе с ними возникла приставка «мега» и появились мультимедийные приложения. Сегодня мы живем в третий исторический период, отличающийся тем, что процессоры стали многоядерными, но пока число ядер меньше 10, – этот эволюционный шаг открыл диапазон «гига», который дал нам возможность создания трехмерных и видеоприложений. Впереди нас ждет четвертый период, когда число ядер будет измеряться тысячами и откроются возможности для появления качественно новых приложений класса RMS – Recognition («распознавание»), Mining («разработка») и Synthesis («синтез»). Такого рода многопотоковые приложения смогут моделировать реальный мир во всей его полноте, соответствующие технологии будут «человекоподобными», алгоритмы будут естественным образом параллельными, а взаимодействие с ними будет вестись в реальном времени.

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

Первая причина – энергопотребление. Нам нужно снять принципиально иную вычислительную мощность с кристалла того же размера, как сегодня, и желательно с меньшим энергопотреблением. Рассуждая на эту тему, мы обычно все связываем с законом Мура, плотность размещения компонентов растет и расти будет, предела миниатюризации пока не видно. Но есть и другие не менее важные наблюдения. Так, один из лучших умов корпорации Intel Фред Поллак постулировал связь между количеством потоков и энергопотреблением. Чем больше потоков, тем выше энергетическая эффективность процессора. Объяснить этот факт несложно, он следует из того, что память была и будет в обозримом будущем медленнее процессоров, следовательно, нужна ускоряющая кэш-память, но один поток команд не может использовать все ресурсы кэша, потому что ему время от времени нужна подгрузка данных. Возникают паузы, когда энергия тратится вхолостую, и они могут быть заполнены, если есть несколько потоков. С многоядерностью еще проще, здесь действует закон Ома, мощность и выделяемое тепло пропорциональны квадратам тока или напряжения. Известно, что при заданной архитектуре процессора его вычислительная мощность пропорциональна частоте, а значит, в конечном итоге пропорциональна потребляемой энергии, то есть квадрату питающего напряжения. Дело именно в этом квадрате – если мы уменьшим напряжение наполовину, то вычислительная мощность упадет вдвое, но при этом потребляемая электрическая мощность будет вчетверо меньше. Следовательно, распределив вычислительную мощность на два ядра, работающих на половинном напряжении, мы получим ту же суммарную вычислительную производительность, которую дает нам одно ядро, работая на полном напряжении, а потребление уменьшим вдвое.

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

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

И еще одно простое рассуждение в пользу многоядерности. Рост производительности процессоров непропорционален числу транзисторов. Для того чтобы увеличить производительность вдвое, число транзисторов следует увеличить в три-четыре раза. Допустим, что мы проектируем процессор по технологии 22 нм с размером 13 мм, он будет иметь 4 млрд транзисторов, кэш емкостью
48 Мбайт и потребление, скажем, 100 ватт. На нем мы сможем разместить 12 больших, 48 средних или 144 малых ядер. Производительность ядер соотносится как 1 : 0,5 : 0,3, но суммарная производительность не в пользу больших ядер, здесь пропорция 12 : 24 : 48, то есть на малых ядрах производительность будет в четыре раза выше.

Все выглядит очень привлекательно, но тем не менее нельзя забывать и о законе Амдала, постулирующем, что линейный рост скорости выполнения задачи при распараллеливании возможен только в том случае, если ее алгоритм не содержит последовательных вычислений. При наличии всего лишь четверти последовательных кодов увеличение числа процессоров в тысячу раз дает лишь четырехкратное ускорение. То есть коэффициент полезного действия кластера с 1000 процессоров на задаче с небольшой долей последовательных кодов меньше 1%. Поэтому многоядерность, несмотря на всю ее привлекательность, все же не панацея – всегда останутся задачи, где есть необходимость в мощных вычислительных ядрах, но таких задач будет относительно меньше, например задачи класса RMS, отражающие свойства реального мира, параллельны изначально. Тяжелые счетные задачи были атрибутами того периода развития науки, когда
в качестве доказательств использовались аналитические модели. Развитие методов численного моделирования и переход
к eScience неплохо согласуются с параллельными вычислениями.

Чем будет отличаться процессорная архитектура эпохи тера?

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

Если говорить об универсальных ядрах нового поколения, то здесь основной упор делается на распараллеливание потоков, что не только разумно с энергетической точки зрения, но еще и позволяет преодолевать проблемы, связанные с задержками при обращении к памяти, и упрощает выполнение последовательностей команд, в которых возможно нарушение порядка очередности. Но тем не менее, если число ядер на кристалле измеряется десятками, то разумнее, чтобы процессор был более универсальным – надо собирать в нем вместе ядра с разными потоковыми характеристиками. Сейчас исследователи в Intel работают над определением оптимального соотношения числа ядер и производительности и числа потоков в ядрах при разных технологиях: 45, 32 и 22 нм. Понятно, что на неопределенное время сохранится необходимость в поддержке унаследованных программных систем, следовательно, потребуются ядра, способные лучше адаптироваться к классическим задачам, в которых увеличение числа потоков не повышает эффективность. А для мультимедийных приложений и задач категории RMS больше подходят многопотоковые ядра, поэтому, скорее всего, процессоры будут обладать гетерогенной структурой, совмещая в себе ядра с различной способностью к работе с потоками. Такое сочетание ядер позволит проектировщику адаптировать процессоры следующего поколения к требованиям различных сегментов рынка.

Для объединения большого числа ядер в систему на кристалле потребуется специализированная масштабируемая коммутационная инфраструктура (Scalable On-Die Interconnect Fabric), которая объединит не только ядра, но кэш-память и устройства специального назначения, например графические сопроцессоры. Исследования показали, что качество межсоединений и микроархитектура являются определяющими факторами совокупной эффективности архитектуры терамасштаба. Если процессор состоит из набора модулей, включающих ядра, маршрутизаторы и другое вспомогательное оборудование, а также специальную коммутационную структуру, то появляется возможность перекоммутировать его нужным образом, а это значит, что по сути одни и те же процессоры могут быть использованы для различных приложений. Кроме того, наличие такого рода коммутации открывает возможности для самовосстановления процессора и продления его жизненного цикла за счет плавной деградации. Сети с коммутацией на кристалле (on-chip interconnect network) дешевле, надежнее и производительнее сетей в обычном понимании.

Все это напоминает программируемые логические матрицы (Field Programmable Gate Array, FPGA), работающие в суперкомпьютерах с архитектурой NUMAflex, где в одну систему собираются разные типы лезвий, но на ином технологическом уровне, не так ли?

Очень похоже, но на уровне кристалла и с большим разнообразием функциональности: идея универсальности хороша, когда на все случаи жизни есть один процессор. С точки зрения экономии энергии в ряде случаев разумнее использовать не универсальные процессорные ядра, а специализированные устройства с фиксированной функциональностью (Fixed-Function Unit, FFU), например это могут быть операции над фрагментами данных переменной длины в видеодекодерах, а также разного рода сетевые ускорители, криптографические машины и тому подобное. Если платформа терамасштаба будет обладать встроенными в процессор устройствами FFU, то она будет лучше приспособлена для работы на определенном типе нагрузки.

Если продолжить вашу мысль, то FFU есть не что иное, как специализированные устройства, или appliance, но на уровне кристалла?

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

Пока мы говорили в основном о терафлопах, но есть еще и терабайты, что относительно них?

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

Какие задачи в руководимой вами программе стоят перед теми, кто разрабатывает ее программные составляющие?

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

В каких областях теравычисления будут особенно эффективны?

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

Каковы первые итоги программы?

Да, на одном из недавних форумов IDF я выступал с докладом «Связанные визуальные вычисления», где показал перспективу новых подходов к интерактивным визуальным интерфейсам. Эти интерфейсы лучше всего характеризуются словами connectedness («связанность») и immersion («погружение»), а основным девизом стало Looks Real, Acts Real, Feels Real, то есть «выглядеть, действовать и чувствовать по-настоящему». В реализации интерфейсов используются технологии управления трехмерным контентом из архитектуры, методы автоматизированного проектирования, приемы из кино и игр и все то, что можно оцифровать и перевести в трехмерную форму.

Что вы можете сказать про терапроцессор?

Созданная инженерами Intel матрица размером 8х10 ядер не ориентирована на рекордные показатели и не нуждается в раскрутке в СМИ – она является полигоном для отработки сетевых технологий между ядрами, кэш-памятью и оперативной памятью. На ней же отрабатываются энергосберегающие технологии, о которых я говорил, – мощность матрицы всего 62 Вт, и она на одном кристалле совмещает статическую память SRAM объемом 20 Мбайт с процессором.


Вычисления с акцентом на данные

Алекс Шалаи и Джим Грей в своей классификации выделяют четыре этапа в развитии науки по объему используемых ею данных. Ее современный этап (eScience) характеризуется возможностью обрабатывать огромные объемы экспериментальных данных.

http://www.osp.ru/os/2008/08/5661141