Estoy tratando de estudiar para un examen y me di cuenta de que estoy confundido acerca de cómo funcionan el TLB y el caché de datos.
Entiendo que el TLB es esencialmente un caché de las direcciones físicas utilizadas más recientemente. Sin embargo, estaba mirando un diagrama en mi libro de texto (que se muestra a continuación) y no entiendo lo que está sucediendo en él. Supongo que de repente divide la dirección física y la usa para indexar el caché. Pero, ¿por qué muestra el caché y los datos por separado? ¿Y por qué el desplazamiento de bytes se deja flotando? Estoy bastante seguro de que se supone que el caché también almacena datos. No creo que su único propósito sea determinar si hay un acierto o error dentro de él.
Pido disculpas por mi ignorancia por adelantado, pero el libro apenas cubre los TLB (es como un poco más que una página) y no hace un muy buen trabajo al explicar la relación entre un TLB y el caché.
fuente
Respuestas:
Creo que veo tu confusión. El TLB y el caché de datos son dos mecanismos separados. Ambos son cachés de una especie, pero almacenan en caché diferentes cosas:
Por lo tanto, el TLB actúa como un caché dedicado para esta búsqueda. El TLB tiene algunas entradas TLB, donde cada entrada TLB contiene una dirección virtual y su dirección física correspondiente.
El TLB permite que el procesador convierta rápidamente las direcciones virtuales en direcciones físicas. Si una instrucción le pide al procesador que realice alguna operación de memoria en una dirección (virtual), el procesador primero verifica si el TLB contiene una entrada para esa dirección virtual. Si lo hace, eso se llama un "hit de caché" para la búsqueda de TLB, y dado que la entrada TLB también contiene la dirección física traducida, el procesador sabe de inmediato qué dirección física usar. Si no es así, es un error de caché para la búsqueda de TLB, y el procesador tiene que realizar laboriosamente la conversión de virtual a física recorriendo la tabla de páginas. (Una vez que termina de hacer esa conversión, agrega una entrada al TLB para que las futuras conversiones de esa dirección virtual sucedan mucho más rápidamente).
El caché de datos es un caché para el contenido de la memoria. La memoria principal le permite especificar una dirección física y leer el valor en esa dirección física. Sin embargo, la memoria principal es lenta. Si tuviéramos que ir a la memoria principal cada vez que quisiéramos hacer alguna operación de memoria, nuestro procesador sería muy lento.
Por lo tanto, el caché de datos actúa como un caché dedicado para lecturas de memoria. El caché de datos tiene algunas entradas de caché, donde cada entrada de caché contiene una dirección física y el valor de la memoria en esa dirección.
El caché de datos le permite al procesador leer muy rápidamente de la memoria. Cuando el procesador quiere leer la memoria en alguna dirección (física), primero verifica el caché de datos para ver si contiene una entrada de caché para esa dirección. Si lo hace, esto se conoce como un "golpe de caché" (en el caché de datos), y el procesador puede usar inmediatamente el valor de datos almacenado en esa entrada de caché, sin necesidad de contactar con la memoria principal. Si no es así, esta es una "falta de caché" (para el caché de datos), y el procesador debe ir a la memoria principal. (Después de que el procesador recibe el valor en esa dirección de la memoria principal, agrega una entrada de caché al caché de datos para que los intentos de leer esa misma dirección lleguen al caché de datos).
Ambos son cachés, pero tienen un propósito diferente. El procesador usa ambos para cada operación de memoria: primero usa el TLB para convertir de una dirección virtual a una dirección física, luego verifica el caché de datos para acelerar el proceso de lectura del valor almacenado en la memoria en esa dirección.
Para más detalles, puede leer el artículo de Wikipedia sobre TLB . Si realiza una búsqueda, hay mucha otra información disponible sobre TLB y cachés de datos. Sugiero buscar "TLB" y "caché L1" o "caché L2" (los últimos 2 son tipos de cachés de datos).
(Para referencia futura: esperamos que investigue un poco sobre su pregunta antes de preguntar aquí, y que revise las fuentes estándar de Internet. Si puede encontrar la respuesta en Wikipedia, no ha hecho suficiente investigación por su cuenta. Es posible que haya tenido mejor suerte si hubiera consultado las fuentes de Internet para obtener información sobre cómo TLB antes de preguntar aquí. Consulte también ¿Cuánto esfuerzo de investigación se espera de los usuarios de Stack Overflow? Entonces, aproveche la oportunidad para usar esto como una lección sobre cómo puede mejorar su propio habilidades de investigación: algo que será valioso para usted a lo largo de su carrera).
fuente