¿La caché L3 es compartida por todos los núcleos de una CPU Sandy-Bridge E Xeon?

¿La caché L3 es compartida por todos los núcleos de una CPU Sandy-Bridge E Xeon?

en unpregunta relacionadaPregunté sobre el beneficio de un sistema de CPU dual en términos de duplicar el caché L3.

Sin embargo, he notado que la serie de CPU Xeon E5-2600 tiene exactamente2,5 MB de caché L3por núcleo.

Esto me lleva a creer que el sistema operativo reserva 2,5 MB de caché L3 por núcleo. Sin embargo, también tengo la impresión contradictoria de que la caché L3 escompartidoentre todos los núcleos. Sorprendentemente hay poca información o discusión sobre esto.

Mi principal preocupación es si las aplicaciones en segundo plano de baja prioridad podrían "acaparar" la caché L3 y ralentizar el rendimiento de las aplicaciones en primer plano de mayor prioridad. Dos problemas de rendimiento específicos que tengo motivan esta pregunta.

  1. Compilar un determinado programa C++ requiere 25 minutos en mi sistema de desarrollo actual en VS 2008, mientras que en otro sistema es mucho más rápido y requiere solo 5 minutos en VS 2008 con configuraciones idénticas, a pesar de que tengo un i7 de gama alta. 970 CPU y suficiente RAM.

  2. Los programas suelen tardar hasta 20 segundos en ejecutarse (es decir, mostrar su ventana principal) en mi sistema; y en una nota relacionada, el shell de Windows requiere hasta 10 segundos para mostrar el menú contextual del Explorador de Windows (y los comportamientos relacionados también tardan aproximadamente el mismo tiempo), a pesar de mis intentos de limitar las entradas del menú contextual (actualmente hay quizás 10 adicionales además de el valor por defecto).

Ciertamente, mi sistema está cargado con una gran cantidad de aplicaciones que he instalado (y desinstalado) a lo largo de los años, pero de todos modos hago todo lo posible para optimizar el sistema.

También tengo muchas aplicaciones en segundo plano de baja prioridad en ejecución; en particular, software de copia de seguridad en la nube redundante como CrashPlan, que normalmente suman aproximadamente el 25 % de la utilización total de la CPU en este sistema de 6 núcleos y 12 subprocesos.

Me compraré una computadora nueva. Sé que seguiré ejecutando muchas aplicaciones en segundo plano e instalando/desinstalando muchos programas. Si pensara que conseguir un sistema de CPU dual que duplique no sólo los núcleos sino también la caché L3 ayudaría a superar el horrible rendimiento del compilador de C++ y la ralentización general del sistema, lo haría con mucho gusto.

AlládeberíaNo hay razón para que un sistema de alta gama funcione tan lentamente, incluso con muchos programas y aplicaciones en segundo plano. Pero si mis problemas ocurren sin importar cuánta potencia de CPU y caché L3 le dé al sistema, simplemente porque tengo tantos programas y aplicaciones en segundo plano instalados y en ejecución, no quiero gastar $2,500 dólares adicionales en una CPU dual. sistema que no ayudará a resolver mi problema.

Cualquier sugerencia, en particular con respecto a mi pregunta sobre si el caché L3 se comparte entre todos los núcleos (de modo que es posible que las aplicaciones en segundo plano de baja prioridad estén acaparando el caché L3, ralentizando los programas de mayor prioridad), o más bien si está vinculado a individuos núcleos, sería apreciado.

Respuesta1

En estas CPU, cada núcleo físico tiene su propia caché L2. La caché L3 es compartida por todos los núcleos y es inclusiva; es decir, cualquier dato que resida en la caché L2 de cualquier núcleo también reside en la caché L3.

Si bien esto puede parecer un desperdicio de espacio L3, en realidad hace que L3 sea invaluable para acelerar las operaciones de memoria entre núcleos. El objetivo principal de la caché L3 es actuar como centralita y área de preparación para los núcleos. Por ejemplo, si un núcleo quiere saber si otro núcleo puede almacenar en caché una región de la memoria, puede verificar el caché L3. Si la información fue procesada por un núcleo y el siguiente necesita ser procesado por otro núcleo, la transfieren a través del caché L3 en lugar de la memoria fuera del chip, que es más lenta. Más allá de eso, su impacto en el rendimiento no es mucho, excepto por algoritmos inusuales: el caché L2 es lo suficientemente grande para cosas pequeñas y el caché L3 es demasiado pequeño para cosas grandes.

Entonces, si bien cada núcleo tiene su propia caché L2 de 256 KB y efectivamente 256 KB reservados en la caché L3, el resto lo comparten todos los núcleos. Una actividad menos importante en otros núcleos puede perjudicar el desempeño de una tarea más importante que se beneficia del uso del espacio L3. Pero por las razones que mencioné, generalmente no es un efecto significativo en la práctica y generalmente no vale la pena preocuparse más allá de optimizar las operaciones de "datos masivos" (como la compresión y el escaneo) para minimizar la contaminación de la caché. (Por ejemplo, utilizando operaciones no temporales).

Respuesta2

Tengo entendido que todos los niveles de caché se implementan directamente en el chip y que L2 y L3 son iguales (que solo Intel reconoce la diferencia, AMD los combina). Con esto en mente, me imagino que la caché L3 de las CPU no se comparte entre las CPU de una placa base con doble conector. Esto también tiene sentido teniendo en cuenta que es típico ver canales de memoria separados para RAM por CPU.

Que alguien me corrija si me equivoco.

información relacionada