Tehlike (bilgisayar mimarisi) - Hazard (computer architecture) - Wikipedia

Etki alanında Merkezi işlem birimi (İŞLEMCİ) tasarım, tehlikeler ile ilgili sorunlar talimat boru hattı CPU'da mikro mimariler sonraki komut sonraki saat döngüsünde yürütülemediğinde,[1] ve potansiyel olarak yanlış hesaplama sonuçlarına yol açabilir. Üç yaygın tehlike türü, veri tehlikeleri, yapısal tehlikeler ve kontrol tehlikeleridir (dallanma tehlikeleri).[2]

Tehlikelerle başa çıkmak için kullanılan birkaç yöntem vardır: boru hattı tezgahları / boru hattı köpürmesi, işlenen yönlendirme ve durumunda sıra dışı yürütme, çetele yöntem ve Tomasulo algoritması.

Arka fon

Talimatlar ardışık düzenlenmiş bir işlemcide birkaç aşamada gerçekleştirilir, böylece herhangi bir zamanda ardışık düzenin çeşitli aşamalarında getirme ve yürütme gibi birkaç talimat işlenir. Birçok farklı talimat boru hattı var mikro mimariler ve talimatlar olabilir sıra dışı yürütülen. Bu eşzamanlı (muhtemelen sıra dışı) talimatlardan ikisi veya daha fazlası çeliştiğinde tehlike oluşur.

Türler

Veri tehlikeleri

Veri tehlikeleri, talimatlar aşağıdaki durumlarda ortaya çıkar: veri bağımlılığı bir ardışık düzenin farklı aşamalarındaki verileri değiştirin. Olası veri tehlikelerinin göz ardı edilmesi, yarış koşulları (aynı zamanda yarış tehlikeleri olarak da adlandırılır). Veri tehlikesinin ortaya çıkabileceği üç durum vardır:

  1. yazdıktan sonra oku (RAW), bir gerçek bağımlılık
  2. okuduktan sonra yaz (SAVAŞ), bir bağımlılık karşıtı
  3. yazdıktan sonra yaz (WAW), bir çıktı bağımlılığı

İki talimatı düşünün i1 ve i2, ile i1 daha önce meydana gelen i2 program sırasına göre.

Yazdıktan sonra oku (RAW)

(i2 daha önce bir kaynağı okumaya çalışır i1 yazdıktan sonra okuma (RAW) veri tehlikesi, bir talimatın henüz hesaplanmamış veya alınmamış bir sonuca atıfta bulunduğu bir durumu ifade eder. Bu, bir komutun önceki bir talimattan sonra yürütülmesine rağmen, önceki talimatın boru hattı boyunca yalnızca kısmen işlenmesinden dolayı meydana gelebilir.

Misal

Örneğin:

i1. R2 <- R5 + R3i2. R4 <- R2 + R3

İlk talimat, register'a kaydedilecek bir değeri hesaplamaktır. R2ve ikincisi, kayıt için bir sonucu hesaplamak için bu değeri kullanacak R4. Ancak, bir boru hattı, 2. işlem için işlenenler getirildiğinde, ilkinden elde edilen sonuçlar henüz kaydedilmemiştir ve dolayısıyla bir veri bağımlılığı oluşur.

Talimatla bir veri bağımlılığı oluşur i2, talimatın tamamlanmasına bağlı olduğu için i1.

Okuduktan sonra yaz (SAVAŞ)

(i2 tarafından okunmadan önce bir hedef yazmaya çalışır i1) Okuduktan sonra yazma (WAR) veri tehlikesi, eşzamanlı yürütmeyle ilgili bir sorunu temsil eder.

Misal

Örneğin:

i1. R4 <- R1 + R5i2. R5 <- R1 + R2

Herhangi bir durumda şansı olan i2 daha önce bitirebilir i1 (yani eşzamanlı yürütme ile), kayıt işleminin sonucunun R5 daha önce saklanmadı i1 işlenenleri alma şansı buldu.

Yazdıktan sonra yaz (WAW)

(i2 tarafından yazılmadan önce bir işlenen yazmaya çalışır i1) Yazdıktan sonra yazma (WAW) veri tehlikesi, bir eşzamanlı yürütme çevre.

Misal

Örneğin:

i1. R2 <- R4 + R7i2. R2 <- R1 + R3

Geri yazma (WB) i2 kadar ertelenmeli i1 yürütmeyi bitirir.

Yapısal tehlikeler

Halihazırda boru hattında bulunan iki (veya daha fazla) talimatın aynı kaynağa ihtiyacı olduğunda yapısal bir tehlike oluşur. Sonuç, komutun bir boru hattının bir bölümü için paralel yerine seri olarak yürütülmesi gerektiğidir. Yapısal tehlikeler bazen kaynak tehlikeleri olarak adlandırılır.

Örnek: Birden fazla komutun yürütme komutu aşamasına girmeye hazır olduğu ve tek bir ALU'nun (Aritmetik Mantık Birimi) olduğu bir durum. Bu tür kaynak tehlikesine bir çözüm, ana belleğe birden çok bağlantı noktası ve birden çok ALU (Aritmetik Mantık Birimi) birimi gibi mevcut kaynakları artırmaktır.

Kontrol tehlikeleri (dal tehlikeleri veya talimat tehlikeleri)

Kontrol tehlikesi, boru hattı branş tahmini konusunda yanlış kararlar aldığında ve bu nedenle daha sonra atılması gereken boru hattına talimatlar getirdiğinde ortaya çıkar. Şube tehlikesi terimi ayrıca bir kontrol tehlikesini ifade eder.

Tehlikeleri ortadan kaldırmak

Genel

Boru hattı köpürüyor

Boru hattında fokurdama, ayrıca bir boru hattı kesintisi veya boru hattı durağı, veri, yapısal ve branş tehlikelerini ortadan kaldıran bir yöntemdir. Talimatlar getirildiğinde, kontrol mantığı bir tehlikenin olup olmayacağını / oluşup oluşmayacağını belirler. Bu doğruysa, kontrol mantığı şunu ekler: işlem yoks (HAYIRs) boru hattına. Bu nedenle, (tehlikeye neden olacak) bir sonraki talimat yerine getirilmeden önce, önceki talimat tehlikeyi bitirmek ve önlemek için yeterli zamana sahip olacaktır. Sayısı HAYIRs, boru hattındaki aşama sayısına eşittir, işlemci tüm talimatlardan arındırılmıştır ve tehlikelerden muaf olarak devam edebilir. Tüm durma biçimleri, işlemcinin yürütmeye devam edebilmesi için bir gecikmeye neden olur.

Boru hattının yıkanması bir dallanma talimatı yeni bir hafıza konumuna sıçradığında, boru hattındaki önceki tüm aşamaları geçersiz kıldığında oluşur. Bu önceki aşamalar temizlenir ve boru hattının şube tarafından belirtilen yeni talimatla devam etmesine izin verilir.[3][4]

Veri tehlikeleri

Veri tehlikelerini çözmek için kullanılan birkaç ana çözüm ve algoritma vardır:

  • ekle boru hattı balonu Yazdıktan sonra okuma (RAW) bağımlılığıyla karşılaşıldığında, gecikmeyi artırması garanti edilir veya
  • kullanım sıra dışı yürütme boru hattı kabarcıklarına olan ihtiyacı potansiyel olarak önlemek için
  • kullanım işlenen yönlendirme boru hattının sonraki aşamalarından verileri kullanmak için

Bu durumuda sıra dışı yürütme, kullanılan algoritma şunlar olabilir:

Veri bağımlılıklarını kaldırma görevi, uygun sayıda doldurabilen derleyiciye devredilebilir. HAYIR doğru çalışmayı sağlamak için bağımlı talimatlar arasındaki talimatlar veya mümkünse talimatları yeniden sipariş edin.

Operand yönlendirme

Örnekler

Aşağıdaki örneklerde, hesaplanan değerler cesurKayıt numaraları değilken.

Örneğin, 3 değerini kayıt 1'e (zaten bir 6 içerir) yazmak ve ardından kayıt 1'e 7 eklemek ve sonucu kayıt 2'ye kaydetmek için:

i0: R1 = 6i1: R1 = 3i2: R2 = R1 + 7 = 10

Yürütmenin ardından, kayıt 2 değeri içermelidir 10. Ancak, i1 (yaz 3 kaydetmek için 1) i2 yürütülmeye başlamadan önce boru hattından tam olarak çıkmaz, bu R1'in değeri içermediği anlamına gelir 3 i2 eklemesini gerçekleştirdiğinde. Böyle bir durumda i2 ekler 7 kayıt 1'in eski değerine (6) ve böylece kayıt 2 şunları içerir: 13 bunun yerine:

i0: R1 = 6i2: R2 = R1 + 7 = 13i1: R1 = 3

Bu hata, i1'in yazma işleminin sonucunu Kayıt 1'e kaydetmesinden / saklamadan önce i2 Kayıt 1'i okuduğu için oluşur. Bu nedenle, i2 Kayıt 1'in içeriğini okurken, kayıt 1 hala içerir 6, değil 3.

Yönlendirme (aşağıda açıklanmıştır), i1 çıktısının (yani 3) sonraki talimatlarla kullanılabilir önce değer 3 Kayıt 1'e bağlıdır / burada saklanır.

Örneğe uygulanan yönlendirme, Kayıt 1'de i1 çıktısının işlenmesi / depolanması için bekleme yoktur (bu örnekte çıktı 3) çıktıyı sonraki komuta sunmadan önce (bu durumda, i2). Bunun etkisi, i2'nin Kayıt 1'in doğru (daha yeni olan) değerini kullanmasıdır: commit / store hemen yapıldı ve ardışık düzen değil.

Yönlendirme etkinleştirildiğinde, Komut Çözme / Yürütme İşlem hattının (ID / EX) aşamasının artık iki girişi vardır: belirtilen kayıttan okunan değer (bu örnekte, değer 6 Kayıt 1'den) ve Kayıt 1'in yeni değeri (bu örnekte, bu değer 3) sonraki aşamadan gönderilen Komut Yürütme / Bellek Erişimi (EX / MEM). Hangi girdinin kullanılacağını belirlemek için ek kontrol mantığı kullanılır.

Kontrol tehlikeleri (dal tehlikeleri)

Kontrol tehlikelerinden kaçınmak için mikro mimariler şunları yapabilir:

  • ekle boru hattı balonu (yukarıda tartışılmıştır), artması garantilidir gecikme veya
  • kullanım şube tahmini ve esasen hangi talimatların ekleneceği konusunda bilgiye dayalı tahminlerde bulunun, bu durumda boru hattı balonu sadece yanlış bir tahmin durumunda gerekli olacaktır

Hatalı talimatlar boru hattına girdikten sonra bir dalın bir boru hattı baloncuğuna neden olması durumunda, yanlış yüklenmiş talimatlardan herhangi birinin işlemci durumu üzerinde herhangi bir etkiye sahip olmasını önlemek için dikkatli olunmalıdır. yanlış yüklendi.

Diğer teknikler

Bellek gecikmesi, tasarımcıların dikkat etmesi gereken bir başka faktördür, çünkü gecikme performansı düşürebilir. Farklı bellek türlerinin belleğe farklı erişim süreleri vardır. Bu nedenle, uygun bir bellek türü seçerek, tasarımcılar ardışık düzenlenmiş veri yolunun performansını artırabilir.[5]

Ayrıca bakınız

Referanslar

  1. ^ Patterson ve Hennessy 2009, s. 335.
  2. ^ Patterson ve Hennessy 2009, s. 335-343.
  3. ^ "Dal Tahmin Planları". cs.iastate.edu. 2001-04-06. Alındı 2014-07-19.
  4. ^ "Veri ve Kontrol Tehlikeleri". classes.soe.ucsc.edu. 2004-02-23. Alındı 2014-07-19.
  5. ^ Cheng, Ching-Hwa (2012-12-27). "Tehlikeyi Önleyici Bir Ardışık Düzen Yüksek Performanslı Gömülü Mikroişlemci Geliştirmek için Yararlı Bellek Gecikmesi Tasarım Örneği". VLSI Tasarımı. 2013: 1–10. doi:10.1155/2013/425105.

Dış bağlantılar