VIPT (Virtually Indexed, Physically Tagged) es una técnica de diseño de caché que combina aspectos de las cachés virtualmente indexadas (VI) y físicamente etiquetadas (PT). En una caché VIPT, el índice para seleccionar un conjunto de caché se deriva de la dirección virtual, lo que permite un acceso rápido a la caché sin necesidad de una traducción de dirección física completa. Sin embargo, la etiqueta (tag) utilizada para verificar si la línea de caché contiene los datos correctos se deriva de la dirección física. Esto requiere que la traducción de la dirección virtual a física (a través de la MMU/TLB) se complete antes de que la etiqueta pueda ser comparada, garantizando la coherencia de la memoria y evitando problemas de alias virtual (donde diferentes direcciones virtuales apuntan a la misma dirección física, causando múltiples copias en la caché).
Esta estrategia es comúnmente utilizada en arquitecturas de procesadores modernas, especialmente en cachés L1 de datos e instrucciones. Por ejemplo, muchos procesadores ARM y x86 emplean cachés VIPT para sus niveles L1. La implementación de VIPT es crucial en sistemas operativos que utilizan paginación, ya que permite que la búsqueda en la caché comience en paralelo con la traducción de la dirección virtual, mejorando el rendimiento. Sin embargo, el tamaño de la caché VIPT está limitado por el tamaño de la página del sistema operativo, ya que el índice virtual no debe solaparse con los bits de la dirección virtual que cambian durante la traducción a física (conocido como el 'problema de homónimos').
Para un arquitecto de sistemas, comprender VIPT es fundamental para optimizar el rendimiento de la memoria y el diseño de la jerarquía de caché. La elección de VIPT implica un trade-off: ofrece una latencia de acceso a la caché más baja que las cachés físicamente indexadas/etiquetadas (PIPT) al permitir que la indexación comience antes de la traducción de la TLB, pero es más compleja de gestionar que las cachés virtualmente indexadas/etiquetadas (VIVT) debido a la necesidad de resolver alias virtuales. Los arquitectos deben considerar el tamaño de la página del sistema operativo y el tamaño de la caché L1 al diseñar sistemas, ya que un tamaño de caché VIPT que exceda el tamaño de la página puede introducir problemas de alias y requerir hardware adicional para su resolución, impactando el costo y la complejidad del diseño. La correcta configuración de la caché VIPT es clave para maximizar el rendimiento de las aplicaciones sensibles a la latencia de la memoria.