stringtranslate.com

Extensiones de sincronización transaccional

Las Extensiones de sincronización transaccional ( TSX ), también llamadas Nuevas instrucciones de Extensiones de sincronización transaccional ( TSX-NI ), es una extensión de la arquitectura de conjunto de instrucciones (ISA) x86 que agrega soporte de memoria transaccional de hardware , acelerando la ejecución de software multiproceso mediante elisión de bloqueo. . Según diferentes puntos de referencia, 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 bases 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 versiones actuales de Haswell, Haswell-E, Haswell-EP y las primeras CPU Broadwell , lo que resultó en la desactivación de la función TSX/TSX-NI en los procesadores afectados. CPU mediante una actualización de microcódigo . [9] [10]

En 2016, se encontró un ataque de sincronización de canal lateral al abusar de la forma en que TSX/TSX-NI maneja 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 principales sistemas operativos. [11] En 2021, Intel lanzó una actualización de microcódigo que deshabilitó la función TSX/TSX-NI en generaciones de CPU desde Skylake hasta Coffee Lake , como mitigación de los problemas de seguridad descubiertos. [12]

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

Características

TSX/TSX-NI proporciona dos interfaces de software para designar regiones de código para ejecución transaccional. Hardware Lock Elision (HLE) es una interfaz basada en prefijos de instrucciones diseñada para ser compatible con procesadores sin soporte TSX/TSX-NI. La memoria transaccional restringida (RTM) es una nueva interfaz de conjunto de instrucciones que proporciona mayor flexibilidad a los programadores. [15]

TSX/TSX-NI permite la ejecución optimista de regiones de código transaccional. El hardware monitorea múltiples subprocesos en busca de accesos a la memoria conflictivos, mientras anula y revierte transacciones que no se pueden completar con éxito. Se proporcionan mecanismos para que el software detecte y maneje transacciones fallidas. [15]

En otras palabras, la elisión de bloqueo mediante la ejecución transaccional utiliza transacciones de memoria como una ruta rápida siempre que sea posible, mientras que la ruta lenta (de reserva) sigue siendo un bloqueo normal.

Elisión de bloqueo de hardware

Hardware Lock Elision (HLE) agrega dos nuevos prefijos de instrucciones XACQUIREy XRELEASE. Estos dos prefijos reutilizan los códigos de operaciónREPNE de los prefijos / existentes REPE( F2H/ F3H). En procesadores que no admiten HLE, los prefijos REPNE/ REPEse ignoran en las instrucciones para las cuales XACQUIRE/ XRELEASEson válidos, lo que permite la compatibilidad con versiones anteriores. [dieciséis]

La XACQUIREsugerencia de prefijo solo se puede utilizar 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 utilizar 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 da como resultado que la ejecución se reinicie desde la XACQUIREinstrucción con el prefijo -, pero se trata la instrucción como si el XACQUIREprefijo no estuviera presente.

Memoria transaccional restringida

La memoria transaccional restringida (RTM) es una implementación alternativa a HLE que brinda al programador la flexibilidad de especificar una ruta de código alternativo que se ejecuta cuando una transacción no se puede ejecutar con éxito. A diferencia de HLE, RTM no es compatible con procesadores que no lo admiten. Para lograr compatibilidad con versiones anteriores, se requiere que los programas detecten la compatibilidad con RTM en la CPU antes de usar las nuevas instrucciones.

RTM agrega 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. La falla de la transacción redirige al procesador a la ruta del código alternativo especificada por la XBEGINinstrucción, con el estado de aborto devuelto en el EAXregistro.

XTESTinstrucción

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

TSX suspende el seguimiento de direcciones de carga

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 característica amplía HLE y RTM, y su compatibilidad en el procesador debe detectarse por separado.

TSXLDTRK presenta dos nuevas instrucciones, XSUSLDTRKy XRESLDTRK, para suspender y reanudar el seguimiento de direcciones de carga, respectivamente. Mientras el seguimiento esté suspendido, las cargas de la memoria no se agregarán al conjunto de lectura de transacciones. Esto significa que, a menos que estas ubicaciones de memoria se hayan agregado a los conjuntos de lectura o escritura de transacciones fuera de la región de suspensión, las escrituras en estas ubicaciones realizadas por otros subprocesos no provocarán la cancelación de la transacción. Suspender el seguimiento de la dirección de carga de una parte del código dentro de una región transaccional permite reducir la cantidad de memoria que se necesita rastrear para detectar conflictos de lectura y escritura y, por lo tanto, aumentar la probabilidad de que la transacción se confirme con éxito.

Implementación

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

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

Una investigación independiente señala que la memoria transaccional de Haswell probablemente sea un sistema de actualización diferida que utiliza cachés por núcleo para datos transaccionales y puntos de control de registro. [17] 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 riesgosa. Por otro lado, Skylake de Intel o posterior puede combinar este enfoque basado en caché con un búfer de orden de memoria (MOB) para el mismo propósito, posiblemente también proporcionando memoria transaccional multiversionada que sea más susceptible a subprocesos múltiples especulativos . [22]

Historia y errores

En agosto de 2014, Intel anunció que existe un error en la implementación TSX/TSX-NI en Haswell, Haswell-E, Haswell-EP y las primeras CPU Broadwell, lo que resultó en la desactivación de la función TSX/TSX-NI en las CPU afectadas a través de un microcódigo. actualizar. [9] [10] [23] El error se solucionó en los pasos F-0 de la CPU Core M-5Y70 Broadwell habilitada para vPro en noviembre de 2014. [24]

El error fue encontrado y luego 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 . [25]

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

En junio de 2021, Intel publicó una actualización de microcódigo que deshabilita 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 de la vulnerabilidad de aborto asincrónico (TAA) de TSX. Se eliminó la mitigación anterior para el problema de ordenación de la memoria. [27] De forma predeterminada, con el microcódigo actualizado, el procesador aún indicaría soporte para RTM pero siempre abortaría la transacción. El software del sistema es capaz de detectar este modo de funcionamiento y enmascarar el soporte para TSX/TSX-NI de la CPUIDinstrucción, evitando 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.

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

En la referencia de programación de extensiones del conjunto de instrucciones de la arquitectura Intel, revisión 41 de octubre de 2020, [33] 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.

Ver 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 informática de alto rendimiento" (PDF) . intel-research.net . Archivado desde el original (PDF) el 24 de octubre de 2016 . Consultado el 14 de noviembre de 2013 .
  2. ^ Tomás Karnagel; Roman Dementiev; Ravi Rajwar; Konrad Lai; Thomas Legler; Benjamín Schlegel; Wolfgang Lehner (febrero de 2014). "Mejora del rendimiento del índice de bases de datos en memoria con extensiones de sincronización transaccional 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 informática de alto rendimiento". supercomputing.org . Noviembre de 2013. Archivado desde el original el 29 de octubre de 2013 . Consultado el 14 de noviembre de 2013 .
  4. ^ "Puntos de referencia: TSX de Haswell y rendimiento de transacciones de memoria (HLE y RTM)". sisoftware.co.uk . Consultado el 14 de noviembre de 2013 .
  5. ^ "Sincronización transaccional en Haswell". Software.intel.com . Consultado el 7 de febrero de 2012 .
  6. ^ "La memoria transaccional se generaliza con Intel Haswell". Ars Técnica . 2012-02-08 . Consultado el 9 de febrero de 2012 .
  7. ^ "Revisión del Core i7-4770K". Hardware de Tom. 2013-06-01 . 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. ^ ab Scott Wasson (12 de agosto de 2014). "La errata solicita a Intel que desactive TSX en Haswell, las primeras CPU de Broadwell". techreport.com . Consultado el 12 de agosto de 2014 .
  10. ^ ab "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 . Consultado el 13 de agosto de 2014 . Bajo un conjunto complejo de condiciones de sincronización interna y eventos del sistema, el software que utiliza las instrucciones Intel TSX/TSX-NI (Extensiones de sincronización transaccional) puede observar un comportamiento impredecible del sistema.
  11. ^ "Rompiendo la aleatorización del diseño del espacio de direcciones del kernel con Intel TSX" (PDF) . 2016.
  12. ^ Gareth Halfacree (29 de junio de 2021). "Intel pone otro clavo en el ataúd de TSX con la actualización de microcódigo que desactiva funciones". El registro . Consultado el 17 de octubre de 2012 .
  13. ^ 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 .
  14. ^ Sébastien Dabdoub; Esteban Tu. "Compatibilidad con extensiones de sincronización transaccional de Intel en QEMU" (PDF) . mit.edu . Consultado el 12 de noviembre de 2013 .
  15. ^ ab Johan De Gelas (20 de septiembre de 2012). "Dar sentido a las extensiones de sincronización transaccional de Intel Haswell". AnandTech . Consultado el 20 de octubre de 2013 .
  16. ^ "Descripción general de la elisión de bloqueo de hardware". Intel.com. Archivado desde el original el 29 de octubre de 2013 . Consultado el 27 de octubre de 2013 .
  17. ^ ab David Kanter (21 de agosto de 2012). "Análisis de la memoria transaccional de Haswell". Tecnologías del mundo real . Consultado el 19 de noviembre de 2013 .
  18. ^ ab "Manual del desarrollador de software de arquitecturas Intel 64 e IA-32 Volúmenes combinados: 1, 2A, 2B, 2C, 3A, 3B y 3C" (PDF) . Intel. Septiembre de 2013. p. 342 . Consultado el 19 de noviembre de 2013 .
  19. ^ abc "Manual de referencia de optimización de arquitecturas Intel 64 e IA-32" (PDF) . Intel. Septiembre de 2013. p. 446 . Consultado el 19 de noviembre de 2013 .
  20. ^ "Propiedades de implementación de Intel TSX". Intel. 2013 . Consultado el 14 de noviembre de 2013 . El procesador rastrea tanto las direcciones del conjunto de lectura como las direcciones del conjunto de escritura en el caché de datos de primer nivel (caché L1) del procesador.
  21. ^ De Gelas, Johan (20 de septiembre de 2012). "Dar sentido a las extensiones de sincronización transaccional de Intel Haswell". AnandTech . Consultado el 23 de diciembre de 2013 . Todo el "CPU hace los bloqueos detallados" se basa en etiquetar las líneas de caché L1 (64 B) y hay 512 de ellas para ser específicas (64 x 512 = 32 KB). Sólo hay una "etiqueta de bloqueo" por línea de caché.
  22. ^ David Kanter (21 de agosto de 2012). "Alternativas de memoria transaccional de Haswell". Tecnologías del mundo real . Consultado el 14 de noviembre de 2013 .
  23. ^ Ian Cutress (12 de agosto de 2014). "Intel desactiva las instrucciones TSX: errata encontrada en Haswell, Haswell-E/EP, Broadwell-Y". AnandTech . Consultado el 30 de agosto de 2014 .
  24. ^ "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 . Consultado 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 procesador.
  25. ^ "Información de HiPEAC" (PDF) . pag. 12. Archivado desde el original (PDF) el 5 de marzo de 2017.
  26. ^ "Informe técnico sobre el impacto de la supervisión del rendimiento de la extensión de sincronización transaccional Intel® sobre pedidos de memoria, junio de 2021, revisión 1.4" (PDF) . Intel. 2021-06-12. pag. 5. La actualización del microcódigo de octubre de 2018 también deshabilitó el prefijo de instrucciones HLE de Intel TSX y forzó la cancelación de todas las transacciones RTM cuando se opera en el modo Intel SGX o en el modo de administración del sistema (SMM).
  27. ^ "Actualización de monitoreo de rendimiento y memoria de Intel® Transactional Synchronization Extensions (Intel® TSX) para procesadores Intel®". Intel. 2021-06-12.
  28. ^ "Especificaciones del procesador Intel® Core™ i9-10900K". Intel. 2020 . Consultado el 10 de octubre de 2020 .
  29. ^ "Especificaciones del procesador Intel® Core™ i9-10980HK". Intel. 2020 . Consultado el 10 de octubre de 2020 .
  30. ^ "Especificaciones del procesador Intel® Core™ i7-10810U". Intel. 2020 . Consultado el 10 de octubre de 2020 .
  31. ^ "Especificaciones del procesador Intel® Xeon® W-1290P". Intel. 2020 . Consultado el 10 de octubre de 2020 .
  32. ^ "Especificaciones del procesador Intel® Core ™ i7-1068NG7". Intel. 2020 . Consultado el 10 de octubre de 2020 .
  33. ^ "Referencia de programación de extensiones del conjunto de instrucciones de la arquitectura Intel®" (PDF) . Intel. 2020 . Consultado el 21 de octubre de 2020 .

Otras lecturas

enlaces externos