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?
microcontroller
performance
Federico Russo
sumber
sumber
Jawaban:
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.
sumber
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.
sumber