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


110

Em 2014, ouço muitas linguagens de programação apontadas por seus recursos de simultaneidade. Diz-se que a simultaneidade é crucial para obter ganhos de desempenho.

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

Algumas citações principais:

Estamos acostumados a ver as CPUs de 500 MHz darem lugar às CPUs de 1 GHz e as de 2 GHz, e assim por diante. Hoje estamos na faixa de 3GHz nos computadores convencionais.

A questão principal é: quando isso terminará? Afinal, a Lei de Moore prevê crescimento exponencial, e o 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ápida. O crescimento deve eventualmente desacelerar e até terminar.

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

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

... Multicore é sobre a execução de duas ou mais CPUs reais em um chip.

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

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

Mas parte da solução parece ser arquiteturas multinúcleo. A menos que os computadores aumentem de tamanho (o que eles não têm), isso parece ser outra maneira de dizer "coloque mais poder de processamento no mesmo espaço".

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

Por favor, explique da forma mais simples possível. :)



4
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 velocidade de relógio - é sobre contagens de transistor
Journeyman Geek

9
Vamos fingir que foi há 30 anos e as CPUs rodavam a 4,77 MHz. 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

3
@ NathanLong, mas ainda é muito mais fácil obter mais espaço (para mais computadores) do que obter um computador mais rápido.
user20574

5
Analogia: um motor de carro só pode ser fabricado com tantas rotações por minuto, mas você pode facilmente prender dois juntos.
OJFord 17/08/14

Respostas:


143

Sumário

  • Economia. É mais barato e fácil projetar uma CPU com mais núcleos que uma velocidade de clock mais alta, 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 em uma velocidade menor no espaço térmico necessário para aumentar a velocidade do clock em 25%. Quádruplo para 50%.

  • Existem outras maneiras de aumentar a velocidade de processamento seqüencial, e os fabricantes de CPU fazem bom uso delas.


Eu vou me basear nas excelentes respostas desta pergunta em um dos sites irmãos da SE. Então vá votar eles!


Limitações da velocidade do relógio

Existem algumas limitações físicas conhecidas na velocidade do relógio:

  • Tempo de transmissão

    O tempo que leva para um sinal elétrico atravessar um circuito é limitado pela velocidade da luz. Esse é um limite rígido e não há maneira conhecida de contorná-lo 1 . Em relógios gigahertz, estamos chegando a esse limite.

    No entanto, ainda não estamos lá. 1 GHz significa um nanossegundo por tick de clock. Nesse período, a luz pode percorrer 30 cm. A 10 GHz, a luz pode percorrer 3 cm. Como um único núcleo de CPU tem cerca de 5 mm de largura, abordaremos esses problemas em algum lugar 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 extremo ao outro. Também precisamos considerar o tempo que leva para um gate lógico dentro da CPU mudar de um estado para outro! À medida que aumentamos a velocidade do relógio, isso pode se tornar um problema.

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

    Aparentemente, injetar mais energia nele 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 conduítes mais volumosos capazes de lidar com isso sem danos.

  • Dissipação de calor / consumo de energia

    Este é o grande. Citando a resposta de fuzzyhair2 :

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

    Existem algumas medidas adoráveis neste tópico do fórum da AnandTech , e elas até derivaram uma fórmula para o consumo de energia (que anda de mãos dadas com o calor gerado):

    Fórmula
    Crédito para Idontcare

    Podemos visualizar isso no gráfico a seguir:

    Gráfico
    Crédito para Idontcare

    Como você pode ver, o consumo de energia (e o calor gerado) aumenta extremamente rapidamente à medida que a velocidade do relógio aumenta após um certo ponto. Isso torna impraticável aumentar a velocidade do relógio sem limites.

    A razão do rápido aumento no uso de energia provavelmente está relacionada ao atraso na comutação - não é suficiente simplesmente aumentar a energia 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 correções em um comentário ou faça uma edição nesta 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 as CPUs modernas, em algum momento torna-se impraticável aumentar a velocidade do clock.

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

Algumas pessoas fizeram isso - o atual recorde mundial de overclocking está a apenas 9 GHz. Mas é um desafio significativo da engenharia fazer isso, mantendo o consumo de energia dentro de limites aceitáveis. Em algum momento, os designers decidiram que 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 de comercializar - quem não ama o novo chip octa-core ? (Obviamente, sabemos que o multicore é bastante inútil quando o software não o utiliza ...)

Não é uma desvantagem para multicore: você precisa de mais espaço físico para colocar o núcleo extra. No entanto, os tamanhos de processo da CPU diminuem constantemente, por isso há muito espaço para colocar duas cópias de um design anterior - a verdadeira desvantagem é não conseguir criar núcleos únicos maiores, mais complexos e mais complexos. Por outro lado, aumentar a complexidade do núcleo é uma 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, simples o suficiente para não ocupar muito espaço.

Já atingimos um limite com o número de núcleos que podemos ajustar em uma única matriz nos tamanhos de processo atuais. Podemos atingir um limite de quão longe podemos encolher 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

Portanto, não podemos aumentar a velocidade do relógio. 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 as CPUs modernas são muito mais rápidas que as mais antigas na mesma velocidade de clock?

A velocidade do relógio é 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 mais significativo é o número de instruções que você pode executar por unidade de tempo. Essa é uma medida muito melhor do quanto um único núcleo de CPU pode realizar. Algumas instruções; alguns terão um ciclo de relógio, outros, três. A divisão, por exemplo, é consideravelmente mais lenta que a adição.

Portanto, poderíamos melhorar o desempenho de uma CPU aumentando o número de instruções que ela pode executar por segundo. Quão? Bem, você poderia tornar uma instrução mais eficiente - talvez a divisão agora leve apenas dois ciclos. Depois, há o pipelining de instruções . Ao dividir cada instrução em vários estágios, é possível executar instruções "em paralelo" - mas cada instrução ainda possui uma ordem seqüencial e bem definida, correspondente às instruções antes e depois dela, para que não exija suporte de software como multicore faz.

Existe outra maneira: instruções mais especializadas. Vimos coisas como o SSE, que fornece instruções para processar grandes quantidades de dados ao mesmo tempo. Existem novos conjuntos de instruções constantemente sendo introduzidos com objetivos semelhantes. Novamente, eles requerem suporte de software e aumentam a complexidade do hardware, mas fornecem um bom aumento de desempenho. Recentemente, houve o AES-NI, que fornece criptografia e descriptografia AES aceleradas por hardware, muito mais rapidamente do que um monte de aritmética implementada em software.


1 Não sem se aprofundar bastante na física quântica teórica.

2 Na verdade, pode ser menor, pois 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 a distância em linha reta - é provável que exista pelo menos um caminho consideravelmente maior que uma linha reta.


22
Além disso, em muitos aplicativos, o gargalo não é o tempo de computação, mas o tempo de espera para buscar dados da RAM (ou, se Deus não permitir, do disco); portanto, outra grande aceleração vem de caches maiores e mais rápidos do processador.
Matteo Italia

2
@MatteoItalia Yup. E há também melhorias na previsão de ramificações, e provavelmente muito mais que eu não conheço. Fora do processador, também temos ônibus mais rápidos, memória mais rápida, discos mais rápidos e protocolos associados, etc ..
Bob

2
Você mencionou que problemas relacionados ao "limite máximo" da velocidade da luz ocorrerão em "algum lugar após os 20 GHz". Seus cálculos não estão corretos; os sinais elétricos viajam a velocidades inferiores à velocidade da luz, dependendo da geometria do fio.
Giulio Muscarello

5
Por favor, não use "exponencial" quando há palavras inteiramente mais corretas para essa relação (quadrática, cúbica, etc.) ...
Oliver Charlesworth

7
@OliCharlesworth Leia a nota de rodapé. É exatamente por isso que a nota de rodapé está lá e por que eu tenho referências a ela em todos os lugares exponentialé usada. Este é um uso perfeitamente válido da palavra, e seria tangível ao ponto desta resposta ficar atolado em detalhes matemáticos. Se você realmente deseja tentar "corrigi-lo", fique à vontade para sugerir uma edição. Não caberá a mim se for aceito ou não, desde que você não mude significativamente o significado.
Bob

14

Física é física. Não podemos continuar embalando mais transistores em espaços cada vez menores para sempre. Em algum momento, fica tão pequeno que você lida com uma porcaria quântica estranha. Em algum momento, não podemos empacotar duas vezes mais transistores em um ano do que costumávamos (que é a lei de moore).

Relogios-primas não significam nada. Meu antigo Pentium M tinha cerca de metade da velocidade de clock de uma CPU de desktop contemporânea (e, em muitos aspectos, mais rápido ) - e os sistemas modernos mal se aproximam da velocidade dos sistemas há 10 anos (e são claramente mais rápidos). Basicamente, "apenas" aumentar a velocidade do relógio não oferece ganhos reais de desempenho em muitos casos. Pode ajudar em algumas operações com um único filtro, mas é melhor gastar o orçamento do projeto com maior eficiência em termos de tudo o mais.

Vários núcleos permitem fazer duas ou mais coisas ao mesmo tempo, para que você não precise esperar que uma coisa termine na 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 era um design de transição) e você tem um sistema duas vezes mais rápido. As implementações mais modernas compartilham coisas como um controlador de memória, é claro.

Você também pode criar de forma mais inteligente de maneiras diferentes. O ARM faz o Big-Little - tendo 4 núcleos de baixa potência 'fracos' trabalhando ao lado de 4 núcleos mais poderosos, para que você tenha o melhor dos dois mundos. A Intel permite que você acelere (para melhor eficiência de energia) ou faça overclock de núcleos específicos (para melhor desempenho de thread único). Lembro que a AMD faz algo com os módulos.

Você também pode mover coisas como controladores de memória (para ter menor latência) e funções relacionadas à IO (a CPU moderna não possui ponte norte), bem como vídeo (o que é mais importante com laptops e design AIW). Faz mais sentido fazer essas coisas do que "apenas" continuar aumentando a velocidade do relógio.

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

Multicores, como tal, permitem que os computadores trabalhem de maneira mais inteligente em todas essas maneiras.


11
Deve-se notar que os núcleos da GPU são projetados para uma finalidade muito específica, em oposição aos núcleos da CPU, que são mais comuns. Também deve ser observado que as placas da placa de vídeo são significativamente maiores que as da CPU (ou seja, mesmo se os núcleos não estiverem usando toda a sala da placa, eles ainda terão muito mais espaço para dissipar o calor).
user2366842

3
verdade, mas esse é um exemplo em que você expande os núcleos em uma quantidade extrema. Provavelmente revisitarei 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? (Pelo seu avatar, eu suspeito que este último)
Esse brasileiro

Os Pentium Ds eram basicamente os seguintes: en.wikipedia.org/wiki/Pentium_D basicamente
Journeyman Geek

6
wierd quantum crap+ 1 só por isso!
Dave

9

Resposta simples

A resposta mais simples para a pergunta

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

é realmente encontrado em outra parte da sua pergunta:

Eu esperaria que a conclusão fosse "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 as instruções (adição, multiplicação "e" ing, etc). Um núcleo pode executar apenas uma única instrução ao mesmo tempo. Se você deseja que seu computador seja "mais poderoso", há duas coisas básicas que você pode fazer:

  1. Aumente a taxa de transferência (aumente a taxa de clock, diminua o tamanho físico etc.)
  2. Use mais núcleos no mesmo computador

As limitações físicas do número 1 são principalmente a necessidade de descarregar o calor causado pelo processamento e a velocidade de um elétron no circuito. Depois de separar alguns desses transistores em um núcleo separado, você alivia o problema de calor em grande parte.

Há uma limitação importante ao item 2: você precisa dividir seu problema em vários problemas independentes e depois combinar a resposta. Em um computador pessoal moderno, isso não é realmente um problema, pois há muitos problemas independentes disputando o tempo computacional com o (s) núcleo (s) de qualquer maneira. Porém, ao fazer problemas computacionais intensivos, vários núcleos realmente ajudam apenas se o problema for passível de simultaneidade.


'múltiplos núcleos é como ter vários "computadores" no mesmo dispositivo. " Certo, mas minha confusão foi: como você encaixa todos lá? Eu pensei que "não podemos ir mais rápido" era um sintoma de "não podemos reduzir muito mais as coisas".
Nathan Long

Múltiplos núcleos ocupam mais espaço, os chips estão ficando maiores. A carga foi transferida da CPU para o engenheiro de software ... para realmente rodar mais rapidamente em um desses gigantescos processadores centrais multinúcleo, o software precisa ser escrito para que você possa cortar o trabalho pela metade e fazer as duas partes independentemente.
James

11
Uma resposta curta é que o consumo de energia é proporcional ao cubo da velocidade do relógio. Com os sinais percorrendo distâncias maiores, a ilusão de fio único fica mais difícil de manter. A resposta detalhada: amazon.com/…
Rob

6

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

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

Fato 1: O consumo de energia e o calor emitido crescem mais rapidamente que a energia computacional. Pressionar uma CPU de 1 GHz a 2 GHZ aumentará o consumo de energia de 20 W para 80 W, o mesmo com o calor dissipado. (Acabei de inventar esses números, mas é bem assim que funciona)

Fato 2: Comprar a segunda CPU e rodar as duas a 1 GHz dobraria sua potência 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 da CPU em vez da frequência do relógio economiza um pouco de energia e não estamos tão próximos da "barreira da frequência" como antes.

Problema: você precisa dividir o trabalho entre duas CPUs e combinar os resultados posteriormente.

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

Agora você só precisa mesclar duas CPUs em uma CPU de núcleo duplo e estará em casa. Isso é benéfico porque os núcleos podem compartilhar algumas partes da CPU, por exemplo, cache ( resposta relacionada ).


Continuamos atingindo limitações físicas de 1000 maneiras diferentes, tamanho da matriz (para múltiplos núcleos, o que leva a um processo de fabricação menor), tamanho do mobo (para multi cpu), amplificadores desenhados através dos traços (ambos). não é como se você pudesse colocar 2 cpus em um m-atx ou 4 e memória em uma placa atx, e esses designs levam DECADES para mudar. Eu concordo com o restante.
Rostol 16/08/14

@Rostol Esse é um bom ponto, editei a resposta.
precisa saber é o seguinte

5

Para encurtar a história: A aceleração de núcleos únicos atingiu seus limites, por isso continuamos diminuindo-os e adicionando mais deles, até que chegue a seus limites ou possamos mudar para materiais melhores (ou obter uma inovação fundamental que derrube a tecnologia estabelecida, algo como computação quântica de tamanho doméstico, realmente funcionando).

Penso que este problema é multidimensional e será necessário escrever para pintar a imagem mais completa:

  1. Limitações físicas (impostas pela física atual): Como a velocidade da luz, a 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 a matérias-primas, materiais utilizados para a construção de circuitos, durabilidade.
  3. Problemas arquiteturais: 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. Casos de uso e percepção de desempenho do usuário.

Pode haver muito mais. Uma CPU multifuncional está tentando encontrar uma solução para embaralhar todos esses fatores (e mais) em um chip de produção em massa que se encaixa em 93% dos assuntos no mercado. Como você vê, o último ponto é o mais crucial, a percepção do cliente, que é diretamente derivada 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, enquanto aguarda o trabalho de criação que você iniciou há duas horas para terminar. Isso é muito trabalho a ser feito e você ainda deseja uma experiência tranquila. Mas sua CPU pode lidar com UMA tarefa ao mesmo tempo! Em uma única coisa. Então, o que você faz é dividir as coisas e formar uma fila muito longa, e cada um recebe a sua parte e todos ficam felizes. Exceto por você, porque todas as coisas ficam lentas e nada lisas.

Então, você acelera sua CPU, a fim de realizar mais operações no mesmo período de tempo. Mas como você disse: consumo de calor e energia. E é aí que chegamos à parte da matéria-prima. O silício se torna mais condutor à medida que esquenta, o que significa que mais corrente flui através do material à medida que você o aquece. Os transistores têm um consumo de energia mais alto à medida que você os troca mais rapidamente. Também as altas frequências pioram a interferência entre os fios curtos. Como você vê, a abordagem de acelerar as coisas levará a um "colapso". Desde que não tenhamos melhores matérias-primas que o silício ou transistores muito melhores, estamos presos onde estamos com velocidade de núcleo único.

Isso nos leva de volta para onde começamos. Fazendo 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 escrever um software que possa dividir seu trabalho em dois núcleos menos poderosos, mas mais funcionais. Essa abordagem possui dois problemas principais (além de precisar de tempo para o mundo do software se adaptar a ela): 1. Aumente o chip ou diminua o núcleo individual. 2. Algumas tarefas simplesmente não podem ser divididas em duas partes que são executadas simultaneamente. Continue adicionando núcleos enquanto puder encolhê-los ou aumente o chip e mantenha o problema de calor distante. Ah, e não vamos esquecer o cliente. Se mudarmos nossos casos de uso, as indústrias terão que se adaptar. Veja todas as coisas "novas" brilhantes que o setor móvel criou.

Sim, essa 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 factível.

Por último, mas não menos importante: física. A mecânica quântica limitará o encolhimento de cavacos. A velocidade da luz ainda não é um limite, já que os elétrons não podem viajar na velocidade da luz no silício, na verdade é muito mais lento que isso. Além disso, é a velocidade de impulso que limita a 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 a suas propriedades elétricas. Seria um material muito melhor para a construção de CPUs, infelizmente é muito difícil produzir em grande quantidade.


2

Digamos (como um exemplo irrealista, mas ainda deve ser claro) que você tem uma CPU que está funcionando a 100F. Como o multicore geralmente funciona é pegar a frequência do clock que a CPU está executando a 100F e abaixá-la, diminuindo um pouco a velocidade. Como não está mais funcionando tão quente, eles podem colocar um segundo, terceiro ou mesmo um quarto ao lado, sem afetar significativamente a temperatura geral da CPU e obter os benefícios do multicore. Obviamente, isso vem com alguma sobrecarga, pois os núcleos ainda precisam ser controlados de um local, por um núcleo. Quanto mais núcleos você adicionar, maior será a sobrecarga. Quanto aos núcleos únicos, quanto mais você aumenta a velocidade deles, mais calor eles geram. Obviamente, isso tem limitações físicas (ou seja, depois de um certo ponto, começa a se tornar prejudicial ao desempenho,

À medida que o tempo passa, eles descobriram maneiras de diminuir o tamanho físico das CPUs, e é por isso que ainda não cumprimos a exigência de precisar de mais espaço; no entanto, por exemplo, 16 CPUs principais não existem (em fora do equipamento de nível de servidor devido às limitações de tamanho físico, pois as CPUs de nível de servidor são significativamente maiores fisicamente do que o nível de consumidor padrão.


2

CPU = Motor do carro: é mais fácil fabricar um carro mais potente com 16 válvulas, ou seja, uma 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 principal restrição aos 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 deriva eletrônica de luz ). Existem muitos outros fatores como você mencionou.

A adição de núcleos adicionais não tornaria o processador mais rápido, embora isso permitisse processar mais na mesma quantidade de tempo.

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

Também se poderia limitar o desempenho teórico de um "laptop final" bastante prático, com uma massa de um quilograma e um volume de um litro. Isto é feito considerando-se a velocidade da luz, a escala quântica, a constante gravitacional e a constante de Boltzmann, dando um desempenho de 5.4258 ⋅ 10 50 operações lógicas por segundo em aproximadamente 10 31 pedaços.


2
Aliás, os elétrons realmente se movem muito lentamente ("velocidade de desvio"), da ordem de milímetros por segundo IIRC. Você está mais se referindo à velocidade com que o campo elétrico se propaga.
Bob

2
Eu sabia que não deveria me atrever a agir como se eu entendesse a física no menor sentido. :) Obrigado por corrigir / me informar sobre isso.
jredd

Além disso, as velocidades reais do relógio, nas quais a velocidade de propagação terá um efeito significativo, estão em torno de 10+ GHz. Há outras razões pelas quais os processadores modernos preferem vários núcleos do que os relógios mais altos.
Bob

1

Longa história ainda mais curta:

Realmente não precisamos de CPUs mais rápidas. Fora de alguns usos altamente especializados *, a CPU não é o gargalo há anos - todos os bits periféricos, como memória, armazenamento e rede, geralmente fazem com que a CPU aguarde milhões de ciclos de clock durante os quais 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., suportam a CPU para melhorar a 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 o executa em 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 um overclock e aparafuse um dissipador de calor do tamanho de uma torradeira.

11
Não é "percepção", mas "melhor latência". Eu acho que esse é um dos principais problemas que temos; um forte rendimento de thread único em todos os custos mentalidade. Os sistemas operacionais dos consumidores ainda não são orientados em tempo real, nem fundamentalmente orientados para a simultaneidade ou o paralelismo.
18714 Rob

@ Peter Você faz uma observação muito boa, e obrigado por explicar isso. É algo que preciso lembrar como programador. :) Ainda é um problema secundário para os propósitos desta pergunta. Minha pergunta era por que não conseguimos velocidades de clock mais rápidas; sua resposta é sobre por que não precisamos no momento.
Nathan Long

11
@NathanLong "não pode" 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á forçando limites físicos de qualquer maneira). Ninguém está disposto a investir porque não há mercado realista quando as velocidades gerais do processador estão caindo - alguns desktops de fabricação atual estão na classe de 1,5 GHz (topo de linha há 10 anos) porque é mais barato, mais frio e rápido o suficiente para esse mercado segmento.
22414 Peter

1

Resposta curta e simples:

Por que não passar de 1 caminhão transportando mercadorias para 100 caminhões transportando 100 vezes mais, enfrenta as mesmas limitações físicas que ir de 1 caminhão dirigindo a 100 km / h a 1 caminhão dirigindo a 10.000 km / h?

Responda a essa pergunta, e sua pergunta também será respondida. O conceito é aproximadamente o mesmo.


1

Eu acho que outro fator é a temperatura. Se você aumentar a frequência do relógio, a temperatura do núcleo aumentará. Se você adicionar mais núcleos, mesmo que o consumo de energia suba, ele será distribuído pelos núcleos, para que a temperatura permaneça a mesma (como se você adicionar dois líquidos quentes, na mesma temperatura, um ao outro, a temperatura permanecerá a mesma )

Outra razão é que o aumento da frequência do relógio tende a aumentar o consumo de energia em um quadrado do fator que você aumenta a frequência (dependendo de quais outras barreiras você está atingindo em um determinado ponto). Portanto, aumentar a frequência do clock aumenta o consumo de energia em um quadrado, enquanto adicionar mais núcleos apenas o aumenta linearmente.


0

A resposta para o porquê "não adicionar mais núcleos" enfrenta as mesmas limitações físicas que a pergunta "acelera a CPU" é que um sistema multicore enfrenta exatamente as mesmas limitações que uma CPU de núcleo único. Chegamos a um ponto em que não temos realmente a opção de acelerar um sistema de núcleo único, por isso o fizemos para que possamos fazer mais coisas ao mesmo tempo. Atualmente, os desafios de tamanho e coordenação são mais fáceis de resolver do que ir mais rápido. A desvantagem é que, se uma tarefa não pode ser dividida em partes, talvez não acabemos indo muito mais rápido do que um sistema único.


0

Você não pode acelerar a CPU simplesmente colocando mais portas. Por fim, as instruções devem ser executadas e cada instrução requer várias operações de "comutação". Existem limites físicos fundamentais (mecânica quântica - o Princípio da Incerteza) que dificultam o aumento da "velocidade do clock" de uma CPU além da velocidade dos atuais sistemas de ponta.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.