Чи можна визначити всі побітові оператори, використовуючи 'bit bit nand', аналогічно тому, як вся булева логіка може бути побудована за допомогою просто 'boolean nand'?


9

Nand відомий як "універсальний" логічний ворота, оскільки він дозволяє визначити всі інші булеві логічні ворота:

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)))

Це відоме як nand-логіка і зазвичай використовується в сучасних комп’ютерах, тому що транзистор може бути зроблений так, щоб він поводився так само, як nand-gate.

Мені цікаво, чи можна зробити щось подібне з побітними операціями. Чи може , наприклад , побітовое NAND (bnand) використовується для визначення bnot, bor, band, bnor, bxor? Чи є універсальна побітова операція?

Відповіді:


13

На апаратному рівні немає різниці між розрядним і логічним. Отже, так. Логічна операція - це лише побітова операція на одному біті.


2

У більшості сучасних мікропроцесорів побітові операції виконуються спочатку, так що немає ніякої користі від операції NAND.

Наприклад, набір інструкцій x86 має: AND , OR , XOR , NOT . Наскільки я знаю, вони виконуються за один цикл, щоб не було користі, замінивши їх декількома операціями NAND. Він також має ANDN, що є еквівалентом того, ((NOT x) AND y)що може бути сформовано розумним компілятором оптимізації для отримання циклу.

Рух RISC намагався розробити скорочений набір інструкцій для більш простої та більш ефективної архітектури. Ідея полягала в тому, що компіляторам доведеться поєднувати більш прості та швидкі інструкції. Однак, окрім деяких експериментальних чи навчальних процесорів, більшість надають як NAND, так і звичайні побітові операції (наприклад, PowerPC або ARM ).


Я справді не впевнений, як булеві оператори реалізовані в процесорах в наші дні, але раніше було досить часто використовувати мюкс 4 на 1, подаючи в "таблицю правдивості" як 4 входи, а потім використовувати два біти для діяти як селектор для виводу. Дає вам єдину схему, яка може бути використана для всіх 16 двооперандних булевих функцій.
Ватін

2
Той факт, що АБО, XOR і НЕ реалізуються "споконвічно" і займають не більше ніж один тактовий цикл, нічого не говорить про те, будуються вони з використанням лише ланцюгів NAND або ні. Я підозрюю, що в цей час вони будують, використовуючи лише NAND, оскільки транзистори дуже дешеві і дуже швидкі. Метод Ватіна 4-в-1 оптимізований для використання невеликої кількості транзисторів, що в епоху нанометрів безглуздо.
Мартін Маат

RISC час втрачає сенс. Коли вони з'явилися, типові складні інструкції займали кілька тактових годин, наприклад 10 або більше. І це було не про АБО / І / НЕ, вони вже були швидкими і вважалися "простими" та важливими для будь-якого процесора, щоб їх, звичайно, не скинув процесор RISC. Сьогодні складні вказівки займають менше годинного циклу (завдяки конвеєрному та багатоядерному / багатоядерному.
Martin Maat
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.