Sejauh terminologi, apa sebenarnya "mikrokode" dan jika dapat diperbarui, apa bedanya dengan firmware?
Pertanyaan ini bukan duplikat dari pertanyaan ini (sejauh yang saya tahu) yang saya juga tanyakan tentang memodifikasi mikrokode. Di sini saya benar-benar ingin tahu cara menggunakan istilah-istilah ini dengan benar.
Memperbarui
Saya punya jawaban yang dipilih, tetapi saya tidak terlalu puas dengannya. Saya telah menggunakan banyak jawaban dan saya menemukan banyak tanggapan yang sama-sama tidak memuaskan. Jadi izinkan saya hadir untuk Anda dua frame saya,
- "Mikrokode prosesor mirip dengan firmware prosesor." Ketika saya membaca ini semakin banyak, itulah cara saya menerimanya. "Microcode" dalam konteks ini hanya pemasaran lebih dari "firmware prosesor." Bersabarlah dengan saya, ..
- Atau, saya salah, dan saya tahu itu terjadi! Dalam hal ini, saya perlu ide yang lebih menyeluruh tentang mengapa saya salah. Dalam jawaban yang saya baca untuk menunjukkan bahwa saya salah, saya berjuang memahami mereka,
- "Eksekusi vs data" banyak jawaban menggunakan paradigma ini, tetapi untuk CPU itu tidak masuk akal bagi saya. Beberapa firmware menegaskan dieksekusi, tetapi dengan apa? Ketika datang ke CPU, apakah program instruksi atau data?
- Jika firmware menjembatani perangkat lunak dan perangkat keras (baca: teknik elektro para Dewa), lalu bagaimana mikrokode tidak juga memuaskan perbedaan itu.
- "Menafsirkan" seiring berjalannya waktu, ini semakin tidak masuk akal. Apa artinya mengatakan "instruksi perangkat keras ditafsirkan" dengan Microcode. Jika itu benar, apakah sesuatu akan berkinerja baik jika tidak diinterpretasikan tetapi dikompilasi dengan instruksi perangkat keras yang berbeda dan hanya "dieksekusi"? Juga, bagaimana Jenderal MIDI tidak ditafsirkan dalam cahaya yang sama? Ini adalah bahasa yang ditafsirkan oleh "mikrokode MIDI" dan berjalan pada perangkat keras. Atau, terminal bisu yang menafsirkan instruksi teleprinter untuk tampilan visual?
- Apakah "mikrokode" berlaku untuk kode yang berjalan pada kartu suara, dan kartu video (GPU) ?
terminology
firmware
cpu
Evan Carroll
sumber
sumber
Jawaban:
Asal usul kata firmware adalah titik tengah antara perangkat keras dan perangkat lunak - perangkat lunak yang tertanam pada perangkat keras. Ini merujuk pada perangkat lunak yang disimpan dalam memori yang tidak mudah menguap pada perangkat keras. Contohnya adalah EEPROM dan memori Flash yang disematkan ke perangkat perangkat keras, ketika digunakan untuk menyimpan kode yang dijalankan oleh perangkat itu sendiri.
Ini menjadi lebih umum di beberapa jenis perangkat keras untuk "firmware" untuk disimpan dalam perangkat lunak driver dan dimuat ke perangkat ketika itu di-boot / diinisialisasi, daripada meninggalkannya secara permanen di perangkat. Misalnya, ini bukan masalah besar, untuk menyimpan beberapa ratus KB kode firmware dalam driver perangkat lunak yang dimuat ke OS host, dan mengirimkannya ke perangkat seperti yang diinisialisasi oleh driver.
Ini sering masih disebut sebagai "firmware" walaupun tergantung pada definisi firmware yang Anda terima, Anda mungkin tidak secara teknis menganggapnya firmware karena tidak ada pada perangkat keras (jika Anda melepaskan perangkat keras dan meletakkannya di sistem lain, itu tidak akan mempertahankan versi "firmware").
Microcode adalah bagian dari "firmware" jenis terakhir ini. Microcode bukan istilah umum untuk semua "firmware" yang dimuat ke perangkat saat boot. Alih-alih, ini khusus untuk CPU, di mana mikrokode pada dasarnya membentuk lapisan terjemahan antara instruksi CPU tingkat tinggi dan operasi tingkat rendah khusus untuk CPU itu. Itu dimuat ke CPU saat boot, oleh BIOS, tetapi dapat diganti nanti di tahap boot oleh OS juga.
Pembaruan ke mikrokode dapat memungkinkan perilaku tingkat rendah CPU dimodifikasi untuk mengatasi bug yang belum ditemukan, tanpa perlu mengganti perangkat keras CPU. Microcode biasanya berisi pemetaan yang paling efisien dari instruksi tingkat tinggi ke rendah mungkin untuk kecepatan dan efisiensi energi terbaik sehingga kadang-kadang ketika perubahan ke mikrokode diperlukan untuk memperbaiki beberapa bug, itu dapat mengakibatkan penurunan kinerja.
Perhatikan bahwa Meltdown (kerentanan yang hanya mempengaruhi chip Intel) tidak dapat diperbaiki dengan pembaruan mikrokode saja dan memerlukan perubahan pada fungsionalitas OS inti, yang dapat mengurangi kinerja lebih lanjut. Specter (kerentanan yang memengaruhi chip Intel, AMD, dan ARM) mungkin dapat diselesaikan hanya dengan pembaruan mikrokode.
Untuk menjawab beberapa pertanyaan spesifik Anda sejak pengeditan:
Ya, mikrokode pada dasarnya adalah firmware yang berjalan pada prosesor. Istilah khusus "mikrokode" secara khusus merujuk pada firmware pada prosesor yang berisi cetak biru untuk menerjemahkan dari bahasa mesin standar ke instruksi prosesor tingkat rendah. Jadi ini adalah istilah yang lebih spesifik daripada firmware.
Perhatikan bahwa ketika saya bahas di atas tidak tersimpan di CPU saat sedang dimatikan tetapi dimuat ke dalamnya setiap kali Anda boot jadi dalam arti itu tidak berfungsi seperti firmware tradisional. Namun, banyak perangkat keras melakukan ini sekarang dan masih disebut "firmware" sehingga menyebutnya sebagai firmware dapat diterima.
Saya tidak berpikir Anda salah. Firmware tidak harus ditulis dalam bahasa mesin tertentu dan pelaksanaannya tidak harus dipicu dengan cara tertentu. Pada level rendah tertentu semua kode mesin adalah "data" yang "dibaca" oleh prosesor dan ditafsirkan dengan cara tertentu.
Istilah "mikrokode" biasanya hanya digunakan untuk CPU utama dan bukan kartu grafis atau perangkat keras lain, meskipun perangkat lain tersebut mungkin memuat kode ke dalamnya dengan cara yang sama.
sumber
https://wiki.debian.org/Microcode
Contoh:
https://www.win-raid.com/t3355f47-Intel-AMD-amp-VIA-CPU-Microcode-Repositories.html
sumber
Yah, "pembaruan mikrokode" Intel sebenarnya adalah pembaruan "firmware" dalam arti bahwa pembaruan tersebut lebih dari sekadar unit terjemahan mikrokode dari prosesor.
Pembaruan paket prosesor terpadu ini kami sebut "pembaruan mikrokode" untuk Intel juga memperbarui mikrokontroler on-die lainnya (seperti PMU dan inti manajemen daya) serta beberapa tabel parameter untuk berbagai subsistem prosesor on-die yang berbeda. Mereka agak rumit.
Informasi ini tersedia di beberapa paten Intel terkait dengan pembaruan kode mikro dan kode mikro.
sumber
Saya pikir istilah "mikrokode" merujuk terutama pada apa yang dikerjakan kode (mengeksekusi instruksi level rendah bahkan menggunakan instruksi level lebih rendah), sedangkan istilah "firmware" merujuk terutama pada bagaimana ia disimpan dan dikelola (kurang mudah diperbarui daripada perangkat lunak , lebih mudah diperbarui daripada perangkat keras). Dalam arti itu agak seperti perbedaan antara "aplikasi" dan "file JAR" - program yang sama mungkin keduanya, tetapi Anda melihatnya dari dua perspektif yang berbeda.
Kebetulan, ide mikrokode kembali ke Maurice Wilkes pada tahun 1951, beberapa dekade sebelum prosesor komputer tertanam dalam silikon.
sumber
Firmware biasanya merujuk pada kode untuk perangkat yang mengandung CPU, bukan CPU itu sendiri, misalnya firmware untuk ponsel android.
Microcode adalah lapisan terjemahan antara set instruksi kompleks (mis. 486, 686, AMD-64 dll.) Dan instruksi level bawah yang dirancang pembuat silikon untuk silikon. Jadi sejumlah instruksi dalam set instruksi CPU tidak diimplementasikan dalam silikon tetapi diterjemahkan melalui mikrokode menjadi beberapa instruksi yang diimplementasikan dalam silikon.
sumber
"Microcode" adalah istilah asli, dan merujuk pada instruksi yang digunakan untuk mengimplementasikan juru bahasa untuk set instruksi "publik" prosesor.
Namun seiring waktu, dengan banyak variasi dalam skema implementasi, perbedaannya, seperti itu, semakin kabur. Pertama ada mikrokode horizontal vs vertikal, kemudian berbagai skema untuk menulis "mikrokode" (untuk mengimplementasikan, katakanlah, instruksi I / O) dalam set instruksi prosesor "utama". Kemudian ada kebutuhan untuk membedakan antara kode yang mudah dimuat melalui program biasa "menjalankan" operasi, vs kode (untuk BIOS, misalnya) yang disimpan dalam ROM atau penyimpanan lain yang dilindungi dan relatif tidak dapat diubah. Jadi istilah "firmware" diciptakan untuk merujuk pada instruksi ini yang entah bagaimana dibuat lebih persisten (dan kurang dapat diakses untuk modifikasi pengguna) dalam penyimpanan.
Tetapi banyak hal telah berubah dan berputar sejak perbedaan pertama ini dibuat, dan lagi istilah tersebut hanya dapat didefinisikan dengan presisi dalam lingkungan prosesor dan OS yang diberikan.
sumber
[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.
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.
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.
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.
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.
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.
sumber
Microcode ( "control store" ) adalah data untuk berada dalam memori yang volatil atau tidak mudah menguap - umumnya memori yang agak kecil tetapi sangat lebar, yang sinyal output datanya ditransfer ke input sinyal kontrol unit fungsional perangkat keras paralel, logika kontrol acak, dll. Input alamat memori mikrokode disediakan oleh mesin negara yang melangkah melalui kata memori ("instruksi program mikro") pada suatu waktu, untuk secara efektif mengurutkan sinyal kontrol dari satu atau banyak blok perangkat keras. Perangkat keras multipleks waktu ini dan memungkinkan operasi yang kompleks diimplementasikan dengan logika acak yang jauh lebih sedikit.
Dalam mikroprosesor modern mungkin ada hierarki unit mikrokode / sekuensing yang diperlukan untuk abstrak mikroarsitektur silikon fisik ke keluarga arsitektur yang lebih umum dengan antarmuka "kode mesin" yang umum. Misalnya mungkin ada beberapa lapisan mikrokode / sekuensing untuk mengimplementasikan decoder instruksi dan unit floating point.
Firmware dalam arti tradisional adalah setiap perangkat lunak / data yang berada dalam memori non-volatile, yang diharapkan jarang atau tidak pernah berubah. Ini secara langsung kontras dengan perangkat lunak yang disimpan dalam atau lebih tepatnya ditulis dan dieksekusi dari memori sistem yang terus berubah. Microcode secara khusus mengacu pada data yang mewakili program mikro untuk mengontrol urutan perangkat keras.
Mikrokode dapat diimplementasikan dalam firmware / firmware mungkin berisi mikrokode, tetapi tidak sama.
sumber
Firmware adalah kode yang dapat dieksekusi yang ditempatkan dalam ROM atau memori non-volatile lainnya.
Tujuan asli dan utama dari firmware adalah untuk berada di sana ketika CPU dimulai, sehingga memiliki kode untuk dijalankan untuk memulai atau mem-boot sistem apa pun yang menjadi bagian dari CPU. Dalam kasus PC, firmware juga digunakan untuk menyediakan layanan untuk sistem operasi yang sedang berjalan dan juga memegang kode untuk pengendali tertanam yang mengontrol kipas, daya, dan beberapa hal lainnya, dan kode untuk ME / PSP yang berjalan di latar belakang .
Perangkat periferal yang menggunakan firmware, seperti hard drive, perangkat USB, dll. Memiliki CPU yang disematkan.
Microcode bukan kode yang dapat dieksekusi, tetapi kode yang digunakan oleh fasilitas internal perangkat.
Ini dimuat ke Intel atau AMD CPU dengan instruksi WRMSR. Memuat firmware ke perangkat melibatkan pemrograman ROM atau media flash, atau mengandalkan program loader kecil untuk hadir di perangkat untuk menerima firmware.
Pembaruan firmware dan mikrokode berada dalam kategori yang sama - hal-hal yang perlu Anda lakukan untuk membuat perangkat keras berfungsi dan mungkin perlu memperbarui dari waktu ke waktu - tetapi semuanya sangat berbeda.
Instruksi kompleks pada banyak CPU tidak secara langsung terhubung ke perangkat keras, tetapi "dieksekusi" oleh fasilitas mirip CPU yang lebih kecil di CPU utama. Mikrokode mengontrol operasi ini. Ini kembali ke setidaknya Motorola 68000 yang memiliki "MicroROM" yang mengandung mikrokode.
Tidak ada orang lain selain prosesor Intel atau AMD yang tahu apa yang benar-benar dikontrol atau dikerjakan oleh mikrokode, karena mereka tidak merilis detail. Ada upaya untuk meretasnya. Referensi .
Secara praktis, pembaruan mikrokode pada dasarnya digunakan untuk menonaktifkan instruksi yang menyebabkan masalah pada model / steppings CPU yang diketahui, dan CPU terbaru dari Intel sering membutuhkan setidaknya satu pembaruan mikrokode sebelum berfungsi dengan andal.
Beberapa perspektif tentang apa yang sebenarnya dapat dilakukan oleh mikrokode CPU / sebenarnya mungkin diperoleh jika Anda membaca tentang ROM decode 6502 PLA - 6502 adalah CPU 8-bit lama dan instruksinya diurutkan / dikontrol oleh PLA internal. PLA pada dasarnya akan mengatakan bagian mana dari chip yang terlibat pada setiap langkah dari setiap instruksi (6502 instruksi berkisar 2-7 siklus). Ini jauh, jauh sebelum hal-hal seperti caching, arsitektur superscalar, prediksi cabang, dll. Tidak yakin apakah mikrokode pada CPU modern akan mengontrol sesuatu seperti PLA itu.
sumber
Terminologi
Saya akan menjawab ini sendiri hanya menggunakan konteks penggunaan dalam pdf ini .
Firmware - Microcode adalah diperbarui melalui jalur yang disediakan oleh firmware CPU.
Microcode - itu sendiri adalah data yang digunakan oleh "Instruction Decode Unit (IDU)." Penasun dapat menggunakan kabel atau mikrokode . Microcoded dalam konteks ini berarti diprogram. JUGA berarti "pluralitas mikrokode." Penasun
Instruksi makro satu instruksi yang dikirim ke IDU untuk diterjemahkan, dapat mengembalikan sejumlah instruksi Mikro .
Mikro-instruksi satu "kata kontrol" precomputed, semua negara dan instruksi untuk mengeksekusi untuk satu siklus clock. Dikirim ke CPU untuk menghasilkan sinyal kontrol .
Jadi dalam konteks ini, Anda akan memperbarui mikrokode dengan firmware. Anda akan mengirim instruksi makro ke IDU mikrokode untuk menyelesaikan instruksi makro menjadi "instruksi mikro" untuk dieksekusi pada CPU, yang mengubahnya menjadi sinyal kontrol.
Bacaan saya tentang ini
Mikrokode adalah data , tetapi memperbarui mikrokode dilakukan melalui firmware. Dan membingungkan karena Anda sedang berbicara tentang apa yang pada dasarnya sama dengan tabel pencarian internal, itu tentu juga firmware itu sendiri yang pada dasarnya disimpan pada chip dan digunakan dalam aliran eksekusi chip. Saya pikir Anda bisa membuat argumen bahwa General MIDI, hardware PostScript, dan sinyal kontrol untuk terminal bodoh juga ditafsirkan dalam arti yang sama, dalam perangkat keras, dan bahwa sesuatu mengambil instruksi dan akhirnya menghasilkan "sinyal kontrol" dalam beberapa jenis proses interpretasi .
Tampaknya kami memiliki nama khusus untuk proses dan komponen ini dalam CPU: "IDU" pada CPU, dan nama untuk tabel input spesifik yang digunakan IDU yang menampung semua "microinstructions": the "microcode". Informasi tentang proses itu adalah hak milik dan tertutup. Saya akan menganggap itu analog dengan teknologi lain dari modem (dengan ATDT dan sejenisnya pada modem Hayes), untuk kartu MIDI tapi kami tidak menamai tabel pencarian spesifik "mikrokode", dan sebagai gantinya menggunakan istilah payung "firmware" untuk proses flashing dan seluruh muatan yang disimpan dalam chip.
sumber
div
danidiv
), tetapi bahkan divisi FP adalah single uop (karena itu lebih kritis terhadap kinerja, logika iteratif multi-langkah dilakukan di dalam unit pembagian alih-alih dengan uops mikrokode).Saya telah mengambil kursus dalam desain ISA dasar, terutama dalam studi dan desain prosesor RISC dimodelkan konsep MIPS. Inilah yang saya ingat
Untuk pemahaman saya, blok dasar prosesor seperti register, ALU, multiplexer dan modul memori memerlukan sinyal tertentu agar mereka dapat melakukan pekerjaan mereka. Anda akan menyebut sinyal-sinyal ini sebagai sinyal "penegasan", karena merupakan sinyal yang diperlukan untuk mengoperasikan blok-blok ini. CPU pada intinya, adalah blok spaghetti dari ALU, modul memori, register dan perangkat keras lainnya. Berarti setiap CPU harus menegaskan urutan sinyal kontrol tertentu untuk melakukan pekerjaan mereka (maksud saya instruksi dasar seperti ANDI, ORI, JMP, BNE, BEQ, dll.). Saya memiliki perasaan campur aduk tentang hal itu ketika saya harus menegaskan sinyal sendiri (benar-benar melalui semua instruksi MIPS) selama pengujian dan debugging dari set instruksi karena kecepatan kurikulum tidak mengajari saya apa pun tentang unit kontrol pada waktu itu.
Di sisi lain, bahasa assembler bermuara ke opcodes dan operan mereka dalam kata instruksi (pada dasarnya lebar bus data Anda). Dalam hal MIPS, 6 bit pertama kata instruksi Anda adalah opcode Anda. Dengan semata-mata inspeksi matematis saja, Anda tidak dapat "menegaskan" ALU Anda, register, memori, muxes .. pada dasarnya sisa perangkat keras Anda dengan 6 bit saja.
Tidak, kecuali Anda memiliki ... AN INSODUCTION DECODER. Dekoder instruksi pada dasarnya mengambil opcode Anda dan menghasilkan SEMUA sinyal "pernyataan" Anda yang diperlukan untuk mengoperasikan perangkat keras Anda. Namun, instruksi decoder berbeda dalam implementasi antara arsitektur dan dalam beberapa kasus, dapat diprogram. Mikrokode memengaruhi bagian yang dapat diprogram dari dekoder instruksi.
Saya percaya bahwa firmware adalah istilah umum untuk setiap informasi yang tertanam dalam perangkat keras. Dalam beberapa kasus ini juga akan merujuk ke mikrokode karena bitstreamnya dapat dikodekan dan disimpan dalam perangkat keras seperti EEPROM dan memori flash. Namun sebagian besar waktu, itu dikompilasi kode, asm, atau bahkan bitstream stream VHDL / Verilog digunakan dalam FPGA. Microcode bagi saya sepertinya semantik yang digunakan untuk menentukan "sinyal pernyataan" pada prosesor pilihan.
sumber
Microcode adalah firmware sub-asm level, cpu-integrated.
sumber