6o6 के साथ 6502 पर 6502 वर्चुअलाइज़ेशन
(oldvcr.blogspot.com)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 टिप्पणियां
Hacker News की राय
सारांश: