Bu çok karmaşık bir cevabı olan basit bir sorudur.
Öncelikle, biraz arka plan.
Gerçek dünya VLSI tasarımı, sürekli değişen dengeler sunan son derece teknik bir alandır. Bir devrenin bir cevabı hesaplamak için aldığı süre nadiren tek önemli faktördür. Güç çekişi ve fiziksel alanın yanı sıra, tasarladığınız devrelerin aslında analog olduğunu gösteren bir dizi faktör var (örn. Tel direnci, parazit kapasitans). Tüm bunlar gerçek bir devrede önemlidir ve hangi tasarımın seçildiğini etkileyebilir.
İkinci olarak, bir projenin tüm yaşam döngüsünü göz önünde bulundurmalısınız. VLSI gerçekleştirmesi için uygun bir toplayıcı FPGA gerçekleştirmesi için uygun olmayabilir. Tasarım bir FPGA üzerinde test edilen bir aşamadan geçecekse ... resmi elde edersiniz.
Üçüncüsü, her toplayıcı eşit değildir. Tipik bir CPU'da, etrafında farklı görevler yapan çok sayıda toplayıcı vardır; muhtemelen birkaç tamsayı ALU, kayan nokta mantis toplayıcısı, adres hesaplaması yapan bir toplayıcı, dal hedeflerini hesaplayan bir toplayıcı vb. vardır. Bu, modern çarpma birimlerinde bulduğunuz taşıma tasarruflu toplayıcıları saymaz. Her birinin kendine özgü özellikleri ve kısıtlamaları vardır.
Örneğin, dal hedef hesaplaması, tam bir kelimeye küçük bir sabit eklenmesini içerir; bu, iki tam kelimeyi bir araya getiren farklı bir toplayıcı tasarımı önerir. Benzer şekilde, kayan nokta ilavesi, bir döngüden daha az zaman alabilecek bir ilave sonrası yuvarlama adımı gerektirir, bu nedenle eklemeyi bitirmek için döngünün geri kalanını çalamamanızın bir nedeni yoktur.
Son olarak ve belki de en önemlisi, büyük oyuncular (örn. Intel, AMD, NVIDIA), bir kağıt ve / veya patent alabileceklerini düşünmedikçe, bariz nedenlerle düşük seviyeli uygulama ayrıntıları hakkında oldukça sıkı bir şekilde dururlar. O zaman bile, tersine mühendislik olmadan gerçekte ne yaptıklarından emin olamazsınız.
Bunu söyledikten sonra bildiğimiz birkaç şey var.
Farkına varmanız gereken en önemli şey, taşıma-gözetleme yöntemlerinin yapı taşları olduğu ve kendi başlarına yöntem olmadığıdır. Burada bir benzetme olabilir.
Algoritma sınıfları hakkında düşünürseniz, muhtemelen hızlı sıralama, birleştirme sıralaması, ekleme sıralaması gibi bir dizi sıralama algoritması öğrendiniz. Gerçek dünyada, sıralama bir performans darboğazı ise, iyi bir mühendis bunları "gerçek" bir türün inşa edilebileceği ilkel yapı taşları olarak düşünür.
Örneğin, GNU C ++ standart kitaplığındaki sıralama algoritması, aralıklar yeterince küçük olduğunda ekleme sıralama kullanarak hızlı sıralama kullanır. Ancak, birkaç geçişten sonra hızlı sıralama bölümlemenin patolojik davranışlara çarptığı görülüyorsa, yığın sıralamasına geri döner. Bu, endüstriyel güçte bir sıralama yapmak için üç farklı sıralama algoritmasıdır.
Aynı şey toplayıcı devreler için de geçerlidir. Örneğin, Pentium 4 tamsayı biriminin Kogge-Stone ve Brent-Kung'un bir karışımı olan bir Han-Carlson toplayıcı kullandığı bilinmektedir. (Han-Carlson özellikle ilginçtir, çünkü yayılma gecikmesi ve kalıp alanı arasındaki güç açısından oldukça verimli olan "tatlı bir nokta".
"Saf" taşıma-gözetleme başlıkları hala sentezlenmiş devrelerde (örn. Cadence veya Synopsys'e bir Verilog "+" operatörünü beslerseniz), el tasarımı söz konusu olduğunda, süperskalar çıkışları ile modern üst düzey CPU'lar sıralı yürütme motorları, tamsayı birimleri için biraz farklı bir tasarıma doğru ilerliyor gibi görünmektedir.
Spekülatif toplayıcılar, son derece düşük yayılma gecikmesine sahip olan devrelerdir, ancak sadece bir süre doğru çalışırlar (zamanın% 95'i tipiktir) ve spekülatif toplayıcının doğru sonucu döndürüp döndürmediğini çok az mantıkla söylemek mümkündür. Bu nedenle fikir, bir döngüde spekülatif bir ekleme ve taşıma-ileri okuma ekinin yarısını paralel olarak yapmaktır. Spekülatif toplayıcı doğru cevabı verdiyse, talimat yapılır. Aksi takdirde, boru hattını durdurun ve doğru eklemenin diğer yarısını yapın.
Yavaş yolun iki döngü alacağını bildiğiniz için, tasarımcılar genel kullanım için çok yavaş olsa bile daha fazla alan ve güç tasarruflu bir yöntem kullanabilirler.