/ / Perché tutti i core della CPU hanno la stessa velocità invece di quelli diversi?

Perché tutti i core della CPU hanno la stessa velocità invece di quelli diversi?

Se hai mai fatto molti acquisti comparativiper una nuova CPU, potresti aver notato che tutti i core sembrano avere la velocità piuttosto che una combinazione di diversi. Perché? Il post di domande e risposte di SuperUser di oggi ha la risposta alla domanda di un curioso lettore.

La sessione di domande e risposte di oggi ci viene fornita da SuperUser, una suddivisione di Stack Exchange, un raggruppamento di siti Web di domande e risposte guidato dalla community.

La domanda

Il lettore SuperUser Jamie vuole sapere perché tutti i core della CPU hanno la stessa velocità invece di quelli diversi:

In generale, se stai acquistando un nuovo computer, tudeterminerebbe quale processore acquistare in base al carico di lavoro previsto per il computer. Le prestazioni nei videogiochi tendono a essere determinate dalla velocità single core, mentre le applicazioni come l'editing video sono determinate dal numero di core. In termini di ciò che è disponibile sul mercato, tutte le CPU sembrano avere all'incirca la stessa velocità con le differenze principali che sono più thread o più core.

Per esempio:

  • Intel Core i5-7600K, frequenza di base 3,80 GHz, 4 core, 4 thread
  • Intel Core i7-7700K, frequenza di base 4,20 GHz, 4 core, 8 thread
  • AMD Ryzen 5 1600X, frequenza base 3,60 GHz, 6 core, 12 thread
  • AMD Ryzen 7 1800X, frequenza base 3,60 GHz, 8 core, 16 thread

Perché vediamo questo schema di core in aumento, eppure tutti i core hanno la stessa velocità di clock? Perché non ci sono varianti con diverse velocità di clock? Ad esempio, due core "grandi" e molti core piccoli.

Invece, diciamo, quattro core a 4.0 GHz (ad es. 4 × 4 GHz, massimo 16 GHz), che ne dici di una CPU con due core a 4.0 GHz e quattro core a 2.0 GHz (ovvero 2 × 4.0 GHz + 4 × 2.0 GHz, massimo 16 GHz)? La seconda opzione sarebbe altrettanto efficace nei carichi di lavoro a thread singolo, ma potenzialmente migliore nei carichi di lavoro a thread multipli?

Lo faccio come una domanda generale e non specificamente per quanto riguarda le CPU sopra elencate o su un carico di lavoro specifico. Sono solo curioso di sapere perché lo schema è quello che è.

Perché i core della CPU hanno tutti la stessa velocità invece di quelli diversi?

La risposta

Collaboratore SuperUser bwDraco ha la risposta per noi:

Questo è noto come multi-elaborazione eterogenea(HMP) ed è ampiamente adottato dai dispositivi mobili. Nei dispositivi basati su ARM che implementano big.LITTLE, il processore contiene core con diversi profili di prestazioni e potenza, ovvero alcuni core funzionano velocemente ma assorbono molta energia (architettura più veloce e / o clock più alti) mentre altri sono efficienti dal punto di vista energetico ma lenti ( architettura più lenta e / o orologi inferiori). Ciò è utile perché il consumo di energia tende ad aumentare in modo sproporzionato quando si aumentano le prestazioni una volta superato un determinato punto. L'idea qui è quella di ottenere prestazioni quando ne hai bisogno e durata della batteria quando non lo fai.

Su piattaforme desktop, il consumo di energia è moltomeno problemi, quindi questo non è veramente necessario. La maggior parte delle applicazioni prevede che ogni core abbia caratteristiche prestazionali simili e i processi di pianificazione per i sistemi HMP sono molto più complessi della pianificazione per i tradizionali sistemi multi-processing simmetrici (SMP) (tecnicamente, Windows 10 ha il supporto per HMP, ma è principalmente destinato ai dispositivi mobili dispositivi che utilizzano ARM big.LITTLE).

Inoltre, la maggior parte dei processori desktop e laptop ogginon sono limitati termicamente o elettricamente al punto in cui alcuni nuclei devono funzionare più velocemente di altri, anche per brevi raffiche. Abbiamo sostanzialmente colpito un muro con la velocità con cui possiamo realizzare singoli core, quindi la sostituzione di alcuni core con quelli più lenti non consentirà ai core rimanenti di funzionare più velocemente.

Mentre ci sono alcuni processori desktop chehanno uno o due core in grado di funzionare più velocemente degli altri, questa funzionalità è attualmente limitata a determinati processori Intel di fascia alta (noti come Turbo Boost Max Technology 3.0) e comporta solo un leggero aumento delle prestazioni per quei core che possono funzionare più velocemente .

Mentre è certamente possibile progettare aprocessore tradizionale x86 con core grandi e veloci e core più piccoli e più lenti per l'ottimizzazione di carichi di lavoro con thread pesanti, ciò aggiungerebbe una notevole complessità al design del processore e le applicazioni difficilmente lo supporteranno correttamente.

Prendi un ipotetico processore con due Kaby velociCore Lake (7a generazione) e otto core Goldmont (Atom) lenti. Avresti un totale di 10 core e carichi di lavoro fortemente threaded ottimizzati per questo tipo di processore potrebbero vedere un guadagno in termini di prestazioni ed efficienza rispetto a un normale processore quad-core Kaby Lake. Tuttavia, i diversi tipi di core hanno livelli di prestazioni notevolmente diversi e i core lenti non supportano nemmeno alcune delle istruzioni supportate dai core veloci, come AVX (ARM evita questo problema richiedendo che sia i core grandi che i PICCOLI supportino le stesse istruzioni ).

Ancora una volta, la maggior parte basata su Windows multi-threadle applicazioni presuppongono che ogni core abbia lo stesso o quasi lo stesso livello di prestazioni e possa eseguire le stesse istruzioni, quindi è probabile che questo tipo di asimmetria produca prestazioni tutt'altro che ideali, forse addirittura si arresta in modo anomalo se utilizza istruzioni non supportate dal core più lenti. Mentre Intel potrebbe modificare i core lenti per aggiungere il supporto di istruzioni avanzato in modo che tutti i core possano eseguire tutte le istruzioni, ciò non risolverebbe i problemi con il supporto software per processori eterogenei.

Un approccio diverso al design dell'applicazione,più vicino a quello che probabilmente stai pensando nella tua domanda, utilizzerebbe la GPU per l'accelerazione di porzioni di applicazioni altamente parallele. Questo può essere fatto usando API come OpenCL e CUDA. Per quanto riguarda una soluzione a chip singolo, AMD promuove il supporto hardware per l'accelerazione della GPU nelle sue APU, che combina una CPU tradizionale e una GPU integrata ad alte prestazioni nello stesso chip, come l'architettura di sistema eterogenea, anche se questo non ha visto molto assorbire l'industria al di fuori di alcune applicazioni specializzate.


Hai qualcosa da aggiungere alla spiegazione? Audio disattivato nei commenti. Vuoi leggere altre risposte da altri utenti esperti di Stack Exchange? Dai un'occhiata al thread completo di discussione qui.

Credito di immagine: Mirko Waltermann (Flickr)