2 poin oleh GN⁺ 2024-05-13 | 1 komentar | Bagikan ke WhatsApp

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

 
GN⁺ 2024-05-13
Komentar Hacker News

Ringkasan:

  • Penulis memamerkan karya pertama yang selesai dari proyek bucket list yang dikerjakan secara selingan selama 20 tahun. Ini tampak seperti bucket list yang sangat mengesankan.
  • Selalu menarik melihat arsitektur 6502 yang sederhana dan terbatas, berusia 50 tahun, didorong ke batas baru. Inti 6502 masih dapat ditemukan di beberapa SoC yang menargetkan pasar massal berbiaya sangat rendah.
  • Ini membangkitkan kembali kenangan saat penulis pertama kali belajar assembly 6502. Saat itu, sebuah buku berjudul "The Visual Computer" disertakan bersama emulator di disket, dan itu menjadi pencerahan besar. PDF bukunya ditemukan, tetapi belum jelas apakah perangkat lunak di disket itu masih ada.
  • Inti sesungguhnya dari postingan ini, menurut isi utamanya, adalah bagaimana Commodore 64 mengemulasikan sistem berbasis 6502 yang sangat berbeda. Ini disebut "6o6" atau "6502-on-6502", yaitu CPU NMOS 6502 perangkat lunak yang tervirtualisasi sepenuhnya dan berjalan di atas CPU 6502. Ini telah dirilis sebagai open source.
  • Eksekusi kode tamu dapat dikendalikan sepenuhnya, opcode yang tidak terdokumentasi dan jam opcodes dapat ditangkap, dan semua akses memori diabstraksikan sepenuhnya sehingga memungkinkan pemetaan ulang alamat, pemblokiran baca/tulis ilegal, serta eksekusi memori virtual penuh.
  • Bukan hanya lulus uji fungsional, tetapi juga cukup matang untuk memvirtualisasikan dirinya sendiri yang sedang memvirtualisasikan dirinya sendiri.
  • Ini adalah karya yang luar biasa, bukan hanya dari sudut pandang 6502 tetapi dari sudut pandang mana pun.
  • Ini juga mengingatkan pada video "The Zilog Z80 has a Protected Mode", meskipun video itu tidak memicu diskusi saat diposting di HN.
  • Membaca tulisan ini begitu menggetarkan sampai membuat merinding. Rasanya perlu dibaca berulang kali.