Bagaimana kinerja Cortex M0 dibandingkan dengan pengontrol 8-bit?

10

Dokumen ini mengutip 60 DMIPS / mW untuk Cortex M0, vs 31 DMIPS / mW untuk M3. (Yang terakhir tidak setuju dengan angka-angka dalam dokumen ini , yang mengutip 1,25 DMIPS / MHz dan 0,19 mW / MHz, memberikan 6,6 DMIPS / mW.)
Apakah ada yang tahu bagaimana kinerja / daya M0 dibandingkan dengan pengontrol 8/16-bit seperti AVR, PIC dan MSP430? Dan apa masalahnya dengan angka M3?

Federico Russo
sumber
3
@ Frederico ini adalah pertanyaan yang sangat dimuat dan tidak ada jawaban yang mudah. Karena, pengalaman saya adalah hal-hal lain yang menentukan kinerja. Hal-hal seperti kemampuan prefetch, kecepatan bus, jumlah periferal yang tergantung pada bus, kecepatan akses flash, dll. Jika Anda membuat profil sistem dengan baik, Anda hampir selalu melihat mendapatkan data di dan keluar menjadi leher botol. Nah, jika Anda merinci aplikasi Anda, saya akan dengan senang hati memberikan wawasan tentang apa rute terbaik untuk memilih prosesor.
Frank
1
@ Frank: Bukankah tolok ukur Dhrystone memperhitungkan hal-hal seperti pengambilan awal dan kecepatan bus secara implisit? Saya terutama ingin memiliki angka-angka NXP M3 yang bertentangan dibersihkan. Tidak dapat memberi Anda detail tentang aplikasi, karena detailnya belum ada :-)
Federico Russo
@ Frederico, saya menganggap diri saya sebagai insinyur di bawah rata-rata, tentu saja bukan seorang arsitek. Saya tidak percaya adanya tolok ukur di luar sana karena data hampir selalu dipijat. Misalnya, jika Anda memiliki data sink berkecepatan tinggi yang mengharuskan Anda mendorong data masuk dan keluar dan sementara itu Anda perlu mengakses memori dan periferal lain, bus case ini menghalangi. Prosesor ini dirancang untuk kasus penggunaan rata-rata. Jika Anda melakukan decoding lunak pada data tertentu yang memerlukan beberapa memori baca / tulis dan jalur data mungkin meluap atau kelaparan. Ini biasanya berakhir pada malam tanpa tidur untuk orang-orang perangkat lunak.
Frank
Saat ini Dhrystone adalah mainan yang menyenangkan tetapi tidak banyak memberi tahu Anda. Tolok ukur secara umum tidak banyak memberi tahu Anda. Anda harus mengambil aplikasi Anda dan menjalankannya. Compiler yang Anda pilih tidak mengubah kode atau perangkat keras apa pun dapat membuat perbedaan kinerja beberapa kali plus atau minus, jadi ini semua sangat sulit. Anda dapat membuat tolok ukur yang membuat angka menunjukkan apa pun yang Anda inginkan.
old_timer
ARM akan menjalankan lingkaran di sekitar sisanya untuk kinerja murni (pada ukuran yang sama dan harga yang sama, belum tentu daya). Saya tidak berpikir bahkan 8051 adalah selambat PIC, dapatkah Anda memahami jumlah jam yang hilang untuk melakukan sesuatu yang berguna? Menggunakan asm, maka orang-orang menggunakan C dan menjadi tak tertahankan untuk ditonton. Msp430, Anda mungkin menginginkannya untuk aplikasi di mana Anda mematikannya, ia bangun sekali di bulan biru melakukan beberapa hal kemudian tidur, seperti remote control TV atau sesuatu seperti itu.
old_timer

Jawaban:

9

Berikut adalah beberapa petunjuk yang dapat saya berikan. Spesifikasi yang disediakan NXP adalah untuk seluruh chip mereka (inti, memori, periferal). Spesifikasi yang diberikan ARM didasarkan hanya pada inti. Karena jumlahnya diturunkan secara berbeda, sangat sulit untuk melakukan perbandingan.

Jadi, saya usulkan kita mundur dan melihat dua perangkat. MCU berbasis NXP M0, dan MCU berbasis MXP M3.

Untuk MCU berbasis M0, mari kita lihat LPC1111. Ketika MCU ini menjalankan loop menganggur yang sibuk, ia akan mengkonsumsi arus 3mA pada clock rate 12MHz. Ini menghasilkan 250uA / MHz, yang pada 3.3V adalah 825uW / MHz.

Untuk MCU berbasis M3, mari kita lihat LPC1311. Ketika MCU ini menjalankan loop menganggur sibuk yang sama, ia akan mengkonsumsi arus 4mA pada 12MHz. Menghasilkan 333.3uA / MHz, yaitu 1.1mW / MHz.

Jika kita melihat MCU MSP430C1101 (16-bit) kita akan melihat itu akan menggunakan 240uA pada 1MHz ketika tegangan adalah 3V. Ini menghasilkan 720uW / MHz.

Selanjutnya, mari kita beralih ke ATMega328 (digunakan di Arduino Uno). Kita melihat 200uA digunakan pada 1MHz dengan tegangan 2V. Ini menghasilkan 400uA / MHz.

Juga harus dicatat bahwa MSP430 dan AVR ditentukan secara berbeda. Konsumsi daya mereka diberikan pada 1MHz, sedangkan M0 dan M3 diberikan pada 12MHz. Ini berarti M0 dan M3 memiliki inefisiensi penskalaan hingga 12MHz yang dimasukkan ke dalam angka-angka mereka.

Nilai-nilai ini adalah semua angka konsumsi aktif saat ini. Jika Anda melihat konsumsi saat ini ketika perangkat dalam keadaan tidur Anda melihat perintah besarnya daya yang lebih kecil digunakan. Keuntungan yang disediakan oleh Mbit 32bit adalah dapat menyelesaikan lebih banyak pekerjaan dalam waktu yang lebih singkat daripada MCU 8 dan 16 bit. Ini berarti untuk beban kerja yang diberikan akan menghabiskan lebih banyak waktu dalam kondisi tidur. M0 di tangan seorang insinyur yang baik akan sering kali mendapatkan efisiensi daya yang jauh lebih baik daripada MCU 8-bit di tangan seorang insinyur yang kurang terampil meskipun terdapat perbedaan dalam konsumsi daya aktif.

Dari pengalaman saya, M0 sangat dekat dengan konsumsi daya aktif 16 dan 8 bit sehingga Anda dapat menebus banyak perbedaan dalam aplikasi. Juga, berkali-kali konsumsi daya dari semua yang Anda gantung dari MCU mengecilkan MCU. Jadi, untuk banyak aplikasi yang menangani efisiensi MCU bukanlah hal yang paling penting.

Saya harap itu membantu. Ini adalah cara yang panjang untuk mengatakan bahwa konsumsi daya sedikit lebih buruk, tetapi Anda mendapatkan lebih banyak dilakukan dengan siklus clock itu daripada chip lainnya. Jadi, itu sangat tergantung pada aplikasi Anda.

tallganglyguy
sumber
1
Re paragraf pertama Anda: jika angka-angka ARM hanya tentang inti maka mereka harus lebih tinggi dari angka NXP, yang mencakup kekuatan periferal. Tapi mereka lebih rendah. Saya juga tidak bisa menjelaskannya.
stevenvh
1
Anda juga harus membandingkan pengontrol pada tegangan yang sama. Jika Anda menjalankan LPC1111 pada 3V seperti MSP430, konsumsi daya mereka sangat dekat. Tidak buruk untuk ARM NXP; MSP430 dikenal karena dayanya yang rendah.
stevenvh
1
satu masalah besar yang saya miliki dengan perangkat korteks ARM dibandingkan dengan MSP430 adalah bahwa perangkat ARM dapat membakar banyak siklus prosesor untuk kembali ke keadaan berjalan dari mode daya rendah mereka. Data RAM hilang dan harus dibuat ulang / diinisialisasi (terlepas dari SRAM yang didukung baterai), PLL dan sistem jam harus dihidupkan ulang. MSP hanya melanjutkan dari instruksi berikutnya dengan semua RAM utuh dari saat ia pergi tidur. Jika proses Anda sering melibatkan transisi antara mode aktif dan tidur maka ARM akan hilang.
pada
3

Membandingkan 12MHz ke 1MHz bias - laju clock yang lebih tinggi membutuhkan lebih sedikit arus per MHz. Sebagai contoh, MSP430 terbaru dapat mencapai 80-120uA per MHz dengan 8/16MHz dalam mode aktif.

Perlu disebutkan bahwa kode yang ditulis dengan benar menjaga mode MCU aktif di bawah 1% (atau bahkan 0,1%) waktu, sehingga mode daya membuat banyak perbedaan di sini.

Dalam kehidupan nyata, MSP430 sulit dikalahkan (saya bukan TI TI) karena kondisi daya rendah yang sangat berguna di mana MCU lain membutuhkan waktu lebih lama untuk bangun atau tidak menyimpan konten RAM, yang konyol.

pengguna19790
sumber