BİLGİSAYAR MİMARİLERİ 11.Hafta: Pipeline Sorunları Doç.Dr. Ahmet ÖZMEN Sakarya Üniversitesi Bilgisayar Mühendisliği Bölümü
Ders Planı Giriş Pipeline sorunları (hazards) Pipeline performans Yapısal sorunlar, Veri bağımlılığı, Kontrol sorunu Pipeline performans
Pipeline mimari: Kabuller İşlemcimiz 5 katmanlı pipeline yapıda olsun: Katmanlar: IF, ID, EX, M, WB Varsayımlar: IF, ID, EX, M, WB katmanlarındaki icra sürelerinin yaklaşık eşit olsun Hızlı bir ön-bellek, Çoklu portlu bir saklayıcı kümesi (register file), Hızlı bir ALU ile bu sağlanabilir.
5 katmanlı icra
5 katmanlı icra: Kaynakların kullanımı
Pipeline icra: ALU komutları DİKKAT: IR her kademe için gerekli!
IR’ler ve denetim noktaları Denetim noktaları doğru ilişkilendirmiş mi? ALU, Load/Store ve Write back dikkate alınmalı
Pipeline MIPS (jump’lar hariç)
Pipeline içindeki komutlar nasıl etkileşir? Bir komut diğer bir komutun ihtiyaç duyduğu bir kaynağı kullanıyor olabilir. Yapısal sorun (structural hazard) Bir komut başka bir komutun ürettiği sonucu kullanmak isteyebilir. Veri bağımlılığı sorunu (data hazard) Bir komut bir sonraki icra edilecek komutu belirliyor olabilir. Kontrol sorunu (control hazard) Dallanma komutları (branch, jump gibi)
Yapısal sorun (structural hazard)
Yapısal soruna çözüm-1
Yapısal soruna çözüm-2 İki ayrı bellek kullanımı: IM ve DM
Veri bağımlılığı sorunu Örnek program:
Veri bağımlılığı sorunu (devam) Zamana bağlı bağımlılık. Geçmişe yönelik bağımlılıklar sorun oluşturuyor. Kırmızı bölgeler okuma/yazma yarı periyodunu gösteriyor
Veri bağımlılığı sorunu (devam) ÇÖZÜM-1: stalls Kontrol lojiği karmaşık olabilir
Veri bağımlılığı sorunu (devam) Donanım: PC değeri değiştirilmez, aynı komut tekrar tekrar çekilir ve kontrol işaretleri sıfırlanır.
Veri bağımlılığı sorunu (devam) Yazılım: En kötü durumda araya yeteri kadar NOP komutu sokulur. Bu işlem derleyici tarafından yapılabilir.
Veri bağımlılığı sorunu (devam) İletme (forwarding): Pipeline saklayıcıları zaten veriyi barındırıyor.
Forwarding (Bypassing) donanımı
Veri bağımlılığı sorunu Forwarding sonrası gecikme 1 stall’a iniyor.
Veri bağımlılığı sorunu İç-kilit (interlock) sorunu tespit eder ve pipeline’ı 1 saat periyodu boş tutar (stall) .
Veri bağımlılığı sorunu Veya yazılımla (derleyici marifetiyle) araya NOP konur .
Kontrol sorunu (control hazards) Dallanma koşulu belirleninceye kadar stall.
Kontrol sorunu (control hazards) 3 stall’ın 1’e indirilmesi için donanımsal değişiklik. -----ESKİ DURUM---
Kontrol sorunu (control hazards) 3 stall’ın 1’e indirilmesi için donanımsal değişiklik. -----YENİ DURUM---
Kontrol sorunu (control hazards) Tüm donanımsal iyileştirmeden sonra dallanmada 1 stall kaçınılmaz.
Kontrol sorunu (control hazards) Herhangi bir düzenleme yapılmazsa dallanma komutları 3 stall gecikme oluşturur. CPI = 1 ise, %30 dallanma komutları varsa, stall 3 çevrim ise => yeni CPI = 1.9 Dallanmanın alınıp alınmayacağı erken belirlenirse (donanımsal düzenleme): Karşılaştırma işlemini 2. katmana taşı, Hedef adresi hesabı için bir toplayıcı (ALU) ilave et Stall sayısı 1’ düşer. Yazılımsal çözümlerle kayıplar daha da azaltılabilir: Dalanma gecikme slotu: Derleyici bu gecikme slotunu doldurabilir Diğer bir yaklaşım ise dallanma tahmini (branch prediction)
Pipeline için zor durumlar Kesmeler: 5 komut icra halinde iken kesme olursa? Çözüm: 1) Kesme komutu çekilir, 2) Yeniden başla (restart) ve ne yapıldıysa incomplete yap. Reel sayı işlemleri, tamsayı işlemleri gibi yapılamaz. Çözüm farklı işlevsel üniteler. Katman Kesme sebebi IF Page fault, missaligned memory access, memory protection violation ID/RF Tanımlanamayan veya illegal opcode EX Aritmetik kesme M
Pipeline performans Hızlanma, pipeline derinliği dikkate alındığında CPI = 1 ise: Pipeline derinliğini arttırmak hazard’ların etkisini arttırır Derleyiciler önem kazanıyor: Kesmeler, karmaşık komutlar ve FP pipeline kullanımını zorlaştırıyor