Chúng ta có thể có nhiều lớp logic trên mỗi chu kỳ đồng hồ nhưng có một giới hạn, chính xác có bao nhiêu lớp logic chúng ta có thể có mức độ phức tạp của các lớp đó sẽ phụ thuộc vào tốc độ xung nhịp và quy trình bán dẫn của chúng ta.
Tuy nhiên, có nhiều thuật toán nhân khác nhau và tôi không biết được thuật toán nào có thể được sử dụng bởi các bộ vi điều khiển
Hầu hết phép nhân trong máy tính sử dụng một biến thể của phép nhân dài nhị phân. Phép nhân dài nhị phân liên quan
- Chuyển một toán hạng bằng nhiều loại đạn khác nhau
- Che dấu các số đã thay đổi dựa trên toán hạng thứ hai
- Thêm kết quả của mặt nạ với nhau.
Vì vậy, hãy xem việc thực hiện điều này trong phần cứng.
- Dịch chuyển chỉ là vấn đề làm thế nào chúng ta kết nối mọi thứ, vì vậy nó miễn phí.
- Mặt nạ đòi hỏi cổng AND. Điều đó có nghĩa là một lớp logic, vì vậy theo quan điểm thời gian, nó rẻ.
- Ngoài ra là tương đối đắt tiền do sự cần thiết của một chuỗi mang. May mắn thay có một mẹo chúng ta có thể sử dụng. Đối với hầu hết các giai đoạn bổ sung thay vì thêm hai số để tạo một số, chúng ta có thể thêm ba số để tạo hai số.
Vì vậy, hãy cho phép ballpark có bao nhiêu giai đoạn logic mà chúng ta cần cho một số nhân 8 x 8 với kết quả 16 bit. Để đơn giản, giả sử chúng ta không thử và tối ưu hóa vì thực tế là không phải tất cả các kết quả trung gian đều có bit ở tất cả các vị trí.
Giả sử rằng một bộ cộng đầy đủ được thực hiện trong hai "giai đoạn cổng".
- 1 cho mặt nạ để tạo ra 8 kết quả trung gian.
- 2 để thêm các nhóm ba số để giảm 8 kết quả trung gian xuống còn 6
- 2 để thêm các nhóm ba số để giảm 6 kết quả trung gian xuống còn 4
- 2 để thêm một nhóm ba số để giảm 4 kết quả trung gian xuống còn 3
- 2 để thêm một nhóm ba số để giảm 3 kết quả trung gian xuống còn 2
- 32 để thêm hai kết quả cuối cùng.
Vì vậy, khoảng 46 giai đoạn logic tổng cộng. Hầu hết trong số đó được dành để thêm hai kết quả trung gian cuối cùng.
Điều này có thể được cải thiện hơn nữa bằng cách khai thác thực tế là không phải tất cả các kết quả trung gian đều có tất cả các bit (đó là cơ bản là hệ số nhân dada làm), bằng cách sử dụng một trình bổ sung lookahead cho bước cuối cùng. Bằng cách thêm 7 số để tạo 3 thay vì ba để tạo hai (giảm số lượng giai đoạn ở mức giá của nhiều cổng hơn và cổng rộng hơn), v.v.
Tuy nhiên, đó là tất cả các chi tiết nhỏ, điểm quan trọng là số lượng giai đoạn cần thiết để nhân hai số n bit và tạo ra kết quả 2n bit tỷ lệ thuận với n.
Mặt khác, nếu chúng ta nhìn vào các thuật toán phân chia, chúng ta thấy tất cả chúng đều có một quá trình lặp ở đâu.
- Những gì được thực hiện trên một lần lặp phụ thuộc nhiều vào kết quả của lần lặp trước đó.
- số lượng các giai đoạn logic cần thiết để thực hiện phép lặp gần như là cơ sở cho n (phép trừ và so sánh rất giống nhau về độ phức tạp của phép cộng)
- số lần lặp cũng tỷ lệ thuận với n.
Vì vậy, số lượng các giai đoạn logic cần thiết để thực hiện phân chia gần như tỷ lệ thuận với n bình phương.