CPU'da Komut Döngüsü: Getirme, Kod Çözme ve Yürütme Nasıl Çalışır?

CPU'da Komut Döngüsü
Ne işlemci bellekte bulunan bir programın komutlarını yürütür. Ama hepsinin aynı genel kurallara uyduğunu biliyor muydunuz? Hepsi, getirme, kod çözme ve yürütme olarak çevrilen Fetch, Decode ve Execute adlı üç farklı aşamaya bölünmüş aynı talimat döngüsünü izler. Bu aşamaların nasıl çalıştığını ve nasıl organize edildiğini açıklıyoruz.

Bu makalede açıklanan kavramları basitleştirmek ve daha anlaşılır kılmak için, şimdiki zamanlar için son derece basit bir işlemci tanımlamaya karar verdik, bu nedenle bu makalede, hangi talimat döngülerinin uygulanabilecek genelleştirilmiş bir şekilde bir açıklamasını göreceksiniz ilk 8 bit işlemcilerden bugün mevcut olan en karmaşık işlemcilere

Komut döngüsünü görselleştirme

Ciclo Instrucción Unidad Kontrolü

İşlemciler, ister 2 zamanlı ister 4 zamanlı olsun, her zaman farklı aşamalarda sürekli bir yakıt patlaması işlemi gerçekleştiren yanmalı bir motora belirli bir bakış açısından farklı değildir. Bunun nedeni, işlemcilerin en basit sürümlerinde üç farklı aşamada çalışmasıdır, bunlar aşağıdaki gibidir:

  • Getirme veya Yakalama: Komutun RAM'den yakalandığı ve işlemcinin içine kopyalandığı.
  • Kod Çözme veya Kod Çözme: Daha önce yakalanan talimatın kodunun çözüldüğü ve yürütme birimlerine gönderildiği
  • Yürüt: Talimatın çözüldüğü ve sonucun işlemcinin dahili kayıtlarına veya RAM'in bellek adresine yazıldığı yer

Bu üç aşama her işlemcide gerçekleştirilir. Dördüncü bir aşama olan Geri Yazma, yürütme birimlerinin sonucu yazdığı zamandır, ancak bu genellikle komut döngüsünün yürütme aşamasında sayılır.

Komut döngüsünün ilk aşaması: Getirme

Getirme Süreci

Öğretim döngüsünün ilk aşaması, içindeki talimatları yakalamaktan sorumludur. RAM aşağıdaki gibi bir dizi birim ve kayıt aracılığıyla işlemciye atanan bellek:

  1. Program Sayacı veya Program Sayacı: Bir sonraki işlemci talimatının bulunduğu sonraki bellek hattını işaret eder. Tam bir komut döngüsü tamamlandığında veya bir atlama talimatı program sayacının değerini değiştirdiğinde, değeri 1 artar.
  2. Bellek Adresi Kaydı: MAR, bilgisayarın içeriğini kopyalar ve RAM'in kendisinin adresleme pinleri ile bağlanan CPU'nun adresleme pinleri aracılığıyla RAM'e gönderir.
  3. Hafıza Veri Kaydı veya hafıza veri kaydı : CPU'nun bir bellek okuması gerçekleştirmesi durumunda, MDR'nin yaptığı şey, bu bellek adresinin içeriğini, içeriği Komut Kaydına kopyalanmadan önce geçici bir geçiş kaydı olan CPU'nun dahili bir kaydına kopyalamaktır. MDR, MAR'dan farklı olarak, adresleme pinlerine değil, RAM'in veri pinlerine bağlanır ve bir yazma talimatı olması durumunda, RAM'e yazmak istediklerinizin içeriği de MDR'ye yazılır.
  4. Talimat Kaydı: Getirme aşamasının son kısmı, işlemcinin kontrol biriminin talimat döngüsünün ikinci aşaması için içeriğini kopyalayacağı talimat yazmacındaki talimatın yazılmasıdır.

Bu 4 alt aşama, yardımcı program, mimari ve ikili uyumluluğu veya ISA dediğimiz şey ne olursa olsun tüm işlemcilerde meydana gelir.

Kontrol ünitesi

Kontrol ünitesi

Kontrol ünitesi, bir işlemcide bulunan en karmaşık kısımdır ve görevleri aşağıdaki gibidir:

  • İşlemcinin içinde ve dışında hareket eden verilerin yanı sıra ondan sorumlu olan farklı alt birimlerin hareketini ve sırasını koordine etmekten sorumludurlar.
  • Genel olarak, yakalama aşamasının veya Getirme birimlerinin kontrol birimi dediğimiz donanımın bir parçası olduğu düşünülür ve bu donanıma bir işlemcinin Ön Ucu da denilir.
  • Talimatları yorumlar ve bağlı olduğu farklı yürütme birimlerine gönderir.
  • Hareket eden işlemcinin farklı ALU'larına ve yürütme birimlerine iletilir.
  • Talimatların yakalanmasından ve kodunun çözülmesinden, aynı zamanda sonuçların kayıtlara, önbelleklere veya RAM'in karşılık gelen adresine yazılmasından sorumludur.

İşlem Kodu Modu Adresi

Kontrol biriminin yaptığı şey komutların kodunu çözmektir ve bunu yapar çünkü her talimat aslında fiilin önce gittiği bir tür cümle ve ardından eylemin yapıldığı doğrudan nesne veya nesnedir. Konu, bilgisayarların bu iç dilinde, onu çalıştıranın bilgisayarın kendisi olduğunun anlaşılmasıyla ortadan kaldırılır, bu nedenle her bit sayısı, ilk 1 ve 0'ın eyleme ve birlere karşılık geldiği bir cümle olur. sıradaki, işlenecek verilerin verileri veya konumudur.

İkinci aşama: Kod çözme

Decodificación Talimatları

Farklı talimat türleri vardır ve hepsi aynı şeyi yapmaz, bu nedenle talimatın türüne bağlı olarak hangi yürütme birimlerinin gönderileceğini bilmemiz gerekir ve bunu yapmanın en klasik yolu kod çözücü dediğimiz şeydir. , her bir talimatı alan, onu dahili olarak işlem kodu veya talimat ve bulunduğu yerdeki veri veya hafıza adresine göre böler.

Örneğin yukarıdaki diyagramda sadece 8 bitte kodlanabilen sadece 3 komutlu bir işlemci diyagramına sahibiz. Komutların her biri, kodu çözüldükten sonra, bunları çözecek farklı yürütme birimlerine gönderilir.

Bu talimat döngüsü, en karmaşık olanıdır ve mimari türünü tanımlayan döngüdür. Azaltılmış veya karmaşık bir talimat setimiz olup olmamasına bağlı olarak, bu, talimatın formatına veya kod çözme aşamasının aynı anda kaçının işlendiğine bağlı olarak kontrol ünitesinin doğasını etkileyecektir ve bu nedenle kontrol ünitesi bir farklı doğa. diğer.

Olanları görselleştirmenin en kolay yolu, talimatları karmaşık bir demiryolu ağında dolaşan trenler ve kontrol ünitesinin onları talimatı çözmekten sorumlu yürütme birimi olan bir terminal istasyonuna yönlendirmesi olarak düşünmektir.

Üçüncü aşama: Yürütme

1 bit ALÜ

Son aşama, talimatların yürütülmesidir, bu aşamada talimatlar çözülür, ancak tüm talimat türleri aynı şekilde çözülmez, çünkü donanımı kullanma şekli her birinin işlevine bağlı olacaktır. bunlar, genel olarak dört tür talimatımız vardır:

  • Bit hareket talimatları: Verileri içeren bitlerin sırasının manipüle edildiği.
  • Aritmetik talimatlar: Matematiksel ve mantıksal işlemlerin gerçekleştirildiği yerlerde, bunlar ALU'lar veya aritmetik-mantıksal birimler olarak çözülür.
  • Jump talimatları: Program sayacının sonraki değerinin değiştirildiği, kodun yinelemeli olarak kullanılmasına izin verir.
  • Hafıza talimatları: İşlemcinin sistem belleğinden bilgi okuduğu ve yazdığı yerlerdir.

Diğer nokta komut formatlarıdır, çünkü bir komut bir veriye, skalere veya birkaç veriye aynı anda uygulanabilir, ki biz bunu SIMD olarak biliyoruz. Bitirmek için ve veri formatına bağlı olarak, aritmetik komutların yürütülmesi için farklı ALU türleri vardır, örneğin bugün farklılaştırılmış birimler olarak tamsayı ve kayan nokta birimlerimiz var.

Komut tamamlandıktan sonra, sonuç belirli bir hafıza adresine yazılır ve bir sonraki çalıştırılır. Bazı talimatlar bellek değerlerini değil, belirli kayıtları yönetir. Bu nedenle, program sayaç kaydı atlama komutları tarafından değiştirilir, eğer verileri okumak veya yazmak istiyorsak MAR ve MDR kayıtları manipüle edilir.