İçeriğe atla

Sırasız yürütüm

Sırasız yürütüm ya da Düzensiz yürütme (İngilizce: out-of-order execution veya dynamic execution), bilgisayar mühendisliğinde, günümüz yüksek performanslı işlemcilerinde kullanılan, yüksek gecikmeler sebebiyle harcanan işlemci döngülerini kullanıma sunan bir talimat yürütme yaklaşımıdır.

Tarihçe

1970'lerde ve 1980'lerin başında bilgisayar mimarisinin ana araştırma alanlarından biri olan sırasız yürütüm, veri akış hesaplamasının sınırlı bir formudur. Bu konuda Yale Patt tarafından önemli bir akademik araştırma yapılmış ve yine onun HPSm simülatöründe sunulmuştur. James E. Smith ve A.R. Pleszkun tarafından 1985 yılında yayınlanan makalede kural dışı durumlardaki kesin davranışların nasıl koruncağı açıklanarak tasarı tamamlanmıştır.

Tartışmalı da olsa sırasız yürütüm kullanan ilk makine, skor tahtası kullanarak çakışmaları çözümleyen, CDC 6600 (1964) olmuştur. Modern kullanımda skor tahtası kullanımı, okuduktan sonra yazma durumunda bekleme yapması özelliğinden ötürü, sırasız yürütümün değil de, daha çok sıralı yürütümün bir parçası olarak görülmektedir.

Üç yıl kadar sonra, IBM 360/91 (1966) sırasız yürütümü tam olarak destekleyen Tomasulo algoritmasını tanıttı.

1990 yılında, sadece kayan nokta işlemleriyle sınırlı olmasına rağmen IBM ilk sırasız mikroişlemci olan POWER1'i tanıttı.

Bundan sonra sırasız yürütüm, IBM/Motorola PowerPC 601 (1993), Fujitsu/HAL SPARC64 (1995), Intel Pentium Pro (1995), MIPS R10000 (1996), HP PA-8000 (1996), AMD K5 (1996) ve DEC Alpha 21264 (1998) gibi öne çıkan örneklerle 1990'lı yıllarda daha yaygın hale geldi. Sun UltraSPARC, HP/Intel Itanium, Transmeta Crusoe, Intel Atom ve IBM POWER6 ise bu akımın dışında kalan dikkat çekici örneklerdir.

1990'lı yılların ortalarına kadar bu tekniğin makinelerde temel tasarım olarak kendini gösterememesinin nedeni, sırasız yürütümün mantıksal karmaşıklığıdır. Bu sınıfta bir makine oluşturmak için gerekli olan yüksek miktarda silikon alanın getireceği yüksek maliyetlerden ötürü fiyata duyarlı marketlere hitap eden üreticiler hala bu paradigmayı kullanmamaktadır. Sırasız yürütüm tasarımında ulaşılması zor hedeflerden biri de düşük tüketimi hedefidir.

Genel Konsept

Sırayla Yürütme

Eski işlemcilerde sırayla yürütme yapılmaktaydı ve talimatların işlenmesi aşağıdaki adımlarla gerçekleşiyordu:

  1. Talimat getirilir.
  2. Eğer girdi işlenenleri ulaşılabilir durumda ise talimat uygun işlev birimine iletilir, eğer bir ya da daha fazla işlenen, içinde bulunulan saat vuruşunda ulaşılamaz durumda ise işlemci, işlenenler ulaşılabilir duruma gelene kadar bekler.
  3. Talimat, ilgili işlev birimi tarafından yürütülür.
  4. Sonuçlar, yazmaç dosyasına geri yazılır.

Düzensiz Yürütme

Düzensiz yürütmede talimatların yerine getirilmesi aşağıdaki şekilde gerçekleştirilir.

  1. Talimat getirilir.
  2. Talimat, talimat kuyruğuna girer.
  3. İlgili talimattaki işlenen, kendisinden önce kuyruğa giren talimatta işlenmeyecekse diğer bir değişle ilgili kuyruğa kendisinden önce giren talimattaki işlenenin sonucu kendisini etkilemeyecekse, kuyruktaki sıradan bağımsız olarak, işlemci döngüsü harcamamak için öne alınır.
  4. Buyruk ilgili fonksiyonel birim tarafından işlenir.
  5. Sonuçlar kuyruğa girer.
  6. Sonuç, kendisinden önceki talimatların sonuçları işlemci kaydına yazıldıktan sonra kuyruktan çıkabilir ve işlemin sonucu, talimatta sonucunun kendisine yazılacağı belirtilmiş olan işlemci kaydına yazılır.

Düzensiz yürütmede amaç, işlenecek veriler ulaşılamaz durumda iken işlemcinin bekletilmesini önlemektir. Yukarıdaki sıralı yürütme basamaklarında 2. basamakta bulunan veri eksikliğinden oluşan işlemcinin boşta bekleme gerekliliği, düzensiz yürütme basamaklarında ortadan kaldırılmıştır. Sırasız yürütme yapan işlemciler gerekli olan bekleme süresini işlemeye hazır olan diğer buyruklarla doldurup, işlemlerin sonunda sonuçları sıraya sokarak işlemlerin program sırasına uygun olarak işlenmiş gibi görünmesini sağlar.

Buyrukların bilgisayar kodlarındaki orijinal sırasında program sırası, işlemcide ele alınma sırasına ise veri sırası denir. Veri sırası, verilerin işlemci yazmaçları tarafından ulaşılacak halde bulunup bulunmamasına göre belirlenir. Açıkçası, bir sıradan diğerine çevrim yapmak, sonuçların kuyruktan doğru sırada çıkmasını sağlamak için mantıksal bir sıra sürdürmek için karmaşık devreler gereklidir. Yeniden sıralama belleği sırasız yürütülen buyrukların yeniden program sırasına sokulması için kullanılır.

Sırasız yürütmenin faydaları boru hattının pratikte uygulanması derinleştikçe ve bellek ile işlemci hızları arasındaki fark arttıkça önem kazanmakta ve artmaktadır.

Dağıtım ve konu bağlantılarının kesilmesi

Yeni paradigmayla yaratılan farklılıklardan biri de, kuyrukların oluşturulması ile, dağıtım basamağının konu basamağı ile bağlantısının koparılması ve bitirilme aşamasının yürütme aşamasından ayrılmasına olanak tanımasıdır. Sıralı yürütüm yapan önceki işlemcilerde bu aşamalar, boru hattı kullanılarak, birbiri ardından aralık bırakmaksızın yapılmaktaydı.

Frekansı düşürecek yanlış terim bağımlılıklarından korunmak amacıyla yazmaçların tekrar adlandırılması adı verilen bir teknik kullanılır. Bu tasarımda, mimaride tanımlanmış olandan daha fazla sayıda yazmaç vardır. Fiziksel yazmaçlar aynı mimari yazmacın birçok versiyonu olabilecek şekilde işaretlenir.

Yürütme ve geri yazmanın birbirinden ayrılması

Kural dışı durumlar, dallanma tahmini hataları gibi çözülmesi gereken durumlar için sonuçların bir kuyrukta tutulması gereklidir. Sonuç kuyruğu, buyrukların program sırasına uygun olarak tamamlanabilmelerni sağlamak için, programların kural dışı bir durumdan sonra tekrar başlamasına izin verir. Sonuç kuyruğu sonuçların, eski buyrukların hatalı dallanma tahminleri ve kural dışı durumlarından ötürü iptal edilebilmesine olanak sağlar. Buyrukların önceki dallanmalarının çözümlemelerinin bildirilebilmesi yeteneğine şüpheli yürütüm denir.

Mikro-mimari seviyede değişiklikler

  • Buyruklar merkezi bir kuyruğa mı yoksa birden fazla ayrık kuyruklara mı dağıtılır?
IBM PowerPC işlemcileri farklı fonksiyonel birimler arasında dağıtılmış birçok kuyruk kullanırken, diğer sırasız yürütüm yapan işlemciler merkezi bir kuyruk kullanır. IBM dağıtılmış kuyruklar için rezervasyon durakları adı verilen bir terim kullanır.
  • Güncel bir sonuç kuyruğu var mıdır veya sonuçlar direkt olarak yazmaç dosyasına mı kaydedilir? İkinci olarak, o an yürütülmekte olan her bir buyruğun yazmaç yeniden adlandırma bilgilerinin tutulduğu yazmaç haritası kuyruklama fonksiyonunu işletir.
İlk Intel sırasız işlemcileri tekrar sıralama önbelleği adı verilen bir sonuç kuyruğu kullanırken, daha sonraki sırasız işlemciler yazmaç haritaları kullanır.
Tam olarak söylemek gerekirse, Intel P6 ailesi işlemcilerinde hem yeniden sıralama önbelleği (ROB) hem de yazmaç haritası mekanizması (RAT) vardır. ROB bütünüyle dallanma tahmini hatalarını düzeltmek amacıyla tasarlanmıştır.
Intel P6 ailesi ilk sırasız işlemciler arasında olmasına rağmen, hala INTEL'in amiral gemisi mikroişlemci ailesidir.

İlgili Araştırma Makaleleri

Komut kümesi mimarisi, CPU'nun yazılım tarafından nasıl kontrol edileceğini tanımlayan bilgisayar soyut modelinin bir parçasıdır. ISA, işlemcinin ne yapabileceğini ve bunu nasıl yapacağını belirterek donanım ve yazılım arasında bir arayüz gibi davranır.

<span class="mw-page-title-main">Derleyici</span> kaynak kodunu bilgisayarın işleyebileceği koda dönüştüren program

Derleyici, kaynak kodu makine koduna dönüştüren yazılımdır. Bir programlama dilinin derleyicisi, o programlama dili kullanılarak yazılmış olan kodu hedef işlemci mimarisine göre uygun şekilde makine koduna derler ve genellikle çıktı olarak yürütülebilir dosyanın oluşturulmasını sağlar. Bu eyleme derleme denir. Bir başka ifadeyle derleyici, bir tür yazı işleyicidir; girdi olarak yazı alır ve çıktı olarak yazı verir.

<span class="mw-page-title-main">Merkezî işlem birimi</span> bir bilgisayar programının talimatlarını, talimatlar tarafından belirtilen temel aritmetik, mantıksal, kontrol ve giriş/çıkış (G/Ç) işlemlerini gerçekleştirerek yürüten ve diğer bileşenleri koordine eden bir bilgisayar içindeki elektro

Merkezî işlem birimi, dijital bilgisayarların veri işleyen ve yazılım komutlarını gerçekleştiren bölümüdür. Çalıştırılmakta olan yazılımın içinde bulunan komutları işler. Mikroişlemciler ise tek bir yonga içine yerleştirilmiş bir merkezî işlem birimidir. 1970'lerin ortasından itibaren gelişen mikroişlemciler ve bunların kullanımı, günümüzde MİB teriminin genel olarak mikroişlemciler yerine de kullanılması sonucunu doğurmuştur.

<span class="mw-page-title-main">Pentium</span>

Pentium, Intel’den beşinci nesil x86 mimarisi bir mikroişlemcisidir. 486 serisinin ardılıydı ve ilk olarak 22 Mart 1993 tarihinde duyurulmuştu.

Boru hattı yöntemi bilgisayar mimarisi ve diğer sayısal ürünlerin tasarımında başarımı artırmak için uygulanan bir yöntemdir. Komutları, boru hattı yöntemi ile işleyip daha kısa süre içinde bitmesini sağlar. Asıl amacı saat sıklığını artırarak başarımı artırmaktır. Farklı kaynakları aynı anda, farklı işler tarafından kullanarak çalışır.

<span class="mw-page-title-main">Bilgisayar mimarisi</span>

Bilgisayar mimarisi, en küçüğe ve en başarılıya ulaşmayı hedeflerken aynı zamanda maliyeti de göz önünde bulundurduğu için sanat ve bilimin ortak buluştuğu nokta olarak da tanımlanır. Bilgisayar Mimarisi, bilgisayar parçalarının iç yapıları ve aralarındaki haberleşme bağlantıları ile ilgilidir.

Dallanma Öngörüsü, bilgisayar mimarisinde çalıştırılacak programın buyruk kümesi içindeki dallanma buyruklarına gelindiğinde koşula göre atlanacağını ya da atlanmayacağını önceden varsayarak veya geçmişine bakıp tahmin ederek öngörüde bulunma işidir. Bugünkü işlemcilerin tasarımında boru hattı (bilgisayar) yöntemi kullanıldığı ve başarım hedeflerinin yüksek olduğu düşünüldüğünde bir dallanmada hangi yöne gidileceğini yüksek doğrulukta tahmin etmek kaçınılmaz olmuştur. Bu öngörü işlemciye dallanmanın sonucunu beklemeden diğer buyrukları işleme imkânı verir. Bu da zamandan kazanç anlamına gelir ki başarımı yükseltir. Bu arada da işlemcinin şimdiki buyruğun işlenmesi bitmeden sonraki buyruğun adresini bilmesi gerekir.

<span class="mw-page-title-main">Merkezî işlem birimi tasarımı</span>

Merkezî işlem birimi tasarımı bilgisayarın temel bileşenlerinden birisi olan Merkezî işlem birimini (MİB) etkin kullanmayı yönelik bir tasarımdır. MİB bilgisayar donanımının temel bileşenlerinden birisidir. İşlemcisi olmayan bir bilgisayar düşünülemez. Bu yüzden işlemcinin tasarımı ne kadar iyi olursa sistem de o derece hızlı olacaktır. İşlemciyi hızlandırmanın değişik yolları vardır. Bunlardan bazıları:

  1. Buyrukların paralel çalışmasını sağlamak
  2. Çok vuruşluk işlemciler kullanmak
  3. Boru hattı kullanmak
  4. Çoklu işleme kullanmak

Yazmaçların yeniden adlandırılması, işlemcilerde, yürütülen buyruklardaki, aynı yazmaçların tekrar kullanımından doğan sahte bağımlılıkları gidermek için kullanılan bir yöntemdir.

<span class="mw-page-title-main">Itanium işlemcisi</span>

Itanium işlemcisi, Intel firmasının 64-bit işlemci ailesinden olup IA-64 mimarisi kullanan işlemcilerinin devamı olarak bilinir. Itanium ve Itanium2 olarak sunulan bu işlemci ilk olarak Ekim 2001'de piyasaya sürülmüştür. Itanium işlemcilerin asıl hedefi yüksek performansa sahip bilgisayarlardı. Bu işlemcinin mimarisinin gelişimi ilk olarak Hewlett-Packard tarafından yapılmıştır ve devamında ise Intel ve Hewlett-Packard ortak olarak birlikte gerçek Itanium mimarisini geliştirmişlerdir.

Mikroişlemcilerde kural dışı durumlar, programların çalıştırılması esnasında verilen komutlar neticesinde oluşan hatalardır. Bu hatalar nedeniyle program istenilen şekilde çalışmaz. Hatta işlemcinin kilitlenmesine bile sebep olabilir. Bu tür durumlar normal bir işleyiş olmadığından kural dışı durum oluşturur.

Yeniden sıralama belleğinin görevi sırasız işlenen buyrukların işlenmesi bittiğinde buyrukları program sırasına sokmaktır. Sıralama belleği buyrukların sıra listesini tutar. Buyruklar listenin bir ucundan girerler ve tamamlandıklarında diğer ucundan çıkarlar. Bu sayede buyruklar program sırasında işlenmiş gibi olur. Sıralama arabelleğinin uygulanması genelde işletim sistemlerindeki giriş/çıkış belleği gibidir. Sıralama belleğinde buyruklar “son” kısmından girerler, her giriş buyrukların sonucunu tutmak için ayrılan bir alan demektir. Belleğin “baş” kısmındaki buyrukların sonuçlarının hazır olup olmadığına bakılır ve baştaki buyruğun bütün sonuçları yazılıp tamamlandığında buyruk bellekten çıkarılır.

<span class="mw-page-title-main">Çoklu kullanım</span>

Çoklu kullanım özelliğine sahip bilgisayarlar birden fazla iş parçacığını donanım desteği sayesinde çalıştırabilir. Çoklu işlem yapabilen sistemlerden gelişen bu yöntem tek bir çekirdeğin kaynaklarını paylaşmak zorundadır. Bu kaynaklar: aritmetik mantık birimi, yazmaçlar (registers), işlemci ön belleği ve adres dönüştürme ön belleğidir. Çoklu işlem yapabilen sistemlerde, işlem birimlerinin tamamı ayrı çekirdeklerde olmasına rağmen, çoklu kullanım tek bir çekirdeğin kullanılabilirliğini iş-parçacığı seviyesinde ve buyruk düzeyinde daha verimli hale getirir. Bu iki teknik birbirini tamamlayan tekniklerdir.

Bilgisayar mimarisinde, buyruk ön yüklemesi bekleme durumlarını azaltarak bir programın mikroişlemcide ki yürütmesinin hızlanmasını sağlayan bir tekniktir.

Çok uzun buyruk kelimesi, buyruk düzeyindeki paralelliğin avantajından yararlanmak için geliştirilmiş bir işlemci tasarımıdır. Her buyruğu arka arkaya çalıştıran işlemciler, işlemci kaynaklarını verimsiz bir şekilde kullanabilmekte ve bu durum da başarımın düşmesine neden olmaktadır. Başarım, sıralı çalışan buyrukların çalıştırılma basamaklarında farklı aşamalarda olmasıyla veya aynı anda birden fazla buyruğun birbirinden bağımsız olarak çalıştırılmasıyla arttırılabilir. Bu yöntemlerin daha da iyileştirilmesi, buyrukların programdaki sırasından farklı bir sırada çalıştırılması ile sağlanabilir; bu yönteme de Sırasız yürütüm denir.

<span class="mw-page-title-main">Alpha 21264</span>

Alpha 21264 1996 yılı Ekim ayında Digital Equipment Corporation tarafından indirgenmiş komut takımı bilgisayarı(RISC) mikroişlemcisi olarak tanıtılmıştır. 21264 Alfa işlemcisi Komut kümesi ile tanımlanmıştır.

Önden yürütüm işlemcinin ön bellekte bulamama durumunda boşa harcayacağı çevrimlerin beklemekte olan buyrukların önceden yürütülmesi ile faydalı şekilde kullanılması esasına dayalı bir bilgisayar mimarisi tekniğidir. Bu şekilde önceden yürütülecek olan buyruklar ile gelecekte oluşacak olan önbellekte bulamama durumları tespit edilerek, işlemcinin boşta olan yürütüm kaynakları kullanılarak faydalı buyruk ve veri ön yüklemeleri yapılması sağlanır.

NetBurst, İntel'in 2000 yılında piyasaya sürdüğü Pentium 4 işlemci markasının mikromimarisine verilen isimdir. 2006 Temmuz'unda Core mikromimarisinin çıkışına kadar İntel işlemcilerin mikromimarisi olmuştur. Selefi P6 mikromimarisine göre en önemli özelliği derin boru hattı yapılanmasıyla avantaj sağladığı yüksek saat sıklığıdır. Temel olarak dört ana parçadan oluşmaktadır: Sıralı(ing. In-order) Ön-Uç(ing. Front-end), Sırasız(ing. out-of-order) yürütme birimi, Tam sayı ve kayan nokta yürütme birimleri ve bellek altdizgesi.

<span class="mw-page-title-main">Nehalem (mikromimari)</span>

Nehalem, İntel firmasının Eylül 2008'de piyasaya sürülen Core i7 işlemcisiyle birlikte kullanılmaya başlanmıştır. 2011'de Sandy Bridge mikromimarisi sunulana kadar İntel'in en gelişmiş mikromimarisi olarak piyasada kalmıştır. Selefi Core mikromimarisine göre paralelliği ve saat frekansını arttırmış, Core mikromimarisinde İntel'in kullanmadığı fakat daha önce NetBurst'de kullanılan Hyper Threading teknolojisi Nehalem ile tekrar kullanılmaya başlamıştır. Nehalem'le birlikte Core mikromimarisinde terkedilmiş olan üçüncü seivye bir önbellek de yonganın içerisine eklenmiştir. İntel, Nehalem ile ilk defa bellek denetim birimini işlemci yongasının içine koymuş ve front-side bus dan ayırmıştır.

Intel Güvenilir Yürütme Teknolojisi, bilgisayar donanım teknolojisidir ve başlıca hedefleri şunlardır: