Power ISA — это архитектура набора команд компьютера (ISA) с сокращенным набором команд (RISC), в настоящее время разработанная OpenPOWER Foundation под руководством IBM . Первоначально он был разработан IBM и ныне несуществующей отраслевой группой Power.org . Power ISA — это эволюция PowerPC ISA , созданная в результате слияния базовой PowerPC ISA и дополнительной книги E для встроенных приложений. Слияние этих двух компонентов в 2006 году возглавили основатели Power.org IBM и Freescale Semiconductor .
До версии 3.0 ISA была разделена на несколько категорий. Процессоры реализуют набор этих категорий в соответствии с требованиями своей задачи. Для реализации определенных категорий требуются разные классы процессоров, например, процессор серверного класса включает категории: Base , Server , Floating-Point , 64-Bit и т. д. Все процессоры реализуют базовую категорию.
Power ISA — это RISC- архитектура загрузки/сохранения . Он имеет несколько наборов регистров :
Инструкции до версии 3.0 имеют длину 32 бита, за исключением подмножества VLE (кодирование переменной длины), которое обеспечивает более высокую плотность кода для встраиваемых приложений начального уровня, и версии 3.1, в которой введен префикс для создания 64-битных инструкций. . Большинство инструкций являются триадными , т.е. имеют два исходных операнда и один пункт назначения. Поддерживаются операции с плавающей запятой одинарной и двойной точности , соответствующие IEEE-754 , включая дополнительные инструкции плавного умножения-сложения (FMA) и десятичные инструкции с плавающей запятой. Существуют возможности для операций с одной командой и несколькими данными (SIMD) над целочисленными данными и данными с плавающей запятой, содержащими до 16 элементов в одной инструкции.
Power ISA поддерживает Гарвардский кэш , то есть разделение кэшей данных и инструкций , а также поддержку унифицированных кэшей. Операции с памятью являются строго загрузкой/сохранением, но допускают выполнение вне очереди . Также имеется поддержка как прямого, так и прямого порядка байтов с отдельными категориями для модируемого и постраничного порядка байтов, а также поддержка как 32-битной , так и 64-битной адресации.
Различные режимы работы включают пользователя, супервизор и гипервизор.
Спецификация Power ISA разделена на пять частей, называемых «книгами»:
Новым в версии 3 Power ISA является то, что вам не нужно реализовывать всю спецификацию для обеспечения соответствия. Разрастание инструкций и технологий сделало всю спецификацию громоздкой, поэтому OpenPOWER Foundation решил включить многоуровневую совместимость.
Эти уровни включают в себя необязательные и обязательные требования, однако одно распространенное заблуждение заключается в том, что ничто не мешает реализации быть совместимой на более низком уровне, кроме наличия дополнительных выбранных функций с более высоких уровней и пользовательских расширений. Однако рекомендуется предусмотреть возможность отключения любых добавленных функций, выходящих за рамки объявленного уровня подмножества проекта.
Чтобы можно было пользоваться защитой Фонда в отношении использования интеллектуальной собственности , будь то патенты или товарные знаки , дизайн должен соответствовать требованиям на заявленном уровне подмножества. Это объясняется в OpenPOWER EULA. [1]
Соответствующий проект должен: [2]
Если расширение является достаточно универсальным, OpenPOWER Foundation просит разработчиков отправить его в виде запроса на комментарии (RFC) в рабочую группу OpenPOWER ISA. Обратите внимание, что для подачи RFC не обязательно присоединяться к OpenPOWER Foundation. [3]
Спецификации EABI появились до объявления и создания подмножеств соответствия.
Что касается подмножества совместимости Linux с дополнительным VSX (SIMD): в 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 [7] основана на предыдущей версии PowerPC ISA v.2.02 [8] в POWER5 + и расширении Book E [9] спецификации PowerPC . В книгу 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 и включает изменения в первую очередь в Book I и Book 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 версии B, что расширило возможности виртуализации. [13] [15]
Спецификация Power ISA v.2.07 [16] была выпущена в мае 2013 года. Она основана на Power ISA v.2.06 и включает в себя основные улучшения функций логических разделов , транзакционной памяти , расширенный мониторинг производительности, новые функции управления хранилищем, дополнения к Векторные средства VMX и VSX (VSX-2), а также AES [16] : 257 [17] и режим счетчика Галуа (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] и снова пересмотрена до версии 3.0C в мае 2020 года. [19] [24] [25] Одно существенное изменение по сравнению с версией 3.0. до версии 3.0B — это удаление поддержки аппаратной сборки мусора. Ключевое различие между версией 3.0B и версией 3.0C заключается в том, что уровни соответствия, перечисленные в версии 3.1, также были добавлены в версию 3.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]