Power ISA

Power ISA
Разработчик
  • Power.org
  • OpenPOWER Foundation
Разрядность 32 бита/64 бита (32 → 64)
Представлена 2006
Версии 3.1
Архитектура RISC
Тип load/store
Кодирование СК Постоянное/Переменное
Реализация переходов Флаги условия
Порядок байтов big-endian/bi-endian
Расширения AltiVec, PowerPC AS, APU, DSP, CBEA
Открытая? да, бесплатная

Power ISA — это RISC архитектура набора команд (ISA), в настоящее время разрабатываемая фондом OpenPOWER Foundation под руководством IBM. Изначально фонд был создан IBM и ныне несуществующей отраслевой группой Power.org. Power ISA является развитием архитектуры PowerPC ISA, возникшей в результате объединения основного набора команд PowerPC ISA и опционального модуля Book E для встраиваемых приложений. Объединение этих двух компонентов в 2006 году было инициировано основателями Power.org — компаниями IBM и Freescale Semiconductor.

Структура процессора

Power ISA относится к RISC load/store архитектурам. Она включает несколько наборов регистров:

Инструкции до версии 3.0 имели длину 32 бита, за исключением подмножества VLE (кодирование с переменной длиной, англ. variable-length encoding) , которое обеспечивает более высокую плотность кода для встраиваемых приложений начального уровня. Версия 3.1 представила префиксы для создания 64-битных инструкций. Большинство инструкций являются триадными, то есть имеют два исходных операнда и один целевой. Поддерживаются операции с плавающей запятой одинарной и двойной точности, соответствующие стандарту IEEE 754, включая дополнительные версии с однократным округлением (англ. fused multiply–add, FMA) и десятичные операции с плавающей запятой. Предусмотрены возможности для выполнения операций «одна инструкция, множество данных» (англ. single instruction, multiple data, SIMD) над целочисленными и вещественными данными, обрабатывая до 16 элементов в одной инструкции.

Архитектура Power ISA поддерживает как гарвардский кэш, то есть, раздельные кэши данных и инструкций, так и унифицированные кэши. Операции с памятью выполняются исключительно через команды загрузки/сохранения, но допускают внеочередное исполнение. Также реализована поддержка прямой и обратной адресации байтов (big-endian и little-endian) , с отдельными категориями для режимной и постраничной настройки порядка байтов, а также поддержка 32-битной и 64-битной адресации.

Различные режимы работы включают пользовательский, супервизорский и гипервизорский.

Категории

До версии 3.0 набор инструкций (ISA) делился на несколько категорий. Процессоры реализовывали набор этих категорий в соответствии с их задачами. Различные классы процессоров требовались для реализации определённых категорий. Например, процессор серверного класса содержал категории: Базовая, Серверная, Плавающая точка, 64-битная и так далее. Все категории реализовывали базовую категорию.

  • Базовая – Боьшая часть книг I и II
  • Сервер – Книга III-S
  • Встроенная – Книга III-E
  • Прочее – плавающая точка, вектора, обработка сигналов, блокировка кэша, десятичные числа с плавающей запятой и т.д.

Книги

Спецификация Power ISA разделена на пять частей, называемых «книгами»:

  • Book IАрхитектура набора команд пользователя охватывает базовый набор команд, доступный программисту приложений. Включает в себя работу с памятью, управление потоком выполнения, целочисленные операции, операции с плавающей точкой, численное ускорение и программирование на уровне приложений. Содержит главы, касающиеся вспомогательных процессоров, таких как цифровые сигнальные процессоры (англ. Digital signal processor, DSP) и расширение AltiVec.
  • Книга IIАрхитектура виртуальной среды определяет модель хранения, доступную программисту приложений, включая тайминги, синхронизацию, управление кэшем, особенности хранения и порядок байтов.
  • Книга IIIАрхитектура операционной среды охватывает обработку исключений, прерываний, управление памятью, средства отладки и специальные функции управления. Она состоит из двух частей.
    • Книга III-S – Определяет инструкции супервизора, используемые для реализаций общего назначения/серверных систем. По сути, это содержание Книги III предыдущей архитектуры PowerPC ISA.
    • Книга III-E – Определяет инструкции супервизора, используемые для встраиваемых приложений. Она основана на предыдущей Книге E архитектуры PowerPC
  • Книга VLEАрхитектура инструкций с переменной длиной определяет альтернативные инструкции и определения из Книг I–III, предназначенные для большей плотности инструкций и приложений самого низкого уровня. В них используются 16-битные инструкции и порядок байтов big-endian.

Соответствие

В третьей версии Power ISA появилась возможность того, что для соответствия спецификации реализациям не обязательно реализовывать её полностью. Разрастание набора инструкций и технологий сделало полную спецификацию громоздкой, поэтому OpenPOWER Foundation решили ввести многоуровневую систему совместимости.

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

Проект должен соответствовать заявленному уровню подмножества, чтобы воспользоваться защитой Фонда в отношении использования интеллектуальной собственности, будь то патенты или товарные знаки. Это подробно описано в Лицензионном соглашении OpenPOWER[1]. Соответствующий проект должен[2]:

  • Поддерживать базовую архитектуру
  • Поддерживать как минимум одно из подмножеств
    • SFS – Подмножество Scalar Fixed-point, 129 инструкций. Базовые инструкции для работы с числами с фиксированной точкой и загрузки/сохранения данных, что фактически составляет базовую архитектуру.
    • SFFS – Подмножество Scalar Fixed-point + Floating-point, 214 инструкции. Добавляет операции с плавающей точкой к базовой архитектуре.
    • LCS – Подмножество для совместимости, 962 инструкции. Предназначено для серверов под управлением Linux, добавляет такие возможности, как 64-разрядность, опциональные SIMD/VSX, Radix MMU, режим little-endian и поддержку гипервизора .
    • ACS – Подмножество для совместимости с AIX, 1099 инструкций.Предназначено для запуска AIX, добавляет такие возможности, как десятичная арифметика и числа с плавающей точкой учетверённой точности, режим big-endian и симметричную многопроцессорность.


  • Возможно включение любых функций LCS и ACS в качестве опциональных, либо выбор из всегда опциональных функций, таких как матричные вычисления и управление питанием.
  • Опциональные функции, если они выбраны, должны быть реализованы полностью (частичная реализация опциональной функции не допускается).
  • Могут быть включены пользовательские расширения, специфичные для реализации, реализованные в Архитектурной песочнице. Если расширение достаточно общего назначения, OpenPOWER Foundation просит разработчиков представить его в виде RFC на OpenPOWER ISA Workgroup.Обратите внимание, что для подачи RFC не обязательно вступать в OpenPOWER Foundation[3].
  • Многие элементы могут быть реализованы как аппаратно, так и в виде прошивки.

EABI и несоответствие требованиям Linux

Спецификации EABI появились раньше объявления и создания подмножеств соответствия.

Что касается необязательности VSX (SIMD) в подмножестве соответствия Linux: в 2003–2004 годах 64-битная EABI v1.9 сделала SIMD необязательным[4], но в июле 2015 года для повышения производительности систем IBM POWER9 SIMD стал обязательным в EABI v2.0[5]. Это расхождение, когда SIMD является необязательным на уровне соответствия Linux, но обязательным в EABI v2.0, не может быть устранено без значительных усилий: обратная несовместимость для дистрибутивов Linux не является жизнеспособным вариантом. В настоящее время это вынуждает новых разработчиков OpenPOWER, желающих запускать стандартные дистрибутивы Linux, реализовывать огромный набор из 962 инструкций. Для сравнения, RISC-V RV64GC, минимальный набор для запуска Linux, требует всего 165 инструкций[6].

Спецификации

Power ISA v.2.03

Спецификация Power ISA v.2.03[7] основана на предыдущей версии PowerPC ISA v.2.02[8] для процессоров POWER5+ и расширении Книги E[9] спецификации PowerPC. Книга I содержит пять новых глав, посвященных вспомогательным процессорным устройствам, таким как DSP и расширение AltiVec.

Совместимые ядра:

  • Freescale PowerPC e200, e500
  • IBM PowerPC 405, 440, 460, 970, POWER5 и POWER6

Power ISA v.2.04

Спецификация Power ISA v.2.04[10] была завершена в июне 2007 года. Она основана на версии Power ISA v.2.03 и включает изменения, главным образом в Книге III-S в области виртуализации, функций гипервизора, логического разбиения и обработки виртуальных страниц.

Совместимые ядра:

  • Все ядра, совместимые с предыдущими версиями Power ISA
  • PA6T ядро от P.A. Semi
  • Titan от AMCC

Power ISA v.2.05

Спецификация Power ISA v.2.05[11] была выпущена в декабре 2007 года. Она основана на спецификации Power ISA v.2.04 и, в основном, изменения были внесены в Книгу I и Книгу III-S, включая существенные улучшения, такие как десятичная арифметкиа (категория «Десятичная арифметика чисел плавающей точкой» в Книге I) и улучшения серверного гипервизора.

Совместимые ядра:

  • Все ядра, совместимые с предыдущими версиями Power ISA
  • POWER6
  • PowerPC 476

Power ISA v.2.06

Спецификация Power ISA v.2.06[12] была выпущена в феврале 2009 и пересмотрена в июле 2010[13]. Она основана на спецификации Power ISA v.2.05 и включает расширения для процессора POWER7 и e500-mc core. Существенным нововведением являются векторно-скалярные инструкции с числами с плавающей точкой (VSX)[14]. Книга III-E также включает существенные улучшения для встраиваемой спецификации, касающиеся гипервизора и виртуализации на одно- и многоядерных реализациях.

Спецификация была пересмотрена в ноябре 2010 года до версии Power ISA v.2.06 revision B, улучшив функции виртуализации[13][15].

Совместимые ядра:

  • Все ядра, совместимые с предыдущими версиями Power ISA
  • POWER7
  • A2I
  • e500-mc
  • e5500
  • e6500

Power ISA v.2.07

Спецификация Power ISA v.2.07[16] была выпущена в мае 2013. Она основана на Power ISA v.2.06 и включает значительные улучшения функций логического разделения, транзакционной памяти, расширенный мониторинг производительности, новые возможности контроля накопителей, дополнения к векторным средствам VMX и VSX (VSX-2), а также криптографические расширения AES[16][17] и Galois/Counter Mode (GCM), SHA-224, SHA-256[16], SHA-384 и SHA-512[16] (SHA-2) и алгоритмы циклического избыточного кода (CRC)[18].

Спецификация была пересмотрена в апреле 2015 до Power ISA v.2.07 B[19][20].

Совместимые ядра:

  • Все ядра, совместимые с предыдущими версиями Power ISA
  • POWER8
  • A2O

Power ISA v.3.0

Спецификация Power ISA v.3.0[21][22] была выпущена в ноябре 2015. Это первая версия, появившаяся после основания OpenPOWER Foundation. Она включает улучшения для широкого спектра рабочих нагрузок, упраздняет категории «сервер» и «встроенные системы», сохраняя при этом обратную совместимость, и добавляет поддержку инструкций VSX-3. Новые функции включают 128-битные операции с плавающей запятой четырёхкратной точности, генератор случайных чисел, аппаратную поддержку сборки мусора и аппаратное обеспечение для доверенных вычислений.

Спецификация была пересмотрена в марте 2017 года до Power ISA v.3.0 B[19][23] и ещё раз до v3.0C в мае 2020 года[19][24][25]. Главным изменением от v3.0 к v3.0B было удаление аппаратной поддержки сборки мусора. Ключевое отличие между v3.0B и v3.0C заключается в том, что уровни соответствия, перечисленные в v3.1, были также добавлены в v3.0C.

Совместимые ядра:

  • Все ядра, совместимые с предыдущими версиями Power ISA
  • POWER9[26]
  • OpenPOWER Microwatt
  • Libre-SOC нацелена на совместимость Embedded FP с Power ISA 3.0

Power ISA v.3.1

Спецификация Power ISA v.3.1[19][27] была выпущена в мае 2020. В основном она обеспечивает поддержку новых функций, представленных в Power10, но также включает понятие опциональности в спецификацию PowerISA. Инструкции теперь могут быть длиной восемь байт («префиксные инструкции») в отличие от обычных четырехбайтных «словесных инструкций». Также добавлено множество новых функций для инструкций SIMD и VSX. VSX и расширение SVP64 предоставляют аппаратную поддержку для 16-битных чисел с плавающей запятой половинной точности[28][29].

Одним из новых ключевых преимуществ является расширении непосредственных значений в ветвлениях до 34 бит.

Спецификация была пересмотрена в сентябре 2021 года до Power ISA v.3.1B[30][19], а в мае 2024 года до Power ISA v.3.1C[19][31].

Совместимые ядра:

  • Все ядра, совместимые с предыдущими версиями Power ISA
  • Power10[32]
  • Power11

См. также

  • Open-source computing hardware

Примечания

  1. Final draft of Power ISA EULA
  2. The Open Power ISA: Architecture Compliancy and Future Foundations
  3. Section 2.2 of OPF Power ISA EULA
  4. Taylor, Ian Lance. 64-bit PowerPC ELF Application Binary Interface Supplement 1.9.
  5. Power Architecture 64-Bit ELF V2 ABI Specification, OpenPOWER ABI for Linux Supplement (16 июля 2015). Архивировано из оригинала 24 октября 2019 года.
  6. Asanović, Krste. Computer Architecture Research with RISC-V 18 (14 октября 2017).
  7. Power ISA v.2.03. Power.org (29 сентября 2006). Архивировано из оригинала 27 июля 2011 года.
  8. PowerPC Architecture Book, Version 2.02. IBM (24 февраля 2005). Дата обращения: 16 марта 2007. Архивировано из оригинала 18 октября 2007 года.
  9. PowerPC Book E v.1.0. IBM (7 мая 2002). Дата обращения: 16 марта 2007. Архивировано 10 марта 2018 года.
  10. Power ISA Version 2.04. Power.org (12 июня 2007). Дата обращения: 14 июня 2007. Архивировано из оригинала 27 сентября 2007 года.
  11. Power ISA Version 2.05. Power.org (23 октября 2007). Дата обращения: 18 декабря 2007. Архивировано из оригинала 24 ноября 2012 года.
  12. Power.org Debuts Specification Advances and New Services At Power Architecture Developer Conference (Press release). Power.org. 24 сентября 2007. Архивировано из оригинала 12 октября 2007. Дата обращения: 24 сентября 2007.
  13. 1 2 Power ISA Version 2.06 Revision B. Power.org (23 июля 2010). Дата обращения: 12 февраля 2011. Архивировано из оригинала 24 ноября 2012 года.
  14. Workload acceleration with the IBM POWER vector-scalar architecture. IBM (1 марта 2016). Дата обращения: 2 мая 2017.
  15. Power ISA 2.06 Rev. B enables full hardware virtualization for embedded space. EETimes (3 ноября 2010). Дата обращения: 8 июня 2011.
  16. 1 2 3 4 Power ISA Version 2.07. Power.org (15 мая 2013). Дата обращения: 2 ноября 2023. pages: 257-258
  17. Barbosa, Leonidas. POWER8 in-core cryptography. IBM (21 сентября 2014).
  18. POWER8, 2015, с. 48.
  19. 1 2 3 4 5 6 Instruction Set Architecture. OpenPOWER Foundation.
  20. Power ISA Version 2.07 B. Power.org (9 апреля 2015). Дата обращения: 23 февраля 2023.
  21. Announcing a New Era of Openness with Power 3.0
  22. Power ISA Version 3.0. openpowerfoundation.org (30 ноября 2016). Дата обращения: 6 января 2017. Архивировано из оригинала 3 августа 2017 года.
  23. Power ISA Version 3.0 B. IBM (29 марта 2017). Дата обращения: 23 февраля 2023.
  24. Power ISA Version 3.0 C. OpenPOWER Foundation (1 мая 2020). Дата обращения: 23 февраля 2023.
  25. list of Power ISA specifications
  26. [PATCH, COMMITTED] Add full Power ISA 3.0 / POWER9 binutils support
  27. Power ISA Version 3.1. OpenPOWER Foundation (1 мая 2020). Дата обращения: 23 февраля 2023.
  28. OPF_PowerISA_v3.1B.pdf. OpenPOWER Files. OpenPOWER Foundation. Дата обращения: 2 июля 2023.
  29. ls005.xlen.mdwn. libre-soc.org Git. Дата обращения: 2 июля 2023.
  30. Power ISA Version 3.1B. OpenPOWER Foundation (14 сентября 2021). Дата обращения: 23 февраля 2023.
  31. Power ISA Version 3.1C. OpenPOWER Foundation (26 мая 2024). Дата обращения: 4 июля 2024.
  32. Seo, Carlos Eduardo. We released the Instruction Set Architecture for POWER10. Power ISA v3.1 is available at the IBM Portal for OpenPOWER. twitter.com (12 мая 2020). Дата обращения: 23 мая 2020.

Литература