Saat döngüsü başına birden fazla mantık katmanına sahip olabiliriz, ancak bu katmanların ne kadar karmaşık olabileceği tam olarak kaç mantık katmanının saat hızımıza ve yarı iletken işlemimize bağlı olacağı konusunda bir sınırlama vardır.
Bununla birlikte, birçok farklı çarpma algoritması vardır ve mikrodenetleyiciler tarafından kullanılabilecek bir ipucum yok.
Bilgisayarlardaki çoğu çarpma işleminden sonra, ikili uzun çarpımın bir türevi kullanılır. İkili uzun çarpma içerir
- Bir işlenenin çeşitli farklı miktarlarda kaydırılması
- İkinci işlenene göre kaydırılan sayıları maskeleme
- Maskeleme sonuçlarının bir araya getirilmesi.
Öyleyse bunu donanımda uygulamaya bir göz atalım.
- Değişim sadece işleri nasıl bağladığımızla ilgili bir şey, bu yüzden bedava geliyor.
- Maskeleme AND kapıları gerektirir. Bu bir mantık katmanı anlamına gelir, yani zaman açısından ucuzdur.
- İlave, bir taşıma zincirine olan ihtiyaç nedeniyle nispeten pahalıdır. Neyse ki kullanabileceğimiz bir numara var. Biri üretmek için iki sayı eklemek yerine toplama aşamalarının çoğu için iki tane üretmek için üç sayı ekleyebiliriz.
Bu yüzden ballpark'a 16 bitlik sonuçlarla 8x8 çarpanı için kaç tane mantık aşamasına ihtiyacımız var. Basit olması için, ara sonuçların hepsinin tüm konumlarda bitleri olmadığı gerçeği için optimizasyon yapmadığımızı varsayalım.
Diyelim ki tam bir toplayıcı iki "geçit safhasında" uygulanıyor.
- 1 ara sonuç elde etmek için maskeleme için 1.
- 2, 8 ara sonucu 6’ya düşürmek için üç sayılı gruplar eklemek için
- 2 6 ara sonucu 4’e düşürmek için üç sayılı gruplar eklemek için
- 2, 4 ara sonucu 3’e düşürmek için üç numaradan oluşan bir grup eklemek için
- 2, 3 ara sonucu 2'ye düşürmek için üç numaradan oluşan bir grup eklemek için
- 32 final iki sonucu eklemek için.
Yani yaklaşık 46 mantık aşaması toplamı. Çoğu, son iki ara sonucun eklenmesi için harcanmaktadır.
Bu, tüm ara sonuçların tüm bitlerin (temel olarak dada çarpanının yaptığı gibi) mevcut olmadığı gerçeğinden yararlanılarak, son adım için bir taşıma gözetleme toplayıcısı kullanılarak daha da geliştirilebilir. İki üretmek için 3 yerine 3 yerine 7 sayı ekleyerek (daha fazla ve daha fazla kapının fiyatındaki aşama sayısını azaltmak) vb.
Hepsi küçük detaylar olsa da, önemli olan nokta, iki n bit sayıyı çarpmak ve 2n bit sonuç üretmek için gereken aşama sayısının kabaca n ile orantılı olmasıdır.
Öte yandan, bölme algoritmalarına bakarsak, hepsinin nerede yinelemeli bir süreç olduğunu görürüz.
- Bir yinelemede yapılması, önceki yinelemenin sonuçlarına bağlıdır.
- Bir yinelemeyi uygulamak için gereken mantık aşamalarının sayısı kabaca n ile orantılıdır (çıkarma ve karşılaştırma, karmaşıklık açısından toplama işlemine çok benzerdir)
- yineleme sayısı da n ile kabaca orantılıdır.
Dolayısıyla, bölmeyi uygulamak için gereken mantık aşaması sayısı n kare ile kabaca orantılıdır.