Mengapa perangkat yang relatif lebih sederhana seperti mikrokontroler jauh lebih lambat daripada CPU?

25

Dengan jumlah tahapan pipa yang sama dan simpul produksi yang sama (katakanlah, 65 nm) dan tegangan yang sama, perangkat sederhana harus berjalan lebih cepat daripada yang lebih rumit. Juga, menggabungkan beberapa tahapan pipa menjadi satu tidak boleh melambat oleh faktor parutan daripada jumlah tahapan.

Sekarang ambil CPU berusia lima tahun, menjalankan 14 tahap pipa pada 2,8 GHz. Misalkan seseorang menggabungkan tahapan; yang akan melambat hingga di bawah 200 MHz. Sekarang tambah tegangan dan kurangi jumlah bit per kata; yang sebenarnya akan mempercepat segalanya.

Itu sebabnya saya tidak mengerti mengapa banyak mikrokontroler yang diproduksi saat ini, seperti AVL, berjalan pada kecepatan yang sangat buruk (seperti 20 MHz pada 5 V), meskipun jauh lebih rumit CPU yang diproduksi tahun lalu mampu berjalan 150x lebih cepat, atau 10x lebih cepat jika Anda menggulung semua tahapan pipa menjadi satu, pada 1,2 V-ish. Menurut perhitungan back-of-the-envelope yang paling kasar, mikrokontroler — bahkan jika diproduksi menggunakan teknologi usang perbatasan — harus berjalan setidaknya 10x lebih cepat pada seperempat tegangan yang disuplai.

Jadi pertanyaannya: Apa alasan laju clock mikrokontroler lambat?

Michael
sumber
8
Sejumlah besar mikrokontroler diproduksi dengan teknologi usang karena fab dibayar.
Matt Young
18
Kekuasaan. Faktor dalam konsumsi daya kedua CPU dan mereka akan cukup dekat dengan kinerja / watt yang sama, atau mikro akan menang.
Brian Drummond
34
Gagasan bahwa == lebih cepat lebih cepat adalah salah. Banyak kerumitan cisc CPU modern masuk ke fitur untuk membuatnya lebih cepat, seperti cache multi level, jalur pipa dan prediksi cabang
PlasmaHH
1
CPU lama itu tidak beroperasi dari baterai kecil selama berbulan-bulan / tahun. menggunakan teknologi canggih (baca: mahal) untuk zamannya. tidak harus menunggu pada flash lambat / murah untuk setiap instruksi. jarang ada kebutuhan untuk MCU berjalan cepat, mereka dapat mengambil beberapa Verilog baru demi para pengembang dan menerapkannya pada pengecoran apa pun. Saya suka komentar sepeda vs formula 1 mobil terbaik, saya pikir itu merangkumnya.
old_timer
14
20 MHz sama sekali tidak lambat. Kami hanya dimanjakan oleh kecepatan GHz untuk PC, di mana sebagian besar sumber daya digunakan untuk rendering grafik mewah. Anda dapat terbang ke Bulan dengan prosesor Kilohertz ...
vsz

Jawaban:

66

Ada faktor lain yang berkontribusi terhadap kecepatan.

  • Memori: Kinerja aktual seringkali dibatasi oleh latensi memori. CPU Intel memiliki cache besar untuk menebus ini. Mikrokontroler biasanya tidak. Memori flash jauh lebih lambat daripada DRAM.

  • Konsumsi daya: Ini sering menjadi masalah besar dalam aplikasi embedded. CPU Intel 200 MHz yang sebenarnya mengonsumsi lebih dari 10 watt (sering lebih banyak), dan membutuhkan pendingin dan kipas besar. Itu membutuhkan ruang dan uang, dan itu bahkan tidak menghitung logika eksternal dan memori yang menyertainya. Sebuah 20 MHz AVR membutuhkan waktu sekitar 0,2 watt, yang mencakup semua yang anda butuhkan. Ini juga terkait dengan proses - transistor yang lebih cepat cenderung lebih lemah.

  • Kondisi pengoperasian: Seperti yang ditunjukkan Dmitry dalam komentar, banyak mikrokontroler dapat beroperasi pada tegangan dan rentang suhu yang lebar. ATMega yang saya sebutkan di atas bekerja dari -40C hingga 85C, dan dapat disimpan apa saja dari -65C hingga 150C. (MCU lain berfungsi hingga 125C atau bahkan 155C.) Tegangan VCC bisa apa saja mulai dari 2.7V hingga 5.5V (5V +/- 10% untuk kinerja puncak). Lembar data Core i7 ini sulit dibaca karena mereka memangkas VCC yang diizinkan selama pembuatan, tetapi toleransi tegangan dan suhu tentu saja lebih sempit - ~ 3% toleransi tegangan dan suhu persimpangan 105C maks. (Minimum 5C, tetapi ketika Anda menarik> 100 amp, suhu minimum tidak terlalu menjadi masalah.)

  • Hitungan gerbang: Lebih sederhana tidak selalu lebih cepat. Jika ya, Intel tidak membutuhkan arsitek CPU! Bukan hanya pipelining; Anda juga membutuhkan hal-hal seperti FPU berkinerja tinggi. Itu mendongkrak harga. Banyak MCU low-end memiliki CPU integer-only untuk alasan itu.

  • Anggaran area mati: Mikrokontroler harus menyesuaikan banyak fungsi menjadi satu mati, yang seringkali mencakup semua memori yang digunakan untuk aplikasi. (SRAM dan flash NOR yang dapat diandalkan cukup besar.) CPU PC berbicara dengan memori dan periferal off-chip.

  • Proses: AVR 5V tersebut dibuat pada proses berbiaya rendah kuno. Ingat, mereka dirancang dari bawah ke atas untuk menjadi murah. Intel menjual produk konsumen dengan margin tinggi menggunakan teknologi terbaik yang dapat dibeli dengan uang. Intel juga menjual CMOS murni. Proses MCU perlu menghasilkan memori flash on-chip, yang lebih sulit.

Banyak faktor di atas terkait.

Anda dapat membeli mikrokontroler 200 MHz hari ini ( ini contohnya ). Tentu saja, biayanya sepuluh kali lipat dari 20 ...

Versi singkatnya adalah kecepatan lebih rumit daripada kesederhanaan, dan produk murah dioptimalkan untuk murah, bukan kecepatan.

Adam Haun
sumber
11
Jangan lupa kekokohannya: CPU tipikal akan gagal jika voltase pasokan berubah lebih dari 5% atau lebih, sementara ATMega beroperasi dari apa pun dalam kisaran 1,8-5,5V pada 4MHz.
Dmitry Grigoryev
1
@DmitryGrigoryev Poin bagus! Saya telah memperbarui jawaban saya.
Adam Haun
25

Alasan teknis utama yang mendasari untuk kecepatan lambat adalah bahwa MCU murah / kecil hanya menggunakan memori flash on-chip untuk penyimpanan program (yaitu mereka tidak mengeksekusi dari RAM).

MCU kecil umumnya tidak menyimpan memori program, sehingga mereka selalu perlu membaca instruksi dari flash sebelum mereka menjalankannya, setiap siklus. Ini memberikan kinerja dan siklus / operasi deterministik, hanya lebih murah / sederhana, dan menghindari masalah seperti PC di mana kode dan data dicampur menciptakan serangkaian ancaman baru dari buffer overflows, dll.

Latensi pembacaan dari memori flash (pada urutan 50-100ns) jauh lebih lambat daripada membaca dari SRAM atau DRAM (pada urutan 10ns atau di bawah), dan latensi itu harus dikeluarkan setiap siklus, membatasi kecepatan jam dari bagian.

compumike
sumber
4
Juga daya (dan karenanya panas) meningkat lebih dari linear dengan frekuensi.
Kimberly W
1
Saya tidak berpikir membaca dari flash mendekati 100 ns, bukan? IIRC itu dua perintah besarnya lebih besar. Namun, jika pengontrol flash Anda berisi cache DRAM kecil, dan kodenya tidak terlalu bercabang, tingkat hit cache bisa sangat tinggi (90% +) sehingga latensi rata-rata Anda bisa jauh lebih rendah.
MSalters
2
Lembar data AT91SAM7S yang telah saya buka mengatakan untuk flash internal "Waktu akses cepat, akses siklus tunggal 30 MHz dalam kondisi Kasus Terburuk" untuk flash internal. Itu 33ns. Dan ia memiliki satu kata penyangga prefetch. Off-die Flash mungkin memang memiliki latensi yang lebih tinggi.
pjc50
1
@ Jamil Saya tidak ingat rumus yang tepat, tapi saya percaya itu kuadrat dari frekuensi.
Jan Dorniak
22

Mengapa orang mengendarai sepeda atau sepeda motor kecil, ketika Anda memiliki mobil Formula 1? Tentunya itu harus lebih baik untuk berkendara katakanlah 300 km / jam dan pergi ke mana saja secara instan?

Sederhananya, tidak perlu lebih cepat dari mereka. Maksudku, tentu saja ada sedikit dan lebih cepat mikrokontroler memungkinkan beberapa hal, tetapi apa yang akan Anda lakukan dalam mengatakan mesin penjual otomatis yang digunakan terus menerus untuk mungkin 1 jam sehari? Apa yang akan Anda lakukan dalam kendali jarak jauh untuk TV?

Di sisi lain, mereka memiliki kemampuan penting lainnya, seperti konsumsi daya yang rendah, JAUH lebih sederhana untuk diprogram dan sebagainya. Pada dasarnya, mereka bukan prosesor dan melakukan hal yang berbeda.

AndrejaKo
sumber
12
@Michael Di mana Anda mendapatkan idenya sederhana = cepat?
Matt Young
3
@Michael Sepeda jauh lebih sederhana daripada mobil, tapi masih lebih lambat. Bagaimanapun, Matt benar. Sesuatu yang sederhana tidak otomatis cepat. Dengan kata lain, sesuatu yang cepat akan menjadi rumit, hanya karena pertimbangan yang diperlukan untuk frekuensi yang lebih tinggi.
AndrejaKo
2
Prosesor CISC berkinerja tinggi cenderung mengeluarkan lebih banyak instruksi yang tertanam pada prosesor. Mereka melakukan lebih banyak pekerjaan secara paralel, sehingga keduanya lebih kompleks dan lebih cepat.
Kimberly W
2
@Michael $ 1 bisa jadi mahal untuk beberapa aplikasi, saya pernah membaca bahwa pengontrol mikro dalam kartu micro SD berharga sekitar 19 sen
Xen2050
2
@Michael "itulah gagasan di balik arsitektur RISC: tugas-tugas sederhana dapat ditangani lebih cepat daripada yang rumit" Tidak! Arsitektur RISC modern sangat kompleks karena mereka harus memperkenalkan lebih banyak instruksi (seperti SIMD) dan mendukung lebih banyak fitur seperti superscalar, hyperthreading, eksekusi out-of-order ... Kompleksitasnya dapat dengan mudah melebihi arsitektur CISC. MIPS saat ini memiliki ratusan atau ribuan instruksi. "CISC v RISC sebagian besar merupakan debat sejarah"
phuclv
13

Ada banyak pengontrol ARM yang beroperasi pada ratusan MHz atau lebih. Siapa yang butuh PIC 500 MHz dan bersedia membayar cukup per bagian untuk membenarkan masker juta dolar untuk proses yang canggih?

ATmega328 yang populer dilaporkan dibuat dengan teknologi 350 nm, yang sedikit di belakang CPU Intel produksi terbaru (14 nm untuk Skylake ).

Bahkan pengontrol 8-bit cheapie perlahan-lahan telah meningkat dengan cepat, dan Anda bisa mendapatkan pengontrol PIC 32 dan 64 MHz (misalnya, PIC18F14K22) yang masih beroperasi pada 5 V (yang terakhir merupakan pertimbangan dalam biaya total sistem).

Satu pertimbangan adalah bahwa pengendali ini memiliki arsitektur yang dioptimalkan untuk ruang memori kecil dan kecepatan clock lambat. Setelah Anda mulai masuk ke kecepatan clock tinggi Anda harus menyatukan kembali hal-hal dengan prescaler, dll.

Ada upaya yang dilakukan jauh (akhir 1990-an) untuk menghasilkan pengontrol seperti PIC sangat cepat, dengan gagasan bahwa firmware dapat menggantikan periferal jika mikrokontroler cukup cepat. Misalnya, Anda dapat menggigit bang UART. Saya tidak berpikir mereka semua yang sukses secara komersial- Scenix-> Ubicom-> Qualcomm (game over).

Spehro Pefhany
sumber
350 nm? Itu akan menjelaskannya. Tidak tahu bahwa ada orang yang akan memproduksi apa pun menggunakan teknologi berusia 20 tahun.
Michael
3
Beberapa dari kita masih merancang (tidak hanya menggunakan) 4000 seri CMOS yang kira-kira seperti 3000nm.
Spehro Pefhany
6
Proses yang lebih lama juga berpotensi bermanfaat bagi orang yang berurusan dengan lingkungan radiasi, atau sistem dengan keandalan tinggi yang menuntut keterlacakan.
Krunal Desai
5
Game not over - Parallax Propeller adalah kelanjutan dari konsep itu.
Dave Tweed
3
@Michael: Ini bukan hanya zaman teknologi. Ukuran juga penting. Ukuran proses yang lebih besar memiliki tingkat cacat yang lebih rendah yang berarti penolakan yang lebih rendah dan hasil yang lebih tinggi - yang mengarah pada biaya per chip yang lebih rendah. Jika Anda bersedia membayar $ 100 untuk CPU (seperti desktop) maka biaya yang lebih tinggi karena hasil yang lebih rendah dibenarkan. Jika Anda hanya bersedia membayar 50 sen maka itu tidak dibenarkan.
slebetman
3

Bayangkan seseorang ingin memproduksi mobil. Salah satu pendekatan adalah dengan menggunakan banyak peralatan di pabrik secara berurutan, membangun satu mobil pada suatu waktu. Pendekatan ini dapat dilakukan dengan jumlah peralatan yang cukup rumit, banyak peralatan yang dapat digunakan untuk melakukan lebih dari satu langkah. Di sisi lain, sebagian besar peralatan di pabrik akan tetap diam sebagian besar waktu.

Pendekatan lain adalah mengatur jalur perakitan, sehingga segera setelah peralatan yang menangani langkah pertama produksi telah menyelesaikan operasi pada mobil pertama, maka dapat melanjutkan untuk memulai operasi yang sesuai pada mobil berikutnya. Mencoba menggunakan kembali satu peralatan pada beberapa tahap dalam proses pembuatan akan menjadi rumit, jadi dalam kebanyakan kasus akan lebih baik untuk menggunakan lebih banyak peralatan yang masing-masing dioptimalkan untuk melakukan satu tugas yang sangat spesifik (mis. Jika perlu untuk mengebor 50) lubang 10 ukuran berbeda, maka pengaturan peralatan minimal akan mencakup satu bor dengan 10 bit dan mekanisme perubahan cepat, tetapi jalur perakitan masing-masing dapat memiliki 50 bor dengan satu bit yang terpasang secara permanen dan tidak perlu perubahan cepat) .

Untuk hal-hal seperti DSP atau GPU, dimungkinkan untuk mencapai kecepatan yang sangat tinggi relatif murah karena sifat pekerjaan yang dilakukan sangat konsisten. Sayangnya, banyak CPU harus mampu menangani kesalahan instruksi yang berbeda-beda dengan kompleksitas yang berbeda. Melakukan itu secara efisien adalah mungkin, tetapi membutuhkan logika penjadwalan yang sangat kompleks. Dalam banyak CPU modern, logika yang diperlukan untuk "bekerja" tidak terlalu rumit atau mahal, tetapi logika yang diperlukan untuk mengoordinasikan semua yang lain, adalah.

supercat
sumber
2
Maaf jika saya melewatkannya, tetapi apa relevansinya dengan CPU vs mikrokontroler yang lebih lambat? Tampaknya hanya berfokus pada prosesor khusus vs CPU (biasanya lebih cepat).
underscore_d
1
@underscore_d: Paragraf pertama mencakup mikrokontroler yang lebih sederhana - mereka seperti toko kecil yang membuat satu mobil sekaligus. Paragraf kedua mencatat bahwa ada beberapa pengontrol murah yang dapat melakukan banyak operasi dengan sangat cepat, tetapi terbatas dalam jenis operasi yang dapat mereka lakukan. Apa yang sulit adalah mampu melakukan campuran operasi sembarang sambil tumpang tindih mereka ke tingkat yang signifikan (tetapi sangat bervariasi). Jika seseorang memiliki subsistem yang pada setiap siklus dapat menerima dua angka dan akan menampilkan produk dari dua angka yang diajukan empat siklus yang lalu, dan ...
supercat
1
... yang lain yang pada setiap siklus akan menerima dua angka dan mengeluarkan jumlah dari yang telah dikirimkan dua siklus yang lalu, mencoba untuk mencari tahu kapan nilai-nilai perlu diserahkan, kapan hasilnya akan tersedia, kapan barang-barang harus diambil dari dan disimpan untuk register, dll bisa menjadi sangat rumit, terutama jika seseorang ingin menghindari padding semua pipa agar sesuai dengan yang terpanjang.
supercat
Terima kasih; yang membersihkannya. Ya, masuk akal bahwa CPU serba guna cepat mengeluarkan sebagian besar biaya mereka, baik finansial dan energi, pada 'perancah' - perpipaan, cache, penjadwalan, kontrol RAM, dll. Hal-hal yang tidak hanya mahal tetapi juga seringkali tidak diperlukan untuk micros. Sama, itu tidak pernah berhenti membuat saya takjub apa yang dapat dilakukan dengan frekuensi clock yang relatif kecil dalam prosesor yang khusus dirancang untuk satu aplikasi. Hal-hal menarik di kedua sisi!
underscore_d
@underscore_d: Arsitektur MIPS dirancang pada premis bahwa kompiler akan bertanggung jawab atas beberapa masalah penjadwalan, sehingga memungkinkan perangkat keras untuk disederhanakan. Konsep itu tidak pernah benar-benar menarik, saya pikir, karena prosesor yang lebih baru sering memerlukan lebih banyak tahapan pipa daripada yang lama, tetapi kode yang ditulis untuk prosesor dengan pipa yang lebih pendek tidak akan bekerja pada prosesor dengan yang lebih lama tanpa adanya kunci perangkat keras.
supercat