Power ISA

Power ISA es una arquitectura de conjunto de instrucciones (ISA) reducido (RISC) actualmente desarrollada por la Fundación OpenPOWER, dirigida por IBM. Originalmente fue desarrollado por IBM y el ahora desaparecido grupo industrial Power.org. Power ISA es una evolución de la arquitectura PowerPC, creada por la fusión del núcleo ISA PowerPC ISA y el Libro E opcional para aplicaciones integradas. La fusión de estos dos componentes en 2006 fue liderada por los fundadores de Power.org, IBM y Freescale Semiconductor.

Características 
La ISA se divide en varias categorías que se describen en un determinado Libro. Los procesadores implementan un conjunto de estas categorías según sea necesario para su tarea. Se requieren diferentes clases de procesadores para implementar ciertas categorías, por ejemplo, un procesador de clase de servidor incluye las categorías: Base, Servidor, Coma flotante, 64 bits, etc. Todos los procesadores implementan la categoría Base.

Power ISA es una RISC arquitectura de carga-almacenamiento. Tiene varios conjuntos de registros:
 32 registros de propósito general (GPR) de 32 o 64 bits para operaciones de enteros.
 64 registros escalares vectoriales (VSR) de 128 bits para operaciones vectoriales y operaciones de coma flotante.
 32 registros de coma flotante (FPR) de 64 bits como parte de los VSR para operaciones de coma flotante.
 32 registros vectoriales (VR) de 128 bits como parte de los VSR para operaciones vectoriales.
 8 campos de registros de condiciones (CR) × 4 bits para comparación y control de flujo.
 11 registros especiales de varios tamaños: registro de contador (CTR), registro de enlace (LR), base de tiempo (TBU, TBL), base de tiempo alternativa (ATBU, ATBL), acumulador (ACC), registros de estado (XER, FPSCR, VSCR, SPEFSCR).

Las instrucciones hasta la versión 3.0 tienen una longitud de 32 bits, con la excepción del subconjunto VLE (codificación de longitud variable) que proporciona una densidad de código más alta para aplicaciones integradas de gama baja, y la versión 3.1 que introdujo prefijos para crear instrucciones de 64 bits. La mayoría de las instrucciones son triádicas, es decir, tienen dos operandos de origen y un destino. Se admiten operaciones de coma flotante compatibles con precisión simple y precisión doble IEEE-754, incluidas instrucciones adicionales de multiplicar-sumar (FMA) y coma flotante decimal. Existen provisiones para operaciones instrucción única, datos múltiples (SIMD) en datos enteros y de coma flotante en hasta 16 elementos en una instrucción.

Power ISA tiene soporte para caché Harvard, es decir, cachés de instrucciones y datos divididas y soporte para cachés unificadas. Las operaciones de memoria son estrictamente de carga/almacenamiento, pero permiten la ejecución fuera de orden. También hay soporte para direccionamiento big y little-endian con categorías separadas para endianness por página y modo, y soporte para direccionamiento 32 bits y 64 bits.

Los diferentes modos de operación incluyen usuario, supervisor e hipervisor.

Categorías 
Base: La mayor parte de los Libro I y Libro II
Servidor: Libro III-S
Embedded: Libro III-E
Misc: coma flotante, vector, procesamiento de señales, bloqueo de caché, coma flotante decimal, etc.

Libros 
La especificación Power ISA se divide en cinco partes, llamadas "libros":
Libro I - Arquitectura del conjunto de instrucciones del usuario cubre el conjunto de instrucciones base disponible para el programador de aplicaciones. Referencia de memoria, control de flujo, enteros, coma flotante, aceleración numérica, programación a nivel de aplicación. Incluye capítulos sobre unidades de procesamiento auxiliares como procesadores de señales digitales (DSP) y la extensión AltiVec.
Libro II - Arquitectura de entorno virtual define el modelo de almacenamiento disponible para el programador de aplicaciones, incluidos el tiempo, la sincronización, la gestión de caché, las funciones de almacenamiento y el orden de bytes.
Libro III - Arquitectura del entorno operativo incluye excepciones, interrupciones, gestión de memoria, funciones de depuración y funciones de control especiales. Se divide en dos partes.
Libro III-S: define las instrucciones de supervisor utilizadas para implementaciones de propósito general/servidor. Se trata principalmente del contenido del Libro III del antiguo ISA PowerPC.
Libro III-E: define las instrucciones del supervisor utilizadas para las aplicaciones integradas. Se deriva del antiguo PowerPC Libro E.
Libro VLE: Arquitectura de instrucción codificada de longitud variable define instrucciones y definiciones alternativas de los libros I–III, destinadas a una mayor densidad de instrucción y aplicaciones de gama muy baja. Utilizan instrucciones de 16 bits y ordenación de bytes big-endian.

Cumplimiento 
Lo nuevo en la versión 3 de Power ISA es que no tiene que implementar toda la especificación para cumplir. La proliferación de instrucciones y tecnologías ha hecho que la especificación completa sea difícil de manejar, por lo que Foundación OpenPOWER decidió habilitar el cumplimiento por niveles.

Estos niveles incluyen requisitos «opcionales» y «obligatorios». Sin embargo, se recomienda que se proporcione una opción para deshabilitar cualquier función adicional más allá del nivel de subconjunto declarado del diseño.

Un diseño debe cumplir con su nivel de subconjunto declarado para hacer uso de la protección de la Fundación con respecto al uso de propiedad intelectual, ya sea patentes o marcas registradas. Esto se explica en el EULA de OpenPOWER.

Un diseño compatible debe:
 Admitir la arquitectura Base
 Y soportar al menos uno de los subconjuntos
 SFS – Subconjunto escalar de coma fija. 129 instrucciones. Instrucciones básicas de coma fija y carga/almacenamiento, que es realmente la arquitectura "Base".
 SFFS – Subconjunto escalar de coma fija + coma flotante. 214 instrucciones. Agregar operaciones de coma flotante a la Base.
 LCS – subconjunto de cumplimiento de Linux. 962 instrucciones. Diseñado para Linux de nivel de servidor, agrega características como 64 bits, SIMD/VSX opcional, Radix MMU, modo little endian y compatibilidad con hipervisor.
 ACS – Subconjunto de cumplimiento AIX. 1099 instrucciones. Destinado a ejecutar AIX, añadiendo características como coma flotante de precisión cuádruple y decimal, modo big endian y multiprocesamiento simétrico.
 Puede incluir cualquiera de las funciones de LCS y ACS como Opcional o elegir entre las funciones Siempre opcionales, como matriz matemática y administración de energía.
 Las funciones opcionales, si se eligen, deben implementarse en su totalidad (no se permite la implementación parcial de una función opcional)
 Puede incluir extensiones Personalizadas, específicas de la implementación, implementadas en el Architecture Sandbox.
Si la extensión es lo suficientemente general, OpenPOWER Foundation solicita a los implementadores que la envíen como una solicitud de comentarios (RFC) al OpenPOWER ISA Workgroup. Tenga en cuenta que no es estrictamente necesario unirse a la Fundación OpenPOWER para enviar RFC.
 Mucho de esto puede implementarse en hardware o firmware.

Discrepancia en el cumplimiento de EABI y Linux 
Las especificaciones de EABI son anteriores al anuncio y la creación de los subconjuntos de Cumplimiento.
 
Con respecto al subconjunto de cumplimiento de Linux que tiene VSX (SIMD) opcional: en 2003 EABI v1.9 de 64 bits hizo que SIMD fuera opcional, pero en julio de 2015, para mejorar el rendimiento de los sistemas IBM POWER9, SIMD se hizo obligatorio en EABI v2.0. Esta discrepancia entre que SIMD sea opcional en el nivel de cumplimiento de Linux pero obligatorio en EABI v2.0 no se puede rectificar sin un esfuerzo considerable: la incompatibilidad con versiones anteriores de las distribuciones de Linux no es una opción viable. En la actualidad, esto deja a los nuevos implementadores de OpenPOWER que deseen ejecutar distribuciones Linux estándar teniendo que implementar instrucciones en gran cantidad: 962. Por el contrario, RISC-V RV64GC, el mínimo para ejecutar Linux requiere solo 165.

Especificaciones

Power ISA v2.03 
La especificación para Power ISA v2.03 se basa en el antiguo PowerPC ISA v2.02 del POWER5+ y el Libro E de la extensión de la especificación PowerPC. El Libro I incluía cinco nuevos capítulos sobre unidades auxiliares de procesamiento como DSP y la extensión AltiVec.

Núcleos compatibles
 Freescale PowerPC e200, e500
 IBM PowerPC 405, 440, 460, 970, POWER5 y POWER6
 IBM Cell EPP

Power ISA v2.04 
La especificación para Power ISA v2.04 se finalizó en junio de 2007. Se basa en Power ISA v2.03 e incluye cambios, principalmente en la parte del Libro III-S, con respecto a la virtualización, funciones de hipervisor, particionamiento lógico y manejo de página virtual.

Núcleos compatibles
 Todos los núcleos que cumplen con las versiones anteriores de Power ISA
 El núcleo PA6T de P.A. Semi
 Titan de AMCC

Energía ISA v.2.05 
La especificación para Power ISA v2.05 se publicó en diciembre de 2007. Se basa en Power ISA v.2.04 e incluye cambios principalmente en el "Libro I" y el "Libro III-S", incluidas mejoras significativas como la aritmética decimal (Categoría: Coma flotante decimal en Libro I) y mejoras en el hipervisor del servidor.

Núcleos compatibles
 Todos los núcleos que cumplen con las versiones anteriores de Power ISA
 POWER6
 PowerPC 476

Energía ISA v.2.06 
La especificación para Power ISA v2.06 se lanzó en febrero de 2009 y se revisó en julio de 2010. Se basa en Power ISA v2.05 e incluye extensiones para el procesador POWER7 y el núcleo e500-mc. Una nueva característica importante son las instrucciones de coma flotante escalar vectorial (VSX). El Book III-E también incluye mejoras significativas para la especificación integrada con respecto al hipervisor y la virtualización en implementaciones de uno o varios núcleos.

La especificación se revisó en noviembre de 2010 con respecto a la especificación Power ISA v2.06 revisión B, mejorando las funciones de virtualización.

Núcleos compatibles
 Todos los núcleos que cumplen con las versiones anteriores de Power ISA
 POWER7
 A2I
 e500-mc
 e5500

POWER ISA v.2.07 
La especificación para Power ISA v2.07 se lanzó en mayo de 2013. Se basa en Power ISA v2.06 e incluye importantes mejoras en funciones de partición lógica, memoria transaccional, monitoreo de rendimiento, nuevas funciones de control de almacenamiento, adiciones a las instalaciones de vector VMX y VSX (VSX-2), junto con AES< ref></ref> y Modo de contador de Galois (GCM), extensiones criptográficas SHA-224, SHA-256, SHA-384 y SHA-512 (SHA-2) y algoritmos de comprobación de redundancia cíclica (CRC).
 
La especificación se revisó en abril de 2015 a la especificación Power ISA v.2.07 B.

Núcleos compatibles
 Todos los núcleos que cumplen con las versiones anteriores de Power ISA
 POWER8
 e6500 núcleo
 A2O

POWER ISA v3.0
La especificación para Power ISA v3.0 se lanzó en noviembre de 2015. Es el primero en salir después de la creación de la Fundación OpenPOWER e incluye mejoras para un amplio espectro de cargas de trabajo y elimina el servidor y las categorías incrustadas mientras conserva la compatibilidad con versiones anteriores y agrega soporte para Instrucciones VSX-3. Las nuevas funciones incluyen operaciones de coma flotante de precisión cuádruple de 128 bits, un generador de números aleatorios, recolección de basura asistida por hardware y computación confiable aplicada por hardware.

La especificación se revisó en marzo de 2017 con respecto al Power ISA v3.0 B. y revisado nuevamente a v3.0C en mayo de 2020.
La diferencia clave entre v3.0B y v3.0C es que los niveles de cumplimiento enumerados en v3.1 también se agregaron a v3.0C.

Núcleos compatibles
 Todos los núcleos que cumplen con las versiones anteriores de Power ISA
 POWER9
 OpenPOWER Microvatios
 Libre-SOC tiene como objetivo la compatibilidad con Embedded FP solo con Power ISA 3.0

Energía ISA v3.1 
La especificación para Power ISA v3.1 se lanzó en mayo de 2020. Principalmente brinda soporte para las nuevas funciones introducidas en Power10, pero también incluye la noción de opcionalidad para la especificación PowerISA. Las instrucciones ahora pueden tener ocho bytes de largo, «instrucciones prefijadas», en comparación con las habituales «instrucciones de palabras» de cuatro bytes. También se agregan muchas funciones nuevas a las instrucciones SIMD y VSX.

Un beneficio clave de las nuevas instrucciones prefijadas de 64 bits es la extensión de las instrucciones inmediatas en las ramas a 34 bits.

Núcleos compatibles
 Todos los núcleos que cumplen con las versiones anteriores de Power ISA
 Power10

Véase también
Anexo:Hardware de código abierto

Referencias

Enlaces externos 

Microprocesadores IBM
Microprocesadores de código abierto
Arquitectura de computadoras
Introducciones relacionadas a la ciencia de la computación de 2006