[Not: bu cevap özellikle en son yapılan düzenlemeye yöneliktir ve aksi takdirde önceden gönderilmiş ses yanıtlarına eklemez.]
Bu nedenle, yinelemek için: microcode (en azından ilk yaklaşıma kadar) , belirli bir ürün yazılımıdır.
"Microcode" bu bağlamda sadece "işlemci ürün yazılımı" üzerinden pazarlanmaktadır.
Şey, pazarlama değil. Pazarlama buna XBoost Pro (TM) veya başka bir şey diyebilirdi . Aksine, bu bir mühendislik terimidir; CPU'ları tasarlarsanız, mikro kod ile CPU'nun diğer üretici yazılımı (ve diğer cihazlara tipik olan üretici yazılımı türü) arasındaki ayrım sizin için önemlidir. Değilse, muhtemelen değildir.
Anakartlar tasarlarsanız ya da işletim sistemleri yazarsanız, daha "tuhaf" ve daha az bilinen "CPU ürün yazılımı güncellemesi" için kısaca "microcode update" kullanın. Çoğu CPU üretici yazılımı güncellemesi öncelikle mikro kodu etkiler, bu nedenle aynı şeye yeterince yakındır. Muhtemelen farkı biliyorsunuzdur, ama onunla ilgilenmenize gerek yok .
Son kullanıcının farkı bilmesi veya umurunda olması gerekmez ve ideal bir dünyada "microcode" kelimesini hiçbir zaman duymaz.
Son spekülatif icra açıkları konusundaki basın yayınlamasında dikkatinizi çektiğini tahmin ediyorum, ancak daha önce dikkat etmeniz gerekmediğini daha açık bir şekilde duymuş olabilirsiniz. Bu güvenlik açıkları, planlanandan daha önce yayınlandı; bu, basın kapsamının aksi olabileceğinden daha az küratörlüğüne neden olabilirdi. Son kullanıcının bakış açısından, BIOS güncellemelerini, işletim sistemi güncellemelerini ve bazı durumlarda uygulama güncellemelerini yüklemeniz gerekir; bunlardan herhangi birinin yeni mikro kod içerdiğini bilmeniz veya bakım yapmanız gerekmez.
Öyleyse, muhtemelen bilmek ya da ilgilenmek zorunda olmadığınızı fark etseniz bile, hala saf meraktan ilginizi çekebilir: mikro kodu diğer aygıt yazılımlarından nasıl ayırt edersiniz?
İlk farketmek istediğim, tek bir kesin ve hızlı tanımlamanın gerekmediği, bunun bir Bleggs ve Rubes olayı olduğudur . Yine de, mikro kod hakkında söyleyebileceğimiz bazı şeyler var:
Mikro kod genellikle bir CPU yerine bir CPU içinde çalışır. Bu üst düzey manzara.
Mikro kodun mimarisi normalde, normal bellenim de dahil olmak üzere normal kodun mimarisinden oldukça farklı görünür. Yüksek derecede paralel olması ve donanıma çok daha yakın olması muhtemeldir. Mevcut cevapların birçoğu (kendi cevabınız da dahil) bunu tartışıyor, ancak ayrıntıların CPU tasarımına bağlı olarak değişebileceği belirtilmelidir.
Her ne kadar donanım yalnızca üretici tarafından sağlanan ürün yazılımını çalıştıracak şekilde tasarlanmış olsa da, üçüncü taraf ürün yazılımının kullanılması özellikle nadir değildir , ancak muhtemelen garantiyi geçersiz kılar! Üçüncü taraf mikro kodu çok daha nadirdir, ancak eski zamanlarda (bir CPU'nun bir ekmek kutusunun büyüklüğüyle ilgili olduğu zamanlar hakkında konuşuyorum) bazı son kullanıcıların CPU'larındaki mikro kodu değiştireceklerine inanıyorum. Bildiğim kadarıyla, PC'lerde kullanılan CPU türlerinde bu mümkün değil.
Microcode tipik olarak bir kamu talimat seti mimarisini çevirir veya uygulamaya yardımcı olur, yani işletim sistemi tasarımcısı ve uygulama programcılarının kullandığı makine kodunu çalıştırır. Bir sonraki bölümde bu konuda daha fazla.
"Veri yürütme vs veri" pek çok cevabı bu paradigmayı kullanır
Kafa karıştırıcı şekilde farklı şekillerde korkuyorum ama kendi yorumuma değineceğim. Bu bölüm aynı zamanda yukarıdaki son madde işaret noktasında genişlemeye de hizmet eder. Buradaki amaç, bir CPU'nun yaptığı (donanım ve mikro kod kombinasyonu ile elde edilen) ve tipik bir cihazın yaptığı (donanım ve donanım yazılımı kombinasyonu ile elde edilen) işi ayırt etmeye çalışmaktır. SATA sabit disk sürücüsü seçeceğim.
SATA sürücüsü, "5,123 numaralı sektörden verileri oku" ve "bu verileri 1.321 sektörüne yaz" satırları boyunca gelen bilgisayardan gelen talimatları izler. Sürücünün bellenimi, donanımın bunu gerçekleştirmesini sağlamaktan sorumludur ve genellikle bir tür gömülü CPU'da çalışan sıradan bir koddur. Sürücünün talimatları, geldikleri sırayla işlenemese de sırayla gelir. Bu talimatlar bir program değildir , ana CPU'da çalışan bir program tarafından gönderilir . Özellikle, hiçbir kontrol akışı yoktur, diğer bir deyişle SATA sürücüsüne hangi talimatların çalıştırılacağını söyleyen bir talimat yoktur.
CPU bilgisayardan sorumludur. Başlatmayı bitirdikten sonra, anakart (BIOS, başka bir ürün yazılımı türü) tarafından sağlanan (işletim sistemi tarafından sağlanan makine kodunu, verilen makine kodunu çalıştırmaya yönlendiren makine kodunu çalıştırmaya yönlendiren) ("makine kodu") çalıştırır. uygulama satıcıları tarafından. CPU, makine kodunu EEPROM'dan (BIOS durumunda) veya RAM'den (işletim sistemi ve uygulamalar için) alır. Özellikle, makine kodu bir kontrol akışına sahiptir: makine kodu CPU'ya daha sonra hangi makine kodunu gerçekleştireceğini söyler. Aynı makine kodunun üzerine tekrar tekrar geçebilir, kodun üzerinde çalıştığı verilere bağlı olarak farklı kod bitleri çalıştırabilirsiniz - SATA kodu gibi bir aygıt arayüz dilindeki talimatlar sınırlı bir dizi basit işlemi yapabilir, ancak makine kodu yapherhangi bir şey . (Ayrıca bkz . Tamamlanma Turing .)
Yukarıdaki son madde işaret noktasını şu şekilde yeniden yazabiliriz: microcode genellikle bir Turing Complete dilini uygular; sıradan bir ürün yazılımı genellikle yapmaz.
Microcode ile "donanım talimatları yorumlanır" demek ne demektir?
Doğru ama muhtemelen kafa karıştırıcı; Önemli olan, kontrol akışı olan ve Turing Complete olan makine kodu ile SATA gibi bir cihaz arayüzü tarafından tanımlanan ve olmayan komutlar arasındaki ayrımdır.
"Mikro kod" ses kartlarında çalışan koda uygulanır mı
Hayır, ses kartları, SATA sürücülerinde olduğu gibi kod değil, talimat alır. Talimatlar "play A sharp" veya "bu verileri bir dalga formu olarak yorumlayıp oynatmak" şeklinde olabilir. Hala çok basit.
ve video kartları (GPU'lar)?
Eski moda video kartları (GPU'lar olmayanlar) SATA sürücülerle aynıdır. Talimatlar "bu pikseli bu renge ayarla" ya da "bu konuma bir A yaz" gibidir.
... GPU'lar karmaşık ve yukarıda anlatmaya çalıştığım iki dünya arasında bir yere oturmuşlar. Onları ana bilgisayarın içinde, kendi işlemcileri olan özel bir bilgisayar olarak düşünmek muhtemelen en basittir. SATA sürücüleri gibi cihazların da gömülü CPU'ları olduğu doğrudur, ancak fark, SATA sürücüsündeki gömülü CPU'nun yalnızca sürücü üreticisi tarafından sağlanan kodu çalıştırmasıdır; oysa ki GPU'lar işletim sistemi ve / veya uygulama satıcısı tarafından sağlanan kodu da çalıştırmaktadır. Gerçekten bu tamamen ayrı bir soru.
TL; DR: microcode, donanımın bir Turing Complete talimat seti uygulamasına yardımcı olan belirli bir üretici yazılımıdır.