15Aug

Come si calcola la velocità del processore su processori multi-core?

L'avvento di processori multi-core economici di fascia consumer pone la domanda a molti utenti: come si calcola in modo efficace la velocità reale di un sistema multi-core? Un sistema 3Ghz a 4 core è davvero 12Ghz? Continua a leggere mentre indaghiamo.

Today's Question &La sessione di risposta ci viene fornita per gentile concessione di SuperUser, una suddivisione di Stack Exchange, un raggruppamento di Q & A su un sito di community drive.

La domanda

SuperUser reader NReilingh era curioso di sapere come calcolare la velocità del processore per un sistema multi-core:

È corretto dire, ad esempio, che un processore con quattro core ciascuno funzionante a 3GHz è in realtà un processore in esecuzionea 12 GHz?

Una volta mi sono imbattuto in un argomento "Mac vs. PC"( che tra l'altro NON è al centro di questo argomento. .. che era tornato alle medie) con un conoscente che ha insistito sul fatto che i Mac venivano pubblicizzati solo come macchine da 1Ghz perché eranoG4 a doppio processore ciascuno funzionante a 500 MHz.

All'epoca sapevo che questo era un problema per ragioni che penso siano evidenti per la maggior parte delle persone, ma ho appena visto un commento su questo sito per l'effetto di "6 core x 0.2GHz = 1.2Ghz" e questo mi ha fatto ripensare ase c'è una vera risposta a questo.

Quindi, questa è una domanda tecnica più o meno filosofica / profonda sulla semantica del calcolo della velocità di clock. Vedo due possibilità:

  1. Ogni core esegue di fatto x calcoli al secondo, quindi il numero totale di calcoli è x( core).
  2. La velocità di clock è piuttosto il conteggio del numero di cicli che il processore attraversa nello spazio di un secondo, quindi finché tutti i core sono in esecuzione alla stessa velocità, la velocità di ciascun ciclo di clock rimane la stessa indipendentemente dal numero di coreesistere. In altre parole, Hz =( core1Hz + core2Hz +. ..) / core.

Quindi qual è il modo appropriato per indicare la velocità totale del clock e, cosa ancora più importante, è persino possibile utilizzare la nomenclatura di velocità single-core su un sistema multi-core?

La risposta

SuperUser contributors Mokubai aiuta a chiarire le cose. Scrive:

Il motivo principale per cui un processore quad-core 3GHz non è mai veloce come un core single a 12 GHz è da sapere su come funziona l'attività in esecuzione su quel processore, cioè single-threaded o multi-threaded. La legge di Amdahl è importante quando si considerano i tipi di compiti che si stanno eseguendo.

Se si dispone di un'attività che è intrinsecamente lineare e deve essere eseguita passo-passo esattamente come( un programma grossolanamente semplice)

10: a = a + 1 20: goto 10

Quindi l'attività dipende molto dal risultatodel pass precedente e non è in grado di eseguire più copie di se stesso senza corrompere il valore di 'a' poiché ciascuna copia otterrebbe il valore di 'a' in momenti diversi e la scriverà in modo diverso. Ciò limita l'attività a un singolo thread e pertanto l'attività può essere eseguita sempre su un singolo core in qualsiasi momento, se dovesse essere eseguita su più core, si verificherà il danneggiamento della sincronizzazione. Ciò lo limita a 1/2 della potenza della CPU di un sistema dual core, o 1/4 in un sistema quad-core.

Ora esegui un'attività come:

10: a = a + 1 20: b = b + 1 30: c = c + 1 40: d = d + 1 50: goto 10

Tutte queste linee sono indipendenti e potrebberoessere diviso in 4 programmi separati come il primo e correre allo stesso tempo, ognuno in grado di utilizzare in modo efficace tutta la potenza di uno dei core senza alcun problema di sincronizzazione, è qui che entra in gioco la legge di Amdahl.

Quindi, se si dispone di un'applicazione a thread singolo che esegue calcoli di forza bruta, il singolo processore a 12 GHz potrebbe vincere a mani basse, se in qualche modo si può suddividere l'attività in parti separate e multi-thread, i 4 core potrebbero avvicinarsi, ma non raggiungere, la stessa esibizione, secondo la legge di Amdahl.

La cosa principale che un sistema multi CPU ti dà è la reattività.Su una macchina single core che sta lavorando sodo il sistema può sembrare lento come la maggior parte del tempo potrebbe essere utilizzato da una sola attività e le altre attività funzionano solo a brevi intervalli tra le attività più grandi, risultando in un sistema che sembra lento o tremolante. Su un sistema multi-core l'attività pesante ottiene un core e tutte le altre attività giocano sugli altri core, svolgendo il proprio lavoro in modo rapido ed efficiente.

L'argomento di "6 core x 0.2GHz = 1.2Ghz" è spazzatura in ogni situazione, tranne quando le attività sono perfettamente parallele e indipendenti. Ci sono un buon numero di compiti che sono altamente paralleli, ma richiedono ancora una qualche forma di sincronizzazione. Handbrake è un video trancoder che è molto bravo nell'usare tutte le CPU disponibili ma richiede un processo di base per mantenere gli altri thread pieni di dati e raccogliere i dati con cui sono fatti.

  1. Ogni core esegue di fatto calcoli x al secondo, quindi il numero totale di calcoli è x( core).

Ogni core è in grado di eseguire calcoli x al secondo, supponendo che il carico di lavoro sia adatto in parallelo, su un programma lineare tutto ciò che si ha è 1 core.

  1. La velocità di clock è piuttosto il conteggio del numero di cicli che il processore attraversa nello spazio di un secondo, quindi finché tutti i core sono in esecuzione alla stessa velocità, la velocità di ciascun ciclo di clock rimane la stessa indipendentemente dal numero di coreesistere. In altre parole, Hz =( core1Hz + core2Hz +. ..) / core.

Penso che sia un errore pensare che 4 x 3GHz = 12GHz, a condizione che la matematica funzioni, ma stai confrontando le mele con le arance e le somme non sono giuste, GHz non può semplicemente essere aggiunto insieme per ogni situazione. Lo cambierei in 4 x 3GHz = 4 x 3GHz.

Hai qualcosa da aggiungere alla spiegazione? Sound off nei commenti. Vuoi leggere più risposte dagli altri utenti di Stack Exchange esperti di tecnologia? Controlla la discussione completa qui.