O cache L3 é compartilhado por todos os núcleos de uma CPU Sandy-Bridge E Xeon?

O cache L3 é compartilhado por todos os núcleos de uma CPU Sandy-Bridge E Xeon?

Em umpergunta relacionadaPerguntei sobre o benefício de um sistema de CPU dupla em termos de duplicação do cache L3.

No entanto, notei que a série de CPUs Xeon E5-2600 tem exatamente2,5 MB de cache L3por núcleo.

Isso me leva a acreditar que o sistema operacional reserva 2,5 MB de cache L3 por núcleo. No entanto, também tenho a impressão contraditória de que o cache L3 écompartilhadoentre todos os núcleos. Surpreendentemente, há pouca informação ou discussão sobre isso.

Minha principal preocupação é se os aplicativos em segundo plano de baixa prioridade podem "consumir" o cache L3 e diminuir o desempenho dos aplicativos em primeiro plano de maior prioridade. Dois problemas específicos de desempenho que tenho motivam esta pergunta.

  1. Compilar um determinado programa C++ requer 25 minutos no meu sistema de desenvolvimento atual no VS 2008, enquanto em outro sistema ele é muito mais rápido, exigindo apenas 5 minutos no VS 2008 com configurações idênticas - apesar do fato de eu ter um i7- 970 CPU e RAM suficiente.

  2. Os programas geralmente levam até 20 segundos para serem executados (ou seja, exibirem sua janela principal) em meu sistema; e em uma observação relacionada, o shell do Windows requer até 10 segundos para exibir o menu de contexto do Windows Explorer (e os comportamentos relacionados também levam o mesmo tempo), apesar das minhas tentativas de limitar as entradas do menu de contexto (atualmente existem talvez 10 adicionais além o padrão).

Meu sistema certamente está carregado com um grande número de aplicativos que instalei (e desinstalei) ao longo dos anos, mas mesmo assim faço o possível para simplificar o sistema.

Também tenho muitos aplicativos em segundo plano de baixa prioridade em execução; em particular software redundante de backup em nuvem, como CrashPlan, que normalmente utiliza cerca de 25% da utilização total da CPU neste sistema de 6 núcleos e 12 threads.

Vou comprar um novo computador. Eu sei que continuarei executando muitos aplicativos em segundo plano e instalando/desinstalando muitos programas. Se eu pensasse que obter um sistema de CPU dupla que dobra não apenas os núcleos, mas o cache L3 ajudaria a superar o horrível desempenho do compilador C++ e a lentidão geral do sistema, eu faria isso com prazer.

devenão há razão para que um sistema de última geração opere tão lentamente, mesmo com muitos programas e aplicativos em segundo plano. Mas se meus problemas ocorrerem, não importa quanta potência de CPU e cache L3 eu forneça ao sistema, simplesmente porque tenho tantos programas e aplicativos em segundo plano instalados e em execução, não quero desperdiçar US$ 2.500 dólares adicionais em uma CPU dupla. sistema que não ajudará a resolver meu problema.

Alguma sugestão, em particular em relação à minha pergunta sobre se o cache L3 é compartilhado entre todos os núcleos (de modo que aplicativos em segundo plano de baixa prioridade possam estar sobrecarregando o cache L3, desacelerando programas de alta prioridade), ou melhor, se estiver vinculado a indivíduos núcleos, seriam apreciados.

Responder1

Nessas CPUs, cada núcleo físico possui seu próprio cache L2. O cache L3 é compartilhado por todos os núcleos e é inclusivo – ou seja, quaisquer dados que residam no cache L2 de qualquer núcleo também residem no cache L3.

Embora isso possa parecer um desperdício de espaço L3, na verdade torna o L3 inestimável para acelerar operações de memória entre núcleos. O objetivo principal do cache L3 é atuar como painel de controle e área de preparação para os núcleos. Por exemplo, se um núcleo quiser saber se uma região da memória pode ser armazenada em cache por outro núcleo, ele poderá verificar o cache L3. Se as informações foram processadas por um núcleo e em seguida precisam ser processadas por outro núcleo, elas são transmitidas por meio do cache L3, em vez da memória mais lenta fora do chip. Além disso, seu impacto no desempenho não é muito grande, exceto por algoritmos incomuns – o cache L2 é grande o suficiente para coisas pequenas e o cache L3 é pequeno demais para coisas grandes.

Portanto, embora cada núcleo tenha seu próprio cache L2 de 256 KB e efetivamente 256 KB reservados no cache L3, o equilíbrio é compartilhado por todos os núcleos. Atividades menos importantes em outros núcleos podem prejudicar o desempenho de uma tarefa mais importante que se beneficia do uso do espaço L3. Mas pelas razões que mencionei, geralmente não é um efeito significativo na prática e geralmente não vale a pena se preocupar além da otimização de operações de "dados em massa" (como compactação e varredura) para minimizar a poluição do cache. (Por exemplo, usando operações não temporais.)

Responder2

Entendo que todos os níveis de cache são implementados diretamente no chip e que L2 e L3 são iguais (que apenas a Intel reconhece a diferença, a AMD os combina). Com isso em mente, imagino que o cache L3 nas CPUs não seja compartilhado entre as CPUs em uma placa-mãe com soquete duplo. Isso também faz sentido, tendo em mente que é comum ver canais de memória separados para RAM por CPU.

Alguém me corrija se eu estiver errado.

informação relacionada