Che cos'è un tick della CPU?


37

Domanda:

  • Come viene calcolato un tick della CPU e cosa rappresenta?
  • Un singolo tickequivale 10 milisecondsquindi a se un thread segnalato non richiesto per ( 5 * 10 ticks = 500 ticks) significa che forse la CPU era troppo occupata per programmare il suddetto thread per funzionare ?

1
potresti mettere "CPU tick" nel contesto - forse tagliare e incollare il paragrafo della fonte della frase. Temo che ci possa essere confusione tra una delle diverse possibili risposte.
Mick,

Risposte:


31

Un segno di spunta è un'unità arbitraria per misurare il tempo interno del sistema. Di solito c'è un contatore interno al sistema operativo per le zecche; l'ora e la data correnti utilizzate da varie funzioni del sistema operativo derivano da quel contatore.

Quanti millisecondi rappresenta un segno di spunta dipende dal sistema operativo e può anche variare tra le installazioni. Utilizzare i meccanismi del sistema operativo per convertire i tick in secondi.

Quanto al motivo per cui un thread segnala che non viene chiamato: dipenderà dal fatto che il thread stia bloccando da qualche parte (in attesa, I / O ecc.). Se non si blocca, quindi sì, lo scheduler del sistema operativo deciderà quando verrà eseguito, il che potrebbe richiedere molto tempo se il sistema è occupato.

Modificare:

Si noti che, forse sfortunatamente, alcuni autori usano anche tick come sinonimo del ciclo di clock del processore (ad esempio questo testo ). Credo che questo utilizzo sia meno diffuso, ma comunque è meglio scoprire prima di cosa parlano le persone.


Quindi la CPU richiede un numero fisso di tick di clock per eseguire ogni istruzione?
Aaron,

1
@aaron: no, il tempo di esecuzione dell'istruzione è legato a un certo numero di cicli del processore. dato un sistema operativo specifico su una CPU specifica in esecuzione a una frequenza specifica, è possibile calcolare il numero di tick necessari per eseguire un'istruzione specifica, ma tale calcolo non è necessariamente valido per qualsiasi altra combinazione di sistema operativo / CPU / frequenza / istruzione.
Quack Quixote,

1
@Aaron: No, tick e cicli del processore sono due concetti diversi. La durata del ciclo del processore è determinata dall'hardware (frequenza della CPU); le zecche sono prodotte dal sistema operativo e utilizzano la lunghezza che il sistema operativo (o i suoi progettisti) ritengono appropriata.
sleske,

Non usare datetime.ticks () come indicatore, è volutamente costante in base alla progettazione, per rappresentare la data e l'ora dell'istanza dell'oggetto. Dipende dal tempo, mentre i tick dell'hardware sono indipendenti dal tempo. È una cattiva denominazione da parte del framework.
inverti il

1
@sleske Hmmm Vedo la differenza. "tick" era un sinonimo di cicli della CPU, nonché un termine per "una quantità costante di tempo indipendente dalla velocità di clock della CPU". Stesso termine con due significati. È giusto?
inverti il

3

Modifica: tratto dall'hardware del PC in breve :

"Il clock del processore coordina tutte le operazioni della CPU e della memoria generando periodicamente un segnale di riferimento temporale chiamato ciclo o tick di clock. La frequenza di clock è specificata in gigahertz (GHz), che specifica miliardi di tick al secondo. La velocità di clock determina la velocità di esecuzione delle istruzioni. Alcune istruzioni richiedono un segno di spunta, altre più segni di spunta e alcuni processori eseguono più istruzioni durante un segno di spunta. "


Il tempo tra i tick è determinato dalla velocità del clock e impiega da uno a molti tick a seconda dell'OP eseguito. Ad esempio, una CPU di classe 286 richiede 20 tick per moltiplicare due numeri.

Se hai bisogno di timer ad alte prestazioni, non penso che puoi fare affidamento sul fatto che le zecche siano costanti su tutti i sistemi.

Lo scheduler della CPU avrebbe potuto ritardare il thread, specialmente se ci fosse un altro thread con una priorità più alta. Quindi sì, la CPU avrebbe potuto essere troppo occupata.


4
-1 Stai confondendo tick e cicli del processore. tickssu un sistema Unix di solito si verificano 60 o 100 volte al secondo e non sono vincolati alla velocità proc.
sleske,

1
Sto parlando di tick hardware. una CPU da 1hz elabora 1 tick (ciclo) al secondo, 200Hz può elaborare 200 cicli al secondo, 2GHz due miliardi di cicli / sec. Più veloce è la tua CPU, più cicli / sec ottieni.
inverti il

2
Ah, vedo, alcuni autori usano tickcome sinonimo di processor cycle. Tuttavia, vedo principalmente tickusato come spiegato nella mia risposta sopra. Ma credo che la terminologia varia, come al solito :-( ho modificato la mia risposta..
sleske
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.