2 điểm bởi GN⁺ 2024-05-13 | 1 bình luận | Chia sẻ qua WhatsApp

Giới thiệu 6o6, công cụ ảo hóa CPU 6502 bằng chính CPU 6502 (và phát hành The Incredible KIMplement 1.0)

  • Tác giả đã chính thức phát hành phiên bản 1.0 của "The Incredible KIMplement", một dự án trong danh sách việc muốn làm mà ông đã thực hiện ngắt quãng suốt 20 năm
  • The Incredible KIMplement là chương trình mô phỏng máy tính bo mạch đơn KIM-1 dựa trên MOS/Commodore 6502 với xung nhịp 1MHz và 1KB bộ nhớ
    • Chạy trên Commodore 64 và cung cấp tính năng hỗ trợ TTY của KIM-1 cùng RAM mở rộng 16KB
  • Quan trọng hơn, tác giả đã hiện thực 6o6 (6502-on-6502), một CPU NMOS 6502 được ảo hóa hoàn toàn chạy trên CPU 6502
    • Kiểm soát hoàn toàn việc thực thi mã khách và trừu tượng hóa truy cập bộ nhớ để có thể chạy cả trong bộ nhớ ảo
    • Không chỉ vượt qua các bài kiểm thử chức năng mà còn có thể tự ảo hóa chính nó nhiều lần

Động cơ và thiết kế của việc ảo hóa 6502

  • Khi còn nhỏ, tác giả từng muốn tạo ra một "hệ điều hành tối thượng", nhưng phần lớn chỉ dừng ở mức demo rất sơ khai
  • Khi tiếp xúc với các hệ thống đa người dùng, ông nhận ra rằng người dùng có thể chạy những đoạn mã có vấn đề
    • Một hệ thống hiệu quả phải có khả năng ngăn chặn hoặc ứng phó với các vấn đề do mã gây ra
  • Do giới hạn của CPU 6502, rất khó giải quyết hoàn toàn việc này chỉ bằng phần cứng
    • Vì vậy tác giả quyết định giải bằng phần mềm
  • Máy ảo 6o6 (VM) thực thi mã khách và trừu tượng hóa hoàn toàn truy cập bộ nhớ
    • Harness đóng vai trò là giao diện của VM với bộ nhớ khách và phần cứng
    • Kernel chạy VM và xử lý các tình huống ngoại lệ
  • Các phép toán ALU được thực hiện trực tiếp trên CPU 6502 chủ để đảm bảo độ chính xác và hiệu năng
  • Hiệu năng được tối ưu bằng truy cập bộ nhớ inline, Instruction Fusion và các kỹ thuật khác

Xác minh và kiểm thử 6o6

  • Độ chính xác được xác minh bằng bộ kiểm thử chức năng của Klaus Dormann
  • Hiệu năng được đo bằng trình mô phỏng lib6502
    • Việc áp dụng truy cập bộ nhớ inline và Instruction Fusion giúp giảm 36.5% số lần thực thi lệnh
  • Bao gồm 4 chương trình demo chạy trên Commodore 64 và Apple IIe
    • Hello World
    • Tự ảo hóa chính nó nhiều lần
    • Chuyển đổi giữa 2 tác vụ độc lập
    • Mô phỏng không gian địa chỉ 64KB bằng cartridge geoRAM

Các lĩnh vực ứng dụng tiềm năng và ý tưởng cải tiến thêm cho 6o6

  • Phát triển hệ điều hành tùy biến
  • Môi trường thực thi mã tải về an toàn
    • Chẳng hạn thực thi mã động trong client Gopher
  • Hỗ trợ ảo hóa trên các hệ thống NMOS 6502 với phần cứng tối thiểu
  • Refactor để có thể chạy từ ROM
  • Mô phỏng tập lệnh CMOS 65C02
  • Tối ưu mã thêm nữa

Ý kiến của GN⁺

  • 6o6 có vẻ là một giải pháp ảo hóa bằng phần mềm rất xuất sắc. Đặc biệt hữu ích cho các hệ thống 6502 có tài nguyên phần cứng hạn chế.

  • Cấu trúc mô-đun của Harness và kernel rất ấn tượng. Có vẻ sẽ giúp hỗ trợ nhiều phần cứng khác nhau và tăng tính linh hoạt.

  • Những kỹ thuật được áp dụng để tối ưu hiệu năng trình mô phỏng (truy cập bộ nhớ inline, Instruction Fusion, v.v.) rất thú vị. Đây có vẻ là những ý tưởng đáng để áp dụng thử cho các dự án trình mô phỏng khác.

  • Việc trình diễn hoạt động trên phần cứng thực tế (Commodore 64, Apple II) và trên các cartridge mở rộng như geoRAM cũng rất ấn tượng. Điều đó cho thấy rõ tính tương thích phần mềm và khả năng ứng dụng.

  • Vì đây là một dự án có độ hoàn thiện cao, việc công khai mã nguồn có thể đóng góp tích cực cho cộng đồng liên quan. Rất đáng chờ đợi những cải tiến và các trường hợp ứng dụng trong tương lai.

1 bình luận

 
GN⁺ 2024-05-13
Ý kiến trên Hacker News

Tóm tắt:

  • Tác giả đã công bố tác phẩm hoàn thành đầu tiên trong dự án danh sách việc cần làm trước khi chết mà mình đã thi thoảng thực hiện suốt 20 năm. Đây có vẻ là một mục tiêu rất ấn tượng.
  • Việc mở rộng kiến trúc 6502 đã 50 năm tuổi, đơn giản và nhiều hạn chế, tới những giới hạn mới luôn rất thú vị. Lõi 6502 vẫn còn xuất hiện trong một số SoC nhắm tới thị trường đại trà siêu giá rẻ.
  • Bài viết gợi lại ký ức về lần đầu tác giả học hợp ngữ 6502. Khi đó, một cuốn sách tên là "The Visual Computer" được phát hành kèm trình giả lập trên đĩa mềm và đã mang lại một sự khai sáng lớn. Tác giả đã tìm được bản PDF của sách, nhưng chưa rõ phần mềm trên đĩa mềm còn tồn tại hay không.
  • Theo phần thân bài đăng, điểm cốt lõi thực sự là cách Commodore 64 giả lập các hệ thống dựa trên 6502 nhưng rất khác biệt. Tác giả gọi nó là "6o6" hoặc "6502-on-6502", một CPU NMOS 6502 phần mềm được ảo hóa hoàn toàn chạy trên CPU 6502. Dự án này đã được phát hành mã nguồn mở.
  • Có thể kiểm soát hoàn toàn việc thực thi mã khách, bẫy các opcode không được tài liệu hóa và các opcode jam, đồng thời trừu tượng hóa hoàn toàn mọi truy cập bộ nhớ để cho phép ánh xạ lại địa chỉ, chặn các thao tác đọc/ghi bất hợp pháp và chạy bộ nhớ ảo hoàn chỉnh.
  • Không chỉ vượt qua các bài kiểm tra chức năng, nó còn hoàn thiện đến mức có thể tự ảo hóa chính nó đang tự ảo hóa chính nó.
  • Đây là một công trình đáng kinh ngạc không chỉ từ góc nhìn của 6502 mà từ mọi góc nhìn.
  • Nó cũng gợi nhớ đến video "The Zilog Z80 has a Protected Mode", nhưng khi video đó được đăng lên HN thì không có thảo luận nào.
  • Bài viết khiến người đọc xúc động đến nổi da gà. Có lẽ sẽ phải đọc đi đọc lại nhiều lần.