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

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.

Литература