Tüm boolean mantığının sadece 'boolean nand' kullanılarak nasıl oluşturulabileceğine benzer bir 'bitsel nand' kullanarak tüm bitsel operatörleri tanımlamak mümkün müdür?


9

Nand "evrensel" mantık kapısı olarak bilinir, çünkü diğer tüm boole mantık kapılarını tanımlamanıza izin verir:

not(x) = nand(x,x)
and(x, y) = not(nand(x, y))
or(x, y) = nand(not(x), not(y))
nor(x, y) = not(or(x, y))
xor(x, y) = nand(nand(a, nand(a, b)), nand(b, nand(a, b)))

Bu nand mantığı olarak bilinir ve modern bilgisayarlarda yaygın olarak kullanılır, çünkü bir transistörün bir nand kapısı gibi davranması sağlanabilir.

Bitsel işlemlerle benzer bir şey yapmanın mümkün olup olmadığını merak ediyorum. Can bir örneğin bit-bazında NAND (bnand) tanımlamak için kullanılabilir bnot, bor, band, bnor, bxor? Evrensel bir bitsel işlem var mı?

Yanıtlar:


13

Donanım düzeyinde, bitsel ve mantıksal arasında bir fark yoktur. Yani evet. Mantıksal bir işlem, tek bir bit üzerinde sadece bitsel bir işlemdir.


2

Çoğu modern mikroişlemcide bitsel işlemler yerel olarak uygulanır, böylece bir NAND işlemine sahip olmanın hiçbir yararı yoktur.

Örneğin, x86 komut kümesi şunları içerir: AND , OR , XOR , NOT . Bunların hepsi bildiğim kadarıyla tek bir döngüde gerçekleştirilir, böylece birkaç NAND operasyonuyla değiştirilmesinin faydası olmaz. Ayrıca, bir döngü kazanmak için akıllı bir optimizasyon derleyicisi tarafından oluşturulabilecek bir eşdeğeri olan ANDN'ye sahiptir ((NOT x) AND y).

RISC hareketi daha basit bir daha fazla ölçülebilir mimari için azaltılmış komut setini teşvik etmeye çalıştı. Fikir derleyicilerin daha basit ve daha hızlı talimatları birleştirmesi gerektiğiydi. O ancak göründüğü dışında bazı deneysel veya öğretme işlemciler, en doğal NAND yanı sıra her zamanki bitsel işlemleri (örn sağlamak PowerPC veya ARM ).


Boolean operatörlerinin bu günlerde CPU'larda nasıl uygulandığından gerçekten emin değilim, ancak 4'e 1 mux kullanmak, "doğruluk tablosunu" 4 giriş olarak beslemek için oldukça yaygındı, sonra iki biti çıkış için seçici olarak çalışır. 16 adet iki işlenen boole işlevinin tümü için kullanılabilecek tek bir devre verir.
Vatin

2
OR, XOR ve NOT'un "doğal olarak" uygulanması ve tek bir saat döngüsünden daha fazlasını almamaları, sadece NAND devreleri kullanılarak veya oluşturulmadığı hakkında hiçbir şey söylemez. Transistörler gerçekten ucuz ve hızlı olduğu için bu günlerde sadece NAND kullanarak üretildiğinden şüpheleniyorum. Vatine'in 4'e 1 yöntemi, nanometre döneminde anlamsız olan az sayıda transistör kullanmak için optimize edilmiştir.
Martin Maat

RISC zamana göre anlamsız hale getirilmiştir. Ortaya çıktığında, tipik karmaşık talimatlar 10 gibi çok sayıda saat döngüsü aldı. Ve bu OR / AND / NOT ile ilgili değildi, bunlar zaten hızlıydı ve herhangi bir CPU için "basit" ve gerekliydi, bu yüzden kesinlikle bir RISC işlemci tarafından düşürülmeyeceklerdi. Bugün, karmaşık talimatlar bir saat döngüsünden daha az zaman alıyor (boru hattı ve çoklu iş parçacığı / çok çekirdekli nedeniyle
Martin Maat
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.