PC multi-core arquitetura, agendamento de núcleos de acesso à memória do sistema

1

Meu computador de escritório tem 8 núcleos. Eu recentemente atualizei o sistema de 4Gb de RAM (em dois módulos) para 24Gb de RAM (em seis módulos) e notei um aumento considerável no desempenho quando vários núcleos estão ativos. Em particular, quando todos os núcleos (ou quase todos) estão ativos e executando programas que exigem mais do que o cache de cada núcleo (8Mb) fornece.

A RAM antiga e a nova têm a mesma velocidade (FSB 1333MHz). Então eu suspeito que não é isso que está acontecendo.

É possível que (algumas?) arquiteturas de PC permitam que núcleos acessem simultaneamente a RAM do sistema se a memória que estão usando estiver suficientemente "distante"? Eu não tenho certeza do que "distante" pode significar, mas talvez haja uma maneira de um núcleo ler / escrever no cartão 1 (ou chip 3 no cartão 1) enquanto outro núcleo poderia ler / escrever simultaneamente no cartão 2 (ou chip 1). no cartão 1)? Arquiteturas de PC (e talvez sistemas operacionais) são inteligentes?

    
por Ryan Budney 05.09.2010 / 22:48

2 respostas

2

Supondo que a placa-mãe suporta a operação triple-channel , o aumento de desempenho é, pelo menos parcialmente, devido para mover de canal duplo para canal triplo.

    
por 05.09.2010 / 23:05
3

Bem, há NUMA . Quando é usado, cada núcleo recebe um pedaço de RAM atribuído a ele. Desta forma, exatamente o que você descreveu acontece. Um processador funcionará com a RAM atribuída e outro funcionará com diferentes partes da RAM. Algumas placas-mãe nem detectam RAM, a menos que haja CPUs suficientes para usar tudo. Eu não sei se este é o caso do computador mencionado aqui, mas se é o computador no nível da estação de trabalho, do que é possível.

Outra opção é intercalação de memória . Alguns computadores podem acessar a memória mais rapidamente se a memória for "separada". O princípio é que enquanto um módulo está executando a operação de escrita, outro módulo pode aceitar comandos, então não há necessidade de esperar que a operação de escrita termine em um módulo antes de iniciar em outro módulo.

Então imagine uma matriz de números. Cada número representa um local de memória. Digamos que neste exemplo simplificado demais cada local tenha um byte de tamanho. Portanto, se o processador precisar gravar 4 bytes, ele gravará os dados nos primeiros 4 locais de memória. Normalmente o wold estaria no mesmo módulo de memória e provavelmente no mesmo chip de memória. O computador precisaria esperar que cada operação de gravação fosse concluída antes de enviar o próximo datum para a memória. Se a intercalação é usada, os endereçados são mapeados de maneira diferente. Se tivermos um computador com 4 slots de memória, o endereço 1 estará no primeiro slot, 2 no segundo, 3 no terceiro e 4 no quarto. Desta forma, quando o processador precisa escrever 4 bytes, ele os enviaria para os primeiros 4 endereços de memória, mas como eles estão em módulos diferentes, ele não precisa esperar que cada operação de gravação seja concluída. Em vez disso, enviará os dados para o primeiro local e depois para o segundo e assim por diante. Desta forma, no momento em que a primeira operação de gravação termina, outras 3 estão chegando ao fim, portanto os dados podem ser gravados mais rapidamente na memória.

    
por 05.09.2010 / 23:37