Cosa si intende per processore a 8 core?

Mentre ci sono già molte buone risposte a questa domanda, ho pensato di aggiungere la mia nel caso in cui qualche sottile differenza lo rendesse più chiaro a qualcuno.

Una volta, non molto tempo fa, i processori x86 erano dispositivi relativamente semplici. Leggevano le istruzioni dalla memoria, le eseguivano e memorizzavano i risultati in registri o in memoria. I registri erano importanti, perché erano parte della cpu, e ce n'era un numero molto limitato. A proposito, questo era vero per quasi tutti i computer di allora. Questa cpu divenne anche ciò a cui ora ci riferiamo generalmente come core (che significa cuore del computer).

A quel tempo la gente voleva computer più veloci, così ci fu una gara tra AMD e Intel, a chi poteva costruire il computer più veloce, di solito valutato da chi aveva il clock più veloce. Tuttavia, rendere semplicemente più veloce ogni porta del computer non è l'unico modo per rendere un computer più veloce, se puoi far fare alla tua CPU due cose contemporaneamente, puoi renderla [quasi] due volte più veloce. (Quasi, perché a volte ci sono cose che non si possono fare in due alla volta.)

Pipelining è un modo (ancora usato) per fare due (o più) cose contemporaneamente. Intel è diventata molto brava nel pipelining, tanto che AMD aveva bisogno di un modo diverso per accelerare le cose. Si sono resi conto che un altro modo per rendere il computer più veloce è quello di farlo sembrare due computer, cioè due core. Questo significa effettivamente che si possono eseguire due programmi contemporaneamente, soggetti ai limiti del sistema operativo, e che ci sono due programmi che vogliono essere eseguiti, ecc.

Tuttavia, si rivela utile più spesso che no. I programmi moderni, come il vostro browser chrome, hanno imparato a trarne vantaggio. Trasformano un programma in molti thread, ogni thread può essere eseguito su un core diverso, proprio come se fossero programmi separati. Di nuovo, non una velocità perfetta, ma abbastanza buona.

Ora, il core è diventato in qualche modo una cosa ambigua, perché Intel nel cercare di battere AMD si è resa conto che semplicemente aggiungendo più registri e qualche altra logica, potrebbe fare in modo che un core a volte agisca come due, sfruttando le fasi inutilizzate della pipeline. Così un core "fisico" potrebbe agire come due core virtuali tramite "hyperthreading".

Quindi, il numero di core o è il numero di volte in cui un blocco simile a una Cpu è disposto su un chip, o il numero di thread concorrenti che possono essere eseguiti tramite hyper-threading, o qualche altro concetto di marketing.

I core, il clock rate e le fasi della pipeline non sono l'unico modo per accelerare un computer. Anche l'esecuzione speculativa e l'esecuzione fuori ordine possono accelerare un computer. Queste accelerazioni sono ovviamente implicate nelle recenti vulnerabilità meltdown e spectre.

Dipendendo da quello che state facendo, può fare o meno la differenza. Ho appena comprato un netbook da 230 dollari, perché potevo collegarci un ssd da 512 gb, nonostante avesse solo un piccolo processore a bassa velocità basato su atom con solo 4 core. Come professionista del software che scrive software piuttosto che giocare, è una cpu più che sufficiente, e lo spazio su disco era più importante. Ho un'amica giocatrice che ha bisogno di quanti più core e della migliore scheda grafica possibile, in modo che i giochi sembrino reali.