Power ISA
Power ISA — это архитектура набора команд (ISA) с сокращённым набором команд (RISC), разрабатываемая фондом OpenPOWER при ведущей роли IBM. Изначально фонд был учреждён IBM и ныне прекратившей существование отраслевой группой Power.org. Данная архитектура развилась из PowerPC ISA, объединив основной набор команд PowerPC с опциональным модулем «Книг» для встроенных систем. Слияние этих компонентов произошло в 2006 году по инициативе основателей Power.org — компаний IBM и Freescale Semiconductor.
Архитектура процессора[править | править код]
Power ISA относится к RISC-архитектурам. Она включает следующие наборы регистров процессора:
- 32 регистра общего назначения (GPR) разрядностью 32 или 64 бита для целочисленных операций.
- 64 векторно-скалярных регистра (VSR) размером 128 бит для векторных и операций с плавающей точкой.
- 32 регистра с плавающей точкой (FPR) разрядностью 64 бита.
- 32 векторных регистра (VR) размером 128 бит.
- 8 четырёхбитных полей регистра условий (CR) для операций сравнения и управления выполнением.
- 11 специализированных регистров различной разрядности:
- регистр счётчика (CTR)
- регистр связи (LR)
- регистры временной базы (TBU, TBL)
- альтернативные регистры временной базы (ATBU, ATBL)
- аккумулятор (ACC)
- регистры XER, FPSCR, VSCR, SPEFSCR
До версии 3.0 инструкции имели длину 32 бита, за исключением подмножества с переменной длиной кодирования, предназначенного для встраиваемых систем начального уровня. Версия 3.1 ввела префиксы для формирования 64-битных инструкций. Большинство команд являются трёхоперандными — с двумя исходными и одним целевым операндом. Поддерживаются операции с плавающей точкой одинарной и двойной точности в соответствии со стандартом IEEE 754, включая fused multiply-add (FMA) и десятичную арифметику. Архитектура обеспечивает возможности SIMD-операций над целыми и вещественными данными, обрабатывая до 16 элементов в одной инструкции.
Power ISA поддерживает как раздельные, так и унифицированные кэши. Операции с памятью выполняются исключительно через команды загрузки/сохранения с возможностью внеочередного исполнения. Реализована поддержка порядков байтов big-endian и little-endian с отдельными настройками для режимного и постраничного управления, а также 32-битная и 64-битная адресация.
Архитектура предусматривает пользовательский, супервизорский и гипервизорский режимы работы.
Категории инструкций[править | править код]
До версии 3.0 набор команд делился на несколько категорий. Процессоры реализовывали определённые категории в соответствии со своими задачами. Например, серверные процессоры включали категории: «Базовая», «Серверная», «Плавающая точка», «64-битная» и другие. Все реализации обязательно содержали базовую категорию.
- «Базовая» — основная часть книг I и II
- «Сервер» — Книга III-S
- «Встроенная» — Книга III-E
- «Прочие» — плавающая точка, векторные операции, обработка сигналов, блокировка кэша, десятичные числа с плавающей точкой
Структура спецификации[править | править код]
Спецификация Power ISA разделена на пять частей, называемых «книгами»:
- Книга I — «Архитектура набора команд пользователя» описывает базовый набор команд для прикладного программирования. Включает работу с памятью, управление потоком выполнения, целочисленные операции, операции с плавающей точкой, численное ускорение и программирование на уровне приложений. Содержит главы о вспомогательных процессорах, таких как цифровой сигнальный процессор (DSP) и расширение AltiVec.
- Книга II — «Архитектура виртуальной среды» определяет модель памяти для прикладного программиста, включая тайминги, синхронизацию, управление кэшем, особенности хранения и порядок байтов.
- Книга III — «Архитектура операционной среды» охватывает обработку исключений, прерываний, управление памятью, средства отладки и специальные функции управления. Состоит из двух частей:
- Книга III-S — определяет инструкции супервизора для серверных систем общего назначения. По содержанию соответствует Книге III предыдущей архитектуры PowerPC ISA.
- Книга III-E — определяет инструкции супервизора для встраиваемых приложений. Основана на предыдущей Книге E архитектуры PowerPC.
- Книга VLE — «Архитектура инструкций с переменной длиной» описывает альтернативные инструкции из Книг I–III для повышения плотности кода и низкоуровневых приложений. Использует 16-битные инструкции и порядок байтов big-endian.
Уровни соответствия[править | править код]
Начиная с третьей версии, реализации Power ISA не обязаны полностью соответствовать всей спецификации. Расширение набора команд сделало полную спецификацию громоздкой, поэтому OpenPOWER Foundation ввёл многоуровневую систему совместимости.
Уровни включают обязательные и опциональные требования. Реализация может соответствовать низкому уровню, но включать дополнительные функции из высших уровней и пользовательские расширения. Рекомендуется предусмотреть возможность отключения любых функций, выходящих за рамки заявленного подмножества уровня.
Проект должен соответствовать заявленному уровню подмножества для получения защиты Фонда в области интеллектуальной собственности, включая патенты и товарные знаки. Это подробно описано в лицензионном соглашении OpenPOWER.
Соответствующий проект должен:
- Поддерживать базовую архитектуру
- Поддерживать как минимум одно из подмножеств:
- SFS — скалярные операции с фиксированной точкой, 129 инструкций. Базовые инструкции для работы с числами с фиксированной точкой и загрузки/сохранения данных.
- SFFS — скалярные операции с фиксированной и плавающей точкой, 214 инструкций. Добавляет операции с плавающей точкой к базовой архитектуре.
- LCS — подмножество для совместимости, 962 инструкции. Предназначено для серверов под управлением Linux, добавляет 64-разрядность, опциональные SIMD/VSX, Radix MMU, режим little-endian и поддержку гипервизора.
- ACS — подмножество для совместимости с AIX, 1099 инструкций. Предназначено для запуска AIX, добавляет десятичную арифметику, числа с плавающей точкой учетверённой точности, режим big-endian и симметричную многопроцессорность.
- Возможно включение функций LCS и ACS в качестве опциональных, либо выбор из всегда опциональных функций, таких как матричные вычисления и управление питанием.
- Опциональные функции должны быть реализованы полностью (частичная реализация не допускается).
- Могут быть добавлены пользовательские расширения, реализованные в «Архитектурной песочнице». OpenPOWER Foundation призывает разработчиков представлять расширения общего назначения в виде RFC (не требуется членство в Фонде).
- Многие элементы могут быть реализованы как аппаратно, так и в виде прошивки.
EABI и расхождения с требованиями Linux[править | править код]
Спецификации EABI появились до объявления подмножеств соответствия.
Относительно необязательности VSX (SIMD) в подмножестве для Linux: в 2003–2004 годах 64-битная EABI v1.9 сделала SIMD необязательным, но в июле 2015 года для повышения производительности систем IBM POWER9 SIMD стал обязательным в EABI v2.0. Это расхождение, когда SIMD является необязательным на уровне соответствия Linux, но обязательным в EABI v2.0, не может быть устранено без значительных усилий, поскольку обратная несовместимость для дистрибутивов Linux неприемлема. В результате новые разработчики OpenPOWER, желающие запускать стандартные дистрибутивы Linux, вынуждены реализовывать большой набор из 962 инструкций. Для сравнения, RISC-V RV64GC, минимальный набор для запуска Linux, требует всего 165 инструкций.
Версии спецификаций[править | править код]
Power ISA v.2.03[править | править код]
Основана на PowerPC ISA v.2.02 для процессоров POWER5+ и расширении Книги E спецификации PowerPC. Книга I содержит пять новых глав, посвящённых вспомогательным процессорным устройствам, таким как цифровой сигнальный процессор и расширение AltiVec.
Совместимые ядра:
- Freescale PowerPC e200, e300, e500, e600
- IBM PowerPC 4xx, 7xx, PowerPC 970, POWER5, POWER6
Power ISA v.2.04[править | править код]
Завершена в июне 2007 года. Основана на версии v.2.03 с изменениями в основном в Книге III-S в области виртуализации, функций гипервизора и обработки страничной памяти.
Совместимые ядра:
- Все ядра, совместимые с предыдущими версиями Power ISA
- Ядро PA6T от P.A. Semi
- Ядро e700 от Freescale
Power ISA v.2.05[править | править код]
Выпущена в декабре 2007 года. Основана на спецификации v.2.04 с изменениями в Книге I и Книге III-S, включая значительные улучшения в десятичной арифметике (категория «Десятичная арифметика чисел плавающей точкой» в Книге I) и серверном гипервизоре.
Совместимые ядра:
- Все ядра, совместимые с предыдущими версиями Power ISA
- POWER6
- Ядро e5500 от Freescale
Power ISA v.2.06[править | править код]
Выпущена в феврале 2009 года и пересмотрена в июле 2010 года. Основана на спецификации v.2.05 с расширениями для процессора POWER7 и ядра e6500. Существенным нововведением стали векторно-скалярные инструкции с числами с плавающей точкой (AltiVec). Книга III-E включает значительные улучшения для встраиваемых систем в области гипервизора и виртуализации для одно- и многоядерных реализаций.
Спецификация была пересмотрена в ноябре 2010 года до версии Power ISA v.2.06 revision B с улучшенными функциями виртуализации.
Совместимые ядра:
- Все ядра, совместимые с предыдущими версиями Power ISA
- POWER7
- Ядра A2, A2I, A2O от IBM
- Ядро e6500 от Freescale
Power ISA v.2.07[править | править код]
Выпущена в мае 2013 года. Основана на Power ISA v.2.06 с значительными улучшениями в области транзакционной памяти, расширенного мониторинга производительности, новых возможностей контроля накопителей, дополнений к векторным средствам VMX и VSX (VSX-2), а также криптографическими расширениями AES, Galois/Counter Mode (GCM), SHA-224, SHA-256, SHA-384, SHA-512 (SHA-2) и алгоритмами циклического избыточного кода (CRC).
Спецификация пересмотрена в апреле 2015 года до Power ISA v.2.07 B.
Совместимые ядра:
- Все ядра, совместимые с предыдущими версиями Power ISA
- POWER8
- Ядро e6500 от NXP
Power ISA v.3.0[править | править код]
Выпущена в ноябре 2015 года. Первая версия после основания OpenPOWER Foundation. Включает улучшения для широкого спектра рабочих нагрузок, упраздняет категории «сервер» и «встроенные системы» при сохранении обратной совместимости и добавляет поддержку инструкций VSX-3. Новые функции включают 128-битные операции с плавающей запятой четырёхкратной точности, генератор случайных чисел, аппаратную поддержку сборки мусора и аппаратное обеспечение для транзакционной памяти.
Спецификация пересмотрена в марте 2017 года до Power ISA v.3.0 B и до v3.0C в мае 2020 года. Главным изменением в v3.0B стало удаление аппаратной поддержки сборки мусора. Ключевое отличие между v3.0B и v3.0C — добавление уровней соответствия, перечисленных в v3.1.
Совместимые ядра:
- Все ядра, совместимые с предыдущими версиями Power ISA
- POWER9
- Ядро A2O от IBM
- Ядро e6500 от NXP (нацелено на совместимость Embedded FP с Power ISA 3.0)
Power ISA v.3.1[править | править код]
Выпущена в мае 2020 года. Обеспечивает поддержку новых функций, представленных в Power10, и вводит понятие опциональности в спецификацию PowerISA. Инструкции теперь могут иметь длину восемь байт («префиксные инструкции») в отличие от стандартных четырёхбайтных «словесных инструкций». Добавлены многочисленные новые функции для инструкций SIMD и VSX. VSX и расширение SVP64 предоставляют аппаратную поддержку для 16-битных чисел с плавающей запятой половинной точности.
Одним из ключевых преимуществ является расширение непосредственных значений в ветвлениях до 34 бит.
Спецификация пересмотрена в сентябре 2021 года до Power ISA v.3.1B, а в мае 2024 года до Power ISA v.3.1C.
Совместимые ядра:
- Все ядра, совместимые с предыдущими версиями Power ISA
- Power10
- Power11
См. также[править | править код]
- Open-source computing hardware
Примечания[править | править код]
Литература[править | править код]
Категория:Архитектуры набора команд Категория:Аппаратное обеспечение IBM Категория:Freescale Semiconductor Категория:Микропроцессоры с открытым исходным кодом
Ссылки[править | править код]
- OpenPOWER ISA Workgroup
- Final draft of Power ISA EULA
- list of Power ISA specifications
- The Open Power ISA: Architecture Compliancy and Future Foundations
- [PATCH, COMMITTED] Add full Power ISA 3.0 / POWER9 binutils support
- Announcing a New Era of Openness with Power 3.0
- https://files.openpower.foundation/s/dAYSdGzTfW4j2r2
- https://git.libre-soc.org/?p=libreriscv.git;a=blob;f=openpower/sv/rfc/ls005.xlen.mdwn;hb=5e573680771f7a041d93d394003d6f9f08177a98#l131
- https://files.openpower.foundation/s/XXFoRATEzSFtdG8
- https://files.openpower.foundation/s/bo728kgiWfgMHAr
- https://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi.html
- https://openpowerfoundation.org/wp-content/uploads/2016/03/ABI64BitOpenPOWERv1.1_16July2015_pub4.pdf
- https://web.archive.org/web/20191024175612/https://openpowerfoundation.org/wp-content/uploads/2016/03/ABI64BitOpenPOWERv1.1_16July2015_pub4.pdf
- https://carrv.github.io/2017/slides/asanovic-riscv-research.pdf
- http://www.eetimes.com/electronics-products/electronic-product-reviews/power-products/4210382/Power-ISA-2-06-Rev-B
- http://www.ibm.com/developerworks/library/se-power8-in-core-cryptography/
- https://www.researchgate.net/publication/299472451
- https://www.power.org/technology-introduction/standards-specifications/
- https://web.archive.org/web/20121124005736/https://www.power.org/technology-introduction/standards-specifications/
- https://files.openpower.foundation/s/9izgC5Rogi5Ywmm
- https://twitter.com/carlos_seo/status/1259976682158555139?s=20
- http://www.power.org/resources/downloads/PowerISA_203_Final_Public.pdf
- https://web.archive.org/web/20110727183430/http://www.power.org/resources/downloads/PowerISA_203_Final_Public.pdf
- http://www.ibm.com/developerworks/eserver/library/es-archguide-v2.html
- https://web.archive.org/web/20071018025654/http://www.ibm.com/developerworks/eserver/library/es-archguide-v2.html
- https://www.nxp.com/docs/en/user-guide/BOOK_EUM.pdf?&fsrch=1
- https://web.archive.org/web/20180310135820/https://www.nxp.com/docs/en/user-guide/BOOK_EUM.pdf?&fsrch=1
- http://www.power.org/resources/downloads/PowerISA_Public.pdf
- https://web.archive.org/web/20070927235845/http://www.power.org/resources/downloads/PowerISA_Public.pdf
- http://www.power.org/news/pr/view?item_key=20eea4d0ce638d7641d7d04d529d9369fee9e280
- https://web.archive.org/web/20071012121931/http://www.power.org/news/pr/view?item_key=20eea4d0ce638d7641d7d04d529d9369fee9e280
- https://fileadmin.cs.lth.se/cs/education/EDAN25/PowerISA_V2.07_PUBLIC.pdf
- https://openpowerfoundation.org/specifications/isa/
- https://ibm.ent.box.com/s/jd5w15gz301s5b5dt375mshpq9c3lh4u
- https://ibm.ent.box.com/s/1hzcwkwf8rbju5h9iyf44wm94amnlcrv
- https://openpowerfoundation.org/?resource_lib=power-isa-version-3-0
- https://web.archive.org/web/20170803130442/https://openpowerfoundation.org/?resource_lib=power-isa-version-3-0