التحسين الفائق

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

تاريخ

صاغت ألكسيا ماسالين مصطلح "التحسين الفائق " في بحثها المنشور عام 1987 بعنوان " المُحسِّن الفائق: نظرة على أصغر برنامج " . [ 1 ] وقد أُطلق مصطلح "تحسين البرنامج" على مجال لا يطمح إلى التحسين، بل إلى التطوير فقط. هذا الخطأ في التسمية دفع ماسالين إلى تسمية نظامها "المُحسِّن الفائق"، وهو في الواقع مُحسِّن لإيجاد البرنامج الأمثل. [ 2 ]

في عام 1992، تم تطوير مُحسِّن الأداء الفائق من جنو (GSO) ليتم دمجه في مجموعة مُجمِّعات جنو (GCC). [ 3 ] [ 4 ] وقد طوّرت أعمال لاحقة هذه الأفكار ووسّعتها.

التقنيات

تقليديًا، تُجرى عملية التحسين الفائق عبر بحث شامل ودقيق في فضاء تسلسلات التعليمات الصالحة. هذه طريقة مكلفة، وغير عملية إلى حد كبير بالنسبة للمترجمات العامة. ومع ذلك، فقد ثبتت فائدتها في تحسين الحلقات الداخلية ذات الأهمية البالغة للأداء. من الممكن أيضًا استخدام مُحلِّل SMT لمعالجة المشكلة، مما يُحسِّن كفاءة البحث بشكل كبير (على الرغم من أن المدخلات الأكثر تعقيدًا من كتلة أساسية لا تزال خارج نطاق التحسين). [ 5 ]

في عام 2001، تم إثبات فعالية التحسين الفائق الموجه نحو الهدف في مشروع دينالي من قِبل قسم الأبحاث في شركة كومباك. [ 6 ] وفي عام 2006، طُبقت البرمجة التصريحية لمجموعة الإجابات على التحسين الفائق في مشروع التحسين الكلي باستخدام تقنية مجموعة الإجابات (TOAST) [ 7 ] في جامعة باث . [ 8 ] [ 9 ]

يمكن استخدام التحسين الفائق لتوليد مُحسِّنات ثقب الباب للأغراض العامة تلقائيًا . [ 10 ]

مُحسِّنات الأداء الفائقة المتاحة للجمهور

تتوفر العديد من برامج تحسين الأداء الفائقة للتنزيل مجاناً.

  • بالنسبة لعائلة مجموعات التعليمات x86:
    • مُحسِّن GNU الفائق (superopt) [ 11 ] (GSO) (1992) [ 3 ] [ 4 ] يدعم أيضًا العديد من مجموعات تعليمات المعالجات الأخرى
    • STOKE، [ 12 ] مُحسِّن عشوائي [ 13 ] للغة التجميع x86-64 x86 .
  • لـ ARM:
    • مُحسِّن فائق غير محدود، [ 5 ] يحول لغة LLVM IR إلى لغة التجميع ARMv7-A
  • بالنسبة للأنظمة المدمجة:
  • بالنسبة لـ JVM:
  • بالنسبة لـ LLVM IR:
    • souper [ 19 ] مُحسِّن فائق للبرامج في لغة LLVM الوسيطة.
  • لـ WebAssembly
    • يوفر slumps [ 20 ] تحسينًا فائقًا لبرامج WASM استنادًا إلى souper.

انظر أيضاً

مراجع

  1. ماسالين، هنري (1987). "المُحسِّن الفائق: نظرة على أصغر برنامج" (ملف PDF) . أخبار هندسة الحاسوب ACM SIGARCH . 15 (5): 122-126 . doi : 10.1145/36177.36194 . تاريخ الاسترجاع: 1 مايو 2023. عند إعطاء مجموعة تعليمات، يجد المُحسِّن الفائق أقصر برنامج لحساب دالة معينة. وقد تم توليد برامج مذهلة، العديد منها يتضمن تلاعبًا معقدًا بالبتات لا يشبه كثيرًا البرامج المصدرية التي حددت الدوال. الفكرة الأساسية في المُحسِّن الفائق هي اختبار احتمالي يجعل عمليات البحث الشاملة عمليةً للبرامج ذات الحجم المفيد.
  2. جوشي، راجيف؛ نيلسون، جريج؛ راندال، كيث (2002). "دينالي: مُحسِّن فائق موجه نحو الهدف" . إشعارات ACM SIGPLAN . 37 (5): 304-314 . doi : 10.1145/543552.512566 .
  3. 1 2 غرانلوند، توربيورن؛ كينر، ريتشارد (1992). "إزالة التفرعات باستخدام مُحسِّن فائق ومُصرِّف GNU C". وقائع مؤتمر ACM SIGPLAN 1992 حول تصميم لغات البرمجة وتنفيذها - PLDI '92 . CiteSeerX 10.1.1.58.3509 . doi : 10.1145/143095.14314 (غير نشط 2025-09-07). ISBN  978-0-89791475-8. S2CID 8825539 . {{cite book}}: صيانة CS1: تم تعطيل DOI اعتبارًا من سبتمبر 2025 ( رابط )
  4. 1 2 "فهرس /gnu/superopt" . نظام تشغيل جنو . مؤسسة البرمجيات الحرة، 14-06-1995 . تم الاسترجاع في 01-05-2023 .
  5. 1 2 جانغدا، أبهيناف؛ يورش، غريتا (25-10-2017). التحسين الفائق غير المحدود . Onward!'17، 25-27 أكتوبر 2017، فانكوفر، كندا. ص 78-88 . doi : 10.1145/3133850.3133856 . 
  6. جوشي، راجيف؛ نيلسون، جريج؛ راندال، كيث (30 يوليو 2001). "دينالي: مُحسِّن فائق موجه نحو الهدف" . مركز أبحاث أنظمة كومباك. مختبرات إتش بي . شركة هيوليت-باكارد . تاريخ الاسترجاع: 1 مايو 2023 .
  7. "TOAST – KRRwiki" . قسم علوم الحاسوب، مجموعة الأسس الرياضية. مجموعة تمثيل المعرفة والاستدلال (KRR) . جامعة باث . 7 أغسطس 2007. مؤرشف من الأصل في 28 نوفمبر 2012. تم الاطلاع عليه في 3 سبتمبر 2016 .
  8. براين، مارتن؛ كريك، توم؛ دي فوس، مارينا؛ فيتش، جون (17 أغسطس/آب 2006). "TOAST: تطبيق برمجة مجموعة الإجابات على التحسين الفائق". في: إيتالي، ساندرو؛ تروسزكزينسكي، ميروسلاف (محرران). البرمجة المنطقية . سلسلة محاضرات في علوم الحاسوب. المجلد 4079. سبرينغر-فيرلاغ . الصفحات 270-284 . doi : 10.1007/11799573_21 . ISBN   978-3-540-36636-2.
  9. كريك، توم (2009). التحسين الفائق: توليد الشفرة الأمثل القابل للإثبات باستخدام برمجة مجموعة الإجابات (أطروحة دكتوراه). جامعة باث . تم الاسترجاع في 15 نوفمبر 2024 .
  10. بانسال، سوراف؛ أيكن، أليكس (2006). "التوليد التلقائي لمحسّنات فتحة الباب الفائقة" (ملف PDF) . تم الاسترجاع في 1 مايو 2023 .
  11. "GNU Superoptimizer" .
  12. ستانفورد بي إل. "ستوك" . جيت هاب .
  13. بانسال، سوراف؛ أيكن، أليكس (2008). "الترجمة الثنائية باستخدام مُحسِّنات الثقب الفائق" (ملف PDF) . تم الاطلاع عليه بتاريخ 1 مايو 2023 .
  14. سيربيل، دانيال (2003). "المُحسِّن الفائق لوحدات التحكم الدقيقة PIC من شركة مايكروشيب" . مواقع جوجل . مؤرشف من الأصل بتاريخ 11 أكتوبر 2016. تم الاطلاع عليه بتاريخ 6 سبتمبر 2016 .
  15. سيربيل، دانيال (21-06-2003). "مُحسِّن أداء مُتحكِّم PIC الدقيق" . Freecode . Slashdot Media. مؤرشف من الأصل في 17-09-2016 . تم الاطلاع عليه في 06-09-2016 .
  16. "دراسة جدوى من قبل إمبيكوزم" .
  17. التحسين الفائق – شفرة مصدر Embecosm
  18. هيوم، توم (21 أغسطس 2012). "برنامج كلوجر للبحث الشامل عن برامج جافا المثلى" . جيت هاب . مؤرشف من الأصل في 10 يونيو 2018. تم الاطلاع عليه في 6 سبتمبر 2016 .
  19. ساسناوسكاس، رايمونداس؛ تشين، يانغ؛ كولينغبورن، بيتر؛ كيتيما، جيرون؛ لوب، غراتيان؛ تانجا، جوبي؛ ريغير، جون (2017). "سوبر: مُحسِّن فائق توليفي". arXiv : 1711.04422 [ cs.PL ].شفرة المصدر على GitHub
  20. كابريرا أرتيغا، خافيير؛ دوندي، شرينيش؛ غو، جيان؛ فلوروس، أوريستيس؛ ساتابين، لوكاس؛ بودري، بينوا؛ مونبيروس، مارتن (23 مارس 2020). التحسين الفائق لرمز بايت WebAssembly . MoreVMs: ورشة عمل حول بيئات تشغيل اللغات الحديثة، والأنظمة البيئية، والآلات الافتراضية. الصفحات 36-40 . arXiv : 2002.10213 . doi : 10.1145/3397537.3397567 . شفرة المصدر على GitHub