es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Los x86 y otras arquitecturas tienen un desplazamiento y suma fusionados?

Varias arquitecturas admiten operaciones de multiplicación y suma fusionadas, como x86 con pmaddwd (y sus extensiones SSE), pero desconozco cualquier operación de desplazamiento y suma fusionada en x86 que sea equivalente a FMA. Esta pregunta se centra principalmente en x86, pero también sería útil conocer sobre otras arquitecturas.

¿Existe alguna forma de obtener de manera efectiva una operación de desplazamiento y suma fusionada basada en el IPC específico de la familia de CPU, tal vez?

Tanto shx/shr/shl como add/adc/sub se indican como operaciones de un ciclo con un rendimiento recíproco de 0.25 según la hoja de cálculo de Latencias de Instrucción de la Familia 17h de AMD, versión 1.00.

Pero para un caso de uso que coincida con una operación de desplazamiento y suma fusionada, estas operaciones deben operar sobre la misma entrada y ser dependientes entre sí, por lo que necesariamente se ejecutarán de manera secuencial en dos ciclos. En cambio, si se utilizara FMA, serían tres ciclos (con un rendimiento peor).

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Según el conocimiento y la investigación actuales, no parece haber una forma efectiva de obtener una operación de desplazamiento y suma fusionada en la arquitectura x86 o cualquier otra arquitectura. La multiplicación y suma fusionada es una operación común en diversas arquitecturas, incluyendo x86 con pmaddwd y sus extensiones SSE. Sin embargo, no existe un equivalente para el desplazamiento y suma fusionados. Las instrucciones shx/shr/shl y add/adc/sub mencionadas en la hoja de cálculo de Latencia de Instrucciones de la Familia 17h de AMD versión 1.00 tienen una capacidad de procesamiento recíproca de 0.25 cada una y pueden operar en un ciclo cada una. Sin embargo, como dependen entre sí y necesitan operar en la misma entrada, necesariamente se ejecutarán secuencialmente en dos ciclos, no en uno. Utilizar FMA en su lugar tomaría tres ciclos y tendría una capacidad de procesamiento inferior. Por lo tanto, parece que una operación de desplazamiento y suma fusionada no es posible actualmente en x86 o en cualquier otra arquitectura.

Comments are closed.