|
Si quieres saltarte las cachés deberás currártelo más. Por un lado, deberás utilizar datos aleatorios, pero muy aleatorios, para evitar que el sistema de predicción del microprocesador utilice la caché. También debería cambiar la dirección de memoria donde realiza dichas lecturas y escrituras por lo mismo. Por otro lado, el código ejecutable también se cachea y se "predice", lo cual también afecta.
Hoy en día es muy difícil establecer el rendimiento de un algoritmo ya que los programas de pruebas suelen ser mucho más pequeños y con necesidades menores de memoria, lo cual hace que se falseen los datos por culpa de las cachés. Fíjate en cómo funcionan esos programas de comprobación de memoria RAM. Observa que utiliza multitud de patrones diferentes (los va nombrando según los utiliza, algunos incluso muestran en pantalla representaciones gráficas de lo que están haciendo) precisamente para que el trabajo se realice en la memoria RAM real y no en las cachés o en los registros. Tal vez debas echar un vistazo al código fuente de alguno de estos programas (hay varios para GNU/Linux), aunque creo que todos están escritos en C y ensamblador, que en mi opinión son más adecuados que Pascal para estos menesteres (por temas de control de optimizaciones, no por potencia o capacidad).
Última edición por Ñuño Martínez fecha: 29-08-2008 a las 09:49:27.
|