Як отримати тактову частоту процесора ARM в Linux?


16

У мене є вбудована машина на основі ARM на базі дошки S3C2416. Відповідно до наявних у мене специфікацій, ARM9 має 533 МГц (відповідно ARM926EJ-S /proc/cpuinfo), однак програмне забезпечення, яке працює на ньому, "відчуває себе повільно" порівняно з тим же програмним забезпеченням на моєму Android-телефоні з процесором ARM 528 МГц.

/proc/cpuinfoкаже мені, що BogoMIPS - це 266,24. Я знаю, що я не повинен довіряти BogoMIPS щодо продуктивності ("Bogo" = фальшивий), проте я хотів би оцінити фактичну швидкість процесора. На x86 я міг би скористатися rdtscінструкцією, щоб отримати лічильник часових позначок, зачекати секунду (сон (1)), прочитати лічильник ще раз, щоб отримати приблизну швидкість процесора, і, за моїм досвідом, це значення було досить близьким до реальна швидкість процесора.

Як я можу знайти фактичну швидкість процесора для даного процесора ARM?

Оновлення

Я знайшов цей простий калькулятор 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)

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)

Тож здається, що ARM926EJ-S повільніше, ніж мій телефон Android, але не вдвічі повільніше, як я би очікував за цифрами BogoMIPS. Я все ще не впевнений у тактовій частоті процесора ARM9.


elinux.org/S3C2416 каже 400 МГц?
ta.speot.is

Так, це оригінал, я мав би отримати новішу модель з 533 МГц процесором, тому я перевіряю, чи отримав я те, що мав би мати ...
MiKy

1
266.24*2=532.48Тож здається, що він мертвий. Мій 480MHz ARM процесор отримує 239,2, 439.2*2=478.4.
Девід Шварц

Окрім швидкості процесора, багато можливостей впливають на швидкість роботи додатків, такі як швидкість оперативної пам’яті, ширина оперативної пам’яті та швидкість зберігання / NAND.
ЛоуренсC

1
Я знайомий з S3C2416. Це дійсно дизайн ARM9 / ARMv4, а не дизайн "Cortex" ARMv6 або v7. ARM у вашому смартфоні Android, ймовірно, є Cortex, наприклад, дизайн Cortex A5.
MSalters

Відповіді:


4

AFAICT годинник 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));

Оновлення з ОП

Я шукав цей вихід з 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

9

Спробуйте cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq.

На моєму андроїді цей показник читає 1113600, так що це в кГц .


На жаль, ls -l /sys/devices/system/cpu/cpu0/це дає нульові результати. Схоже, плата не підтримує масштабування частоти (або ядро ​​занадто старе).
MiKy

1
Я вважаю, що це в КГц, згідно з kernel.org/doc/Documentation/cpu-freq/user-guide.txt
Габе

Частина дерева відсутня в Debian 3.16.7-ckt25-2. cpufreqвідсутня в /sys/devices/system/cpu/cpu0/(та інших процесорах). Це рання дошка ARMv8 / Aarch64 Mustang, але я не впевнений, чи є її частиною проблеми. ARMv8 / Aarch64 HiKey працює під керуванням 3.18.0-linaro-hikey.
jww

Не існує на Raspberry Pi 3 B +, на якому працює 64-бітний Debian. Вам потрібен пакет, щоб отримати його?
Джон Харроп

1

Якщо у вас є hwinfoкоманда Linux, виберіть:
hwinfo --cpu | grep Clock


Це інструмент SuSE і, як правило, недоступний для інших дистрибутивів.
Evi1M4chine

Для Дебіана Джессі: "Пакет hwinfo не доступний, але посилається на інший пакет."
jww

hwinfo доступний на Debian: pack.debian.org/sid/admin/hwinfo
Девід Лехнер

привітання до Clock на процесорі ARM926EJ-S виходить порожнім, хоча
David Lechner

Порожняйте на Raspberry Pi 3 B + під керуванням 64-розрядного Debian.
Джон Харроп

-1

dmidecode- це маленький корисний інструмент, який скидає те, що зараз знаходиться в DMIтаблиці, у формат, який ви можете прочитати. Виконання dmidecode | grep "Current Speed"(як root або з sudo) буде роздруковувати швидкість процесора, про яку зараз повідомляється в DMI.


Це було б чудово, на жаль, у мене обмежене оточення, тобто немає Python.
MiKy

@MiKy: Якщо я бачу це правильно, dmidecode - це C, рідний.
Боббі

4
Хіба DMI не є річчю BIOS, якої не існує на платформах ARM?
ЛоуренсC

3
"D" означає робочий стіл , тому є ймовірність, що ця вбудована система не матиме її.
MSalters

1
Для Дебіана Джессі: "Пакет dmidecode недоступний, але посилається на інший пакет." Наскільки мені відомо, плати ARM не використовують комп'ютерні BIOS.
jww
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.