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


12

En una pregunta relacionada , pregunté sobre el beneficio de un sistema de doble CPU en términos de duplicar el caché L3.

Sin embargo, he notado que la serie de CPU Xeon E5-2600 tiene exactamente 2.5 MB de caché L3 por 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 el caché L3 se comparte entre 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" el caché L3 y ralentizar el rendimiento para las aplicaciones en primer plano de mayor prioridad. Dos problemas de rendimiento específicos que tengo motivan esta pregunta.

  1. La compilación de un determinado programa C ++ requiere 25 minutos en mi sistema de desarrollo actual en VS 2008, mientras que en otro sistema va mucho más rápido, requiere solo 5 minutos en VS 2008 con configuraciones idénticas, a pesar de que tengo un i7 casi de gama alta. CPU 970 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 toman aproximadamente el mismo tiempo), a pesar de mis intentos de limitar las entradas del menú contextual (actualmente hay quizás 10 adicionales más allá 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 simplificar el sistema.

También tengo muchas aplicaciones en segundo plano de baja prioridad ejecutándose; en particular, software redundante de copia de seguridad en la nube, como CrashPlan, que generalmente se acumula para utilizar aproximadamente el 25% de la utilización total de la CPU en este sistema de 6 núcleos y 12 hilos.

Obtendré una nueva computadora. Sé que continuaré ejecutando muchas aplicaciones en segundo plano e instalando / desinstalando muchos programas. Si pensara que obtener un sistema de doble CPU que duplica no solo los núcleos sino también el caché L3 ayudaría a superar el horrible rendimiento del compilador de C ++ y la desaceleración del sistema general, con mucho gusto lo haría.

No debería haber ninguna razón por la cual un sistema de gama alta funciona tan lentamente, incluso con muchos programas y aplicaciones en segundo plano. Pero si se producen mis problemas, independientemente de la cantidad de energía de la CPU y el caché L3 que le dé al sistema, simplemente porque tengo tantos programas y aplicaciones en segundo plano instalados y en ejecución, no quiero desperdiciar $ 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 las aplicaciones en segundo plano de baja prioridad podrían estar acaparando el caché L3, ralentizando los programas de mayor prioridad), o más bien si está vinculado a individuos núcleos, sería apreciado.


Buena pregunta para la que personalmente no tengo una buena respuesta, excepto para decir que también estaba bajo la impresión de que L3 fue compartida. Solo preguntaría por qué demonios estás llamando a estos Xeons de 'segunda generación' cuando 'Xeon' ha sido un producto Intel durante una década. (Si esto es por analogía con Sandy Bridge i3 /
5/7

Intel se refiere a la línea de CPU i7-2600 como "2da generación" ( ark.intel.com/products/family/59136/… ). Por "Xeon de segunda generación" me refiero al lanzamiento equivalente de las CPU de arquitectura Xeon Sandy-Bridge E el 6 de marzo de 2012 ( en.wikipedia.org/wiki/… ).
Dan Nissenbaum

1
Esa es la analogía que pensé que estabas haciendo. Es malo (esos son i7 de segunda generación pero no son Xeons de segunda generación), y cambiaría el título de IMO ... esperaba encontrar una pregunta sobre procesadores de 12 años y eso podría mantener a mucha gente de hacer clic aquí. Tal vez cambie '2da generación' a 'Sandy Bridge-E'.
Shinrai

Respuestas:


13

En estas CPU, cada núcleo físico tiene su propio caché L2. El caché L3 es compartido por todos los núcleos y es inclusivo, es decir, cualquier dato que resida en el caché L2 de cualquier núcleo también reside en el caché L3.

Si bien esto puede parecer un desperdicio de espacio L3, en realidad hace que el L3 sea invaluable para acelerar las operaciones de memoria entre núcleos. El propósito principal de la caché L3 es actuar como una centralita y un área de preparación para los núcleos. Por ejemplo, si un núcleo quiere saber si una región de memoria puede ser almacenada en caché por otro núcleo, puede verificar el caché L3. Si la información fue procesada por un núcleo y luego necesita ser procesada por otro núcleo, la entregan a través del caché L3 en lugar de la memoria más lenta fuera del chip. Más allá de eso, su impacto en el rendimiento no es tanto, 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 propio caché L2 de 256 KB y efectivamente 256 KB reservados en el caché L3, todos los núcleos comparten el saldo. Una actividad menos importante en otros núcleos puede dañar 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, usando operaciones no temporales).


0

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

Alguien me corrija si estoy equivocado.


L2 y L3 no son para nada lo mismo. En los diseños recientes de Intel, L1 / L2 son por núcleo y pequeños (32k L1 I $ & D $ / 256k unificado L2), mientras que L3 es inclusivo y compartido por la GPU y todos los núcleos. L1 / L2 están físicamente separados, pero sirven para propósitos similares (es decir, hacer que el acceso a la memoria sea rápido para un solo núcleo). El L3 inclusivo tiene otro propósito: la coherencia entre los núcleos (y la GPU). Ver la respuesta de @ DavidSchwartz.
Peter Cordes
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.