La ISA de energía es una arquitectura del conjunto de instrucciones (ISA), desarrollado por la Fundación OpenPower , dirigido por IBM . Fue desarrollado originalmente por el ahora desaparecido grupo industrial Power.org . [ cita requerida ] 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 dirigida por los fundadores de Power.org, IBM y Freescale Semiconductor . La ISA se divide en varias categorías y cada componente se define como parte de una categoría; cada categoría reside dentro de un ciertoLibro . Los procesadores implementan un conjunto de estas categorías. 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 , Punto flotante , 64 bits , etc. Todos los procesadores implementan la categoría Base.
Diseñador | |
---|---|
Bits | 32 bits / 64 bits (32 → 64) |
Introducido | 2006 |
Versión | 3.1 |
Diseño | RISC |
Tipo | Registrarse-Registrarse |
Codificación | Fijo / Variable |
Derivación | Código de condición |
Endianidad | Grande / Bi |
Extensiones | AltiVec , APU, DSP , CBEA |
Abierto | Sí, y libre de regalías |
Registros | |
|
Power ISA es una arquitectura de carga / 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 coma flotante .
- Registros de coma flotante (FPR) de 32 × 64 bits como parte de los VSR para operaciones de coma flotante.
- Registros vectoriales (VR) de 32 × 128 bits como parte de los VSR para operaciones vectoriales.
- Campos de registro de condición (CR) de 8 × 4 bits para el flujo de comparación y 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 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 de precisión simple y doble que cumplen con IEEE-754 , incluidas instrucciones adicionales de multiplicación y suma fusionadas (FMA) y de coma flotante decimal. Existen disposiciones para operaciones SIMD en datos enteros y de punto flotante en hasta 16 elementos en una sola instrucción.
Power ISA tiene soporte para caché de Harvard , es decir , cachés de instrucciones y datos divididos , así como soporte para cachés unificados. Las operaciones de memoria son estrictamente de carga / almacenamiento, pero permiten una ejecución fuera de orden . También hay soporte para el direccionamiento de endian grande y pequeño con categorías separadas para el endianness modelado y por página, así como para el direccionamiento de 32 bits y de 64 bits .
Los diferentes modos de operación incluyen usuario, supervisor e hipervisor.
Categorías
- Base : la mayor parte del libro I y el libro II
- Servidor - Libro III-S
- Integrado - 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":
- El 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, entero, punto flotante, aceleración numérica, programación a nivel de aplicación. Incluye capítulos sobre unidades de procesamiento auxiliares como DSP y la extensión AltiVec .
- El Libro II : Arquitectura de entorno virtual define el modelo de almacenamiento disponible para el programador de aplicaciones, incluidos el tiempo, la sincronización, la administració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, facilidades de depuración y funciones de control especiales. Está dividido en dos partes.
- Libro III-S : define las instrucciones del supervisor utilizadas para implementaciones de servidor / de propósito general. Es principalmente el contenido del Libro III de la antigua PowerPC ISA.
- Libro III-E : define las instrucciones del supervisor que se utilizan para las aplicaciones integradas. Se deriva del antiguo PowerPC Book E.
- Book 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 muy bajo nivel. Usan instrucciones de 16 bits y ordenamiento 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. La expansión de instrucciones y tecnologías ha hecho que la especificación completa sea difícil de manejar, por lo que OpenPOWER Foundation ha decidido habilitar el cumplimiento por niveles.
Estos niveles incluyen requisitos opcionales y obligatorios ; sin embargo, un malentendido común es que no hay nada que impida que una implementación sea compatible en un nivel inferior, pero que tenga una funcionalidad seleccionada adicional de niveles superiores, así como extensiones personalizadas. Sin embargo, se recomienda que se proporcione una opción para deshabilitar cualquier funcionalidad 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 la propiedad intelectual , ya sean patentes y marcas comerciales . Esto se explica en OpenPOWER EULA. [1]
Un diseño conforme debe… [2]
- Apoyar la arquitectura base
- Y admitir al menos uno de los subconjuntos
- SFS : subconjunto escalar de punto fijo. 129 instrucciones. Instrucciones básicas de punto fijo y carga / almacenamiento, que en realidad es la arquitectura Base .
- SFFS : subconjunto escalar de punto fijo + punto flotante. 214 instrucciones. Añadiendo operaciones de punto flotante a la Base.
- LCS : subconjunto de conformidad con Linux. 962 instrucciones. Diseñado para Linux de nivel de servidor, agregando características como 64 bits, SIMD / VSX opcional, Radix MMU, modo little endian y soporte de hipervisor.
- ACS - Subconjunto de cumplimiento de AIX. 1099 instrucciones. Diseñado para ejecutar AIX, agregando características como coma flotante de precisión decimal y cuádruple, modo big endian y multiprocesamiento simétrico.
- Puede incluir cualquiera de las características del LCS y ACS como Opcional o elegir entre las características Siempre Opcionales , como las matemáticas matriciales y la 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 la Arquitectura Sandbox .
Si la extensión es lo suficientemente de propósito general, OpenPOWER Foundation solicita a los implementadores que la envíen como una solicitud de comentarios (RFC) al grupo de trabajo OpenPOWER ISA . Tenga en cuenta que no es estrictamente necesario unirse a OpenPOWER Foundation para enviar RFC. [3]
- Mucho se puede implementar en hardware o firmware.
Discrepancia de cumplimiento de EABI y Linux
Las especificaciones de EABI son anteriores al anuncio y creación de los subconjuntos de conformidad.
Con respecto al subconjunto de conformidad de Linux 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 es opcional en el nivel de conformidad de Linux pero obligatorio en EABI v2.0 no se puede rectificar sin un esfuerzo considerable: la incompatibilidad hacia atrás para distribuciones GNU / Linux no es una opción viable. En la actualidad, esto deja a los nuevos implementadores de OpenPOWER que deseen ejecutar distribuciones GNU / Linux estándar y tengan que implementar un total de 962 instrucciones. Por el contrario, RISC-V RV64GC, el mínimo para ejecutar GNU / Linux, requiere solo 165. [6]
Especificaciones
Power ISA v.2.03
La especificación para Power ISA v.2.03 [7] se basa en el antiguo PowerPC ISA v.2.02 [8] en POWER5 + y la extensión Book E [9] de la especificación PowerPC . El Libro I incluyó cinco capítulos nuevos sobre unidades de procesamiento auxiliares como los DSP y la extensión AltiVec .
Núcleos compatibles
- Freescale PowerPC e200 , e500
- IBM PowerPC 405 , 440 , 460 , 970 , POWER5 y POWER6
- PPE de IBM Cell
Power ISA v.2.04
La especificación para Power ISA v.2.04 [10] se finalizó en junio de 2007. Se basa en Power ISA v.2.03 e incluye cambios principalmente en la parte del Libro III-S con respecto a virtualización , funcionalidad de hipervisor , particiones lógicas 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 v.2.05
La especificación para Power ISA v.2.05 [11] 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: Decimal Punto flotante 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
- POTENCIA6
- PowerPC 476
Power ISA v.2.06
La especificación para Power ISA v.2.06 [12] se publicó en febrero de 2009 y se revisó en julio de 2010. [13] Se basa en Power ISA v.2.05 e incluye extensiones para el procesador POWER7 y el núcleo e500-mc . Una característica nueva importante son las instrucciones de punto flotante escalares vectoriales ( VSX ). [14] El libro III-E también incluye una mejora significativa 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 funciones de virtualización. [13] [15]
Núcleos compatibles
- Todos los núcleos que cumplen con versiones anteriores de Power ISA
- POTENCIA7
- A2I
- e500-mc
- e5500
Power ISA v.2.07
La especificación para Power ISA v.2.07 [16] se publicó en mayo de 2013. Se basa en Power ISA v.2.06 e incluye mejoras importantes en la funcionalidad de partición lógica , memoria transaccional , supervisión de rendimiento ampliada, nuevas funciones de control de almacenamiento, adiciones a la Instalaciones vectoriales VMX y VSX (VSX-2), junto con AES [16] : 257 [17] y Modo Contador Galois (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]
Núcleos compatibles
- Todos los núcleos que cumplen con versiones anteriores de Power ISA
- POTENCIA8
- núcleo e6500
- A2O
Power ISA v.3.0
La especificación para Power ISA v.3.0 [20] [21] se publicó en noviembre de 2015. Es la primera que se publica después de la fundación de OpenPOWER Foundation e incluye mejoras para un amplio espectro de cargas de trabajo y elimina el servidor y las categorías integradas. mientras conserva la compatibilidad con versiones anteriores y agrega soporte para las 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 reforzada por hardware.
La especificación se revisó en marzo de 2017 a la especificación Power ISA v.3.0 B. [22] y revisado nuevamente a v3.0C en mayo de 2020. [23] La diferencia clave entre v3.0B y v3.0C es que los Niveles de Cumplimiento listados 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
- POWER9 [24]
- Microvatios OpenPOWER
- Libre-SOC tiene como objetivo el cumplimiento de FP integrado solo con Power ISA 3.0
Power ISA v.3.1
La especificación para Power ISA v.3.1 [25] se publicó en mayo de 2020. Principalmente brinda soporte para la nueva funcionalidad introducida en POWER10, pero también incluye la noción de opcionalidad a la especificación PowerISA. Las instrucciones ahora pueden tener ocho bytes de longitud, "instrucciones con prefijo", en comparación con las habituales "instrucciones de palabra" de cuatro bytes. También se agregan muchas funciones nuevas a las instrucciones SIMD y VSX.
Un beneficio clave de las nuevas instrucciones con prefijo de 64 bits es la extensión de los inmediatos en las ramas a 34 bits.
Núcleos compatibles
- Todos los núcleos que cumplen con versiones anteriores de Power ISA
- POTENCIA10 [26]
Ver también
- Hardware informático de código abierto
Referencias
- ^ Borrador final de Power ISA EULA
- ^ The Open Power ISA: cumplimiento de la arquitectura y fundamentos futuros
- ^ Sección 2.2 de OPF Power ISA EULA
- ^ ELF PP64 ABI
- ^ OpenPOWER EABI v2
- ^ Página 18 RISC-V "tarjeta verde"
- ^ "Power ISA v.2.03" . Power.org. 2006-09-29. Archivado desde el original el 24 de noviembre de 2012 . Consultado el 20 de octubre de 2010 .
- ^ "Libro de arquitectura de PowerPC, versión 2.02" . IBM. 2005-02-24. 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 . Consultado el 16 de marzo de 2007 .
- ^ "Power ISA versión 2.04" (PDF) . Power.org. 2007-06-12. 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. 2007-10-23. Archivado desde el original el 24 de noviembre de 2012 . Consultado el 18 de diciembre de 2007 .
- ^ "Power.org presenta avances en las especificaciones y nuevos servicios en la conferencia de desarrolladores de arquitectura de energía" (Comunicado de prensa). Power.org. 2007-09-24. Archivado desde el original el 12 de octubre de 2007 . Consultado el 24 de septiembre de 2007 .
- ^ a b "Power ISA Versión 2.06 Revisión B" . Power.org. 2010-07-23. 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 2 de mayo de 2017 .
- ^ "Power ISA 2.06 Rev. B permite la virtualización de hardware completa para el espacio integrado" . EETimes. 2010-11-03 . Consultado el 8 de junio de 2011 .
- ^ a b c d "Power ISA versión 2.07" (PDF) . Power.org. 2013-05-15 . Consultado el 23 de mayo de 2015 .
- ^ Leonidas Barbosa (21 de septiembre de 2014). "Criptografía en 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. 48. ISBN 9780738440927.
- ^ "Power ISA versión 2.07 B" . Power.org. 2015-04-09 . Consultado el 6 de enero de 2017 .
- ^ Anuncio de una nueva era de apertura con Power 3.0
- ^ "Power ISA Versión 3.0" . openpowerfoundation.org. 2016-11-30 . Consultado el 6 de enero de 2017 .
- ^ "Power ISA Versión 3.0 B" . Power.org. 2017-03-27 . Consultado el 11 de agosto de 2019 .
- ^ lista de especificaciones de Power ISA
- ^ [PARCHE, COMPROMETIDO] Agregue soporte completo para binutils Power ISA 3.0 / POWER9
- ^ "Power ISA Versión 3.1" . openpowerfoundation.org. 2020-05-01 . Consultado el 23 de mayo de 2020 .
- ^ Carlos Eduardo Seo (12 de mayo de 2020). "Lanzamos la arquitectura de conjunto de instrucciones para POWER10. Power ISA v3.1 está disponible en IBM Portal para OpenPOWER" . twitter.com . Consultado el 23 de mayo de 2020 .