Herhangi bir işlemci komutunun çalışması için birden fazla aşama vardır. Bu aşamaların her birinin tamamlanması tek bir CPU döngüsü alır. Bu aşamalar Komut alma, Komut çözme, Yürütme, Bellek erişimi ve Geri yazma aşamalarıdır. Sırasıyla bunlar, tamamlanması gereken komutu alır, işlemi üzerinde işlem yapılan değerlerden ayırır, işlemi yürütür, sonucun yazılacağı kaydı açar ve sonucu açılan kayda yazar.

Tarihsel Sıralı İşlemciler

İlk bilgisayarlarda, CPU bir komut boru hattı kullanmıyordu. Bu CPU’larda, her komut için her bir tek çevrimlik işlemin gerçekleşmesi gerekiyordu. Bu, bir sonraki komutun başlatılabilmesi için ortalama bir komutun tamamen işlenmesinin beş saat döngüsü sürdüğü anlamına geliyordu. Bazı işlemlerin bir yazmaca herhangi bir sonuç yazması gerekmeyebilir, bu da bellek erişimi ve geri yazma aşamalarının atlanabileceği anlamına gelir.

no pipeline subscalar 1 Komut İş Hattı Nedir?

Boru hattı olmayan bir subscalar işlemcide, her komutun her bir parçası sırayla yürütülür.

Bununla birlikte, bir sonraki komuta geçmeden önce tam bir komutu sırayla çalıştırırken gizlenen bir sorun vardır. Bu sorun önbellek ıskasıdır. CPU, aktif olarak işlediği verileri kayıt defterinde saklar. Buna bir çevrimlik gecikme ile erişilebilir. Sorun, işlemci çekirdeğinin içine yerleştirildiği için yazmacın küçük olmasıdır. Veri henüz yüklenmemişse CPU’nun daha büyük ancak daha yavaş olan L1 önbelleğine gitmesi gerekir. Eğer orada değilse, tekrar daha büyük ve daha yavaş olan L2 önbelleğe gitmesi gerekir. Bir sonraki adım L3 önbellektir; son seçenek ise sistem RAM’idir. Bu seçeneklerin her birinin kontrol edilmesi giderek daha fazla CPU döngüsü gerektirir.

Şimdi, bu ekstra gecikme, bir sonraki komuta başlamadan önce her komutu sırayla tamamlaması gereken bir sistemde büyük bir sorun olabilir. Komut başına 5 çevrimlik bir işlemci, aniden onlarca ya da yüzlerce saat çevrimi boyunca bir komuta takılabilir. Bu sırada bilgisayarda başka hiçbir şey gerçekleşemez. Teknik olarak bu durum, iki bağımsız çekirdeğe sahip olmakla biraz hafifletilebilir. Ancak hiçbir şey, her ikisinin de potansiyel olarak aynı anda aynı şeyi yapmasını engelleyemez. Yani çoklu çekirdek yoluna gitmek bunu düzeltmez.

Klasik RISC Boru Hattı

RISC, Azaltılmış Komut Seti Bilgisayarı anlamına gelir. Her bir komutun kodunu çözmeyi kolaylaştırarak performansı optimize eden bir işlemci tasarım tarzıdır. Bu, aynı görevleri yerine getirmek için daha az talimatın gerekli olmasını sağlayan daha karmaşık talimat setleri tasarlayan CISC veya Karmaşık Talimat Seti Bilgisayarı ile karşılaştırılır.

Klasik RISC tasarımı bir talimat hattı içerir. Herhangi bir döngüde beş komut aşamasından herhangi birini çalıştırmak yerine, ardışık düzen beş aşamanın da gerçekleştirilmesini sağlar. Elbette, bir komutun beş aşamasını da bir döngüde çalıştıramazsınız. Ancak her biri bir aşamadan oluşan beş ardışık komutu sıraya koyabilirsiniz. Bu şekilde, her saat döngüsünde yeni bir komut tamamlanabilir. Çekirdek karmaşıklığında nispeten düşük bir artış için potansiyel 5 kat performans artışı sunar.

scalar pipeline 1 Komut İş Hattı Nedir?

Skaler pipelined işlemcide, bir talimatın yürütülmesinin her aşaması saat döngüsü başına bir kez gerçekleştirilebilir. Bu, döngü başına tamamlanmış bir komutun maksimum verimine izin verir.

Bir boru hattına sahip olmayan işlemciler, döngü başına bir tam komut yürütemedikleri için yalnızca alt skaler olabilirler. Bu birincil beş aşamalı boru hattı ile, her işlem için bir komutu tamamlayabilen skaler bir CPU yapabilirsiniz. Daha da geniş kapsamlı boru hatları oluşturarak, saat döngüsü başına birden fazla komut yürütebilen süperskalar CPU’lar yapabilirsiniz. Tabii ki, hala potansiyel sorunlar var.

Hala Sıralı

Bunların hiçbiri, farklı önbellek ve RAM seviyelerini sorgulamak gerektiğinde bir yanıt için birçok döngü bekleme sorununu çözmez. Ayrıca yeni bir sorunu da beraberinde getirir. Ya bir komut bir önceki komutun çıktısına bağlıysa? Bu sorunlar gelişmiş bir dağıtıcı ile bağımsız olarak çözülür. Yürütme sırasını dikkatlice planlar, böylece başka bir komutun çıktısına bağlı olan hiçbir komut birbirine çok yakın olmaz. Ayrıca, bir komutu park ederek ve boru hattında çalışmaya hazır olan ve sonucuna ihtiyaç duymayan diğer komutlarla değiştirerek, hazır olduğunda komutu devam ettirerek önbellek kaçırmalarını da ele alır.

Bu çözümler boru hattı olmayan işlemcilerde çalışabilir, ancak saat başına birden fazla komut çalıştıran bir süperskalar işlemci için gereklidir. Bir dallanma tahmincisi de oldukça kullanışlıdır, çünkü birden fazla potansiyel sonucu olan bir komutun sonucunu tahmin etmeye çalışabilir ve aksi kanıtlanmadıkça doğru olduğunu varsaymaya devam edebilir.

Sonuç

Bir boru hattı, işlemcinin tüm farklı yeteneklerinin her döngüde kullanılmasına izin verir. Bunu, farklı talimatların farklı aşamalarını aynı anda çalıştırarak yapar. Bu, CPU tasarımına çok fazla karmaşıklık katmaz. Ayrıca, döngü başına birden fazla komutun tek bir aşamayı gerçekleştirmesine izin vermenin yolunu açar.