• pentium serisinde ortaya cikmi$ ve birinin sonucu oburune bagli olmayan instruction'lari paralel cali$tirmaya yarayan ozellik..

    tek bir instruction icinde microcode seviyesinde de cali$iyor olabilir emin degilim..

    (bkz: agi)
  • sonucu birbirine bagli olan operasyonlarda, steplerden once ve sonra bulunan registerlar satyesinde cesitli prediction ve forwarding teknikleri ile stallar yada bubblelar cozulebilir. mesela bir register write operationinin sonucu size lazim ise cogunlukla alu cikisindan sonucu alip otelemeniz yeterlidir. bunlar branchler ve lw, sw gibi operasyonlar disinda hep ise yararlar. lw ve sw'de birer bubble durumu kurtarmak icin yeterlidir. tabi islemcinin dizaynina ve pipelining stagelerinin sayisina gore degisebilir. branchlerde cozum daha zordur tabi. cogu yeni islemci mimarisi bu konuda branchin sonucunu beklemektense islemleri fetch eder process ederler, branchin sonucu belli olunca "aaa, tuh" falan yaparlar. misal amd bunu boyle yapiyomus, mips'de boyle yapiyo, ama her islemcisinde yapmiyo tabi, sanirim 64 bit'lik corelarinda mips boyle yapmiyo iki levelli bi prediction kullaniyo.
    ayrica baska bi mevzuda (bkz: cache)
  • henry ford'un 1900'larda bulduğu olayın pentium teknoloijisine uyarlanmış halidir pentium 4 bu olayı 20 basamağın üstüne çıkararak olay yaratmıştır prescott üzerine 10 daha eklemiştir saygılar.
  • iş hattı teknigi gibi gubik türkçe çevirisi vardir.
  • birbirine bağımlı olmayan komutların instruction fetch, instruction decode, execution, memory access, memory write gibi safhalarının paralel olarak çalıştırılması yöntemi. teorik olarak e komutunun instruction fetch safhası gerçeklenirken, d komutunun instruction decode, c komutunun execution, b komunutunun memory access, a komutunun memory write safhaları aynı anda paralel olarak gerçeklenebilir. eğer bu komutlar birbirine bağımlı değilse ve aralarında dallanma komutları yoksa psikopat bir hızlanma elde edilir. fakat dallanma ve bağımlılık işin içine girildiğinde, dallanma söz konusu ise dallanma hedefi belli olana kadar, bağımlılık söz konusu ise bağımlılık çözülene kadar pipeline'a komut girişi durdurulmak zorundadır. bu sorunları en aza indirgemek için de eğer bağımlılık söz konusu ise code scheduling, dallanma komutları söz konusu ise branch prediction işin içine girer.
  • derleyici tarafından yapılan bir optimizasyonlardan birisi. veri bağımlılığı olan durumlarda, multiprocessor işlemcilerde paralelliğin kolaylaştırılması için kullanılır. örneğin iç içe aşağıdaki gibi bir loopta:

    for(i = 0; i < n; i++)
    for(j = 0; j < m; j++)
    x[i] = x[i] * y[i+j]

    bu loopa, eğer paralelleştirme uygulanırsa, n kadar işlemciye içteki n adet for loop atanır ve paralel çalışmaları gerektiği düşünülür. fakat n adet işlemci aynı saat çevriminde aynı değişken üzerinde çalışacağı için (x[i]) paralellik patlar ve dolayısıyla optimizasyon patlar. bu nedenle, her işlemci komşu işlemcinin x[i] ile işini bitirdiği adımdan sonra x[i] üzerinde işlem yapar. yani birinci saat çevriminde 1. işlemci, ikinci saat çevriminde 2. işlemci, n. saat çevriminde n. işlemci x[0] üzerinde işlem yapar. aynı düzen diğer x elemanları için de devam eder. bir saat çevriminde 1. işlemci x[i], 2. işlemci x[i-1], vs.. üzerinde işlem yapıyor olur. bu şekilde paralellik bozulmadan bağımlılık çözülmüş olur. bu işlemin adı da pipelining'dir
  • birbirine bagli komutlar ardarda siralandiginda, pipelining'in hicbir faydasi dokunmaz. zira onceki komutun tum pipeline'dan gecmesini beklersiniz ki bir sonraki komut islensin. bu da zaman(cycle) kaybina yol acar.
  • positive edge trigger, negative edge trigger'lar ile halledilen olaydır genelde.
    (bkz: edge triggered)
    (bkz: posedge)
    (bkz: negedge)
  • diyelim ki elimizde 5 instruction olsun.bu instructionlar processora girecek ve çıkacaklar ancak birinin girip giren çıktıktan sonra diğerinin girmesini sağarsak 5 instruction için (bir instructionın girip çıkma süresine t dersek) 5t harcanır. ancak bu instructionlar birbirine bağlı değilse hepsini ayrı ayrı işlememize gerek yok. devreyi basitleştirip instruction fetch unit , instruction decode unit ,operand fetch unit ,ins execute unit ve write back 'ten oluştuğunu düşünelim.ilk ins aşama 1 i geçince o elemanın boş kalmasının ne anlamı var.

    bu yüzden pipelining denen bir fikir ortaya atılmış. yani ins1 instruction unitten geçince ins2 o aşamaya alınsın.böylece ins1 writeback aşamasında iken ins5 ilk aşamaya gelecek ve 5 instructionın işlenmesi 5t değil t+4 süre alacak.

    elbette pipelining gibi harika bir kolaylık bu kadarla da kalmıyor. büyüklerimiz düşünmüşler ve niye aynı registera bağlı iki cycle eklemeyelim demişler. iki instruction bir register tipinden aynı zamanda girerek yarı sürede işlenerek çıkar ya da aynı instructionı double pipelininge sokalım birisi hata yaparsa ya da sorun yaşarsa diğerini kullanırız demişler.(bkz: superscalar)başka bir fikir ise kolay işlerde register tek pipeline gibi çalışsın zor işlerde ikincisi de devreye girisin olmuş. bu sebeple ana pipeline (bkz: u pipeline) yan pipeline(bkz: v pipeline) denmektedir.
hesabın var mı? giriş yap