Các adder look-lookahead và addple-carry là gì?


8

Tôi thấy các trình bổ sung carry-lookaheadcác thuật ngữ add-carry Ripple được sử dụng thường xuyên. Tôi không biết ý nghĩa của nó là gì (cũng như kiểu kiến ​​trúc mà chúng mô tả).

Ai đó có thể vui lòng giải thích mỗi cái là gì, tại sao cái này có thể nhanh hơn cái kia không, và cái này được dùng để làm gì?

Ngoài ra, có bất kỳ nguồn bên ngoài có thể giúp đỡ với vấn đề?


Sử dụng cách tiếp cận bằng bút chì và giấy thông thường để thêm 1 vào giá trị 9999. Đó là một gợn sóng mang.
Pete Becker

Câu trả lời:


7

Một hệ thống các bộ cộng mang gợn là một chuỗi các bộ cộng đầy đủ tiêu chuẩn cho phép thêm các số có chứa nhiều bit hơn so với một bộ cộng đầy đủ. Mỗi bộ cộng đầy đủ có bit carryin (Cin) và bit carryout (Cout) và các bộ cộng được kết nối bằng cách kết nối Cout ở bước k với Cin ở bước k + 1 (Cin ở bước 0 là C0 trong hình, Cout ở bước 3 là C4 trong hình)

Trình bổ sung Ripple-carry - hình ảnh từ Wikipedia

Thách thức với các bộ cộng mang gợn, là độ trễ lan truyền của các bit mang. Giả sử rằng, ngay lập tức các giá trị của A và B thay đổi, sao cho

A1 = 0
B1 = 1
A0 = 1
B0 = 1

Vì A0 và B0 cao, bộ cộng đầy đủ đầu tiên sẽ tạo ra một carry, tức là C1 = 1. Tuy nhiên, phải mất một thời gian để logic ổn định, do đó, C1 không thay đổi cho đến khi A1 và B1 thay đổi. Do đó, trước khi C1 xuất hiện, bộ cộng đầy đủ thứ hai không tạo ra một carry, nhưng khi C1 xuất hiện, bộ cộng thứ hai sẽ tính toán lại và tạo ra một carry, tức là C2 = 1. Trong trường hợp xấu nhất, C4 không được tính toán chính xác cho đến 4 * độ trễ lan truyền và Cn không được tính cho đến khi độ trễ lan truyền n *.

Một hệ thống bộ cộng mang theo giải quyết vấn đề này, bằng cách tính toán liệu một vật mang sẽ được tạo ra trước khi nó thực sự tính tổng. Có nhiều sơ đồ để làm điều này, vì vậy không có mạch "một" nào tạo thành một bộ cộng nhìn về phía trước. Ý tưởng là một cái gì đó như thế này:

Nhìn về phía trước adder

Tính toán của C4 không nhanh hơn trong Ripple-carry ở trên, cũng không phải PG và GG - phép thuật chỉ xảy ra khi bạn ghép một số khối này lại với nhau để thêm số lớn hơn.

Điều quan trọng cần lưu ý một phần của bức tranh là khối màu tím đang tạo ra ba giá trị: C4, PG (Tuyên truyền) và GG (Tạo). PG tăng cao nếu khối này sẽ truyền Cin sang Cout và GG tăng cao nếu khối sẽ tạo ra tràn bất kể Cin. (Ngoài ra, khối có thể không tạo ra hoặc không tạo ra vật mang, trong trường hợp cả PG và GG đều thấp và Cout là 0.) PG và GG có thể được tính trong khối màu tím bất kể giá trị của C0 - do đó, khi C0 cuối cùng cũng đến, khối màu tím có thể chỉ cần tham khảo kết quả được tính toán trước đó và nếu kết quả là "lan truyền", thì C0 được truyền trực tiếp đến C4; nó nhanh hơn bốn lần so với việc truyền qua tất cả bốn bộ cộng đầy đủ.

Lý do tại sao khối có đầu ra PG và GG là vì vậy, theo kiểu phân cấp, chúng ta có thể thu được các tốc độ lan truyền thậm chí còn lớn hơn.

Xem thêm: http://facemony.kfupm.edu.sa/COE/abouh/Lesson3_3.pdf


Một điểm đáng để thêm vào câu trả lời tuyệt vời này là nếu bạn đang quyết định giữa các kiến ​​trúc trình bổ sung cho một dự án FPGA, Xilinx và có lẽ những người khác sử dụng logic mang nhanh chuyên dụng cho trình bổ sung mang gợn, do đó, đối với hầu hết các thiết kế đồ họa, trình bổ sung mang gợn đơn giản hơn là thực tế nhanh như cái nhìn mang theo.
Brian Drumond

Đối với những gì từng được sử dụng cho, Ripple carry sử dụng ít logic hơn (diện tích, năng lượng động và tĩnh) vì vậy có thể được ưa thích khi đủ nhanh (Cortex-M0?). Tốc độ tăng tốc của trình bổ sung nhanh tăng theo số bit, do đó, một trình cộng rộng hơn làm cho các kỹ thuật tăng tốc như vậy hấp dẫn hơn. Như thường lệ, wikipedia là một nguồn tốt: en.wikipedia.org/wiki/Carry-lookahead_adder
Paul A. Clayton
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.