2 puan yazan GN⁺ 2024-05-13 | 1 yorum | WhatsApp'ta paylaş

6502 CPU’yu 6502 CPU ile sanallaştıran 6o6’a giriş (ve The Incredible KIMplement 1.0 sürümü)

  • Yazarın 20 yıldır aralıklı olarak üzerinde çalıştığı yapılacaklar listesi projelerinden biri olan "The Incredible KIMplement"in 1.0 sürümü resmen yayımlandı
  • The Incredible KIMplement, 1MHz ve 1KB belleğe sahip MOS/Commodore KIM-1 6502 tabanlı tek kartlı bilgisayarı öyküleyen bir program
    • Commodore 64 üzerinde çalışıyor ve KIM-1’in TTY destek işlevi ile 16KB genişletilmiş RAM sağlıyor
  • Daha önemlisi, 6o6 (6502-on-6502) adlı tamamen sanallaştırılmış bir NMOS 6502 CPU’nun 6502 CPU üzerinde gerçekleştirilmiş olması
    • Konuk kodun çalıştırılmasını tamamen denetliyor ve bellek erişimini soyutlayarak sanal bellekte de çalışabilmesini sağlıyor
    • Yalnızca işlev testlerini geçmekle kalmıyor, kendisini birden çok kez sanallaştırması da mümkün

6502 sanallaştırmasının motivasyonu ve tasarımı

  • Yazar çocukken "nihai işletim sistemi"ni yapmak istiyordu, ancak çoğu girişim ilkel demo düzeyinde kaldı
  • Çok kullanıcılı sistemlerle tanışınca, kullanıcıların sorunlu kod çalıştırabileceğini fark etti
    • Etkili bir sistemin, kodun yol açtığı sorunları önleyebilmesi ya da bunlara karşılık verebilmesi gerekir
  • 6502 CPU’nun sınırlamaları nedeniyle bunu yalnızca donanımla kusursuz biçimde çözmek zordu
    • Çözümün yazılımla yapılmasına karar verildi
  • 6o6 sanal makinesi (VM), konuk kodu çalıştırıyor ve bellek erişimini tamamen soyutluyor
    • Harness, VM’in konuk belleği ve donanımıyla arayüzü olarak görev yapıyor
    • Kernel, VM’i çalıştırıyor ve istisnai durumları işliyor
  • ALU işlemleri doğrudan ana 6502 CPU üzerinde gerçekleştirilerek doğruluk ve performans sağlanıyor
  • Satır içi bellek erişimi, Instruction Fusion gibi yöntemlerle performans iyileştiriliyor

6o6’ın doğrulanması ve testleri

  • Doğruluk doğrulaması için Klaus Dormann’ın işlev test paketi kullanıldı
  • Performans ölçümü için lib6502 öykünücüsü kullanıldı
    • Satır içi bellek erişimi ve Instruction Fusion uygulanarak komut yürütme sayısı %36,5 azaltıldı
  • Commodore 64 ve Apple IIe üzerinde çalışan 4 demo programı yer alıyor
    • Hello World
    • Kendisini birden çok kez sanallaştırma
    • Birbirinden bağımsız 2 görev arasında geçiş
    • geoRAM kartuşu kullanarak 64KB adres alanı öykünleme

6o6’ın potansiyel kullanım alanları ve ek geliştirme fikirleri

  • Özel işletim sistemi geliştirme
  • Güvenli indirilebilir kod çalıştırma ortamı
    • Gopher istemcisinde dinamik kod çalıştırma gibi
  • NMOS 6502 sistemlerde en az donanımla sanallaştırma desteği
  • ROM üzerinde çalışabilecek şekilde yeniden düzenleme
  • CMOS 65C02 komutlarını öykünleme
  • Ek kod optimizasyonu

GN⁺ görüşü

  • 6o6, özellikle donanım kaynakları kısıtlı 6502 sistemler için yararlı görünebilecek çok iyi bir yazılım sanallaştırma çözümü gibi duruyor.

  • Harness ile kernel’in modüler yapısı etkileyici. Farklı donanım desteği ve esneklik sağlamaya yardımcı olabilir.

  • Öykünücü performansını artırmak için kullanılan teknikler (satır içi bellek erişimi, Instruction Fusion vb.) ilgi çekici. Başka öykünücü projelerinde de uygulanabilecek fikirler gibi görünüyor.

  • Gerçek donanımda (Commodore 64, Apple II) ve geoRAM gibi genişleme kartuşlarında çalıştığının gösterilmesi de etkileyici. Yazılım uyumluluğunu ve kullanım potansiyelini iyi ortaya koyuyor.

  • Bu kadar olgun bir proje olduğundan, kaynak kodun yayımlanması ilgili topluluğa katkı sağlayabilir. Gelecekteki geliştirmeler ve kullanım örnekleri merak uyandırıyor.

1 yorum

 
GN⁺ 2024-05-13
Hacker News görüşü

Özet:

  • Yazarın 20 yıldır aralıklı olarak üzerinde çalıştığı yapılacaklar listesi projelerinden ilk tamamlanan işi tanıtılıyor. Oldukça etkileyici bir yapılacaklar listesi maddesi gibi görünüyor.
  • Basit ve kısıtlı, 50 yıllık 6502 mimarisini yeni sınırlara taşımak her zaman ilgi çekici. 6502 çekirdeği hâlâ ultra düşük maliyetli kitlesel pazarı hedefleyen bazı SoC'lerde bulunuyor.
  • Yazarın 6502 assembly'yi ilk öğrendiği zamanki anıları canlanıyor. O dönemde "The Visual Computer" adlı kitap, emülatörle birlikte disket üzerinde gelmiş ve büyük bir aydınlanma yaşatmış. Kitabın PDF'i bulunmuş, ancak disket yazılımının hâlâ mevcut olup olmadığı belirsiz.
  • Gönderinin asıl önemli noktası, Commodore 64'ün çok farklı bir 6502 tabanlı sistemi nasıl emüle ettiği. Buna "6o6" ya da "6502-on-6502" deniyor; 6502 CPU üzerinde çalışan, tamamen sanallaştırılmış yazılımsal bir NMOS 6502 CPU. Bu çalışma açık kaynak olarak yayımlanmış.
  • Misafir kodunun çalıştırılmasını tamamen kontrol edebiliyor, belgelenmemiş opcodes ve jam opcodes'ları tuzağa düşürebiliyor ve tüm bellek erişimlerini tamamen soyutlayarak adres yeniden eşleme, yasa dışı okuma/yazmaları engelleme ve tam sanal bellek yürütmesi sağlıyor.
  • Yalnızca işlev testlerini geçmekle kalmıyor, aynı zamanda kendisini sanallaştıran bir başka kendisini sanallaştıracak kadar olgun.
  • Bu, yalnızca 6502 açısından değil, her açıdan şaşırtıcı bir çalışma.
  • Ayrıca "The Zilog Z80 has a Protected Mode" videosunu hatırlatıyor, ancak o video HN'de paylaşıldığında bir tartışma yaşanmamış.
  • Yazıyı okurken tüyler ürpertecek kadar etkileyiciydi. Muhtemelen defalarca yeniden okunacak.