Articulo de referencia

Extensiones de sincronización transaccional

Las Extensiones de Sincronización Transaccional ( TSX ), también llamadas Nuevas Instrucciones de Sincronización Transaccional ( TSX-NI ), son una extensión de la arquitectura d...

Las Extensiones de Sincronización Transaccional ( TSX ), también llamadas Nuevas Instrucciones de Sincronización Transaccional ( TSX-NI ), son una extensión de la arquitectura del conjunto de instrucciones (ISA) x86 que añade soporte de memoria transaccional por hardware , acelerando la ejecución de software multihilo mediante la eliminación de bloqueos. Según diferentes pruebas de rendimiento, TSX/TSX-NI puede proporcionar una ejecución de aplicaciones aproximadamente un 40 % más rápida en cargas de trabajo específicas y entre 4 y 5 veces más transacciones de base de datos por segundo (TPS). [ 1 ] [ 2 ] [ 3 ] [ 4 ]

TSX/TSX-NI fue documentado por Intel en febrero de 2012 y debutó en junio de 2013 en microprocesadores Intel seleccionados basados ​​en la microarquitectura Haswell . [ 5 ] [ 6 ] [ 7 ] Los procesadores Haswell inferiores a 45xx, así como las SKU de las series R y K (con multiplicador desbloqueado), no son compatibles con TSX/TSX-NI. [ 8 ] En agosto de 2014, Intel anunció un error en la implementación de TSX/TSX-NI en las revisiones actuales de las CPU Haswell, Haswell-E, Haswell-EP y Broadwell tempranas , lo que resultó en la desactivación de la función TSX/TSX-NI en las CPU afectadas mediante una actualización de microcódigo . [ 9 ] [ 10 ]

En 2016, se descubrió un ataque de temporización de canal lateral mediante el abuso de la forma en que TSX/TSX-NI maneja las fallas transaccionales (es decir, fallas de página ) para romper la aleatorización del diseño del espacio de direcciones del kernel (KASLR) en todos los sistemas operativos principales. [ 11 ] En 2021, Intel lanzó una actualización de microcódigo que deshabilitó la función TSX/TSX-NI en las generaciones de CPU desde Skylake hasta Coffee Lake , como mitigación para los problemas de seguridad descubiertos. [ 12 ]

Aunque TSX/TSX-NI ya no es compatible con los procesadores de escritorio, sigue siéndolo con la línea de procesadores Xeon (al menos en modelos específicos, a partir de la sexta generación). [ 13 ]

La compatibilidad con la emulación de TSX/TSX-NI se proporciona como parte del emulador de desarrollo de software de Intel. [ 14 ] También existe compatibilidad experimental con la emulación de TSX/TSX-NI en una bifurcación de QEMU . [ 15 ]

Características

TSX/TSX-NI proporciona dos interfaces de software para designar regiones de código para la ejecución transaccional. La eliminación de bloqueo por hardware (HLE) es una interfaz basada en prefijos de instrucciones diseñada para ser compatible con procesadores que no admiten TSX/TSX-NI. La memoria transaccional restringida (RTM) es una nueva interfaz de conjunto de instrucciones que proporciona mayor flexibilidad a los programadores. [ 16 ]

TSX/TSX-NI permite la ejecución optimista de regiones de código transaccional. El hardware supervisa múltiples hilos en busca de accesos a memoria conflictivos, abortando y revirtiendo las transacciones que no se pueden completar correctamente. Se proporcionan mecanismos para que el software detecte y gestione las transacciones fallidas. [ 16 ]

Elisión de cerraduras de hardware

La eliminación de bloqueo por hardware (HLE) agrega dos nuevos prefijos de instrucción, XACQUIREy XRELEASE. Estos dos prefijos reutilizan los códigos de operación de los prefijos REPNE/ existentes ( / ). En los procesadores que no admiten HLE, los prefijos / se ignoran en las instrucciones para las que / son válidos, lo que permite la compatibilidad con versiones anteriores. [ 17 ]REPEF2HF3HREPNEREPEXACQUIREXRELEASE

La XACQUIREsugerencia de prefijo solo se puede usar con las siguientes instrucciones con un LOCKprefijo explícito: ADD, ADC, AND, BTC, BTR, BTS, CMPXCHG, CMPXCHG8B, DEC, INC, NEG, NOT, OR, SBB, SUB, XOR, XADDy XCHG. La instrucción también XCHGse puede usar sin el prefijo.LOCK

La XRELEASEsugerencia de prefijo se puede utilizar tanto con las instrucciones enumeradas anteriormente como con las instrucciones MOV mem, regy .MOV mem, imm

HLE permite la ejecución optimista de una sección crítica omitiendo la escritura en un bloqueo, de modo que el bloqueo parezca estar libre para otros subprocesos. Una transacción fallida provoca que la ejecución se reinicie desde la XACQUIREinstrucción con prefijo, pero tratando la instrucción como si el XACQUIREprefijo no estuviera presente.

En otras palabras, la eliminación de bloqueos mediante la ejecución transaccional utiliza las transacciones en memoria como una vía rápida siempre que sea posible, mientras que la vía lenta (de reserva) sigue siendo un bloqueo normal.

Memoria transaccional restringida

Restricted Transactional Memory (RTM) is an alternative implementation to HLE which gives the programmer the flexibility to specify a fallback code path that is executed when a transaction cannot be successfully executed. Unlike HLE, RTM is not backward compatible with processors that do not support it. For backward compatibility, programs are required to detect support for RTM in the CPU before using the new instructions.

RTM añade tres nuevas instrucciones: XBEGIN, XENDy XABORT. Las instrucciones XBEGINy XENDmarcan el inicio y el final de una región de código transaccional; la XABORTinstrucción aborta explícitamente una transacción. El fallo de la transacción redirige al procesador a la ruta de código de reserva especificada por la XBEGINinstrucción, y el estado de aborto se devuelve en el EAXregistro.

XTESTinstrucción

TSX/TSX-NI proporciona una nueva XTESTinstrucción que indica si el procesador está ejecutando una región transaccional. Esta instrucción es compatible con el procesador si este admite HLE, RTM o ambos.

Seguimiento de direcciones de carga suspendida de TSX

TSX/TSX-NI Suspend Load Address Tracking (TSXLDTRK) es una extensión del conjunto de instrucciones que permite deshabilitar temporalmente el seguimiento de cargas desde la memoria en una sección de código dentro de una región transaccional. Esta función extiende HLE y RTM, y su compatibilidad con el procesador debe detectarse por separado.

TSXLDTRK introduce dos nuevas instrucciones, XSUSLDTRKy XRESLDTRK, para suspender y reanudar el seguimiento de direcciones de carga, respectivamente. Mientras el seguimiento está suspendido, las cargas desde la memoria no se añadirán al conjunto de lectura de la transacción. Esto significa que, a menos que estas ubicaciones de memoria se hayan añadido a los conjuntos de lectura o escritura de la transacción fuera de la región de suspensión, las escrituras en estas ubicaciones por otros subprocesos no provocarán la cancelación de la transacción. Suspender el seguimiento de direcciones de carga para una parte del código dentro de una región transaccional permite reducir la cantidad de memoria que se debe rastrear para los conflictos de lectura-escritura y, por lo tanto, aumentar la probabilidad de confirmación exitosa de la transacción.

Implementación

La especificación TSX/TSX-NI de Intel describe cómo se expone la memoria transaccional a los programadores, pero omite detalles sobre la implementación real de la memoria transaccional. [ 18 ] Intel especifica en sus manuales para desarrolladores y de optimización que Haswell mantiene conjuntos de lectura y escritura con la granularidad de una línea de caché, rastreando direcciones en la caché de datos L1 del procesador. [ 19 ] [ 20 ] [ 21 ] [ 22 ] Intel también afirma que los conflictos de datos se detectan a través del protocolo de coherencia de caché . [ 20 ]

La caché de datos L1 de Haswell tiene una asociatividad de ocho. Esto significa que, en esta implementación, una ejecución transaccional que escriba en nueve ubicaciones distintas que se asignan al mismo conjunto de caché se abortará. Sin embargo, debido a las implementaciones microarquitectónicas, esto no significa que se garantice que un menor número de accesos al mismo conjunto nunca se aborten. Además, en configuraciones de CPU con tecnología Hyper-Threading , la caché L1 se comparte entre los dos hilos del mismo núcleo, por lo que las operaciones en un procesador lógico hermano del mismo núcleo pueden provocar desalojos. [ 20 ]

Investigaciones independientes apuntan a que la memoria transaccional de Haswell probablemente sea un sistema de actualización diferida que utiliza las cachés por núcleo para datos transaccionales y puntos de control de registros. [ 18 ] En otras palabras, es más probable que Haswell utilice el sistema de memoria transaccional basado en caché, ya que es una opción de implementación mucho menos arriesgada. Por otro lado, Intel Skylake o posterior podría combinar este enfoque basado en caché con el búfer de ordenación de memoria (MOB) para el mismo propósito, posiblemente también proporcionando memoria transaccional multiversión que es más adecuada para el multihilo especulativo . [ 23 ]

Historial y errores

Error de Haswell y Broadwell (2014)

En agosto de 2014, Intel anunció que existía un error en la implementación de TSX/TSX-NI en las CPU Haswell, Haswell-E, Haswell-EP y Broadwell tempranas, lo que resultó en la desactivación de la función TSX/TSX-NI en las CPU afectadas a través de una actualización de microcódigo. [ 9 ] [ 10 ] [ 24 ] El error se corrigió en las revisiones F-0 de la CPU Core M-5Y70 Broadwell habilitada para vPro en noviembre de 2014. [ 25 ]

El error fue descubierto y reportado durante una tesis de diploma en la Escuela de Ingeniería Eléctrica e Informática de la Universidad Técnica Nacional de Atenas . [ 26 ]

Error de Skylake (2018)

En octubre de 2018, Intel reveló un problema de ordenación de memoria TSX/TSX-NI encontrado en algunos procesadores Skylake . [ 27 ] Como resultado de una actualización de microcódigo, se deshabilitó la compatibilidad con HLE en las CPU afectadas, y se mitigó RTM sacrificando un contador de rendimiento cuando se usaba fuera del modo Intel SGX o el modo de administración del sistema ( SMM ). El software del sistema tendría que deshabilitar RTM o actualizar las herramientas de monitoreo de rendimiento para que no usaran el contador de rendimiento afectado.

Vulnerabilidad de TAA (2021)

En junio de 2021, Intel publicó una actualización de microcódigo que desactiva aún más TSX/TSX-NI en varios modelos de procesadores Xeon y Core desde Skylake hasta Coffee Lake y Whiskey Lake como mitigación para la vulnerabilidad de aborto asíncrono de TSX (TAA). La mitigación anterior para el problema de ordenación de memoria fue eliminada. [ 28 ] Por defecto, con el microcódigo actualizado, el procesador seguiría indicando soporte para RTM pero siempre abortaría la transacción. El software del sistema puede detectar este modo de operación y enmascarar el soporte para TSX/TSX-NI de la CPUIDinstrucción, impidiendo la detección de TSX/TSX-NI por parte de las aplicaciones. El software del sistema también puede habilitar el "Modo de desarrollo de software no compatible", donde RTM está completamente activo, pero en este caso el uso de RTM puede estar sujeto a los problemas descritos anteriormente, y por lo tanto este modo no debe habilitarse en sistemas de producción. En algunos sistemas, RTM no se puede volver a habilitar cuando SGX está activo. HLE siempre está deshabilitado.

Estado actual

Según el Manual del desarrollador de software de las arquitecturas Intel 64 e IA-32 de mayo de 2020, Volumen 1, Capítulo 2.5 Arquitectura del conjunto de instrucciones Intel y características eliminadas, [ 19 ] HLE se ha eliminado de los productos Intel lanzados en 2019 y posteriores. RTM no está documentado como eliminado. Sin embargo, los procesadores de cliente Intel Comet Lake e Ice Lake de décima generación , que se lanzaron en 2020, no son compatibles con TSX/TSX-NI, [ 29 ] [ 30 ] [ 31 ] [ 32 ] [ 33 ] incluyendo tanto HLE como RTM. Las versiones de ingeniería de los procesadores Comet Lake aún conservaban la compatibilidad con TSX/TSX-NI.

En la revisión 41 de la Referencia de Programación de Extensiones del Conjunto de Instrucciones de la Arquitectura Intel de octubre de 2020, [ 34 ] se documentó una nueva extensión del conjunto de instrucciones TSXLDTRK. Se incluyó por primera vez en los procesadores Sapphire Rapids lanzados en enero de 2023.

Véase también

Referencias

  1. Richard M. Yoo; Christopher J. Hughes; Konrad Lai; Ravi Rajwar (noviembre de 2013). "Evaluación del rendimiento de las extensiones de sincronización transaccional de Intel para computación de alto rendimiento" (PDF) . intel-research.net . Archivado del original (PDF) el 24 de octubre de 2016. Consultado el 14 de noviembre de 2013 .
  2. Tomas Karnagel; Roman Dementiev; Ravi Rajwar; Konrad Lai; Thomas Legler; Benjamin Schlegel; Wolfgang Lehner (febrero de 2014). "Mejora del rendimiento del índice de bases de datos en memoria con las extensiones de sincronización transaccional de Intel" (PDF) . software.intel.com . Consultado el 3 de marzo de 2014 .
  3. "Evaluación del rendimiento de las extensiones de sincronización transaccional de Intel para computación de alto rendimiento" . supercomputing.org . Noviembre de 2013. Archivado del original el 29 de octubre de 2013. Consultado el 14 de noviembre de 2013 .
  4. "Puntuaciones de referencia: Rendimiento de transacciones de memoria (HLE y RTM) de Haswell (TSX)" . sisoftware.co.uk . Consultado el 14 de noviembre de 2013 .
  5. "Sincronización transaccional en Haswell" . Software.intel.com. Archivado del original el 23 de febrero de 2020. Consultado el 7 de febrero de 2012 .
  6. "La memoria transaccional se populariza con Intel Haswell" . Ars Technica . 8 de febrero de 2012. Consultado el 9 de febrero de 2012 .
  7. "Análisis del Core i7-4770K" . Tom's Hardware. 1 de junio de 2013. Consultado el 3 de junio de 2012 .
  8. "Tabla comparativa de Intel de los modelos Haswell Pentium, i3, i5 e i7" . intel.com . Consultado el 11 de febrero de 2014 .
  9. 1 2 Scott Wasson (12 de agosto de 2014). "Una errata lleva a Intel a deshabilitar TSX en las CPU Haswell y Broadwell iniciales" . techreport.com . Consultado el 12 de agosto de 2014 .
  10. 1 2 "Familia de procesadores Intel Core de cuarta generación para escritorio, familia de procesadores Intel Pentium para escritorio y familia de procesadores Intel Celeron para escritorio: actualización de especificaciones (revisión 014)" (PDF) . Intel . Junio ​​de 2014. pág. 46. Recuperado el 13 de agosto de 2014. Bajo un conjunto complejo de condiciones de temporización internas y eventos del sistema, el software que utiliza las instrucciones Intel TSX/TSX-NI (Transactional Synchronization Extensions) puede observar un comportamiento impredecible del sistema. 
  11. "Rompiendo la aleatorización del espacio de direcciones del kernel con Intel TSX" (PDF) . 2016.
  12. Gareth Halfacree (29 de junio de 2021). "Intel da otro golpe de gracia a TSX con una actualización de microcódigo que desactiva funciones" . The Register . Consultado el 17 de octubre de 2012 .
  13. "Comparar productos" . Intel . Consultado el 10 de marzo de 2025 .
  14. Wooyoung Kim (25 de julio de 2013). "Diversión con las extensiones de sincronización transaccional de Intel" . Intel . Consultado el 12 de noviembre de 2013 .
  15. Sebastien Dabdoub; Stephen Tu. "Soporte para extensiones de sincronización transaccional de Intel en QEMU" (PDF) . mit.edu . Consultado el 12 de noviembre de 2013 .
  16. 1 2 Johan De Gelas (2012-09-20). "Making Sense of the Intel Haswell Transactional Synchronization eXtensions" . AnandTech . Archivado del original el 22 de septiembre de 2012. Recuperado el 20 de octubre de 2013 .
  17. "Descripción general de la eliminación de bloqueo de hardware" . intel.com. Archivado del original el 29/10/2013 . Consultado el 27/10/2013 .
  18. 1 2 David Kanter (21-08-2012). "Análisis de la memoria transaccional de Haswell" . Real World Technologies . Recuperado el 19-11-2013 .
  19. 1 2 "Manual del desarrollador de software para arquitecturas Intel 64 e IA-32, volúmenes combinados: 1, 2A, 2B, 2C, 3A, 3B y 3C" (PDF) . Intel. Septiembre de 2013. pág. 342. Consultado el 19 de noviembre de 2013 . 
  20. 1 2 3 "Manual de referencia de optimización de arquitecturas Intel 64 e IA-32" (PDF) . Intel. Septiembre de 2013. pág. 446. Consultado el 19 de noviembre de 2013 . 
  21. "Propiedades de implementación de Intel TSX" . Intel. 2013. Consultado el 14 de noviembre de 2013. El procesador realiza un seguimiento tanto de las direcciones de lectura como de las direcciones de escritura en la caché de datos de primer nivel (caché L1) del procesador.
  22. De Gelas, Johan (20 de septiembre de 2012). "Comprendiendo las extensiones de sincronización transaccional de Intel Haswell" . AnandTech . Recuperado el 23 de diciembre de 2013. Todo el sistema "CPU realiza los bloqueos de grano fino" se basa en el etiquetado de las líneas de caché L1 (64 B) y hay 512 de ellas para ser exactos (64 x 512 = 32 KB). Solo hay una "etiqueta de bloqueo" por línea de caché.{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  23. David Kanter (21 de agosto de 2012). "Alternativas de memoria transaccional de Haswell" . Real World Technologies . Consultado el 14 de noviembre de 2013 .
  24. Ian Cutress (12 de agosto de 2014). "Intel desactiva las instrucciones TSX: se encontró una errata en Haswell, Haswell-E/EP y Broadwell-Y" . AnandTech . Archivado del original el 14 de agosto de 2014. Consultado el 30 de agosto de 2014 .
  25. "Familia de procesadores Intel Core M. Actualización de especificaciones. Diciembre de 2014. Revisión 003. 330836-003" (PDF) . Intel . Diciembre de 2014. pág. 10. Recuperado el 28 de diciembre de 2014. BDM53 1 E-0: X, F-0:, Estado: Corregido ERRATA: Instrucciones Intel TSX no disponibles. 1. Se aplica al procesador Intel Core M-5Y70. Intel TSX es compatible con el procesador Intel Core M-5Y70 con tecnología Intel vPro. Intel TSX no es compatible con otras SKU de procesadores. 
  26. "Información sobre HiPEAC" (PDF) . pág. 12. Archivado del original (PDF) el 5 de marzo de 2017. 
  27. "Documento técnico sobre el impacto de la supervisión del rendimiento en el problema de ordenación de memoria de la extensión de sincronización transaccional de Intel®, junio de 2021, revisión 1.4" (PDF) . Intel. 12 de junio de 2021. pág. 5. La actualización del microcódigo de octubre de 2018 también deshabilitó el prefijo de instrucción HLE de Intel TSX y obligó a todas las transacciones RTM a abortar cuando operaban en modo Intel SGX o en modo de administración del sistema (SMM). 
  28. "Actualización de las extensiones de sincronización transaccional de Intel® (Intel® TSX) para la supervisión de la memoria y el rendimiento de los procesadores Intel®" . Intel. 12 de junio de 2021.
  29. "Especificaciones del procesador Intel® Core™ i9-10900K" . Intel. 2020. Consultado el 10 de octubre de 2020 .
  30. "Especificaciones del procesador Intel® Core™ i9-10980HK" . Intel. 2020. Consultado el 10 de octubre de 2020 .
  31. "Especificaciones del procesador Intel® Core™ i7-10810U" . Intel. 2020. Consultado el 10 de octubre de 2020 .
  32. "Especificaciones del procesador Intel® Xeon® W-1290P" . Intel. 2020. Consultado el 10 de octubre de 2020 .
  33. "Especificaciones del procesador Intel® Core™ i7-1068NG7" . Intel. 2020. Consultado el 10 de octubre de 2020 .
  34. "Intel® Architecture Instruction Set Extensions Programming Reference" (PDF) . Intel. 2020. Consultado el 21 de octubre de 2020 .

Lecturas adicionales

  • Afek, Y.; Levy, A.; Morrison, A. (2014). Actas del simposio ACM de 2014 sobre Principios de computación distribuida - PODC '14 . Eliminación de bloqueo de hardware mejorada por software, pág. 212. doi : 10.1145/2611462.2611482 . ISBN 9781450329446. S2CID 16645370 . Mejoras basadas en software para la eliminación de bloqueos de hardware en Intel TSX.
  • Presentación de las FDI 2012 (PDF)
  • Cómo añadir la eliminación de bloqueos a Linux , Conferencia de Plomeros de Linux 2012 (PDF)
  • Bloquear elisión en la biblioteca GNU C , LWN.net , 30 de enero de 2013, por Andi Kleen
  • Guía de optimización de TSX , Capítulo 12 (PDF)
  • Manual para desarrolladores de software , Volumen 1, Capítulo 2.5 (PDF)
  • Recursos web sobre las extensiones de sincronización transaccional de Intel
  • x86, microcódigo: ERROR: actualización de microcódigo que modifica x86_capability , LKML , septiembre de 2014 (también existe otro informe de error similar ).
  • Microcódigo de Intel , Gentoo, 19 de septiembre de 2015