![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
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).
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi! - BAScript - Multi Language Scriptable Development Environment Última edición por Ñuño Martínez fecha: 29-08-2008 a las 09:49:27. |
|
#2
|
||||
|
||||
|
si estas pruebas utilizan de alguna forma la cache entonces me gustaria ver un ejemplo de codigo utilizando la cache en delphi. por otro lado me puse hacer una prueba de este tipo con el programa pc winsid y es verdad utiliza tanto la cache como el procesador para realizar la prueba
|
|
#3
|
|||
|
|||
|
Cita:
![]() Cita:
Cita:
Un saludo. |
|
#4
|
||||
|
||||
|
Cita:
"Segun yo" ??? ![]() Cita:
Cita:
Cita:
Saludos |
|
#5
|
|||
|
|||
|
Ok! para lo que se plantea, si tiene que ver el tema de la caché física, explicaré por qué.
El procesador, que genera direcciones virtuales y cuyo rango varía en función de su ancho del bus de direcciones, accede SIEMPRE a caché y no a RAM. A la RAM el procesador sólo accede cuando se producen fallos de caché, entonces el hardware realiza otro tipo de traducción de la dirección virtual a física (hemos supuesto que las caché son en la mayoría de los casos atacadas por direcciones virtuales del procesador), y quien se encarga de atacar a la memoria principal es el controlador (chipset puente norte), para adaptar temas de velocidad y ancho de bus. Para la resolución al problema que se plantea, (sobre medir los tiempo de acceso medio a memoria, que es distinto a lo planteado al principio sobre llenar la RAM, en cuyo caso vuelvo a repetir sobre el diseño de un driver, para evitar paginación), hay que darse cuenta sólo de un pequeño detalle, y es en la penalización de tiempo que se produce cuando se da un fallo (el dato/instrucción no está en el nivel al que se accede), Y aquí es ahora donde está la clave: observar y comparar la penalización por fallo en los accesos. Supón que haces un bucle largo, y realizas accesos a "memoria" (nos da igual si el dato está o no en caché, RAM o disco). Si el dato es de primera referencia se producirá un fallo forzoso en caché, con lo cual accederá a RAM, traduciendo la dirección virtual a física. Accede a ella y se trae un bloque o línea completo (por el tema de la localidad espacial), dicho bloque se almacena en caché, para en un segundo acceso al dato o al consecutivo (en el caso de un array o variable consecutiva), el dato ya estará en caché, consiguiendo reducir el tiempo de acceso. Del mismo modo, aunque con muchas más diferencias, ocurriria entre RAM y disco. La cuestión por tanto, si queremos medir el tiempo en acceder a RAM , lo que tenemos que hacer es asegurar que SIEMPRE se van a producir fallos de caché (fallos de colisión o por conflictos). Para ello es necesario saber ¿Cuantos bytes ocupa cada linea de caché?. Como ésto es dificil de averiguar, lo normal es establecer un valor alto, y mediante un bucle ir incrementando no de 1 en 1, sino de "zancada+1" en "zancada+1", siendo "zancada" el valor estimado del tamaño de un bloque de la caché. Así se asegura un fallo. Ahora bien, ¿Cuando sabremos que se está accediendo a caché y cuándo a RAM? Esto es fácil de ver utilizando por ejemplo la instrucción RDTSC de ensamblador (Read Time Stamp Counter), cuando observemos un aumento considerable (supondremos que en el bucle no hay interrupciones con otros procesos, cosa difícil de lograr), entonces se habrá accedido a un nivel inferior en la jerarquía de memoria (es decir de caché a RAM). La forma de proceder es exactamente igual que de RAM a disco. Un saludo. |
|
#6
|
||||
|
||||
|
Interesante análisis HySTD, solo me quedan un par de dudas; que yo sepa como caché física solo tenemos la L1, L2... como podemos acceder a la misma mediante algun lenguaje?
Quieres decir que hay la misma cantida de caché física que RAM? .. considerando la respuesta obvia tambien habria que medir la velocidad de transferencia de una a otra...PD; no es que dude de ti, pero si es que voy a aprender algo nuevo te rogaría incluyas alguna referencia pues soy algo "esceptico". ![]() Saludos |
|
#7
|
||||
|
||||
|
amigos como dije anteriolmente estoy hablando de la memoria ram y solo quiero probar los tiempo de lectura/escritura nada mas y quiero saber como se puede hacer esto
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| como descargar Rave y QReport para delphi 2007 | kurono | Varios | 2 | 21-08-2008 19:54:04 |
| ¿como descargar archivos por fecha y hora.? | JXJ | Firebird e Interbase | 3 | 07-09-2007 20:30:38 |
| ¿Cómo descargar Archivo de Muchas Fuentes? | JXJ | Varios | 3 | 14-03-2007 02:09:08 |
| Como descargar una imagen a partir de la url | Oxis | Internet | 2 | 20-07-2006 20:04:56 |
| Como descargar una pagina web completa??? | jhonny | Internet | 2 | 15-07-2006 17:58:23 |
|