diferencias de rendimiento de memcpy entre procesos de 32 y 64 bits

Tenemos máquinas Core2 (Dell T5400) con XP64.

Observamos que cuando se ejecutan procesos de 32 bits, el rendimiento de memcpy es del orden de 1.2GByte / s; sin embargo, memcpy en un proceso de 64 bits alcanza aproximadamente 2.2GByte / s (o 2.4GByte / s con la compilación Intel CRT memcpy). Si bien la reacción inicial podría ser simplemente explicar esto debido a los registros más amplios disponibles en el código de 64 bits, observamos que nuestro propio código de ensamblaje SSE tipo memcpy (que debería estar utilizando almacenes de carga de 128 bits de ancho independientemente de 32 / 64 bits del proceso) demuestra límites superiores similares en el ancho de banda de copia que logra.

Mi pregunta es, ¿a qué se debe realmente esta diferencia? ¿Los procesos de 32 bits tienen que saltar algunos aros WOW64 adicionales para llegar a la RAM? ¿Tiene algo que ver con TLB o prefetchers o ... qué?

Gracias por cualquier idea.

También criado enForos de Intel.

Respuestas a la pregunta(7)

Su respuesta a la pregunta