Перейти к содержанию

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 Категория:Микропроцессоры с открытым исходным кодом

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