As CPUs multinúcleo ainda sofrem com retornos decrescentes no mundo de hoje?

8

Foi demonstrado em outras questões que, devido ao estado dos aplicativos de computador, os processadores com vários núcleos sofrem com retornos decrescentes. Este ainda é o caso no mundo de hoje?

A maioria dos novos aplicativos adota multiencadeamento e, assim, tira proveito de ter vários núcleos? Caso contrário, os sistemas operacionais mais recentes de 64 bits ajudam a tirar proveito dos núcleos, atribuindo tarefas / processos a diferentes núcleos? Ou os processadores com vários núcleos ainda continuam a sofrer os mesmos retornos decrescentes (ou similares)?

Faça backup de quaisquer reivindicações com referências.

rishimaharaj
fonte
2
Estar em um sistema operacional x64 não faria diferença quando você tiver um programa com vários threads. As diferenças no cenário do compilador entre 2008 e 2012 são enormes. Até que houvesse uma maneira fácil de executar uma ação em vários segmentos, ter uma CPU com a capacidade de executar vários segmentos ao mesmo tempo é inútil. Ainda hoje ainda não é fácil o suficiente para fazer isso.
28712 Ramhound

Respostas:

7

Depende muito do que você faz.

Para o Word, Excel e Minesweeper regulares, e qualquer outra coisa que sua mãe use, um núcleo ainda é suficiente e mais de dois é um exagero. Esses tipos de aplicativos passam a maior parte do tempo ociosos, aguardando a entrada do usuário.

Para jogos, você se beneficiará de pelo menos dois. Depois disso, depende do jogo. Teoricamente, você pode executar cada oponente da IA ​​em um segmento separado, mas a lógica central do jogo não pode ser facilmente paralelizada - você precisa de um local onde todos os resultados sejam reunidos para formar um estado coerente do jogo. Portanto, geralmente há um segmento "principal" em que todos esperam.

Para multimídia, processamento de números reais e ciência, todos os núcleos contam. Essas são tarefas inerentemente multithread ou que podem ser facilmente executadas, e os desenvolvedores têm um forte incentivo para tirar proveito de todo o poder de processamento disponível.

Usuários avançados gostam de multitarefa. Torrent, VirtualBox, captura de tela, vídeo, minecraft e navegação na web, tudo funcionando ao mesmo tempo. Então, você se beneficiará de que cada aplicativo com fome de CPU tenha seu próprio núcleo. Hoje em dia é popular transmitir ao vivo seu jogo. Portanto, são dois núcleos para o jogo, pelo menos mais um para o encoder, e pelo menos mais um para o resto do sistema. São pelo menos 4 núcleos.

Ansis Māliņš
fonte
11
Em geral, a boa IA do jogo é muito mais difícil do que reconciliar várias ações. Isso é apenas uma adição sofisticada. Em segundo lugar, você presume jogos com um único estado central de jogo. Isso também não é necessariamente verdade. Mesmo que isso aconteça, isso também não é necessariamente uma barreira para a segmentação. Por exemplo, os cálculos da física geralmente são feitos em paralelo. E, finalmente, os jogos também têm uma grande parte de renderização gráfica, o que também leva à segmentação.
MSalters
Eu duvido que um único núcleo é sempre a escolha certa (basta colocar uma fórmula muito lento para o Excel ...) e eu acho que você está over-simplificando um pouco. Que tal, por exemplo, o recurso Turbo Core (AMD) / Turbo Boost (Intel) em processadores mais novos? Ele permite que minha AMD de núcleo hexagonal estacione metade de seus núcleos e execute a outra metade a uma velocidade de clock mais rápida - e a versão da Intel é ainda mais refinada, acredito - para que o processador possa se otimizar rapidamente em tempo real para o trabalho necessário de isto. Isso os torna uma escolha melhor? O problema pode ser resolvido com precisão apenas por medições e referências do mundo real.
DMA57361
Concordo completamente com @ DMA57361 Há alguns anos, meu tio comprou vários computadores AMD de núcleo único para seus filhos pré-adolescentes. Os processos em segundo plano (o Windows Update sendo o ofensor mais flagrante) regularmente os tornavam praticamente inutilizáveis ​​por minutos por vez, atingindo o limite máximo da CPU.
Dan Is Fiddling Por favor
Não se esqueça do hyperthreading. Os processadores Intel mais avançados podem simular o núcleo extra do processador, fornecendo um conjunto extra de registros em cada núcleo e permitindo que os threads usem partes diferentes de cada núcleo do processador ao mesmo tempo para aumentar ainda mais o desempenho de multitarefa.
bwDraco
A renderização em 3D é outra que mostra uma grande vantagem. Se você é um animador ou designer gráfico e faz muitas renderizações; todos os softwares de nível profissional têm a vantagem de aproveitar todos os núcleos que sua máquina oferece (e mais no caso de clusters em rede). O desempenho será escalado linearmente com o número de núcleos.
Jason C
5

Receio que a resposta ainda seja, como sempre foi, "depende do que você está fazendo".

Sim, há retornos decrescentes da adição de mais e mais núcleos, e sempre haverá se você executar apenas um aplicativo por vez .

Mesmo em um aplicativo multiencadeado bem elaborado, muitas das tarefas segmentadas são realizadas para aguardar os componentes mais lentos da máquina - disco rígido, rede - sem afetar o desempenho aparente para o usuário. Estes não podem ser melhorados por uma maior paralelização, pelo que qualquer limite teórico de velocidade é inacessível para fins práticos.

Vale a pena notar que existem poucos aplicativos "grandes" que não são multiencadeados (basta verificar o equivalente ao Gerenciador de Tarefas do seu sistema operacional, ele poderá informar quantos pertencem a cada processo - meu Firefox atualmente usa 31, por exemplo )

Obviamente, a execução de vários aplicativos não interdependentes não é tão restrita por esses limites. À medida que você adiciona mais núcleos, você pode executar mais aplicativos simultaneamente com pouca queda no desempenho do processamento (no entanto, o desempenho do disco rígido, da rede, etc.) não aumenta tão bem. Na prática, mesmo isso também está sujeito a retornos decrescentes, pois há uma sobrecarga inevitável no gerenciamento da distribuição do trabalho entre núcleos, pipelines de comunicação e assim por diante.

Por exemplo, esta publicação de Tom's Hardware (de 2009) tenta analisar o desempenho de alguns processadores com vários núcleos em aplicativos simultâneos - executando um jogo ao lado de uma verificação do AVG (ambos provavelmente com vários threads). Todos os processadores quad, tri e dual core têm desempenho semelhante apenas com o jogo, mas adicionam a verificação simultânea do AVG e o desempenho (medido pelo FPS médio) cai 22%, 40% e 59%, respectivamente.

Portanto, enquanto um quad core não ofereceu aumento de desempenho em relação ao dual core ao executar um aplicativo intensivo, assim que outra tarefa intensiva apareceu, acabou tendo o dobro de desempenho. Infelizmente, não consigo encontrar muito mais que investiga o quão bem isso é dimensionado com mais núcleos e tarefas mais intensivas.


E então você deve observar os recursos modernos de processadores como o Turbo Boost da Intel / Turbo Core da AMD. Esses recursos específicos permitem que um processador de vários núcleos estacione núcleos (coloque-os em um modo mais lento, de baixo consumo de energia) e use a energia disponível para fazer overclock dos núcleos que permanecem ativos - permitindo que o processador se otimize para fornecer o máximo de poder de processamento possível para o número de tarefas apresentadas.

DMA57361
fonte
2

Para adicionar combustível ao fogo, li aqui que o Android é realmente mais lento por ter mais de um núcleo:

O uso de processadores com vários núcleos pode realmente tornar os dispositivos Android mais lentos, disse Mike Bell, gerente geral do grupo de comunicações móveis da Intel, que culpa a capacidade de multiencadeamento do Android, ou a falta dela, pela dificuldade do sistema operacional em lidar com CPUs poderosas.

Quanto mais núcleos um dispositivo tiver, mais energia ele precisará - e, por enquanto, essa quantidade de energia é simplesmente demais para o equilíbrio dos dispositivos Android.

rishimaharaj
fonte
Hummm, editar isso na sua pergunta original não funcionaria melhor?
Journeyman Geek
Eu estou pensando que todo este tópico será convertido em um wiki / FAQ da comunidade, e achei que seria melhor deixar a pergunta como está e adicioná-la separadamente. @ Moderadores - essa resposta deve ser mesclada com a pergunta ou deixada como está?
rishimaharaj
0

Claro, isso depende do que você está fazendo, mas sim, há retornos decrescentes.

Aplicativos simples e cotidianos, como processamento de texto ou navegação na Web, beneficiam-se pouco de ter mais de dois núcleos de processador. Os aplicativos científicos de computação e jogos tendem a fazer melhor uso de quatro (ou mais) núcleos e / ou capacidade de hyperthreading, pois tendem a ser projetados para aproveitar ao máximo o hardware moderno, mas o benefício de mais de quatro núcleos é limitado.

Além disso, nem tudo é vinculado à computação. A adição de núcleos de processador não ajudará se sua carga de trabalho estiver vinculada a E / S. Se você já instalou um SSD para substituir um disco rígido mecânico, provavelmente saberá que o desempenho da computação diária é limitado com mais frequência do que o armazenamento do seu computador. Em ambientes de servidor ocupados, onde um grande número de núcleos é usado para permitir que o sistema lide com um grande número de usuários e solicitações simultaneamente, matrizes de disco especializadas, SSD e outros sistemas de armazenamento são usados ​​para garantir o máximo desempenho sob carga.

bwDraco
fonte