Pergunta

Alguém poderia recomendar alguns documentos para me para ilustrar as diferenças entre multi-CPU, multi-core, e hiper-thread? Estou sempre confuso sobre essas diferenças, e sobre as vantagens / desvantagens de cada arquitetura em diferentes cenários.

EDIT: aqui está o meu entendimento atual após a aprendizagem on-line e aprender com os comentários dos outros; poderia alguém revisar comentário, por favor?

  1. Eu acho hiper-thread é a tecnologia inferior mais entre eles, mas barato. Sua idéia principal é registros duplicados de economizar tempo troca de contexto;
  2. processador Multi é melhor do que hyper-thread, mas uma vez que diferentes CPUs estão em chips diferentes, a comunicação entre CPUs diferente é de maior latência do que multi-core, e usando múltiplos chips, há mais despesa e mais consumo de energia do que com multi-core;
  3. integra multi-core todas as CPUs em um único chip, de modo a latência de comunicação entre diferentes CPUs são muito reduzidas em comparação com multi-processador. Uma vez que utiliza um único chip para conter todas as CPUs, é consumidor menos energia e é menos caro do que um sistema de processador de múltiplos.

Agradecemos antecipadamente, George

Foi útil?

Solução

Multi-CPU foi a primeira versão: Você teria uma ou mais placas-mãe com um ou mais chips de CPU sobre eles. O principal problema aqui foi que as CPUs teria para expor alguns dos seus dados internos para a outra CPU para que eles não iria ficar em seu caminho.

O próximo passo foi hyper-threading. Um chip na placa-mãe, mas tinha algumas partes duas vezes internamente para que ele pudesse executar duas instruções ao mesmo tempo.

O desenvolvimento atual é multi-core. É basicamente a idéia original (várias CPUs completa), mas em um único chip. A vantagem:. Projetistas de chips pode facilmente colocar os fios adicionais para os sinais de sincronismo para o chip (em vez de ter de encaminhá-los para fora em um pino, em seguida, sobre a placa-mãe lotado e até em um segundo chip)

Super computadores são hoje multi-cpu, multi-core:. Eles têm muitas placas-mãe com geralmente 2-4 CPUs sobre eles, cada CPU é multi-core e cada um tem a sua própria RAM

[EDIT] Você tem que praticamente certo. Apenas alguns pontos de menor importância:

  • Hyper-Threading mantém o controle de dois contextos ao mesmo tempo em um único núcleo, expondo mais o paralelismo com o núcleo da CPU fora-de-ordem. Isso mantém as unidades de execução alimentados com o trabalho, mesmo quando um segmento está parado em um cache miss, mispredict ramo, ou à espera de resultados de instruções de alta latência. É uma maneira de obter o rendimento mais total, sem replicar tanto hardware, mas se alguma coisa ele diminui cada segmento individualmente. Veja este Q & A para obter mais detalhes , e uma explicação sobre o que estava errado com a redacção anterior deste parágrafo.

  • O principal problema com multi-CPU é que o código em execução sobre eles acabarão por aceder à RAM. Existem N CPUs, mas apenas um ônibus para acesso a RAM. Portanto, você deve ter algum hardware que garante que a) cada CPU recebe uma quantidade razoável de acesso RAM, b) que acessa a mesma parte da RAM não causam problemas e c) o mais importante, que CPU 2 será notificado quando CPU 1 escreve a algum endereço de memória que CPU 2 tem em seu cache interno. Se isso não acontecer, CPU 2 terá todo o prazer usar o valor em cache, ignorando o fato de que ele está desatualizado

    Apenas imagine que você tem tarefas em uma lista e você quer espalhar-los para todas as CPUs disponíveis. Então CPU 1 vai buscar o primeiro elemento da lista e atualizar os ponteiros. CPU 2 fará o mesmo. Por razões de eficiência, tanto CPUs não só irá copiar os poucos bytes para o cache, mas uma "linha de cache" todo (seja ele qual for). O pressuposto é que, quando você ler byte X, em breve você vai ler X + 1, também.

    Agora, ambos os processadores têm uma cópia da memória em seu cache. CPU 1, então, buscar o próximo item da lista. Sem sincronização cache, ele não vai ter notado que CPU 2 mudou da lista, também, e ele vai começar a trabalhar sobre o mesmo item como CPU 2.

    Isto é o que efetivamente torna multi-CPU tão complicado. Os efeitos colaterais dos isso pode levar a um desempenho que é pior do que o que você obteria se o código inteiro correu apenas em uma única CPU. A solução foi multi-core: Você pode facilmente adicionar tantos fios que você precisa para sincronizar os caches; você ainda pode copiar dados de um cache para outro (actualização partes de uma linha de cache sem ter que flush e recarregá-lo), etc. Ou a lógica cache pode ter certeza de que todas as CPUs obter a mesma linha de cache quando eles acessarem a mesma parte da RAM real, simplesmente bloquear CPU 2 para alguns nanossegundos até CPU 1 tem feito suas alterações.

[EDIT2] A principal razão para multi-core é mais simples do multi-cpu é que em uma placa-mãe, você simplesmente não pode executar todos os fios entre os dois chips que você precisa para tornar a sincronização eficaz. Além disso, um sinal só viaja 30cm / ns topos (velocidade da luz, em um fio, você geralmente têm muito menos). E não se esqueça que, em uma placa-mãe multi-camada, os sinais começam a influenciar cada otela (crosstalk). Nós gostamos de pensar que 0 é 0V e 1 é 5V mas, na realidade, "0" é algo entre -0.5V (ultrapassagem ao deixar cair uma linha a partir 1-> 0) e .5 V e "1" é qualquer coisa acima de 0.8V.

Se você tem tudo dentro de um único chip, os sinais de correr muito mais rápido e você pode ter como muitos como você gosta (bem, quase :). Além disso, o sinal crosstalk é muito mais fácil de controlar.

Outras dicas

Você pode encontrar alguns artigos interessantes sobre CPU dual, multi-core e hyper-threading em site da Intel ou em um pequeno artigo de Universidade de Yale .

Espero que você encontra aqui todas as informações que você precisa.

Em poucas palavras: multi-CPU ou sistema multi-processador tem vários processadores. Um sistema multi-core é um sistema multi-processador com vários processadores no mesmo molde. Em hyperthreading, múltiplos segmentos pode ser executado no mesmo processador (que é o tempo contexto da central, entre estes vários segmentos é muito pequeno).

Multi-processadores estão lá há 30 anos, mas principalmente em laboratórios. Multi-core é o novo popular, multi-processador. processadores para servidores hoje em dia implementar hyperthreading, juntamente com multi-processadores.

Os artigos da Wikipedia sobre estes temas são bastante ilustrativo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top