Power ISA — это архитектура набора инструкций (ISA) компьютера с сокращенным набором команд (RISC) , в настоящее время разрабатываемая OpenPOWER Foundation под руководством IBM . Первоначально она была разработана IBM и ныне несуществующей промышленной группой Power.org . Power ISA — это эволюция PowerPC ISA , созданная путем слияния основного PowerPC ISA и дополнительного Book E для встраиваемых приложений. Слияние этих двух компонентов в 2006 году было инициировано основателями Power.org IBM и Freescale Semiconductor .
До версии 3.0 ISA делилась на несколько категорий. Процессоры реализуют набор этих категорий в соответствии с требованиями их задач. Для реализации определенных категорий требуются различные классы процессоров, например, процессор серверного класса включает категории: Base , Server , Floating-Point , 64-Bit и т. д. Все процессоры реализуют категорию Base.
Power ISA — это архитектура загрузки/хранения RISC . Она имеет несколько наборов регистров :
Инструкции до версии 3.0 имеют длину 32 бита, за исключением подмножества VLE (переменная длина кодирования), которое обеспечивает более высокую плотность кода для низкоуровневых встраиваемых приложений, и версии 3.1, которая ввела префиксы для создания 64-битных инструкций. Большинство инструкций являются триадическими , т. е. имеют два исходных операнда и один целевой. Поддерживаются операции с плавающей точкой одинарной и двойной точности , соответствующие IEEE-754 , включая дополнительные инструкции с плавающей точкой с объединенным умножением-сложением (FMA) и десятичные инструкции с плавающей точкой. Имеются положения для операций с одной инструкцией, несколькими данными (SIMD) для целочисленных и плавающих данных на 16 элементах в одной инструкции.
Power ISA поддерживает кэш Harvard , т. е. разделенные кэши данных и инструкций , а также унифицированные кэши. Операции с памятью строго загрузочные/сохраненные, но допускают выполнение вне очереди . Также поддерживается адресация как big, так и little-endian с отдельными категориями для moded и per-page orderness, а также поддержка 32-битной и 64-битной адресации.
Различные режимы работы включают режим пользователя, супервизора и гипервизора.
Спецификация Power ISA разделена на пять частей, называемых «книгами»:
Новое в версии 3 Power ISA заключается в том, что вам не нужно реализовывать всю спецификацию, чтобы соответствовать требованиям. Разрастание инструкций и технологий сделало полную спецификацию громоздкой, поэтому OpenPOWER Foundation решила включить многоуровневую совместимость.
Эти уровни включают необязательные и обязательные требования, однако распространенное заблуждение заключается в том, что ничто не мешает реализации соответствовать требованиям на более низком уровне, но иметь дополнительные выбранные функции с более высоких уровней и пользовательские расширения. Тем не менее, рекомендуется предоставить возможность отключения любых добавленных функций за пределами объявленного уровня подмножества дизайна.
Дизайн должен соответствовать заявленному уровню подмножества, чтобы использовать защиту Фонда в отношении использования интеллектуальной собственности , будь то патенты или товарные знаки . Это объясняется в OpenPOWER EULA. [1]
Соответствующий проект должен: [2]
Если расширение достаточно универсально, OpenPOWER Foundation просит разработчиков отправить его в качестве запроса на комментарии (RFC) в рабочую группу OpenPOWER ISA. Обратите внимание, что для отправки RFC не обязательно присоединяться к OpenPOWER Foundation. [3]
Спецификации EABI появились еще до объявления и создания подмножеств Compliancy.
Что касается подмножества Linux Compliancy, имеющего VSX (SIMD) необязательно: в 2003–4 годах 64-разрядная версия EABI v1.9 сделала SIMD необязательным, [4] но в июле 2015 года для повышения производительности систем IBM POWER9 SIMD был сделан обязательным в EABI v2.0. [5] Это несоответствие между SIMD, необязательным на уровне Linux Compliancy, и обязательным в EABI v2.0, не может быть исправлено без значительных усилий: обратная несовместимость для дистрибутивов Linux не является жизнеспособным вариантом. В настоящее время это оставляет новых разработчиков OpenPOWER, желающих запустить стандартные дистрибутивы Linux, вынужденными реализовывать огромные 962 инструкции. Напротив, RISC-V RV64GC, минимум для запуска Linux, требует всего 165. [6]
Спецификация Power ISA v.2.03 [7] основана на бывшей PowerPC ISA v.2.02 [8] в POWER5 + и расширении Book E [9] спецификации PowerPC . Book I включала пять новых глав, касающихся вспомогательных процессоров, таких как DSP и расширение AltiVec .
Спецификация Power ISA v.2.04 [10] была завершена в июне 2007 года. Она основана на Power ISA v.2.03 и включает изменения, в первую очередь в части Book III-S , касающиеся виртуализации , функций гипервизора , логического разбиения и обработки виртуальных страниц .
Спецификация Power ISA v.2.05 [11] была выпущена в декабре 2007 года. Она основана на Power ISA v.2.04 и включает изменения, в первую очередь, в Книгу I и Книгу III-S , в том числе значительные усовершенствования, такие как десятичная арифметика (категория: десятичные числа с плавающей точкой в Книге I ) и улучшения гипервизора сервера.
Спецификация Power ISA v.2.06 [12] была выпущена в феврале 2009 года и пересмотрена в июле 2010 года. [13] Она основана на Power ISA v.2.05 и включает расширения для процессора POWER7 и ядра e500-mc . Одной из важных новых функций являются векторно-скалярные инструкции с плавающей точкой ( VSX ). [14] Книга III-E также включает значительное улучшение для встроенной спецификации относительно гипервизора и виртуализации в одно- и многоядерных реализациях.
Спецификация была пересмотрена в ноябре 2010 года до спецификации Power ISA v.2.06 revision B, улучшающей возможности виртуализации. [13] [15]
Спецификация Power ISA v.2.07 [16] была выпущена в мае 2013 года. Она основана на Power ISA v.2.06 и включает в себя значительные усовершенствования логических функций раздела , транзакционной памяти , расширенный мониторинг производительности, новые функции управления хранилищем, дополнения к векторным средствам VMX и VSX (VSX-2), а также криптографические расширения AES [16] : 257 [17] и Galois Counter Mode (GCM), SHA-224, SHA-256, [16] : 258 SHA-384 и SHA-512 [16] : 258 ( SHA-2 ) и алгоритмы циклической избыточности (CRC) . [18]
Спецификация была пересмотрена в апреле 2015 года до спецификации Power ISA v.2.07 B. [19] [20]
Спецификация 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 v.3.1 [19] [27] была выпущена в мае 2020 года. В основном она обеспечивает поддержку новых функций, представленных в Power10, но также включает понятие необязательности спецификации PowerISA. Инструкции теперь могут быть длиной восемь байтов , «префиксные инструкции», по сравнению с обычными четырехбайтовыми «словными инструкциями». Также добавлено множество новых функций для инструкций SIMD и VSX. VSX и расширение SVP64 обеспечивают аппаратную поддержку 16-битных чисел с плавающей точкой половинной точности. [28] [29]
Одним из ключевых преимуществ новых 64-битных префиксных инструкций является расширение непосредственных инструкций в ветвлениях до 34-битных.
Спецификация была пересмотрена в сентябре 2021 года до спецификации Power ISA v.3.1B. [19] [30]
Спецификация была пересмотрена в мае 2024 года до спецификации Power ISA v.3.1C. [19] [31]