Saya memiliki mesin embedded berbasis ARM berbasis pada papan S3C2416. Menurut spesifikasi yang saya miliki harus ada ARM9 533 MHz (menurut ARM926EJ-S /proc/cpuinfo
), namun perangkat lunak yang berjalan di atasnya "terasa" lambat, dibandingkan dengan perangkat lunak yang sama pada ponsel Android saya dengan CPU ARM 528MHz.
/proc/cpuinfo
memberitahu saya bahwa BogoMIPS adalah 266,24. Saya tahu bahwa saya tidak boleh mempercayai BogoMIPS mengenai kinerja ("Bogo" = palsu), namun saya ingin mendapatkan pengukuran pada kecepatan CPU yang sebenarnya. Pada x86, saya bisa menggunakan rdtsc
instruksi untuk mendapatkan penghitung cap waktu, tunggu sebentar (tidur (1)), baca lagi penghitung untuk mendapatkan perkiraan kecepatan CPU, dan menurut pengalaman saya, nilai ini cukup dekat untuk kecepatan CPU nyata.
Bagaimana saya bisa menemukan kecepatan CPU aktual dari prosesor ARM yang diberikan?
Memperbarui
Saya menemukan kalkulator Pi sederhana ini , yang saya susun untuk ponsel Android saya dan papan ARM. Hasilnya adalah sebagai berikut:
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)
Jadi sepertinya ARM926EJ-S lebih lambat dari ponsel Android saya, tetapi tidak dua kali lebih lambat seperti yang saya harapkan dari angka BogoMIPS. Saya masih tidak yakin tentang kecepatan clock CPU ARM9.
266.24*2=532.48
Jadi sepertinya sudah mati. CPU ARM 480MHz saya mendapat 239.2439.2*2=478.4
,.Jawaban:
AFAICT jam S3C2416 terlihat seperti S3C2443, atau prosesor serupa dari keluarganya. The Linux source code untuk itu menunjukkan bahwa ada sejumlah jam erat terkait.
Cuplikan pilihan:
Perbarui dari OP
Saya telah mencari keluaran ini dari
dmesg
, tetapi saya tidak dapat menemukan apa pun -dmesg
keluarannya dipenuhi dengan pesan debug, dan awalnya tidak ada. Jelas buffer pesan kernel terlalu pendek untuk menampung semua pesan sampai saya terhubung dengan telnet. Dengan menempatkan/bin/dmesg > /tmp/dmesg.log
lebih awal dalam proses startup, saya bisa mendapatkan output ini, mengkonfirmasikan apa yang ingin saya ketahui:sumber
Coba
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
.Di android saya ini berbunyi 1113600, jadi ini dalam kHz .
sumber
ls -l /sys/devices/system/cpu/cpu0/
memberi saya hasil nol. Sepertinya board tidak mendukung penskalaan frekuensi (atau kernel terlalu tua).cpufreq
hilang di bawah/sys/devices/system/cpu/cpu0/
(dan cpu lainnya). Ini adalah papan Mustang ARMv8 / Aarch64 awal, tapi saya tidak yakin apakah itu bagian dari masalahnya. Sebuah HiKey ARMv8 / Aarch64 menjalankan 3.18.0-linaro-hikey memiliki pohon.Dengan Linux, jika Anda memiliki
hwinfo
perintah, maka masalah (sebagai root):hwinfo --cpu | grep Clock
sumber
dmidecode
adalah alat kecil yang berguna yang membuang apa yang ada diDMI
tabel ke dalam format yang dapat Anda baca. Melakukandmidecode | grep "Current Speed"
(sebagai root atau dengan sudo) akan mencetak kecepatan CPU yang saat ini sedang dilaporkan di InternetDMI
.sumber