¿Qué es falso compartir?

El uso compartido falso es una situación que puede ocurrir en un programa de computadora cuando dos aplicaciones que se están ejecutando simultáneamente intentan acceder a información en la misma región de memoria lógica que cada programa o proceso ha almacenado en su propia caché. Los datos en la caché de cada aplicación se copian de una fuente común, por lo que la modificación de una caché hace que la otra tenga que volver a cargarse desde la fuente. El aspecto falso de compartir surge cuando los cambios realizados en la línea de caché por un programa no afectan realmente los datos que el segundo programa está utilizando, en cuyo caso forzar la recarga de la caché es un desperdicio de recursos del sistema y puede afectar negativamente la ejecución del programa. El problema del intercambio falso es difícil de detectar, porque no es un resultado directo de ningún código contenido en las aplicaciones, aunque existen formas efectivas de evitar el intercambio falso, como mover datos que están en una línea actualmente en caché a una línea separada. .

Una de las principales razones por las que puede ocurrir un intercambio falso se encuentra en cómo un sistema operativo o hardware maneja la lectura y escritura de datos. Cuando un programa lee o escribe información de un disco duro u otra fuente, normalmente se carga en una caché temporal para que se pueda acceder a ella rápidamente. La cantidad de información que se almacena en caché desde la ubicación de origen se denomina línea de caché y es un bloque lógico de memoria que normalmente puede tener entre 2 bytes y 256 bytes de longitud. En algunos sistemas operativos o arquitecturas de sistema, los programas pueden ejecutarse al mismo tiempo, como en el procesamiento en paralelo. Esto significa que es posible que dos programas separados intenten acceder a información en la misma línea de caché, por lo que cada programa tendrá su propia copia de los datos de origen, lo que podría causar que los cambios en una caché no se reflejen en la otra caché, invalidando la datos que contiene.

Hay varios mecanismos empleados para manejar la situación cuando dos programas intentan acceder a la misma línea de caché, pero el resultado más a menudo es que un programa se ve obligado a recargar su caché con la información actualizada que el otro programa ha modificado. Este tipo de incidente se conoce como intercambio falso cuando los datos dentro de la línea de caché a la que accede cada programa no están relacionados, por lo que obligar a un programa a recargar la caché es una pérdida de potencia de procesamiento y otros recursos. En la mayoría de los casos, esto es un problema para un programa que nunca modificará la información en su caché, por lo que no hay riesgo de que la aplicación sobrescriba los cambios que ha realizado el otro proceso.

Existen dos formas predominantes de prevenir o mitigar los efectos del intercambio falso. La primera es agregar información en blanco antes o después de los datos en la memoria, esencialmente forzándolos a una línea de caché separada a la que no está accediendo otro programa. El segundo método consiste en restringir la frecuencia de lectura y escritura en la línea de caché para que se recargue lo menos posible. Las soluciones más complejas implican la administración a nivel de caché o incluso cambios en la forma en que un sistema operativo maneja el uso compartido.