Linux'ta ARM CPU saat hızı nasıl alınır?


16

S3C2416 kartına dayanan ARM tabanlı gömülü bir makinem var. Mevcut özelliklere göre 533 MHz ARM9 (ARM926EJ-S /proc/cpuinfo) olmalı , ancak üzerinde çalışan yazılım, 528MHz ARM CPU'lu Android telefonumdaki aynı yazılıma kıyasla "yavaş" geliyor.

/proc/cpuinfoBana BogoMIPS'in 266.24 olduğunu söylüyor. Performans ("Bogo" = sahte) ile ilgili BogoMIPS güvenmemeliyim biliyorum, ancak gerçek CPU hızı hakkında bir ölçüm almak istiyorum. X86'da, rdtsczaman damgası sayacını almak, bir saniye beklemek (uyku (1)), CPU hızına yaklaşık bir yaklaşım elde etmek için sayacı tekrar okumak ve deneyimlerime göre bu değer yeterince yakındı gerçek CPU hızı.

Verilen ARM işlemcisinin gerçek CPU hızını nasıl bulabilirim?

Güncelleme

Hem Android telefonum hem de ARM kartı için derlediğim bu basit Pi hesap makinesini buldum . Sonuçlar aşağıdaki gibidir:

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)

Görünüşe göre ARM926EJ-S, Android telefonumdan daha yavaş, ancak BogoMIPS rakamlarından beklediğimden iki kat daha yavaş değil. ARM9 CPU'nun saat hızından hala emin değilim.



Evet, bu orijinal, 533MHz CPU ile daha yeni bir model almalıydım, bu yüzden sahip olmam gereken şeyi alıp almadığımı kontrol ediyorum ...
MiKy

1
266.24*2=532.48Öyle görünüyor. 480MHz ARM CPU'm 239.2 alır 439.2*2=478.4.
David Schwartz

RAM hızı, RAM veri yolu genişliği ve depolama / NAND hızı gibi CPU hızının yanı sıra uygulamaların hızını etkileyebilecek birçok şey vardır.
LawrenceC

1
S3C2416'ya aşinayım. Gerçekten bir ARM9 / ARMv4 tasarımı, bir "Cortex" ARMv6 veya v7 tasarımı değil. Android akıllı telefonunuzdaki ARM muhtemelen bir Cortex, örneğin Cortex A5 tasarımıdır.
MSalters

Yanıtlar:


4

AFAICT, bir S3C2416'nın saati, bir S3C2443 veya ailesinin benzer işlemcilerininkine benzer. Bunun için Linux kaynak kodu , yakından ilişkili bir dizi saat olduğunu göstermektedir.

Seçim pasajı:

    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'den güncelleme

Bu çıktıyı dmesgaradım, ama hiçbir şey bulamadım - dmesgçıktı hata ayıklama mesajları ile doluydu ve başlangıç ​​eksikti. Açıkça, çekirdek ileti arabelleği telnet ile bağlanana kadar tüm iletileri tutamayacak kadar kısaydı. /bin/dmesg > /tmp/dmesg.logBaşlangıç ​​sürecine erken koyarak , bu çıktıyı elde edebildim ve bilmek istediklerimi doğruladım:

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

9

Deneyin cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq.

Benim android bu 1113600 okur, bu yüzden bu kHz .


Ne yazık ki ls -l /sys/devices/system/cpu/cpu0/bana sıfır sonuç veriyor. Kartın frekans ölçeklendirmesini desteklemediği anlaşılıyor (veya çekirdek çok eski).
MiKy


Ağacın bir kısmı Debian 3.16.7-ckt25-2'de eksik. (ve diğer cpu'nun) cpufreqaltında eksik /sys/devices/system/cpu/cpu0/. Onun erken bir ARMv8 / Aarch64 Mustang kurulu, ama sorunun bir parçası olup olmadığından emin değilim. 3.18.0-linaro-hikey çalıştıran bir ARMv8 / Aarch64 HiKey ağacı var.
jww

64 bit Debian çalıştıran bir Raspberry Pi 3 B + üzerinde mevcut değildir. Almak için bir pakete mi ihtiyacınız var?
Jon Harrop

1

Linux ile, hwinfokomutunuz varsa, (kök olarak) sorunu:
hwinfo --cpu | grep Clock


Bu bir SuSE aracıdır ve genellikle diğer dağıtımlarda varsayılan olarak kullanılamaz.
Evi1M4chine

Debian Jessie için: "Paket hwinfo mevcut değil, ancak başka bir paket tarafından anılıyor."
jww


ARM926EJ-S CPU'da Clock için selamlama boş çıkıyor
David Lechner

64 bit Debian çalıştıran Raspberry Pi 3 B + 'da boşaltın.
Jon Harrop

-1

dmidecodeşu anda DMItablodakileri okuyabileceğiniz bir formata döken kullanışlı küçük bir araçtır . Bir dmidecode | grep "Current Speed"(kök veya sudo ile) yapmak, o anda rapor edilen CPU hızını yazdıracaktır DMI.


Bu harika olurdu, maalesef sınırlı bir ortamım var, yani Python yok.
MiKy

@MiKy: Bunu doğru görürsem dmidecode C, yereldir.
Bobby

4
DMI, ARM platformlarında bulunmayan bir BIOS işi değil mi?
LawrenceC

3
"D" masaüstünü temsil eder , bu nedenle bu gömülü sistem buna sahip olmayacaktır.
MSalters

1
Debian Jessie için: "Paket kodu kodu mevcut değil, ancak başka bir paket tarafından belirtiliyor." Bildiğim kadarıyla ARM panoları PC BIOS'u kullanmıyor.
jww
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.