Apa tempat mikrokontroler 8- dan 16-bit? Mengapa 32-bit tidak diambil alih?


9

Apa titik cutoff nyata dalam hal trade-off antara biaya dan kinerja untuk memilih mikrokontroler 32-bit?

Dengan kata lain, dengan kebangkitan dan dominasi arsitektur ARM, mengapa kita masih menggunakan mikrokontroler 8-bit dan 16-bit? Apakah mereka masih jauh lebih murah?

Saya mengerti bahwa perangkat yang sangat canggih tidak membutuhkan sumber daya yang ditawarkan oleh arsitektur yang lebih besar dan lebih kompleks. Namun, apa motivasi sebenarnya untuk tetap menggunakannya jika biaya tampaknya mengarah ke kisaran yang sama?


1
Konsumsi daya?
Leon Heller

7
32-bit μC termurah pada Digikey yang saya lihat adalah sekitar $ 0,64, 8-bit termurah adalah $ 0,35. Jika Anda adalah perusahaan besar yang akan membangun sejuta widget sederhana, itu perbedaan yang sangat besar.
Samuel

@LeonHeller Pada pandangan pertama saya cenderung setuju tetapi lihat poin yang saya buat dalam komentar jawaban yang diusulkan.
Bruno Morais

2
Melihat bahkan harga massal pada DigiKey bukanlah panduan yang brilian, karena benar-benar mikro kecil dalam aplikasi kecil berdaya rendah yang sedang diproduksi secara massal, tidak ada yang membelinya dari DigiKey dan kemungkinan mereka membeli mati untuk tetap tidak paket chip untuk disolder ke papan tulis. Mikro 8-bit akan selalu lebih kecil, lebih sederhana, dan karenanya lebih murah dan lebih rendah daripada konstruksi 32-bit yang setara. Ya margin turun ke titik tidak penting bagi banyak orang, tetapi dalam volume massal bahkan 1/10 dari satu sen yang dihemat tidak sia-sia.
John U

Inilah artikel yang relevan yang saya temui di situs web Electronic Design: 8 Bit atau 32 Bit? Memilih MCU Desain Selanjutnya Anda
Garth Wilson

Jawaban:


17

Mungkin setahun yang lalu, ada perbedaan yang signifikan antara low-end 8-pahit dan mikrokontroler 32-bit termurah. Bukan kasusnya lagi.

Berdasarkan harga massal Digi-Key, Anda bisa mendapatkan PIC10F200 8-bit untuk 35ȼ dalam jumlah 2500 dalam paket SOT-23-6. Anda mendapatkan CY8C4013SXI-400 32-bit (ARM Cortex-M0) untuk 36ȼ dalam jumlah 2500 dalam paket SOIC-8. (Harga massal Digi-Key tidak realistis dalam hal apa yang sebenarnya dibayar produsen, yang mungkin jauh lebih sedikit, tapi saya pikir itu valid untuk digunakan untuk perbandingan harga kasar antara produk yang berbeda untuk jumlah yang sama.)

Jadi OP benar, mereka bertemu.

Jadi mengapa chip 32-bit tidak digunakan lebih banyak? Seperti yang saya katakan di paragraf pertama, paritas titik harga dan ukuran ini hanya terjadi pada tahun terakhir atau 18 bulan terakhir. Dan mereka masih harus menempuh jalan panjang sebelum ada cukup banyak chip untuk bisa bersaing.

Dari 6875 chip ARM yang tersedia dari Digi-Key, hanya ada empat yang tersedia dengan harga kuantitas di bawah satu dolar. Empat . Sementara itu ada ratusan chip 8-bit di bawah satu dolar untuk dipilih para insinyur.

Tetapi katakanlah ada beberapa mikro 32-bit low-end yang tersedia. Apakah mereka akan secara otomatis memilih yang 8-bit?

Pertama-tama Anda harus membuat insinyur menyadarinya. Selalu ada banyak penolakan untuk berubah. Hal-hal baru untuk dipelajari - dari sudut pandang perangkat keras, belajar bagaimana memasukkan chip baru ke dalam sebuah rangkaian. Ada alat-alat baru, seperti programmer di-sirkuit, kompiler baru, dll. Untuk insinyur firmware, belajar cara menggunakan perangkat peripheral dan timer yang baru (kebanyakan mendaftar tata letak dan makna bit).

32-bit bagus dan semua itu, tetapi kecuali seseorang perlu melakukan banyak perhitungan, apa gunanya? Jika Anda hanya memiliki empat pin GPIO, mengaksesnya secara internal sebagai register 32-bit tidak memberikan keuntungan dibandingkan menggunakan register 8-bit.

Saya pikir konsumsi daya selalu akan mendukung mikro 8-bit.

Sebagai contoh, PIC10F200 menarik 175 μA berjalan pada 4 MHz dan 2v dan 100 nA dalam mode tidur. CY8C4013SXI-400 menarik sekitar 800 μA menjalankan @ 4MHz dan 2v dan 1 uA dalam mode tidur. (Datasheet untuk CY8C4013SXI tidak memiliki angka untuk 4 MHz atau 2v, jadi saya harus melakukan beberapa estimasi - datasheet mengatakan itu menarik 2 ma @ 6 MHz dan 3.3v.)

Jadi ARM menggambar 4,5 kali lebih banyak saat ini saat bangun, dan 10 kali saat tidur. Sepertinya tidak banyak, tetapi perbedaannya antara berjalan di sel koin selama 3 bulan atau selama satu tahun. (Saya berasumsi kedua mikrokontroler sebagian besar melakukan pengaturan waktu, memperbarui port dll dan tidak melakukan perhitungan yang sangat berat. Jika yang terakhir adalah kasus, dan mikro 8-bit harus melakukan banyak aritmatika multi-byte untuk periode yang diperpanjang waktu, ia kehilangan sebagian manfaatnya.)

Sangat menarik bahwa ARM menarik arus empat kali lebih banyak daripada 8-pahit, dan pada gilirannya memiliki register internal dan jalur data yang empat kali lebih lebar. Saya pikir ini bukan kebetulan. Untuk CMOS, konsumsi daya kira-kira sebanding dengan jumlah transistor yang diaktifkan, dan ARM jelas melakukan lebih banyak per instruksi yang dieksekusi.

Karena semakin banyak vendor ARM mengeluarkan chip low-end, saya tidak akan terkejut jika vendor seperti Microchip menurunkan harga mereka lebih jauh. Bagaimanapun, dengan harga yang kurang lebih sama, paket ukuran yang sama, tetapi lebih sedikit chip 32-bit untuk dipilih, saya pikir mikrokontroler 8-bit masih akan ada untuk sementara - terutama karena Anda telah punya puluhan ribu insinyur yang akrab dengan mereka.


Untuk konsumsi daya dengan mode tidur yang diterapkan, Anda juga harus mempertimbangkan efisiensi kode. Jika MCU bangun dengan pemicu, kemudian mengeksekusi beberapa kode dan kembali tidur, jumlah jam yang diperlukan untuk menyelesaikan pekerjaan akan sangat relevan. Saya akan berpikir bahwa sebagian besar konsumsi MCU saat ini berasal dari osilator berjalan dengan kecepatan penuh. Untuk melakukan pekerjaan yang sama dengan pahit 32, pahit 8 mungkin akan membutuhkan sekitar lima kali jumlah siklus, hanya karena mereka umumnya kode kurang efektif bahkan ketika melakukan aritmatika sederhana.
Lundin

(Dan itu tidak terlalu banyak karena mereka memiliki bus data 8 bit, tetapi terutama karena semua 8-pahit utama pasar memiliki desain inti CPU kuno dari tahun 70-an dan 80-an.)
Lundin

1
@Lundin Saya mengatakan ini dalam jawaban saya - jika 8-pahit harus melakukan banyak matematika mewah di ISR, maka belum kehilangan sebagian keuntungannya. Tetapi jika itu hanya mengatur beberapa flag, atau memperbarui register, maka itu akan lebih efisien.
tcrosley

5

Tiga poin utama:

  • Harga
  • Ukuran
  • Konsumsi daya

50 ¢ saat Anda memesan 10.000 chip adalah uang yang agak banyak. Terlebih lagi ketika Anda memesan 100.000 chip.

Anda bisa mendapatkan chip 8 bit yang jauh lebih kecil dari chip 32-bit, seperti PIC10 yang tersedia dalam paket SOT23-6.

Chip 32-bit, karena mereka umumnya clock lebih cepat, dan melakukan lebih banyak, mengkonsumsi daya lebih banyak daripada chip 8-bit kecil. Baterai menguras lebih cepat, sistem tenaga harus menyediakan lebih banyak arus (dan karenanya menjadi lebih mahal), dll.

Lagi pula, mengapa Anda membeli raksasa untuk mengambil secangkir gula di sebelah?


2
Bandingkan saja dua chip dari pabrikan yang sama - misalnya PIC18F25K20 dan PIC32MX250F512 dari Microchip. Keduanya MCU modern. Kedua lembar data memiliki kecepatan Idd vs jam. Grafik 8 bit bertengger di atas 5mA, 32-bit bertengger pada 20mA. Jika Anda memikirkannya, operasi 8 bit akan melakukan sesuatu untuk 8 kait - 32 bit akan melakukan hal yang sama (atau setara) ke 32 kait. Itu 4 kali kait yang harus dimanipulasi, jadi 4x konsumsi umum saat ini.
Majenko

2
Idle saat ini untuk 32 bit adalah antara ~ 0,5mA dan 7mA. Grafik 8 bit untuk arus idle diukur pada skala μA dan keluar pada 7μA - hanya 4μA saat dijalankan pada suhu kamar normal ...!
Majenko

3
Gali beberapa lembar data dan cari sendiri.
Majenko

2
Itu dengan asumsi bahwa semua chip lakukan adalah memproses. Hal-hal yang memerlukan waktu yang tidak tergantung pada kecepatan chip, seperti membaca data dari sensor eksternal, dll. CPU 32-bit 80MHz tidak akan membaca perangkat I2C 100KHz lebih cepat daripada CPU 8M 16MHz.
Majenko

3
Jangan lupa perangkat lunak lawas (terutama untuk sistem yang membutuhkan sertifikasi) dan keakraban pengembang, pemilihan komponen periferal / RAM / flash (desain mikrokontroler dengan prosesor berkinerja lebih tinggi akan menggunakan lebih banyak area chip untuk memori; Cortex-M dengan 256 byte RAM) sepertinya tidak mungkin dalam waktu dekat), dan pilihan paket / tegangan. Sebuah jawaban yang baik juga harus menjelaskan mengapa pasar 16-bit tidak melakukan lebih baik (dan ISA 8-bit yang lebih modern seperti AVR) dan mengapa pasar 4-bit tampaknya sangat terbatas (jam tangan dan apa lagi?).
Paul A. Clayton

2

Aplikasi UC yang saya kembangkan untuk produk komersial hampir tidak pernah menangani ukuran data yang lebih besar dari 8 bit; jadi bahkan jika 32-pahit adalah harga yang sama dengan 8-pahit, masih tidak ada manfaatnya. Seperti yang orang lain katakan, kita mencari apa yang akrab, sehingga kita bisa membuangnya lebih cepat. Namun yang terakhir saya kembangkan ternyata mendorong PIC16 yang saya gunakan hingga batasnya dalam segala hal - tapi itu bukan karena ukuran data. Jika saya melakukan hal seperti itu lagi, maka saya benar-benar harus belajar ARM.


Saya kira bahwa untuk sebagian besar aplikasi mikro-kecil ukuran data terbesar yang dibutuhkan adalah 16 bit atau mungkin 24. Sebagian besar aplikasi tidak perlu melakukan banyak hal dengan hal-hal yang lebih besar dari 8 bit, tetapi mereka harus melakukan sesuatu. Di sisi lain, hampir setiap mikrokontroler 8-bit yang pernah dibuat (jika tidak benar-benar setiap) memiliki flag carry yang memungkinkan untuk menggunakan urutan operasi untuk melakukan 16-bit (atau bahkan lebih besar).
supercat

2

Saya berharap bahwa chip ARM akan mengambil alih sebagian besar fungsi di mana sesuatu berperilaku seperti "komputer". Di sisi lain, banyak mikrokontroler 8-bit membiasakan diri untuk melakukan hal-hal yang dapat dilakukan dengan perangkat logika yang dapat diprogram yang relatif sederhana atau jumlah gerbang yang moderat, tetapi sebenarnya dapat dilakukan lebih murah dan / atau dengan penarikan yang kurang saat ini menggunakan mikro 8-bit sederhana. Ketika merancang aplikasi yang lebih rumit, sering kali lebih mudah menggunakan mikro 32-bit daripada yang 8-bit, tetapi jika seluruh tujuan chip adalah untuk, mis. Menonton dan men-debo input tertentu dan, jika naik tinggi, mulailah menghasilkan 200 pulsa pada output tertentu pada interval 1 ms, kemudian 100 pada interval 2 ms, kemudian 100 pada 3 ms, kemudian berhenti selama 100 ms, dan terus lakukan itu sampai inputnya rendah, merancang kode untuk itu mungkin sebenarnya lebih mudahpada mikro 8-bit daripada pada 32-bit. Perbedaan biaya antara mikro 8-bit dan 32-bit mungkin tidak lagi cukup dalam banyak kasus untuk membenarkan pengeluaran upaya rekayasa tambahan untuk membuat proyek "cocok" dalam mikro 8-bit, tetapi dalam kasus di mana bagian 32-bit tidak akan tidak akan menghemat upaya rekayasa tidak ada alasan untuk menghabiskan bahkan satu sen ekstra.


Saya setuju, tetapi tunjukkan bahwa mempertahankan dan tetap mahir dengan dua toolchain melibatkan upaya rekayasa sendiri.
Scott Seidman

2
@ScottSeidman: Benar. Di sisi lain, mungkin juga layak disebutkan bahwa beberapa mikro 8-bit dapat mulai menjalankan kode segera pada power-up, sedangkan mikro 32-bit yang saya lihat membutuhkan waktu lebih lama.
supercat

Saya ingin tahu apakah kita akan melihat lisensi ARM keluar dari platform 8-bit. Ada beberapa fitur luar biasa dari implementasi ARM, seperti kemampuan untuk tidak clock seluruh peripheral dan bus, yang seharusnya membuat 8-bit ARMS run ring di sekitar platform lain dalam hal daya hisap. Jika mfct membuat perpustakaan yang sesuai dengan CMSIS, saya pikir mereka akhirnya akan menghapus para pemain besar.
Scott Seidman

@ScottSeidman: Sebenarnya, apa yang ingin saya lihat adalah desain yang dapat memiliki bagian periferal yang peka terhadap waktu (mis. Timer, generator baud-rate, dll.) Dijalankan dengan basis waktu konstan yang tidak tergantung pada kecepatan CPU , tapi saya hanya melihat dukungan minimal untuk konsep seperti itu. Tidak akan sulit dalam silikon, tetapi saya kira alat sintesis tidak memiliki sarana untuk melakukan hal-hal seperti itu secara efisien.
supercat

@ supercat Saya tidak yakin tentang mikrokontroler lain, tetapi PIC32 memiliki konsep jam bus periferal yang dapat diatur ke kecepatan jam yang berbeda dari jam utama. Jadi Anda dapat mengubah kecepatan CPU, misalnya untuk menghemat daya, dan masih menyimpan jam PB yang sama sehingga Anda tidak harus memprogram ulang semua kecepatan baud periferal Anda, dll.
tcrosley

1

Sementara saya setuju bahwa biaya CPU dan konsumsi daya adalah alasan utama, satu pertimbangan lagi yang belum saya lihat tercantum di sini adalah ruang PCB. Untuk banyak jenis sistem tertanam, seperti, katakanlah, skala kamar mandi elektronik, tidak ada banyak kebutuhan untuk I / O, tidak ada manfaat untuk ukuran bus yang lebih besar dan tidak ada manfaat untuk pemrosesan yang lebih cepat. Namun, ada yangmanfaat untuk paket yang lebih kecil dengan pin lebih sedikit karena membuat tata letak dan perutean papan sirkuit cetak lebih sederhana dan sering kali lebih kecil. Jika papan dapat dirancang sebagai papan 2-lapisan daripada papan 4-lapisan, ada penghematan biaya yang cukup besar, dan jumlah pin yang lebih kecil yang sering datang dengan prosesor 8-bit cenderung memfasilitasi penghematan yang lebih mudah daripada 32- prosesor bit yang umumnya memiliki lebih banyak pin dan paket yang secara fisik lebih besar.


Anda sadar ini pertanyaan lama 2 1/2 tahun, bukan?
Olin Lathrop

@ Olin sudut pandang lain tidak ada salahnya.
m .lin

@ OlinLathrop: ya, clock / kalender 8-bit yang digerakkan oleh CPU saya berfungsi dengan baik. :)
Edward

0

Bahkan dalam dunia 8 bit, tipe yang lebih baru diketahui membutuhkan waktu yang sangat lama untuk mengambil alih tipe yang lebih tua - lihat MCS51 masih hidup di ceruknya dan MCS48 masih ditemukan di tempat-tempat yang tidak terduga.

Dalam banyak kasus, perubahan tidak terjadi karena tidak membawa nilai tambah, dan disertai dengan biaya mempelajari teknologi baru yang belum terbukti tetap ada dan / atau diharapkan masih menjadi target yang bergerak (yang membuat ini menarik bagi orang-orang yang ingin fokus pada teknologi MCU tetapi menjengkelkan bagi orang-orang yang ingin fokus pada aplikasi mereka dan tidak terus-menerus memperbaiki dan menguji ulang perangkat lunak produksi untuk mengadaptasi ARM vintage tahun ini!). Bagi sebagian orang, komponen yang tidak lagi dikembangkan sudah usang, bagi yang lain komponen itu akhirnya menjadi stabil , dan sementara itu mungkin perlu solusi untuk bug yang tumbuh ke dalam, itu setidaknya menyediakan platform yang stabil untuk ini. Aliran lahar tidak selalu merupakan antipattern yang menjadi retak - cenderung membuat gunung tetap ...

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.