¿Cómo funcionan un TLB y un caché de datos?

15

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é.

Figura

audiFanatic
fuente
Esta pregunta es muy larga. ¿Puede extraer una pregunta específica y estrecha de esto, y luego editar su pregunta para reducirla a una sola pregunta específica? Parte de hacer una buena pregunta implica pensar cuidadosamente sobre cuál es la esencia mínima de lo que necesita saber e incluir solo lo que es relevante y esencial para esa pregunta. Por ejemplo, si tiene una pregunta específica sobre cómo funcionan los TLB, en lugar de deshacerse de todo esto, ¿qué le parece tratar de enmarcar una sola pregunta estrechamente elaborada sobre un TLB?
DW
Muy bien, mi intención era mostrar lo que entiendo sobre el tema, ya que a la mayoría de las personas en el intercambio de fichas no les gusta responder preguntas sin que el autor de la pregunta muestre algún esfuerzo (comprensiblemente). Supongo que no puedo hacer felices a todos. Tal vez solo lo edite con mi pregunta en negrita o algo así.
audiFanatic el
@DW, ¿eso es mejor?
audiFanatic el
audiFanatic, puede haber malinterpretado o malinterpretado mis comentarios y la mentalidad de "mostrar algo de esfuerzo". Mi sugerencia es que identifique una pregunta estrecha, algo así como "¿cómo funciona un TLB? No lo entiendo", y luego vuelve a centrarse únicamente en esa pregunta. Sí, debe hacer un esfuerzo serio para responder esa pregunta , y debe mostrar el esfuerzo que ha hecho para responder esa pregunta específica , pero el esfuerzo en un tema no relacionado no es relevante (por ejemplo, el hecho de que se esforzó por hacer avanzar en una pregunta de tarea que te hizo pensar en esta pregunta).
DW
Déjame ayudarte a entender los antecedentes detrás de esto. Queremos crear un archivo de alta calidad de preguntas y respuestas que sean útiles para los demás (no solo para usted). Lo mejor que puede hacer para ayudar es extraer una pregunta específica, estrecha y bien planteada, y centrar su pregunta solo en esa pregunta. Es menos probable que una pregunta extensa y abierta que no esté muy enfocada sea útil para otras personas que puedan tropezar con ella (y también es más difícil para los lectores llegar al punto y comprender cuál es el núcleo de su pregunta, por lo que es menos probable que obtenga una buena respuesta).
DW

Respuestas:

23

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).

DW
fuente
1
¡Gracias! Eso aclaró casi todo. Pasé mucho tiempo investigando esto (varios días), simplemente no pude encontrar una información clara y concisa que lo uniera todo (además, mi confusión probablemente no ayudó en mi búsqueda). Como analogía, sentí que estaba en una farmacia buscando una cura para alguna enfermedad no diagnosticada; utilizando solo los síntomas como guía.
audiFanatic
Dicho esto, tengo una pregunta más. Si son cachés, ¿por qué el libro separa los datos y las porciones de etiquetas del caché (demonios, la porción de datos es incluso más alta que la etiqueta y la porción de bits válida)? Hace que parezca que el caché no sirve más que para verificar etiquetas (como si no almacenara datos). ¿Es ese bloque de datos en la esquina inferior derecha de la imagen parte del caché o es parte de la memoria principal o qué?
audiFanatic
1
VPAGV+1PAG+1V+2PAG+2V+4095PAG+4095
yoyoyo
Vale genial. Gracias. Supongo que fue la separación lo que más me confundió.
audiFanatic