Al tempo delle Cpu a singolo core, la frequenza operativa era il principale parametro sul quale intervenire per valutare in modo rapido la potenza di calcolo del processore: più MHz significavano più prestazioni. Con l’arrivo della prima architettura dual core – correva l’anno 2005 – questo paradigma è stato scosso alle
fondamenta.
Era l’inizio dell’era dei multi core: capaci di eseguire più thread in parallelo, queste architetture hanno fatto compiere un salto in avanti al livello di prestazioni conosciuto fino a quel momento. Complici la difficoltà di superare la barriera dei 4 GHz di frequenza e la rapida evoluzione dei processori grafici, lo sviluppo delle architetture desktop è stato focalizzato all’aumento del numero dei core per migliorare l’esecuzione in parallelo del software. Il risultato è stato ottimo per molto tempo, ma anche in questo caso è stata raggiunta una soglia oltre la quale un maggior numero di core non si traduce come atteso in un incremento significativo di prestazioni.
Nel settore dei sistemi a parallelismo massiccio, questo fenomeno è noto come “sindrome di von Neumann” o “supercomputing crisis”; con ciò si identifica un’incongruenza tra le prestazioni attese e quelle reali dovuta all’efficienza dell’hardware nello spostare i dati per l’elaborazione e alla difficoltà di programmare applicazioni parallele a livello di thread. Su scala ridotta, lo stesso effetto si osserva anche nelle Cpu dotate di più unità di calcolo. Per stipare più core all’interno di uno spazio ridotto si impone una gestione stringente della frequenza e dei core attivi per non oltrepassare il limite di consumo definito. Trovare il punto di equilibrio tra frequenza operativa e numero di core è tutt’altro che semplice, soprattutto perché il software gioca un ruolo chiave e non può essere controllato come l’hardware. Il software di utilizzo comune non è in grado di adattarsi in modo efficiente al numero di core in quanto è ottimizzato per un numero di nuclei fissato in origine. Un esempio lampante viene dal confronto tra il Core i7 5960X e il Core i7 4790K: il primo dotato di 8 core (16 thread), mentre il secondo implementa 4 core (8 thread). Nel test SYSMark i due processori ottengono un risultato molto simile. Questo perché il Core i7 4790K opera al massimo delle sue possibilità, mentre il Core i7 5960X non riesce a sfruttare tutti i sottosistemi di cui dispone. Per compensare ciò l’architettura lavora con meno core a frequenza più alta e di fatto la presenza di più unità di elaborazione risulta superflua.
È evidente che l’hardware, ma più realisticamente il software debba evolversi in modo da essere più adattivo.