NetBSD Khôi phục Mô phỏng FPU cho Bộ xử lý i486SX, Mang Sức sống Mới cho Phần cứng Cũ

BigGo Editorial Team
NetBSD Khôi phục Mô phỏng FPU cho Bộ xử lý i486SX, Mang Sức sống Mới cho Phần cứng Cũ

Trong thời đại mà hỗ trợ phần mềm cho phần cứng cũ ngày càng giảm dần, một dự án đáng chú ý đã xuất hiện nhằm mang lại sức sống mới cho phần cứng máy tính có tuổi đời hàng thập kỷ. Một nhà phát triển đã thành công trong việc khôi phục hỗ trợ mô phỏng đơn vị điểm phù động (FPU) cho bộ xử lý i486SX trong NetBSD 10.x và các phiên bản sau này, cho phép chức năng hệ điều hành hiện đại hoạt động trên những CPU cổ điển thiếu khả năng xử lý điểm phù động bằng phần cứng.

Di sản i486SX và Mô phỏng FPU

i486SX là một biến thể giá rẻ của dòng bộ xử lý 486 của Intel được phát hành vào đầu những năm 1990, bị giới hạn một cách nhân tạo bằng cách vô hiệu hóa đơn vị điểm phù động. Như một người bình luận đã chỉ ra, nó được coi là phần cứng bị cắt giảm chức năng tại thời điểm phát hành. Không có FPU, những bộ xử lý này không thể xử lý các phép tính điểm phù động một cách tự nhiên, điều cần thiết cho nhiều ứng dụng bao gồm tính toán khoa học và một số hoạt động đồ họa nhất định.

Dự án khôi phục này giới thiệu lại tùy chọn MATH_EMULATE vào nhân của NetBSD, cho phép hệ điều hành bắt các lệnh điểm phù động và mô phỏng chúng bằng phần mềm. Cách tiếp cận này cho phép các tệp nhị phân không được sửa đổi sử dụng các phép tính điểm phù động có thể chạy trên hệ thống i486SX mà không cần biên dịch đặc biệt hoặc liên kết với các thư viện soft-float.

Điều này từng rất phổ biến trước khi có các bộ xử lý Pentium. Nhiều (hầu hết?) chuỗi công cụ biên dịch đã bao gồm một trình mô phỏng FPU bằng phần mềm. Dự án rất tuyệt vời!

Ứng dụng Rộng rãi Ngoài i486SX

Các cuộc thảo luận cộng đồng cho thấy công việc này có ảnh hưởng vượt ra ngoài phần cứng Intel cổ điển. Như một người bình luận đã chỉ ra, nhiều SoC x86 thay thế nhắm vào các hệ thống nhúng không có FPU, bao gồm cả Vortex86 nguyên bản. Điều này cho thấy dự án có thể mang lại lợi ích cho một phạm vi phần cứng rộng lớn hơn so với ban đầu.

Cũng có sự quan tâm về việc liệu sự phát triển này có thể cho phép NetBSD 10.x chạy trên các triển khai FPGA của bộ xử lý x86, chẳng hạn như lõi ao486 trong dự án MiSTer. Mặc dù thử nghiệm ban đầu của một thành viên cộng đồng không thành công, khả năng này vẫn hấp dẫn đối với những người đam mê máy tính cổ điển.

Triển khai Kỹ thuật và Nguồn gốc

Điều thú vị là dự án này kết hợp mã có một lịch sử đáng kể. Mã mô phỏng FPU cốt lõi có nguồn gốc từ người sáng tạo Linux, Linus Torvalds, với thông báo bản quyền từ năm 1991, và cuối cùng bắt nguồn từ 386BSD. Kết nối lịch sử này đã làm dấy lên một cuộc thảo luận phụ về tính tương thích giấy phép giữa mã Linux ban đầu và các dự án được cấp phép BSD.

Việc triển khai xử lý một loạt các hoạt động điểm phù động, từ các phép toán cơ bản đến các hàm phức tạp hơn như logarit. Tuy nhiên, một số hoạt động vẫn chưa được triển khai hoặc có vấn đề đã biết về độ chính xác, đặc biệt là với các hàm logarit.

Các Danh mục Lệnh FPU được Giả lập Chính

  • Điều khiển & Khởi tạo: Các lệnh như fninit để khởi tạo FPU
  • Nạp vào Ngăn xếp FPU: Các lệnh bao gồm fld, fldt, filds, fildl để nạp giá trị
  • Lưu từ Ngăn xếp FPU: Các lệnh như fstps, fstpt để lưu giá trị
  • Phép toán Số học: Các phép toán cơ bản như fadd, fsub, fmul, fdiv
  • So sánh: Các lệnh bao gồm fcom, fucom, ftst
  • Thao tác Ngăn xếp: Các thao tác như fxch, fchs, fabs, frndint
  • Logarit/Toán học Đặc biệt: Một số thao tác như f2xm1 đã được triển khai, những lệnh khác như fyl2x đang được phát triển

Lưu ý: Một số thao tác phức tạp vẫn chưa được triển khai hoặc có vấn đề về độ chính xác.

So sánh với Phát triển Nhân Linux

Thời điểm của dự án này đặc biệt đáng chú ý khi xem xét các phát triển gần đây trong cộng đồng nhân Linux. Chỉ vài ngày trước khi dự án này được nêu bật, các bản vá đã được đề xuất để loại bỏ hoàn toàn hỗ trợ nhân Linux cho các CPU x86 thiếu FPU. Sự khác biệt này trong cách tiếp cận giữa NetBSD và Linux làm nổi bật các triết lý khác nhau về hỗ trợ phần cứng giữa các hệ điều hành này, với NetBSD duy trì danh tiếng về việc hỗ trợ các nền tảng phần cứng đa dạng và cũ.

Mặc dù máy tính hiện đại phần lớn đã không còn sử dụng những bộ xử lý cổ điển này, các dự án như thế này chứng minh sự quan tâm lâu dài trong việc giữ cho phần cứng cũ hoạt động với phần mềm hiện đại. Đối với những người đam mê máy tính cổ điển, mục đích giáo dục, hoặc các ứng dụng công nghiệp chuyên biệt sử dụng bộ xử lý x86 nhúng không có FPU, việc khôi phục mô phỏng điểm phù động trong NetBSD này đại diện cho một đóng góp có giá trị cho hệ sinh thái máy tính.

Tham khảo: FPU Emulation Revival for i486SX on NetBSD