Dudas sobre notas de memoria cache

Re: Dudas sobre notas de memoria cache

de Federico Rivero -
Número de respuestas: 0
Hola Rafael, cómo estás? Muy interesantes tus preguntas, contesto entrelíneas:

No me termina de quedar claro como el tipo de programas que se corrar en una computadora afecta cuanta cache es conveniente que tenga el sistema, no es algo conveniente para cualquier programa tener accesos rapidos a memoria?

Sí, agregar más memoria cache tiene un efecto positivo o neutro en la performance de los programas, nunca negativo. La comparación que está haciendo en ese punto es con respecto al costo monetario de la memoria cache. Si los programas utilizan regiones de memoria chicas o alineadas de alguna manera especial, entonces es posible que con una cache de capacidad X, se obtenga una buena performance, y que aumentarle la capacidad a esa cache no redunde en mayor performance, o que sí la aumente, pero que no valga la pena con respecto a cuánto costó esa mejora. Una manera de pensarlo es que el dinero es un recurso finito al construir una computadora, y que quizás ese dinero podría ser invertido en una mejora en otro componente por el cual se obtenga más performance.

Ademas no termino de entender porque para el tamaño de la cache debo mirar el tamaño de la memoria principal del sistema. Entiendo que si tengo una computadora con 512 MB de RAM, ponerle 12 MB de cache probablemente es excesivo, pero se da tambien lo contrario, que a mas RAM debo tener mas cache? Digamos que un sistema con 16 GB de memoria principal tiene un cache de 12MB (y supongamos que es adecuado, no estoy seguro que sean numeros realistas), entonces si yo duplico la memoria principal a 32 GB, manteniendo el tamaño de la cache, bajaria el rendimiento del sistema de cache?

La respuesta a este punto es similar a la anterior, lo que hay que pensar no es si aumentar la caché dado una ram fija, sino considerar un sistema con un cierto tamaño de cache y otro tamaño de RAM, y calcular qué es más conveniente aumentar, si la RAM, la caché, o un poco de cada una. Lo que dice el teórico es que la respuesta a esa pregunta no pasa por 'siempre aumentar caché' o 'siempre aumentar ram', sino que en general conviene aumentar ambas de forma que mantengan esa relación óptima.

PD: Los bloques de memoria se traen al cache solo cuando hay un miss de lectura o si hay un miss de escritura me traigo tambien el bloque porque es esperable usar un dato que acabo de escribir?

Los bloques se traen tanto en un miss como en un read, ambos son accesos a memoria y están sujetos a los principios de localidad espacial y temporal, por lo tanto tiene sentido traer los bloques desde memoria a caché en caso de que exista una escritura, pues se supone que existirán accesos a dicho bloque en el futuro cerano.