Trong các ngôn ngữ lắp ráp khác nhau MUL (x86)/MULT (mips) tham khảo phép nhân. Nó là một hộp đen cho lập trình viên. Tôi quan tâm đến cách thực sự một CPU hoàn thành một phép nhân bất kể kiến trúc. Cho phép nói rằng tôi có hai giá trị 16-bit trong sổ đăng ký của tôi và tôi là CPU, vì vậy tôi phải thực hiện MUL bằng cách sử dụng các hướng dẫn bit-fiddling khác tôi có (và, hoặc, xor, không, shl, shr, vv). Tôi nên làm gì?Làm thế nào CPU thực hiện các lệnh như MUL/MULT?
Trả lời
http://en.wikipedia.org/wiki/Multiplication_ALU trên Wikipedia liệt kê các phương pháp khác nhau để thực hiện phép nhân trong mạch kỹ thuật số.
Khi tôi làm việc trên dự án để thêm hướng dẫn SIMD vào bộ xử lý giống như DEC Alpha ở Verilog, chúng tôi đã triển khai Wallace tree multiplier, lý do chính khiến nó chạy trong một số chu kỳ cố định và dễ dàng dẫn đường.
CHỈNH SỬA: Bạn đã đề cập bằng cách sử dụng các hướng dẫn bit khác không quan trọng, trên bộ vi xử lý hiện đại sẽ không được mã hóa như thế này; nó sẽ là cách để làm chậm và bộ vi xử lý sẽ bị giết trong tiêu chuẩn.
This page hiển thị cổng logic cho trình tạo tổ hợp 4 * 4. Bạn có thể làm việc từ đó.
Here is somebody's lab nơi chúng mô tả xây dựng hệ số 16 bit từ 4 nhân 4 bit, mỗi cổng được tạo bằng cổng AND và trình bổ sung đầy đủ. Thiết kế đầy đủ, bố cục chip và dạng sóng mô phỏng.
cả hai liên kết đều đã chết: / –
Tôi mặc dù cpus không gọi hướng dẫn riêng của họ vì lý do hiệu quả. Tôi chỉ không có cách nào khác để thể hiện bản thân mình, vì mức thấp nhất mà tôi từng có cho đến nay là asm. Cảm ơn đã giúp đỡ! – George
Thỉnh thoảng họ làm. x86 là một ISA phức tạp và có một số hướng dẫn rất lạ. Các hướng dẫn này được dịch sang một chương trình mã vi mô nội bộ. Nhìn vào http://en.wikipedia.org/wiki/File:Intel_Nehalem_arch.svg, bạn sẽ thấy một bộ giải mã phức tạp và một bộ mã hóa vi mã, thực hiện điều này – Michael
Nó thậm chí tệ hơn so với các CPU hiện đại - được đưa ra thực hiện theo thứ tự, dự đoán nhánh, siêu phân luồng, v.v., cùng với microcode, nó gần như công bằng khi nói rằng x86 ISA chạy trong một máy ảo được thực hiện trong microcode và mạch. Nhưng gần như không bao giờ cần phải lo lắng về nó ... –