¿Es posible crear explícitamente objetos estáticos en la memoria caché de la CPU, para asegurarse de que esos objetos permanezcan siempre en la memoria caché para que no se llegue a ningún impacto en la memoria RAM o Dios lo prohíbe, memoria virtual hdd?Asigne memoria estática en la memoria caché de la CPU en c/C++: ¿es posible?
Estoy particularmente interesado en dirigirme a la memoria caché compartida L3 grande, sin intentar apuntar a L1, L2, instrucción ni a ninguna otra caché, solo la caché de memoria más grande que existe.
Y solo para aclarar para diferenciar de otros hilos que busqué antes de publicar esto, no estoy interesado en privatizar todo el caché, solo unas pocas, pequeñas clases de región.
Creo que lo mejor que puedes hacer es usar la macro [__builtin_prefetch macro] de GCC (http://gcc.gnu.org/onlinedocs/gcc-3.3.6/gcc/Other-Builtins.html). La memoria caché IIRC no es direccionable por código, la CPU se las arregla sola (al menos en x86). –
¿Qué tipo de procesador? Algunas arquitecturas tienen instrucciones para dar sugerencias de caché o dirigir capturas previas de caché antes de que se necesiten datos. – TJD
corto anwer: no no puedes. Lo único que puede hacer es mantener apretada la localidad de referencia. No salte de un lado a otro en la memoria, pero intente acceder a los datos que están cerca de los datos a los que se accedió en la operación anterior. Además: mantener sus datos alineados en los límites de la memoria caché puede ayudarlo a evitar otra búsqueda en la memoria caché. Por cierto, las ranuras * de caché * no tienen que ser consecutivas. En x86, hay IIRC cuatro ranuras L1 y cientos o miles de ranuras L2. (que debe compartir con otros procesos en una máquina multiproceso). – wildplasser