Micro-code adalah level abstraksi lain di luar kode mesin. CPU sebenarnya menjalankan mikrokode, dan mesin terjemahan mengubah kode mesin menjadi mikrokode saat itu juga. Ini dilakukan karena berbagai alasan, termasuk prosesor yang lebih cepat, lebih kecil, lebih mudah untuk membuat prosesor yang kompleks dengan sedikit debugging, dan untuk kompatibilitas ke belakang. Sebagai contoh, set instruksi x86 berisi beberapa instruksi pemrosesan string yang jarang digunakan. Namun, agar tetap kompatibel, mereka masih harus tersedia di prosesor x86 modern. Alih-alih menggunakan jalur eksekusi untuk instruksi ini, mereka dikonversi menjadi mikrokode dan dieksekusi. Ini menghemat silikon, sementara masih tetap kompatibel ke belakang.
Di mana kedua jenis program berada saat dieksekusi?
Kode mesin berada di cache (setelah ditarik dari RAM). Kode mikro berada dalam cache kode mikro, tergantung pada arsitektur mesin tertentu. Cache mungkin hanya cukup besar untuk menampung cukup mikrokode untuk menahan mikrokode yang dikonversi dari instruksi kode mesin terbesar yang ada, atau mungkin juga cache yang lebih besar yang menyimpan hasil konversi dari banyak kode mesin sehingga tidak perlu mengubah semua kode mesin pada setiap iterasi untuk loop kecil.
Dalam beberapa arsitektur mikrokode yang dikonversi tidak disimpan di mana pun - unit ambil / terjemahkan dengan mudah mengeluarkan serangkaian instruksi mikrokode berdasarkan pada kode mesin yang saat ini mengeksekusi. Dalam hal ini mikrokode mengeksekusi dari ROM, dan kode mesin pada dasarnya adalah indeks ke dalam ROM - menunjuk ke seri instruksi mikrokode yang harus dijalankan untuk sepenuhnya menjalankan instruksi kode mesin.
Apakah ada yang memiliki pemetaan 1: 1 untuk instruksi assembly true-op language?
Kode mesin dan kode rakitan, secara umum 1: 1 dipetakan ke instruksi rakitan. Itu tergantung pada assembler. Perakit tingkat tinggi mungkin memiliki seperangkat makro besar yang memungkinkan seseorang untuk menulis satu baris kode rakitan dan assembler akan menghasilkan beberapa kode mesin.
Tetapi secara umum bahasa assembly "murni" dapat dikonversi secara langsung menjadi kode mesin menggunakan tabel set instruksi di manual prosesor.
Saya tidak yakin apa yang Anda maksud dengan "instruksi true-op". Mungkin Anda bisa menjelaskan rujukannya.
Apakah format keduanya ditentukan oleh arsitektur prosesor?
Format kode mesin dan mikrokode ditentukan oleh arsitektur prosesor.