[NB: jawaban ini secara khusus ditujukan untuk mengatasi pengeditan terakhir dan jika tidak menambahkan ke beberapa jawaban suara yang telah diposting.]
Jadi, untuk mengulangi: mikrokode (setidaknya ke perkiraan pertama) adalah jenis firmware tertentu.
"Microcode" dalam konteks ini hanya pemasaran lebih dari "firmware prosesor."
Yah, itu bukan pemasaran. Pemasaran akan menyebutnya XBoost Pro (TM) atau sesuatu. Sebaliknya, ini adalah istilah teknik; jika Anda mendesain CPU, perbedaan antara mikrokode dan firmware lain CPU (dan jenis firmware yang khas untuk perangkat lain) penting bagi Anda. Jika tidak, mungkin tidak.
Jika Anda mendesain motherboard atau menulis sistem operasi, Anda mungkin menggunakan "pembaruan mikrokode" sebagai singkatan untuk "pembaruan firmware CPU" yang lebih sulit dan kurang dikenal. Sebagian besar pembaruan firmware CPU mempengaruhi mikrokode, sehingga cukup dekat untuk hal yang sama. Anda mungkin tahu bedanya, tetapi Anda tidak perlu mempedulikannya .
Pengguna akhir tidak perlu tahu atau peduli tentang perbedaannya, dan di dunia yang ideal tidak akan pernah mendengar kata "mikrokode" sama sekali.
Saya kira itu menjadi perhatian Anda dalam liputan pers tentang kerentanan eksekusi spekulatif baru-baru ini, meskipun Anda mungkin juga pernah mendengarnya sebelumnya dalam konteks yang membuatnya lebih jelas bahwa Anda tidak perlu peduli. Kerentanan ini dirilis lebih awal dari yang direncanakan yang mungkin mengakibatkan liputan pers kurang kurasi dari yang seharusnya. Dari sudut pandang pengguna akhir, Anda perlu menginstal pembaruan BIOS, pembaruan sistem operasi, dan dalam beberapa kasus pembaruan aplikasi; Anda tidak perlu tahu atau peduli yang jika semua ini termasuk mikrokode baru.
Jadi, bahkan menyadari bahwa Anda mungkin tidak perlu tahu atau peduli, Anda mungkin masih tertarik dengan rasa ingin tahu yang murni: bagaimana Anda bisa membedakan mikrokode dari firmware lain?
Nah, hal pertama yang harus dikenali adalah bahwa tidak ada definisi tunggal yang keras dan cepat, itu lebih merupakan situasi Bleggs and Rubes . Namun, ada beberapa hal yang dapat kami katakan tentang mikrokode:
Mikrokode umumnya berjalan di dalam CPU dan bukan pada CPU. Itulah pandangan tingkat tinggi.
Arsitektur mikrokode biasanya terlihat sangat berbeda dengan arsitektur kode biasa, termasuk firmware biasa. Ini mungkin sangat paralel, dan diimplementasikan lebih dekat ke perangkat keras. Beberapa jawaban yang ada (termasuk jawaban Anda sendiri) membahas hal ini, meskipun perlu dicatat bahwa detailnya dapat bervariasi tergantung pada desain CPU.
Meskipun perangkat keras sering dirancang untuk hanya menjalankan firmware yang disediakan oleh pabrikan, perangkat ini tidak jarang digunakan untuk firmware pihak ketiga - meskipun mungkin akan membatalkan garansi! Mikrokode pihak ketiga jauh lebih jarang, meskipun saya percaya bahwa di zaman kuno (saya berbicara tentang kapan CPU seukuran kotak roti) beberapa pengguna akhir akan memodifikasi mikrokode dalam CPU mereka. Sejauh yang saya ketahui, ini tidak mungkin dalam jenis CPU yang digunakan di PC.
Microcode biasanya menerjemahkan atau membantu mengimplementasikan arsitektur set instruksi publik, yaitu menjalankan kode mesin yang digunakan oleh perancang sistem operasi dan pemrogram aplikasi. Lebih lanjut tentang ini di bagian selanjutnya.
"Eksekusi vs data" banyak jawaban menggunakan paradigma ini
Dengan cara yang membingungkan, saya takut, tetapi saya akan membahas komentar saya sendiri. Bagian ini juga berfungsi untuk memperluas poin terakhir di atas. Tujuannya di sini adalah untuk mencoba membedakan antara pekerjaan yang dilakukan CPU (dicapai dengan kombinasi perangkat keras dan mikrokode) dan pekerjaan yang dilakukan perangkat biasa (dicapai dengan kombinasi perangkat keras dan firmware). Saya akan memilih hard disk SATA.
Drive SATA mengikuti instruksi dari komputer, yang berada di sepanjang baris "baca data dari sektor 5.123" dan "tulis data ini ke dalam sektor 1.321". Firmware drive bertanggung jawab untuk membuat perangkat keras mewujudkannya, dan biasanya kode yang biasa digunakan berjalan pada CPU yang disematkan. Instruksi drive tiba secara berurutan, meskipun mereka mungkin tidak diproses sesuai urutan kedatangannya. Instruksi ini bukan program, itu dikirim oleh program yang berjalan pada CPU utama. Secara khusus tidak ada aliran kontrol, yaitu, tidak ada instruksi untuk memberi tahu drive SATA instruksi mana yang harus dijalankan selanjutnya.
CPU bertanggung jawab atas komputer. Setelah selesai menginisialisasi, ia menjalankan instruksi ("kode mesin") yang disediakan oleh motherboard (BIOS, jenis firmware lain) yang mengarahkannya untuk menjalankan kode mesin yang disediakan oleh sistem operasi yang mengarahkannya untuk menjalankan kode mesin yang disediakan oleh vendor aplikasi. CPU itu sendiri mengambil kode mesin dari EEPROM (dalam kasus BIOS) atau RAM (dalam kasus sistem operasi dan aplikasi). Secara khusus, kode mesin memiliki aliran kontrol: kode mesin memberi tahu CPU kode mesin apa yang harus dilakukan selanjutnya. Anda dapat mengulangi kode mesin yang sama berulang kali, Anda dapat menjalankan bit kode yang berbeda tergantung pada data yang dikerjakan kode - instruksi dalam bahasa antarmuka perangkat seperti kode SATA dapat melakukan serangkaian tugas sederhana yang terbatas, tetapi kode mesin dapat melakukanapa saja . (Lihat juga Turing Completeness .)
Kita dapat menulis ulang poin-poin terakhir di atas sebagai: mikrokode biasanya mengimplementasikan bahasa Turing Lengkap; firmware biasa biasanya tidak.
Apa artinya mengatakan "instruksi perangkat keras ditafsirkan" dengan mikrokode.
Benar tapi mungkin membingungkan; poin penting adalah perbedaan antara kode mesin, yang memiliki aliran kontrol dan Turing Lengkap, dan instruksi yang didefinisikan oleh antarmuka perangkat seperti SATA, yang tidak dan tidak.
Apakah "mikrokode" berlaku untuk kode yang berjalan pada kartu suara
Tidak, kartu suara menerima instruksi, bukan kode, seperti drive SATA. Instruksi mungkin seperti "memainkan A tajam" atau "menafsirkan data ini sebagai bentuk gelombang dan memainkannya". Masih sangat sederhana.
dan kartu video (GPU)?
Kartu video kuno (yang tanpa GPU) sama dengan drive SATA. Petunjuknya seperti "atur pixel ini ke warna ini" atau "tulis A ke posisi ini".
... GPU itu rumit dan duduk di suatu tempat antara dua dunia yang saya coba uraikan di atas. Mungkin paling sederhana untuk menganggap mereka sebagai komputer khusus yang berada di dalam komputer utama, yang memiliki CPU sendiri. Memang benar bahwa perangkat seperti drive SATA juga memiliki CPU yang disematkan, tetapi perbedaannya adalah bahwa CPU yang tertanam dalam drive SATA hanya menjalankan kode yang disediakan oleh produsen drive, sedangkan GPU juga menjalankan kode yang disediakan oleh sistem operasi dan / atau vendor aplikasi. Sungguh ini adalah pertanyaan yang terpisah.
TL; DR: mikrokode adalah jenis firmware khusus, yang membantu perangkat keras untuk mengimplementasikan serangkaian instruksi Turing Lengkap.