Extensiones de sincronización transaccional ( TSX ), también llamadas Extensiones de sincronización transaccional Nuevas instrucciones ( TSX-NI ), es una extensión de la arquitectura del conjunto de instrucciones x86 (ISA) que agrega soporte de memoria transaccional de hardware , acelerando la ejecución de software multiproceso a través de la elisión de bloqueo . 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 4 a 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] procesadores Haswell siguientes 45xx así como R-serie y la serie K (con multiplicador desbloqueado) SKUs no apoyan 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 de Broadwell , lo que resultó en la desactivación de la función TSX / TSX-NI en las CPU a través de una actualización de microcódigo . [9] [10]
En 2016, se encontró un ataque de temporización de canal lateral al abusar de la forma en que TSX / TSX-NI maneja las fallas transaccionales (es decir , fallas de página ) para romper KASLR en todos los principales sistemas operativos. [11]
El soporte para la emulación TSX / TSX-NI se proporciona como parte del Emulador de desarrollo de software de Intel. [12] También hay soporte experimental para la emulación TSX / TSX-NI en una bifurcación QEMU . [13]
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 una mayor flexibilidad a los programadores. [14]
TSX / TSX-NI permite la ejecución optimista de regiones de código transaccional. El hardware monitorea múltiples subprocesos en busca de accesos de 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. [14]
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 siempre que sea posible, mientras que la ruta lenta (alternativa) sigue siendo un bloqueo normal.
Elisión de bloqueo de hardware
Hardware Lock Elision (HLE) agrega dos nuevos prefijos de instrucción XACQUIRE
y XRELEASE
. Estos dos prefijos reutilizan los códigos de operación de los prefijos REPNE
/ existentes REPE
( F2H
/ F3H
). En los procesadores que no admiten HLE, los prefijos REPNE
/ REPE
se ignoran en las instrucciones para las que XACQUIRE
/ XRELEASE
son válidos, lo que permite la compatibilidad con versiones anteriores. [15]
La XACQUIRE
pista prefijo sólo se puede utilizar con las siguientes instrucciones con una explícita LOCK
prefijo: ADD
, ADC
, AND
, BTC
, BTR
, BTS
, CMPXCHG
, CMPXCHG8B
, DEC
, INC
, NEG
, NOT
, OR
, SBB
, SUB
, XOR
, XADD
, y XCHG
. La XCHG
instrucción también se puede utilizar sin el LOCK
prefijo.
La XRELEASE
sugerencia de prefijo se puede utilizar tanto con las instrucciones enumeradas anteriormente como con las instrucciones MOV mem, reg
y 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 parece estar libre para otros subprocesos. Una transacción fallida da como resultado que la ejecución se reinicie desde la XACQUIRE
instrucción con prefijo, pero tratando la instrucción como si el XACQUIRE
prefijo no estuviera presente.
Memoria transaccional restringida
La memoria transaccional restringida (RTM) es una implementación alternativa a HLE que le da al programador la flexibilidad de especificar una ruta de código de reserva que se ejecuta cuando una transacción no se puede ejecutar con éxito. A diferencia de HLE, RTM no es compatible con versiones anteriores de los procesadores que no lo admiten. Para compatibilidad con versiones anteriores, se requiere que los programas detecten el soporte para RTM en la CPU antes de usar las nuevas instrucciones.
RTM añade tres nuevas instrucciones: XBEGIN
, XEND
y XABORT
. Las instrucciones XBEGIN
y XEND
marcan el inicio y el final de una región de código transaccional; la XABORT
instrucción aborta explícitamente una transacción. La falla de transacción redirige al procesador a la ruta del código de reserva especificada por la XBEGIN
instrucción, con el estado de aborto devuelto en el EAX
registro.
Posición de bit de registro EAX | Significado |
---|---|
0 | Establecer si aborto causado por XABORT instrucción. |
1 | Si se establece, la transacción puede tener éxito en un reintento. Este bit siempre está limpio si se establece el bit 0. |
2 | Se establece si otro procesador lógico entró en conflicto con una dirección de memoria que formaba parte de la transacción que se anuló. |
3 | Se establece si se desborda un búfer interno. |
4 | Establecer si se alcanzó el punto de interrupción de depuración. |
5 | Establezca si se produjo un aborto durante la ejecución de una transacción anidada. |
23: 6 | Reservado. |
31:24 | XABORT argumento (sólo válido si el bit 0 está establecido, de lo contrario reservado). |
XTEST
instrucción
TSX / TSX-NI proporciona una nueva XTEST
instrucción que devuelve si el procesador está ejecutando una región transaccional. El procesador admite esta instrucción si admite HLE, RTM o ambos.
Seguimiento de dirección de carga suspendida TSX
TSX / TSX-NI Suspend Load Address Tracking (TSXLDTRK) es una extensión de conjunto de instrucciones que permite deshabilitar temporalmente el rastreo de cargas desde la memoria en una sección de código dentro de una región transaccional. Esta característica extiende HLE y RTM, y su soporte en el procesador debe detectarse por separado.
TSXLDTRK presenta dos nuevas instrucciones, XSUSLDTRK
y XRESLDTRK
, para suspender y reanudar el seguimiento de la dirección de carga, respectivamente. Mientras se suspende el seguimiento, 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 agreguen a los conjuntos de lectura o escritura de transacciones fuera de la región de suspensión, las escrituras en estas ubicaciones por otros subprocesos no provocarán la interrupción de la transacción. La suspensión del seguimiento de la dirección 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 que la transacción se confirme correctamente.
Implementación
La especificación TSX / TSX-NI de Intel describe cómo la memoria transaccional está expuesta a los programadores, pero retiene detalles sobre la implementación real de la memoria transaccional. [16] Intel especifica en sus manuales de desarrollo y optimización que Haswell mantiene conjuntos de lectura y escritura en la granularidad de una línea de caché, rastreando direcciones en la caché de datos L1 del procesador. [17] [18] [19] [20] Intel también afirma que los conflictos de datos se detectan a través del protocolo de coherencia de caché . [18]
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 escribe en nueve ubicaciones distintas que se mapean en el 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 en el mismo núcleo, por lo que las operaciones en un procesador lógico hermano del mismo núcleo pueden causar desalojos. [18]
Los puntos de investigación independientes en la memoria transaccional de Haswell probablemente sean un sistema de actualización diferida que utiliza cachés por núcleo para datos transaccionales y puntos de control de registros. [16] 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 el búfer de ordenación de memoria (MOB) para el mismo propósito, posiblemente también proporcionando memoria transaccional con múltiples versiones que es más susceptible de subprocesos múltiples especulativos . [21]
En agosto de 2014, Intel anunció que existe un error en la implementación de TSX / TSX-NI en Haswell, Haswell-E, Haswell-EP y las primeras CPU de Broadwell, 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] [22] El error se corrigió en las versiones F-0 de la CPU Core M-5Y70 Broadwell habilitada para vPro en noviembre de 2014. [23]
El error se encontró y luego se informó durante una tesis de diploma en la Escuela de Ingeniería Eléctrica e Informática de la Universidad Técnica Nacional de Atenas . [24]
De acuerdo con el Manual de referencia de optimización 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, [17] HLE se eliminó de los productos Intel lanzados en 2019 y versiones posteriores. RTM no está documentado como eliminado. Sin embargo, las CPU Intel Comet Lake y Ice Lake de décima generación , que se lanzaron en 2020, no son compatibles con TSX / TSX-NI, [25] [26] [27] [28] [29] incluyendo tanto HLE como RTM.
En Intel Architecture Instruction Set Extensions Programming Reference revisión 41 de octubre de 2020, [30] se documentó una nueva extensión de conjunto de instrucciones TSXLDTRK y se programó para su inclusión en los próximos procesadores Sapphire Rapids .
Ver también
- Facilidad de sincronización avanzada ( tecnología competidora de AMD )
- Memoria transaccional
Referencias
- ^ 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 la 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 .
- ^ Tomas Karnagel; Roman Dementiev; Ravi Rajwar; Konrad Lai; Thomas Legler; Benjamin Schlegel; Wolfgang Lehner (febrero de 2014). "Mejora del rendimiento del índice de la base de datos en memoria con las extensiones de sincronización transaccional de Intel" (PDF) . software.intel.com . Consultado el 3 de marzo de 2014 .
- ^ "Evaluación del rendimiento de las extensiones de sincronización transaccional de Intel para la informática de alto rendimiento" . supercomputing.org . Noviembre de 2013 . Consultado el 14 de noviembre de 2013 .
- ^ "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 .
- ^ "Sincronización transaccional en Haswell" . Software.intel.com . Consultado el 7 de febrero de 2012 .
- ^ "Memoria transaccional generalizada con Intel Haswell" . Ars Technica . 2012-02-08 . Consultado el 9 de febrero de 2012 .
- ^ "La revisión del Core i7-4770K" . Hardware de Tom. 2013-06-01 . Consultado el 3 de junio de 2012 .
- ^ "Tabla de comparación de Intel de los modelos Haswell Pentium, i3, i5 e i7" . intel.com . Consultado el 11 de febrero de 2014 .
- ^ a b Scott Wasson (12 de agosto de 2014). "La errata solicita a Intel que desactive TSX en Haswell, primeras CPU de Broadwell" . techreport.com . Consultado el 12 de agosto de 2014 .
- ^ a b "Familia de procesadores Intel Core de cuarta generación de escritorio, familia de procesadores Intel Pentium de escritorio y familia de procesadores Intel Celeron de escritorio: actualización de la especificación (revisión 014)" (PDF) . Intel . Junio de 2014. p. 46 . Consultado el 13 de agosto de 2014 .
Bajo un conjunto complejo de condiciones de tiempo internas y eventos del sistema, el software que usa las instrucciones Intel TSX / TSX-NI (Extensiones de sincronización transaccional) puede observar un comportamiento impredecible del sistema.
- ^ "Rompiendo la aleatorización del diseño del espacio de direcciones del kernel con Intel TSX" (PDF) . 2016.
- ^ 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 .
- ^ Sebastien Dabdoub; Stephen Tu. "Compatibilidad con las extensiones de sincronización transaccional de Intel en QEMU" (PDF) . mit.edu . Consultado el 12 de noviembre de 2013 .
- ^ a b 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 .
- ^ "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 .
- ^ a b 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 .
- ^ a b "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 .
- ^ a b c "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 .
- ^ "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 la caché de datos de primer nivel (caché L1) del procesador.
- ^ 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 .
Toda la "CPU hace los bloqueos de grano fino" 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). Solo hay una "etiqueta de bloqueo" por línea de caché.
- ^ 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 .
- ^ Ian Cutress (12 de agosto de 2014). "Intel desactiva las instrucciones de TSX: errata encontrada en Haswell, Haswell-E / EP, Broadwell-Y" . AnandTech . Consultado el 30 de agosto de 2014 .
- ^ "Familia de procesadores Intel Core M. Actualización de la especificación. 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 procesador.
- ^ "Información HiPEAC" (PDF) . pag. 12. Archivado desde el original (PDF) el 5 de marzo de 2017.
- ^ "Especificaciones del procesador Intel® Core ™ i9-10900K" . Intel. 2020 . Consultado el 10 de octubre de 2020 .
- ^ "Especificaciones del procesador Intel® Core ™ i9-10980HK" . Intel. 2020 . Consultado el 10 de octubre de 2020 .
- ^ "Especificaciones del procesador Intel® Core ™ i7-10810U" . Intel. 2020 . Consultado el 10 de octubre de 2020 .
- ^ "Especificaciones del procesador Intel® Xeon® W-1290P" . Intel. 2020 . Consultado el 10 de octubre de 2020 .
- ^ "Especificaciones del procesador Intel® Core ™ i7-1068NG7" . Intel. 2020 . Consultado el 10 de octubre de 2020 .
- ^ "Referencia de programación de extensiones del conjunto de instrucciones de la arquitectura Intel® (PDF)" (PDF) . Intel. 2020 . Consultado el 21 de octubre de 2020 .
Otras lecturas
- Afek, Y .; Levy, A .; Morrison, A. (2014). Actas del simposio de ACM de 2014 sobre principios de computación distribuida - PODC '14 . Elisió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 elisión de bloqueo de hardware en Intel TSX.
enlaces externos
- Presentación de la FID 2012 (PDF)
- Adición de la elisión de bloqueo a Linux , Conferencia de fontaneros 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 cambia x86_capability , LKML , septiembre de 2014 (también hay otro informe de error similar )
- Microcódigo Intel , Gentoo, 19 de septiembre de 2015