
Power ISA es una arquitectura de conjunto de instrucciones (ISA) de computadora de conjunto de instrucciones reducido (RISC ) desarrollada actualmente por la Fundación OpenPOWER , liderada por IBM . Originalmente fue desarrollada por IBM y el ahora extinto grupo industrial Power.org . Power ISA es una evolución de PowerPC ISA, creada por las fusiones del núcleo PowerPC ISA y el Book 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 .
Antes de la versión 3.0, la ISA se dividía en varias categorías. 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 servidor incluye las categorías: Base , Server , Floating-Point , 64-Bit , etc. Todos los procesadores implementan la categoría Base.
Power ISA es una arquitectura de carga y almacenamiento RISC . Tiene varios conjuntos de registros :
- Registros de propósito general (GPR) de 32 × 32 bits o 64 bits para operaciones con números enteros .
- Registros escalares vectoriales (VSR) de 64 × 128 bits para operaciones vectoriales y operaciones de punto flotante .
- 32 registros de punto flotante (FPR) de 64 bits como parte de los VSR para operaciones de punto flotante.
- 32 registros vectoriales (VR) de 128 bits como parte de los VSR para operaciones vectoriales.
- Campos de registro de condición (CR) de 8 × 4 bits para comparación y flujo de control .
- 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 mayor densidad de código para aplicaciones integradas de gama baja, y la versión 3.1 que introdujo la prefijación para crear instrucciones de 64 bits. La mayoría de las instrucciones son triádicas , es decir, tienen dos operandos de origen y uno de destino. Se admiten operaciones de punto flotante de precisión simple y doble que cumplen con IEEE-754 , incluidas instrucciones adicionales de multiplicación-suma fusionada (FMA) y de punto flotante decimal. Hay disposiciones para operaciones de instrucción única, datos múltiples (SIMD) en datos enteros y de punto flotante en hasta 16 elementos en una instrucción.
Power ISA admite la caché Harvard , es decir, cachés de instrucciones y datos divididos , y admite cachés unificados. Las operaciones de memoria son estrictamente de carga/almacenamiento, pero permiten la ejecución fuera de orden . También hay soporte para direccionamiento big-endian y little-endian con categorías separadas para endianness por página y por modo, y soporte para direccionamiento de 32 bits y 64 bits .
Los diferentes modos de funcionamiento incluyen usuario, supervisor e hipervisor.
Categorías
- Base – La mayor parte del Libro I y el Libro II
- Servidor – Libro III-S
- Incrustado – Libro III-E
- Varios : punto flotante, vector, procesamiento de señales, bloqueo de caché, punto 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 básico disponible para el programador de aplicaciones. Referencia de memoria, control de flujo, números enteros, punto 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 del entorno virtual define el modelo de almacenamiento disponible para el programador de aplicaciones, incluyendo temporización, sincronización, gestión de caché, características de almacenamiento y ordenamiento de bytes.
- Libro III – Arquitectura del entorno operativo incluye excepciones, interrupciones, gestión de memoria, facilidades de depuración y funciones especiales de control. Se divide en dos partes.
- Libro III-S : define las instrucciones de supervisión utilizadas para implementaciones de propósito general/servidor. Se trata principalmente del contenido del Libro III de la antigua ISA de PowerPC.
- Libro III-E : define las instrucciones de supervisión que se utilizan para aplicaciones integradas. Se deriva del antiguo Libro E de PowerPC.
- El libro VLE – Arquitectura de instrucciones codificadas de longitud variable define instrucciones y definiciones alternativas de los libros I a III, pensadas para aplicaciones de gama muy baja y con mayor densidad de instrucciones. Utilizan instrucciones de 16 bits y ordenación de bytes big-endian.
Cumplimiento
La novedad de la versión 3 de Power ISA es que no es necesario implementar toda la especificación para cumplir con las normas. La proliferación de instrucciones y tecnologías ha hecho que la especificación completa sea difícil de manejar, por lo que la Fundación OpenPOWER ha decidido habilitar la conformidad por niveles.
Estos niveles incluyen requisitos obligatorios y opcionales, pero un malentendido común es que no hay nada que impida que una implementación sea compatible en un nivel inferior pero tenga funciones seleccionadas adicionales de niveles superiores y extensiones personalizadas. Sin embargo, se recomienda que se proporcione una opción para deshabilitar cualquier función agregada más allá del nivel de subconjunto declarado del diseño.
Un diseño debe cumplir con los requisitos en su nivel de subconjunto declarado para poder hacer uso de la protección de la Fundación en lo que respecta al uso de propiedad intelectual , ya sean patentes o marcas registradas . Esto se explica en el EULA de OpenPOWER. [1]
Un diseño conforme debe: [2]
- Apoyar la arquitectura base
- Y apoyar al menos uno de los subconjuntos
- SFS – Subconjunto escalar de punto fijo. 129 instrucciones. Instrucciones básicas de punto fijo y de carga/almacenamiento, que en realidad constituyen la arquitectura base .
- SFFS – Subconjunto escalar de punto fijo y punto flotante. 214 instrucciones. Adición de operaciones de punto flotante a la base.
- LCS – Subconjunto de compatibilidad con Linux. 962 instrucciones. Diseñado para servidores Linux, con funciones como 64 bits, SIMD/VSX opcional, MMU de Radix, modo little-endian y compatibilidad con hipervisor.
- ACS – Subconjunto de compatibilidad con AIX . Instrucciones 1099. Diseñado para ejecutar AIX, agregando funciones como coma flotante decimal y de precisión cuádruple, modo big-endian y multiprocesamiento simétrico.
- Puede incluir cualquiera de las características de LCS y ACS como opcionales o elegir entre las características siempre opcionales, como matemática matricial y administración de energía.
- Las características opcionales, si se eligen, deben implementarse en su totalidad (no se permite la implementación parcial de una característica opcional)
- Puede incluir extensiones personalizadas, específicas para la implementación, implementadas en el Sandbox de arquitectura .
Si la extensión es de uso general, la Fundación OpenPOWER solicita a los implementadores que la envíen como una solicitud de comentarios (RFC) al grupo de trabajo de ISA de OpenPOWER. Tenga en cuenta que no es estrictamente necesario unirse a la Fundación OpenPOWER para enviar RFC. [3]
- Mucho se puede implementar tanto en hardware como en firmware.
Discrepancia entre EABI y Linux Compliancy
Las especificaciones EABI son anteriores al anuncio y la creación de los subconjuntos de cumplimiento.
En cuanto al subconjunto Linux Compliancy que tiene VSX (SIMD) opcional: en 2003-4, EABI v1.9 de 64 bits hizo que SIMD fuera opcional, [4] pero en julio de 2015, para mejorar el rendimiento de los sistemas IBM POWER9, SIMD se hizo obligatorio en EABI v2.0. [5] Esta discrepancia entre que SIMD sea opcional en el nivel Linux Compliancy pero obligatorio en EABI v2.0 no se puede rectificar sin un esfuerzo considerable: la incompatibilidad con versiones anteriores para distribuciones Linux no es una opción viable. En la actualidad, esto obliga a los nuevos implementadores de OpenPOWER que deseen ejecutar distribuciones Linux estándar a implementar la enorme cantidad de 962 instrucciones. Por el contrario, RISC-V RV64GC, el mínimo para ejecutar Linux, requiere solo 165. [6]
Presupuesto
Power ISA versión 2.03
La especificación de Power ISA v.2.03 [7] se basa en la anterior PowerPC ISA v.2.02 [8] en POWER5 + y en la extensión Book E [9] de la especificación PowerPC . El Book I incluyó cinco capítulos nuevos sobre unidades de procesamiento auxiliares como DSP y la extensión AltiVec .
- Núcleos compatibles
Power ISA versión 2.04
La especificación para Power ISA v.2.04 [10] se finalizó en junio de 2007. Está basada en Power ISA v.2.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áginas virtuales .
- Núcleos compatibles
- Todos los núcleos que cumplen con versiones anteriores de Power ISA
- El núcleo PA6T de PA Semi
- Titán de AMCC
Power ISA versión 2.05
La especificación para Power ISA v.2.05 [11] se publicó en diciembre de 2007. Está basada en Power ISA v.2.04 e incluye cambios principalmente en el Libro I y el Libro III-S , incluidas mejoras significativas como aritmética decimal (Categoría: Punto flotante decimal en el Libro I ) y mejoras en el hipervisor del servidor.
- Núcleos compatibles
- Todos los núcleos que cumplen con versiones anteriores de Power ISA
- PODER6
- PowerPC 476
Power ISA versión 2.06
La especificación para Power ISA v.2.06 [12] fue publicada en febrero de 2009 y revisada en julio de 2010. [13] Está basada en Power ISA v.2.05 e incluye extensiones para el procesador POWER7 y el núcleo e500-mc . Una característica nueva significativa son las instrucciones de punto flotante escalar-vectorial ( VSX ). [14] El Libro 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 a la especificación Power ISA v.2.06 revisión B, mejorando las características de virtualización. [13] [15]
- Núcleos compatibles
Power ISA versión 2.07
La especificación para Power ISA v.2.07 [16] fue lanzada en mayo de 2013. Está basada en Power ISA v.2.06 e incluye mejoras importantes en las funciones de partición lógica , memoria transaccional , monitoreo de rendimiento expandido, nuevas características de control de almacenamiento, adiciones a las facilidades de vector VMX y VSX (VSX-2), junto con AES [16] : 257 [17] y Galois Counter Mode (GCM), SHA-224, SHA-256, [16] : 258 SHA-384 y SHA-512 [16] : 258 ( SHA-2 ) extensiones criptográficas y algoritmos de verificación de redundancia cíclica (CRC) . [18]
La especificación se revisó en abril de 2015 a la especificación Power ISA v.2.07 B. [19] [20]
- Núcleos compatibles
Power ISA versión 3.0
La especificación para Power ISA v.3.0 [21] [22] se publicó en noviembre de 2015. Es la primera que se publicó después de la fundación de la Fundación OpenPOWER e incluye mejoras para un amplio espectro de cargas de trabajo y elimina las categorías de servidor e integrado, al tiempo que conserva la compatibilidad con versiones anteriores y agrega soporte para instrucciones VSX-3. Las nuevas funciones incluyen operaciones de punto 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 reforzada por hardware.
La especificación se revisó en marzo de 2017 a la especificación Power ISA v.3.0 B, [19] [23] y se revisó nuevamente a v3.0C en mayo de 2020. [19] [24] [25] Un cambio importante de v3.0 a v3.0B es la eliminación del soporte para la recolección de basura asistida por hardware. 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 versiones anteriores de Power ISA
- PODER9 [26]
- Microvatios OpenPOWER
- Libre-SOC tiene como objetivo la compatibilidad de Embedded FP solo con Power ISA 3.0
Power ISA versión 3.1
La especificación para Power ISA v.3.1 [19] [27] se publicó 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 longitud, "instrucciones con prefijo", en comparación con las "instrucciones de palabra" habituales de cuatro bytes. También se agregaron muchas funciones nuevas para las instrucciones SIMD y VSX. VSX y la extensión SVP64 brindan soporte de hardware para números flotantes de precisión media de 16 bits. [28] [29]
Un beneficio clave de las nuevas instrucciones con prefijo de 64 bits es la extensión de las inmediatas en las ramas a 34 bits.
La especificación se revisó en septiembre de 2021 a la especificación Power ISA v.3.1B. [19] [30]
La especificación se revisó en mayo de 2024 a la especificación Power ISA v.3.1C. [19] [31]
- Núcleos compatibles
- Todos los núcleos que cumplen con versiones anteriores de Power ISA
- Potencia 10 [32]
Véase también
Referencias
- ^ Borrador final del EULA de Power ISA
- ^ La Open Power ISA: Cumplimiento de la arquitectura y bases futuras
- ^ Sección 2.2 del CLUF de ISA de OPF Power
- ^ ELF PP64 ABI
- ^ OpenPOWER EABI v2
- ^ Página 18 RISC-V "tarjeta verde"
- ^ "Power ISA v.2.03" (PDF) . Power.org. 29 de septiembre de 2006. Archivado desde el original (PDF) el 27 de julio de 2011.
- ^ "Libro de arquitectura de PowerPC, versión 2.02". IBM. 24 de febrero de 2005. Archivado desde el original el 18 de octubre de 2007. Consultado el 16 de marzo de 2007 .
- ^ "PowerPC Book E v.1.0" (PDF) . IBM. 2002-05-07. Archivado (PDF) desde el original el 2018-03-10 . Consultado el 2007-03-16 .
- ^ "Power ISA versión 2.04" (PDF) . Power.org. 12 de junio de 2007. Archivado desde el original (PDF) el 27 de septiembre de 2007. Consultado el 14 de junio de 2007 .
- ^ "Power ISA versión 2.05". Power.org. 23 de octubre de 2007. Archivado desde el original el 24 de noviembre de 2012. Consultado el 18 de diciembre de 2007 .
- ^ "Power.org presenta avances en especificaciones y nuevos servicios en la Power Architecture Developer Conference" (Comunicado de prensa). Power.org. 24 de septiembre de 2007. Archivado desde el original el 12 de octubre de 2007. Consultado el 24 de septiembre de 2007 .
- ^ ab "Power ISA versión 2.06 revisión B". Power.org. 23 de julio de 2010. Archivado desde el original el 24 de noviembre de 2012. Consultado el 12 de febrero de 2011 .
- ^ "Aceleración de la carga de trabajo con la arquitectura escalar-vectorial IBM POWER". IBM. 2016-03-01 . Consultado el 2017-05-02 .
- ^ "Power ISA 2.06 Rev. B permite la virtualización completa del hardware para el espacio integrado". EETimes. 2010-11-03 . Consultado el 2011-06-08 .
- ^ abcd "Power ISA versión 2.07" (PDF) . Power.org. 15 de mayo de 2013 . Consultado el 2 de noviembre de 2023 .
- ^ Barbosa, Leonidas (21 de septiembre de 2014). "Criptografía en el núcleo POWER8". IBM.
- ^ Técnicas de optimización y ajuste del rendimiento para procesadores IBM Power Systems, incluido IBM POWER8. IBM. Agosto de 2015. pág. 48. ISBN 9780738440927.
- ^ abcdef "Arquitectura del conjunto de instrucciones". Fundación OpenPOWER .
- ^ "Power ISA versión 2.07 B". Power.org. 9 de abril de 2015. Consultado el 23 de febrero de 2023 .
- ^ Anunciamos una nueva era de apertura con Power 3.0
- ^ "Power ISA versión 3.0". openpowerfoundation.org. 2016-11-30 . Consultado el 2017-01-06 .[ enlace muerto ]
- ^ "Power ISA versión 3.0 B". IBM. 29 de marzo de 2017. Consultado el 23 de febrero de 2023 .
- ^ "Power ISA versión 3.0 C". Fundación OpenPOWER. 2020-05-01 . Consultado el 2023-02-23 .
- ^ lista de especificaciones de Power ISA
- ^ [PARCHE, COMPROMETIDO] Agregar compatibilidad total con binutils de Power ISA 3.0/POWER9
- ^ "Power ISA versión 3.1". Fundación OpenPOWER. 2020-05-01 . Consultado el 2023-02-23 .
- ^ "OPF_PowerISA_v3.1B.pdf". Archivos OpenPOWER . Fundación OpenPOWER . Consultado el 2 de julio de 2023 .
- ^ "ls005.xlen.mdwn". libre-soc.org Git . Consultado el 2 de julio de 2023 .
- ^ "Power ISA versión 3.1B". Fundación OpenPOWER. 14 de septiembre de 2021. Consultado el 23 de febrero de 2023 .
- ^ "Power ISA versión 3.1C". Fundación OpenPOWER. 26 de mayo de 2024. Consultado el 4 de julio de 2024 .
- ^ Seo, Carlos Eduardo (12/05/2020). "Lanzamos la arquitectura del conjunto de instrucciones para POWER10. Power ISA v3.1 está disponible en el portal de IBM para OpenPOWER". twitter.com . Consultado el 23/05/2020 .