Cómo comprobar si una CPU admite el conjunto de instrucciones SSE3


Mejor respuesta

Ensamblador de 32 bits:

mov eax, 0

cpuid

test ecx, 0x0001

Naturalmente Querría asegurarme de presionar primero los cuatro registros GP y hacerlos saltar una vez que haya verificado los indicadores que está buscando. Hay otros indicadores relacionados con cosas como el monitor / espera de SSE3 (bit 3 por lo que 0x0080) o funciones suplementarias (bit 9, por lo que 0x0200) es posible que también desee utilizar.

Bastante fácil de incorporar en C o la mayoría de los lenguajes de programación «reales» con ensamblador en línea, asumiendo que su compilador vale un carajo.

Respuesta

AVX es el nombre de una de las muchas extensiones vectoriales x86 de Intel. Ha estado en uso desde la serie sandy bridge / bulldozer de CPU de Intel y AND respectivamente.

¿Qué es una extensión vectorial?

La arquitectura de CPU tradicional (procesamiento escalar) opera en un modelo llamado SISD: instrucción única, datos únicos. Tiene un núcleo de procesador que opera en instrucciones secuencialmente, cada una operando en un solo conjunto de operandos a la vez.

Esto funciona bien para la mayoría de tipos de cargas de trabajo, pero, en general, no es adecuado para algunos tipos de cargas de trabajo informáticas intensivas. Considere la edición de fotos, por ejemplo: si quisiera duplicar el brillo de una imagen, tendría que duplicar el brillo de una imagen píxel a píxel, lo cual es lento. Cada píxel es realmente independiente de los demás, lo que significa que existe la posibilidad de paralelismo masivo: dados suficientes recursos de cómputo y la arquitectura adecuada, teóricamente uno podría hacer todo ese trabajo en una sola operación.

Ingrese a los procesadores vectoriales: estos operan en un modelo llamado SIMD. En lugar de operar en un solo elemento uno por uno, un procesador vectorial concatena muchos elementos de datos en un elemento grande (típicamente 256 bits o más), luego realiza operaciones sobre eso. El resultado es que un procesador vectorial puede trabajar en muchos elementos de datos en una sola operación, cuando un procesador tradicional necesitaría varias operaciones para hacerlo.

Conceptos básicos de la programación SIMD

Las arquitecturas tradicionales de CPU como X86 obviamente no fueron diseñadas para la operación SIMD. A lo largo de los años, Intel ha agregado continuamente extensiones al ISA x86 para mejorar su funcionalidad, y las extensiones SIMD fueron algunas de las primeras en aparecer.

Comenzó con MMX en el Pentium, pero tuvo bastante Limitaciones evidentes. Más tarde, Intel agregó la extensión del conjunto de instrucciones SSE, que eliminó algunas de estas limitaciones. Continuaron iterando en SSE en la próxima década, hasta que finalmente introdujeron AVX.

AVX introdujo algunas mejoras bastante significativas sobre su predecesor, SSE4.x

El tamaño del registro vectorial se incrementó de 128 bits a 256 bits, duplicando el rendimiento potencial. Las instrucciones pasaron del formato tradicional de 2 operandos (a = a + b) a un formato de 3 operandos ( a = b + c), mejorando la flexibilidad. Las reglas de alineación también se relajaron.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *