/ / Por que os núcleos da CPU têm a mesma velocidade em vez de diferentes?

Por que os núcleos da CPU têm a mesma velocidade em vez de diferentes?

Se você já fez muitas compras de comparaçãopara uma nova CPU, você deve ter notado que todos os núcleos parecem ter a velocidade, e não uma combinação de diferentes. Por que é que? A postagem de perguntas e respostas do superusuário de hoje tem a resposta para a pergunta de um curioso leitor.

A sessão de perguntas e respostas de hoje é uma cortesia do SuperUser - uma subdivisão do Stack Exchange, um agrupamento da comunidade de sites de perguntas e respostas.

A questão

O leitor de superusuário Jamie quer saber por que os núcleos da CPU têm a mesma velocidade, em vez de diferentes:

Em geral, se você estiver comprando um computador novo, poderádeterminaria qual processador comprar com base na carga de trabalho esperada para o computador. O desempenho em videogames tende a ser determinado pela velocidade de núcleo único, enquanto aplicativos como a edição de vídeo são determinados pelo número de núcleos. Em termos do que está disponível no mercado, todas as CPUs parecem ter aproximadamente a mesma velocidade, com as principais diferenças sendo mais threads ou mais núcleos.

Por exemplo:

  • Intel Core i5-7600K, frequência base 3,80 GHz, 4 núcleos, 4 threads
  • Intel Core i7-7700K, frequência base 4,20 GHz, 4 núcleos, 8 threads
  • AMD Ryzen 5 1600X, frequência base 3,60 GHz, 6 núcleos, 12 threads
  • AMD Ryzen 7 1800X, frequência base 3,60 GHz, 8 núcleos, 16 threads

Por que vemos esse padrão de núcleos crescentes, mas todos os núcleos com a mesma velocidade de clock? Por que não existem variantes com velocidades diferentes de clock? Por exemplo, dois núcleos “grandes” e muitos núcleos pequenos.

Em vez de, digamos, quatro núcleos a 4,0 GHz (ou seja, 4 × 4 GHz, 16 GHz no máximo), que tal uma CPU com dois núcleos rodando a 4,0 GHz e quatro núcleos rodando a 2,0 GHz (ou seja, 2 × 4,0 GHz + 4 × 2,0 GHz, 16 GHz no máximo)? A segunda opção seria igualmente boa em cargas de trabalho com encadeamento único, mas potencialmente melhor em cargas de trabalho com vários encadeamentos?

Faço isso como uma pergunta geral e não especificamente em relação às CPUs listadas acima ou sobre qualquer carga de trabalho específica. Estou apenas curioso para saber por que o padrão é o que é.

Por que os núcleos da CPU têm a mesma velocidade em vez de diferentes?

A resposta

O colaborador do superusuário bwDraco tem a resposta para nós:

Isso é conhecido como multiprocessamento heterogêneo(HMP) e é amplamente adotado por dispositivos móveis. Em dispositivos baseados em ARM que implementam big.LITTLE, o processador contém núcleos com diferentes perfis de desempenho e energia, ou seja, alguns núcleos são executados rapidamente, mas consomem muita energia (arquitetura mais rápida e / ou relógios mais altos), enquanto outros economizam energia, mas são lentos ( arquitetura mais lenta e / ou relógios mais baixos). Isso é útil porque o uso de energia tende a aumentar desproporcionalmente à medida que você aumenta o desempenho depois de passar por um determinado ponto. A idéia aqui é obter desempenho quando você precisar e duração da bateria quando não precisar.

Nas plataformas de desktop, o consumo de energia é muito alto.menos de um problema, então isso não é realmente necessário. A maioria dos aplicativos espera que cada núcleo tenha características de desempenho semelhantes, e os processos de agendamento para sistemas HMP são muito mais complexos do que o agendamento para sistemas tradicionais de multiprocessamento simétrico (SMP) (tecnicamente, o Windows 10 tem suporte para HMP, mas destina-se principalmente a dispositivos móveis dispositivos que usam ARM big.LITTLE).

Além disso, a maioria dos processadores de desktop e laptop atualmentenão são limitados termicamente ou eletricamente ao ponto em que alguns núcleos precisam correr mais rápido que outros, mesmo para rajadas curtas. Basicamente, chegamos ao limite de quão rápido podemos fabricar núcleos individuais; portanto, substituir alguns núcleos por núcleos mais lentos não permitirá que os núcleos restantes funcionem mais rapidamente.

Embora existam alguns processadores de desktop quepossui um ou dois núcleos capazes de funcionar mais rapidamente que os outros, atualmente esse recurso está limitado a certos processadores Intel de ponta (conhecidos como Turbo Boost Max Technology 3.0) e envolve apenas um pequeno ganho de desempenho para os núcleos que podem funcionar mais rapidamente .

Embora seja certamente possível projetar umComo o processador x86 tradicional com núcleos grandes e rápidos e núcleos menores e mais lentos para otimizar cargas de trabalho altamente encadeadas, isso adicionaria uma complexidade considerável ao design do processador e é improvável que os aplicativos o suportem adequadamente.

Pegue um processador hipotético com dois Kaby rápidosNúcleos Lake (7ª geração) e oito núcleos lentos Goldmont (Atom). Você teria um total de 10 núcleos, e as cargas de trabalho altamente encadeadas otimizadas para esse tipo de processador podem ter um ganho de desempenho e eficiência em relação a um processador Kaby Lake normal de quatro núcleos. No entanto, os diferentes tipos de núcleos têm níveis de desempenho muito diferentes, e os núcleos lentos nem mesmo suportam algumas das instruções que os núcleos rápidos suportam, como o AVX (o ARM evita esse problema ao exigir que os núcleos grande e o LITTLE suportem as mesmas instruções )

Novamente, a maioria dos multithreads baseados em WindowsOs aplicativos assumem que todo núcleo tem o mesmo ou quase o mesmo nível de desempenho e podem executar as mesmas instruções; portanto, esse tipo de assimetria provavelmente resultará em um desempenho abaixo do ideal, talvez até travar se usar instruções não suportadas pelo núcleos mais lentos. Embora a Intel possa modificar os núcleos lentos para adicionar suporte avançado a instruções para que todos os núcleos possam executar todas as instruções, isso não resolveria problemas com o suporte de software para processadores heterogêneos.

Uma abordagem diferente para o design de aplicativos,mais perto do que você provavelmente está pensando em sua pergunta, usaria a GPU para acelerar partes de aplicativos altamente paralelas. Isso pode ser feito usando APIs como OpenCL e CUDA. Quanto a uma solução de chip único, a AMD promove suporte de hardware para aceleração de GPU em suas APUs, que combinam uma CPU tradicional e uma GPU integrada de alto desempenho no mesmo chip, como a Heterogeneous System Architecture, embora isso não tenha visto muita aceitação da indústria fora de algumas aplicações especializadas.


Tem algo a acrescentar à explicação? Som desligado nos comentários. Deseja ler mais respostas de outros usuários do Stack Exchange com conhecimento técnico? Confira o tópico de discussão completo aqui.

Crédito de imagem: Mirko Waltermann (Flickr)