Mikrokod - Microcode

Olarak işlemci tasarımı , Mikrokod bir tabaka interposes bir tekniktir bilgisayar organizasyonu arasındaki işlemci donanımı ve programcı görünür komut seti mimarisine bilgisayar. Mikrokod, birçok dijital işleme öğesinde daha yüksek düzeyde makine kodu talimatlarını veya dahili durum makine sıralamasını uygulayan donanım düzeyinde bir talimat katmanıdır . Mikrokod, genel amaçlı merkezi işlem birimlerinde kullanılır , ancak mevcut masaüstü CPU'larında, yalnızca daha hızlı kablolu kontrol biriminin işleyemeyeceği durumlar için bir geri dönüş yoludur .

Mikrokod tipik olarak özel yüksek hızlı bellekte bulunur ve makine talimatlarını, durum makine verilerini veya diğer girdileri ayrıntılı devre düzeyinde işlem dizilerine dönüştürür. Talimatların daha özgürce tasarlanabilmesi ve değiştirilebilmesi için makine talimatlarını temel elektroniklerden ayırır . Ayrıca bilgisayar devrelerinin karmaşıklığını azaltırken karmaşık çok adımlı talimatların oluşturulmasını kolaylaştırır. Mikro kod yazmaya genellikle mikro programlama denir ve belirli bir işlemci uygulamasındaki mikro koda bazen mikro program denir .

Daha kapsamlı microcoding küçük ve basit sağlar mikromimariler için taklit geniş olan daha güçlü mimarileri kelime uzunluğu , daha çok yürütme birimi , bir işlemci ailesinin farklı ürünler arasında yazılım uyumluluğu elde etmek için nispeten basit bir şekilde, bu nedenle ilgili ve,.

Bazı donanım satıcıları, özellikle IBM , mikro kod terimini sabit yazılım ile eşanlamlı olarak kullanır . Bu şekilde, bir cihaz içindeki tüm kod, mikro kod veya makine kodu olmasına bakılmaksızın mikro kod olarak adlandırılır ; örneğin, sabit disk sürücülerinin mikrokodlarının güncellendiği söylenir, ancak bunlar genellikle hem mikro kod hem de bellenim içerir.

genel bakış

Bir bilgisayarın yazılım yığınındaki en alt katman, geleneksel olarak işlemci için ham makine kodu talimatlarıdır. Mikro kodlu işlemcilerde, mikro kod bu talimatları alır ve yürütür. Karışıklığı önlemek için, mikro programla ilgili her öğe, mikro önekle ayrılır: mikro talimat, mikro birleştirici, mikro programcı, mikro mimari , vb.

Mühendisler normalde mikro kodu bir işlemcinin tasarım aşamasında yazar, onu salt okunur bir bellekte (ROM) veya programlanabilir mantık dizisi (PLA) yapısında veya her ikisinin bir kombinasyonunda saklar . Bununla birlikte, mikro kodun bir kısmının veya tamamının SRAM veya flash bellekte saklandığı makineler de mevcuttur . Bu, geleneksel olarak , bilgisayar bağlamında, salt okunur veya okunur-yazılır bellek olabilen, yazılabilir denetim deposu olarak belirtilir . İkinci durumda, CPU başlatma işlemi, talimat setindeki hataları düzeltmek veya yeni makine talimatlarını uygulamak için mikro kodu değiştirme olasılığıyla birlikte, mikro kodu başka bir depolama ortamından kontrol deposuna yükler.

Karmaşık dijital işlemciler, aynı zamanda , esasen eşzamansız olarak paralel olarak gerçekleştirilmesi gereken alt görevleri devretmek için birden fazla (muhtemelen mikrokod tabanlı) kontrol birimi kullanabilir. Üst düzey bir programcı, hatta bir montaj programcısı, normalde mikro kodu görmez veya değiştirmez. Bir ailedeki farklı işlemciler arasında geriye dönük uyumluluk sağlayan makine kodunun aksine , mikrokod yalnızca tam olarak tasarlandığı elektronik devre üzerinde çalışır , çünkü belirli işlemci tasarımının kendisinin doğal bir parçasını oluşturur.

Mikroprogramlar, CPU'yu çok temel bir donanım devresi düzeyinde kontrol eden bir dizi mikro komuttan oluşur. Örneğin, tek bir tipik yatay mikro talimat aşağıdaki işlemleri belirtebilir:

  • Kayıt 1'i ALU'nun A tarafına bağlayın
  • Kayıt 7'yi ALU'nun B tarafına bağlayın
  • ALU'yu iki tamamlayıcı ekleme yapacak şekilde ayarlayın
  • ALU'nun taşıma girişini sıfıra ayarlayın
  • Sonuç değerini kayıt 8'de saklayın
  • ALU durum bayraklarından koşul kodlarını güncelleyin ( negatif , sıfır , taşma ve taşıma )
  • Bir sonraki mikro talimat için mikro PC nnn'ye mikro atlama

Tüm işlemci özelliklerini tek bir döngüde aynı anda kontrol etmek için mikro talimat genellikle 50 bitten daha geniştir; örneğin, bir emülatör özelliği olan bir 360/85 üzerinde 128 bit . Yavaş bir mikro program, yavaş bir makine talimatına ve bu tür talimatları kullanan ilgili uygulama programlarının performansının düşmesine neden olacağından, mikro programlar mümkün olan en hızlı yürütme için dikkatlice tasarlanmış ve optimize edilmiştir.

Meşrulaştırma

Mikrokod başlangıçta bir bilgisayar için kontrol mantığını geliştirmenin daha basit bir yöntemi olarak geliştirilmiştir . Başlangıçta, CPU komut setleri edildi kablolu . Makine talimatlarını getirmek, kodunu çözmek ve yürütmek için gereken her adım (herhangi bir işlenen adres hesaplamaları , okumaları ve yazmaları dahil) doğrudan kombinasyonel mantık ve daha çok minimal sıralı durum makine devresi tarafından kontrol edildi . Bu tür kablolu işlemciler çok verimli olsa da, çok adımlı adresleme ve karmaşık işlemlere ( aşağıya bakın ) sahip güçlü komut kümelerine duyulan ihtiyaç , bunların tasarlanmasını ve hatalarının ayıklanmasını zorlaştırdı; özellikle çok düzensiz kodlamalar kullanıldığında, yüksek oranda kodlanmış ve çeşitli uzunluktaki talimatlar da buna katkıda bulunabilir.

Mikrokod, işlemcinin davranış ve programlama modelinin çoğunun özel devreler yerine mikro program rutinleri aracılığıyla tanımlanmasına izin vererek işi basitleştirdi. Tasarım sürecinin sonlarında bile mikro kod kolayca değiştirilebilirken, kablolu CPU tasarımlarını değiştirmek çok hantaldı. Böylece, bu büyük ölçüde CPU tasarımını kolaylaştırdı.

1940'lardan 1970'lerin sonlarına kadar, programlamanın büyük bir kısmı Assembly dilinde yapıldı ; daha yüksek seviyeli talimatlar, daha fazla programcı üretkenliği anlamına gelir, bu nedenle mikro kodun önemli bir avantajı, güçlü makine talimatlarının tanımlanabileceği göreceli kolaylıktı. Bunun nihai uzantısı, PL/I gibi yüksek seviyeli bir dilin her ifadesinin derleme olmadan tamamen ve doğrudan mikro kod tarafından yürütüldüğü "Doğrudan Yürütülebilir Yüksek Düzeyli Dil" tasarımlarıdır . IBM Gelecek Sistemleri proje ve Veri Genel Fountainhead İşlemcisi bu örnekleridir. 1970'lerde CPU hızları bellek hızlarından daha hızlı arttı ve bunu hafifletmek için bellek blok aktarımı , bellek ön getirme ve çok seviyeli önbellekler gibi sayısız teknik kullanıldı. Daha az karmaşık makine talimatı daha az bellek bant genişliği gerektirdiğinden, mikrokodla mümkün kılınan üst düzey makine talimatları daha da yardımcı oldu. Örneğin, bir karakter dizisindeki bir işlem, tek bir makine talimatı olarak yapılabilir, böylece birden fazla talimat getirmesinden kaçınılır.

Karmaşık mikro programlar tarafından uygulanan talimat setlerine sahip mimariler, IBM System/360 ve Digital Equipment Corporation VAX'i içeriyordu . Giderek daha karmaşık mikrokod uygulanan talimat setlerinin yaklaşımı daha sonra CISC olarak adlandırıldı . Birçok kullanılan alternatif bir yaklaşım, mikroişlemci , kullanmaktır ÜLR'lerinizi veya ROM'ları ağırlıklı talimat kod çözme için (yerine kombinasyonel mantık) ve basit bir durum makinesi let (çok olmadan ya da herhangi bir, Mikrokod) dizileme çoğunu yapmak. MOS Teknoloji 6502 talimat kod çözme ve dizileme için bir PLA ile bir mikro-işlemcinin bir örnektir. PLA, çipin fotomikrograflarında görülebilir ve çalışması transistör seviyesindeki simülasyonda görülebilir.

Mikro programlama hala modern CPU tasarımlarında kullanılmaktadır. Bazı durumlarda, mikro kod simülasyonda hata ayıklandıktan sonra, kontrol deposu için mantık işlevleri değiştirilir. Mantık işlevleri genellikle eşdeğer mikro program belleğinden daha hızlı ve daha ucuzdur.

Faydalar

Bir işlemcinin mikro programları, normal programcılar tarafından görülebilen montaj talimatlarından daha ilkel, tamamen farklı ve çok daha donanım odaklı bir mimaride çalışır. Donanımla koordineli olarak mikro kod, programcı tarafından görülebilen mimariyi uygular. Temel donanımın görünür mimariyle sabit bir ilişkisi olması gerekmez. Bu, belirli bir komut seti mimarisini çok çeşitli temel donanım mikro mimarileri üzerinde uygulamayı kolaylaştırır.

IBM System/360, 16 genel amaçlı kayıt içeren 32 bitlik bir mimariye sahiptir, ancak System/360 uygulamalarının çoğu aslında çok daha basit bir temel mikromimariyi uygulayan donanımı kullanır; örneğin, System/360 Model 30 , aritmetik mantık birimine (ALU) ve ana belleğe giden 8 bitlik veri yollarına sahiptir ve genel amaçlı kayıtları daha yüksek hızlı çekirdek belleğin özel bir biriminde ve System/360 Modelinde uygulamıştır. 40 , ALU'ya giden 8 bitlik veri yollarına ve ana belleğe giden 16 bitlik veri yollarına sahiptir ve ayrıca genel amaçlı kayıtları daha yüksek hızlı çekirdek belleğin özel bir biriminde uygulamıştır. Model 50 tam 32-bit veri yolları ve aletler daha hızlı çekirdek özel bir bellek birimi genel amaçlı kaydedici bulunmaktadır. Model 65'ten Model 195'e kadar daha büyük veri yolları vardır ve genel amaçlı kayıtları daha hızlı transistör devrelerinde uygular. Bu şekilde, mikro programlama, IBM'in büyük ölçüde farklı donanıma sahip ve çok çeşitli maliyet ve performansa sahip birçok System/360 modelini tasarlamasına ve bunların hepsini mimari olarak uyumlu hale getirmesine olanak sağladı. Bu, her model için yazılması gereken benzersiz sistem yazılımı programlarının sayısını önemli ölçüde azaltır.

Benzer bir yaklaşım Digital Equipment Corporation (DEC) tarafından VAX bilgisayar ailesinde kullanıldı. Sonuç olarak, farklı VAX işlemcileri farklı mikro mimariler kullanır, ancak programcı tarafından görülebilen mimari değişmez.

Mikroprogramlama , işlemcideki kusurları ( hataları ) düzeltmek için yapılan alan değişikliklerinin maliyetini de azaltır ; bir hata, donanım mantığında ve kablolamada değişiklikler yapmak yerine mikro programın bir kısmını değiştirerek genellikle düzeltilebilir .

Tarih

1947'de MIT Whirlwind'in tasarımı, bilgisayar tasarımını basitleştirmenin ve geçici yöntemlerin ötesine geçmenin bir yolu olarak bir kontrol deposu kavramını tanıttı . Kontrol deposu bir diyot matrisidir : bir boyutun CPU'nun dahili saatinden "kontrol zamanı darbelerini" kabul ettiği ve diğerinin kapılar ve diğer devreler üzerindeki kontrol sinyallerine bağlandığı iki boyutlu bir kafes. Bir "darbe dağıtıcı", CPU saati tarafından üretilen darbeleri alır ve her biri kafesin farklı bir sırasını harekete geçiren sekiz ayrı zaman darbesine böler. Satır etkinleştirildiğinde, kendisine bağlı olan kontrol sinyallerini etkinleştirir.

Başka bir şekilde tarif edilecek olursa, kontrol deposu tarafından iletilen sinyaller, daha çok bir oyuncu piyano rulosu gibi çalınmaktadır . Yani, bitlerden oluşan çok geniş bir sözcük dizisi tarafından kontrol edilirler ve sırayla "oynatılırlar". Ancak bir kontrol deposunda "şarkı" kısadır ve sürekli olarak tekrarlanır.

1951 yılında Maurice Wilkes ekleyerek bu kavramı geliştirilmiş koşullu yürütme , bir benzer bir kavram Koşullu bilgisayar yazılımında. İlk uygulaması bir çift matristen oluşuyordu: ilki, Whirlwind kontrol deposu tarzında sinyaller üretirken, ikinci matris, bir sonraki döngüde hangi sinyal satırını (deyim yerindeyse mikro program talimat kelimesi) seçiyordu. Koşullar, kontrol deposundaki tek bir satırın ikinci matristeki alternatifler arasından seçim yapabilmesi sağlanarak uygulandı. Bu, kontrol sinyallerini tespit edilen dahili sinyale bağlı hale getirdi. Wilkes , bu özelliği tanımlamak ve onu basit bir kontrol deposundan ayırmak için mikro programlama terimini kullandı .

Örnekler

  • EMIDEC 1100 güya "dantel" olarak bilinen ferrit çekirdekleri aracılığıyla dişli tellerden oluşan, sabit kablolu kontrol depo kullanır.
  • IBM System/360 serisinin çoğu modeli mikro programlanmıştır:
    • Model 25 mikro programa kontrol depolama tutmak için 16 L çekirdek depolama bayt üst kullanarak sistem / 360 modelleri arasında tektir. 2025, yedi kontrol kelimesi (veya mikro talimatlar) içeren 16 bitlik bir mikro mimari kullanır. Sistem bakımından sonra veya çalışma modunu değiştirirken, mikro kod kart okuyucudan, banttan veya başka bir cihazdan yüklenir. IBM 1410 bu model için emülasyon bu şekilde yüklenir.
    • Model 30 , sadece birkaç donanım kayıtları sahip 8 bitlik mikro mimariyi kullanır; programcının gördüğü her şey mikro program tarafından taklit edilir. Bu modelin mikro kodu, makinenin içinde "CROS" birimleri (Kapasitör Salt Okunur Depolama) adı verilen özel bir okuyucuda saklanan özel delikli kartlarda da tutulur. 1401/1440/1460 emülasyonu ile sipariş edilen makineler ve 1620 emülasyonu ile sipariş edilen makineler için ek bir CROS birimi eklenir.
    • Model 40 56-bit kontrol sözcükleri kullanır. 2040 kutusu hem System/360 ana işlemcisini hem de multipleks kanalını (I/O işlemcisi) uygular. Bu model, "CROS" birimlerine benzer, ancak bir endüktif alıcıya sahip "TROS" özel okuyucuları kullanır (Transformer Salt Okunur Mağaza).
    • Model 50 aritmetik işlemleri için kullanılan 32-bit veriyolu ve bazı mantıksal işlemlerinde kullanılan bir 8-bit veri yolu: iki dahili paralel olarak çalıştırılan ortak veri yolu yer alır. Kontrol deposu, 90 bitlik mikro yönergeler kullanır.
    • Model 85 ayrı kılavuz getirme olan (I-ünitesi) ve uygulama (E-birimi) yüksek performans elde edilir. I-ünitesi donanım kontrollüdür. E-birim mikro programlanmıştır; kontrol sözcükleri, temel bir 360/85'te 108 bit genişliğinde ve bir öykünücü özelliği kuruluysa daha geniştir.
  • NCR 315 elle kablolu ferrit çekirdekleri (a ile mikroprogramlı olan ROM koşullu uygulama ile bir sıralayıcı ile pulse). Çekirdeklerden geçen teller, işlemcideki çeşitli veri ve mantık öğeleri için etkinleştirilir.
  • Digital Equipment Corporation PDP-11 işlemcileri, PDP-11/20 hariç, mikro programlanmıştır.
  • Çoğu Data General Eclipse mini bilgisayarı mikro programlanmıştır. Eclipse MV/8000 için mikro kod yazma görevi , Pulitzer Ödüllü Yeni Bir Makinenin Ruhu adlı kitapta ayrıntılı olarak açıklanmıştır .
  • Burroughs'un birçok sistemi mikro programlanmıştır:
  • B700 "mikroişlemci", ana bellekte depolanan 16 bitlik mikro komut dizilerini kullanarak uygulama düzeyinde işlem kodlarını yürütür; bunların her biri ya bir kayıt-yükleme işlemidir ya da salt okunur bellekte saklanan tek bir 56 bitlik "nanokod" talimatına eşlenir. Bu, nispeten basit donanımın ya bir ana bilgisayar çevre birimi denetleyicisi olarak işlev görmesine ya da bağımsız bir bilgisayar olarak paketlenmesine olanak tanır.
  • B1700 bit adres ana bellek gibi radikal olarak farklı donanım ile hayata ancak benzer çok katmanlı organizasyonu sahiptir. İşletim sistemi, gerekli olan dil için yorumlayıcıyı önceden yükler. Bu yorumlayıcılar COBOL , Fortran vb. için farklı sanal makineler sunar .
  • Mikro kodun kullanıcı tarafından erişilebilir olduğu mikro verilerle üretilen bilgisayarlar; bu, özel montajcı düzeyinde talimatların oluşturulmasına izin verir. Microdata'nın Reality işletim sistemi tasarımı, bu yeteneği kapsamlı bir şekilde kullanır.
  • Xerox Alto iş istasyonu sayıda bilgisayarda aksine mikrokodu motoru katmanlı tasarımda programcı gizli değil, bir microcoded tasarımı kullanılan ancak. Uygulamalar, performansı hızlandırmak için bundan yararlanır.
  • Nintendonun 64 'in Gerçeklik işlemciye konsol olarak hizmet verir (RCP), birim işleme grafik ve ses işlemci, mikro kod kullanır; istenen çıktıyı elde etmek için yeni efektler uygulamak veya işlemciyi değiştirmek mümkündür. Özel BİP mikrokodunun Bazı önemli örnekler bulunan yüksek çözünürlüklü grafikler, parçacık motorları ve sınırsız çekme mesafelerini içerir Factor 5 'in Indiana Jones ve Infernal Machine , Rogue Squadron: Star Wars ve Star Wars: Naboo Savaşı ; ve Angel Studios'un Resident Evil 2'sinde bulunan tam hareketli video oynatma .
  • Sony PlayStation 2'deki VU0 ve VU1 vektör birimleri mikro programlanabilir; aslında, VU1'e yalnızca SDK'nın ilk birkaç nesli için mikro kod aracılığıyla erişilebilir.
  • MicroCore Labs MCL86 , MCL51 ve MCL65 , Intel 8086/8088, 8051 ve MOS 6502'nin yüksek düzeyde kodlanmış "dikey" mikro sıralayıcı uygulamalarının örnekleridir.
  • Dijital Bilimsel Corp Meta 4 Serisi 16 bilgisayar sistemi mikro kod 32 bit Mikroişlemler ile öncelikle dikey tarzı vardı 1970 yılında ilk kullanılabilir kullanıcı microprogammable sistemini oldu. Talimatlar, bir bit konumları ızgarası ile değiştirilebilir program panolarında saklandı. Bir (1) bit, amplifikatörler tarafından algılanan küçük metal karelerle, sıfır (0) bitler ise karelerin olmamasıyla temsil edildi. Sistem, 4K'ya kadar 16 bit microstore word'ü ile yapılandırılabilir. Digital Scientific'in ürünlerinden biri, IBM 1130 için bir öykünücüydü .
  • Daha önceki x86 işlemciler tamamen mikro kodlanmıştır; Intel 80486 ile başlayarak , daha az karmaşık yönergeler doğrudan donanımda uygulanmaktadır. x86 işlemciler, Intel P6 mikromimarisi ve AMD K7 mikromimarisinden bu yana yama yapılabilir mikro kod ( BIOS veya işletim sistemi tarafından yama) uygulamıştır .
  • Bazı video kartları , kablosuz ağ arabirim denetleyicileri, yamalanabilir mikro kod (işletim sistemine göre yama) uygular.

uygulama

Bir mikro programdaki her mikro talimat, dahili olarak bir CPU oluşturan işlevsel öğeleri kontrol eden bitleri sağlar. Kablolu CPU'ya göre avantajı, dahili CPU kontrolünün bir bilgisayar programının özel bir biçimi haline gelmesidir. Böylece Microcode, karmaşık bir elektronik tasarım sorununu (bir CPU'nun kontrolü) daha az karmaşık bir programlama zorluğuna dönüştürür. Bundan yararlanmak için, bir CPU birkaç bölüme ayrılmıştır:

  • Bir I-birimi , donanımdaki talimatların kodunu çözebilir ve talimatı E-birimi ile paralel olarak işlemek için mikrokod adresini belirleyebilir .
  • Bir mikro sıralayıcı , kontrol deposunun bir sonraki kelimesini seçer. Sıralayıcı çoğunlukla bir sayaçtır, ancak genellikle bazı verilere, genellikle talimat kaydından gelen verilere ve her zaman kontrol deposunun bir kısmına bağlı olarak kontrol deposunun farklı bir bölümüne atlamanın bir yolu vardır . En basit sıralayıcı, kontrol deposunun birkaç bitinden yüklenen bir kayıttır.
  • Bir yazmacı grubu merkezi işlem birimi verileri ihtiva eden bir hızlı bir hafızadır. Bu içerebilir program sayacı ve yığın işaretçisi ve aynı zamanda uygulama programcısının kolayca ulaşılamayan diğer kayıtları içerebilir. Genellikle kayıt seti, üç kapılı bir kayıt dosyasıdır ; yani, aynı anda iki kayıt okunabilir ve üçüncüsü yazılabilir.
  • Bir aritmetik ve mantık birimi , genellikle toplama, mantıksal olumsuzlama, sağa kaydırma ve mantıksal AND gibi hesaplamaları gerçekleştirir. Genellikle başka işlevleri de yerine getirir.

Ana bilgisayar deposuna erişmek için kullanılan bir bellek adres kaydı ve bir bellek veri kaydı da olabilir . Bu unsurlar birlikte bir " yürütme birimi " oluşturur. Çoğu modern CPU'nun birkaç yürütme birimi vardır. Basit bilgisayarlarda bile genellikle belleği okumak ve yazmak için bir birime ve kullanıcı kodunu yürütmek için bir başka birime sahiptir. Bu elemanlar genellikle tek bir çip olarak bir araya getirilebilir. Bu çip, yürütme birimi boyunca bir "dilim" oluşturacak sabit bir genişlikte gelir. Bunlar " bit dilim " yongaları olarak bilinir . AMD Am2900 aile bit dilim elemanlarının en iyi bilinen örneklerinden biridir. Yürütme birimlerinin parçaları ve yürütme birimlerinin kendileri, veri yolu adı verilen bir kablo demeti ile birbirine bağlanır .

Programcılar, temel yazılım araçlarını kullanarak mikro programlar geliştirir. Bir mikro birleştirici , bir programcının bit tablosunu sembolik olarak tanımlamasına izin verir. Temel mimariyle yakın ilişkisi nedeniyle, "mikro kod, bir derleyici kullanarak oluşturmayı zorlaştıran çeşitli özelliklere sahiptir." Bir simülatör programı, bitleri elektroniklerle aynı şekilde yürütmeyi amaçlar ve mikro programda hata ayıklamak için çok daha fazla özgürlük sağlar. Mikro program sonlandırıldıktan ve kapsamlı bir şekilde test edildikten sonra, bazen aynı verileri üretmek için mantık oluşturan bir bilgisayar programına girdi olarak kullanılır. Bu program, programlanabilir bir mantık dizisini optimize etmek için kullanılanlara benzer . Tamamen optimal mantık olmadan bile, buluşsal olarak optimize edilmiş mantık, bir ROM kontrol deposu için gereken sayıdan transistör sayısını büyük ölçüde azaltabilir. Bu, bir CPU'nun üretim maliyetini ve tükettiği elektriği azaltır.

Mikrokod, yatay veya dikey olarak karakterize edilebilir , öncelikle her bir mikro talimatın CPU öğelerini çok az kod çözme ile (yatay mikrokod) kontrol edip etmediğine veya bunu yapmadan önce kombinatoryal mantıkla kapsamlı kod çözme gerektirip gerektirmediğine (dikey mikrokod) atıfta bulunur . Sonuç olarak, her yatay mikro talimat daha geniştir (daha fazla bit içerir) ve dikey bir mikro talimattan daha fazla depolama alanı kaplar.

yatay mikro kod

"Yatay mikrokod, eşzamanlı işlem için tek bir mikro talimatta birleştirilen birkaç ayrı mikro işleme sahiptir." Yatay mikrokod tipik olarak oldukça geniş bir kontrol deposunda bulunur; her kelimenin 108 bit veya daha fazla olması nadir değildir. Sıralayıcı saatin her tıkında bir mikrokod sözcüğü okunur, kodu çözülür ve CPU'yu oluşturan işlevsel öğeleri kontrol etmek için kullanılır.

Tipik bir uygulamada, yatay bir mikro program sözcüğü, oldukça sıkı bir şekilde tanımlanmış bit gruplarını içerir. Örneğin, basit bir düzenleme şöyle olabilir:

Kaynak A'yı kaydet Kaynak B'yi kaydet hedef kayıt Aritmetik ve mantık birimi işlemi atlama türü atlama adresi

Bu tip mikromakinenin, işlem kodunu takip eden adrese sahip bir JUMP talimatını uygulaması için, mikrokod iki saat işareti gerektirebilir. Bunu tasarlayan mühendis, şöyle bir şeye benzeyen mikro birleştirici kaynak kodu yazacaktır:

  # Any line starting with a number-sign is a comment
  # This is just a label, the ordinary way assemblers symbolically represent a 
  # memory address.
InstructionJUMP:
      # To prepare for the next instruction, the instruction-decode microcode has already
      # moved the program counter to the memory address register. This instruction fetches
      # the target address of the jump instruction from the memory word following the
      # jump opcode, by copying from the memory data register to the memory address register.
      # This gives the memory system two clock ticks to fetch the next 
      # instruction to the memory data register for use by the instruction decode.
      # The sequencer instruction "next" means just add 1 to the control word address.
   MDR, NONE, MAR, COPY, NEXT, NONE
      # This places the address of the next instruction into the PC.
      # This gives the memory system a clock tick to finish the fetch started on the
      # previous microinstruction.
      # The sequencer instruction is to jump to the start of the instruction decode.
   MAR, 1, PC, ADD, JMP, InstructionDecode
      # The instruction decode is not shown, because it is usually a mess, very particular
      # to the exact processor being emulated. Even this example is simplified.
      # Many CPUs have several ways to calculate the address, rather than just fetching
      # it from the word following the op-code. Therefore, rather than just one
      # jump instruction, those CPUs have a family of related jump instructions.

Her bir onay işareti için CPU'nun yalnızca bazı bölümlerinin kullanıldığını ve mikro yönergede kalan bit gruplarının işlemsiz olduğunu bulmak yaygındır. Donanım ve mikro kodun dikkatli tasarımıyla, bu özellik CPU'nun farklı alanlarını kullanan işlemleri paralelleştirmek için kullanılabilir; örneğin, yukarıdaki durumda, ilk onay sırasında ALU gerekli değildir, bu nedenle potansiyel olarak daha önceki bir aritmetik talimatı tamamlamak için kullanılabilir.

Dikey mikro kod

Dikey mikrokodda, her bir mikro komut önemli ölçüde kodlanmıştır - yani, bit alanları genellikle ara birleştirici mantıktan geçer ve bu da sırayla dahili CPU öğeleri (ALU, yazmaçlar, vb.) için gerçek kontrol ve sıralama sinyallerini üretir. Bu, bit alanlarının kendilerinin ya doğrudan kontrol ve sıralama sinyallerini ürettiği ya da yalnızca minimum düzeyde kodlandığı yatay mikro kodun aksinedir. Sonuç olarak, dikey mikrokod, daha küçük talimat uzunlukları ve daha az depolama gerektirir, ancak kodun çözülmesi için daha fazla zaman gerektirir, bu da daha yavaş bir CPU saatine neden olur.

Bazı dikey mikro kodlar, daha karmaşık bir bilgisayarı taklit eden basit bir geleneksel bilgisayarın derleme dilidir. DEC Alpha işlemcileri ve sonraki IBM System/390 ana bilgisayarları ve z/Architecture ana bilgisayarlarındaki CMOS mikroişlemciler gibi bazı işlemciler, makine kodunu kullanır ve makine kodunu kullanır, bu da makinenin özel talimatlara, özel kayıtlara ve diğer donanım kaynaklarına erişmesini sağlar. normal makine kodu için kullanılabilir, Alpha işlemcilerde sayfa tablosu yürüyüşleri gibi bazı talimatları ve diğer işlevleri uygulamak için. Bu denir PALcode Alfa işlemcileri ve üzerinde millicode IBM ana işlemci üzerinde.

Dikey mikro kodun başka bir formunun iki alanı vardır:

Alan seçimi Alan değeri

Alan seçmek CPU parçası kontrolü mağaza bu kelime ile kontrol edilecektir seçer. Alan değeri aslında CPU o kısmını kontrol eder. Bu tür bir mikro kodla, bir tasarımcı, kontrol deposundaki kullanılmayan bitleri azaltarak paradan tasarruf etmek için açıkça daha yavaş bir CPU yapmayı seçer; bununla birlikte, azaltılmış karmaşıklık, CPU'nun saat frekansını artırabilir, bu da talimat başına artan döngü sayısının etkisini azaltır.

Transistörler daha ucuz hale geldikçe, yatay mikrokod, mikrokod kullanan CPU'ların tasarımına hakim oldu ve dikey mikrokod daha az kullanıldı.

Hem dikey hem de yatay mikrokod kullanıldığında, yatay mikrokod nanokod veya picocode olarak adlandırılabilir .

Yazılabilir kontrol deposu

Birkaç bilgisayar "yazılabilir mikro kod" kullanılarak yapılmıştır. Bu tasarımda, mikro kodu ROM'da veya kablolu mantıkta depolamak yerine, mikro kod, yazılabilir kontrol deposu veya WCS adı verilen bir RAM'de depolanır . Böyle bir bilgisayara bazen yazılabilir komut seti bilgisayarı veya WISC denir .

Birçok deneysel prototip bilgisayar yazılabilir kontrol depolarını kullanır; Ayrıca Burroughs Small Systems , erken dönem Xerox iş istasyonları, DEC VAX 8800 ("Nautilus") ailesi, Symbolics L- ve G makineleri, bir dizi IBM System/360 ve System gibi yazılabilir mikro kod kullanan ticari makineler de vardır . /370 uygulamaları, bazı DEC PDP-10 makineleri ve Data General Eclipse MV/8000 .

HP 2100 , DEC PDP-11/60 ve Varian Data Machines V-70 serisi mini bilgisayarlar da dahil olmak üzere daha birçok makine bir seçenek olarak kullanıcı tarafından programlanabilen yazılabilir kontrol depoları sunar . IBM System/370, açılışta sıfırlamanın ( POR ) bir parçası olarak konsoldan veya sıkı bir şekilde bağlanmış çok işlemcili bir kompleksteki başka bir işlemciden çağrılabilen İlk Mikroprogram Yükü ( IML veya IMPL ) adlı bir tesis içerir .

Bazı ticari makineler, örneğin IBM 360/85, mikro kod için hem salt okunur bir depolamaya hem de yazılabilir bir kontrol deposuna sahiptir.

WCS, mikro programı yamalama kolaylığı ve belirli donanım nesilleri için ROM'ların sağlayabileceğinden daha hızlı erişim dahil olmak üzere çeşitli avantajlar sunar. Kullanıcı tarafından programlanabilen WCS, kullanıcının makineyi belirli amaçlar için optimize etmesine olanak tanır.

1995'te Pentium Pro ile başlayarak , birkaç x86 CPU'da yazılabilir Intel Microcode . Bu, örneğin, Intel Core 2 ve Intel Xeon mikro kodlarındaki hataların , tüm çiplerin değiştirilmesini gerektirmek yerine mikro programlarına yama yapılarak düzeltilmesine izin verdi . - İkinci bir önemli örnek, Intel kendi tasarımları keşfedilen güvenlik açıklarını karşı bir teklif, yaş 10 yıla kadar onların işlemci mimarileri bazıları için sunduğu mikrokodu yamaların kümesidir Spectre ve Meltdown - başında halka arz 2018. Bir mikro kod güncellemesi Linux, FreeBSD , Microsoft Windows veya anakart BIOS'u tarafından yüklenebilir .

VLIW ve RISC ile karşılaştırma

Karmaşık talimatlara sahip yoğun mikro kodlu işlemcilere yönelik tasarım eğilimi 1960'ların başında başladı ve kabaca 1980'lerin ortalarına kadar devam etti. Bu noktada RISC tasarım felsefesi daha belirgin hale gelmeye başladı.

Mikrokod kullanan bir CPU, genellikle tek bir talimatı yürütmek için birkaç saat döngüsü, bu talimat için mikro programdaki her adım için bir saat döngüsü alır. Bazı CISC işlemcileri, yürütülmesi çok uzun zaman alabilen talimatlar içerir. Bu tür varyasyonlar hem kesme gecikmesine hem de modern sistemlerde çok daha önemli olan boru hattına müdahale eder .

Yeni bir işlemci tasarlarken, kablolu bir kontrol RISC'si, mikro kodlu CISC'ye göre aşağıdaki avantajlara sahiptir:

  • Programlama, büyük ölçüde montaj seviyesinden uzaklaştı, bu nedenle üretkenlik nedenleriyle karmaşık talimatlar vermeye artık değmez.
  • Daha basit komut setleri, mikro kodlu yürütmenin performans cezasını ortadan kaldırarak, donanım tarafından doğrudan yürütmeye izin verir.
  • Analiz, karmaşık talimatların nadiren kullanıldığını, dolayısıyla bunlara ayrılan makine kaynaklarının büyük ölçüde boşa harcandığını gösteriyor.
  • Nadiren kullanılan karmaşık talimatlara ayrılan makine kaynakları, daha basit, yaygın olarak kullanılan talimatların performansını hızlandırmak için daha iyi kullanılır.
  • Karmaşık mikro kodlu talimatlar, değişen ve artırılmış performans için ardışık düzene geçirilmesi zor olan birçok saat döngüsü gerektirebilir .

Karşı noktalar da var:

  • Yoğun şekilde mikro kodlanmış uygulamalardaki karmaşık talimatlar, mikro kod alanı dışında fazladan makine kaynağı gerektirmeyebilir. Örneğin, aynı ALU, gerçek işlenenlerden (örneğin, orijinal Z80 , 8086 ve diğerleri) sonucu hesaplamanın yanı sıra etkin bir adresi hesaplamak için sıklıkla kullanılır .
  • Daha basit RISC olmayan komutlar (yani, doğrudan bellek işlenenlerini içeren ) modern derleyiciler tarafından sıklıkla kullanılır. Hatta yığınlama anında (yani bellek sonucu) aritmetik işlemler de yaygın olarak kullanılır. Genellikle değişen uzunluk kodlamalarına sahip bu tür bellek işlemlerinin ardışık düzene geçirilmesi daha zor olsa da, bunu yapmak hala tamamen mümkündür - i486 , AMD K5 , Cyrix 6x86 , Motorola 68040 vb. ile açıkça örneklendirilmiştir .
  • RISC olmayan komutlar, talimat başına (ortalama olarak) doğal olarak daha fazla iş gerçekleştirir ve ayrıca normalde yüksek oranda kodlanır, bu nedenle aynı programın daha küçük toplam boyutunu ve dolayısıyla sınırlı önbellek belleklerinin daha iyi kullanılmasını sağlar.

Birçok RISC ve VLIW işlemcisi, her talimatı (önbellekte olduğu sürece) tek bir döngüde yürütmek üzere tasarlanmıştır. Bu, mikro kodlu CPU'ların döngü başına bir mikro yönerge yürütme biçimine çok benzer. VLIW işlemcileri, tipik olarak mikrokod tarafından sağlanan donanım üzerinde bu tür ince taneli kontrole sahip olmasa da, çok geniş yatay mikrokoda benzer şekilde davranan talimatlara sahiptir. RISC talimatları bazen dar dikey mikrokoda benzer.

Mikrokodlama, ağ işlemcileri , mikro denetleyiciler , dijital sinyal işlemcileri , kanal denetleyicileri , disk denetleyicileri , ağ arabirim denetleyicileri , grafik işleme birimleri ve diğer donanımlar gibi uygulamaya özel işlemcilerde popüler olmuştur .

Mikro Operasyonlar

x86 ailesi gibi modern CISC uygulamaları, RISC veya geleneksel mikro koda benzer bir talimat kodlamasıyla talimatları dinamik olarak arabelleğe alınmış mikro işlemlere ("μops") çözer. Kablolu bir talimat kod çözme birimi, yaygın x86 talimatları için doğrudan μops yayar, ancak daha karmaşık veya nadiren kullanılan talimatlar için daha geleneksel bir mikrokod ROM'a geri döner.

Örneğin, bir x86, döngü veya dize yönergeleri, kayan noktalı birim aşkın işlevler veya normal olmayan sayılar gibi olağandışı değerler ve CPUID gibi özel amaçlı yönergeler gibi karmaşık çok adımlı işlemleri işlemek için mikrokoddan μop'ları arayabilir .

Ayrıca bakınız

Notlar

Referanslar

daha fazla okuma

Dış bağlantılar