Có thể định nghĩa tất cả các toán tử bitwise bằng cách sử dụng 'bitwise nand' tương tự như cách tất cả logic boolean có thể được xây dựng chỉ bằng 'boolean nand'?


9

Nand được gọi là cổng logic 'phổ quát', bởi vì nó cho phép bạn xác định tất cả các cổng logic boolean khác:

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

Điều này được gọi là nand-logic , và thường được sử dụng trong các máy tính hiện đại bởi vì một bóng bán dẫn có thể được chế tạo để hoạt động giống như một cổng nand.

Tôi tự hỏi nếu có thể làm một cái gì đó tương tự với các hoạt động bitwise. Can một ví dụ Bitwise nand (bnand) được sử dụng để xác định bnot, bor, band, bnor, bxor? Có một hoạt động bitwise phổ quát?

Câu trả lời:


13

Ở cấp độ phần cứng, không có sự khác biệt giữa bitwise và logic. Vì vậy, vâng. Một hoạt động logic chỉ là một hoạt động bitwise trên một bit.


2

Trên hầu hết các bộ vi xử lý hiện đại, các hoạt động bitwise được thực hiện nguyên bản, do đó không có lợi ích gì khi có hoạt động NAND.

Ví dụ: tập lệnh x86 có: AND , OR , XOR , NOT . Tất cả đều được thực hiện trong một chu kỳ duy nhất theo như tôi biết, do đó sẽ không có lợi ích gì bằng cách thay thế chúng bằng một số hoạt động NAND. Nó cũng có ANDN tương đương với ((NOT x) AND y)trình biên dịch tối ưu hóa thông minh để tạo chu kỳ.

Các RISC phong trào cố gắng để thúc đẩy giảm tập lệnh cho một đơn giản hơn một kiến trúc performant hơn. Ý tưởng là trình biên dịch sẽ phải kết hợp các hướng dẫn đơn giản hơn và nhanh hơn. Tuy nhiên, có vẻ như ngoài một số bộ xử lý thử nghiệm hoặc giảng dạy, hầu hết đều cung cấp NAND nguyên bản cũng như các hoạt động bitwise thông thường (ví dụ PowerPC hoặc ARM ).


Tôi thực sự không chắc chắn làm thế nào các toán tử boolean được triển khai trong CPU ngày nay, nhưng nó khá phổ biến để sử dụng mux 4 đến 1, cung cấp "bảng chân lý" làm 4 đầu vào, sau đó sử dụng hai bit để hoạt động như là bộ chọn cho đầu ra. Cung cấp cho bạn một mạch đơn có thể được sử dụng cho tất cả 16 hàm boolean hai toán hạng.
Vatine

2
Thực tế là OR, XOR và KHÔNG được triển khai "nguyên bản" và không mất nhiều hơn một chu kỳ đồng hồ duy nhất không nói gì về việc chúng có được xây dựng chỉ bằng các mạch NAND hay không. Tôi nghi ngờ họ đang xây dựng chỉ sử dụng NAND ngày nay vì bóng bán dẫn thực sự rẻ và thực sự nhanh. Phương pháp 4 trên 1 của Vatine được tối ưu hóa để sử dụng một số lượng nhỏ bóng bán dẫn, điều này là vô nghĩa trong kỷ nguyên nanomet.
Martin Maat

RISC đã trở nên vô nghĩa theo thời gian. Khi nó xuất hiện, các hướng dẫn phức tạp điển hình mất nhiều chu kỳ đồng hồ, như 10 hoặc hơn. Và đây không phải là về OR / VÀ / KHÔNG, những thứ này đã nhanh chóng và được coi là "đơn giản" và cần thiết cho bất kỳ CPU nào nên chúng chắc chắn sẽ không bị bộ xử lý RISC loại bỏ. Ngày nay, các hướng dẫn phức tạp mất ít hơn một chu kỳ đồng hồ (do đường ống và đa luồng / đa lõi.
Martin Maat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.