Senza che ce ne siamo resi conto più di tanto, negli ultimi anni abbiamo smesso misurare la velocità di un computer considerando la frequenza di clock della CPU (Central Processor Unit) e abbiamo iniziato a contarne numero di core. Ormai la potenza di un computer, ma anche di un telefonino o di un tablet, viene (peraltro erroneamente) legata principalmente al numero di core della CPU.
Una CPU multi-core ha al suo interno più unità computazionali che funzionano contemporaneamente.
I produttori hanno preferito muoversi verso le CPU multi-core perché i costi del cambio tecnologico necessario a progettare e costruire processori con frequenze di clock più elevate stavano diventando sempre più insopportabili. Infatti all’aumentare della frequenza di Clock diminuisce la dimensione dei circuiti del microprocessore e ultimamente hanno raggiunto atomiche (Intel I7 è costruito con una tecnologia a 22 miliardesimi di metro). Diminuire ulteriormente queste dimensioni è impresa costosa e anche non troppo produttiva.
Posto che la scelta di progettare processori multi-core è figlia più della necessità che di una volontà progettuale, possiamo a questo punto domandarci se aumentare il numero di core sia equivalente a progettare CPU che funzionano a frequenze più elevate.
Ad esempio potremmo domandarci se una CPU con un solo core e un clock a 2GHz sia veloce quanto una CPU con due core con una frequenza di clock ad un Ghz (ovviamente stiamo assumendo che i core siano identici).
Come nelle migliori tradizioni la risposta è:
“dipende”.
Non tutte le applicazioni possono essere distribuite su più processori o più core e la stessa distribuzione delle operazioni su più processori non è detto che sia effficiente. Quindi se ci focalizzassimo solo sulle singole applicazioni sarebbe preferibile un processore più veloce ad un processore con più core. Per rendere più intuitivo il concetto possiamo usare il seguente esempio:
Sappiamo che nove donne possono generare nove figli in nove mesi, ma sappiamo anche che tutte e nove le donne non possono generare un figlio in un mese solo. La creazione di un bambino necessita di operazioni in sequenza che non possono essere distribuite. Per fare un figlio in un mese sarebbe necessaria una donna “più veloce”. Così come in questo esempio anche nell’ambito computazionale sappiamo che non tutti gli algoritmi possono essere distribuiti su più unità computazionali.
Detto questo si può rassicurare il lettore che il passaggio a processori multi-core è assolutamente positivo e che il ragionamento presentato in precedenza è da vedersi quasi come un’eccezione piuttosto che una regola. La maggioranza degli algoritmi si può parallelizzare e avere una CPU multi-core garantisce comunque una maggiore fluidità del sistema operativo rispetto ad una con un solo core.