Ich habe eine ARM-basierte Embedded-Maschine, die auf der S3C2416-Karte basiert. Nach den Spezifikationen, die ich zur Verfügung habe, sollte es einen 533-MHz-ARM9 (ARM926EJ-S gemäß /proc/cpuinfo
) geben, jedoch "fühlt" sich die darauf ausgeführte Software langsam an, verglichen mit der gleichen Software auf meinem Android-Handy mit einer 528-MHz-ARM-CPU.
/proc/cpuinfo
sagt mir, dass BogoMIPS 266.24 ist. Ich weiß, dass ich BogoMIPS in Bezug auf die Leistung ("Bogo" = Schwindel) nicht vertrauen sollte, möchte jedoch eine Messung der tatsächlichen CPU-Geschwindigkeit erhalten. Auf x86 konnte ich die rdtsc
Anweisung verwenden, um den Zeitstempelzähler abzurufen, eine Sekunde zu warten (sleep (1)), den Zähler erneut abzulesen, um eine Annäherung an die CPU-Geschwindigkeit zu erhalten, und meiner Erfahrung nach lag dieser Wert nahe genug bei die reale CPU-Geschwindigkeit.
Wie kann ich die tatsächliche CPU-Geschwindigkeit eines bestimmten ARM-Prozessors ermitteln?
Aktualisieren
Ich habe diesen einfachen Pi-Rechner gefunden , den ich sowohl für mein Android-Handy als auch für das ARM-Board kompiliert habe. Die Ergebnisse sind wie folgt:
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)
Das ARM926EJ-S scheint also langsamer zu sein als mein Android-Handy, aber nicht zweimal langsamer, als ich es von den BogoMIPS-Zahlen erwartet hätte. Ich bin mir immer noch nicht sicher, wie schnell die ARM9-CPU ist.
266.24*2=532.48
Es scheint also tot zu sein. Meine 480MHz ARM CPU erhält 239,2,439.2*2=478.4
.Antworten:
AFAICT Die Uhr eines S3C2416 sieht genauso aus wie die eines S3C2443 oder ähnlicher Prozessoren seiner Familie. Der Linux-Quellcode deutet darauf hin, dass es eine Reihe eng miteinander verbundener Uhren gibt.
Auswahlschnipsel:
Update von OP
Ich habe nach dieser Ausgabe von gesucht
dmesg
, aber ich konnte nichts finden - diedmesg
Ausgabe war übersät mit Debug-Meldungen, und der Anfang fehlte. Offensichtlich war der Kernel-Nachrichtenpuffer zu kurz, um alle Nachrichten aufzunehmen, bis ich eine Verbindung über Telnet herstelle. Durch/bin/dmesg > /tmp/dmesg.log
frühzeitiges Einsetzen des Startvorgangs konnte ich diese Ausgabe erhalten und bestätigte, was ich wissen wollte:quelle
Versuchen Sie es
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
.Auf meinem Android heißt das 1113600, das ist also in kHz .
quelle
ls -l /sys/devices/system/cpu/cpu0/
gibt mir null Ergebnisse. Anscheinend unterstützt das Board keine Frequenzskalierung (oder der Kernel ist zu alt).cpufreq
fehlt unter/sys/devices/system/cpu/cpu0/
(und anderen cpus). Es ist ein frühes ARMv8 / Aarch64-Mustang-Board, aber ich bin mir nicht sicher, ob es Teil des Problems ist. Ein ARMv8 / Aarch64 HiKey, auf dem 3.18.0-linaro-hikey ausgeführt wird, hat den Baum.Wenn Sie unter Linux den
hwinfo
Befehl haben, müssen Sie (als root) Folgendes tun:hwinfo --cpu | grep Clock
quelle
dmidecode
ist ein nützliches kleines Tool, das das, was sich aktuell in derDMI
Tabelle befindet, in einem lesbaren Format ablegt. Wenn Siedmidecode | grep "Current Speed"
(als root oder mit sudo) eine ausführen, wird die CPU - Geschwindigkeit ausgegeben, die derzeit in der angezeigt wirdDMI
.quelle