Недавняя премьера микропроцессоров AMD Kaveri A10-7850K и A8-7600 была представлена как сенсация, хотя их основные параметры были известны давно. Мало того, история их создания растянулась на семь с половиной лет, если вести отсчет от момента покупки компании ATI, второго на тот момент производителя GPU и графических плат. Согласно объявленному тогда плану «Fusion» предполагалось к 2008 году создать первый кристалл от объединенной компании, однако потом срок был перенесен на 2011 год, и вот, наконец, в начале 2014 года микропроцессор вышел на рынок под именем Kaveri. Впрочем, подобная задержка закономерна и лишь подтверждает профессионалам правило — на создание подлинной новации требуется не менее семи лет. А в том, что это именно так и сегодня вместе с Kaveri компания AMD делает шаг не меньший, чем в 2003 году, когда был выпущен процессор Opteron [1] с архитектурой amd64, более известной под именем x86-64, сомнений нет. Именно Kaveri вполне можно признать первым полноценным гибридным APU — ускоренным (Accelerated) или настроенным на приложения (Application). Kaveri — пример синергии нескольких современных технологических, архитектурных и программных новаций, и важно, что микропроцессор появился как раз в тот момент, когда появляются приложения, способные полноценно использовать все его преимущества.

Термин APU был предложен в 2006 году для обозначения устройств, служащих для специализированных применений, но вскоре его распространили на кристаллы, сочетающие в себе CPU и GPU. Появление этих гибридов в некоторой степени напоминает историю с процессорами 8086 и 8067. Сначала был классический центральный процессор CPU, затем в дополнение к нему появился FPU — отдельный сопроцессор, ускоряющий выполнение математических операций над числами в формате с плавающей точкой. В последующем они объединились путем создания общей системы команд, а FPU как отдельный класс устройств исчезли, и на протяжении последующих лет развернулась гонка, в которой Intel и AMD попеременно предлагали свои усовершенствования в систему команд. Однако история с объединением CPU и GPU в один кристалл APU имеет свою специфику — GPU не передает свои полномочия CPU, и полного слияния двух систем команд нет. В APU оба типа устройств упакованы на одной подложке, но живут раздельно, хотя и делят между собой одну площадь, работают в паре, а качество APU определяется тем, насколько эффективно налажено взаимодействие. За несколько лет APU прочно вошли в жизнь — девять из десяти современных ноутбуков содержат такие процессоры. Однако вопрос о том, какой должна быть пропорция между CPU и GPU, чтобы процессор можно было назвать «настоящим APU» (True APU), остается открытым. Некоторые эксперты считают, что это 50:50 от площади подложки, что близко к параметрам Kaveri (47% площади занимают ядра GPU), а в процессорах с микроархитектурой Sandy Bridge — 17%, в Ivy Bridge — 27%, в Haswell — 31%.

Среди множества особенностей, отличающих Kaveri, можно назвать следующие: гетерогенная системная архитектура HSA (Heterogeneous System Architecture) [2]; архитектура ядра x86-64 CPU Steamroller, Mantle — графический API низкого уровня и архитектура TrueAudio. Таким образом, Kaveri с равным успехом может быть использован и для работы с данными, и для выполнения игровых и мультимедийных приложений, требующих поддержки GPU. Микропроцессор выпускается в разных модификациях с минимальным потреблением 35 ватт для серверов и до 95 ватт для игровых компьютеров. Архитектуры HSA и Steamroller важны для всех приложений, а Mantle и TrueAudio — для игровых. Универсальность процессора Kaveri является его несомненным достоинством, особенно потому, что некоторые возможности, в частности HSA, не могут быть немедленно востребованы, а еще должны дойти до уровня массового использования сообществом разработчиков.

Основной функционал HSA обеспечивает гетерогенный единообразный доступ к памяти hUMA (heterogeneous Uniform Memory Access) и является главным инструментом для полноценной интеграции CPU и GPU. Теоретически возможны несколько уровней интеграции: самый примитивный — обмен пакетами данных между процессами; посложнее — управляемое операционной системой использование общего пространства памяти; высший уровень — физическое объединение пространства данных в единой памяти. Эту последовательность развития интеграции CPU и GPU компания AMD прошла на экспериментальных чипах APU первых поколений, самыми заметными среди которых были Llano и Trinity, а все начиналось с простого физического совмещения CPU и GPU на кристалле при сохранении тех же самых способов обмена данными, которые использовались в случае раздельного исполнения на разных «камнях». Затем были применены более действенные приемы, но и они оказались малоэффективными, а компания понесла ощутимые убытки, вызванные «провалом» в дорожной карте, когда из-за неправильной организации работ образовалась задержка с выпуском очередного изделия. Архитектурные решения были инкрементальными и более-менее в пределах разумного. В архитектуре HSA упор сделан на разделяемую на страницы память, имеются общие указатели и когерентная двунаправленная модель памяти, что облегчает обмен данными между CPU и GPU при выполнении общих задач. При такой организации CPU и GPU могут читать и модифицировать одни и те же области памяти без ожидания какого-либо воздействия, а значит — исключаются бутылочные горла и минимизируются задержки.

Архитектура hUMA сравнима с более ранними — еще в первых GPU для доступа к памяти применялся метод NUMA (Non Uniform Memory Access), предполагающий фрагментацию на независимые разделы, когда у CPU и GPU имеются собственные автономные области памяти. Такой упрощенный подход приводит к необходимости копирования больших объемов данных из одной области в другую, дополнительным сложностям в программировании через графический драйвер и менеджер видеопамяти, трудностям при синхронизации и трансляции адресов. Переход на UMA, в данном случае в реализации hUMA, позволяет CPU и GPU обращаться в одну общую память. Для этого в новые процессоры заложен механизм, поддерживающий когерентность кэшей CPU и GPU на аппаратном уровне. До появления этого механизма схема взаимодействия CPU и GPU предполагала, что в случае необходимости CPU записывает нужные для обработки данные в область памяти GPU, где выполняется необходимая обработка, и данные возвращаются обратно в память CPU. Наличие hUMA позволяет CPU передавать в GPU только указатель на данные, а не сами данные, а затем после обработки использовать эти данные.

Для поддержки взаимодействия двух типов процессоров разработан механизм гетерогенных очередей hQ (Heterogeneous Queuing), минимизирующий задержки и позволяющий в полной мере использовать потенциал APU. В традиционной архитектуре master-slave, где CPU — «хозяин», а GPU — «раб», все задачи, предназначенные для выполнения в GPU, сначала направляются в CPU, а затем в GPU. В таком случае CPU должен взаимодействовать с операционной системой, управляющей очередями. Получив задание, ОС предает его драйверу, преобразующему это задание в команды конкретной графической системы. Гетерогенное управление очередями уравнивает положение CPU и GPU, заменяет отношение master-slave — все процессоры становятся равны (см. рисунок).

 

Все в одном: микропроцессор Kaveri
От архитектуры master-slave к равенству процессоров

В новое ядро Steamroller x86-64 внесены усовершенствования, повышающие эффективность CPU. Задействование при проектировании библиотек высокой плотности — прием, заимствованный из проектирования GPU, — позволило на 30% повысить использование площади кристалла и на столько же снизить энергопотребление. Согласованность с GPU открывает возможность для сокращения потребления в тех случаях, когда нагрузка преимущественно графическая или вычислительная.

Графический интерфейс прикладного программирования Mantle рассматривается AMD в качестве более быстрой и приближенной к архитектуре GPU альтернативы DirectX и OpenGL. К его преимуществам относят эффективное управление аппаратурой, прямой доступ к памяти GPU и, как следствие, повышенную по сравнению с DirectX и OpenGL скорость работы. Относительно TrueAudio предполагается, что эта технология окажет такое же влияние на технологии воспроизведения звука в игровых приложениях, как ранее программы построения теней изменили компьютерную графику.

Графическая архитектура Graphics Core Next (GCN) Kaveri удовлетворяет не только специфические игровые запросы, но и в наибольшей степени соответствует требованиям со стороны универсальных вычислений. Устройство GCN GPU способно выполнять вычислительные задачи, которые раньше были доступны только CPU. Архитектура GCN поддерживает такие языки, как C++ AMP (Accelerated Massive Parallelism) и OpenCL, поддерживает разрешение UltraHD (4K) и новые возможности постобработки видео, улучшая качество изображения с разрешением 1080 на мониторах, работающих в формате UltraHD.

Процессоры Kaveri производятся по 28-нанометровой технологии компанией GlobalFoundries, частью акций которой владеет AMD, передавшая GF свои производственные мощности. Теперь GF — один из крупнейших контрактных производителей микросхем, а сама AMD c 2012 года перешла в разряд компаний категории fabless, ограничивающих свою деятельность проектированием и продажами микросхем. Микропроцессор Kaveri содержит двухъядерные модули CPU Steamroller и GPU GCN 1.1, состоящие из восьми вычислительных блоков по 512 графических ядер в каждом. Процессор Kaveri A10-7850K работает на частоте 3,7 ГГц в обычном режиме и на 3,8 ГГц — в режиме турбо, а GPU функционирует на частоте 720 МГц, что заметно меньше, чем в предыдущих моделях от AMD, хотя и может работать быстрее, но общий лимит на энергопотребление этого пока не позволяет.

Процессоры Kaveri уже получили доброжелательный отклик у сообщества разработчиков, ориентированных на OpenCL, поскольку HSA обеспечивает поддержку и ускорение выполнения всех существующих OpenCL-совместимых приложений. Разработчики, отдающие предпочтение Java, Fortran, OpenMP, C++ AMP и другим средствам, могут воспользоваться непосредственно системой поддержки HSA и языком HSAIL — ассемблером для HSA.

Литература

  1. Михаил Кузьминский. Многоядерные процессоры AMD // Открытые системы.СУБД. — 2005. — № 10. — С. 16–23. URL: http://www.osp.ru/os/2005/10/380433 (дата обращения: 11.02.2014).
  2. Тимур Палташев, Илья Перминов. Гетерогенная архитектура для CPU, GPU и DSP // Открытые системы.СУБД. — 2013. — № 08. — С. 12–15. URL: http://www.osp.ru/os/2013/08/13037850 (дата обращения: 11.02.2014).

Леонид Черняк (osmag@osp.ru) — научный редактор, «Открытые системы.СУБД» (Москва).