Memvirtualisasi 6502 di atas 6502 dengan 6o6
(oldvcr.blogspot.com)Pengenalan 6o6 yang memvirtualisasi CPU 6502 dengan CPU 6502 (serta rilis The Incredible KIMplement 1.0)
- Penulis secara resmi merilis versi 1.0 dari "The Incredible KIMplement", salah satu proyek bucket list yang dikerjakan secara berkala selama 20 tahun
- The Incredible KIMplement adalah program yang mengemulasikan komputer papan tunggal berbasis MOS/Commodore KIM-1 6502 dengan 1MHz dan memori 1KB
- Berjalan di Commodore 64 serta menyediakan dukungan TTY KIM-1 dan RAM ekspansi 16KB
- Yang lebih penting, penulis mengimplementasikan CPU NMOS 6502 yang tervirtualisasi penuh bernama 6o6 (6502-on-6502) di atas CPU 6502
- Mengendalikan eksekusi kode tamu secara penuh dan mengabstraksikan akses memori sehingga bisa berjalan bahkan pada memori virtual
- Tidak hanya lolos pengujian fungsional, tetapi juga mampu memvirtualisasi dirinya sendiri berkali-kali
Motivasi dan desain virtualisasi 6502
- Sejak kecil ingin membuat "sistem operasi pamungkas", tetapi sebagian besar hanya berhenti di tingkat demo yang primitif
- Setelah mengenal sistem multiuser, penulis menyadari bahwa pengguna dapat menjalankan kode yang bermasalah
- Sistem yang efektif harus mampu mencegah atau menangani masalah yang disebabkan oleh kode
- Karena keterbatasan CPU 6502, hal ini sulit diselesaikan sepenuhnya hanya dengan perangkat keras
- Maka diputuskan untuk menyelesaikannya lewat perangkat lunak
- Mesin virtual (VM) 6o6 menjalankan kode tamu dan sepenuhnya mengabstraksikan akses memori
- Harness berperan sebagai antarmuka VM terhadap memori tamu dan perangkat keras
- Kernel menjalankan VM dan menangani kondisi pengecualian
- Operasi ALU dijalankan langsung pada CPU 6502 host untuk memastikan akurasi dan kinerja
- Kinerja dioptimalkan dengan teknik seperti akses memori inline dan Instruction Fusion
Verifikasi dan pengujian 6o6
- Akurasi diverifikasi menggunakan functional test suite dari Klaus Dormann
- Kinerja diukur menggunakan emulator lib6502
- Dengan menerapkan akses memori inline dan Instruction Fusion, jumlah eksekusi instruksi berkurang 36,5%
- Menyertakan 4 program demo yang berjalan di Commodore 64 dan Apple IIe
- Hello World
- Memvirtualisasi dirinya sendiri berkali-kali
- Berpindah antara 2 task independen
- Mengemulasikan ruang alamat 64KB menggunakan kartrid geoRAM
Bidang pemanfaatan potensial 6o6 dan ide peningkatan lanjutan
- Pengembangan sistem operasi kustom
- Lingkungan aman untuk menjalankan kode unduhan
- Misalnya eksekusi kode dinamis pada klien Gopher
- Dukungan virtualisasi pada sistem NMOS 6502 dengan perangkat keras seminimal mungkin
- Refaktorisasi agar dapat berjalan dari ROM
- Emulasi instruksi CMOS 65C02
- Optimisasi kode tambahan
Pendapat GN⁺
-
6o6 tampak sebagai solusi virtualisasi perangkat lunak yang sangat baik. Terutama terlihat berguna pada sistem 6502 dengan sumber daya perangkat keras yang terbatas.
-
Struktur modular Harness dan kernel terasa mengesankan. Ini tampaknya akan membantu dukungan untuk beragam perangkat keras sekaligus menjaga fleksibilitas.
-
Teknik yang diterapkan untuk optimisasi kinerja emulator (akses memori inline, Instruction Fusion, dan sebagainya) menarik. Ini terasa seperti ide yang layak dicoba juga pada proyek emulator lain.
-
Demonstrasi yang berjalan pada perangkat keras nyata (Commodore 64, Apple II) dan kartrid ekspansi seperti geoRAM juga mengesankan. Ini menunjukkan kompatibilitas perangkat lunak dan kegunaannya dengan baik.
-
Karena ini proyek yang sangat matang, pembukaan kode sumber tampaknya dapat menjadi kontribusi bagi komunitas terkait. Menarik untuk menantikan peningkatan dan contoh pemanfaatannya ke depan.
1 komentar
Komentar Hacker News
Ringkasan: