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?
Jawaban:
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.
sumber
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.
sumber
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.
sumber
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).
sumber
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.
sumber