Con el fin de acelerar el acceso a los datos, se adicionó al sistema una memoria llamada caché que es manejada automáticamente y su función es guardar temporalmente las direcciones de la información leída recientemente, así cuando sea necesario leerlos nuevamente, el sistema lee el caché que es más rápido que los discos y busca la información, gastando menos cantidad de tiempo.
Inicialmente el caché sólo era externo y venía en integrados tipo DIP en cantidades de 32K, 64K y 128K. En la actualidad existe caché externo llamado de Nivel 2 (L2) en cantidades de más de 512K y caché interno llamado de Nivel 1 (L1). Este último viene incorporado en el microprocesador y aumenta el rendimiento del mismo almacenando las últimas instrucciones ejecutadas.
Algo importante del caché es que su tiempo de acceso es mucho menor que el de la memoria principal (RAM) por lo tanto su lectura es también mucho más rápida.
La efectividad del caché se puede dar por dos factores además de su tamaño. Estos son la organización y el criterio de escritura. La organización puede ser por mapificación directa o asociativa de grupo y el criterio de escritura puede ser escritura directa, directa con buffer o de contraescritura.
Un caché de mapificación directa mira la memoria en bloques, y asigna una línea de la memoria del caché a cada bloque, ésta es de fácil implementación. La desventaja se pone en evidencia en entornos de multitarea como OS/2, Unix y NetWare, aunque no bajo Windows. Las peticiones repetidas de líneas diferentes en el mismo bloque resultan en “errores” en el caché. Estos programas de multitareas pueden alternar entre dos o más tareas, cada una llamando una línea diferente en el mismo bloque. El caché se carga y se descarga repetidamente entre tareas, y por lo tanto el rendimiento puede sufrir. Esto se conoce como “thrashing” que significa que el caché está recibiendo una paliza.
Un caché de organización asociativa de grupo asigna múltiples líneas a cada bloque principal de memoria. Un caché asociativo de dos vías asigna dos lugares de caching a cada bloque, un caché asociativo de grupo de cuatro vías asigna cuatro lugares por bloque, y así sucesivamente. La habilidad de mantener múltiples líneas en el caché reduce sustancialmente el thrashing.
Esta ventaja se obtiene al costo de la complejidad y la velocidad. El controlador del caché debe mantener dos a más líneas de cada bloque, verificando dos o más lugares para determinar si la información necesaria está en el caché. Con cada vía adicional, el caché se complica más, y su complejidad puede imponer limitaciones de velocidad.
Los cachés pueden intervenir en todas las operaciones de memoria o pueden restringirse a las lecturas. Estos últimos llamados caché de escritura directa (Write Thru), ignora la información destinada a la memoria y pasa las instrucciones de escritura a la memoria del sistema sin tocarla. Si el microprocesador escribe una línea que ya existe en el caché, la línea será actualizada en el caché y la memoria principal simultáneamente.
Un caché de escritura directa con buffer a veces llamado de escritura directa moderada, demora la escritura a la memoria hasta que el microprocesador se mueva a una operación no relacionada de la memoria. En ese momento se escribe el contenido del buffer a la memoria.
El caché de contraescritura (Write Back) intercepta las operaciones de escritura y lectura. Aunque éste mejora el rendimiento (30% de todas las operaciones son de escritura), también aumenta la complejidad del diseño y añade sus propios problemas. El controlador del caché debe asegurar constantemente que la memoria del caché y la memoria principal tienen la misma información para que otros dispositivos en el sistema no intenten leer información de la memoria principal antes de que sea actualizada por el caché.