Processadores de núcleo múltiplo: mais é sempre melhor?

Índice:

Processadores de núcleo múltiplo: mais é sempre melhor?
Processadores de núcleo múltiplo: mais é sempre melhor?
Anonim

Adicionar vários núcleos a um único processador oferece benefícios significativos graças à natureza multitarefa dos sistemas operacionais modernos. No entanto, para alguns propósitos, há um limite prático superior para quantos núcleos geram melhorias em relação ao custo de adicioná-los.

Avanços da tecnologia multinúcleo

Image
Image

Processadores de núcleo múltiplo estão disponíveis em computadores pessoais desde o início dos anos 2000. Projetos multinúcleo abordaram o problema dos processadores atingirem o limite de suas limitações físicas em termos de velocidade de clock e com que eficiência eles poderiam ser resfriados e ainda manter a precisão. Ao migrar para núcleos extras em um único chip de processador, os fabricantes evitaram problemas com as velocidades de clock ao multiplicar efetivamente a quantidade de dados que poderiam ser manipulados pela CPU.

Quando foram lançados originalmente, os fabricantes ofereciam apenas dois núcleos em uma única CPU, mas agora existem opções para quatro, seis e até 10 ou mais. Além de adicionar núcleos, tecnologias simultâneas de multithreading, como o Hyper-Threading da Intel, podem dobrar os núcleos virtuais que o sistema operacional vê.

Processos e Threads

Um processo é uma tarefa específica, como um programa, executado em um computador. Um processo consiste em uma ou mais threads.

Um thread é simplesmente um único fluxo de dados de um programa que passa pelo processador do computador. Cada aplicativo gera seus próprios threads, dependendo de como está sendo executado. Sem multitarefa, um processador de núcleo único só pode lidar com um único thread por vez, de modo que o sistema alterna rapidamente entre os threads para processar os dados de maneira aparentemente simultânea.

O benefício de ter vários núcleos é que o sistema pode lidar com mais de um thread simultaneamente. Cada núcleo pode lidar com um fluxo de dados separado. Essa arquitetura aumenta muito o desempenho de um sistema que executa aplicativos simultâneos. Como os servidores tendem a executar muitos aplicativos simultâneos em um determinado momento, a tecnologia foi originalmente desenvolvida para o cliente corporativo - mas à medida que os computadores pessoais se tornaram mais complexos e a multitarefa aumentou, eles também se beneficiaram de ter núcleos extras.

Todo processo, no entanto, é governado por uma thread primária que só pode ocupar um único núcleo. Assim, a velocidade relativa de um programa como um jogo ou um renderizador de vídeo é limitada à capacidade do núcleo que o encadeamento primário consome. O thread primário pode delegar absolutamente threads secundários para outros núcleos - mas um jogo não se torna duas vezes mais rápido quando você duplica os núcleos. Assim, não é incomum para um jogo maximizar totalmente um núcleo (o encadeamento primário), mas ver apenas a utilização parcial de outros núcleos para encadeamentos secundários. Nenhuma duplicação de núcleo evita o fato de que o núcleo primário é um limitador de taxa para seu aplicativo, e os aplicativos que são sensíveis a essa arquitetura terão um desempenho melhor do que os que não são.

Dependência de software

Embora o conceito de processadores de múltiplos núcleos pareça atraente, há uma ressalva importante nessa tecnologia. Para que os verdadeiros benefícios dos vários processadores sejam aproveitados, o software em execução no computador deve ser escrito para suportar multithreading. Sem o software que suporta esse recurso, os threads serão executados principalmente por meio de um único núcleo, degradando a eficiência geral do computador. Afinal, se ele só pode ser executado em um único núcleo em um processador quad-core, pode ser mais rápido executá-lo em um processador dual-core com velocidades de clock base mais altas.

Todos os principais sistemas operacionais atuais suportam capacidade multithread. Mas o multithreading também deve ser escrito no software aplicativo. O suporte para multithreading no software do consumidor melhorou ao longo dos anos, mas para muitos programas simples, o suporte multithreading ainda não foi implementado devido à complexidade da construção do software. Por exemplo, um programa de e-mail ou navegador da web provavelmente não verá grandes benefícios no multithreading, tanto quanto um programa de edição de gráficos ou vídeo, onde o computador processa cálculos complexos.

Um bom exemplo para explicar essa tendência é olhar para um típico jogo de computador. A maioria dos jogos requer algum tipo de mecanismo de renderização para exibir o que está acontecendo no jogo. Além disso, algum tipo de inteligência artificial controla os eventos e personagens do jogo. Com um único núcleo, ambas as tarefas são executadas alternando entre elas. Essa abordagem não é eficiente. Se o sistema tivesse vários processadores, a renderização e a IA poderiam ser executadas em um núcleo separado - uma situação ideal para um processador de vários núcleos.

É 8 > 4 > 2?

Ir além de dois núcleos apresenta benefícios mistos, uma vez que a resposta para qualquer comprador de computador depende do software que ele normalmente usa. Por exemplo, muitos jogos clássicos ainda oferecem pouca diferença de desempenho entre dois e quatro núcleos. Mesmo os jogos modernos - alguns dos quais supostamente requerem ou suportam oito núcleos - podem não ter um desempenho melhor do que uma máquina de seis núcleos com uma velocidade de clock base mais alta, uma vez que a eficácia do thread primário governa a eficiência do desempenho multithread.

Por outro lado, um programa de codificação de vídeo que transcodifica o vídeo provavelmente terá grandes benefícios, pois a renderização de quadros individuais pode ser passada para diferentes núcleos e depois agrupada em um único fluxo pelo software. Assim, ter oito núcleos será ainda mais benéfico do que ter quatro. Em essência, o segmento primário não precisa de recursos comparativamente ricos; em vez disso, ele pode transferir o trabalho árduo para threads filhas que maximizam os núcleos do processador.

Velocidades do Relógio

Image
Image

Em termos gerais, uma velocidade de clock mais alta significará um processador mais rápido. As velocidades de clock se tornam mais nebulosas quando você considera as velocidades relativas a vários núcleos, porque os processadores processam vários threads de dados graças aos núcleos extras, mas cada um desses núcleos funcionará em velocidades mais baixas devido às restrições térmicas.

Por exemplo, um processador dual-core pode suportar velocidades de clock base de 3,5 GHz para cada processador, enquanto um processador quad-core pode funcionar apenas a 3,0 GHz. Apenas olhando para um único núcleo em cada um deles, o processador dual-core é 14% mais rápido que o quad-core. Assim, se você tem um programa que é apenas single-thread, o processador dual-core é realmente mais eficiente. Então, novamente, se o seu software puder usar todos os quatro processadores, o processador quad-core será, na verdade, cerca de 70% mais rápido que o processador dual-core.

Conclusões

Na maioria das vezes, ter um processador de contagem de núcleos mais alto geralmente é melhor se seu software e casos de uso típicos o suportarem. Na maioria das vezes, um processador dual-core ou quad-core será mais do que suficiente para um usuário de computador básico. A maioria dos consumidores não verá benefícios tangíveis de ir além de quatro núcleos de processador porque tão pouco software não especializado tira proveito disso. O melhor caso de uso para processadores de alta contagem de núcleos está relacionado a máquinas que executam tarefas complexas, como edição de vídeo na área de trabalho, algumas formas de jogos sofisticados ou programas complicados de ciências e matemática.

Confira nossos pensamentos sobre Quão rápido de um PC eu preciso? para ter uma ideia melhor do tipo de processador que melhor atende às suas necessidades de computação.

Recomendado: