stringtranslate.com

Extensiones de sincronización transaccional

Transactional Synchronization Extensions ( TSX ), también denominada Transactional Synchronization Extensions New Instructions ( TSX-NI ), es una extensión de la arquitectura del conjunto de instrucciones (ISA) x86 que añade compatibilidad con memoria transaccional de hardware , acelerando la ejecución de software multiproceso mediante la elisión de bloqueos. Según diferentes puntos de referencia, TSX/TSX-NI puede proporcionar una ejecución de aplicaciones alrededor de 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]

Intel documentó el TSX/TSX-NI 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 los SKU de las series R y K (con multiplicador desbloqueado) no admiten el TSX/TSX-NI. [8] En agosto de 2014, Intel anunció un error en la implementación del TSX/TSX-NI en las versiones actuales de las CPU Haswell, Haswell-E, Haswell-EP y las primeras Broadwell , lo que provocó 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]

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 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 de los problemas de seguridad descubiertos. [12]

El soporte para 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 de QEMU . [14]

Características

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

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

En otras palabras, la elisión de bloqueo a través de la ejecución transaccional utiliza transacciones de memoria como una ruta rápida cuando es posible, mientras que la ruta lenta (de reserva) sigue siendo un bloqueo normal.

Cerradura de hardware Elision

La elisión de bloqueo de hardware (HLE) agrega dos nuevos prefijos de instrucciones, 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 los / son válidos, lo que permite la compatibilidad con versiones anteriores. [16]REPEF2HF3HREPNEREPEXACQUIREXRELEASE

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, y . La instrucción también se puede utilizar sin el prefijo.DECINCNEGNOTORSBBSUBXORXADDXCHGXCHGLOCK

El XRELEASEprefijo hint se puede utilizar tanto con las instrucciones enumeradas anteriormente como con las instrucciones MOV mem, regand MOV mem, imm.

HLE permite la ejecución optimista de una sección crítica al omitir la escritura en un bloqueo, de modo que el bloqueo parezca estar libre para otros subprocesos. Una transacción fallida hace que la ejecución se reinicie desde la XACQUIREinstrucción con 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 de respaldo que se ejecuta cuando una transacción no se puede ejecutar correctamente. A diferencia de HLE, RTM no es compatible con versiones anteriores de procesadores que no la admiten. Para lograr la 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 cancela explícitamente una transacción. Si la transacción falla, el procesador se redirige a la ruta de código de respaldo especificada por la XBEGINinstrucción, y el estado de cancelación 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. El procesador admite esta instrucción si es compatible con HLE o RTM o ambos.

Seguimiento de la dirección de carga suspendida de TSX

TSX/TSX-NI Suspend Load Address Tracking (TSXLDTRK) es una extensión del conjunto de instrucciones que permite desactivar temporalmente el seguimiento de cargas desde la memoria en una sección de código dentro de una región transaccional. Esta función amplía HLE y RTM, y su compatibilidad en 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, no se agregarán cargas de la memoria al conjunto de lectura de la transacción. Esto significa que, a menos que estas ubicaciones de memoria se hayan agregado 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 parte de otros subprocesos no causarán la interrupció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 detectar conflictos de lectura y escritura y, por lo tanto, aumenta 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 oculta detalles sobre la implementación real de la memoria transaccional. [17] Intel especifica en sus manuales para desarrolladores y optimización que Haswell mantiene tanto los conjuntos de lectura como los conjuntos de escritura con 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, una ejecución transaccional que escribe en nueve ubicaciones distintas que se asignan al mismo conjunto de caché se abortará. Sin embargo, debido a las implementaciones de microarquitectura, esto no significa que se garantice que menos accesos al mismo conjunto nunca se abortarán. Además, en configuraciones de CPU con tecnología Hyper-Threading , la caché L1 se comparte entre los dos subprocesos en el mismo núcleo, por lo que las operaciones en un procesador lógico hermano del mismo núcleo pueden causar expulsiones. [19]

Investigaciones independientes indican que la memoria transaccional de Haswell probablemente sea un sistema de actualización diferida que utiliza los cachés por núcleo para los datos transaccionales y los puntos de control de registros. [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 o posterior de Intel puede combinar este enfoque basado en caché con el búfer de ordenamiento de memoria (MOB) para el mismo propósito, posiblemente proporcionando también memoria transaccional multiversionada que sea más susceptible al multithreading especulativo . [22]

Historia y errores

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 las primeras Broadwell, 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] [23] El error se corrigió en las versiones F-0 de la CPU Broadwell Core M-5Y70 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 y Computación de la Universidad Técnica Nacional de Atenas . [25]

En octubre de 2018, Intel reveló un problema de ordenamiento 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 el modo de administración del sistema ( SMM ). El software del sistema tendría que deshabilitar efectivamente RTM o actualizar las herramientas de monitoreo de rendimiento para no usar 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 TSX Asynchronous Abort (TAA). Se eliminó la mitigación anterior para el problema de ordenamiento de la memoria. [27] De forma predeterminada, con el microcódigo actualizado, el procesador seguiría indicando compatibilidad con RTM, pero siempre abortaría la transacción. El software del sistema puede detectar este modo de operación y enmascarar la compatibilidad con TSX/TSX-NI de la CPUIDinstrucción, lo que evita que las aplicaciones detecten TSX/TSX-NI. 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 los 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 de Intel eliminadas, [18] HLE se ha eliminado de los productos Intel lanzados en 2019 y posteriores. RTM no está documentado como eliminado. Sin embargo, los procesadores cliente Intel Comet Lake e Ice Lake de décima generación , que se lanzaron en 2020, no admiten 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 revisión 41 de la Referencia de programación de extensiones del conjunto de instrucciones de la arquitectura Intel 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.

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 desde el 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 desde el original el 29 de octubre de 2013 . Consultado el 14 de noviembre de 2013 .
  4. ^ "Puntos de referencia: rendimiento de transacciones en memoria y TSX de Haswell (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 Technica . 2012-02-08 . Consultado el 2012-02-09 .
  7. ^ "Análisis del Core i7-4770K". Tom's Hardware. 2013-06-01 . Consultado el 2012-06-03 .
  8. ^ "Tabla comparativa de Intel de los modelos Pentium, i3, i5 e i7 de Haswell". intel.com . Consultado el 11 de febrero de 2014 .
  9. ^ de Scott Wasson (12 de agosto de 2014). "Una errata obliga a Intel a desactivar TSX en Haswell y en las primeras CPU Broadwell". techreport.com . Consultado el 12 de agosto de 2014 .
  10. ^ ab "Desktop 4th Generation Intel Core Processor Family, Desktop Intel Pentium Processor Family, and Desktop Intel Celeron Processor Family: Specification Update (Revision 014)" (PDF) . Intel . Junio ​​de 2014. p. 46 . Consultado 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 diseño del espacio de direcciones del kernel con Intel TSX" (PDF) . 2016.
  12. ^ Gareth Halfacree (29 de junio de 2021). "Intel clava otro clavo en el ataúd de TSX con una actualización del microcódigo que desactiva funciones". The Register . 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. ^ Sebastien Dabdoub; Stephen Tu. "Compatibilidad con extensiones de sincronización transaccional de Intel en QEMU" (PDF) . mit.edu . Consultado el 12 de noviembre de 2013 .
  15. ^ por Johan De Gelas (20 de septiembre de 2012). "Cómo entender 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 2013-10-29 . Consultado el 2013-10-27 .
  17. ^ de David Kanter (21 de agosto de 2012). "Análisis de la memoria transaccional de Haswell". Real World Technologies . 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 de lectura como las direcciones de escritura en la caché de datos de primer nivel (caché L1) del procesador .
  21. ^ De Gelas, Johan (20 de septiembre de 2012). "Making Sense of the Intel Haswell Transactional Synchronization eXtensions". AnandTech . Consultado el 23 de diciembre de 2013 . Todo el asunto de "la 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 específicos (64 x 512 = 32 KB). Solo hay una "etiqueta de bloqueo" por línea de caché.
  22. ^ David Kanter (21 de agosto de 2012). "Alternativas de memoria transaccional Haswell". Real World Technologies . Consultado el 14 de noviembre de 2013 .
  23. ^ Ian Cutress (12 de agosto de 2014). "Intel desactiva las instrucciones TSX: se encontró una errata 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. 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 otros SKU de procesadores.
  25. ^ "Información sobre HiPEAC" (PDF) . pág. 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 en la extensión de sincronización transaccional de Intel®, junio de 2021, revisión 1.4" (PDF) . Intel. 2021-06-12. p. 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 que todas las transacciones RTM se cancelaran cuando se operaba en modo Intel SGX o en modo de administración del sistema (SMM).
  27. ^ "Actualización de la supervisión del rendimiento y la memoria de Intel® Transactional Synchronization Extensions (Intel® TSX) para procesadores Intel®". Intel. 12 de junio de 2021.
  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 .

Lectura adicional

Enlaces externos