Ảo hóa 6502 trên 6502 với 6o6
(oldvcr.blogspot.com)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
Ý kiến trên Hacker News
Tóm tắt: