Pergunta

eu tenho visto na literatura para alguns dos mais recente do CPU, como o Intel Xeon "Nehalem-EX" como tendo 8 núcleos e 16 threads. O que eles estão falando? Eu vi menção a isso em referência, de modo SPARCS também, certamente este não é o tipo de tópicos lógicos gerados pelo código? É este hyperthreading re-nomeada?

Foi útil?

Solução

Sim, Nehalem baseado em processadores implementar Hyper-Threading .

O novo Nehalem-EX que você se refere tem 8 núcleos físicos onde cada núcleo pode ser visto como 2 núcleos lógicos para um total de 16 núcleos lógicos, permitindo a execução de 16 tópicos de aplicativos em um único processador.

Esta é a mesma tecnologia usada nos processadores Pentium 4 Hyper-habilitado-threading e, mais recentemente, sobre os processadores Atom. Meu Eee PC tem um processador Atom de núcleo único que tem dois núcleos lógicos - o Gerenciador de Tarefas do Windows irá mostrar dois gráficos da CPU; um para cada núcleo lógico.

O Sun UltraSPARC T2 (eo T1) também permitem a simultânea multithreading (dos quais a implementação da Intel é chamada Hyper-threading - uma marca comercial da Intel), que permite que um único núcleo para aparecer como múltiplos núcleos lógicos para executar vários segmentos em um único núcleo.

A idéia aproximada trás multithreading simultânea é ter vários registros para armazenar o estado do processador, então parece que realmente existem múltiplos núcleos em um único núcleo, porque tem vários full-conjuntos de registros de hardware.

Enquanto as instalações físicas, como a ALU e FPU não pode aumentar, ter mais conjuntos de registros para executar mais segmentos em um núcleo físico pode levar a uma melhor utilização dos recursos do processador disponíveis. O núcleo pode não ter sido saturado durante a execução de um único segmento, mas a execução de múltiplos poderia saturar todas as unidades para o seu pleno potencial.

Então, o que isso significa para programadores?

Isso significa que ainda terá de escrever software multi-threaded - Tendo um programa que tem apenas um único segmento só vai ser capaz de utilizar um único núcleo lógico. Só por ter o código multi-threaded bem escrito, somos capazes de aproveitar o enorme número de núcleos lógicos esses processadores oferecem.

Mesmo com multithreading simultânea, o código é executado em um thread por núcleo lógico.

Outras dicas

Um extremo de um processador de multi-threaded é o processador de barril. Esta é uma forma de SMT com clivagens do processador de intervalos entre os vários segmentos igualmente de uma maneira round-robin. Para fazer isso, ele só precisa de cópias dos vários registos ao usar o mesmo conjunto de unidades de execução. Então, em 4 ciclos de relógio que iria colocar o código das linhas 0-3 na calha.

Você pode pensar no resto destes processadores trabalhando em uma forma similar, a um grau mais ou menos. Em vez de distribuição de entalhes em torno da mesma forma, pode apenas utilizar-se ranhuras que estão vazios devido a riscos tanto de controlo ou de dados no processador.

Por exemplo, quando um ramo é tomada, instruções no gasoduto pode ter de ser lavada. Em vez de liberar completamente tudo, alguns dos slots podem ser usados ??para outros tópicos. A idéia é melhorar o desempenho por não desperdiçar ciclos de CPU.

Isso é como tópicos múltipla trabalhar em hardware.

Não é Hyper-Threading renomeado - é hyper-threading (está escrito nesta página Web que deu link para)

.

Simplesmente, processador diz OS que tem 16 núcleos, para que ele possa equilibrar as tarefas em número dobrou de núcleos. Tecnologia Hyper-Threading dar algum benefício becouse em alguns casos duas instruções diferentes de dois programas diferentes / tópicos podem ser executados em um núcleo simultaneamente. Mas com certeza não vai dar 200% acelerar. Eu não fiz o trabalho em tal processador, mas eu acho que você pode obter cerca de 10% -20% tempo de CPU adicional.

É até modelo de segmentação de cada sistema operacional para mapear tópicos de nível OS para tópicos de nível de hardware, tais como aqueles descritos na pergunta.

Os tópicos lógicos gerados pelo linguagens de programação de alto nível usado por programadores de aplicações ainda estão um nível de OS removido do hardware, a menos que você está falando sobre o código de sistema operacional que faz o mapeamento.

Hyperthreading (marca registrada da Intel por sinal) permite que cada thread para realmente executar simultaneamente. Portanto, neste caso você pode executar 8x2 threads da aplicação, ao mesmo tempo.

A partir da brochura ...

Intel Nehalem Arquitetura construída em processo de tecnologia high-k metal de gate de 45nm exclusivo da Intel

 Up to **8 cores** per processor
 Up to **16 threads per processor** with Intel® Hyper-threading
 2.3 billion transistors

Compare isso com uma única CPU, os sistemas de núcleo único, onde cada segmento deve ser programadas e, no máximo, apenas um thread estará ativo -. Que um corredor ligado CPU tarefa e os outros à espera de uma transferência I / O

Originalmente enfiar foi usado tanto para modelar um conjunto de atividades simultâneas (não não Modelo realmente executado em paralelo) ou para produzir a aparência de um sistema que foi responsivo mesmo fazendo I / O. Por exemplo, sem threading, o seu processador de texto parece tenda ao salvar um documento.

Por muitos anos eu resisti à idéia de ter vários segmentos em meus aplicativos de desktop - é complicado o código e uma possível redução da performance - pensar em todas essas operações mutex que requerem o kernel do sistema operacional para se envolver. Com o advento da execução, na verdade paralela de threads, minhas objeções são reduzidas, mas eu ainda acredito que vários processos, em vez de vários segmentos em um único processo é uma abordagem melhor.

Chris

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