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

Sommario:

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

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

Video: Come si calcola la velocità del processore su processori multi-core?
Video: Come sfruttare al massimo il cavalletto: la nostra guida! - YouTube 2024, Aprile
Anonim
L'avvento di processori multi-core di livello consumer economico solleva la domanda per 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.
L'avvento di processori multi-core di livello consumer economico solleva la domanda per 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.

La sessione di domande e risposte di oggi ci viene fornita per gentile concessione di SuperUser, una suddivisione di Stack Exchange, un raggruppamento di domande e risposte di community drive.

La domanda

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

Is it correct to say, for example, that a processor with four cores each running at 3GHz is in fact a processor running at 12GHz?

I once got into a “Mac vs. PC” argument (which by the way is NOT the focus of this topic… that was back in middle school) with an acquaintance who insisted that Macs were only being advertised as 1Ghz machines because they were dual-processor G4s each running at 500MHz.

At the time I knew this to be hogwash for reasons I think are apparent to most people, but I just saw a comment on this website to the effect of “6 cores x 0.2GHz = 1.2Ghz” and that got me thinking again about whether there’s a real answer to this.

So, this is a more-or-less philosophical/deep technical question about the semantics of clock speed calculation. I see two possibilities:

  1. Each core is in fact doing x calculations per second, thus the total number of calculations is x(cores).
  2. Clock speed is rather a count of the number of cycles the processor goes through in the space of a second, so as long as all cores are running at the same speed, the speed of each clock cycle stays the same no matter how many cores exist. In other words, Hz = (core1Hz+core2Hz+…)/cores.

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

La risposta

Contributi SuperUser Mokubai aiuta a chiarire le cose. Lui scrive:

The main reason why a quad-core 3GHz processor is never as fast as a 12GHz single core is to do with how the task running on that processor works, i.e. single-threaded or multi-threaded. Amdahl’s Law is important when considering the types of tasks you are running.

If you have a task that is inherently linear and has to be done precisely step-by-step such as (a grossly simple program)

10: a = a + 1

20: goto 10

Quindi il compito dipende molto dal risultato del passaggio precedente e non può eseguire più copie di se stesso senza corrompere il valore di

'a'

come ogni copia otterrebbe il valore di

'a'

in tempi diversi e a scriverlo diversamente. 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 fai un compito 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 potrebbero essere suddivise in 4 programmi separati come il primo e eseguiti nello stesso momento, ognuno in grado di utilizzare in modo efficace tutta la potenza di uno dei core senza alcun problema di sincronizzazione, è qui che la legge di Amdahl entra dentro

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 ti dà un sistema multi CPU è 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à vengono eseguite 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.

Ogni core esegue infatti 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.

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 core esistenti. 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.

Consigliato: