Dudas sobre notas de memoria cache

Dudas sobre notas de memoria cache

de Rafael Agustin Castelli Ottati -
Número de respuestas: 1

Hola, en la pagina 10  de las notas aparece lo siguiente: "Si  bien  el  punto  de  equilibrio  depende  fuertemente del  tipo  de  programas  que  se ejecuten  en  el  sistema,  existirá  una  cierta  cantidad  de  memoria  a  partir  de  la  cual  el incremento  del  rendimiento  obtenido  no  compensa  el costo  adicional  de  agregar  más memoria   cache." y "siempre  deberemos  lograr  un  compromiso  entre  la  cantidad  de  memoria cache y la cantidad de memoria principal."

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?
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?

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?


Desde ya muchas gracias,
Saludos,
Rafael

En respuesta a Rafael Agustin Castelli Ottati

Re: Dudas sobre notas de memoria cache

de Federico Rivero -
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.