محاكي ARM
يُعدّ برنامج محاكاة مجموعة تعليمات ARM ، المعروف أيضًا باسم ARMulator ، أحد أدوات تطوير البرمجيات التي توفرها وحدة أنظمة التطوير التابعة لشركة ARM Limited لجميع مستخدمي رقائق ARM. ويعود الفضل في تطويره المبكر لمجموعة التعليمات إلى صوفي ويلسون . ولا يزال جزء من هذا الإرث واضحًا في توفير نموذج Tube BBC Micro ضمن ARMulator.
سمات
برنامج ARMulator مكتوب بلغة C ، وهو لا يقتصر على محاكاة مجموعة التعليمات فحسب، بل يوفر منصة افتراضية لمحاكاة النظام. يأتي البرنامج جاهزًا لمحاكاة معالج ARM وبعض معالجات ARM المساعدة . إذا كان المعالج جزءًا من نظام مضمن ، فيمكن للمرخص لهم توسيع ARMulator لإضافة تطبيقاتهم الخاصة للأجهزة الإضافية إلى نموذج ARMulator. يوفر ARMulator عددًا من الخدمات للمساعدة في السلوك الزمني وجدولة الأحداث، ويأتي مزودًا بأمثلة على توسيعات الذاكرة المخصصة وتوسيعات المعالجات المساعدة. بهذه الطريقة، يمكنهم استخدام ARMulator لمحاكاة نظامهم المضمن بالكامل. من أهم قيود ARMulator أنه لا يمكنه محاكاة سوى وحدة معالجة مركزية ARM واحدة في كل مرة، على الرغم من توفر جميع أنوية ARM تقريبًا حتى ARM11 .
يُعدّ أداء برنامج ARMulator جيدًا بالنسبة للتقنية المستخدمة، حيث يُعالج حوالي 1000 تعليمة حاسوبية لكل تعليمة ARM. هذا يعني أن سرعات المحاكاة البالغة 1 ميجاهرتز كانت طبيعية لأجهزة الحاسوب الشخصية في منتصف إلى أواخر التسعينيات. الدقة جيدة أيضًا، على الرغم من تصنيفها على أنها دقة عدد الدورات بدلًا من دقة الدورة، وذلك لأن خط أنابيب ARM غير مُنمذج بالكامل (مع أن أقفال المسجلات مُنمذجة). الدقة تُقاس بالتعليمات، ونتيجة لذلك، عند تنفيذ البرنامج خطوة بخطوة، يتم تجاهل أقفال المسجلات، وتُعاد أعداد دورات مختلفة عما لو تم تشغيل البرنامج ببساطة، وهذا أمر لا مفر منه.
كان اختبار برنامج ARMulator مهمة تستغرق وقتاً طويلاً، حيث تم استخدام مجموعات التحقق الكاملة من بنية ARM. وبأكثر من مليون سطر من التعليمات البرمجية بلغة C، كان منتجاً ضخماً.
يُتيح برنامج ARMulator تصحيح الأخطاء أثناء التشغيل باستخدام أداة armsd (مصحح الأخطاء الرمزي ARM)، أو أي من أدوات تصحيح الأخطاء الرسومية التي كانت مُضمنة في SDT ومنتجات ADS اللاحقة. وقد عانى ARMulator من كونه أداة غير مرئية ذات ملف تكوين نصي (armul.conf) وجد الكثيرون صعوبة في ضبطه.
شكل ARMulator II الأساس لنماذج التحقق المشترك عالية الدقة والقابلة للاستدعاء في الدورة لمعالجات ARM، وكانت نماذج CoVs هذه (انظر Cycle Accurate Simulator ) أساسًا للعديد من أنظمة CoVerification لمعالجات ARM.
التوافر
كان برنامج ARMulator متاحًا على نطاق واسع جدًا من المنصات طوال فترة تشغيله، بما في ذلك Mac ، ومنصات RISC OS ، و DEC Alpha ، و HP-UX ، وSolaris ، و SunOS ، و Windows ، و Linux . في منتصف التسعينيات، كان هناك تردد في دعم منصات Windows؛ فقبل Windows 95، كانت منصةً صعبة نسبيًا. خلال أواخر التسعينيات وأوائل الألفية الثانية، أُزيل الدعم لجميع المنصات باستثناء Solaris وWindows وLinux - مع أن قاعدة الشفرة البرمجية لا تزال مليئة بتعليمات برمجية مثل #ifdef RISCOS.
تم تضمين برنامج ARMulator II في مجموعات أدوات ARM المبكرة، بالإضافة إلى الإصدارات اللاحقة SDT 2.5 وSDT 2.5.1 وADS 1.0 وADS 1.1 وADS 1.2 وRCVT 1.0، كما تم إصداره بشكل منفصل تحت اسم RVISS. وتم إنتاج نماذج خاصة خلال تطوير وحدات المعالجة المركزية، ولا سيما ARM9E وARM10 و ARM11 ، وقد ساهمت هذه النماذج في اتخاذ قرارات معمارية مثل Thumb-2 وTrustZone.
تم التخلص تدريجياً من ARMulator وتم استبداله بنماذج وحدة المعالجة المركزية والنظام عالية الأداء القائمة على التجميع في الوقت المناسب (انظر رابط FastSim أدناه).
تم جعل برنامج ARMulator I مفتوح المصدر، وهو أساس إصدار GNU من ARMulator. تكمن الاختلافات الرئيسية في واجهة الذاكرة والخدمات، كما أن فك تشفير التعليمات يتم بطريقة مختلفة. يتوفر GNU ARMulator كجزء من مصحح الأخطاء GDB في أدوات ARM GNU.
شكّل برنامج ARMulator II الأساس لنماذج التحقق المشترك عالية الدقة والقابلة للاستدعاء على مستوى الدورة لمعالجات ARM، وكانت هذه النماذج (انظر: محاكي دقيق الدورة) أساسًا للعديد من أنظمة التحقق المشترك لمعالجات ARM. ويمتلك برنامج Seamless من Mentor Graphics نظام التحقق المشترك الرائد في السوق، والذي يدعم العديد من أنوية ARM، والعديد من وحدات المعالجة المركزية الأخرى.
تم شحن ARMulator II في مجموعات أدوات ARM المبكرة بالإضافة إلى الإصدارات اللاحقة SDT 2.5 و SDT 2.5.1 و ADS 1.0 و ADS 1.1 و ADS 1.2 و RVCT 1.0 وأيضًا بشكل منفصل باسم RVISS.
كان من أبرز المساهمين في تطوير ARMulator II كل من مايك ويليامز، ولويز جيمسون، وتشارلز لافندر، ودونالد سنكلير، وكريس لامب، وريبيكا برايان (التي عملت على ARMulator كمهندسة ثم كمديرة منتج). كما ساهم آلان سكيلمان بشكل كبير، حيث كان يعمل آنذاك على نماذج التحقق المشترك من ARM.
كان ديف جاغار أحد المساهمين الرئيسيين في برنامج ARMulator I.
تم إنتاج نماذج خاصة أثناء تطوير وحدات المعالجة المركزية، ولا سيما ARM9E و ARM10 و ARM11، وقد ساعدت هذه النماذج في اتخاذ القرارات المعمارية مثل Thumb-2 و TrustZone.
انظر أيضاً
مراجع
روابط خارجية
- معلومات رسمية من ARMulator
- الصفحة الرئيسية لـ uClinux GDB ARMulator
- دليل مستخدم RVISS (ARMulator)
- الصفحة الرئيسية السلسة للمرشد
- الصفحة الرئيسية لشركة إمبيراس : مطور مجموعة من أدوات البرمجيات المدمجة باستخدام نماذج المنصات الافتراضية لأنوية ARM
- وثائق نماذج ARM السريعة (FastSim)
- محاكي السنجاب الأحمر أرخميدس
- قائمة ببرامج محاكاة ARM مفتوحة المصدر
- مصحح أخطاء GNU
- معمارية ARM
- برنامج محاكاة مجاني
