Đã từng có bộ xử lý nào triển khai lệnh căn bậc hai số nguyên không?
- Harris RTX 2000 Forth CPU cung cấp lệnh căn bậc hai số nguyên nhiều bước.
- ENIAC sử dụng một bộ chia/bộ tính căn bậc hai chuyên dụng để thực hiện tối đa 3 phép tính căn bậc hai mỗi giây.
- Cách hiệu quả nhất để tính căn bậc hai số nguyên là dùng phép lặp Newton-Raphson để tính nghịch đảo (
1/√x), sau đó nhân với số ban đầu.
- Các lệnh được dùng trên CPU và GPU hiện đại như
frsqrte và frsqrts của ARMv8 được sử dụng để tính ước lượng ban đầu và lặp lại nhằm tăng dần độ chính xác.
- Để tính căn bậc hai số nguyên cần một bộ nhân số nguyên chính xác trên dải rộng, nhưng phần lớn CPU không có phần cứng này.
- Độ chính xác là một yếu tố quan trọng, và các lệnh được tách riêng để lập trình viên có thể cân bằng giữa độ chính xác và tốc độ.
Ý kiến của GN⁺
- Lệnh căn bậc hai số nguyên có thể hữu ích trong các lĩnh vực ứng dụng cụ thể, đặc biệt quan trọng trong các phép tính đồ họa 3D.
- Những bộ xử lý có lệnh này có thể cho phép tính toán tốc độ cao thông qua các thuật toán chuyên biệt, từ đó giảm bớt các phép tính phức tạp ở mức phần mềm.
- Tuy nhiên, nhiều bộ xử lý hiện đại không tích hợp sẵn các lệnh như vậy, mà thay vào đó triển khai chúng thông qua thư viện phần mềm hoặc microcode.
- Việc cân bằng giữa độ chính xác và tốc độ là rất quan trọng, và lập trình viên cần có khả năng điều chỉnh điều này tùy theo tình huống.
- Bài viết này mang lại thông tin thú vị cho những ai quan tâm đến lịch sử máy tính, đặc biệt hữu ích với người thích lập trình mức thấp hoặc thiết kế hệ thống.
1 bình luận
Ý kiến trên Hacker News
Lệnh
URSQRTEcủa AArch64 NEONFRSQRTEthực hiện phép toán tương tự với số dấu phẩy động 32 bit.Khả năng tính toán trong một chu kỳ xung nhịp duy nhất
Vi mã VAX
Tính căn bậc hai bằng thiết bị điện cơ
Cách tính căn bậc hai số nguyên
1 + 3 + 5 + ... + (2k + 1).Câu trả lời mang tính hài hước về ENIAC
Cách tính gần đúng căn bậc hai
Log2(x)bằng "số lượng leading zeroes".Phân tích thuật toán căn bậc hai cho người hâm mộ vi xử lý 6502
Lệnh
VSQRTcủa ARM VFPVSQRT.Cách tính căn bậc hai rất thô
1đầu tiên.