BİLGİSAYAR MİMARİLERİ 7.Hafta: Çoklu-Çevrim İşlemci Doç.Dr. Ahmet ÖZMEN Sakarya Üniversitesi Bilgisayar Mühendisliği Bölümü
Ders Planı Tek-çevrim işlemci Tek-çevrim işlemcinin dezavantajları Çoklu-çevrim işlemciye genel bakış Yarış durumu (race condition) Farklı tiplerde komutların icraları
Tek-çevrim işlemci
Kavramlar Data path (veri yolu) Kontrol lojiği İşlevsel/Kombinezonsal Komponentler Durum/Bellek/Ardışıl Data Path Data için bus Bağlantılar Kontrol işaretleri Kontrol Lojiği Komutlar İşaretler
Komut çekme ünitesi (instr. fetch)
Ana kontrol
Tek-çevrim işlemcinin dezavantajları Uzun çevrim süresi: Çevrim süresi en uzun komuta göre ayarlanması gerekir (load komutu): PC nin Q ya saati + Komut belleği erişim süresi + ALU gecikmesi (adres hesabı) + Veri belleği erişim süresi + Saklayıcı kümesi (reg. file) setup zamanı + Saat eğim gecikmeleri Saat çevrim süresi birçok komut için gerekli olduğundan çok fazla Örnekler: R-tipi komutlar bellek erişimi yapmıyor Jump komutu ne bellek erişimi ne de veri belleği erişimi yapmıyor
Çoklu-çevrim işlemci (genel) Tek çevrimli işlemcinin problemlerinin kökü: Çevrim süresi en uzun komuta göre ayarlanması gerekiyor. Çözüm: Komutun icrasını küçük adımlara böl Her bir adımı (tüm komut yerine) bir çevrimde yürüt Çevrim süresi: En uzun adımı tamamlamak için geçen süre (en uzun komutu tamamlamak için değil) Her bir adımı yaklaşık eşit sürede tut Bu çoklu çevrimli işlemcinin temelini oluşturur
Çoklu çevrim işlemci (avantajlar) Çoklu çevrimli şlemcinin avantajları: Çevrim süresi çok kısa Farklı komutların icra çevrim sayıları farklı olabilir Load 5 çevrim Jump sadece 3 çevrim Bir komut icrası sırasında, işlevsel blokların (functional units) birden fazla defa kullanılmasına imkan tanır Adder + ALU Komut belleği + Veri belleği
Yükleme (load) komutunun 5 adımı
Reg. File & Bellek yazma (ideal ve gerçek) Önceki derslerde, 1 çevrimlik makinede reg. File ve bellek sadeleştirilmişti: Yazma saat tiklerinde oluyordu Adres, veri ve wr. Enable ucu set-up süresince kararlı olarak durması gerekiyordu Gerçek m-çevrimli makinelerde: Ne reg.file, ne de bellek saat girişine sahip değil Yazma yolu kombinezonsal ve gecikmesi olan bir yol Wr.Enable 1 olurken Din uygulanır, Bellek yazma erişimi gecikmesi, Din -> mem [adres]’e yazılır. Önemli: Wr.Enable 1 olmadan ÖNCE adres ve data kararlı olmalı.
Adres ve Wr. Enable arasında yarış durumu Gerçek rg. File (saat girişi olmayan) tek çevrimli makinede güvenli bir şekilde çalışmayabilir, çünkü; Rw’nin Reg.Wr. 1 olmadan ÖNCE kararlı olmasını garanti edemeyiz Rw (adres) ve RegWr(write enable) arasında yarış durumu vardır Gerçek (saat girişi olmayan) bellek tek çevrimli makinede güvenli bir şekilde çalışmayabilir, çünkü; WrEn = 1 olmadan önce adres’in kararlı olacağını garanti edemeyiz Adres ve WrEn arasında yarış vardır
Çoklu çevrimde yarış durumu Çoklu çevrimli sistemlerde yarış durumu için çözüm: n. çevrim sonunda adresin kararlı olacağından emin ol, Wr. Enable işaretini bir çevrim sonra (n+1)’de uygula, Write Enable kaldırılıncaya kadar adres değişemez.
Çift portlu ideal bellek Okuma ve yazma birbirinden bağımsız olarak yapılabilir Okuma ve yazma (farklı bölgelere) aynı komut çevrimi içinde oluşabilir Okuma portu kombinezonsal: Okuma adresi uygulanır Bellek okuma gecikmesi Veri dışarda (elde) Yazma portu da kombinezonsal: MemWrite = 1 Veri bellekte istenilen yerde [WrAdr]
Komut çekme çevrimi: İlk kısım
Komut çekme çevrimi: Son kısım
Komut çekme çevrimi: Tamamı
Saklayıcı belirlenmesi / Komut çözümleme
Saklayıcı belirlenmesi / Komut çözümleme
Dallanma
R-tipi komut çözümleme
R-tipi komut icrası
R-tipi komutun tamamlanması
Çoklu çevrimde gecikme yolu Aşağıdaki olaylar arasında sonuçları kaydetmek için saklayıcı yok:
Çoklu çevrimde gecikme yolu Register fetch sırasında bir sonucu saklayıcıya yazmak gerekmiyor IRWr = 0; busA ve busB register fetch’den sonra değişmeyecektir R-tip komut icrası (execute) sırasında sonuç saklayıcıya yazmak gerekmiyor busA ve busB register fetch’den sonra değişmeyecektir ALUSelA, ALUSelB ve ALUOp kontrol sinyalleri T-tip komuttan sonra değişmeyecektir Sonuç olarak ALU çıkışı R-tip icradan sonra değişmeyecektir
Çoklu çevrim gecikme yolu Teorik olarak, eğer şunlar olursa bir saklayıcıya ihtiyaç duyulur: İşaret bir saat çevriminde hesaplanır ve diğer saat çevriminde kullanılır ise, VE bu işareti hesaplayan işlevsel bloğun girişleri durum elemanına yazılmadan önce değişebilir. Eğer yukarıdaki koşul 1 tutar ve fakat koşul 2 tutmaz ise saklayıcı kullanılmayabilir Fakat bu durum, pratikte çoklu çevrim gecikme yolu oluşturur: Mantıksal gecikme yolu, çoklu çevrimlerin alındığı bir bellek elemanından diğerine yayıldığı durumdur
Çoklu çevrim gecikme yolunun avantajları Örneğin 3-çevrimli durumda: IR(bellek)Reg.File ,ReadALU Reg, FileWrite(bellek) Avantajları: Saklayıcı tasarrufu Çevrimler arası zaman paylaşımı Eğer ALU işlemi 1 çevrimden fazla tutarsa sorun yok, yeter ki 3 çevrimden fazla tutmasın.
Çoklu çevrim gecikme yolunun dezavantajları Statik zaman analiz araçları, sadece iki bellek elemanı arasındaki gecikmeye bakar ve yukardaki durumu bir ihlal olarak rapor ederler Bu analizör çıktılarını görmezden gelmeniz gerekiyor Sonunda hata yapma ihtimali yüksek Daima MCDP (multiple cycle delay path) den sakınmak için çevrimler arasına saklayıcı konmalıdır
Komut çözümü: ORI
ORI icrası
ORI tamamlama
Komut çözümleme: Bellek erişimi
Bellek adresi hesabı
Yazmak için bellek erişimi
Okumak için bellek erişimi
Yükleme için geri yazma
Çoklu çevrim işlemci: Hepsi bir arada
Özet Tek çevrim işlemcinin dezavantajları: Çoklu çevrim işlemci: Uzun çevrim süresi Load haricinde tüm komutlar için çevrim süresi çok uzun Çoklu çevrim işlemci: Komut icrasını küçük adımlara bölmek Her adımı tüm bir komut yerine) bir saat çevriminde icra etmek Çoklu çevrim işlemciyi, çoklu çevrim gecikme yolu ile karıştırmayın Çoklu çevrim işlemci komutları çoklu çevrimde icra eder MCDP: iki bellek elemanı (saklayıcı) arasında icra süresi bir çevrimden çok tutan kombinezonsal yol Mümkünse MC, MCDP olmadan gerçeklenmeli Eğer şimdi üretilen bir sinyal bir sonraki çevrimde kullanılacaksa bir saklayıcı kullan