J'ai une machine embarquée ARM basée sur la carte S3C2416. Selon les spécifications dont je dispose, il devrait y avoir un ARM9 à 533 MHz (ARM926EJ-S selon /proc/cpuinfo
), mais le logiciel qui y fonctionne "semble" lent, par rapport au même logiciel sur mon téléphone Android avec un processeur ARM à 528 MHz.
/proc/cpuinfo
me dit que BogoMIPS est 266.24. Je sais que je ne dois pas faire confiance à BogoMIPS en ce qui concerne les performances ("Bogo" = faux), mais je voudrais obtenir une mesure sur la vitesse réelle du processeur. Sur x86, je pouvais utiliser l' rdtsc
instruction pour obtenir le compteur d'horodatage, attendre une seconde (veille (1)), relire le compteur pour obtenir une approximation de la vitesse du processeur, et selon mon expérience, cette valeur était assez proche de la vitesse réelle du processeur.
Comment puis-je trouver la vitesse réelle du processeur d'un processeur ARM donné?
Mise à jour
J'ai trouvé cette simple calculatrice Pi , que j'ai compilée à la fois pour mon téléphone Android et la carte ARM. Les résultats sont les suivants:
S3C2416
# cat /proc/cpuinfo
Processor : ARM926EJ-S rev 5 (v5l)
BogoMIPS : 266.24
Features : swp half fastmult edsp java
...
#./pi_arm 10000
Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
...
8.50 sec. (real time)
Android
# cat /proc/cpuinfo
Processor : ARMv6-compatible processor rev 2 (v6l)
BogoMIPS : 527.56
Features : swp half thumb fastmult edsp java
# ./pi_android 10000
Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
...
5.95 sec. (real time)
Il semble donc que l'ARM926EJ-S soit plus lent que mon téléphone Android, mais pas deux fois plus lentement que je ne m'y attendrais d'après les chiffres de BogoMIPS. Je ne suis toujours pas sûr de la vitesse d'horloge du processeur ARM9.
266.24*2=532.48
Il semble donc que ce soit mort. CPU ARM Mon 480MHz obtient 239,2,439.2*2=478.4
.Réponses:
AFAICT l'horloge d'un S3C2416 ressemble à celle d'un S3C2443, ou des processeurs similaires de sa famille. Le code source Linux pour cela suggère qu'il existe un certain nombre d'horloges étroitement liées.
Extrait de choix:
Mise à jour depuis OP
Je cherchais cette sortie
dmesg
, mais je n'ai rien trouvé - ladmesg
sortie était jonchée de messages de débogage et le début manquait. Clairement, le tampon de messages du noyau était trop court pour contenir tous les messages jusqu'à ce que je me connecte par telnet. En mettant/bin/dmesg > /tmp/dmesg.log
tôt dans le processus de démarrage, j'ai pu obtenir cette sortie, confirmant ce que je voulais savoir:la source
Essayez
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
.Sur mon Android, cela indique 1113600, c'est donc en kHz .
la source
ls -l /sys/devices/system/cpu/cpu0/
ne me donne aucun résultat. Il semble que la carte ne supporte pas la mise à l'échelle des fréquences (ou que le noyau est trop ancien).cpufreq
est manquant sous/sys/devices/system/cpu/cpu0/
(et d'autres processeurs). C'est une ancienne carte Mustang ARMv8 / Aarch64, mais je ne sais pas si cela fait partie du problème. Un ARMv8 / Aarch64 HiKey exécutant 3.18.0-linaro-hikey a l'arborescence.Avec Linux, si vous avez la
hwinfo
commande, alors (en tant que root) , lancez :hwinfo --cpu | grep Clock
la source
dmidecode
est un petit outil utile qui sauvegarde ce qui se trouve actuellement dans leDMI
tableau dans un format que vous pouvez lire. Faire undmidecode | grep "Current Speed"
(en tant que root ou avec sudo) imprimera la vitesse du processeur actuellement signalée dans leDMI
.la source