• pipeline'ın türkçesi. mis gibi türkçe çevirisi varken kullanmak lazım. gerçi ingilizce'de pipelining şeklinde isim-fiil yapılabilirken türkçe'de boru hatlama deyince pek olmuyor. onun yerine boru hattı tekniği denebilir.

    işlemci mimarisindeki karşılığına gelecek olursak:
    nereden çıktığını anlamak için önce eşzamanlı devrenin ne olduğuna bakmak gerekebilir. çok dibine inmeden: eğer bir durum* saklamak istiyorsak, devreye bellek elemanlarını koymamız gerekiyor. sonra bu devre elemanlarının okuma-yazma gecikmelerinin değişkenliğinden kaynaklanabilecek zamanlama sorunlarının önüne geçebilmek istiyorsak, devrede zamanlamayı kontrol eden bir girdiye ihtiyaç duyuyoruz. "herkesin girdisi hazır olsun, sonra hesaplamaya başlayalım" diyebilmek için, bir "başla" komutunu düzenli aralıklarla vermemiz gerekiyor.
    bu girdiye kısaca saat diyoruz. ("3ghz'lik işlemci" derken kastedilen bu saat sinyalinin sıklığı* oluyor.) saatin iki "başla" komutu arasında geçen süreye de çevrim süresi diyoruz.

    bir işlemci tasarımından bahsetmek için önce "ne yapabilmeli" kararı veriyoruz. işin bu kısmına buyruk kümesi mimarisi deniyor. bu noktada çok çeşitli tasarımlar yapılabilir tabi. ama mips olsun, x86 olsun, arm olsun; genel bir buyruk, "'<komut> <işlenen(ler)>" biçimini alıyor. girdisi, çıktısı olan ufak bir fonksiyon olarak düşünülebilir.

    işlemcinin yapacağı şey:
    getir: bu buyrukları okumak*,
    çöz: komutun ve işlenenlerin ne olduğunu anlamak*,
    oku: girdi olan işlenenleri okumak*,
    yürüt: komuta karşılık gelen ufak fonksiyonu hesaplamak veya çalıştırmak veya gerçekleştirmek*,
    yaz: sonuçları yerine götürüp yazmak*,
    ve bir sonraki komuta geçmek.

    bunları yapan bir devreyi kurduktan sonra, bir buyruğun işi bitince saat tekrar "başla" dediğinde diğer buyruğa geçiyorsak, bu tasarıma tek çevrim* işlemci diyoruz. bu tasarımda, saatin "başla" diyebilmesi için buyruğun tüm aşamalarının bitmesini beklemek gerek. elektronların hareketi, transistörlerin açılıp kapanması vs. her bir devre elemanının birer gecikmesi olduğundan, bütün aşamaların bitmesi belli bir süre alıyor. buna devrenin gecikmesi deniyor. saati sabit aralıklarla verdiğimiz için, herhangi bir buyruk için oluşabilecek devre gecikmesini hesaba katıyoruz ve "en kötü durumda" oluşabilecek gecikme ne kadarsa, ki kendisine kritik yol gecikmesi* deniyor, çevrim süresini ona göre belirliyoruz.

    buradaki verimsizliğe gelelim: tek çevrim işlemci şu şekilde çalışıyor:
    1. çevrim: [komut a] "başla" getir(a)-çöz(a)-oku(a)-yürüt(a)-yaz(a)
    2. çevrim: [komut b] "başla" getir(b)-çöz(b)-oku(b)-yürüt(b)-yaz(b)
    3. çevrim: [komut c] "başla" getir(c)-çöz(c)-oku(c)-yürüt(c)-yaz(c)
    ...

    bu ne demek? bir çevrim içerisinde getir-çöz-oku-yürüt-yaz aşamalarından aynı anda sadece biri aktif, diğerleri atıl. 'getir'irken: 'çöz'müyor, 'oku'muyor, 'yürüt'müyor, 'yaz'mıyoruz.

    boru hattı tekniğinde ise, bir çevrimde bu aşamaların tümünü değil, sadece birini yapıyoruz. işlemcinin çalışması da şu hali alıyor:

    1. çevrim: "başla" getir(a)
    2. çevrim: "başla" getir(b)
    ______________ çöz(a)
    3. çevrim: "başla" getir(c)
    ______________ çöz(b)
    ______________ oku(a)
    4. çevrim: "başla" getir(d)
    ______________ çöz(c)
    ______________ oku(b)
    ______________ yürüt(a)
    5. çevrim: "başla" getir(e)
    ______________ çöz(d)
    ______________ oku(c)
    ______________ yürüt(b)
    ______________ yaz(a)
    ...

    burada aynı çevrim içerisinde alt alta yazılanlar aynı anda gerçekleşmektedir. şimdi ne yaptık? tek çevrimde işlemcimizin beş aşamasından biri çalışırken diğerleri bekliyordu. boru hattındaysa (beşinci çevrimden itibaren) her çevrimde beş aşama birden iş yapmakta. (ilk dört çevrimde aşamaların bazıları yine atıldır, boru hattı dolma/boşalma gecikmelerine ayrıca bakmak gerekir)

    boru hattının sağladığı yararı ölçebilmek için önce bir ölçü birimine ihtiyaç var. birden fazla ölçü birimiyle bakılabilir olaya (zaman, enerji, sıcaklık, para vs.). bunlardan belki de en kolayı yürütüm zamanıdır: "verilen bir hesaplamanın* tamamlanması" için gereken süre. bunu "1080p 25fps'lik görüntünün oynatılabilmesi"ne, "sıkıştırılmış dosyanın açılması"na, bir kodun derlenmesi"ne vs. uyarlayabiliriz. ayrıca (bkz: başarım)

    yürütüm zamanı = toplam buyruk sayısı * buyruk başına geçen süre
    _____________ = toplam buyruk sayısı * buyruk başına çevrim sayısı * çevrim süresi

    şeklinde ifade edersek, tek çevrimde:
    çevrim süresi = en kötü durumda(getirme+çözme+okuma+yürütme+yazma süresi)
    buyruk başına çevrim sayısı = 1

    iken, boru hattında:
    çevrim süresi = en büyüğü(en kötü durumda(getirme), en kötü durumda(çözme), en kötü durumda(okuma), en kötü durumda(yürütme), en kötü durumda(yazma))
    buyruk başına çevrim sayısı = ~1 (boru hattı dolma/boşalma ve bağımlılık durumları hariç)

    olur. toplam buyruk sayısı iki durum için sabitken, çevrim süresi boru hattı tekniğinde kayda değer miktarda azalır. boru hattı aşamaları eğer eşit gecikmelere bölünebilirse, yürütme hızını aşama sayısınca katlamak mümkündür. aşama sayısının pratikte bir sınırı vardır. devrenin güç tüketimi ve ona bağlı sıcaklık artışı, aşamalar arası veri kaydetmeden doğan ek gecikme, boru hattı dolma/boşalma gecikmesi vs. bu sınırı belirleyen etkenlerdir.
  • doğal gaz veya petrol benzeri sıvı veya gaz maddelerin aktarımı için kurulmuş olan ve hayatımızı kolaylaştıran şebeke.
    (bkz: al sana şebekeden bir nasihat)
hesabın var mı? giriş yap