Sıra dışı yürütme - Out-of-order execution

Olarak bilgisayar mühendisliği , dışı sırası yürütme (ya da daha çok resmi dinamik yürütme ) a, paradigma en yüksek performanslı kullanılan merkezi işlem birimleri faydalanmak için talimat döngü aksi harcanabilecektir. Bu paradigmada, bir işlemci , bir programdaki orijinal sırasına göre değil, girdi verilerinin ve yürütme birimlerinin kullanılabilirliği tarafından yönetilen bir sırayla komutları yürütür . Bunu yaparken, işlemci önceki talimatın tamamlanmasını beklerken boşta kalmaktan kaçınabilir ve bu arada hemen ve bağımsız olarak çalışabilen sonraki talimatları işleyebilir.

Tarih

Sıra dışı yürütme, 1970'lerde ve 1980'lerin başında bilgisayar mimarisinde önemli bir araştırma alanı olan sınırlı bir veri akışı hesaplama biçimidir .

Bu konudaki önemli akademik araştırmalar, Yale Patt ve onun HPSm simülatörü tarafından yürütülmüştür . Tarafından bir kağıt James E. Smith , 1985 yılında yayınlanan ve AR Pleszkun, özel durumlar kesin davranışı dışı amacıyla makinelerinde muhafaza edilebilir anlatarak düzeni tamamladı.

Muhtemelen, düzensiz yürütmeyi kullanan ilk makine , çakışmaları çözmek için bir puan tablosu kullanan CDC 6600 (1964)' dür . Ancak 6600, WAW çatışma yönetiminden yoksundu ve bunun yerine durmayı seçti. Bu durum Thornton tarafından "Birinci Derece Çatışma" olarak adlandırıldı. Hem RAW çatışma çözümüne ("İkinci Derece Çatışma" olarak adlandırılır) hem de WAR çatışma çözümüne ("Üçüncü Derece Çatışma" olarak adlandırılır) sahip olsa da, 6600'ün tümü, tamamen düzensiz yürütme yeteneğine sahip olduğunu beyan etmek için yeterlidir. hassas istisna işleme. Şube, Program Sayacından yedi kelimelik bir derinlikle sınırlı olan "Talimat Yığını" olarak adlandırılan konumlara olduğu sürece, erken ve sınırlı bir Şube tahmini mümkündü.

Yaklaşık üç yıl sonra, IBM System/360 Model 91 (1966), Tomasulo'nun algoritmasını tanıttı , bu da tam sıra dışı yürütmeyi mümkün kıldı. 1990'da IBM, ilk sıra dışı mikroişlemci olan POWER1'i piyasaya sürdü , ancak sıra dışı yürütme kayan nokta yönergeleriyle sınırlıdır (Model 91'de olduğu gibi).

1990'larda, sıra dışı yürütme daha yaygın hale geldi ve IBM / Motorola PowerPC 601 (1993), Fujitsu / HAL SPARC64 (1995), Intel Pentium Pro (1995), MIPS R10000 (1996), HP'de yer aldı. PA-8000 (1996), AMD K5 (1996) ve DEC Alpha 21264 (1996). Bu eğilimin dikkate değer istisnaları arasında Sun UltraSPARC , HP / Intel Itanium , Silvermont Mimarisine kadar Intel Atom ve IBM POWER6 yer alır .

Sıra dışı tekniğin yüksek mantıksal karmaşıklığı, 1990'ların ortalarına kadar ana akım makinelere ulaşmamasının nedenidir. Maliyete duyarlı pazarlara yönelik birçok düşük kaliteli işlemci, uygulanması için gereken geniş silikon alanı nedeniyle bu paradigmayı hala kullanmamaktadır. Düşük güç kullanımı, sıra dışı yürütme (OoOE) tasarımıyla ulaşılması daha zor olan başka bir tasarım hedefidir.

Temel kavram

OoO Yürütmesini takdir etmek için, ikisini karşılaştırabilmek için önce sırayla tanımlamak yararlıdır. Talimatlar anında tamamlanamaz: zaman alırlar (birden çok döngü). Bu nedenle, sonuçlar ihtiyaç duyulan yerlerde geride kalacaktır. In-order hala bağımlılıkları takip etmek zorundadır. Ancak yaklaşımı oldukça basit: her seferinde oyalanıyor. OoO, aşağıda görüldüğü gibi çok daha karmaşık veri izleme teknikleri kullanır.

Sıralı işlemciler

Daha önceki işlemcilerde, talimatların işlenmesi normalde aşağıdaki adımlardan oluşan bir talimat döngüsünde gerçekleştirilir :

  1. Talimat getirme .
  2. Giriş işlenenleri mevcutsa (örneğin işlemci kayıtlarında), talimat uygun işlevsel birime gönderilir . Geçerli saat döngüsü sırasında bir veya daha fazla işlenen kullanılamıyorsa (genellikle bunlar bellekten getirildikleri için ), kullanılabilir olana kadar işlemci durur.
  3. Talimat, uygun fonksiyonel birim tarafından yürütülür.
  4. İşlevsel birim, sonuçları kayıt dosyasına geri yazar .

Çoğu zaman, sıralı bir işlemci, (nihayetinde) yazacağı bir boru hattını kaydeden, içine kaydedildiği basit bir "bit vektörüne" sahip olacaktır. Herhangi bir giriş işleneni bu vektörde karşılık gelen bit setine sahipse, talimat durur. Esasen vektör, kayıt tehlikelerine karşı korumanın büyük ölçüde basitleştirilmiş bir rolünü yerine getirir. Böylece, Sıra Dışı'nın 2B Matrisler kullandığını ve In-order'ın tehlikeden kaçınmak için 1B vektörü kullandığını gözlemliyoruz.

Sıra dışı işlemciler

Bu yeni paradigma, talimatların işlenmesini şu adımlara böler:

  1. Talimat getirme.
  2. Talimat kuyruğuna talimat gönderme (yönerge arabelleği veya rezervasyon istasyonları olarak da adlandırılır ).
  3. Komut, girdi işlenenleri kullanılabilir olana kadar kuyrukta bekler. Talimat, eski talimatlardan önce kuyruktan çıkabilir.
  4. Talimat, uygun işlevsel birime verilir ve o birim tarafından yürütülür.
  5. Sonuçlar sıraya alındı.
  6. Ancak tüm eski talimatların sonuçları kayıt dosyasına geri yazıldıktan sonra, bu sonuç kayıt dosyasına geri yazılır. Buna mezuniyet veya emeklilik aşaması denir.

OoOE işlemenin temel konsepti, işlemcinin bir işlemi gerçekleştirmek için gereken veriler mevcut olmadığında meydana gelen bir dizi duraklamadan kaçınmasına izin vermektir. Yukarıdaki taslakta, OoOE işlemcisi, eksik veriler nedeniyle talimat tamamen işlenmeye hazır olmadığında sıralı işlemcinin adım (2)'sinde meydana gelen durmayı önler.

OoOE işlemcileri diğer talimatlara zamanında bu "yuva" doldurmak vardır o yeniden sipariş sonunda sonuçlar, talimatlar normal bir şekilde işlenmekte olduğunu görünmesi için hazır. Talimatların orijinal bilgisayar kodunda sıralanma şekli , program sırası olarak bilinir , işlemcide bunlar veri sırasına göre işlenir , verilerin, işlenenlerin işlemci kayıtlarında kullanılabilir hale gelme sırası. Bir sıralamadan diğerine dönüştürmek ve çıktının mantıksal bir sıralamasını sürdürmek için oldukça karmaşık bir devre gereklidir; işlemcinin kendisi talimatları görünüşte rastgele bir sırada çalıştırır.

OoOE işlemenin faydası, talimat ardışık düzeni derinleştikçe ve ana bellek (veya önbellek ) ile işlemci arasındaki hız farkı genişledikçe artar . Modern makinelerde işlemci bellekten çok daha hızlı çalışır, bu nedenle sıralı bir işlemci verilerin gelmesini beklerken harcadığı süre boyunca çok sayıda talimatı işleyebilirdi.

Sevk ve sorun ayrıştırma, sıra dışı soruna izin verir

Yeni paradigmanın yarattığı farklılıklardan biri, gönderme adımının çıkış adımından ve mezuniyet aşamasının yürütme aşamasından ayrılmasına izin veren kuyrukların oluşturulmasıdır. Paradigmanın ilk adı ayrıştırılmış mimariydi . Daha önceki sıralı işlemcilerde, bu aşamalar oldukça kilitli , ardışık düzende çalışırdı.

Programın talimatları, sonuç doğru olduğu sürece, başlangıçta belirtilen sırayla çalıştırılamayabilir. Bir arabellek kullanarak ardışık düzendeki bir işlemcide getirme ve kod çözme aşamalarını yürütme aşamasından ayırır .

Tamponun amacı, bellek erişimini bölmek ve bir bilgisayar programında işlevleri yürütmek ve ikisi arasındaki ince taneli paralellikten yararlanarak yüksek performans elde etmektir . Bunu yaparken , işlemcinin bakış açısından tüm bellek gecikmesini etkili bir şekilde gizler .

Daha büyük bir tampon, teorik olarak verimi artırabilir. Bununla birlikte, işlemci bir dal yanlış tahminine sahipse, tüm arabelleğin temizlenmesi, çok fazla saat döngüsü israfı ve etkinliğin azalması gerekebilir . Ayrıca, daha büyük tamponlar daha fazla ısı yaratır ve daha fazla kalıp alanı kullanır. Bu nedenle işlemci tasarımcıları günümüzde çok iş parçacıklı bir tasarım yaklaşımını tercih ediyor.

Dekuplajlı mimariler, kontrol yoğun kodu iyi işlemediklerinden genellikle genel amaçlı bilgi işlem için kullanışlı olmadığı düşünülür. Yoğun denetim kodu, işletim sistemi çekirdeklerinde sıklıkla meydana gelen iç içe dallar gibi şeyleri içerir . Ayrılmış mimariler, çok uzun komut kelimesi (VLIW) mimarilerinde çizelgelemede önemli bir rol oynar .

Yanlış işlenen bağımlılıklarından kaçınmak için, komutların sıra dışı olarak yayınlanabileceği sıklığı azaltacak, kayıt yeniden adlandırma adı verilen bir teknik kullanılır. Bu şemada, mimari tarafından tanımlanandan daha fazla fiziksel kayıt vardır. Fiziksel kayıtlar, aynı mimari kaydın birden fazla versiyonunun aynı anda var olabilmesi için etiketlenir.

Yürütme ve geri yazma ayrıştırma, programın yeniden başlatılmasına izin verir

Sonuç kuyruğu, şube yanlış tahminleri ve istisnalar/tuzaklar gibi sorunları çözmek için gereklidir. Sonuç kuyruğu, talimatların program sırasına göre tamamlanmasını gerektiren bir istisnadan sonra programların yeniden başlatılmasını sağlar. Kuyruk, eski dal talimatlarındaki yanlış tahminler ve eski talimatlarda alınan istisnalar nedeniyle sonuçların atılmasına izin verir.

Henüz çözülmemiş olan dallardan geçmiş talimatlar verme yeteneği, spekülatif yürütme olarak bilinir .

Mikro mimari seçimler

  • Talimatlar merkezi bir kuyruğa mı yoksa birden çok dağıtılmış kuyruğa mı gönderiliyor?
IBM PowerPC işlemcileri, farklı işlevsel birimler arasında dağıtılan kuyrukları kullanırken, diğer sıra dışı işlemciler merkezi bir kuyruk kullanır. IBM , dağıtılmış kuyrukları için rezervasyon istasyonları terimini kullanır .
  • Gerçek bir sonuç sırası var mı yoksa sonuçlar doğrudan bir kayıt dosyasına mı yazılıyor? İkincisi için, kuyruk işlevi, uçuştaki her talimat için kayıt yeniden adlandırma bilgilerini tutan kayıt haritaları tarafından gerçekleştirilir.
İlk Intel sıra dışı işlemciler, yeniden sipariş arabelleği adı verilen bir sonuç kuyruğu kullanırken , daha sonraki sıra dışı işlemcilerin çoğu kayıt haritaları kullanır.
Daha doğrusu: Intel P6 ailesi mikroişlemcilerinde hem yeniden sipariş arabelleği (ROB) hem de kayıt takma ad tablosu (RAT) bulunur. ROB, esas olarak şube yanlış tahmin kurtarma tarafından motive edildi.
Intel P6 ailesi, en eski OoOE mikroişlemcileri arasındaydı, ancak yerini NetBurst mimarisi aldı. Yıllar sonra, Netburst, çok daha yüksek çalışma frekansları olasılığını varsayan uzun boru hattı nedeniyle bir çıkmaz sokak olduğunu kanıtladı. Malzemeler, termal sorunlar nedeniyle tasarımın iddialı saat hedeflerine ulaşamadı ve daha sonra NetBurst'a dayanan Tejas ve Jayhawk tasarımları iptal edildi. Intel, Core ve Nehalem mikro mimarilerinin temeli olarak P6 tasarımına geri döndü . Başarılı Sandy Bridge , Ivy Bridge ve Haswell mikromimariler gelen yeniden sıralama P6 kullanılan teknikler ve istihdam yeniden sıralama tekniklerinden bir gidiş vardır EV6 ve P4 ama biraz daha kısa boru hattı ile.

Ayrıca bakınız

Referanslar

daha fazla okuma

  • Smith, James E .; Pleszkun, AR (Haziran 1985). "Boru hatlı işlemcilerde kesin kesintilerin uygulanması". ACM SIGARCH Bilgisayar Mimarisi Haberleri . 13 (3): 36–44. doi : 10.1145/327070.327125 .