Domanda

L'incremento di un registro (in un ciclo) può essere utilizzato per determinare la frequenza di clock (effettiva)? Ho naturalmente pensato che potesse, ma sono stato commentato che la Cpu potrebbe impiantare tecniche super-scalari che rendono inutile questo tipo di calcolo. Inoltre mi è stato detto che l'incremento dei registri sulla CPU può essere effettuato in meno di un ciclo di clock.

è vero?

È stato utile?

Soluzione

No, non in modo affidabile. Il numero di cicli necessari per incrementare un registro può variare tra i diversi tipi di processori e devi anche includere l'overhead del looping. In qualsiasi sistema operativo moderno, dovrai occuparti del multitasking preventivo, quindi non hai idea di quanto tempo CPU ti darà lo scheduler di processo. A seconda della quantità di lavoro svolto da altri processi, potresti ottenere molto o un po 'di tempo della CPU, quindi il numero di incrementi di registro che puoi eseguire al secondo è altamente variabile.

Inoltre, in un ambiente multicore, gli orologi potrebbero non funzionare alla stessa velocità. Se per qualche motivo il tuo processo viene spostato tra i core dallo scheduler, la frequenza di clock potrebbe cambiare in modo imprevedibile.

Esistono modi molto migliori per ottenere la frequenza di clock, come chiederlo al sistema operativo (ovviamente, come farlo varia con il sistema operativo).

Altri suggerimenti

No, non puoi usarlo per determinare la frequenza di clock. Non è garantito che un registro possa essere incrementato esattamente una volta per orologio.

Quale CPU stai prendendo di mira? Esistono modi più definiti per determinare la frequenza di clock, almeno su x86.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top