Diferença entre núcleo e processador

197

Qual é a diferença entre um núcleo e um processador?

Eu já procurei no Google, mas estou apenas com definição de vários núcleos e processadores, mas não corresponde ao que estou procurando.

Saad Achemlal
fonte

Respostas:

197

Um núcleo geralmente é a unidade básica de computação da CPU - ele pode executar um único contexto de programa (ou vários se suportar threads de hardware, como hyperthreading em CPUs Intel), mantendo o estado correto do programa, registros e ordem de execução correta e executando as operações através de ALUs . Para fins de otimização, um núcleo também pode armazenar caches no núcleo com cópias de pedaços de memória usados ​​com freqüência.

Uma CPU pode ter um ou mais núcleos para executar tarefas em um determinado momento. Essas tarefas geralmente são processos e threads de software agendados pelo sistema operacional. Observe que o sistema operacional pode ter muitos threads para executar, mas a CPU pode executar X apenas essas tarefas em um determinado momento, onde X = número de núcleos * número de segmentos de hardware por núcleo. O restante teria que esperar que o sistema operacional os agendasse, antecipando tarefas em execução no momento ou qualquer outro meio.

Além do um ou muitos núcleos, a CPU incluirá alguma interconexão que conecta os núcleos ao mundo externo e, geralmente, também um grande cache compartilhado de "último nível". Existem vários outros elementos-chave necessários para fazer a CPU funcionar, mas seus locais exatos podem diferir de acordo com o design. Você precisará de um controlador de memória para conversar com a memória, controladores de E / S (monitor, PCIe, USB, etc.). No passado, esses elementos estavam fora da CPU, no "chipset" complementar, mas o design mais moderno os integrou à CPU.

Além disso, a CPU pode ter uma GPU integrada e praticamente tudo o que o designer deseja manter por questões de desempenho, energia e fabricação. O design da CPU é principalmente o chamado sistema no chip (SoC).

Esse é um design "clássico", usado pela maioria dos dispositivos de uso geral modernos (PC cliente, servidores e também tablets e smartphones). Você pode encontrar projetos mais elaborados, geralmente na academia, onde os cálculos não são feitos em unidades básicas "do tipo núcleo".

Leeor
fonte
@ Leitor, portanto, para uma máquina de 4 cpu e 2 núcleos, se eu executar um loop ocupado, ele não deve envolver apenas 1 cpu e 1 núcleo (ou seja, 50%) de apenas um da cpu? Meus shows de observação que envolve toda a CPU a 100% ... algo faltando no meu entendimento ...
Nrj
2
@Nrj, se você executar um aplicativo de thread único, ele será alocado para um único núcleo e ativará apenas um único thread de HW nele. Esse encadeamento poderá utilizar 100% desse núcleo, pois não há outro encadeamento em execução. Se você ativar outro aplicativo, ele geralmente será alocado para outro núcleo, e assim sucessivamente até você saturar o número de núcleos. Além disso, qualquer encadeamento adicional será agendado para os mesmos núcleos novamente usando SMT. Nesse ponto, a utilização do núcleo serão distribuídos entre os 2 segmentos (e se elas se comportam de forma simétrica, cada provavelmente alcançar ~ 50%)
Leeor
@ Leitor, aparentemente, esta era a minha expectativa, mas não é o que eu encontrei. Vi que todas as quatro CPUs (no gerenciador de tarefas) saltam para mostrar 100% de uso. O código era simples - para (int i = 0; i <Inteiro.MAX_VALUE; i ++) {System.out.println (k); }
Nrj
@ Leitor Acho que fiz o teste incorretamente. parece que meu espaço de trabalho on-line tem CPUs virtuais (4), mas um único processador. É por isso que todos eles ficam ocupados. Quando realizei o teste em uma máquina física de 2 CPUs (dual core), posso ver que a utilização da CPU é de cerca de 25%, o que está alinhado com a expectativa.
Nrj
Observe que essa terminologia varia, dependendo de quem você pergunta. Por exemplo, no meu sistema Debian, inspecionando /proc/cpuinfo, vejo dezesseis processor:linhas, apesar de dizer model: AMD Ryzen 7 2700X Eight-Core Processor. Portanto, pelo menos nesse caso, cada um dos 8 "núcleos" possui dois "processadores", o que está em desacordo com algumas outras respostas aqui.
jwd
130

Uma imagem pode dizer mais do que mil palavras:

Uma imagem pode dizer mais do que mil palavras

* Figura que descreve a complexidade de um sistema moderno com vários processadores e vários núcleos.

Fonte:

https://software.intel.com/pt-br/articles/intel-performance-counter-monitor-a-better-way-to-measure-cpu-utilization

JohnTortugo
fonte
114
Provavelmente diz mais do que mil palavras para pequenas criaturas como formigas.
Sky
12
Não tenho nada contra o uso de imagens, mas pelo menos você poderia fazer uma explicação adicional, não apenas copiar / colar uma imagem.
Patricio Sard
1
@Sky Tenha cuidado com as formigas ... #hunter_x_hunter: 3
Saad Achemlal
Para aqueles que dizem que é muito pequeno para ler, tente clique direito sobre ela, Open images in new tabem seguida, ampliar usando cltr++
Ng Sek Longo
28

Vamos esclarecer primeiro o que é uma CPU e o que é um núcleo, uma CPU de unidade central de processamento, pode ter várias unidades de núcleo, esses núcleos são um processador por si só, capaz de executar um programa, mas é independente no mesmo chip.

No passado, uma CPU era distribuída entre alguns chips, mas como a Lei de Moore progredia, eles criavam uma CPU completa dentro de um chip (matriz), desde os anos 90 o fabricante começou a encaixar mais núcleos na mesma matriz, então esse é o conceito de multi-core.

Atualmente, é possível ter centenas de núcleos nas mesmas GPUs de CPU (chip ou die), Intel Xeon. Outra técnica desenvolvida na década de 90 foi a multithreading simultânea, basicamente eles descobriram que era possível ter outro thread na mesma CPU de núcleo único, uma vez que a maioria dos recursos já era duplicada como ALU, vários registros.

Portanto, basicamente, uma CPU pode ter vários núcleos, cada um deles capaz de executar um thread ou mais ao mesmo tempo, podemos esperar ter mais núcleos no futuro, mas com mais dificuldade para poder programar com eficiência.

Germán Alfaro
fonte
Até o " Intel E5-2697 v2 " possui apenas 12 núcleos ... Por que você diz "centenas de núcleos na mesma CPU"? O que limita o número de núcleos possíveis em uma única CPU?
Pacerier
2
Eles são microprocessadores de pesquisa na contagem de +100 núcleos e um pouco sobre a produção dar uma olhada para: tomshardware.com/forum/318101-28-which-maximum-cores-cores
Germán Alfaro
9

CPU é uma unidade central de processamento. Desde 2002, temos apenas um processador de núcleo único, ou seja, realizaremos apenas uma tarefa ou um programa de cada vez.

Por ter vários programas rodando ao mesmo tempo, precisamos usar o processador múltiplo para executar vários processos ao mesmo tempo, por isso precisamos de outra placa-mãe para isso e isso é muito caro.

Portanto, a Intel introduziu o conceito de hyper threading, ou seja, converterá a única CPU em duas CPUs virtuais, ou seja, temos dois núcleos para nossa tarefa. Agora, a CPU é única, mas apenas finge (mascarada) que possui uma CPU dupla e executa várias tarefas. Mas ter múltiplos núcleos reais será melhor do que isso, para que as pessoas desenvolvam o processador multi-core, ou seja, múltiplos processadores em uma única caixa, ou seja, pegando uma CPU múltipla em uma única CPU grande. Ou seja, vários núcleos.

Himanshu Gupta
fonte
12
O que exatamente aconteceu em 2002?
Peter Mortensen
1
A Intel não inventou o conceito de multithreading simultâneo. A Wikipedia diz que o Alpha EV8 foi a primeira grande implementação comercial .
Peter Cordes
3

Nos primeiros dias ... como antes dos anos 90 ... os processadores não eram capazes de executar várias tarefas com eficiência ... porque um único processador podia lidar com apenas uma única tarefa ... então, quando costumávamos dizer que meu antivírus, microsoft word, vlc, etc. todos os softwares estão funcionando ao mesmo tempo ... isso não é verdade. Quando eu disse que um processador podia lidar com um único processo de cada vez ... eu quis dizer isso. Na verdade, ele processava uma única tarefa ... então, fazia uma pausa nessa tarefa ... executava outra tarefa ... concluí-a se for curta ou repetida e a adiciona à fila ... e depois à seguinte. Mas essa 'pausa' que mencionei foi tão pequena (aproximadamente 1ns) que você não entendeu que a tarefa foi pausada. Por exemplo. No vlc enquanto ouve música, existem outros aplicativos sendo executados simultaneamente, mas como eu disse ... um programa por vez ...

Mas isso era sobre os antigos processadores ...

Hoje em dia, os processadores, ou seja, os computadores de terceira geração possuem processadores com vários núcleos. Agora, os 'núcleos' podem ser comparados aos processadores de 1ª ou 2ª geração ... incorporados em um único chip, um único processador. Então agora entendemos o que são núcleos, ou seja, são mini processadores que se combinam para se tornar um processador. E cada núcleo pode lidar com um único processo de cada vez ou com vários threads, conforme projetado para o sistema operacional. E eles seguem os mesmos passos que eu mencionei acima sobre o único processador.

Por exemplo. Um processador i7 6gen possui 8 núcleos ... ou seja, 8 mini processadores em 1 i7 ... ou seja, sua velocidade é 8 vezes mais que os processadores antigos. E é assim que as tarefas múltiplas podem ser feitas.

Pode haver centenas de núcleos em um único processador, por exemplo. Intel i128.

Espero ter explicado isso bem.

Hrishikesh Dabir
fonte
0

A imagem da Intel é útil, como mostra a melhor resposta de Tortuga. Aqui está uma legenda.

Processador : Um chip semicondutor, a CPU (unidade central de processamento) instalada em um soquete, entre os anos 1950 e 2010. Com o tempo, mais funções foram incluídas no chip da CPU. Antes dos lançamentos da década de 1950 dos processadores de chip único, um processador poderia ter se espalhado por vários chips. Em meados da década de 2010, os chips de sistema em um chip tornaram um pouco mais superficial equiparar um processador a um chip, embora isso geralmente seja o que as pessoas entendem por processador, como em "este computador tem um processador i7" ou "este sistema de computador" possui quatro processadores ".

Núcleo : Um bloco de uma CPU, executando uma instrução por vez. (Você verá pessoas dizendo uma instrução por ciclo de clock, mas algumas CPUs usam vários ciclos de clock para obter algumas instruções.)

Bennett Brown
fonte
1
Um núcleo x86 executa logicamente as instruções uma de cada vez, em ordem de programa, mas, na realidade, as CPUs modernas gastam muitos transistores para preservar a ilusão de fazer isso, enquanto na verdade estão executando uma execução fora de ordem superscalar de 4 largos. realworldtech.com/haswell-cpu . (Ou 5 ou 6 de largura, para Ryzen). Mais de três instruções por relógio não são raras na prática, para alguns códigos. Mas bem abaixo de 1 também é comum em outro código que apresenta gargalos em falhas de cache e / ou erros de previsão de ramificação.
Peter Cordes
Além disso, arquiteturas VLIW como Itanium são explicitamente paralelas e, logicamente, além de executar fisicamente várias instruções em paralelo. BTW, interessante ponto histórico de que uma CPU levou mais de um chip nos primeiros dias.
Peter Cordes