2016-04-05 39 views
2

Bu teorik bir sorudur ve takılı hissediyorum. ARM ISA ve pipel veri yolunu aldığımı farz et. Basitlik için her zaman bir dalın alınacağını öngören bir dal tahmincisi kullanıyorum. Açık olduğu gibi, eğer şube gerçekten alınmışsa çalışır, aksi halde başarısız olur. Başarısız olursa, tüm değişiklikleri geri alması ve geri alması gerekir, yani boru hattını temizleyin.Boru hattı nasıl taşınır?

Nasıl yapılması gerekiyor?

Bazı kayıtlar bazı kayıtlara yazılırsa?

O zaman bu kaydı bir önceki değere nasıl getirebilirim? Aynı şey bayraklar için de geçerli mi?

+1

İlgili: [Bir şube yanlış tahmin, çok kısa bir if deyimi gövdesi için bile tüm boru hattını temizler mi?] (Https://stackoverflow.com/questions/29522431/does-a-branch-misprediction-flush-the- tüm-boru hattı bile-için-çok-kısa-if-st). Buradaki yorumlarda tartışıldığı gibi, kızarma için basit bir teknik, yanlış tahmin edilen şubenin emekliliğe ulaşmasını beklemek; daha sonra kayıt durumu, geri alabileceğiniz doğru sipariş durumu var. Aksi takdirde, yanlış adlandırmalardan hızlı kurtarma için kayıt yeniden adlandırma durumunu kontrol edin (istisnalar hariç tümüyle daha hızlı). –

+1

Bir tür geri alma/kurtarma mekanizması (genellikle kayıt yeniden adlandırma dahil) olmadan, spekülatif yürütme dışı yürütme yapamazsınız. ** Herhangi bir özel destek olmadan şube tahminine göre getirebilir/çözebilirsiniz **, ancak spekülatif talimatların mimari durumun tek kopyasını değiştirmesine izin veremezsiniz. (Dric'in cevabının işaret ettiği gibi, sıralı bir boru hattı, talimatların geri alma aşamasına kadar ilerlemesine izin verebilir. Çünkü, siparişte olduğu için, daha önceki bir talimatın hatalı ya da yanlış tahmin edilmiş olduğunu zaten biliyoruz). –

cevap

2

Bu, mimaride tanımlandığı gibi, bir dalın yanlış öngörüldüğü ve boru hattının yıkanması gerektiğinde, aşağıdaki talimatların mimaride görünür bir etkisi olamayacağının her zaman garantisine sahip olursunuz.

Bunu yapmanın birkaç yolu vardır: basit uygulamada (kısa boru hatları), talimatlar bir dalda olmadığından emin olunca genel olarak işlenir (ör. Mimari açıdan görünür bir değişiklik yazılır) (Arızaya neden olabilecek bir yük)) gölge artık. Daha karmaşık CPU, daha uzun boru hatları ve dışı amacıyla karotta

, Kayıt adlandırmak genel olarak kullanılan kullanmak olduğunu teknik: Bu durumda

https://en.wikipedia.org/wiki/Register_renaming

, talimatlar, tamamlamak mümkün olacak Sonucu geçici bir sicile veya yere yazacaksınız ve CPU'nun durumu geri yüklemek için mekanizmalara sahip olacak (floş durumunda) ya da sadece geçici sonuçların mimarlık siciline güvence altına alındığı durumlarda bu sonuçlar artık temizlenemez.

İlgili konular