Pregunta

Nuevos procesadores ARM incluyen el PLD y el PLI instrucciones.

Estoy escribiendo apretado bucles interiores (en C++) que tiene un no-secuencial de acceso a la memoria patrón, sino un patrón que, naturalmente, mi código comprende plenamente.Preveo una sustancial aceleración si podía prefetch la siguiente ubicación, mientras que el procesamiento de la actual ubicación de la memoria, y me sería de esperar que esto sea rápido-lo suficiente como para intentar ser vale la pena el experimento!

Yo estoy usando la nueva cara de los compiladores de BRAZO, y no parece estar incluido el PLD instrucciones en cualquier lugar, y mucho menos en este particular lazo que me preocupan.

¿Cómo puedo incluir explícita prefetch instrucciones en mi código de C++?

¿Fue útil?

Solución

Debe haber algún Compilador de Características específicas.No hay ninguna forma estándar de hacerlo para C/C++.Check out, usted compilador de Compilador Guía de Referencia.Para RealView Compilador ver este o este.

Otros consejos

Si usted está tratando de extraer verdaderamente el máximo rendimiento de estos bucles, de lo que yo recomendaría escribir toda la construcción de bucle en ensamblador.Usted debe ser capaz de utilizar el ensamblado en línea dependiendo de las estructuras de datos involucradas en el bucle.Aún mejor si usted puede desenrollar cualquier pieza de su bucle (como las partes involucradas en hacer que el acceso no secuencial).

En el riesgo de pedir lo obvio:¿has comprobado el objetivo del compilador de la arquitectura?Por ejemplo (humor mí), si por defecto el compilador está dirigido a ARM7, eres nunca vamos a ver el PLD instrucción.

No es fuera de la esfera de la posibilidad de que otras optimizaciones como software de la canalización y bucle desenrollado puede lograr el mismo efecto como su obtención previa de la idea (ocultar la latencia de las cargas superpuestas útil de cálculo), pero sin la instrucción extra-caché de la presión causada por las instrucciones adicionales.Incluso me atrevería a ir tan lejos como para decir que este es el caso más a menudo que no, para que se ajusten a bucles interiores que tienden a tener pocas instrucciones y poco control de flujo.Es el compilador de hacer estos tipos tradicionales de optimizaciones en su lugar.Si es así, puede ser vale la pena mirar el diagrama de tubería para desarrollar una descripción más detallada del modelo de costos de cómo su procesador funciona, y evaluar cuantitativamente más si la obtención previa de ayuda.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top