Os processadores multi-core ainda sofrem com retornos decrescentes no mundo de hoje?

9

Foi mostrado em outras questões que, devido ao estado das aplicações informáticas, os processadores multi-core sofrem de retornos decrescentes. Esse ainda é o caso no mundo de hoje?

A maioria dos novos aplicativos abrange multi-threading e, assim, aproveita vários núcleos? Se não, a mais nova ajuda do sistema operacional de 64 bits tira proveito dos núcleos atribuindo tarefas / processos a diferentes núcleos? Ou processadores multi-core ainda continuam sofrendo com os mesmos (ou similares) retornos decrescentes?

Por favor, faça backup de quaisquer reivindicações com referências.

    
por rishimaharaj 26.07.2012 / 12:37

4 respostas

7

Depende muito do que você faz.

Para os usuários comuns do Word, Excel, Minesweeper 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ê poderia executar cada oponente da IA em um tópico separado, mas a lógica do jogo central não pode ser facilmente paralelizada - você precisa de um lugar onde todos os resultados sejam colocados juntos para formar um estado de jogo coerente. Então, geralmente há um thread "principal" que todo mundo espera.

Para multimídia, processamento real de números e ciência, cada núcleo conta. Essas são tarefas que são inerentemente multithread ou podem ser facilmente feitas, e os desenvolvedores têm um strong incentivo para aproveitar todo o poder de processamento disponível.

Os usuários avançados gostam de realizar multitarefas. Torrent, VirtualBox, captura de tela, vídeo, minecraft e navegação na Web, todos funcionando ao mesmo tempo. Então, você se beneficiará de cada aplicativo faminto de CPU com seu próprio núcleo. Hoje em dia é popular a transmissão ao vivo do seu jogo. Então são dois núcleos para o jogo, pelo menos um para o encoder e pelo menos mais um para o resto do sistema. Isso é pelo menos 4 núcleos.

    
por 26.07.2012 / 12:45
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 será se você só executar um único aplicativo por vez .

Mesmo em um aplicativo multithreaded bem feito, muitas das tarefas que são colocadas em operação são feitas para esperar os componentes mais lentos da máquina - disco rígido, rede - sem afetar o desempenho aparente do usuário. Estes não podem ser melhorados por uma maior paralelização, por isso, qualquer limite teórico de aceleração é inacessível para propósitos práticos.

É interessante notar que existem poucos aplicativos "grandes" que não são multi-threaded (basta verificar o equivalente do Gerenciador de Tarefas do seu sistema operacional, ele deve ser capaz de dizer quantos pertencem a cada processo - meu Firefox está usando atualmente 31 , por exemplo).

Naturalmente, 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, é possível executar mais aplicativos simultaneamente com pouca queda no desempenho de processamento (o desempenho do disco rígido, da rede, etc., também não aumenta muito). Na prática, mesmo isso também está sujeito a retornos decrescentes, pois há uma sobrecarga inevitável para gerenciar a distribuição de trabalho entre núcleos, canais de comunicação e assim por diante.

Por exemplo, esta postagem do Tom's Hardware (de 2009) tenta Veja o desempenho de alguns processadores multi-core em aplicativos simultâneos - executando um jogo ao lado de uma verificação do AVG (sendo que ambos provavelmente são multi-threaded). Os processadores de quatro, três e três núcleos têm desempenho semelhante ao do jogo, mas adicionam o escaneamento simultâneo do AVG e o desempenho (medido pelo FPS médio) em 22%, 40% e 59%, respectivamente.

Assim, enquanto um quad core não oferecia aumento de desempenho em um dual core ao executar um aplicativo intensivo, assim que outra tarefa intensiva aparecia, ele acabava sendo duas vezes mais eficiente. Infelizmente, não consigo encontrar muito mais que investigue o quanto isso é escalável com mais núcleos e tarefas mais intensivas.

E então você deve tomar nota dos recursos modernos dos processadores, como o Turbo Boost da Intel / Turbo Core da AMD. Esses recursos específicos permitem que um processador de vários núcleos armazene os núcleos (coloque-os em um modo mais lento e de baixa energia) e use a energia extra para fazer overclock nos núcleos que permanecem ativos - permitindo que o processador se otimize para fornecer o máximo de processamento quanto possível para o número de tarefas com as quais é apresentado.

    
por 26.07.2012 / 15:38
2

Para adicionar combustível ao fogo, eu li aqui que o Android está realmente atrasado por ter mais de um núcleo:

The use of multi-core processors can actually make Android devices slower, said Mike Bell, general manager of Intel's mobile and communications group, who blames Android's multi-threading capability, or lack thereof, for the operating system's difficulty in effectively handling powerful CPUs.

The more cores a device has, the more power it requires - and, for the time being, that amount of power is simply too much for Android devices to balance.

    
por 26.07.2012 / 15:36
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, pouco se beneficiam de ter mais de dois núcleos de processador. Computação científica e aplicativos de 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 é limitado por computação. A adição de núcleos de processador não ajudará se sua carga de trabalho estiver limitada por E / S. Se você já instalou um SSD para substituir um disco rígido mecânico, provavelmente saberá que o desempenho diário do computador é limitado com mais frequência do que o armazenamento do seu computador. Em ambientes de servidor ocupado, onde um grande número de núcleos é usado para permitir que o sistema manipule grandes quantidades 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.

    
por 22.06.2014 / 22:15