2 पॉइंट द्वारा GN⁺ 2024-05-13 | 1 टिप्पणियां | WhatsApp पर शेयर करें

6502 CPU को 6502 CPU पर वर्चुअलाइज़ करने वाले 6o6 का परिचय (और The Incredible KIMplement 1.0 रिलीज़)

  • लेखक ने 20 वर्षों से बीच-बीच में काम करते आ रहे अपने बकेटलिस्ट प्रोजेक्ट्स में से एक, "The Incredible KIMplement", का 1.0 संस्करण आधिकारिक रूप से रिलीज़ किया है
  • The Incredible KIMplement, 1MHz, 1KB मेमोरी वाले MOS/Commodore KIM-1 6502-आधारित सिंगल-बोर्ड कंप्यूटर का एमुलेशन करने वाला प्रोग्राम है
    • यह Commodore 64 पर चलता है और KIM-1 की TTY सपोर्ट सुविधा तथा 16KB विस्तारित RAM प्रदान करता है
  • इससे भी अधिक महत्वपूर्ण बात यह है कि 6502 CPU पर 6o6(6502-on-6502) नाम का एक पूर्णतः वर्चुअलाइज़्ड NMOS 6502 CPU लागू किया गया है
    • यह guest code के execution को पूरी तरह नियंत्रित करता है और memory access को abstract करता है, इसलिए virtual memory में भी चल सकता है
    • यह केवल functional test पास नहीं करता, बल्कि स्वयं को कई बार वर्चुअलाइज़ करना भी संभव बनाता है

6502 वर्चुअलाइज़ेशन की प्रेरणा और डिज़ाइन

  • बचपन में लेखक "अल्टीमेट ऑपरेटिंग सिस्टम" बनाना चाहता था, लेकिन ज़्यादातर प्रयास आदिम डेमो स्तर तक ही सीमित रहे
  • multi-user system को देखने के बाद उसे एहसास हुआ कि उपयोगकर्ता समस्याग्रस्त code चला सकते हैं
    • एक प्रभावी system ऐसा होना चाहिए जो code से होने वाली समस्याओं को रोक सके या उनसे निपट सके
  • 6502 CPU की सीमाओं के कारण केवल hardware के सहारे इसे पूरी तरह हल करना कठिन था
    • इसलिए इसे software से हल करने का निर्णय लिया गया
  • 6o6 virtual machine(VM) guest code चलाती है और memory access को पूरी तरह abstract करती है
    • Harness, guest memory और hardware के लिए VM का interface बनता है
    • kernel, VM चलाता है और exceptional situations को संभालता है
  • ALU operations सीधे host 6502 CPU पर कराकर शुद्धता और performance सुनिश्चित की गई
  • inline memory access, Instruction Fusion आदि से performance optimization किया गया

6o6 का सत्यापन और परीक्षण

  • शुद्धता की पुष्टि के लिए Klaus Dormann की functional test suite का उपयोग किया गया
  • performance मापने के लिए lib6502 emulator का उपयोग किया गया
    • inline memory access और Instruction Fusion लागू करने से instruction execution count 36.5% कम हुआ
  • Commodore 64 और Apple IIe पर चलने वाले 4 demo program शामिल हैं
    • Hello World
    • स्वयं को कई बार वर्चुअलाइज़ करना
    • 2 स्वतंत्र task के बीच switch करना
    • geoRAM cartridge का उपयोग करके 64KB address space का emulation

6o6 के संभावित उपयोग क्षेत्र और आगे के सुधार के विचार

  • custom operating system development
  • सुरक्षित downloaded code execution environment
    • जैसे Gopher client में dynamic code execution
  • NMOS 6502 system में न्यूनतम hardware के साथ virtualization support
  • ROM पर चल सकने लायक refactoring
  • CMOS 65C02 instructions का emulation
  • अतिरिक्त code optimization

GN⁺ की राय

  • 6o6 एक बेहतरीन software virtualization solution लगता है। खासकर सीमित hardware resources वाले 6502 systems में यह उपयोगी हो सकता है.

  • Harness और kernel की modular structure प्रभावशाली है। इससे अलग-अलग hardware support और flexibility सुनिश्चित करने में मदद मिल सकती है.

  • emulator performance optimization के लिए अपनाई गई techniques (inline memory access, Instruction Fusion आदि) दिलचस्प हैं। यह दूसरे emulator projects में भी आज़माने लायक विचार लगते हैं.

  • वास्तविक hardware (Commodore 64, Apple II) और geoRAM जैसी expansion cartridge पर इसके संचालन का प्रदर्शन भी प्रभावशाली है। यह software compatibility और usability को अच्छी तरह दिखाता है.

  • यह एक काफ़ी परिपक्व project लगता है, इसलिए source code सार्वजनिक करके संबंधित community में योगदान दिया जा सकता है। आगे के सुधार और उपयोग के उदाहरणों की प्रतीक्षा रहेगी.

1 टिप्पणियां

 
GN⁺ 2024-05-13
Hacker News की राय

सारांश:

  • लेखक ने 20 साल से बीच-बीच में जिस bucket list project पर काम किया था, उसका पहला पूरा हुआ काम साझा किया है। यह काफ़ी प्रभावशाली bucket list आइटम लगता है।
  • साधारण और सीमित, 50 साल पुरानी 6502 architecture को नई सीमाओं तक बढ़ाना हमेशा दिलचस्प होता है। 6502 core आज भी कुछ ऐसे SoC में मिलता है जो ultra-low-cost mass market को लक्ष्य करते हैं।
  • इससे उस समय की याद ताज़ा हो गई जब लेखक ने पहली बार 6502 assembly सीखी थी। तब "The Visual Computer" नाम की एक किताब emulator के साथ floppy disk पर मिलती थी, और उसने बड़ा बौद्धिक झटका दिया था। किताब का PDF मिल गया, लेकिन floppy का software अब भी मौजूद है या नहीं, यह स्पष्ट नहीं है।
  • पोस्ट के मुख्य भाग में असली बात यह है कि Commodore 64 एक बहुत अलग 6502-आधारित system को कैसे emulate करता है। इसे "6o6" या "6502-on-6502" कहा गया है, और यह 6502 CPU पर चलने वाला पूरी तरह virtualized software NMOS 6502 CPU है। यह open source के रूप में जारी किया गया है।
  • guest code के execution पर पूरी तरह नियंत्रण पाया जा सकता है, undocumented opcodes और jam opcodes को trap किया जा सकता है, और सभी memory access को पूरी तरह abstract किया जा सकता है, जिससे address remapping, illegal read/write को block करना, और पूरी virtual memory execution संभव हो जाती है।
  • यह सिर्फ feature test पास नहीं करता, बल्कि इतना परिपक्व है कि अपने ही virtualized संस्करण को virtualize कर सकता है।
  • यह सिर्फ 6502 के नज़रिए से नहीं, बल्कि हर नज़रिए से चौंकाने वाला काम है।
  • इससे "The Zilog Z80 has a Protected Mode" वीडियो की भी याद आई, लेकिन जब वह वीडियो HN पर पोस्ट हुआ था तब उस पर कोई चर्चा नहीं हुई थी।
  • इसे पढ़ते समय रोंगटे खड़े हो गए। लगता है इसे बार-बार फिर से पढ़ना पड़ेगा।