nandbench logosunandbench

Veri Yolu ve İşlemci — Dersler

Veri Yolu ve İşlemci ünitesindeki 4 ders. Her ders kısa bir anlatım ve adım adım bir yürüyüştür; çoğu nandbench'te açıp denemek için bir şablonla gelir.

8.1 ALU — aritmetik mantık birimi

İsteğe göre add / sub / and / or / xor yapan MUX'lu blok.

  1. ALU'nun iki veri girişi (A, B), bir işlem seçimi (ALUop), bir sonuç çıkışı ve bayrakları (zero, carry, overflow) vardır.
  2. İç yapı: her işlem paralel hesaplanır (adder, AND, OR, …). Bir çoklayıcı ALUop'a göre doğru olanı seçer.
  3. Toplama/çıkarma 3.4'teki hile ile yapılır: B girişine XOR koy, koşullu olarak ters çevir; adder'in Cin'ini 1 yap (+1 ekle).
  4. Modern ALU'larda kaydırıcı da vardır (mantıksal, aritmetik, rotate). Hepsi ekstra ALUop bitleriyle seçilir.
  5. ALU-skeleton şablonunu aç. A ve B sür, ALUop'ı tüm değerlerinde tara, sonuç ve bayrakları oku.

8.2 Yazmaç dosyası

İki okuma ve bir yazma portuyla yazmaç dizisi.

  1. Yazmaç dosyası N yazmaçtan birini (küçük CPU'larda tipik 8/16/32) indekse göre adreslemene izin verir.
  2. Okuma portları kombinasyoneldir: bir MUX hangi yazmacın Q'sunun read busa süreceğini seçer. CPU'lar genelde iki paralel okuma sunar.
  3. Yazma portu saatlidir: adres hedefi seçer, write-enable + saat kenarı giriş verisini o yazmaca yazar.
  4. Konvansiyon: yazmaç 0 sabit sıfırdır. Gerçek flop'a gerek kalmadan "sıfırdan çıkar" hilesi için yer açar.
  5. Register-file şablonunu aç, adres 3'e değer yaz, sonra iki okuma portundan herhangi biriyle geri oku.

8.3 Tek-çevrimli veri yolu

PC → bellek → yazmaç dosyası → ALU → yazmaç dosyası, tek saatte.

  1. Veri yolu birbirine bağlar: program sayacı (PC), komut belleği, yazmaç dosyası, ALU, veri belleği, write-back MUX.
  2. Her saat çevriminde: komutu PC adresinden al, çöz, kaynak yazmaçları oku, ALU ile yürüt, gerekirse veri belleğini oku/yaz, yazmaç dosyasına geri yaz.
  3. PC güncelleme: ardışık için PC+4, taken branch için PC+offset. Bir MUX branch sonucuna göre seçer.
  4. Tek-çevrim kavramsal olarak basit ama yavaş — saat periyodu her aşamadaki en uzun yola eşittir. Bu yüzden pipeline icat oldu.
  5. Kablolamadan önce kâğıt üstünde çiz; her MUX'un kontrol sinyalini etiketle. Sonraki ders bunları üreten kontrol birimini açıklar.

8.4 Kontrol birimi

Komutu çöz, veri yolunun ihtiyaç duyduğu tüm kontrol sinyallerini üret.

  1. Kontrol birimi komut opcode'unu (bazen function bitlerini) alır ve sinyal vektörü çıkarır: ALUop, RegWrite, MemRead, MemWrite, Branch, …
  2. Hardwired kontrol: opcode → sinyal vektörü bir ROM/PLA'ya kodlanır. Hızlı ama katı; ISA değişince tablo yeniden kurulur.
  3. Mikrokodlu kontrol: opcode bir mikroprogram ROM'unu indeksler ve birkaç mikro-komut üretir. Yavaş ama değişime açık.
  4. İkisi de nandbench'ta ROM + sıralama için küçük bir FSM ile kurulabilir. ROM kontrol sözcük tablosunu tutar.
  5. Bunu önceki dersteki veri yoluna bağla — opcode in, kontrol sinyalleri out — küçük çalışan bir CPU'n olur.

← Tüm üniteler

nandbench'i ücretsiz aç →