我有一台基于 S3C2416 主板的 ARM 嵌入式机器。根据我手头的规格,应该有 533 MHz 的 ARM9(根据 是 ARM926EJ-S /proc/cpuinfo
),但是与我的 Android 手机(具有 528MHz ARM CPU)上的相同软件相比,在其上运行的软件“感觉”很慢。
/proc/cpuinfo
告诉我 BogoMIPS 是 266.24。我知道我不应该相信 BogoMIPS 的性能(“Bogo”=假的),但是我想测量一下实际的 CPU 速度。在 x86 上,我可以使用指令rdtsc
获取时间戳计数器,等待一秒钟(sleep(1)),再次读取计数器以获得 CPU 速度的近似值,根据我的经验,这个值足够接近实际的 CPU 速度。
如何找到给定 ARM 处理器的实际 CPU 速度?
更新
我发现这个简单的 Pi 计算器,我为我的 Android 手机和 ARM 开发板都编译了它。结果如下:
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)
安卓
# 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)
因此,ARM926EJ-S 似乎比我的 Android 手机慢,但并没有像 BogoMIPS 数据所预期的那样慢两倍。我仍然不确定 ARM9 CPU 的时钟速度。
答案1
据我所知,S3C2416 的时钟看起来与 S3C2443 或其家族的类似处理器的时钟非常相似。它的 Linux 源代码这表明存在许多密切相关的时钟。
选择片段:
pll = get_mpll(mpllcon, xtal);
clk_msysclk.clk.rate = pll;
fclk = pll / get_fdiv(clkdiv0);
hclk = s3c2443_prediv_getrate(&clk_prediv);
hclk /= s3c2443_get_hdiv(clkdiv0);
pclk = hclk / ((clkdiv0 & S3C2443_CLKDIV0_HALF_PCLK) ? 2 : 1);
s3c24xx_setup_clocks(fclk, hclk, pclk);
printk("CPU: MPLL %s %ld.%03ld MHz, cpu %ld.%03ld MHz, mem %ld.%03ld MHz, pclk %ld.%03l MHz\n",
(mpllcon & S3C2443_PLLCON_OFF) ? "off":"on",
print_mhz(pll), print_mhz(fclk),
print_mhz(hclk), print_mhz(pclk));
来自 OP 的更新
我一直在寻找这个输出dmesg
,但我什么也没找到——dmesg
输出中充斥着调试消息,而且开头部分缺失。显然,内核消息缓冲区太短,无法保存所有消息,直到我通过 telnet 连接。通过/bin/dmesg > /tmp/dmesg.log
在启动过程的早期阶段,我能够获得此输出,确认我想要知道的内容:
Linux version 2.6.21 (gcc version 4.2.2)
CPU: ARM926EJ-S revision 5 (ARMv5TEJ)
Machine: SMDK2416
...
CPU S3C2416 EVT3
S3C24XX Clocks, (c) 2004 Simtec Electronics
S3C2416: mpll on 534.000 MHz, cpu 534.000 MHz, mem 133.500 MHz, pclk 66.750 MHz
答案2
尝试cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
。
在我的安卓上,这个读数是1113600,所以这个单位为 kHz。
答案3
对于 Linux,如果您有该hwinfo
命令,则(以 root 身份)发出:
hwinfo --cpu | grep Clock
答案4
dmidecode
是一个有用的小工具,可以将表中当前的内容转储DMI
为您可以阅读的格式。执行dmidecode | grep "Current Speed"
(以 root 身份或使用 sudo)将打印出当前在 中报告的 CPU 速度DMI
。