3 điểm bởi GN⁺ 2025-03-04 | 1 bình luận | Chia sẻ qua WhatsApp
  • Năm 1993, Intel đã ra mắt bộ xử lý Pentium hiệu năng cao
    • Trong quá trình phân tích mạch của Pentium, người ta phát hiện một mạch phức tạp dùng để nhân với 3
    • Mạch này là một phần của bộ nhân dấu phẩy động của Pentium, thực hiện phép nhân số 64-bit theo cơ số 8
  • Sự cần thiết của phép nhân theo cơ số 8
    • Phép nhân nhị phân đơn giản về mặt khái niệm nhưng chậm
    • Pentium dùng phép nhân theo cơ số 8 để giảm số lượng mạch và tăng tốc độ
    • Phép nhân theo cơ số 8 phức tạp hơn vì phải nhân với các chữ số từ 0 đến 7
  • Thuật toán Booth và mạch ×3
    • Sử dụng thuật toán Booth để tối ưu hóa phép nhân
    • Mạch ×3 phải được xử lý như một trường hợp đặc biệt trong phép nhân dấu phẩy động
    • Mạch này phải hoạt động rất nhanh và sử dụng các kỹ thuật như carry lookahead để tối đa hóa hiệu năng
  • Carry lookahead và bộ cộng tiền tố song song
    • Bộ cộng carry lookahead tính song song toàn bộ các bit carry để thực hiện phép cộng nhanh hơn
    • Sử dụng bộ cộng tiền tố song song để triển khai carry lookahead theo từng khối 8-bit
    • Dùng thuật toán Kogge-Stone để giảm độ trễ và tổ chức mạch hiệu quả
  • Bộ cộng carry select
    • Bộ cộng carry select thực hiện đồng thời hai phép cộng và cho kết quả ngay khi bit carry được xác định
    • Pentium sử dụng bộ cộng carry select cho từng khối 8-bit trong mạch ×3
  • Trình điều khiển đầu ra BiCMOS
    • Đầu ra của mạch ×3 cần dòng điện cao, và quy trình BiCMOS được dùng để giảm độ trễ tín hiệu
    • BiCMOS kết hợp CMOS và transistor lưỡng cực để mang lại hiệu năng cao
  • Kết luận
    • Mạch ×3 của Pentium là một thiết kế phức tạp, sử dụng nhiều transistor hơn các vi xử lý đời trước
    • Đây là một ví dụ cho thấy mức độ phức tạp của bộ xử lý đã tăng lên như thế nào

1 bình luận

 
GN⁺ 2025-03-04
Ý kiến Hacker News
  • Trong mô phỏng máy tính ternary, có cách chuyển phép chia cho lũy thừa của 3 thành dịch bit và cộng

    • Có thể biểu diễn 1/3 thành 1/2 - 1/2(1/3)
    • Lặp lại điều này vô hạn lần thì có thể biểu diễn 1/3 = -(-1/2)^N
    • Cũng có thể làm vậy với cặp lũy thừa bất kỳ của 2 và 3
    • Nhờ đó có thể cấu thành mạch chia cho hằng số trong thời gian cố định chỉ bằng bộ cộng và bộ trừ
  • Bộ xử lý của game arcade Cinematronics có hai bộ tích lũy 12-bit

    • Lệnh nhân sẽ dịch thành giá trị 24-bit rồi cộng nội dung bộ nhớ
    • Thực thi liên tiếp 8 phép nhân để thu được kết quả 24-bit
    • Chủ yếu được dùng cho phép nhân ma trận 2x2 để xoay tọa độ của đối tượng trong game
    • Vào giữa thập niên 1970, nó đạt thông lượng tối đa 5 MIPS bằng các linh kiện dòng 7400
  • Peter Kogge nhận bằng tiến sĩ tại Stanford và là người đã phát minh ra CPU đa lõi với tư cách IBM Fellow

  • Nhân với 3 trong tính toán địa chỉ là một tác vụ phổ biến

    • Có thể thực hiện trong một chu kỳ đơn bằng lệnh LEA
    • Dùng ngân sách transistor cho việc này là một lựa chọn hợp lý
  • Trong bộ nhân, thay vì nhân với 7 thì có thể nhân với 8 rồi trừ 1

    • Điều này tương tự mạch carry lookahead
    • Có thể biểu diễn 7 = 8-1, 6 = 8-2, 5 = 8-3, 4 = 8-4
  • Bộ nhân ×3 chứa khoảng 9000 transistor, nhiều hơn cả vi xử lý Z80 năm 1976

    • Điều này cho thấy sự tăng trưởng khổng lồ về độ phức tạp của bộ xử lý
    • Ngày nay chúng ta đã chạm tới giới hạn của công nghệ bán dẫn silicon và đã đến lúc phải vận hành thông minh hơn
  • Bộ nhân Booth radix-8 cần mạch x3

    • Đây là đánh đổi giữa diện tích và hiệu năng để đẩy fmax lên cao
  • 8086: 29.000

    • 386: 275.000
    • 486: 1,2 triệu
    • Pentium: 3,1 triệu
    • NSA tham gia từ sau năm 2000
  • Nhược điểm của phép nhân radix-8 là việc nhân với các số từ 0 đến 7 khá phức tạp

    • Nhân với 2 tương đương dịch trái 1 bit
    • Nhân với 4 tương đương dịch trái 2 bit
    • Nhân với 7 có thể giải quyết bằng cách nhân với 8 rồi trừ 1
    • ×3 có thể tính bằng tổng của 2x và 1x, hoặc hiệu của 4x và 1x
    • Nếu có thể dễ dàng tính ×6, thì ×3 có thể thu được bằng cách dịch phải giá trị đó