30

smile
avatar
HURRRR !

31

Az : je viens de choper la doc dont tu parles.
En fait ça dépend du modèle de processeur, et effectivement le principe a changé :
For Pentium M processors (family [06H], models [09H, 0DH]); for Pentium 4 processors, Intel Xeon processors (family [0FH], models [00H, 01H, or 02H]); and for P6 family processors:
the time-stamp counter increments with every internal processor clock cycle. The internal processor clock cycle is determined by the current core-clock to busclock
ratio. Intel® SpeedStep® technology transitions may also impact the processor clock.

For Pentium 4 processors, Intel Xeon processors (family [0FH], models [03H and higher]); for Intel Core Solo and Intel Core Duo processors (family [06H], model [0EH]); for the Intel Xeon processor 5100 series and Intel Core 2 Duo processors (family [06H], model [0FH]); for Intel Core 2 and Intel Xeon processors (family [06H], DisplayModel [17H]); for Intel Atom processors (family [06H], DisplayModel [1CH]):
the time-stamp counter increments at a constant rate. That rate may be set by the maximum core-clock to bus-clock ratio of the processor or may be set by the maximum resolved frequency at which the processor is booted. The maximum resolved frequency may differ from the maximum qualified frequency of the processor, see Section 30.11.5 for more detail. The specific processor configuration determines the behavior. Constant TSC behavior ensures that the duration of each clock tick is uniform and supports the use of the TSC as a wall clock timer even if the processor core changes frequency. This is the architectural behavior moving forward.

Pour le second cas, c'est détaillé dans la section 30.11. C'est plus complexe, ça dépend du modèle exact du processeur, et surtout le nombre de cycles réels exécutés ne semble pas être accessible depuis du code non privilégié sorry
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

32

Ax> btw, si jamais t'utilise CPUID, jsais pas dans quel cadre tourne ton appli, mais faudrait ptet que tu check si CPUID est dispo (a part sur les _TRES_ vieux CPUs, il est toujours la... mais bon on sait jamais, si t'as envie de quitter plus proprement qu'avec une illegal instruction.. cheeky)

cpuid_is_available:
		push	ebx
		pushfd
		pop		eax
		mov		ebx, eax
		xor		eax, 0x200000
		push	eax
		popfd
		pushfd
		pop		eax
		xor		eax, ebx
		pop		ebx
		ret


et versions 64-bits des deux fonctions helpers:

cpuid_is_available:
		mov		rax, 01H	# cpuid is always supported in 64-bits mode
		ret

cpuid_get_info:
		# rdi = array addr, rsi = leaf, rdx = subleaf
		mov		rax, rsi	# leaf
		mov		rcx, rdx	# subleaf
		push	rbx
		cpuid
		mov		DWORD PTR [rdi +  0], eax
		mov		DWORD PTR [rdi +  4], ebx
		mov		DWORD PTR [rdi +  8], ecx
		mov		DWORD PTR [rdi + 12], edx
		pop		rbx
		ret

avatar
HURRRR !

33

spectras (./15) :
vince (./3) :
Si tu te renseignes sur les benchmarks CPU sous linux, on te filera un lien vers /proc/cpuinfo qui affiche généralement la fréquence "de référence" du CPU et pas la fréquence actuelle...


[code]spectras@217917lpweb001:~$ grep </proc/cpuinfo MHz
cpu MHz : 1599.971
spectras@217917lpweb001:~$ sudo echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
spectras@217917lpweb001:~$ grep </proc/cpuinfo MHz
cpu MHz : 2400.006
spectras@217917lpweb001:~$[/code]

Quitte a aller pecher dans /sys, autant prendre l'entrée qui donne la fréquence non ?

# cat /sys/devices/system/cpu/cpu0/cpufreq/scali
ng_cur_freq
300000
# echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# cat /sys/devices/system/cpu/cpu0/cpufreq/scali
ng_cur_freq
800000


(bon petit up, désolé)
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

34

Justement non, je voulais montrer que sur mon système, la fréquence rapportée comme fréquence nominale était modifiée lorsque le scaling était utilisé (en rapport avec ce que disait vince).
Que la fréquence actuelle rapporte la fréquence actuelle, ça semble logique. Le truc contre-intuitif c'est justement que la fréquence rapportée comme nominale change aussi.

35

Oui c'est vrai, n'empeche que pour recuperer la fréquence courange, il vaut mieux aller chercher dans /sys plutot que lire /proc/cpuinfo qu'il faut parser pour avoir la bonne valeur (et chaque type de CPU a un /proc/cpuinfo plus ou moins différent..)
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.