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.
- ALU'nun iki veri girişi (A, B), bir işlem seçimi (ALUop), bir sonuç çıkışı ve bayrakları (zero, carry, overflow) vardır.
- İç yapı: her işlem paralel hesaplanır (adder, AND, OR, …). Bir çoklayıcı ALUop'a göre doğru olanı seçer.
- 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).
- Modern ALU'larda kaydırıcı da vardır (mantıksal, aritmetik, rotate). Hepsi ekstra ALUop bitleriyle seçilir.
- 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.
- Yazmaç dosyası N yazmaçtan birini (küçük CPU'larda tipik 8/16/32) indekse göre adreslemene izin verir.
- Okuma portları kombinasyoneldir: bir MUX hangi yazmacın Q'sunun read busa süreceğini seçer. CPU'lar genelde iki paralel okuma sunar.
- Yazma portu saatlidir: adres hedefi seçer, write-enable + saat kenarı giriş verisini o yazmaca yazar.
- Konvansiyon: yazmaç 0 sabit sıfırdır. Gerçek flop'a gerek kalmadan "sıfırdan çıkar" hilesi için yer açar.
- 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.
- Veri yolu birbirine bağlar: program sayacı (PC), komut belleği, yazmaç dosyası, ALU, veri belleği, write-back MUX.
- 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.
- PC güncelleme: ardışık için PC+4, taken branch için PC+offset. Bir MUX branch sonucuna göre seçer.
- Tek-çevrim kavramsal olarak basit ama yavaş — saat periyodu her aşamadaki en uzun yola eşittir. Bu yüzden pipeline icat oldu.
- 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.
- Kontrol birimi komut opcode'unu (bazen function bitlerini) alır ve sinyal vektörü çıkarır: ALUop, RegWrite, MemRead, MemWrite, Branch, …
- Hardwired kontrol: opcode → sinyal vektörü bir ROM/PLA'ya kodlanır. Hızlı ama katı; ISA değişince tablo yeniden kurulur.
- Mikrokodlu kontrol: opcode bir mikroprogram ROM'unu indeksler ve birkaç mikro-komut üretir. Yavaş ama değişime açık.
- İkisi de nandbench'ta ROM + sıralama için küçük bir FSM ile kurulabilir. ROM kontrol sözcük tablosunu tutar.
- Bunu önceki dersteki veri yoluna bağla — opcode in, kontrol sinyalleri out — küçük çalışan bir CPU'n olur.
nandbench