Talimat ardışık düzeni - Instruction pipelining

Temel beş aşamalı boru hattı
Saat döngüsü
Öğr. Hayır.
1234567
1EĞERİDEXMEMWB
2EĞERİDEXMEMWB
3EĞERİDEXMEMWB
4EĞERİDEXMEM
5EĞERİDEX
(IF = Komut Getirme, Kimlik = Komut Çözme, EX = Yürütme, MEM = Bellek erişimi, WB = Kayıt geri yazma).

Dördüncü saat döngüsünde (yeşil sütun), ilk talimat MEM aşamasındadır ve en son talimat henüz boru hattına girmemiştir.

İçinde bilgisayar Bilimi, talimat ardışık düzeni uygulamak için bir tekniktir öğretim düzeyinde paralellik tek bir işlemci içinde. Ardışık düzen, işlemcinin her parçasını gelenleri bölerek bazı talimatlarla meşgul tutmaya çalışır. Talimatlar bir dizi sıralı adıma (aynı adı taşıyan "boru hattı ") farklı işlemci birimleri paralel olarak işlenen talimatların farklı bölümleri ile.

Konsept ve motivasyon

Ardışık düzenlenmiş bir bilgisayarda, talimatlar Merkezi işlem birimi (CPU) aşamalı olarak. Örneğin, her adım için bir aşaması olabilir. Von Neumann döngüsü: Talimatı getir, işlenenleri getir, talimatı yap, sonuçları yaz. Ardışık düzenlenmiş bir bilgisayarda genellikle her aşamadan sonra "ardışık düzen kayıtları" bulunur. Bunlar, talimat ve hesaplamalardan bilgileri depolar, böylece mantık kapıları Bir sonraki aşamada bir sonraki adımı yapabilirsiniz.

Bu düzenleme CPU'nun her saat döngüsünde bir talimatı tamamlamasını sağlar. Kare dalgalı saatin bir kenarında çift sayılı aşamalar, diğer kenarda ise tek sayılı aşamalar çalışmaktadır. Bu daha fazlasına izin verir İşlemci çıktı belirli bir anda çok bisikletli bir bilgisayardan saat hızı ama artabilir gecikme boru hattı işleminin kendi ek yükü nedeniyle. Ayrıca, elektronik mantık sabit bir maksimum hıza sahip olsa bile, boru hattıyla bağlantılı bir bilgisayar, boru hattındaki aşamaların sayısını değiştirerek daha hızlı veya daha yavaş hale getirilebilir. Daha fazla aşamayla, her aşama daha az iş yapar ve bu nedenle aşama, mantık kapıları ve daha yüksek bir saat hızında çalışabilir.

Ardışık düzenlenmiş bir bilgisayar modeli, maliyet saniyedeki talimat başına mantık kapısı olarak ölçüldüğünde genellikle en ekonomiktir. Her an, bir talimat yalnızca bir boru hattı aşamasındadır ve ortalama olarak, bir boru hattı aşaması, çok döngülü bir bilgisayardan daha az maliyetlidir. Ayrıca, iyi yapıldığında, ardışık düzenlenmiş bilgisayarın mantığının çoğu çoğu zaman kullanımdadır. Buna karşılık, sıra dışı bilgisayarlar genellikle herhangi bir anda büyük miktarda boşta mantığa sahiptir. Benzer hesaplamalar genellikle boru hattıyla bağlanmış bir bilgisayarın talimat başına daha az enerji kullandığını gösterir.

Bununla birlikte, boru hatlı bir bilgisayar, benzer bir çok döngülü bilgisayardan genellikle daha karmaşık ve daha maliyetlidir. Tipik olarak daha fazla mantık kapısı, yazmaç ve daha karmaşık bir kontrol birimine sahiptir. Benzer bir şekilde, talimat başına daha az enerji kullanırken daha fazla toplam enerji kullanabilir. Sıra dışı CPU'lar genellikle saniyede daha fazla komut yapabilir çünkü aynı anda birkaç komut gerçekleştirebilirler.

Boru hatlı bir bilgisayarda, kontrol ünitesi akışın bir program komutu olarak başlaması, devam etmesi ve durması için düzenler. Talimat verileri genellikle boru hattı kayıtlarında bir aşamadan diğerine, her aşama için biraz ayrı bir kontrol mantığı parçasıyla aktarılır. Kontrol ünitesi ayrıca her aşamadaki talimatın diğer aşamalardaki talimatların işleyişine zarar vermemesini sağlar. Örneğin, iki aşamanın aynı veri parçasını kullanması gerekiyorsa, kontrol mantığı kullanımların doğru sırada yapılmasını sağlar.

Verimli bir şekilde çalışırken, boru hatlı bir bilgisayarın her aşamada bir talimatı olacaktır. Daha sonra aynı anda tüm bu talimatlar üzerinde çalışıyor. Saatinin her döngüsü için yaklaşık bir talimatı bitirebilir. Ancak bir program farklı bir talimat dizisine geçtiğinde, boru hattı bazen işlemdeki verileri atmalı ve yeniden başlamalıdır. Buna "durak" denir.

Boru hatlı bir bilgisayarın tasarımının çoğu, aşamalar arasındaki etkileşimi önler ve duraklamaları azaltır.

Adım sayısı

Bağımlı adımların sayısı makine mimarisine göre değişir. Örneğin:

  • 1956–1961 IBM Stretch projesi, yaygın hale gelen Getirme, Kod Çözme ve Yürütme terimlerini önerdi.
  • klasik RISC ardışık düzeni içerir:
    1. Talimat getirme
    2. Komut çözme ve kayıt getirme
    3. Yürüt
    4. Bellek erişimi
    5. Kayıt ol geri yaz
  • Atmel AVR ve PIC mikro denetleyici her biri iki aşamalı bir boru hattına sahiptir.
  • Birçok tasarım, 7, 10 ve hatta 20 aşamaya kadar olan boru hatlarını içerir ( Intel Pentium 4 ).
  • Daha sonraki "Prescott" ve "Cedar Mill" Netburst Son Pentium 4 modellerinde kullanılan Intel'den çekirdekler ve Pentium D ve Xeon türevler, 31 aşamalı uzun bir boru hattına sahiptir.
  • Xelerated X10q Ağ İşlemcisi, bin aşamadan uzun bir iş hattına sahiptir, ancak bu durumda bu aşamalardan 200'ü, ayrı ayrı programlanmış talimatlara sahip bağımsız CPU'ları temsil eder. Kalan aşamalar, belleğe ve yonga üzeri işlev birimlerine erişimi koordine etmek için kullanılır.[1][2]

Ardışık düzen "derinleştikçe" (daha fazla sayıda bağımlı adımla), belirli bir adım daha basit devrelerle uygulanabilir ve bu da işlemci saatinin daha hızlı çalışmasına izin verebilir.[3] Bu tür boru hatları çağrılabilir süper boru hatları.[4]

Bir işlemci olduğu söyleniyor tamamen ardışık düzen her döngüde bir talimat getirebilirse. Bu nedenle, bazı talimatlar veya koşullar yeni talimatların alınmasını engelleyen gecikmeler gerektiriyorsa, işlemci tamamen boru hattına bağlanmamıştır.

Tarih

Boru hattının seminal kullanımları, ILLIAC II proje ve IBM Stretch daha önce basit bir sürüm kullanılmış olsa da Z1 1939'da ve Z3 1941'de.[5]

Ardışık düzen, ciddi anlamda 1970'lerin sonlarında süper bilgisayarlar vektör işlemcileri ve dizi işlemcileri gibi.[kaynak belirtilmeli ] İlk süper bilgisayarlardan biri Control Data Corporation tarafından inşa edilen Cyber ​​serisiydi. Ana mimarı, Seymour Cray, daha sonra Cray Research'e başkanlık etti. Cray, hem çarpma hem de toplama / çıkarma işlevleri için ardışık düzen kullanarak XMP süper bilgisayar serisini geliştirdi. Daha sonra, Star Technologies Roger Chen tarafından geliştirilen paralellik (paralel çalışan birkaç ardışık işlev) ekledi. 1984'te Star Technologies, James Bradley tarafından geliştirilen boru hatlı bölme devresini ekledi. 1980'lerin ortalarında, boru hatları dünya çapında birçok farklı şirket tarafından kullanıldı.[kaynak belirtilmeli ]

Ardışık düzen, süper bilgisayarlarla sınırlı değildi. 1976'da Amdahl Corporation 470 serisi genel amaçlı ana bilgisayar, 7 adımlı bir boru hattına ve patentli bir dal tahmin devresine sahipti.[kaynak belirtilmeli ]

Tehlikeler

Sıralı yürütme modeli, her komutun bir sonraki başlamadan önce tamamlandığını varsayar; bu varsayım, ardışık düzenlenmiş bir işlemcide doğru değildir. Beklenen sonucun sorunlu olduğu bir durum, tehlike. Farazi bir işlemciye aşağıdaki iki kayıt talimatını hayal edin:

1: R52'ye 1 ekleyin: R5'i R6'ya kopyalayın

İşlemcinin ilk çizimde listelenen 5 adımı varsa, talimat 1 zamanında getirilecektir. t1 ve uygulaması şu saatte tamamlanacak t5. 2. talimat şu adresten getirilecektir: t2 ve şu saatte tamamlanacak t6. İlk talimat, artmış sayıyı R5'e beşinci adım olarak (yazmaç geri yazma) t5. Ancak ikinci komut, numarayı R5'ten (R6'ya kopyalamak için) ikinci adımında (komut çözme ve kayıt getirme) zamanında alabilir. t3. Görünüşe göre ilk talimat değeri o zamana kadar artırmamış olacaktı. Yukarıdaki kod bir tehlikeye işaret eder.

Bilgisayar programları yazmak derlenmiş Derleyici tehlikeleri önleyen makine kodu oluşturmak üzere tasarlanabileceğinden, dil bu endişeleri dile getirmeyebilir.

Çözümler

Bazı erken dönem DSP ve RISC işlemcilerinde dokümantasyon, programcılara bitişik ve neredeyse bitişik talimatlarda bu tür bağımlılıklardan kaçınmalarını tavsiye eder ( gecikme yuvaları ) veya ikinci talimatın istenen değer yerine eski bir değer kullandığını bildirir (yukarıdaki örnekte, işlemci artırılmamış değeri tersine sezgisel olarak kopyalayabilir) veya kullandığı değerin tanımsız olduğunu bildirir. Programcı, işlemcinin bu arada yapabileceği ilgisiz bir işe sahip olabilir; veya, doğru sonuçları garantilemek için programcı ekleyebilir NOP'lar koda, kısmen ardışık düzenin avantajlarını reddederek.

Çözümler

Ardışık düzenlenmiş işlemciler, programcı her bir komutun bir sonraki başlamadan önce tamamlandığını varsaydığında, beklendiği gibi çalışmak için genellikle üç teknik kullanır:

  • Boru hattı olabilir ahır veya gerekli değerler elde edilene kadar yeni talimatların planlanmasını durdurun. Bu, ardışık düzen içinde boş yuvalara neden olur veya baloncuklarhiçbir işin yapılmadığı.
  • Hesaplanan bir değeri, onu üreten talimat tamamen kullanımdan kaldırılmadan önce boru hattının başka bir yerindeki gelecekteki bir talimata yönlendiren ek bir veri yolu eklenebilir, bu işlem işlenen yönlendirme.[6][7]
  • İşlemci, mevcut talimatlara bağlı olmayan ve tehlikesiz olarak hemen uygulanabilen diğer talimatları bulabilir; bu, optimizasyon olarak bilinir. sıra dışı yürütme.

Şubeler

Normal talimat dizisinin dışındaki bir dal genellikle bir tehlike içerir. İşlemci tek bir zaman döngüsünde dalı etkilemedikçe, ardışık olarak komutları almaya devam edecektir. Programcı kontrolü programın başka bir bölümüne yönlendirdiği için bu tür talimatların yürürlüğe girmesine izin verilemez.

Koşullu bir dal daha da sorunludur. İşlemci, henüz gerçekleşmemiş bir hesaplamaya bağlı olarak dallanabilir veya dallanmayabilir. Çeşitli işlemciler durabilir, deneyebilir şube tahmini ve iki farklı program dizisini çalıştırmaya başlayabilir (istekli infaz ), her biri dalın alındığını veya alınmadığını varsayarak, yanlış tahminle ilgili tüm çalışmaları atar.[a]

Genellikle doğru tahminler yapan dal tahmini uygulamasına sahip bir işlemci, dallanmadan kaynaklanan performans kaybını en aza indirebilir. Bununla birlikte, dallar kötü tahmin edilirse, işlemci için daha fazla iş yaratabilir, örneğin boru hattından yıkama doğru yerde yürütmeye devam etmeden önce yürütülmeye başlayan yanlış kod yolu.

Ardışık düzenlenmiş bir işlemci için yazılmış programlar olası hız kaybını en aza indirmek için kasıtlı olarak dallanmadan kaçınır. Örneğin, programcı olağan durumu sıralı yürütme ile halledebilir ve yalnızca olağandışı durumları tespit ettiğinde dallara ayrılabilir. Gibi programları kullanma gcov analiz etmek kod kapsamı programcının, belirli dalların gerçekte ne sıklıkla yürütüldüğünü ölçmesine ve kodu optimize etmek için içgörü kazanmasına olanak tanır. Bazı durumlarda, bir programcı hem olağan durumu hem de olağan dışı durumu ele alabilir. şubesiz kod.

Özel durumlar

Kendi kendini değiştiren programlar
Tekniği kendi kendini değiştiren kod ardışık düzenlenmiş bir işlemcide sorunlu olabilir. Bu teknikte, bir programın etkilerinden biri, kendi gelecek talimatlarını değiştirmektir. İşlemcide bir talimat önbelleği, orijinal talimat zaten bir giriş kuyruğunu önceden getir ve değişiklik yürürlüğe girmeyecektir. Gibi bazı işlemciler Zilog Z280 yonga üzerindeki önbellek hafızalarını yalnızca veri alımları için veya sıradan hafıza adres alanlarının bir parçası olarak yapılandırabilir ve kendi kendini değiştiren talimatlarla bu tür zorluklardan kaçınabilir.
Kesintisiz talimatlar
Bir talimat, bunu sağlamak için kesintisiz olabilir. atomiklik, örneğin iki öğeyi değiştirdiğinde. Sıralı bir işlemci izin verir keser talimatlar arasında, ancak bir ardışık düzen işlemcisi komutlarla çakışır, bu nedenle kesintisiz bir komutun yürütülmesi, sıradan komutların bölümlerini de kesintisiz hale getirir. Cyrix koma hatası olur asmak Kesintisiz bir talimatın her zaman boru hattında olduğu sonsuz döngü kullanan tek çekirdekli bir sistem.

Tasarım konuları

Hız
Ardışık düzen, işlemcinin tüm bölümlerini meşgul tutar ve işlemcinin belirli bir sürede yapabileceği yararlı iş miktarını artırır. Ardışık düzen oluşturma, genellikle işlemcinin döngü süresini azaltır ve talimatların iş hacmini artırır. Hız avantajı, uygulamanın karşılaştığı ölçüde azalır tehlikeler yürütmenin ideal hızının altına düşmesini gerektiren. Ardışık düzende olmayan bir işlemci, bir seferde yalnızca tek bir talimat yürütür. Bir sonraki talimatın başlaması tehlikelere bağlı olarak değil koşulsuz olarak ertelenir.
Ardışık düzenlenmiş bir işlemcinin tüm çalışmalarını modüler adımlar halinde düzenleme ihtiyacı, kayıtların çoğaltılmasını gerektirebilir, bu da bazı talimatların gecikmesini artırır.
Ekonomi
Her bir bağımlı adımı daha basit hale getirerek, ardışık düzen, karmaşık işlemleri sayısal hesaplamalar gibi karmaşık devreler eklemekten daha ekonomik bir şekilde sağlayabilir. Ancak, ardışık düzen ile artan hız peşinde koşmayı reddeden bir işlemcinin üretimi daha basit ve daha ucuz olabilir.
Tahmin edilebilirlik
Programcının tehlikelerden kaçınması veya bunlardan kaçınması gereken ortamlarla karşılaştırıldığında, ardışık olmayan bir işlemcinin kullanılması programcıları programlamayı ve eğitmeyi kolaylaştırabilir. Ardışık düzende olmayan işlemci, belirli bir talimat dizisinin tam zamanlamasını tahmin etmeyi de kolaylaştırır.

Resimli örnek

Sağda dört aşamalı genel bir ardışık düzen var: getirme, kod çözme, yürütme ve geri yazma. Üstteki gri kutu, yürütülmeyi bekleyen talimatların listesidir, alttaki gri kutu, yürütülmesi tamamlanmış talimatların listesidir ve ortadaki beyaz kutu da boru hattıdır.

Uygulama aşağıdaki gibidir:

Genel 4 aşamalı ardışık düzen; renkli kutular birbirinden bağımsız talimatları temsil eder
SaatYürütme
0
  • Dört talimat uygulanmayı bekliyor
1
  • Yeşil talimat bellekten getirildi
2
  • Yeşil talimatın kodu çözüldü
  • Mor talimat hafızadan alınır
3
  • Yeşil komut yürütülür (gerçek işlem gerçekleştirilir)
  • Mor talimatın kodu çözüldü
  • Mavi talimat getirildi
4
  • Yeşil talimatın sonuçları kayıt dosyasına veya belleğe geri yazılır
  • Mor talimat yürütülür
  • Mavi talimatın kodu çözüldü
  • Kırmızı talimat getirildi
5
  • Yeşil talimatın yürütülmesi tamamlandı
  • Mor talimat geri yazılır
  • Mavi talimat yürütülür
  • Kırmızı talimatın kodu çözüldü
6
  • Mor talimatın yürütülmesi tamamlandı
  • Mavi talimat geri yazılır
  • Kırmızı talimat yürütülür
7
  • Mavi talimatın yürütülmesi tamamlandı
  • Kırmızı talimat geri yazılır
8
  • Kırmızı talimatın yürütülmesi tamamlandı
9
  • Dört talimatın tamamının uygulanması tamamlandı

Boru hattı balonu

3. döngüdeki bir balon, yürütmeyi geciktirir.

Ardışık düzenlenmiş bir işlemci, bir veya daha fazla döngüde yararlı hiçbir şeyin olmadığı bir veya daha fazla döngü ile sonuçlanarak, ardışık düzende durarak ve bir kabarcık oluşturarak tehlikelerle başa çıkabilir.

Sağdaki resimde, 3. döngüde, işlemci mor talimatı çözemez, bunun nedeni belki de işlemci kod çözmenin yeşil komutun yürütülmesiyle üretilen sonuçlara bağlı olduğunu belirlemesidir. Yeşil talimat Yürütme aşamasına ve ardından planlandığı gibi Geri Yazma aşamasına ilerleyebilir, ancak mor talimat Getirme aşamasında bir döngü için durur. 3. döngü sırasında getirilmesi gereken mavi talimat, ondan sonraki kırmızı talimat gibi bir döngü için durur.

Kabarcık (resimdeki mavi ovaller) nedeniyle, işlemcinin Kod Çözme devresi döngü 3 sırasında boştadır. Yürütme devresi döngü 4 sırasında boşta ve Geri Yazma devresi döngü 5 sırasında boşta.

Kabarcık boru hattından çıktığında (6. döngüde), normal uygulama devam eder. Ama şimdi her şey bir döngü geç. Renklerle gösterilen dört komutu tam olarak yürütmek 7 yerine 8 döngü (1'den 8'e kadar) sürecektir.

Ayrıca bakınız

Notlar

  1. ^ Bu buluşsal yöntemlerin hiçbirine sahip olmayan ilk ardışık düzenlenmiş işlemciler, örneğin PA-RISC işlemcisi Hewlett Packard, sadece programcıyı uyararak tehlikelerin üstesinden gelmek; bu durumda, şubeyi takip eden bir veya daha fazla talimat, şubeye alınmış olsun veya olmasın yürütülür. Bu yararlı olabilir; örneğin, bir kayıttaki bir sayının hesaplanmasından sonra, bir koşullu dalı, hem dallı hem de dal dışı durumda sonraki hesaplamalar için daha yararlı bir değerin kütüğe yüklenmesi izleyebilir.

Referanslar

  1. ^ Glaskowsky, Peter (18 Ağu 2003). "Xelerated'in Xtraordinary NPU'su - Dünyanın İlk 40 Gb / sn Paket İşlemcisinin 200 CPU'su Var". Mikroişlemci Raporu. 18 (8): 12–14. Alındı 20 Mart 2017.
  2. ^ https://www.eetimes.com/xelerated-brings-programmable-40-gbits-s-technology-to-the-mainstream-ethernet/#
  3. ^ John Paul Shen, Mikko H. Lipasti (2004). Modern İşlemci Tasarımı. McGraw-Hill Profesyonel. ISBN  9780070570641.
  4. ^ Sunggu Lee (2000). Bilgisayarların ve Diğer Karmaşık Dijital Cihazların Tasarımı. Prentice Hall. ISBN  9780130402677.
  5. ^ Raul Rojas (1997). "Konrad Zuse'nin Mirası: Z1 ve Z3'ün Mimarisi". IEEE Bilişim Tarihinin Yıllıkları. 19 (2).
  6. ^ "CMSC 411 Ders 19, Ardışık Düzen Veri İletimi". Maryland Üniversitesi Baltimore County Bilgisayar Bilimleri ve Elektrik Mühendisliği Bölümü. Alındı 2020-01-22.
  7. ^ "Yüksek performanslı bilgi işlem, 11. sınıf Notlar". hpc.serc.iisc.ernet.in. Eylül 2000.'den arşivlendi orijinal 2013-12-27 tarihinde. Alındı 2014-02-08.

Dış bağlantılar