Power ISA — это RISC архитектура набора команд (ISA), в настоящее время разрабатываемая фондом OpenPOWER Foundation под руководством IBM. Изначально фонд был создан IBM и ныне несуществующей отраслевой группой . Power ISA является развитием архитектуры PowerPC ISA, возникшей в результате объединения основного набора команд PowerPC ISA и опционального модуля Book E для встраиваемых приложений. Объединение этих двух компонентов в 2006 году было инициировано основателями Power.org — компаниями IBM и Freescale Semiconductor.
Структура процессора
Power ISA относится к RISC . Она включает несколько наборов регистров: 32 регистра GPR общего назначения () размером 32 или 64 бита для целочисленных операций. 64 векторно-скалярных регистра VSR () размером 128 -бит для векторных операций и операций с плавающей запятой. 32 регистра FPR для операций с плавающей запятой () размером 64 бит. 32 векторных регистра VR () размером 128 бит. 8 полей регистров условий (, CR) размером 4 бита для сравнений и управления потоком выполнения. 11 специальных регистров различного размера: регистр счетчика CTR () регистр ссылки LR () регистры TBU, TBL временной базы () альтернативные регистры ATBU, ATBL временной базы () аккумулятор ACC () XER, FPSCR, VSCR, SPEFSCR ()
Инструкции до версии 3.0 имели длину 32 бита, за исключением подмножества (кодирование с переменной длиной, ) , которое обеспечивает более высокую плотность кода для встраиваемых приложений начального уровня. Версия 3.1 представила префиксы для создания 64-битных инструкций. Большинство инструкций являются триадными, то есть имеют два исходных операнда и один целевой. Поддерживаются операции с плавающей запятой одинарной и двойной точности, соответствующие стандарту IEEE 754, включая дополнительные версии с однократным округлением (, FMA) и десятичные операции с плавающей запятой. Предусмотрены возможности для выполнения операций «одна инструкция, множество данных» (, SIMD) над целочисленными и вещественными данными, обрабатывая до 16 элементов в одной инструкции.
Архитектура Power ISA поддерживает как кэш, то есть, , так и унифицированные кэши. Операции с памятью выполняются исключительно через команды загрузки/сохранения, но допускают внеочередное исполнение. Также реализована поддержка прямой и обратной адресации байтов (big-endian и little-endian) , с отдельными категориями для режимной и постраничной настройки порядка байтов, а также поддержка 32-битной и 64-битной адресации.
Различные режимы работы включают пользовательский, супервизорский и гипервизорский.
Категории До версии 3.0 набор инструкций (ISA) делился на несколько категорий. Процессоры реализовывали набор этих категорий в соответствии с их задачами. Различные классы процессоров требовались для реализации определённых категорий. Например, процессор серверного класса содержал категории: Базовая, Серверная, Плавающая точка, 64-битная и так далее. Все категории реализовывали базовую категорию. Базовая – Большая часть книг I и II Сервер – Книга III-S Встроенная – Книга III-E Прочее – плавающая точка, вектора, обработка сигналов, блокировка кэша, десятичные числа с плавающей запятой и т.д.
Книги Спецификация Power ISA разделена на пять частей, называемых «книгами»: Book 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 – Подмножество 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. Многие элементы могут быть реализованы как аппаратно, так и в виде прошивки.
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 Спецификация Power ISA v.2.03 основана на предыдущей версии PowerPC ISA v.2.02 для процессоров POWER5+ и расширении Книги E спецификации PowerPC. Книга I содержит пять новых глав, посвященных вспомогательным процессорным устройствам, таким как DSP и расширение AltiVec.
Совместимые ядра: Freescale PowerPC , IBM PowerPC , , , 970, POWER5 и POWER6
Power ISA v.2.04 Спецификация Power ISA v.2.04 была завершена в июне 2007 года. Она основана на версии Power ISA v.2.03 и включает изменения, главным образом в Книге III-S в области виртуализации, функций гипервизора, и обработки виртуальных страниц.
Совместимые ядра: Все ядра, совместимые с предыдущими версиями Power ISA ядро от P.A. Semi от
Power ISA v.2.05 Спецификация Power ISA v.2.05 была выпущена в декабре 2007 года. Она основана на спецификации Power ISA v.2.04 и, в основном, изменения были внесены в Книгу I и Книгу III-S, включая существенные улучшения, такие как десятичная арифметкиа (категория «Десятичная арифметика чисел плавающей точкой» в Книге I) и улучшения серверного гипервизора.
Совместимые ядра: Все ядра, совместимые с предыдущими версиями Power ISA POWER6
Power ISA v.2.06 Спецификация Power ISA v.2.06 была выпущена в феврале 2009 и пересмотрена в июле 2010. Она основана на спецификации Power ISA v.2.05 и включает расширения для процессора POWER7 и . Существенным нововведением являются векторно-скалярные инструкции с числами с плавающей точкой (VSX). Книга III-E также включает существенные улучшения для встраиваемой спецификации, касающиеся гипервизора и виртуализации на одно- и многоядерных реализациях.
Спецификация была пересмотрена в ноябре 2010 года до версии Power ISA v.2.06 revision B, улучшив функции виртуализации.
Совместимые ядра: Все ядра, совместимые с предыдущими версиями Power ISA POWER7
e6500
Power ISA v.2.07 Спецификация 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
Power ISA v.3.0 Спецификация Power ISA v.3.0 была выпущена в ноябре 2015. Это первая версия, появившаяся после основания OpenPOWER Foundation. Она включает улучшения для широкого спектра рабочих нагрузок, упраздняет категории «сервер» и «встроенные системы», сохраняя при этом обратную совместимость, и добавляет поддержку инструкций VSX-3. Новые функции включают 128-битные операции с плавающей запятой четырёхкратной точности, генератор случайных чисел, аппаратную поддержку сборки мусора и аппаратное обеспечение для доверенных вычислений.
Спецификация была пересмотрена в марте 2017 года до Power ISA v.3.0 B и ещё раз до v3.0C в мае 2020 года. Главным изменением от v3.0 к v3.0B было удаление аппаратной поддержки сборки мусора. Ключевое отличие между v3.0B и v3.0C заключается в том, что уровни соответствия, перечисленные в v3.1, были также добавлены в v3.0C.
Совместимые ядра: Все ядра, совместимые с предыдущими версиями Power ISA POWER9
нацелена на совместимость Embedded FP с Power ISA 3.0
Power ISA v.3.1