Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Гетерогенная системная архитектура ( HSA ) - это набор спецификаций от разных производителей, который позволяет интегрировать центральные процессоры и графические процессоры на одной шине с общей памятью и задачами . [1] HSA разрабатывается фондом HSA Foundation , который включает (среди многих других) AMD и ARM . Заявленная цель платформы - уменьшить задержку связи между процессорами, графическими процессорами и другими вычислительными устройствами и сделать эти различные устройства более совместимыми с точки зрения программиста [2] : 3[3] освобождает программиста от задачи планирования перемещения данных между непересекающимися ячейками памяти устройств (что в настоящее время должно быть сделано с OpenCL или CUDA ). [4]

CUDA и OpenCL, а также большинство других довольно продвинутых языков программирования могут использовать HSA для повышения производительности выполнения. [5] Гетерогенные вычисления широко используются в устройствах типа система на кристалле, таких как планшеты , смартфоны , другие мобильные устройства и игровые приставки . [6] HSA позволяет программам использовать графический процессор для вычислений с плавающей запятой без отдельной памяти или планирования. [7]

Обоснование [ править ]

Обоснование HSA состоит в том, чтобы облегчить нагрузку на программистов при переносе вычислений на GPU. Первоначально разработанная исключительно AMD и называвшаяся FSA, идея была расширена и теперь включает в себя не только графические процессоры, но и другие процессоры, такие как DSP других производителей .

Современные графические процессоры очень хорошо подходят для выполнения одной инструкции, нескольких данных (SIMD) и одной инструкции, нескольких потоков (SIMT), в то время как современные процессоры все еще оптимизируются для ветвления. и Т. Д.

Обзор [ править ]

Первоначально представленный встроенными системами, такими как Cell Broadband Engine , совместное использование системной памяти напрямую между несколькими участниками системы делает гетерогенные вычисления более распространенными. Сами по себе гетерогенные вычисления относятся к системам, которые содержат несколько блоков обработки - центральные процессоры (ЦП), блоки обработки графики (ГП), процессоры цифровых сигналов (ЦСП) или любые типы интегральных схем (ASIC) для конкретных приложений . Архитектура системы позволяет любому ускорителю, например графическому процессору , работать на том же уровне обработки, что и центральный процессор системы.

Среди своих основных функций HSA определяет единое виртуальное адресное пространство для вычислительных устройств: там, где графические процессоры традиционно имеют свою собственную память, отдельную от основной (ЦП) памяти, HSA требует, чтобы эти устройства совместно использовали таблицы страниц, чтобы устройства могли обмениваться данными путем совместного использования указателей. . Это должно поддерживаться пользовательскими модулями управления памятью . [2] : 6–7 Для обеспечения возможности взаимодействия, а также для облегчения различных аспектов программирования, HSA предназначен для ISA- диагностики как для процессоров, так и для ускорителей, а также для поддержки языков программирования высокого уровня.

Пока что спецификации HSA охватывают:

Промежуточный уровень HSA [ править ]

HSA Intermediate Layer (HSAIL), виртуальный набор инструкций для параллельных программ.

  • аналогичные [ согласно кому? ] в промежуточное представление LLVM и SPIR (используется OpenCL и Vulkan )
  • завершено до определенного набора инструкций JIT-компилятором
  • поздно принимать решения, на каком ядре (ах) следует запустить задачу
  • явно параллельный
  • поддерживает исключения, виртуальные функции и другие высокоуровневые функции
  • поддержка отладки

Модель памяти HSA [ править ]

  • совместим с моделями памяти C ++ 11 , OpenCL, Java и .NET
  • расслабленная последовательность
  • разработан для поддержки как управляемых языков (например, Java), так и неуправляемых языков (например, C )
  • значительно упростит разработку сторонних компиляторов для широкого спектра разнородных продуктов, запрограммированных на Fortran , C ++, C ++ AMP , Java и др.

Диспетчер HSA и среда выполнения [ править ]

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

Мобильные устройства являются одной из областей применения HSA, в которой он обеспечивает повышенную энергоэффективность. [6]

Блок-схемы [ править ]

На рисунках ниже сравнивается координация CPU-GPU в HSA и в традиционных архитектурах.

Поддержка программного обеспечения[ редактировать ]

Графические процессоры AMD содержат определенные дополнительные функциональные блоки, предназначенные для использования в рамках HSA. В Linux драйвер ядра amdkfd обеспечивает необходимую поддержку. [9] [10]

Некоторые из специфичных для HSA функций, реализованных в оборудовании, должны поддерживаться ядром операционной системы и конкретными драйверами устройств. Например, поддержка видеокарт AMD Radeon и AMD FirePro , а также APU на базе Graphics Core Next (GCN) была объединена с версией 3.19 основной линии ядра Linux , выпущенной 8 февраля 2015 года. [10] Программы не взаимодействуют напрямую с amdkfd , но ставят свои задания в очередь, используя среду выполнения HSA. [11] Эта самая первая реализация, известная как amdkfd , ориентирована на "Kaveri" или "Berlin" APU и работает вместе с существующим графическим драйвером ядра Radeon.

Кроме того, amdkfd поддерживает гетерогенную организацию очередей (HQ), которая направлена ​​на упрощение распределения вычислительных заданий между несколькими процессорами и графическими процессорами с точки зрения программиста. Поддержка управления гетерогенной памятью ( HMM ), подходящая только для графического оборудования с версией 2 IOMMU AMD , была принята в основную версию ядра Linux 4.14. [12]

Интегрированная поддержка платформ HSA была объявлена ​​для «Sumatra» выпуска OpenJDK , который должен выйти в 2015 году [13].

AMD APP SDK - это проприетарный комплект разработки программного обеспечения AMD, предназначенный для параллельных вычислений, доступный для Microsoft Windows и Linux. Bolt - это библиотека шаблонов C ++, оптимизированная для гетерогенных вычислений. [14]

GPUOpen включает в себя несколько других программных инструментов, связанных с HSA. CodeXL версии 2.0 включает профилировщик HSA. [15]

Поддержка оборудования [ править ]

AMD [ править ]

По состоянию на февраль 2015 года , только AMD, «Кавери» A-серию APUs (ср «Кавери» настольные процессоры и «Кавери» мобильные процессоры ) и от Sony PlayStation 4 позволила интегрированному GPU к памяти доступа через версию 2 IOMMU в AMD. Ранние APU (Trinity и Richland) включали функциональность IOMMU версии 2, но только для использования внешним графическим процессором, подключенным через PCI Express. [ необходима цитата ]

APU Carrizo и Bristol Ridge после 2015 года также включают функциональность IOMMU версии 2 для встроенного графического процессора. [ необходима цитата ]

В следующей таблице представлены черты AMD «s APUs (смотри также: Список AMD Accelerated Processing единиц ).

  1. ^ Для моделей экскаваторов FM2 +: A8-7680, A6-7480 и Athlon X4 845.
  2. ^ Для моделей экскаваторов FM2 +: A8-7680, A6-7480 и Athlon X4 845.
  3. ^ ПК будет одним узлом.
  4. ^ APU объединяет CPU и GPU. У обоих есть ядра.
  5. ^ Требуется поддержка прошивки.
  6. ^ Нет SSE4. Нет SSSE3.
  7. ^ Производительность с одинарной точностью рассчитывается на основе базовой (или ускоренной) тактовой частоты ядра на основеоперации FMA .
  8. ^ Унифицированные шейдеры  : блоки наложения текстуры  : блоки вывода рендеринга
  9. ^ a b Для воспроизведения защищенного видеоконтента также требуется поддержка карты, операционной системы, драйверов и приложений. Для этого также необходим совместимый дисплей HDCP. HDCP является обязательным для вывода определенных аудиоформатов, что накладывает дополнительные ограничения на настройку мультимедиа.
  10. ^ Чтобы питать более двух дисплеев, дополнительные панели должны иметь встроеннуюподдержку DisplayPort . [25] В качестве альтернативы можно использовать активные адаптеры DisplayPort-to-DVI / HDMI / VGA.
  11. ^ a b DRM ( Direct Rendering Manager ) - это компонент ядра Linux. Поддержка в этой таблице относится к самой последней версии.

ARM [ править ]

Микроархитектура ARM Bifrost , реализованная в Mali-G71, [30] полностью соответствует аппаратным спецификациям HSA 1.1. По состоянию на июнь 2016 года ARM не объявила о поддержке программного обеспечения, которое будет использовать эту аппаратную функцию.

См. Также [ править ]

  • Универсальные вычисления на графических процессорах (GPGPU)
  • Неравномерный доступ к памяти (NUMA)
  • OpenMP
  • Общая память
  • Нулевая копия

Ссылки [ править ]

  1. ^ Tarun Айер (30 апреля 2013). «AMD представляет свою технологию гетерогенного унифицированного доступа к памяти (hUMA)» . Оборудование Тома .
  2. ^ a b Джордж Кириазис (30 августа 2012 г.). Архитектура гетерогенных систем: технический обзор (PDF) (отчет). AMD. Архивировано из оригинального (PDF) 28 марта 2014 года . Проверено 26 мая 2014 .
  3. ^ "Что такое архитектура гетерогенной системы (HSA)?" . AMD. Архивировано из оригинального 21 июня 2014 года . Дата обращения 23 мая 2014 .
  4. Joel Hruska (26 августа 2013 г.). «Установка HSAIL: AMD объясняет будущее сотрудничества CPU / GPU» . ExtremeTech . Зифф Дэвис .
  5. ^ Линаро. «LCE13: Архитектура гетерогенных систем (HSA) на ARM» . slideshare.net .
  6. ^ Б «Гетерогенные системы Архитектура: Назначение и перспективы» . gpuscience.com . 9 ноября 2012 года Архивировано из оригинала на 1 февраля 2014 года . Дата обращения 24 мая 2014 .
  7. ^ «Гетерогенная системная архитектура: многоядерная обработка изображений с использованием сочетания элементов ЦП и ГП» . Встраиваемый компьютерный дизайн . Дата обращения 23 мая 2014 .
  8. ^ "Микроархитектура Кавери" . SemiAccurate . 15 января 2014 г.
  9. ^ Майкл Ларабель (21 июля 2014 г.). «Драйвер AMDKFD все еще развивается для HSA с открытым исходным кодом в Linux» . Фороникс . Проверено 21 января 2015 года .
  10. ^ a b «Ядро Linux 3.19, раздел 1.3. Драйвер HSA для устройств AMD GPU» . kernelnewbies.org . 8 февраля 2015 . Проверено 12 февраля 2015 года .
  11. ^ «HSA-Runtime-Reference-Source / README.md на главном» . github.com . 14 ноября 2014 . Проверено 12 февраля 2015 года .
  12. ^ «Анонсировано ядро ​​Linux 4.14 с безопасным шифрованием памяти и др.» . 13 ноября 2017.
  13. Алекс Вуди (26 августа 2013 г.). «Фонд HSA стремится повысить производительность графических процессоров Java» . HPCwire .
  14. ^ "Болт на гитхабе" .
  15. ^ AMD GPUOpen (19 апреля 2016 г.). «CodeXL 2.0 включает профилировщик HSA» .
  16. ^ «AMD объявляет о выпуске APU 7-го поколения: Excavator mk2 в Бристоль-Ридж и Стони-Ридж для ноутбуков» . 31 мая 2016 . Дата обращения 3 января 2020 .
  17. ^ "AMD Mobile" Carrizo "Семейство APU, разработанных для достижения значительного скачка производительности и энергоэффективности в 2015 году" (пресс-релиз). 20 ноября 2014 . Проверено 16 февраля 2015 года .
  18. ^ «Руководство по сравнению мобильных процессоров, версия 13.0, стр. 5: Полный список мобильных процессоров AMD» . TechARP.com . Проверено 13 декабря 2017 года .
  19. ^ a b «Графические процессоры AMD VEGA10 и VEGA11 обнаружены в драйвере OpenCL» . VideoCardz.com . Проверено 6 июня +2017 .
  20. ^ Катресс, Ян (1 февраля 2018 г.). «Ядра Zen и Vega: APU Ryzen для AM4 - AMD Tech Day на CES: Обнародована дорожная карта 2018, с APU Ryzen, Zen + на 12-нм, Vega на 7-нм» . Anandtech . Проверено 7 февраля 2018 .
  21. ^ Larabel, Майкл (17 ноября 2017). «Поддержка кодирования Radeon VCN появляется в Mesa 17.4 Git» . Фороникс . Проверено 20 ноября 2017 года .
  22. Лю, Лев (4 сентября 2020 г.). «Добавить поддержку декодирования Renoir VCN» . Дата обращения 11 сентября 2020 . Имеет тот же блок VCN2.x, что и Navi1x
  23. ^ Тони Чен; Джейсон Гривз, «Архитектура AMD Graphics Core Next (GCN)» (PDF) , AMD , получено 13 августа 2016 г.
  24. ^ "Технический взгляд на архитектуру AMD Kaveri" . Полуточная . Проверено 6 июля 2014 года .
  25. ^ «Как подключить три или более монитора к графической карте AMD Radeon ™ HD 5000, HD 6000 и HD 7000?» . AMD . Проверено 8 декабря 2014 .
  26. Эйрли, Дэвид (26 ноября 2009 г.). «DisplayPort поддерживается драйвером KMS, встроенным в ядро ​​Linux 2.6.33» . Проверено 16 января +2016 .
  27. ^ "Матрица характеристик Radeon" . freedesktop.org . Проверено 10 января +2016 .
  28. ^ Deucher Александр (16 сентября 2015). «XDC2015: AMDGPU» (PDF) . Проверено 16 января +2016 .
  29. ^ a b Мишель Дэнзер (17 ноября 2016 г.). «[ОБЪЯВЛЕНИЕ] xf86-video-amdgpu 1.2.0» . lists.x.org .
  30. ^ "Архитектура GPU ARM Bifrost" . 30 мая 2016 г.

Внешние ссылки [ править ]

  • Обзор архитектуры гетерогенной системы HSA на YouTube, автор Винод Типпараджу на SC13 в ноябре 2013 г.
  • HSA и программная экосистема
  • 2012 - HSA Майкла Хьюстона