es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Dirección de la caché de Intel

Aquí está la configuración de la caché L3 (compartida) en mi CPU Intel Xeon Silver 4210R:

$ getconf -a | grep LEVEL3_CACHE
LEVEL3_CACHE_SIZE                  14417920
LEVEL3_CACHE_ASSOC                 11
LEVEL3_CACHE_LINESIZE              64

Esta configuración implica que el número de conjuntos en la caché es:

fórmula

Ahora estoy tratando de entender la dirección de la caché. Puedes encontrar información aquí: direccionamiento de la caché.

Aquí, el tamaño de línea de caché (o bloque) es de 64 bytes y Intel utiliza un sistema de dirección por byte. Por lo tanto, los bits menos significativos de la dirección de caché deben utilizarse para el desplazamiento del bloque.

Con un cálculo similar, el número de bits de dirección que se deben utilizar para la indexación del conjunto es 14.32 (log2[#set]), pero este valor de fracción me confunde.

¿Me estoy perdiendo algo? ¿Cuántos bits se utilizan exactamente aquí para la indexación del conjunto?

Editar: Eric mencionó en su respuesta que cada uno de los 10 núcleos del procesador comparte 1.375MiB de caché L3. Pero esta configuración plantea otra pregunta en mi mente. Supongamos que estoy ejecutando dos procesos en el núcleo 0 y núcleo 1. Si ambos procesos utilizan la dirección virtual 0x0, ¿esas direcciones virtuales se asignarán a la misma caché L3 del núcleo (asumiendo una caché VIPT)? En otras palabras, como la caché L3 es compartida, ¿qué parte de la dirección virtual distingue la caché L3 del núcleo 0 de la caché L3 del núcleo 1?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Basado en la configuración, el número de conjuntos en la caché L3 es 20480, calculado de la siguiente manera:

    ![fórmula][2]

    Para el indexado de conjuntos, se calcula el número de bits de dirección requeridos como:

    ![fórmula][5]

    Este cálculo da como resultado un valor fraccionario de 14.318, el cual se puede redondear a 15 bits. Por lo tanto, se utilizan 15 bits para el indexado de conjuntos en la caché L3 del procesador Intel Xeon Silver 4210R.

    En cuanto a la segunda pregunta, el espacio de direcciones virtuales se divide en tablas de páginas, y cada tabla se asigna a una porción específica de la memoria física. Por lo tanto, si dos procesos utilizan la misma dirección virtual, pueden asignarse a diferentes direcciones físicas en la memoria. En cuanto a la caché L3, cada uno de los 10 núcleos del procesador comparte 1.375MiB de caché L3, y el mapeo de direcciones virtuales a físicas se realiza a nivel de tabla de páginas, no a nivel de caché. Por lo tanto, si dos procesos se ejecutan en diferentes núcleos pero utilizan la misma dirección virtual, seguirán asignándose a direcciones físicas diferentes y, por lo tanto, a diferentes cachés L3.

Comments are closed.