تقوم Red Hat بتطوير مترجم MIR JIT

في ريد هات التنمية جارية مترجم JIT جديد وخفيف الوزن MIR، والذي يضمن تنفيذ التعليمات البرمجية التي تم تحويلها مسبقًا إلى تمثيل وسيط MIR (تمثيل داخلي متوسط، يجب عدم الخلط بينه وبين تمثيل وسيط آخر MIR (IR متوسط ​​المستوى)، يستخدم في مترجم Rust). يهدف المشروع إلى توفير إطار عمل لتنفيذ مترجمين فوريين سريعين ومدمجين وJIT. كود المشروع مكتوب بلغة C و وزعت من خلال بموجب ترخيص معهد ماساتشوستس للتكنولوجيا.

في المرحلة الحالية من التطوير، يتم إعداد المترجمين للتمثيل المتوسط ​​لـ MIR لغة سي ورمز البت LLVM (Bitcode)، ولكن من المخطط في المستقبل تنفيذ القدرة على إنشاء MIR لـ WebAssembly، وJava bytecode، CIL (اللغة المتوسطة المشتركة)، الصدأ وC++. يتم تطوير المشروع بواسطة أحد مطوري محركات JIT مجيت، المستخدمة في روبي. بادئ ذي بدء، من المقرر تنفيذ JIT بناءً على MIR كروبي и روبي. في المستقبل، من الممكن أيضًا منفذ دول مجلس التعاون الخليجي لاستخدام MIR.

تقوم Red Hat بتطوير مترجم MIR JIT

يمكن تقديم رمز MIR الوسيط في شكل ثنائي ونص (قابل للقراءة). يمكن تنفيذ هذا الرمز في مترجم ويمكن إنشاء رمز الجهاز بناءً عليه (x86_64، في خطط ARM64 وPPC64 وMIPS64). من الممكن أيضًا إجراء التحويل العكسي - من MIR إلى CIL وJava bytecode وWebAssembly وC code.

من بين ميزات MIR، تبرز الكتابة الصارمة، ودعم الوحدات والوظائف، وتوفير مجموعة من التعليمات لتحويل النوع، والمقارنة، والعمليات الحسابية والمنطقية، والتفرع، وما إلى ذلك. يمكن تحميل الوحدات، التي تتضمن مجموعة من الوظائف المحولة إلى تنسيق MIR، على شكل مكتبات، كما يمكنها أيضًا تحميل كود C خارجي.

تقوم Red Hat بتطوير مترجم MIR JITتقوم Red Hat بتطوير مترجم MIR JIT

الميزة الرئيسية لتنفيذ التعليمات البرمجية المتوسطة في JIT بدلاً من التجميع في ملفات أصلية قابلة للتنفيذ هي القدرة على إنشاء ملفات مضغوطة يمكن تنفيذها دون إعادة البناء على بنيات الأجهزة المختلفة (x86، ARM، PPC، MIPS). بالنسبة للبنيات غير المدعومة، يتوفر وضع التفسير، والذي يكون في حالة MIR أبطأ بمقدار 6 إلى 10 مرات من JIT.

مساوئ المترجمين JIT الحاليين
ويقال إن دول مجلس التعاون الخليجي وLLVM منتفخة بشكل مفرط، ولها سرعة تجميع منخفضة، ويصعب تنفيذ تحسينات مشتركة للغات برمجة مختلفة. حاول مطورو MIR حل هذه المشكلات
المشكلات وتحديد الأهداف:

  • يجب أن يكون التجميع في MIR أسرع 100 مرة على الأقل من دول مجلس التعاون الخليجي؛
  • يجب أن يكون JIT لتنفيذ MIR مضغوطًا جدًا ويتضمن حوالي 15 ألف سطر من التعليمات البرمجية؛
  • يجب ألا يكون تنفيذ MIR باستخدام JIT أبطأ بنسبة 30% أكثر من أداء الملف القابل للتنفيذ الذي تم تجميعه من نفس كود C في دول مجلس التعاون الخليجي (مع تحسينات "-O2")؛
  • يجب أن تستغرق مراحل التهيئة قبل بدء التنفيذ الفعلي وقتًا أقل بمقدار 100 مرة؛
  • يجب أن يكون تمثيل MIR لـ JIT أصغر بمقدار 100 مرة من الملف القابل للتنفيذ الذي تم تجميعه في دول مجلس التعاون الخليجي.

في شكله الحالي، يتقدم تنفيذ MIR بعدة طرق على الأهداف المحددة في البداية: أظهرت الاختبارات أن أداء التجميع في MIR أسرع بـ 2 مرة من "GCC -O178"، وأداء التنفيذ متأخر بنسبة 6٪ عن الكود الأصلي، وحجم الكود. أصغر بـ 144 مرة، ويبلغ تنفيذ MIR JIT 16 ألف سطر من التعليمات البرمجية.

تقوم Red Hat بتطوير مترجم MIR JIT

المصدر: opennet.ru

إضافة تعليق