Veri yönlendirmesi (İngilizce: operand forwarding ya da bypassing), boru hattı kullanan işlemcilerde veri sorunlarının yol açtığı beklemeleri azaltmaya yarayan bir tekniktir. Bir buyruğun ürettiği sonuç, yazmaç öbeğine yazılmayı beklemeden, hesaplandığı ara aşamadan doğrudan o sonuca ihtiyaç duyan sonraki buyruğa iletilir. Böylece özellikle yazmadan sonra okuma (RAW) bağımlılıklarının çoğu, boru hattını durdurmaya gerek kalmadan çözülür.
Çalışma ilkesi

Klasik beş aşamalı bir boru hattında (getir, çöz, yürüt, bellek, yaz) bir buyruğun aritmetik mantık biriminde hesapladığı sonuç, normalde ancak yaz aşamasında yazmaç öbeğine yazılır. Hemen ardından gelip bu sonuca ihtiyaç duyan bir buyruk, çöz aşamasında yazmaçları okuduğunda henüz güncellenmemiş eski değeri alır; bu bir veri sorunudur.
Veri yönlendirmesinde sonuç, yazmaç öbeğine yazılmasını beklemeden, hesaplandığı aşamanın çıkışındaki boru hattı kaydından (örneğin yürüt ile bellek aşaması arasındaki kayıt) bir yönlendirme yolu ve çoklayıcı aracılığıyla doğrudan sonraki buyruğun yürüt aşamasındaki girişine geri verilir. Bu seçimi yapan donanıma veri yönlendirme birimi denir; bu birim, boru hattında ileride bulunan buyrukların hedef yazmaçlarını o an yürütülen buyruğun kaynak yazmaçlarıyla karşılaştırır ve bir eşleşme varsa güncel değeri yazmaç öbeği yerine yönlendirme yolundan seçer.
İşlemcide birden çok yönlendirme yolu bulunur; bir sonuç, üretildiği aşamadan bir ya da iki saat çevrimi sonra gelen buyruklara iletilebilir. Aritmetik buyruklar arasındaki RAW bağımlılıklarının hemen tümü, veri yönlendirmesiyle hiç durma olmadan çözülür.
Yükle-kullan sınırı
Veri yönlendirmesi her veri sorununu tek başına çözemez. Bellekten değer okuyan bir yükleme buyruğunun sonucu ancak bellek aşamasından sonra hazır olur. Hemen ardından bu değeri kullanan bir buyruk yürüt aşamasına geldiğinde değer henüz okunmamıştır; bu nedenle en az bir saat çevrimlik boşluk (durma) kaçınılmazdır. Yükle-kullan sorunu adı verilen bu durumda derleyiciler, yükleme buyruğunun hemen ardına ondan bağımsız bir buyruk yerleştirerek boşluğu yararlı işle doldurmaya çalışır.
Yararı
Gerçek programlarda buyrukların büyük bir bölümü, kendinden az önce yürütülmüş buyrukların ürettiği sonuçları kullanır. Veri yönlendirmesi olmasaydı bu bağımlılıkların her biri, sonucun yazmaç öbeğine yazılmasını beklemek için birkaç saat çevrimlik durma gerektirir ve boru hattı çoğu zaman boş kalırdı. Yönlendirme bu durmaların hemen tümünü ortadan kaldırdığından işlemcinin başarımını büyük ölçüde artırır; boru hattının iş çıkarmasını ve çevrim başına buyruk oranını belirgin biçimde yükseltir. Bu nedenle veri yönlendirmesi, modern boru hattı tasarımlarının vazgeçilmez bir parçasıdır.
Güncel işlemcilerde
Günümüzün geniş ve sırasız çalışan yüksek başarımlı işlemcilerinde (örneğin Intel Core, AMD Zen ve Apple M serisi işlemciler) birbirine bağımlı buyruklar çoğu zaman boru hattında çok yakın yürütülür. Bu nedenle buyrukların kaynak verilerinin (işlenenlerinin) büyük bölümü, yazmaç öbeğinden okunmak yerine doğrudan veri yönlendirmesi yollarından (yönlendirme ya da bypass ağı) elde edilir. Yönlendirme ağı bu işlemcilerde veri yolunun başlıca bileşenlerinden biridir; ancak çekirdek içindeki yürütme birimi sayısı arttıkça yönlendirme yollarının sayısı ve tasarım karmaşıklığı da hızla büyür.
Ayrıca bakınız
Kaynakça
- ^ a b c d Patterson, David A.; Hennessy, John L. (2020). Computer Organization and Design RISC-V Edition: The Hardware/Software Interface (2 bas.). Morgan Kaufmann. ISBN 978-0-12-820331-6.
- ^ a b c d Hennessy, John L.; Patterson, David A. (2017). Computer Architecture: A Quantitative Approach (6 bas.). Morgan Kaufmann. ISBN 978-0-12-811905-1.
- ^ a b Harris, Sarah L.; Harris, David Money (2016). Digital Design and Computer Architecture: ARM Edition (İngilizce). Morgan Kaufmann. ss. 432-435. ISBN 978-0-12-800056-4.
- ^ Ergin, Oğuz (2026). Bilgisayar Mimarisi. ISBN 978-625-00-6081-0.
- ^ Palacharla, Subbarao; Jouppi, Norman P.; Smith, J. E. (1997). "Complexity-Effective Superscalar Processors". Proceedings of the 24th Annual International Symposium on Computer Architecture (İngilizce). ACM. ss. 206-218. doi:10.1145/264107.264201.
- ^ Harris, Sarah L.; Harris, David Money (2016). Digital Design and Computer Architecture: ARM Edition (İngilizce). Morgan Kaufmann. ss. 463. ISBN 978-0-12-800056-4.
