Questão Por que “não adicionar mais núcleos” enfrenta as mesmas limitações físicas que “tornar a CPU mais rápida”?


Em 2014, eu ouço muitas linguagens de programação elogiadas por sua simultaneidade características. Concorrência é dito ser crucial para ganhos de desempenho.

Ao fazer esta declaração, muitas pessoas apontam para um artigo de 2005 chamado o O almoço grátis acabou: uma mudança fundamental em direção à concorrência Programas. O básico argumento é que está ficando mais difícil aumentar a velocidade do clock de processadores, mas ainda podemos colocar mais núcleos em um chip, e isso para obter ganhos de desempenho, o software precisará ser escrito para aproveitar vários núcleos.

Algumas citações principais:

Estamos acostumados a ver CPUs de 500MHz darem lugar a CPUs de 1GHz   CPUs de 2 GHz e assim por diante. Hoje estamos na faixa de 3GHz no mainstream   computadores.

A questão chave é: quando terminará? Afinal, a Lei de Moore prevê   crescimento exponencial, e crescimento claramente exponencial não pode continuar   para sempre, antes de atingirmos limites físicos rígidos; a luz não está ficando   Mais rápido. O crescimento deve, eventualmente, desacelerar e até acabar.

... Tornou-se cada vez mais difícil explorar velocidades de clock   para não apenas um, mas vários problemas físicos, especialmente calor (muito   e muito difícil de dissipar), consumo de energia (muito alto) e   problemas atuais de vazamento.

... O futuro da Intel e dos fornecedores de processadores está em outro lugar como chip   as empresas buscam agressivamente as mesmas novas direções multicore.

... Multicore é sobre rodar duas ou mais CPUs reais em um chip.

As previsões deste artigo parecem ter resistido, mas não entendo o porquê. Eu Só tenho idéias muito vagas sobre como o hardware funciona.

Minha visão supersimplificada é "está ficando mais difícil de embalar mais poder de processamento no mesmo espaço "(devido a problemas com calor, consumo de energia, etc.). esperaria que a conclusão fosse "portanto, teremos que ter maior computadores ou executar nossos programas em vários computadores. "(E, de fato, computação em nuvem é algo sobre o qual estamos ouvindo mais.)

Mas parte da solução parece ser arquiteturas multi-core. A menos que computadores crescer em tamanho (o que eles não têm), isso só parece ser outra maneira de dizer "Embale mais poder de processamento no mesmo espaço".

Por que "não adicionar mais núcleos" enfrenta as mesmas limitações físicas que "faça o CPU mais rápida "?

Por favor, explique nos termos mais simples que puder. :)


108


origem


Há algumas questões relacionadas no Engenharia elétrica: electronics.stackexchange.com/q/122050/34550  electronics.stackexchange.com/q/76580/34550 - Bob
en.wikipedia.org/wiki/Moore%27s_law vale a pena ler - já que estamos falando de duas coisas diferentes. A lei de Moore não é sobre a velocidade do relógio - é sobre contagens de transistores - Journeyman Geek♦
Vamos fingir que foi há 30 anos e os processadores rodavam a 4.77MHz. Por que você poderia colocar 1000 computadores com CPUs de 4MHz na mesma sala, mesmo que fosse impossível obter uma CPU de 4GHz? - user20574
@NathanLong, mas ainda é muito mais fácil conseguir mais espaço (para mais computadores) do que ter um computador mais rápido. - user20574
Analogia: o motor de um carro só pode ser feito com tantas rpm, mas você pode facilmente dar dois a dois juntos. - OJFord


Respostas:


Resumo

  • Economia. É mais barato e fácil projetar uma CPU que tenha mais núcleos do que uma velocidade de clock maior, porque:

  • Aumento significativo no uso de energia. O consumo de energia da CPU aumenta rapidamente à medida que você aumenta a velocidade do clock - você pode dobrar o número de núcleos operando a uma velocidade menor no espaço térmico necessário para aumentar a velocidade do clock em 25%. Quádruplo para 50%.

  • Há outras maneiras de aumentar a velocidade de processamento sequencial, e os fabricantes de CPU fazem bom uso deles.


Eu vou estar usando fortemente as excelentes respostas em essa questão em um dos sites da nossa irmã SE. Então vá para cima deles!


Limitações da velocidade do relógio

Existem algumas limitações físicas conhecidas para a velocidade do clock:

  • Tempo de transmissão

    O tempo que leva para um sinal elétrico atravessar um circuito é limitado pela velocidade da luz. Este é um limite difícil, e não há maneira conhecida em torno dele1. Nos gigahertz-clocks, estamos nos aproximando desse limite.

    No entanto, ainda não chegamos lá. 1 GHz significa um nanossegundo por clock. Nesse tempo, a luz pode viajar 30cm. Aos 10 GHz, a luz pode viajar 3 cm. Um único núcleo de CPU tem cerca de 5 mm de largura, por isso vamos nos deparar com esses problemas em algum ponto além dos 10 GHz.2

  • Atraso de comutação

    Não basta apenas considerar o tempo que leva para um sinal viajar de um lado a outro. Nós também precisamos considerar o tempo que leva para uma porta lógica dentro da CPU mudar de um estado para outro! À medida que aumentamos a velocidade do clock, isso pode se tornar um problema.

    Infelizmente, não tenho certeza sobre os detalhes e não posso fornecer números.

    Aparentemente, bombear mais energia pode acelerar a comutação, mas isso leva a problemas de consumo de energia e dissipação de calor. Além disso, mais energia significa que você precisa de condutos mais volumosos capazes de manuseá-lo sem danos.

  • Dissipação de calor / consumo de energia

    Este é o grande problema. Citando de resposta de fuzzyhair2:

    Processadores recentes são fabricados usando tecnologia CMOS. Toda vez que há um ciclo de clock, a energia é dissipada. Portanto, velocidades mais altas do processador significam mais dissipação de calor.

    Há algumas medições adoráveis ​​em este tópico do fórum AnandTeche eles até derivaram uma fórmula para o consumo de energia (que anda de mãos dadas com o calor gerado):

    Formula
    Crédito para Idontcare

    Podemos visualizar isso no seguinte gráfico:

    Graph
    Crédito para Idontcare

    Como você pode ver, o consumo de energia (e o calor gerado) aumenta muito rapidamente à medida que a velocidade do clock é aumentada além de um certo ponto. Isso torna impraticável o aumento ilimitado da velocidade do clock.

    A razão para o rápido aumento no uso de energia provavelmente está relacionada ao atraso de comutação - não é suficiente simplesmente aumentar a potência proporcional à taxa de clock; a tensão também deve ser aumentada para manter a estabilidade em relógios mais altos. Isso pode não estar completamente correto; sinta-se à vontade para apontar as correções em um comentário ou faça uma edição para essa resposta.


Mais núcleos?

Então, por que mais núcleos? Bem, eu não posso responder isso definitivamente. Você teria que perguntar ao pessoal da Intel e da AMD. Mas você pode ver acima que, com CPUs modernas, em algum momento torna-se impraticável aumentar a velocidade do clock.

Sim, o multicore também aumenta a potência necessária e a dissipação de calor. Mas evita o tempo de transmissão e os problemas de atraso na comutação. E, como você pode ver no gráfico, você pode facilmente dobrar o número de núcleos em uma CPU moderna com a mesma sobrecarga térmica que um aumento de 25% na velocidade do clock.

Algumas pessoas fizeram isso - a corrente recorde mundial de overclock é apenas tímido de 9 GHz. Mas é um desafio significativo de engenharia fazê-lo, mantendo o consumo de energia dentro de limites aceitáveis. Os designers decidiram em algum momento adicionar mais núcleos para realizar mais trabalhos em paralelo proporcionaria um aumento mais efetivo do desempenho na maioria dos casos.

É aí que entra a economia - provavelmente era mais barato (menos tempo de projeto, menos complicado de fabricar) seguir a rota multicore. E é fácil comercializar - quem não ama o novo octa-core lasca? (Claro, sabemos que multicore é inútil quando o software não faz uso dele ...)

é uma desvantagem para multicore: você precisa de mais espaço físico para colocar o núcleo extra. No entanto, os tamanhos de processo de CPU diminuem constantemente, por isso há muito espaço para colocar duas cópias de um design anterior - a troca real não é conseguir criar núcleos únicos maiores e mais complexos. Então, novamente, aumentando a complexidade do núcleo é um coisa ruim do ponto de vista do design - mais complexidade = mais erros / bugs e erros de fabricação. Parece que encontramos um meio feliz com núcleos eficientes que são simples o suficiente para não ocupar muito espaço.

Já atingimos um limite com o número de núcleos que podemos encaixar em um único dado nos tamanhos atuais do processo. Podemos atingir um limite de quão longe podemos diminuir as coisas em breve. Então o que vem depois? Precisamos de mais? Isso é difícil de responder, infelizmente. Alguém aqui é clarividente?


Outras maneiras de melhorar o desempenho

Então, não podemos aumentar a velocidade do clock. E mais núcleos têm uma desvantagem adicional - ou seja, eles só ajudam quando o software executado neles pode fazer uso deles.

Então, o que mais podemos fazer? Como os processadores modernos são muito mais rápidos que os mais antigos com a mesma velocidade de clock?

A velocidade do clock é realmente apenas uma aproximação muito aproximada do funcionamento interno de uma CPU. Nem todos os componentes de uma CPU funcionam nessa velocidade - alguns podem operar uma vez a cada dois ticks, etc.

O que é mais significativo é o número de instruções você pode executar por unidade de tempo. Esta é uma medida muito melhor do quanto um único núcleo de CPU pode realizar. Algumas instruções; alguns levarão um ciclo de clock, alguns levarão três. A divisão, por exemplo, é consideravelmente mais lenta que a adição.

Assim, poderíamos fazer uma CPU funcionar melhor aumentando o número de instruções que ela pode executar por segundo. Como? Bem, você poderia tornar uma instrução mais eficiente - talvez a divisão agora leve apenas dois ciclos. Então há pipelining da instrução. Ao dividir cada instrução em múltiplos estágios, é possível executar instruções "paralelamente" - mas cada instrução ainda tem uma ordem sequencial bem definida, respectiva às instruções antes e depois, de modo que não requer suporte de software como multicore faz.

Há sim outro maneira: instruções mais especializadas. Vimos coisas como SSE, que fornecem instruções para processar grandes quantidades de dados de uma só vez. Existem novos conjuntos de instruções sendo constantemente introduzidos com objetivos semelhantes. Estes, novamente, requerem suporte de software e aumentam a complexidade do hardware, mas proporcionam um bom aumento de desempenho. Recentemente, houve o AES-NI, que fornece criptografia e descriptografia AES acelerada por hardware, muito mais rápido do que um monte de aritmética implementada em software.


1 Não sem entrar profundamente na física quântica teórica, de qualquer maneira.

2 Pode ser realmente menor, já que a propagação do campo elétrico não é tão rápida quanto a velocidade da luz no vácuo. Além disso, isso é apenas para distância em linha reta - é provável que haja pelo menos um caminho que seja consideravelmente mais longo que uma linha reta.


142



Além disso, em muitas aplicações, o afunilamento não é o tempo de computação, mas o tempo de paralisação para buscar dados da RAM (ou, Deus o proíba, do disco); Assim, outro grande aumento vem de caches de processador maiores e mais rápidos. - Matteo Italia
@MatteoItalia Yup. E também há melhorias na previsão de ramificação e, provavelmente, muito mais do que não sei. Fora do processador, também temos barramentos mais rápidos, memória mais rápida, discos mais rápidos e protocolos associados, etc. - Bob
Você mencionou que os problemas relacionados ao "limite rígido" da velocidade da luz ocorrerão em "algo além dos 20 GHz". Seus cálculos não estão corretos; sinais elétricos viajam a velocidades menores que a velocidade da luz, dependendo da geometria do fio. - Giulio Muscarello
Por favor, não use "exponencial" quando houver palavras mais corretas para este relacionamento (quadrático, cúbico, etc.) ... - Oliver Charlesworth
@OliCharlesworth Por favor, leia a nota de rodapé. Isto é precisamente por que a nota de rodapé está lá e por que tenho referências a ela em todos os lugares exponentialé usado. Este é um uso perfeitamente válido da palavra, e seria tangencial ao ponto dessa resposta ficar atolado em detalhes matemáticos. Se você realmente quiser tentar "corrigir", sinta-se à vontade para sugerir uma edição. Não cabe a mim aceitar ou não, contanto que você não mude significativamente o significado. - Bob


Física é física. Não podemos continuar acumulando mais transistores em espaços cada vez menores para sempre. Em algum momento fica tão pequeno que você lida com lixo esquisito. Em algum momento não podemos embalar duas vezes tantos transistores em um ano quanto nós costumávamos (que é sobre o que a lei de moore é sobre).

Relógios crus não significam nada. Meu antigo Pentium M tinha cerca de metade do clock de uma CPU de desktop contemporânea (e ainda em muitos aspectos Mais rápido) - e sistemas modernos são mal aproximando-se das velocidades dos sistemas há 10 anos (e são claramente mais rápidas). Basicamente, "apenas" aumentar a velocidade do relógio não resulta em ganhos reais de desempenho em muitos casos. Pode ajudar em alguns operações singlethreaded, mas é melhor gastar o orçamento de projeto em melhor eficiência em termos de todo o resto.

Vários núcleos permitem que você faça dois  ou mais coisas de uma só vez, para que você não precise esperar que uma coisa termine para a próxima. No curto prazo, você pode simplesmente colocar dois núcleos existentes no mesmo pacote (por exemplo, com o Pentium Ds, e seu MCM, que foi um design de transição) e você tem um sistema que é duas vezes mais rápido. A maioria das implementações modernas compartilha coisas como um controlador de memória, é claro.

Você também pode construir de maneira mais inteligente. O ARM faz Big-Little - tendo 4 núcleos de baixa potência 'fraca' trabalhando ao lado de 4 núcleos mais poderosos para que você tenha o melhor dos dois mundos. A Intel permite que você diminua o acelerador (para melhor eficiência de energia) ou overclock específico núcleos (para melhor desempenho de encadeamento único). Eu lembro que a AMD faz algo com módulos.

Você também pode mover coisas como controladores de memória (para latência mais baixa) e funções relacionadas a E / S (o CPU moderno não tem ponte norte), bem como vídeo (o que é mais importante em laptops e design AIW). Faz mais sentido fazer essas coisas do que 'apenas' continuar aumentando a velocidade do relógio.

Em algum momento, núcleos "mais" podem não funcionar - embora as GPUs tenham centenas de núcleos.

Multicores, como tal, permite que os computadores funcionem mais esperto de todas essas maneiras.


14



Deve-se notar que os núcleos da GPU são projetados para um propósito muito específico, ao contrário dos núcleos da CPU que são mais de propósito geral. Também deve ser notado, que placas de placa de vídeo são significativamente maiores do que as CPU's (ou seja, mesmo que os núcleos não estejam usando todo o espaço da placa, eles ainda têm MUITO mais espaço para dissipar o calor). - user2366842
verdade, mas esse é um exemplo em que você dimensiona os núcleos em uma quantidade extrema. Eu provavelmente revisarei essa resposta pela manhã - Journeyman Geek♦
"você pode simplesmente colocar dois núcleos existentes no mesmo pacote". Mas como eles conseguem isso sem usar mais espaço para os núcleos extras Como?! Magia? Unicórnios Filhotes (Por seu avatar, eu suspeito que o último) - That Brazilian Guy
Pentium Ds era aquele en.wikipedia.org/wiki/Pentium_D basicamente - Journeyman Geek♦
wierd quantum crap + 1 para isso sozinho! - Dave


Resposta simples

A resposta mais simples para a pergunta

Por que "não adicionar mais núcleos" enfrenta as mesmas limitações físicas que "tornar a CPU mais rápida"?

é realmente encontrado em outra parte da sua pergunta:

Espero que a conclusão seja "portanto, teremos que ter computadores maiores ou executar nossos programas em vários computadores".

Em essência, vários núcleos são como ter vários "computadores" no mesmo dispositivo.

Resposta complexa

Um "núcleo" é a parte do computador que realmente processa instruções (adicionando, multiplicando, "e" ing, etc). Um núcleo só pode executar uma única instrução ao mesmo tempo. Se você quer que seu computador seja "mais poderoso", existem duas coisas básicas que você pode fazer:

  1. Aumentar o rendimento (aumentar a taxa de clock, diminuir o tamanho físico, etc)
  2. Use mais núcleos no mesmo computador

As limitações físicas para o nº 1 são principalmente a necessidade de despejar o calor causado pelo processamento e a velocidade de um elétron no circuito. Depois de dividir alguns desses transistores em um núcleo separado, você atenua a questão do calor em grande escala.

Há uma limitação importante para o número 2: você precisa dividir seu problema em vários independente problemas e, em seguida, combine a resposta. Em um computador pessoal moderno, isso não é realmente um problema, pois há muitos problemas independentes competindo pelo tempo computacional com o (s) núcleo (s) de qualquer maneira. Mas quando se trata de problemas computacionais intensos, múltiplos núcleos só ajudam realmente se o problema for passível de concorrência.


9



'múltiplos núcleos é como ter vários' computadores 'no mesmo dispositivo.' Certo, mas minha confusão foi, como você se encaixa lá? Eu pensei que "não podemos ir mais rápido" foi um sintoma de "não podemos reduzir muito mais as coisas". - Nathan Long
Vários núcleos pegam mais espaço, os chips estão ficando maiores. O fardo foi transferido da CPU para o engenheiro de software ... para realmente rodar mais rápido em um desses processadores gigantes de múltiplos núcleos, o software tem que ser escrito de tal forma que você pode cortar seu trabalho pela metade e fazer as duas metades independentemente. - James
Uma resposta curta é que o consumo de energia é proporcional ao cubo da velocidade do clock. Com sinais viajando distâncias maiores, a ilusão de thread único fica mais difícil de manter. A resposta detalhada: amazon.com/… - Rob


Por que "não adicionar mais núcleos" enfrenta as mesmas limitações físicas que "tornar a CPU mais rápida"?

Eles enfrentam as mesmas limitações físicas, mas mudar para o design multicore nos dá um pouco de espaço para respirar antes de atingirmos alguns deles. Ao mesmo tempo, outros problemas causados ​​por essas limitações surgem, mas são mais fáceis de superar.

Fato 1: O consumo de energia e o calor emitido crescem mais rápido que o poder computacional. Empurrar uma CPU de 1 GHz para 2 GHz empurrará o consumo de energia de 20 W para 80 W, mesmo com calor dissipado. (Eu acabei de inventar esses números, mas é bem assim que funciona)

Fato 2: Comprar segundo processador e rodar ambos a 1 GHz duplicaria seu poder computacional. Duas CPUs rodando a 1 GHz poderiam processar a mesma quantidade de dados que uma CPU de 2 GHz, mas cada uma consumiria apenas 20 W de energia, ou seja, 40 W no total.

Lucro: Dobrar o número de CPU em vez da freqüência de clock nos poupa energia e não estamos tão perto da "barreira de frequência" quanto antes.

Problema: Você tem que dividir o trabalho entre dois processadores e combinar os resultados mais tarde.

Se você puder resolver este problema em um tempo aceitável e usar menos energia do que acabou de economizar, você acabou de lucrar graças ao uso de várias CPUs.

Agora você só precisa mesclar dois processadores em um processador dual-core e está em casa. Isso é benéfico porque os núcleos podem compartilhar algumas partes da CPU, por exemplo, cache (resposta relacionada).


6



Continuamos atingindo limitações físicas em 1000 maneiras diferentes, tamanho do molde (para vários núcleos que leva a um processo de fabricação menor), tamanho do mobo (para vários cpu), amplificadores desenhados através dos traços (ambos). não é como se você pudesse colocar 2 processadores em um m-atx ou 4 e memória em uma placa atx e esses projetos levam DÉCADAS para mudar. Eu concordo com o restante. - Rostol
@Rostol Esse é um bom ponto, eu editei a resposta. - gronostaj


Resumindo: Acelerar os núcleos únicos atingiu seus limites, então continuamos encolhendo-os e acrescentando mais deles, até que isso chegue aos seus limites ou possamos mudar para materiais melhores (ou alcançar um avanço fundamental que derrube a tecnologia estabelecida, algo como casa de tamanho, realmente trabalhando, computação quântica).

Eu acho que esse problema é multi-dimensional e vai demorar um pouco para escrever a imagem mais completa:

  1. Limitações físicas (impostas pela física real): como velocidade da luz, mecânica quântica, tudo isso.
  2. Problemas de fabricação: Como fabricamos estruturas cada vez menores com a precisão necessária? Problemas relacionados com matérias-primas, materiais utilizados para construir circuitos usw, durabilidade.
  3. Problemas de arquitetura: calor, inferência, consumo de energia, etc.
  4. Problemas econômicos: Qual é a maneira mais barata de obter mais desempenho para o usuário?
  5. Usecases e percepção do desempenho do usuário.

Pode haver muito mais. Uma CPU multiuso está tentando encontrar uma solução para embaralhar todos esses fatores (e mais) em um único chip de produção em massa que cabe 93% dos participantes no mercado. Como você pode ver, o último ponto é o mais crucial, a percepção do cliente, que é derivada diretamente da maneira como o cliente usa a CPU.

Pergunte a si mesmo qual é a sua aplicação habitual? Talvez: 25 abas do Firefox, cada uma reproduzindo alguns anúncios em segundo plano, enquanto você ouve música, tudo isso enquanto espera pelo seu trabalho de criação que você iniciou há cerca de 2 horas para terminar. Isso é muito trabalho a ser feito, e você ainda quer uma experiência tranquila. Mas o seu processador pode lidar com uma tarefa no momento! Na única coisa. Então, o que você faz é dividir as coisas e fazer uma fila e cada um tem sua própria parcela e todos estão felizes. Exceto por você, porque todas as coisas se tornam fracas e não são suaves.

Então você aumenta a velocidade da sua CPU, para fazer mais operações no mesmo período de tempo. Mas como você disse: calor e consumo de energia. E é aí que chegamos à parte da matéria-prima. O silício se torna mais condutivo à medida que fica mais quente, significando que mais corrente flui pelo material à medida que você o aquece. Os transistores têm um consumo de energia mais alto à medida que você os alterna mais rapidamente. Também altas freqüências fazem crosstalk entre fios curtos pior. Então, você vê, a abordagem de acelerar as coisas levará a um "colapso". Contanto que não tenhamos melhores matérias-primas do que o silício ou transistores muito melhores, estamos presos onde estamos com a velocidade do núcleo único.

Isso nos leva de volta para onde começamos. Fazendo as coisas, em paralelo. Vamos adicionar outro núcleo. Agora podemos realmente fazer duas coisas ao mesmo tempo. Então vamos esfriar um pouco as coisas e apenas escrever um software que possa dividir seu trabalho em dois núcleos menos poderosos, porém mais funcionais. Essa abordagem tem dois problemas principais (além de que precisa de tempo para o mundo do software se adaptar a ela): 1. Tornar o chip maior, ou tornar o núcleo individual menor. 2. Algumas tarefas simplesmente não podem ser divididas em duas partes que são executadas simultaneamente. Continue adicionando núcleos contanto que você os reduza, ou torne o chip maior e mantenha o problema do calor sob controle. Ah e não vamos esquecer o cliente. Se mudarmos nossos casos, as indústrias precisam se adaptar. Veja todas as novidades "brilhantes" que o setor móvel criou. É por isso que o setor móvel é considerado tão crucial e todo mundo quer colocar as mãos nele.

Sim, esta estratégia alcançará suas limitações! E a Intel sabe disso, é por isso que eles dizem que o futuro está em outro lugar. Mas eles continuarão fazendo isso enquanto for barato, eficaz e viável.

Por último mas não menos importante: física. A mecânica quântica limitará o encolhimento dos cavacos. A velocidade da luz ainda não é um limite, já que os elétrons não podem viajar na velocidade da luz em silício, na verdade é muito mais lenta que isso. Além disso, é a velocidade de impulso que coloca a tampa dura na velocidade oferecida por um material. Assim como o som viaja mais rápido na água do que no ar, os impulsos elétricos viajam mais rápido, por exemplo, no grafeno do que no silício. Isso leva de volta às matérias-primas. O grafeno é ótimo no que diz respeito às suas propriedades elétricas. Ele faria um material muito melhor para construir CPUs, infelizmente é muito difícil produzir em grande quantidade.


5





Diga (como um exemplo irreal, mas ainda deve mostrar o ponto), você tem uma CPU rodando a 100F. Como o multicore normalmente funciona é pegando a freqüência do clock que a CPU está rodando a 100F, e abaixando-a, diminuindo assim a velocidade. Como ele não está mais funcionando tão bem, eles podem colocar um segundo, terceiro ou até mesmo um quarto bem próximo a ele sem afetar significativamente a temperatura geral da CPU e obter os benefícios do multicore. Isso obviamente vem com alguma sobrecarga, já que os núcleos ainda precisam ser controlados de um lugar, por um núcleo. Quanto mais núcleos você adicionar, mais sobrecarga haverá. Quanto aos núcleos simples, quanto mais você aumenta a velocidade neles, mais calor eles geram. Isso obviamente tem limitações físicas (ou seja, depois de um certo ponto, ele começa a se tornar prejudicial ao desempenho e até perigoso se ficar muito quente)

À medida que o tempo passa, eles descobriram maneiras de diminuir o tamanho físico da CPU, e é por isso que não encontramos o requisito de precisar de mais espaço ainda, no entanto, por exemplo, 16 CPUs centrais realmente não existem o tempo de gravação) fora do equipamento de nível de servidor devido às limitações de tamanho físico, já que as CPUs de grau de servidor são significativamente maiores fisicamente do que o grau de consumidor padrão.


2





CPU = Motor de carro: é mais fácil fazer um carro mais potente com 16 válvulas, ou seja, um lamborghini, do que um carro de alta rotação que teria uma válvula / cilindro gigante a 100.000 rpm.

As razões são físicas e químicas, o silício precisa ser substituído por um combustível de foguete computacional para alterar o equilíbrio entre o número de núcleos e a velocidade do núcleo.


2





Eu diria que a restrição primária nos limites de potência computacional está relacionada principalmente ao limite de quão rápido podemos mover o elétron através de um circuito (velocidade da luz desvio de elétrons). Existem muitos outros fatores, como você mencionou.

Adicionar núcleos adicionais não tornaria o processador mais rápido, embora ele permitisse processar mais na mesma quantidade de tempo.

lei de Moore é uma leitura muito interessante e informativa. Esta citação em particular é relevante aqui:

Pode-se também limitar o desempenho teórico de um "laptop supremo" bastante prático, com uma massa de um quilo e um volume de um litro. Isto é feito considerando a velocidade da luz, a escala quântica, a constante gravitacional e a constante de Boltzmann, dando um desempenho de 5,4258 ⋅ 1050 operações lógicas por segundo em aproximadamente 1031 bits.


2



A propósito, os elétrons se movem muito lentamente ("velocidade de deriva"), na ordem de milímetros por segundo IIRC. Você está mais se referindo à velocidade com que o campo elétrico se propaga. - Bob
Eu sabia que não deveria ousar agir como se entendesse a física no mínimo respeito. :) Obrigado por me corrigir / informar sobre isso. - jredd
Além disso, as velocidades de clock reais, nas quais a velocidade de propagação terá um efeito significativo, estão em torno de 10+ GHz. Existem outras razões pelas quais os processadores modernos preferem múltiplos núcleos em relógios mais altos. - Bob


Longa história ainda mais curta:

Nós realmente não precisamos de CPUs mais rápidas. Fora de alguns usos altamente especializados * a CPU não tem sido o gargalo por anos - todos os bits periféricos como memória, armazenamento e rede geralmente fazem a CPU esperar por milhões de ciclos de clock durante os quais ela pode fazer outras coisas. Um segundo núcleo pode fazer mais "outras coisas", produzindo assim uma percepção de maior desempenho para o usuário.

Muitos dispositivos móveis, laptops, etc. irão fazer o underclock da CPU para melhor duração da bateria e temperaturas mais baixas. Não há muito incentivo para desenvolver um núcleo ARM de 3,5 GHz se o seu principal cliente executar a 1,3 GHz.

  • esses usos especializados não compram o suficiente para justificar o desenvolvimento de um núcleo de 5GHz. Eles também não se importam com o calor ou a energia - compre o mais rápido disponível, faça overclock e use um dissipador de calor com água do tamanho de uma torradeira.

1



Não é "percepção", mas "melhor latência". Eu acho que esse é um dos principais problemas que temos; um throughput single-threaded forte a qualquer custo mentalidade. Os sistemas operacionais de consumo ainda não são orientados em tempo real nem orientados fundamentalmente para a simultaneidade ou paralelismo. - Rob
@peter Você faz um bom ponto, e obrigado por explicar isso. É algo que preciso lembrar como programador. :) Ainda é um pouco um problema colateral para os propósitos desta pergunta, no entanto. Minha pergunta foi sobre por que nós não pode obter velocidades de clock mais rápidas; sua resposta é sobre por que não precisamos atualmente. - Nathan Long
@NathanLong "não" e "não precisa" estão vinculados. Você não pode obter processadores mais rápidos porque ninguém está disposto a investir os bilhões ou cinco necessários para desenvolvê-lo (5GHz provavelmente está pressionando os limites físicos). Ninguém está disposto a investir porque não há mercado realista quando as velocidades gerais do processador estão diminuindo - alguns desktops de fabricação atuais estão na classe de 1.5GHz (top de linha há 10 anos) porque é mais barato, mais rápido e rápido o suficiente para esse mercado segmento. - peter