Bilgisayarlar, hayatımızın vazgeçilmezleri arasında şüphesiz ki ön sıralarda yer alıyor. Gerek ev hayatında gerekse profesyonel iş hayatında aktif olarak bizlere hizmet ediyor. Bir bilgisayarın en önemli değerlendirme ölçütü ise hız kavramı. Pipelining yöntemi, bilgisayarların komut işleme hızı üzerinde performans artırımı açısından yüksek etkiye sahip bir yöntem. Yazımızda bu konunun detaylarına değinelim.
Bilgisayar-Komut Nedir ?
Bilgisayarlar yapılarında milyonlarca transistör bulunduran ve düşük seviyesinde 0 -1 lojik seviyelerini algılayıp bu seviyelere göre gerekli işlemleri yerine getiren yapılardır. Bilgisayar üzerinde gerçekleştirilen basit bir işlem için bile donanım tarafında belki de binlerce transistörün doğru kombinasyonu oluşturması gerekir. Günümüzde yüksek seviyeli programlama dilleri vasıtası ile bu karmaşık işlemlerden kullanıcılar soyutlanır. Yazılım dilleri vasıtası ile bilgisayara yapması gereken işlemler anlatılır. Bu kısımda devreye bilgisayarların beyni konumundaki işlemcinin yapıtaşı olan komut kavramı girer.
Bilgisayar dilinin kelimelerine komut denir ve bilgisayar için komutlar her şeydir. Bilgisayarlar yapması gereken işlemleri bu komutlar vasıtası ile algılar ve bunları işleme döker. Farklı işlemci mimarilerine göre komut setleri değişir. ( Konu hakkında detaylı bilgi için: Makine Kodu: Bilgisayar Dili )
Pipelining Mimarisi
Pipelining , Türkçe ’ye boru hattı olarak çevrilebilir. Bilgisayar tarafından sıralı bir şekilde işlenecek olan komutlar, belli bir sıra ve düzende bu hatta girer, burada işlenir ve işlenen komut hat dışına çıkarak yerini başka bir komuta bırakır. Bu tekniğin en önemli avantajı, işlenecek komutların paralel bir yapıya benzer şekilde işlenmesi. İşlenecek komutlar, işlenme anında üst üste gelerek birden çok komut işlenir.
Konuya tam hakimiyet olması açısından, bilgisayar komut işleme adımlarını bilmek ve buna göre düşünmek daha doğru olacak.
Komut İşleme Adımları
Bilgisayarda bir komut, temel olarak üç adımda işlenir. Bu adımlar sırası ile şu şekildedir.
Fetch: Yürütülecek olan komutun yakalandığı işlem basamağı. Komutlar, bellek içerisinde belli bir adresten başlar ve işlemcinin bit genişliğine bağlı olarak sıralı bir şekilde dizili bulunur. Program sayacı, 0 adresinden başlayarak her adımda artış göstererek sıradaki komutun adresini tutar. Bu işlem basamağında, program sayacından gelen adreste bulunan komut yakalanır.
Decode: Komut için gerekli olan operand değerlerinin çözümlendiği basamak.
Execute: Çözümlenen komutlar, komutun gerektirdiği eylemleri gerçekleştirmek için CPU’nun ilgili işlevsel birimlerine iletilir. Bu basamakta komutun gerektirdiği çeşitli aritmetik/lojik işlemler gerçekleştirilir.
Pipelining mimarisinde, ilk komutun ilk adımı işlenip ikinci adımına geçilirken ikinci komutun ilk adımı başlatılır ve bu döngü her bir adım sonrası için geçerli olacak şekilde tekrarlanır. Bu sayede işlenecek olan komutlar, paralel bir yapıda eş zamanlıya yakın bir şekilde yürütülür. Bu sayede hız anlamında büyük bir avantaj sağlanmış olur. Aşağıdaki görselde pipelining komut işleme tekniğinin mantığı ve avantajı daha kolay bir şekilde görülecektir.
Sol kısımda bulunan ilk komut birinci adımda bellekten yakalanır. İkinci adım basamağı olan çözümleme basamağına geçerken ikinci komutun birinci adımı başlatılır. Bir “clock cycle” sonra ise birinci komut üçüncü adıma, ikinci komut ikinci adıma geçer ve eş zamanlı olarak üçüncü komutun birinci adımı olan yakalama adımı başlatılır. Bu şekilde tüm komutlar bitene kadar işlem basamakları tekrarlanır.
Mimari Performansı
Yukarıdaki görsele bakılırsa, pipeline olmayan bir sistemde ,her komutun yürütülmesi ve gerekli bellek işlemlerinin yerine getirilmesi beş “clock cycle” sürer. Dört komut için toplam süre 20 “clock cycle” sürecek. Ancak pipeline olan bir sistem için bu süre 8 “ clock cycle “ sürer. Bu da sistemin hızlanmasına büyük bir katkı verir. Ancak dikkat edilirse, iki yapı arasındaki hız farkı doğrusal bir şekilde değil. Bu sistem için genel bir matematiksel hesaplama yapalım.
N: Toplam yürütülecek komut sayısı
K: Bir komut için gerekli “clock cycle”
Tc: Bir “clock cycle” periyodu
Pipelining içeren bir sistemde ilk komut K clock sürecek. Devamında gelen her komut birer clock sistem süresine ekleyecek. Dolayısıyla gerekli olan süre ( K + N – 1 ) * Tc olacak. Pipelining olmayan bir sistemde ise gerekli toplam süre ( N * K ) * Tc olacak. Hız oranı ,geçen süre ile ters orantılı olacağı için toplam kazanç ;
( N * K * Tc ) / ( ( K + N -1) * Tc )
N değeri, çok yüksek değerlere ulaşacağı için K değerinden çok daha büyük olacaktır. Bu sebeple yukarıdaki denklem sadeleştirilirse şu sonuç elde edilecektir;
( N * K ) / N = K
Sonuç olarak iki sistem arasında bir komutun yürütülmesi için gerekli olan clock sayısı kadar hız oranı olacak.
KAYNAKÇA
cs.stanford.edu
futurelearn.com
wikipedia.org

