Articulo de referencia

Power ISA

Diagrama esquemático de alto nivel de un procesador Power ISA genérico. Power ISA es una arquitectura de conjunto de instrucciones (ISA) para computadoras con conjunto de instru...

Diagrama esquemático de alto nivel de un procesador Power ISA genérico.

Power ISA es una arquitectura de conjunto de instrucciones (ISA) para computadoras con conjunto de instrucciones reducido (RISC ) desarrollada actualmente por la Fundación OpenPOWER , liderada por IBM . Originalmente fue desarrollada por IBM y el grupo industrial Power.org, ahora desaparecido . Power ISA es una evolución de la ISA PowerPC , creada mediante la fusión de la ISA PowerPC principal y el Book E opcional para aplicaciones embebidas. 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, el conjunto de instrucciones (ISA) se dividía en varias categorías. Los procesadores implementaban un conjunto de estas categorías según lo requiriera su tarea . Diferentes clases de procesadores debían implementar ciertas categorías; por ejemplo, un procesador de clase servidor incluía las categorías: Base , Servidor , Punto Flotante , 64 bits , etc. Todos los procesadores implementaban la categoría Base.

Power ISA es una arquitectura RISC de carga/almacenamiento . Tiene múltiples conjuntos de registros :

  • 32 registros de propósito general (GPR) de 32 o 64 bits para operaciones con números enteros .
  • 64 registros escalares vectoriales (VSR) de 128 bits para operaciones vectoriales y operaciones de punto flotante .
    • 32 registros de punto flotante (FPR) de 64 bits como parte de los registros de servicio de variables (VSR) para operaciones de punto flotante.
    • 32 registros vectoriales (VR) de 128 bits como parte de los registros de secuencias vectoriales (VSR) para operaciones vectoriales.
  • 8 campos de registro de condición (CR) de 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 embebidas de gama baja, y la versión 3.1 que introdujo el prefijo 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 conformes con IEEE 754 , incluidas instrucciones adicionales de multiplicación-suma fusionada (FMA) e instrucciones de punto flotante decimal. Existen disposiciones para operaciones de instrucción única, datos múltiples (SIMD) en datos enteros y de punto flotante en hasta 16 elementos en una sola instrucción.

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

Los diferentes modos de funcionamiento incluyen usuario, supervisor e hipervisor.

Categorías

  • Base – La mayor parte del Libro I y del Libro II
  • Servidor – Libro III-S
  • Integrado – 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, denominadas "libros":

  • El Libro IArquitectura del Conjunto de Instrucciones de Usuario abarca el conjunto de instrucciones básicas disponibles para el programador de aplicaciones. Incluye referencias a memoria, control de flujo, números enteros y de coma flotante, aceleración numérica y programación a nivel de aplicación. También incluye capítulos sobre unidades de procesamiento auxiliares como los procesadores de señales digitales (DSP) y la extensión AltiVec .
  • El Libro IIArquitectura del Entorno Virtual define el modelo de almacenamiento disponible para el programador de aplicaciones, incluyendo la temporización, la sincronización, la gestión de la caché, las características de almacenamiento y el orden de los bytes.
  • El Libro IIIArquitectura del Entorno Operativo incluye excepciones, interrupciones, gestión de memoria, herramientas de depuración y funciones de control especiales. Está dividido en dos partes.
    • Libro III-S : define las instrucciones de supervisión utilizadas para implementaciones de propósito general/servidor. Contiene principalmente el contenido del Libro III del antiguo conjunto de instrucciones PowerPC.
    • Libro III-E : Define las instrucciones de supervisión utilizadas para aplicaciones integradas. Se deriva del antiguo Libro E de PowerPC.
  • El libro VLE ( Variable Length Encoded Instruction Architecture) define instrucciones y definiciones alternativas de los libros I a III, destinadas a una mayor densidad de instrucciones y aplicaciones de gama muy baja. Utilizan instrucciones de 16 bits y ordenación de bytes big-endian.

Cumplimiento

Una novedad de la versión 3 de Power ISA es que las implementaciones no necesitan implementar la especificación completa para ser compatibles. La gran cantidad 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 compatibilidad por niveles.

Estos niveles incluyen requisitos opcionales y obligatorios. Una implementación que cumpla con los requisitos de un nivel inferior puede incorporar funciones adicionales seleccionadas de niveles superiores y extensiones personalizadas. Se recomienda ofrecer una opción para deshabilitar cualquier función añadida que exceda el nivel de subconjunto declarado en el diseño.

Un diseño debe cumplir con los requisitos en su nivel de subconjunto declarado para poder beneficiarse de la protección de la Fundación en materia de propiedad intelectual , ya sean patentes o marcas registradas . Esto se explica en el EULA de OpenPOWER. [ 1 ]

Un diseño conforme debe: [ 2 ]

  • Compatibilidad con la arquitectura base
  • Y respaldar al menos uno de los subconjuntos
    • SFS – Subconjunto de punto fijo escalar. 129 instrucciones. Instrucciones básicas de punto fijo y de carga/almacenamiento, que en realidad constituyen la arquitectura base .
    • SFFS – Subconjunto de punto fijo escalar + punto flotante. 214 instrucciones. Añade operaciones de punto flotante a la base.
    • LCS – Subconjunto de Compatibilidad con Linux. 962 instrucciones. Diseñado para Linux de nivel de servidor, añade características como 64 bits, SIMD/VSX opcional, MMU Radix, modo little-endian y compatibilidad con hipervisor.
    • ACS – Subconjunto de compatibilidad con AIX . Instrucciones 1099. Diseñado para ejecutarse en AIX, añadiendo características como punto 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 bien elegir entre las características siempre opcionales, como matemáticas matriciales 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 Architecture Sandbox . Si la extensión es lo suficientemente general, la Fundación OpenPOWER solicita a los implementadores que la envíen como una Solicitud de Comentarios (RFC) al Grupo de Trabajo de OpenPOWER ISA . Tenga en cuenta que no es estrictamente necesario unirse a la Fundación OpenPOWER para enviar RFC. [ 1 ] : Sección 2.2
  • Gran parte de la implementación puede realizarse tanto en el hardware como en el firmware.

Discrepancia entre EABI y compatibilidad con Linux

Las especificaciones de EABI son anteriores al anuncio y la creación de los subconjuntos de conformidad.

En cuanto al subconjunto de compatibilidad con Linux que tiene VSX (SIMD) opcional: en 2003-04, EABI v1.9 de 64 bits hizo que SIMD fuera opcional, [ 3 ] pero en julio de 2015, para mejorar el rendimiento de los sistemas IBM POWER9, SIMD se hizo obligatorio en EABI v2.0. [ 4 ] Esta discrepancia entre SIMD siendo opcional en el nivel de compatibilidad con Linux pero obligatorio en EABI v2.0 no se puede rectificar sin un esfuerzo considerable: la incompatibilidad con versiones anteriores para las distribuciones de Linux no es una opción viable.

Presupuesto

Power ISA v.2.03

La especificación para Power ISA v.2.03 [ 5 ] se basa en la anterior PowerPC ISA v.2.02 [ 6 ] en POWER5 + y en la extensión del Libro E [ 7 ] de la especificación PowerPC . El Libro I incluyó cinco capítulos nuevos sobre unidades de procesamiento auxiliares como DSP y la extensión AltiVec .

núcleos compatibles

Power ISA v.2.04

La especificación para Power ISA v.2.04 [ 8 ] 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 la virtualización , las funciones del hipervisor , el particionamiento lógico y el 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 [ 9 ] 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 , incluyendo 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
  • POWER6
  • PowerPC 476

Power ISA v.2.06

La especificación para Power ISA v.2.06 [ 10 ] se publicó en febrero de 2009 y se revisó en julio de 2010. [ 11 ] 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 significativa son las instrucciones de punto flotante vector-escalar ( VSX ). [ 12 ] 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 y 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. [ 11 ] [ 13 ]

núcleos compatibles

Power ISA v.2.07

La especificación para Power ISA v.2.07 [ 14 ] se publicó en mayo de 2013. Se basa en Power ISA v.2.06 e incluye mejoras importantes en las funciones de partición lógica , memoria transaccional , supervisión de rendimiento ampliada, nuevas características de control de almacenamiento, adiciones a las instalaciones vectoriales VMX y VSX (VSX-2), junto con AES [ 14 ] : 257 [ 15 ] y Galois Counter Mode (GCM), SHA-224, SHA-256, [ 14 ] : 258 SHA-384 y SHA-512 [ 14 ] : 258 ( SHA-2 ) extensiones criptográficas y algoritmos de verificación de redundancia cíclica (CRC) . [ 16 ]

La especificación fue revisada en abril de 2015 a la especificación Power ISA v.2.07 B. [ 17 ] [ 18 ]

núcleos compatibles
  • Todos los núcleos que cumplen con versiones anteriores de Power ISA
  • POWER8
  • A2O

Power ISA v.3.0

La especificación para Power ISA v.3.0 [ 19 ] [ 20 ] se publicó en noviembre de 2015. Es la primera que se publica tras la fundación de la OpenPOWER Foundation e incluye mejoras para un amplio espectro de cargas de trabajo, elimina las categorías de servidor y sistemas embebidos, manteniendo la retrocompatibilidad, y añade 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, [ 17 ] [ 21 ] y se revisó nuevamente a v3.0C en mayo de 2020. [ 17 ] [ 22 ] [ 23 ] 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 conformidad enumerados en v3.1 también se agregaron a v3.0C.

núcleos compatibles

Power ISA v.3.1

La especificación para Power ISA v.3.1 [ 17 ] [ 25 ] 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 en 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. VSX y la extensión SVP64 brindan soporte de hardware para coma flotante de precisión media de 16 bits. [ 26 ] [ 27 ]

Una de las principales ventajas de las nuevas instrucciones con prefijo de 64 bits es la extensión de los valores inmediatos en las bifurcaciones a 34 bits.

La especificación se revisó en septiembre de 2021 a la especificación Power ISA v.3.1B. [ 17 ] [ 26 ]

La especificación se revisó en mayo de 2024 a la especificación Power ISA v.3.1C. [ 17 ] [ 28 ]

núcleos compatibles

Véase también

Referencias

  1. 1 2 Blemings, Hugh (13 de febrero de 2020). "Se publica el borrador final del EULA de Power ISA" .
  2. El Open Power ISA: Cumplimiento de la arquitectura y fundamentos futuros .
  3. Taylor, Ian Lance. "Suplemento 1.9 de la interfaz binaria de aplicación ELF PowerPC de 64 bits" .
  4. "Especificación ABI ELF V2 de 64 bits de Power Architecture, suplemento OpenPOWER ABI para Linux" (PDF) . 16 de julio de 2015. Archivado del original (PDF) el 24 de octubre de 2019.
  5. "Power ISA v.2.03" (PDF) . Power.org. 29/09/2006. Archivado del original (PDF) el 27/07/2011.
  6. "PowerPC Architecture Book, Versión 2.02" . IBM. 24 de febrero de 2005. Archivado del original el 18 de octubre de 2007. Consultado el 16 de marzo de 2007 .
  7. "PowerPC Book E v.1.0" (PDF) . IBM. 7 de mayo de 2002. Archivado (PDF) del original el 10 de marzo de 2018. Consultado el 16 de marzo de 2007 .
  8. "Power ISA Versión 2.04" (PDF) . Power.org. 12 de junio de 2007. Archivado del original (PDF) el 27 de septiembre de 2007. Consultado el 14 de junio de 2007 .
  9. "Power ISA Versión 2.05" . Power.org. 23 de octubre de 2007. Archivado del original el 24 de noviembre de 2012. Consultado el 18 de diciembre de 2007 .
  10. "Power.org presenta avances en especificaciones y nuevos servicios en la Conferencia de Desarrolladores de Power Architecture" (Comunicado de prensa). Power.org. 24 de septiembre de 2007. Archivado del original el 12 de octubre de 2007. Consultado el 24 de septiembre de 2007 .
  11. 1 2 "Power ISA Versión 2.06 Revisión B" . Power.org. 23 de julio de 2010. Archivado del original el 24 de noviembre de 2012. Recuperado el 12 de febrero de 2011 .
  12. "Aceleración de carga de trabajo con la arquitectura vectorial-escalar IBM POWER" . IBM. 1 de marzo de 2016. Consultado el 2 de mayo de 2017 .
  13. "Power ISA 2.06 Rev. B permite la virtualización completa del hardware para el espacio embebido" . EETimes. 3 de noviembre de 2010. Consultado el 8 de junio de 2011 .
  14. 1 2 3 4 "Power ISA Versión 2.07" (PDF) . Power.org. 15-05-2013 . Consultado el 02-11-2023 .
  15. Barbosa, Leonidas (21-09-2014). "Criptografía en núcleo de POWER8" . IBM.
  16. 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.
  17. 1 2 3 4 5 6 "Arquitectura del conjunto de instrucciones" . Fundación OpenPOWER .
  18. "Power ISA Versión 2.07 B" . Power.org. 9 de abril de 2015. Consultado el 23 de febrero de 2023 .
  19. Geschwind, Michael (3 de diciembre de 2015). "Anunciando una nueva era de apertura con Power 3.0" . Archivado del original el 4 de marzo de 2016.
  20. "Power ISA Versión 3.0" . openpowerfoundation.org. 30 de noviembre de 2016. Archivado del original el 3 de agosto de 2017. Consultado el 6 de enero de 2017 .
  21. "Power ISA Versión 3.0 B" . IBM. 29 de marzo de 2017. Consultado el 23 de febrero de 2023 .
  22. "Power ISA Versión 3.0 C" . Fundación OpenPOWER. 1 de mayo de 2020. Consultado el 23 de febrero de 2023 .
  23. "lista de especificaciones de Power ISA" .
  24. Bergner, Peter (11 de noviembre de 2015). " [ PARCHE, CONFIRMADO ] Agregar soporte completo para Power ISA 3.0 / POWER9 binutils" . binutils (Lista de correo).
  25. "Power ISA Versión 3.1" . Fundación OpenPOWER. 1 de mayo de 2020. Consultado el 23 de febrero de 2023 .
  26. 1 2 "Power ISA Versión 3.1B" . Fundación OpenPOWER. 14 de septiembre de 2021. Consultado el 23 de febrero de 2023 .
  27. "ls005.xlen.mdwn" . libre-soc.org Git . Consultado el 2 de julio de 2023 .
  28. "Power ISA Versión 3.1C" . Fundación OpenPOWER. 26 de mayo de 2024. Consultado el 4 de julio de 2024 .
  29. Seo, Carlos Eduardo (12 de mayo de 2020). "Hemos publicado 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 de mayo de 2020 .