Tengo una máquina integrada basada en ARM basada en la placa S3C2416. De acuerdo con las especificaciones que tengo disponibles, debería haber un ARM9 de 533 MHz (según ARM926EJ-S /proc/cpuinfo
), sin embargo, el software que se ejecuta en él "se siente" lento, en comparación con el mismo software en mi teléfono Android con una CPU ARM de 528MHz.
/proc/cpuinfo
me dice que BogoMIPS es 266.24. Sé que no debería confiar en BogoMIPS con respecto al rendimiento ("Bogo" = falso), sin embargo, me gustaría obtener una medición de la velocidad real de la CPU. En x86, podría usar las rdtsc
instrucciones para obtener el contador de marca de tiempo, esperar un segundo (suspensión (1)), leer el contador nuevamente para obtener una aproximación de la velocidad de la CPU y, según mi experiencia, este valor estaba lo suficientemente cerca de La velocidad real de la CPU.
¿Cómo puedo encontrar la velocidad real de la CPU de un procesador ARM dado?
Actualizar
Encontré esta calculadora Pi simple , que compilé tanto para mi teléfono Android como para la placa ARM. Los resultados son los siguientes:
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)
Androide
# 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)
Por lo tanto, parece que el ARM926EJ-S es más lento que mi teléfono Android, pero no el doble de lo que esperaría de las cifras de BogoMIPS. Todavía no estoy seguro acerca de la velocidad del reloj de la CPU ARM9.
266.24*2=532.48
Entonces parece que está muerto. Mi 480MHz ARM CPU obtiene 239,2,439.2*2=478.4
.Respuestas:
AFAICT el reloj de un S3C2416 se parece al de un S3C2443 o procesadores similares de su familia. El código fuente de Linux sugiere que hay varios relojes estrechamente relacionados.
Fragmento de elección:
Actualización desde OP
He estado buscando esta salida
dmesg
, pero no pude encontrar nada: ladmesg
salida estaba llena de mensajes de depuración y faltaba el comienzo. Claramente, el búfer de mensajes del núcleo era demasiado corto para contener todos los mensajes hasta que me conecte por telnet. Al/bin/dmesg > /tmp/dmesg.log
comenzar el proceso de inicio, pude obtener esta salida, confirmando lo que quería saber:fuente
Tratar
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
.En mi Android, esto lee 1113600, por lo que está en kHz .
fuente
ls -l /sys/devices/system/cpu/cpu0/
me está dando cero resultados. Parece que la placa no admite el escalado de frecuencia (o el kernel es demasiado viejo).cpufreq
falta debajo/sys/devices/system/cpu/cpu0/
(y otras CPU). Es una placa ARMv8 / Aarch64 Mustang temprana, pero no estoy seguro de si es parte del problema. Un ARMv8 / Aarch64 HiKey que ejecuta 3.18.0-linaro-hikey tiene el árbol.Con Linux, si tiene el
hwinfo
comando, entonces (como root) problema:hwinfo --cpu | grep Clock
fuente
dmidecode
es una pequeña herramienta útil que descarga lo que está actualmente en laDMI
tabla en un formato que puede leer. Hacer undmidecode | grep "Current Speed"
(como root o con sudo) imprimirá la velocidad de la CPU que se informa actualmente en elDMI
.fuente