6o6 ile 6502 üzerinde 6502 sanallaştırma
(oldvcr.blogspot.com)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
Hacker News görüşü
Özet: