Power ISA
| Power ISA | |
|---|---|
| Разработчик | |
| Разрядность | 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 архитектурам[англ.]. Она включает несколько наборов регистров:
- 32 регистра GPR общего назначения (англ. general-purpose registers) размером 32 или 64 бита для целочисленных операций.
- 64 векторно-скалярных регистра VSR (англ. vector scalar registers) размером 128 -бит для векторных операций и операций с плавающей запятой.
- 8 полей регистров условий (англ. condition register fields, CR) размером 4 бита для сравнений и управления потоком выполнения.
- 11 специальных регистров различного размера:
- регистр счетчика CTR (англ. Counter Register)
- регистр ссылки LR (англ. link register)
- регистры TBU, TBL временной базы (англ. time base)
- альтернативные регистры ATBU, ATBL временной базы (англ. alternate time base)
- аккумулятор ACC (англ. accumulator)
- регистры состояния[англ.] XER, FPSCR, VSCR, SPEFSCR (англ. status register)
Инструкции до версии 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 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].
Совместимые ядра:
См. также
Примечания
- ↑ Final draft of Power ISA EULA
- ↑ The Open Power ISA: Architecture Compliancy and Future Foundations
- ↑ Section 2.2 of OPF Power ISA EULA
- ↑ Taylor, Ian Lance. 64-bit PowerPC ELF Application Binary Interface Supplement 1.9.
- ↑ Power Architecture 64-Bit ELF V2 ABI Specification, OpenPOWER ABI for Linux Supplement (16 июля 2015). Архивировано из оригинала 24 октября 2019 года.
- ↑ Asanović, Krste. Computer Architecture Research with RISC-V 18 (14 октября 2017).
- ↑ Power ISA v.2.03. Power.org (29 сентября 2006). Архивировано из оригинала 27 июля 2011 года.
- ↑ PowerPC Architecture Book, Version 2.02. IBM (24 февраля 2005). Дата обращения: 16 марта 2007. Архивировано из оригинала 18 октября 2007 года.
- ↑ PowerPC Book E v.1.0. IBM (7 мая 2002). Дата обращения: 16 марта 2007. Архивировано 10 марта 2018 года.
- ↑ Power ISA Version 2.04. Power.org (12 июня 2007). Дата обращения: 14 июня 2007. Архивировано из оригинала 27 сентября 2007 года.
- ↑ Power ISA Version 2.05. Power.org (23 октября 2007). Дата обращения: 18 декабря 2007. Архивировано из оригинала 24 ноября 2012 года.
- ↑ Power.org Debuts Specification Advances and New Services At Power Architecture Developer Conference (Press release). Power.org. 24 сентября 2007. Архивировано из оригинала 12 октября 2007. Дата обращения: 24 сентября 2007.
- ↑ 1 2 Power ISA Version 2.06 Revision B. Power.org (23 июля 2010). Дата обращения: 12 февраля 2011. Архивировано из оригинала 24 ноября 2012 года.
- ↑ Workload acceleration with the IBM POWER vector-scalar architecture. IBM (1 марта 2016). Дата обращения: 2 мая 2017.
- ↑ Power ISA 2.06 Rev. B enables full hardware virtualization for embedded space. EETimes (3 ноября 2010). Дата обращения: 8 июня 2011.
- ↑ 1 2 3 4 Power ISA Version 2.07. Power.org (15 мая 2013). Дата обращения: 2 ноября 2023. pages: 257-258
- ↑ Barbosa, Leonidas. POWER8 in-core cryptography. IBM (21 сентября 2014).
- ↑ POWER8, 2015, с. 48.
- ↑ 1 2 3 4 5 6 Instruction Set Architecture. OpenPOWER Foundation.
- ↑ Power ISA Version 2.07 B. Power.org (9 апреля 2015). Дата обращения: 23 февраля 2023.
- ↑ Announcing a New Era of Openness with Power 3.0
- ↑ Power ISA Version 3.0. openpowerfoundation.org (30 ноября 2016). Дата обращения: 6 января 2017. Архивировано из оригинала 3 августа 2017 года.
- ↑ Power ISA Version 3.0 B. IBM (29 марта 2017). Дата обращения: 23 февраля 2023.
- ↑ Power ISA Version 3.0 C. OpenPOWER Foundation (1 мая 2020). Дата обращения: 23 февраля 2023.
- ↑ list of Power ISA specifications
- ↑ [PATCH, COMMITTED] Add full Power ISA 3.0 / POWER9 binutils support
- ↑ Power ISA Version 3.1. OpenPOWER Foundation (1 мая 2020). Дата обращения: 23 февраля 2023.
- ↑ OPF_PowerISA_v3.1B.pdf. OpenPOWER Files. OpenPOWER Foundation. Дата обращения: 2 июля 2023.
- ↑ ls005.xlen.mdwn. libre-soc.org Git. Дата обращения: 2 июля 2023.
- ↑ Power ISA Version 3.1B. OpenPOWER Foundation (14 сентября 2021). Дата обращения: 23 февраля 2023.
- ↑ Power ISA Version 3.1C. OpenPOWER Foundation (26 мая 2024). Дата обращения: 4 июля 2024.
- ↑ 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.








