Начало новой эпохи? Обзор архитектуры HSA
Вступление
Первоначально в состав HSA Foundation вошли такие крупные компании, как AMD, ARM, Imagination Technologies, MediaTek и Texas Instruments, а чуть позже к ним присоединились Qualcomm и Samsung. Союз был образован с целью создания принципиально новой процессорной архитектуры с применением технологии SoC (System on Chip), которая бы позволила сделать большой шаг вперед в плане производительности и экономичности. Результатом работы инженеров консорциума стала гетерогенная архитектура HSA (Heterogeneous System Architecture).
Причины создания HSA
На сегодняшний день в сфере вычислительной электроники выделяется несколько основных принципов, которых придерживаются производители при разработке своих продуктов. Первое — это снижение энергопотребления всех устройств, начиная от мобильных телефонов и планшетов и заканчивая серверными компьютерами. Реалии таковы, что при покупке на первый план у потребителей выходят время автономной работы, малые размеры и вес устройств. Помимо этого, постоянно растет энергопотребление центров обработки данных, а следовательно, и затраты на их охлаждение. Многие даже не представляют, насколько огромные средства расходуются на выполнение этих задач.
В то же время аппетиты пользователей в плане производительности растут. Люди также хотят управлять своими устройствами посредством голоса и жестов, смотреть кино в высоком разрешении и слушать качественную музыку, не говоря уже про использование облачных сервисов.
По мнению AMD, чтобы производители смогли удовлетворить все желания пользователей, в первую очередь необходимо облегчить жизнь разработчикам программного обеспечения. С этой целью HSA Foundation планируют создать мощные программные модели, которые значительно упростят процесс написания кода и внедрения новых возможностей в программы. Очень важно, что данные модели будут поддерживаться широкой гаммой устройств: это избавит программистов от постоянного переписывания программного кода для различных платформ.
Проблема заключается в том, что на данный момент не существует такого подхода, который объединял бы все вышеперечисленные идеи… Пока не появилась архитектура HSA.
HSA и технология SoC
На Hot Chips 2013 представители HSA Foundation, в частности ее глава и представитель AMD Фил Роджерс (Phil Rogers), подробнее рассказали о последних изменениях в архитектуре HSA, а также поделились своими комментариями.
Уже исходя из названия архитектуры, становится понятно, что одним из ключевых принципов HSA являются параллельные вычисления. По словам представителей HSA Foundation, их задачей является создание такой архитектуры, которая бы объединяла скалярные вычисления на CPU, параллельные вычисления GPU и оптимизированную обработку сигналов DSP через когерентный доступ к памяти. Другими словами, все вычислительные блоки будут объединены на уровне архитектуры и будут иметь общую область памяти, что позволит поднять производительность и в то же время снизить энергопотребление. Именно по этой причине архитектура HSA физически будет представлена в виде системы-на-кристалле (SoC).
Говоря про особенности архитектуры, Фил Роджерс в очередной раз подчеркнул ее универсальность и заверил присутствующих, что совсем скоро настанет время, когда один и тот же программный код можно будет использовать на нескольких платформах.
Во время презентации были выделены основные цели развития гетерогенной архитектуры. Во-первых, необходимо сделать огромные вычислительные возможности SoC такими же доступными для программистов, как и вычислительные возможности CPU на сегодняшний день. Учитывая, что производительность SoC теоретически значительно превышает таковую у CPU, у разработчиков появляются новые возможности в написании приложений. Во-вторых, планируется активно продвигать соответствующую требованиям SoC программное окружение в клиентских и серверных системах. В-третьих, особое внимание уделено ускорению так называемых Immersive Applications, в том числе и расположенных в облаке.
Эволюция или революция?
По мнению HSA Foundation, гетерогенная архитектура является третьим поколением архитектур после одноядерной и многоядерной. По словам Фила Роджерса, хотя для первых двух поколений и очень сложно писать программный код, но они позволяли разработчикам использовать все возможности процессоров.
Во времена одноядерной архитектуры ее прогресс обеспечивался в первую очередь законом Мура. Однако развитие платформы сдерживалось малой производительностью и сложностью. Фил Роджерс также высказался по поводу языков программирования для одноядерных процессоров: «Мы начали с языка ассемблера, но затем пришли к структурированным языкам и объектно-ориентированному программированию. Каждый раз мы жертвовали крупицами производительности ради того, чтобы программисты более эффективно использовали платформу».
Схожим образом обстоит ситуация с многоядерной архитектурой. Закон Мура и архитектура SMP (Symmetric Multiprocessing) двигали платформу вперед, однако производительность вкупе с масштабируемостью делает затруднительным ее дальнейшее развитие. Все должно измениться с приходом гетерогенных систем. Параллельная обработка данных и энергоэффективность GPU открывают перед платформой новые горизонты. На первых порах проблемой может стать отсутствие программных моделей, однако этот вопрос решаемый. Что касается написания программ, Роджерс отметил: «Люди, программирующие шейдеры напрямую, — это всё в прошлом. Теперь мы используем CUDA, OpenCL, C++ AMP. Однако всё идет к тому, что в скором времени основными станут C++, Java и другие языки программирования».
Также на конференции были названы ключевые возможности HSA, над которыми в настоящее время ведется работа:
- Унифицированная адресация для всех процессоров;
- Операции в страничной системе памяти;
- Полная когерентность памяти;
- Пользовательский режим отправки;
- Управление рабочими очередями на уровне архитектуры;
- Высокоуровневая языковая поддержка для вычислительных процессоров GPU;
- Смена контекста и вытесняющая многозадачность.
Роль унифицированной адресации памяти фундаментальна в архитектуре HSA. «Очень важно, что мы можем определить всю память на один процессор, — говорит Роджерс, — переместить указатель на другой процессор и обработать данные. Мы скорее переносим вычисления, нежели данные». Что касается полной когерентности памяти, то благодаря ей больше не существует необходимости в программах, управляющих кэш-памятью. В свою очередь управление рабочими очередями на архитектурном уровне позволит разработчикам не переписывать код для разных платформ, поскольку передача пакетов информации различным процессорам будет происходить одним и тем же способом. Для поддержки смены контекста и вытесняющей многозадачности архитектура будет поддерживать технологию Time Slice.
Открытый стандарт
Во время своего выступления Фил Роджерс уделил особое внимание тому, что HSA по своей сути является открытой платформой. Более того, спецификации архитектуры и ее API будут предоставляться разработчикам на безвозмездной основе. «Важно то, что HSA не зависит от ISA (Instruction Set Architecture) как для CPU, так и для GPU», — подчеркнул Роджерс.
Для платформы HSA существует собственный набор ISA под названием HSAIL (HSA Intermediate Layer), разработанный специально для параллельных вычислений на гетерогенной архитектуре. Роджерс поспешил всех уверить, что HSAIL никак не ограничивает других производителей «железа» в плане инноваций, но в то же время обеспечивает совместимость программного обеспечения с их продуктами. HSAIL также поддерживает работу с исключениями, виртуальными функциями и другими возможностями языков высокого уровня. Поэтому HSAIL идеально работает с такими языками, как C++ и Java.
Отдельное внимание было уделено модели памяти архитектуры HSA. Естественно, она была оптимизирована под параллельные вычисления. Интересно, что модель памяти HSA совместима с моделями памяти языков C++11, Java и .NET. По словам Фила Роджерса, во время разработки HSA не все стандарты моделей памяти являлись окончательными: в них постоянно происходили изменения, поэтому разработчикам HSA Foundation приходилось вносить поправки в режиме реального времени.
Пару слов о программной модели архитектуры HSA. Она значительно упрощает процесс передачи данных процессорам. Приложения могут взаимодействовать с «железом» напрямую. Однако Фил Роджерс убежден, что большинство программистов будут использовать специальные библиотеки оптимизации HSA. С их помощью будет происходить упорядочение задач для более эффективной обработки.
OpenCL и языки программирования
Между архитектурой HSA и фреймворком для параллельных вычислений OpenCL действительно можно провести некоторые параллели. Однако некоторые ошибочно считают HSA альтернативой OpenCL — в действительности это совсем не так. HSA является оптимизированной платформой для OpenCL. Как сказал Фил Роджерс, OpenCL-приложения крайне эффективно работают на архитектуре HSA. Это достигается за счет улучшенной модели памяти, низкой латентности при передаче данных, разделяемых между CPU и GPU указателей, а также во избежание работы с ненужными копиями.
Как вы помните, во второй половине июля была представлена новая спецификация OpenCL 2.0. По словам Фила Роджерса, «HSA и OpenCL движутся в своем развитии в одном направлении». Учитывая производительность OpenCL на гетерогенной архитектуре, это не может не радовать.
Продолжая свой рассказ про платформу HSA, Роджерс в очередной раз подчеркнул, что крайне важно не только создать мощную архитектуру, но и предоставить разработчикам подходящий инструментарий, чтобы использовать ее максимально эффективно. В случае с HSA роль такого инструментария отведена библиотеке под названием Bolt, работающей с OpenCL и C++ AMP. Библиотека содержит часто используемые шаблоны сканирования, сортировки, сокращения и преобразования.
В HSA Foundation отнюдь не забыли про Java. «Ситуация с Java особенно интересна, — поделился своим мнением Фил Роджерс. — Всё благодаря тому, что Java преобладает в сфере серверов, в том числе облачных, и дата-центров». Глава HSA Foundation пояснил, что первое время в HSA будет использоваться открытая библиотека Aparapi.
Aparapi представляет собой конвертер из Java в OpenCL, который поддерживает параллельные вычисления на GPU и CPU. Полную поддержку Java в архитектуре HSA планируется внедрить в четыре этапа. На первом этапе Java-код будет конвертироваться на OpenCL, а затем данные будут передаваться на GPU. На втором этапе Aparapi будет напрямую связан с компилятором HSAIL под названием HSA Finalizer. На третьем этапе через виртуальную машину низкого уровня к HSA Finalizer добавится оптимизатор. Изменения на каждом из трех этапов повысят общую производительность системы. Однако, по словам Фила Роджерса, лишь на последнем, четвертом, этапе HSA сможет раскрыть все свои карты: «Наша цель – выполнять гетерогенное ускорение напрямую через виртуальную машину Java, поскольку ее возможности вкупе с основными возможностями языка Java превосходят функционал сторонних библиотек».
Так что же из себя представляет этот четвертый этап? В 2015 году вместе с выходом Java 9 HSA Foundation планирует запустить открытый проект под названием Sumatra Project, активно спонсируемый компаниями AMD и Oracle. Sumatra Project разрабатывается с прицелом на то, чтобы дать разработчикам возможность работы с параллельными алгоритмами на Java с помощью GPU. В настоящее время нечто похожее на Java реализовано с помощью библиотеки Lambda, которая позволяет обрабатывать несколько потоков сразу с применением многоядерных процессоров. Принцип работы Sumatra заключается в том, что виртуальная машина Java (Java Virtual Machine) будет передавать «выбранные» конструкции напрямую в устройства с архитектурой HSA. К слову, на сегодняшний день разработчики Java-библиотек уже модифицируют программный код этих библиотек для того, чтобы в будущем использовать те же самые конструкции.
Практическое применение
Преимущества архитектуры HSA были показаны на нескольких примерах. Один из них — метод Хаара распознавания образа. Данный метод представляет собой многоступенчатый анализ видеопотока с целью идентификации лиц. Его суть заключается в том, что обработка групп пикселей изображения проходит в несколько этапов, которые называются каскадами.
Быстродействие алгоритма достигается тем, что в рамках каждого каскада данные для обработки в зависимости от их типа сразу же распределяются между CPU и GPU без какого-либо копирования в памяти или ненужного использования кэша. В результате мы получаем более высокий уровень производительности, чем в случае с использованием только CPU или GPU. Отстает от HSA и связка из GPU и CPU: какими бы идеальными ни были драйверы, HSA распределяет нагрузку между процессорами более эффективно. Если выражаться в цифрах, то производительность HSA превышает производительность современных платформ в 2,5 раза. При этом гетерогенная архитектура потребляет в 2,5 раза меньше энергии. Конечно, здесь указаны максимальные показатели — однако эффективность HSA налицо.
В качестве второго примера демонстрации производительности HSA стала сфера облачных технологий. Здесь особое внимание было уделено суффиксным массивам, которые широко используются даже в самых простых алгоритмах поиска подстроки в строке. Суффиксные массивы являются одной из основных структур данных. Вдобавок, они специально разработаны для эффективного поиска большой текстовой информации. Помимо этого, суффиксные массивы крайне полезны и в других облачных задачах, таких как сжатие информации без потерь и биоинформатика.
Как и в случае с методом Хаара, при обработке суффиксных массивов ключевую роль играет разделение потоков информации для обработки между GPU и CPU. Важно то, что при этом не создаются промежуточные копии данных, что только положительно сказывается на быстродействии. Производительность HSA при работе с суффиксными массивами в сравнении с однопоточными процессорами возрастает в 5,8 раз, а энергопотребление снижается в 5 раз.
Гетерогенная архитектура в приложениях
Нет, про игры и спецэффекты в HSA Foundation совсем не забыли! Гетерогенную архитектуру можно очень эффективно использовать в обработке физики твердых тел. Симуляция представляет собой способ анимации и взаимодействия объектов, который широко используется в играх и кинематографе. Она используется прежде всего для улучшения геймплея и визуальных эффектов. Вообще, ее можно встретить во многих программах, например:
- Физических движках Bullet, Havok, PhysX;
- Играх, начиная от Angry Birds и Cut the Rope и заканчивая Tomb Raider и Crysis 3;
- 3D-инструментарии Autodesk Maya, Unity 3D, Houdini, Cinema 4D и Lightwave;
- Системе автоматизированного проектирования Siemens NX8 Mechatronics Concept Design;
- Медицинских приложениях (например, операционные тренажеры);
- Симуляторах роботов.
В алгоритме обработки физики твердых тел выделяются следующие этапы:
- Нахождение пар взаимодействующих объектов;
- Тестирование полного перекрытия между этими объектами;
- Вычисление точной информации о контакте для разных типов форм;
- Вычисление ограничивающих сил.
В целом обработка физики твердых тел — довольно трудоемкий процесс. Для ее эффективной реализации разработчикам архитектуры HSA необходимо было решить несколько важных задач. Это и необходимость синхронного взаимодействия игрового и физического движков во время симуляции, и работа с огромным количеством пар объектов с постоянно изменяющимися размерами, и правильное распараллеливание вычислений между GPU и CPU. Можно с уверенностью утверждать, что основные принципы HSA: унифицированная адресация, страничная память, полная когерентность — смогли их решить.
Сложность кода и производительность
Во время конференции было продемонстрировано, как архитектура HSA может упрощать написание программного кода и в то же время обеспечивать высокий уровень производительности. Были проведены тесты различных программных моделей с использованием ядра Hessian, применяемым в обработке изображений.
Наибольшая производительность была достигнута в тесте OpenCL с языком C, однако и сложность кода в данном случае была наивысшая во всем тестировании. К слову, сложность программного кода измерялась в его количестве: то есть чем больше строк, тем сложнее код. Как видно из графика, при тестировании архитектуры HSA с использованием библиотеки Bolt производительность лишь немного упала в сравнении с тестом OpenCL-C, однако объем программного кода при этом сократился в разы. По мнению Фила Роджерса, упрощение кода приведет к увеличению количества разнообразных приложений.
Заключение
На этом конференция HSA Foundation подходила к концу. Подводя итоги, Фил Роджерс затронул интересующую нас тему об отсутствии в составе консорциума NVIDIA и Intel: «HSA Foundation приглашала обе компании, и мы с радостью примем их в наши ряды. Даже скажу так: я надеюсь, что они присоединятся к нам. В конце концов, это хорошо для компьютерной индустрии, для разработчиков и для пользователей, когда существуют открытые стандарты и когда производители «железа» конкурируют за счет производительности и экономичности. То, что у нас есть несколько немного различающихся, но эквивалентных способов решать одни и те же задачи, больше никому не приносит пользы».
Что касается первых продуктов на базе архитектуры HSA, то ими станут процессоры AMD под кодовым названием Beema, выход которых запланирован на вторую половину 2014 года.