Giả sử tôi đưa ra một loạt các cố định chiều rộng số nguyên (tức là họ phù hợp trong một thanh ghi chiều rộng ), một 1 , một 2 , ... một n . Tôi muốn để tính tổng S = một 1 + ... + một n trên một máy với số học bổ sung 2 của, thực hiện bổ sung theo modulo 2 w với ngữ nghĩa bao quanh. Điều đó thật dễ dàng - nhưng tổng có thể vượt quá kích thước đăng ký và nếu có, kết quả sẽ sai.
Nếu tổng không tràn, tôi muốn tính toán và để xác minh rằng không có tràn, càng nhanh càng tốt. Nếu tổng tiền tràn ra, tôi chỉ muốn biết rằng nó có, tôi không quan tâm đến bất kỳ giá trị nào.
Thêm các số theo thứ tự không hoạt động, bởi vì một phần tổng có thể tràn. Ví dụ: với các thanh ghi 8 bit, là hợp lệ và có tổng bằng , mặc dù tổng một phần vượt quá phạm vi thanh ghi .
Rõ ràng tôi có thể sử dụng một thanh ghi lớn hơn như một bộ tích lũy, nhưng hãy giả sử trường hợp thú vị khi tôi đã sử dụng kích thước đăng ký lớn nhất có thể.
Có một kỹ thuật nổi tiếng để thêm các số có dấu ngược lại là tổng một phần hiện tại . Kỹ thuật này tránh tràn ra ở mọi bước, với chi phí không thân thiện với bộ đệm và không tận dụng nhiều lợi thế của dự đoán nhánh và thực hiện đầu cơ.
Có một kỹ thuật nhanh hơn có lẽ tận dụng sự cho phép để vượt qua các khoản tiền một phần, và nhanh hơn trên một máy điển hình với cờ tràn, bộ đệm, bộ dự báo nhánh và thực hiện đầu cơ và tải?
(Đây là phần tiếp theo để tóm tắt an toàn tràn )