محاكي ماك 68k

محاكي Mac 68k [ 1 ] هو برنامج محاكاة مدمج في جميع إصدارات نظام التشغيل Mac OS الكلاسيكي لأجهزة PowerPC . مكّن هذا المحاكي من تشغيل التطبيقات ورموز النظام التي كُتبت في الأصل لأجهزة Macintosh المبنية على معالج 680x0 . باستثناءات قليلة، أبرزها برنامج RAM Doubler من Connectix [ 2 ] ، شغّل المحاكي جميع البرامج دون أي تأثير ملحوظ سوى انخفاض طفيف في الأداء مقارنةً بالبرنامج نفسه عند تجميعه لأجهزة PowerPC.

الأصول

كتب غاري ديفيديان النسخة الأولى، وكان قد أنشأها في الأصل لاستخدامها على معالج موتورولا 88000 ، الذي استُخدم في محاولة أبل الأولى الفاشلة لمنصة RISC . [ 3 ] [ 4 ] طوّر إريك تراوت نسخة لاحقة، باستخدام إعادة التجميع الديناميكي ، والذي عمل لاحقًا على مشاريع محاكاة ناجحة في شركة كونيكتكس، مثل Virtual Game Station و Virtual PC . قبل انضمام تراوت إلى كونيكتكس، كانت الشركة قد أصدرت Speed ​​Doubler ، الذي تضمن محاكي PowerPC 68k أسرع.

تطبيق

جميع إصدارات هذا المحاكي حاكت مجموعة تعليمات "المستخدم" من مجموعة تعليمات 68EC040 مع إطار مكدس استثناءات 68020/68030 . تشير وثائق مطوري Apple إلى أن المحاكي وفر بيئة تشغيل تُحاكي إلى حد كبير بيئة Macintosh Centris 610 ، وهو نظام يعتمد على المعالج الدقيق Motorola 68LC040 . [ 5 ] حاكت الإصدارات الأولى هذا النظام عن طريق فك تشفير كل تعليمة وتنفيذ سلسلة من تعليمات PowerPC المكافئة على الفور. بالنسبة لأجهزة PCI PowerMac ، استُخدم محاكي إعادة التجميع الديناميكي لتعزيز الأداء. تعمل إعادة التجميع الديناميكي عن طريق "إعادة تجميع" الأجزاء المشتركة من الكود إلى تسلسلات أسرع، أصلية لـ PowerPC، يتم تخزينها مؤقتًا محليًا. كان بإمكان المحاكي التعرف على نفس تسلسل كود 680x0 وتشغيل كود PowerPC المخزن مؤقتًا مسبقًا لتجنب إعادة الترجمة. كان هذا المحاكي قادرًا نظريًا على محاكاة كود 680x0 بشكل أسرع من أي جهاز 680x0 حقيقي قادر على تشغيله. لم يكن لدى المعالج 68LC040 تعليمات الفاصلة العائمة، مما جعل هذا الإنجاز أبسط قليلاً ولكنه لا يقل إثارة للإعجاب.

أحد أسباب نجاح هذه المحاكاة هو أن العديد من واجهات برمجة التطبيقات (APIs) لنظام التشغيل Mac OS كانت تُنفذ في الأصل كوحدات معالجة (traps) على معالج 680x0؛ لذا، كان استدعاء واجهة برمجة التطبيقات يُعتبر من قِبل معالج 680x0 بمثابة حالة خطأ، مما يدفعه إلى معالجة هذا الخطأ عبر أحد مسارات معالجة الأجهزة. بدوره، كان هذا المسار يبحث عن روتين نظام التشغيل ويُشغّله من ذاكرة القراءة فقط (ROM) أو ذاكرة الوصول العشوائي (RAM). في المحاكي، يمكن استبدال وحدات المعالجة هذه بشفرة PowerPC أصلية، وبالتالي فإن الشفرة الوحيدة التي تتم محاكاتها هي التطبيق نفسه، ويمكن تسريع أي واجهة برمجة تطبيقات نظام يستدعيها باستخدام شفرة PowerPC أصلية. وقد أتاح هذا لشركة Apple الوقت الكافي لنقل نظام التشغيل إلى PowerPC. في البداية، أُعيدت كتابة الجوانب الحساسة للوقت فقط بشفرة أصلية، مما أبقى جزءًا كبيرًا من نظام التشغيل مُحاكى. تدريجيًا، أُعيدت كتابة معظم نظام التشغيل بشفرة أصلية، فأصبح النظام أسرع مع مرور الوقت.

بالنسبة للمبرمج، كان الانتقال إلى معالج PowerPC سلسًا للغاية، نظرًا لتشغيل وإيقاف المحاكي تلقائيًا. وقد تحقق ذلك باستخدام نوع جديد من المؤشرات يُسمى مؤشر الإجراء العام (UPP). بالنسبة لرمز 68k، بدا هذا المؤشر كمؤشر عادي للرمز، ويمكن استخدامه على هذا النحو. إلا أنه في الواقع كان يشير إلى بنية بيانات تحتوي على تعليمة اعتراض خاصة وعلامات تُشير إلى بنية مجموعة التعليمات (ISA) للرمز المُستدعى. من رمز PowerPC، يمكن تمرير مؤشر الإجراء العام هذا إلى الدالة CallUniversalProc() لاستدعائه. ثم يتولى محاكي 68k معالجة التفاصيل، مثل عرض المعاملات المُمررة بالترتيب الصحيح لبنية مجموعة التعليمات المعنية، بالإضافة إلى تشغيل وإيقاف المحاكي حسب الحاجة. تقوم مُجمّعات نظام التشغيل Mac OS بإنشاء مؤشرات الإجراء العام هذه تلقائيًا عند استخدام وحدات الماكرو المناسبة ، وتحتوي مكتبات نظام PowerPC على وظائف وسيطة أصلية لاستدعاء الدوال الأصلية أو دوال 68k بشفافية عند الحاجة. هذا يعني أن التعامل مع البنية المزدوجة يتطلب القليل جدًا من العمل من جانب المبرمج، ومثل نظام التشغيل، يمكن للتطبيقات نفسها أن تمزج وتطابق كود 680x0 و PowerPC بسهولة تامة.

الحالة الحالية

نظرًا لكونه مُدمجًا في جميع إصدارات نظام التشغيل Mac OS الكلاسيكي التي تعمل بمعالجات PowerPC ، فقد كان المحاكي جزءًا من بيئة النظام الكلاسيكي في Mac OS X. ولذلك، تستخدم برامج محاكاة أجهزة ماكنتوش التي تعمل بمعالجات PowerPC، مثل SheepShaver، هذا المحاكي أيضًا عند تشغيل نظام التشغيل Mac OS الكلاسيكي. أما أنظمة Mac OS X الأصلية خارج بيئة النظام الكلاسيكي فلم تستخدم المحاكي مطلقًا.

انظر أيضاً

مراجع

  1. "باور بوك: معلومات حول ذاكرة القراءة فقط المدمجة في ذاكرة الوصول العشوائي" . دعم أبل . 20 فبراير 2012.
  2. ماكدونالد، روي (25 يوليو 1994). "الانتقال إلى PowerPC: مضاعف ذاكرة الوصول العشوائي 1.5" . TidBITS . تم الاسترجاع في 27 أكتوبر 2018 .
  3. "انتصار باور بي سي" . تم الاطلاع عليه في 1 يوليو 2011 .
  4. "الحوسبة القوية: هل هي دفاع عن ماك أم سرقة عملاء آبل؟" . موقع Low End Mac . مؤرشف من الأصل بتاريخ 26 مارس 2012. تم الاطلاع عليه بتاريخ 1 يوليو 2011 .
  5. "محاكي 68LC040 (IM: PS)" . مطورو أبل . 3 يوليو 1996. تم الاطلاع عليه في 1 يوليو 2011 .