En un sistema de memoria caché, el tiempo requerido para leer físicamente o escribir datos de la memoria RAM del caché representa solo una parte del tiempo requerido para realizar un acceso de lectura o escritura de caché. Especialmente en un sistema multiprocesador, también es necesario determinar qué se supone que debe hacer la caché en cualquier acceso dado. Considera, por ejemplo, un caché de conjunto asociativo que es asociativo de cuatro vías, dividido entre cuatro bancos de memoria. Cuando el procesador realiza una solicitud de lectura, el controlador de caché sabe instantáneamente que si los datos, si están en la caché, deben provenir de una dirección conocida en uno de los cuatro bancos. El controlador de caché podría iniciar inmediatamente una solicitud de lectura a los cuatro bancos en paralelo (sin habilitar la salida de activación) antes de determinar qué chip, si lo hay, retiene realmente los datos. Al menos tres de los bancos obtendrán datos inútiles, pero obtener datos inútilmente es inofensivo (además de gastar algo de electricidad). Lo importante es que para cuando el controlador descubra qué banco (si lo hay) guarda los datos y controla la salida habilitada, las memorias ya tendrán algún tiempo para procesar la solicitud de acceso.
Sin embargo, con una solicitud de escritura, el controlador de caché no puede comenzar a realizar una operación de memoria hasta que sepa qué chip se debe escribir. Una lectura inútil es inofensiva; uno puede decir efectivamente "no importa" y descartar los datos extraídos erróneamente. Una escritura inútil, sin embargo, no se puede deshacer. Por lo tanto, es importante que los datos no se escriban hasta después de que el controlador haya descubierto dónde se supone que debe ir la escritura.
Si uno solo estuviera realizando escrituras en memoria, podría realizarlas tan rápido como las lecturas canalizando el proceso. En el ciclo n, el controlador averiguaría a qué parte de la memoria se suponía que debía ir el byte n, mientras que el byte n-1 se escribía en la ubicación calculada en el ciclo anterior. Muy pocas situaciones, sin embargo, involucran muchas escrituras de memoria consecutivas sin lecturas intermedias. Si la escritura en la memoria real ocurre en el ciclo después de una solicitud de escritura, y el procesador desea realizar una lectura durante ese ciclo, la lectura tendrá que esperar.
Las escrituras, en muchos casos, se retrasan aún más por el hecho de que muchos sistemas no permiten que los bytes de memoria se escriban individualmente. Un sistema puede tener un bus de 64 bits entre la memoria caché y la memoria principal, y puede requerir que la memoria principal solo se escriba en fragmentos de 64 bits. Si el código desea escribir un solo byte, será necesario leer 64 bits de la RAM, escribir un byte en el caché y, posteriormente, volver a escribir los 64 bits en la RAM. Puede ser posible que una memoria caché realice la escritura mientras los datos se extraen de la RAM principal, y luego, una vez que estén disponibles, solo copie los 56 bits no escritos del bus de memoria principal en la memoria caché, pero dicha lógica agrega complejidad. En muchos casos es más simple simplemente retrasar la escritura hasta que la línea de caché se haya leído desde la RAM.
En los sistemas multiprocesador, las cosas se complican aún más por el hecho de que dos procesadores pueden leer repetidamente la misma línea de caché sin interferencia, pero si un procesador escribe una línea de caché, no se debe permitir que el otro procesador use esa línea de caché hasta o bien el primer procesador lo ha escrito en la RAM principal y el segundo procesador lo ha leído, o el primer procesador ha suministrado los datos al segundo procesador a través de otros medios. Una secuencia de operaciones que consta completamente de lecturas se ejecutará mucho más rápido que una secuencia de operaciones que consiste en una mezcla de lecturas y escrituras (teniendo en cuenta que, en muchos casos, las operaciones que parecen implicar solo escrituras implicarán de hecho lecturas y escrituras). ). El problema no es tanto que las escrituras en sí mismas sean más lentas, sino que una escritura en una CPU que precede o sigue a cualquier operación realizada por otra CPU requerirá que ambas CPU realicen un protocolo de enlace adicional que no sería necesario si ambas CPU solo estuvieran leyendo .