Differenza tra core e processore


197

Qual è la differenza tra un core e un processore?

L'ho già cercato su Google, ma ho solo una definizione multi-core e multi-processore, ma non corrisponde a quello che sto cercando.

Risposte:


197

Un core è di solito l'unità di calcolo di base della CPU: può eseguire un singolo contesto di programma (o più contesti se supporta thread hardware come hyperthreading su CPU Intel), mantenendo lo stato corretto del programma, i registri e l'ordine di esecuzione corretto, e eseguire le operazioni tramite ALU . Ai fini dell'ottimizzazione, un core può anche contenere cache on-core con copie di blocchi di memoria utilizzati di frequente.

Una CPU può avere uno o più core per eseguire attività in un determinato momento. Queste attività sono in genere processi e thread software pianificati dal sistema operativo. Si noti che il sistema operativo può avere molti thread da eseguire, ma la CPU può eseguire X tali attività in un dato momento, dove X = numero core * numero di thread hardware per core. Il resto dovrebbe aspettare che il sistema operativo li pianifichi anticipando le attività in corso o qualsiasi altro mezzo.

Oltre a uno o più core, la CPU includerà alcune interconnessioni che collegano i core al mondo esterno e di solito anche una cache condivisa di "ultimo livello". Ci sono molti altri elementi chiave richiesti per far funzionare una CPU, ma le loro posizioni esatte possono differire in base al design. Avrai bisogno di un controller di memoria per comunicare con la memoria, controller I / O (display, PCIe, USB, ecc.). In passato questi elementi erano al di fuori della CPU, nel "chipset" complementare, ma la maggior parte del design moderno li ha integrati nella CPU.

Inoltre, la CPU potrebbe avere una GPU integrata e praticamente tutto il resto che il progettista ha voluto tenere vicino per considerazioni su prestazioni, potenza e produzione. Il design della CPU tende principalmente a quello che viene chiamato system on chip (SoC).

Si tratta di un design "classico", utilizzato dalla maggior parte dei moderni dispositivi per uso generale (PC client, server e anche tablet e smartphone). Puoi trovare progetti più elaborati, di solito in accademia, dove i calcoli non vengono eseguiti in unità di base "simil-core".


@Leeor quindi per una macchina a 4 cpu e 2 core, se eseguo un loop occupato, non dovrebbe coinvolgere solo 1 cpu e 1 core (cioè il 50%) di una sola cpu? La mia osservazione mostra che coinvolge tutta la cpu al 100% ... qualcosa che manca nella mia comprensione ...
Nrj

2
@Nrj, se si esegue un'applicazione a thread singolo, verrà allocata su un singolo core e su di essa verrà attivato solo un singolo thread HW. Quel thread sarà in grado di utilizzare il 100% di quel core in quanto non c'è nessun altro thread in esecuzione con esso. Se si attiva un'altra applicazione, questa verrà di solito assegnata a un altro core, e così via fino a saturare il numero di core. Oltre a ciò, ogni ulteriore thread verrà pianificato di nuovo sugli stessi core usando SMT. A quel punto, sarà distribuito l'utilizzo di base tra i 2 filetti (e se si comportano simmetricamente, ogni sarebbe probabilmente raggiungere il ~ 50%)
Leeor

A quanto pare, questa era la mia aspettativa, ma non è quello che ho trovato. Ho visto che tutte e quattro le CPU (nel taskmanager) saltano per mostrare il 100% di utilizzo. Il codice era semplice: for (int i = 0; i <Integer.MAX_VALUE; i ++) {System.out.println (k); }
Nrj,

@Leeor Penso di aver fatto il test in modo errato. sembra che il mio spazio di lavoro online abbia CPU virtuali (4) ma un singolo processore. Ecco perché tutti si danno da fare. Quando ho eseguito il test su una macchina fisica a 2 cpu (dual core), posso vedere che l'utilizzo della cpu è di circa il 25%, il che è in linea con le aspettative.
Nrj

Nota che questa terminologia varia a seconda di chi chiedi. Ad esempio, sul mio sistema Debian, ispezionando /proc/cpuinfo, vedo sedici processor:righe, anche se dice model: AMD Ryzen 7 2700X Eight-Core Processor. Quindi, almeno in questo caso, ciascuno degli 8 "core" ha due "processori", che è in contrasto con alcune altre risposte qui.
jwd

130

Un'immagine può dire più di mille parole:

Un'immagine può dire più di mille parole

* Figura che descrive la complessità di un moderno sistema multi-processore e multi-core.

Fonte:

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


114
Probabilmente dice più di mille parole per piccole creature come le formiche.
Sky,

12
Non ho nulla contro l'uso delle immagini, ma almeno potresti fare un'ulteriore spiegazione, non solo copiare / incollare un'immagine.
Patricio Sard,

1
@Sky Stai attento con le formiche ... #hunter_x_hunter: 3
Saad Achemlal

Per coloro che hanno detto che è troppo piccolo per leggere, prova a fare clic destro su di esso, Open images in new tabquindi ingrandisci utilizzando cltr++
Ng Sek Long

28

Chiariamo prima cosa è una CPU e cosa è un core, una CPU di unità centrale di elaborazione, può avere più unità core, quei core sono un processore da solo, in grado di eseguire un programma ma è autonomo sullo stesso chip.

In passato una CPU era distribuita su alcuni chip, ma man mano che la legge di Moore progrediva, fecero avere una CPU completa all'interno di un chip (die), dagli anni '90 il produttore iniziò a inserire più core nello stesso die, quindi questo è il concetto di multi-core.

In questi giorni è possibile avere centinaia di core sulla stessa CPU (chip o die) GPU, Intel Xeon. Un'altra tecnica sviluppata negli anni '90 era il multi-threading simultaneo, fondamentalmente hanno scoperto che era possibile avere un altro thread nella stessa CPU single core, poiché la maggior parte delle risorse era già duplicata come ALU, registri multipli.

Quindi in pratica una CPU può avere più core ognuno in grado di eseguire un thread o più contemporaneamente, potremmo aspettarci di avere più core in futuro, ma con più difficoltà per poter programmare in modo efficiente.


Anche " Intel E5-2697 v2 " ha solo 12 core ... Perché dici "centinaia di core sulla stessa CPU"? Cosa limita il numero di core possibili su una singola CPU?
Pacerier,

2
Sono microprocessori di ricerca con un numero di +100 core e alcuni in produzione danno
Germán Alfaro

9

La CPU è un'unità centrale di elaborazione. Dal 2002 disponiamo solo di un processore single core, ovvero eseguiremo una sola attività o un programma alla volta.

Per far funzionare più programmi alla volta, dobbiamo usare il processore multiplo per eseguire più processi alla volta, quindi abbiamo richiesto un'altra scheda madre per questo e questo è molto costoso.

Quindi, Intel ha introdotto il concetto di hyper threading, ovvero convertirà la singola CPU in due CPU virtuali, ovvero abbiamo due core per il nostro compito. Ora la CPU è singola, ma fa solo finta (mascherata) di avere una doppia CPU ed eseguire più attività. Ma avere più core reali sarà meglio di così, quindi le persone sviluppano la produzione di processori multi-core, cioè processori multipli su un singolo box, ovvero afferrando una CPU multipla su un'unica grande CPU. Cioè più core.


12
Cosa è successo esattamente nel 2002?
Peter Mortensen,

1
Intel non ha inventato il concetto di multithreading simultaneo. Wikipedia afferma che Alpha EV8 è stata la prima grande implementazione commerciale .
Peter Cordes,

3

All'inizio ... come prima degli anni '90 ... i processori non erano in grado di svolgere più attività in modo efficiente ... perché un singolo processore poteva gestire solo una singola attività ... quindi quando dicevamo che il mio antivirus, microsoft word, vlc, ecc. i software sono tutti in esecuzione contemporaneamente ... questo non è in realtà vero. Quando ho detto che un processore poteva gestire un singolo processo alla volta ... volevo dire. In realtà avrebbe elaborato una singola attività ... poi ha usato per mettere in pausa quell'attività ... prendere un'altra attività ... completarla se è una breve o di nuovo metterla in pausa e aggiungerla alla coda ... quindi alla successiva. Ma questa "pausa" che ho menzionato era così piccola (circa 1 ns) che non hai capito che l'attività è stata messa in pausa. Per esempio. Su vlc mentre ascolti la musica ci sono altre app in esecuzione contemporaneamente ma come ti ho detto ... un programma alla volta ...

Ma questo riguardava i vecchi processori ...

I processori di oggi, ovvero i PC di terza generazione hanno processori multi core. Ora i "core" possono essere confrontati con un processore di prima o seconda generazione ... incorporato in un singolo chip, un singolo processore. Quindi ora abbiamo capito cosa sono i core, ovvero sono mini processori che si combinano per diventare un processore. E ogni core può gestire un singolo processo alla volta o multi thread come progettato per il sistema operativo. E seguono gli stessi passaggi di cui ho parlato sopra sul singolo processore.

Per esempio. Un processore i7 6gen ha 8 core ... vale a dire 8 mini processori in 1 i7 ... ovvero la sua velocità è 8 volte superiore ai vecchi processori. Ed è così che si può fare il multitasking.

Potrebbero esserci centinaia di core in un singolo processore Ad es. Intel i128.

Spero di averlo spiegato bene.


0

L'immagine di Intel è utile, come mostrato dalla migliore risposta di Tortuga. Ecco una didascalia per questo.

Processore : un chip a semiconduttore, la CPU (unità centrale di elaborazione) alloggiata in un socket, circa anni '50 -'2010. Nel tempo, sul chip della CPU sono state inserite più funzioni. Prima delle versioni degli anni '50 dei processori a chip singolo, un processore poteva essersi diffuso su più chip. A metà del 2010 i chip di sistema su un chip hanno reso leggermente più abbozzato equiparare un processore a un chip, anche se questo è generalmente ciò che la gente intende per processore, come in "questo computer ha un processore i7" o "questo sistema informatico" ha quattro processori ".

Core : un blocco di una CPU, che esegue un'istruzione alla volta. (Vedrai persone dire un'istruzione per ciclo di clock, ma alcune CPU usano più cicli di clock per alcune istruzioni.)


1
Un core x86 esegue logicamente le istruzioni una alla volta, nell'ordine del programma, ma in realtà le moderne CPU spendono molti transistor per preservare l'illusione di farlo mentre in realtà sono l'esecuzione fuori ordine superscalare su 4 di larghezza. realworldtech.com/haswell-cpu . (O 5 o 6 di larghezza, per Ryzen). Più di 3 istruzioni per orologio non sono rare in pratica, per alcuni codici. Ma ben al di sotto di 1 è anche comune in altri codici che si verificano colli di bottiglia in caso di errori nella cache e / o errori di lettura del ramo.
Peter Cordes,

Inoltre, architetture VLIW come Itanium sono esplicitamente parallele e logicamente oltre che eseguono fisicamente più istruzioni in parallelo. A proposito, interessante punto storico che una CPU ha preso più di un chip nei primi giorni.
Peter Cordes,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.