Ini adalah topik besar dan saya tidak bisa memberikan jawaban yang sederhana tetapi ...
Anda dapat sedikit lebih dekat dengan jawaban ini dengan melakukan beberapa pemecahan dan penaklukan, dan karena jawaban yang lain mencoba untuk menyerang masalah ini dari sudut pandang hw, saya akan mencoba dari sudut pandang SW tingkat tinggi.
Jika Anda menulis beberapa perangkat lunak dalam misalkan kode c (tingkat abstraksi yang sangat tinggi), Anda tidak benar-benar melihat apa yang terjadi tidak benar-benar memahami semua hal kekasih yang Anda tanyakan.
Tapi mari kita mulai dari sana.
Program sederhana yang hanya menyertakan variabel.
int main(void)
{
int i=0;
while(1) {
i++;
}
}
Maka kita perlu mendapatkan kode assembler sehingga kita bisa mengerti apa yang sedang terjadi. Langkah ini dapat dilakukan pada platform apa pun yang Anda gunakan, tetapi untuk membuatnya lebih sederhana, saya menggunakan gcc pada pc (tetapi tidak masalah ...)
gcc -O0 -S main.c -o main.lst
Lalu kita berakhir dengan sesuatu seperti ini:
.file "main.c"
.text
.globl main
.type main, @function
main:
pushl %ebp
movl %esp, %ebp
subl $16, %esp
movl $0, -4(%ebp)
.L2:
addl $1, -4(%ebp)
jmp .L2
.size main, .-main
.ident "GCC: (Ubuntu 4.4.3-4ubuntu5) 4.4.3"
.section .note.GNU-stack,"",@progbits
Kemudian Anda mencoba memahami setiap baris kode dan apa fungsinya.
Dan kemudian Anda mulai melihat ke dalam bagaimana setiap instruksi dilaksanakan ... Misalnya subl
subl $16, %esp
Pada titik ini berbeda pada arsitektur yang berbeda dan x86, lengan, pic agak berbeda ... Tapi karena contoh saya adalah x86.
Dan pada tingkat ini ketika Anda membaca salinan sebagian besar tindakan akan terlihat seperti Anda hanya bergerak angka, dan dalam beberapa hal inilah yang terjadi. Kami memiliki program standar yang kami lewati, program ini menyimpan dalam beberapa jenis memori flash yang biasanya semacam logika elektronik yang akan menjebak satu tingkat logika.
Jika Anda melihat semacam " Flip-flop " untuk setiap bit maka Anda agak dekat, dan kemudian kami membutuhkan banyak dari itu. Di sini kita mulai menemukan yang dan nol.
Kemudian agar beberapa tindakan terjadi, kami menambahkan beberapa logika keren yang dapat mengubah satu angka menjadi angka lain (CPU itu sendiri).
Dan kemudian kita mengikuti program satu langkah pada satu waktu, dan untuk mengetahui di mana kita berada kita memiliki penghitung program (PC). Dan memindahkan angka ke belakang dan keempat dan menyimpannya di memori lain yang juga merupakan jenis grid dengan sandal jepit.
Tapi mari kita kembali ke beberapa contoh spesifik lagi, untuk memahami CPU sedikit lebih baik kita bisa melihat ALU dan gambar yang disederhanakan ini . Di mana Anda dapat melihat bahwa ketika kami memindahkan data ke blok logika ini dan memilih beberapa operasi dengan pin OP, kami akan mendapatkan hasil baru pada output. Bahwa kita pada gilirannya dapat pindah kembali ke suatu tempat di memori.
Dan mengutuk ALU Anda di bagian CPU MCU Anda jauh lebih kompleks daripada yang ini, tetapi beroperasi dengan prinsip dasar yang sama.
Pada titik ini kita dapat melihat beberapa rangkaian logika yang melakukan "pekerjaan" di satu sisi, dan beberapa penyimpanan di sisi lain. Dan penyimpanan memiliki dua bagian, satu untuk program dan satu untuk data. Tapi bagaimana kita sebenarnya "bergerak" kalau begitu, mereka harus terhubung dengan beberapa cara ...
Dan di sinilah kita menghubungkan bagian-bagian itu dengan bus.
Bus hanyalah beberapa kabel yang menghubungkan bagian-bagian yang berbeda bersama-sama, dan kemudian logika kontrol memberi tahu memori data apa yang akan dikirim ke bus ini, dan bagian mana dari CPU yang harus mendengarkan data ini yang dikirim. Dan ini dilakukan dengan beberapa garis kontrol paralel yang akan mengaktifkan / menonaktifkan bagian yang berbeda.
...
Jadi, jika Anda memilih MCU pilihan Anda dan membedah program yang sangat kecil, dan selama Anda tidak mengerti apa yang terjadi, Anda membedahnya lebih banyak lagi sampai Anda memiliki puzzle kecil yang bagus yang dapat digunakan untuk membuat "MCU".
Dan jangan lupa untuk membaca lembar data untuk MCU Anda dan lihatlah bagian apa yang dibuatnya, seperti jenis memori, alu, bus dll.
Semoga ini bisa membantu sedikit ???
Semoga berhasil