Comprobación de límites utilizando el MPX de Intel

2

Intel ha agregado recientemente nuevas instrucciones a su conjunto de instrucciones para admitir la verificación de límites. Intel los llama las Extensiones de Protección de Memoria (MPX), y se describen en el Capítulo 9 de este manual . En pocas palabras, puede usar las nuevas instrucciones MPX para cargar una base y un límite superior en registros especiales antes de realizar una operación de memoria; el procesador luego verificará que la dirección de la memoria esté dentro de los límites y quedará atrapado si no lo está. Básicamente, este es un soporte a nivel de hardware para la verificación de límites.

Esto parece muy intrigante. Hasta ahora, uno de los principales desafíos con la implementación de la comprobación automática de límites para los programas C y C ++ es el rendimiento: si una opción de compilación ralentiza su programa en un 50%, o un 10%, muchos desarrolladores pueden mostrarse reacios. Esta extensión de hardware suena como el tipo de cosa que potencialmente podría abordar la dirección de rendimiento, y quizás también facilite a los compiladores habilitar la verificación automática de límites con menos complejidad en el código del compilador.

Entonces, ¿esto es útil en la práctica? ¿Alguno de los compiladores existentes ofrece soporte para la verificación de límites acelerados por hardware usando estas instrucciones? ¿Existe alguna medida sobre cuál es la sobrecarga de rendimiento de este tipo de comprobación de límites acelerada por hardware?

    
pregunta D.W. 09.11.2013 - 05:25
fuente

1 respuesta

4

Aparentemente hay una rama de desarrollo de gcc que incluye soporte para la verificación de límites usando las extensiones MPX. Se ve interesante. No se proporcionan números de rendimiento.

El proyecto AddressSanitizer ha experimentado con el uso de extensiones MPX en su proyecto, pero sus reacciones se mezclan . Ellos predicen que para algunos programas este enfoque puede ser muy rápido, pero para otros puede ser lento. Es difícil saberlo con seguridad.

Un desafío es que ningún procesador de envío es compatible con el MPX (en la actualidad), por lo que es difícil saber exactamente qué tan bien o mal funcionará esto. Todo lo que podemos hacer ahora es ejecutar el código dentro de un emulador, no ejecutarlo en una CPU de hardware real.

    
respondido por el D.W. 09.11.2013 - 09:36
fuente

Lea otras preguntas en las etiquetas