نظرات (۱)

تنها چند روز پس از آنکه مشخص شد تغییر سه خط کد در هسته لینوکس باعث افزایش ۵ درصدی سرعت حافظه شده است، اکنون گزارش‌ها حاکی از آن است که تغییر تنها یک خط کد در کامپایلر GCC، منجر به بهبود ۱۲ درصدی عملکرد پردازنده‌های مدرن AMD و اینتل در بنچمارک SPEC CPU 2017 می‌شود.

بر اساس گزارش وب‌سایت Phoronix و به نقل از XDA Developers، Lili Cui، مهندس نرم‌افزار اینتل، راهکاری برای بهبود عملکرد سیستم با اعمال حداقل تغییرات در کامپایلر GCC یافته است.

برای درک بهتر این دستاورد، باید نگاهی به نحوه عملکرد پردازنده‌ها داشت. پردازنده‌ها هنگام اجرای کدها برای افزایش سرعت، از قابلیتی به نام اجرای پیش‌بینانه (Speculative Execution) استفاده می‌کنند. در این فرآیند، پردازنده پیش‌بینی می‌کند که برنامه در مواجهه با دستورات شرطی (مانند if/else) کدام مسیر را طی خواهد کرد و پیش از رسیدن به آن نقطه، شروع به پردازش مسیر پیش‌بینی‌شده می‌کند.

اگر پیش‌بینی پردازنده درست باشد، سرعت کار افزایش می‌یابد، اما اگر اشتباه باشد، پردازنده ناچار است عملیات انجام‌شده را متوقف کرده، پاک‌سازی کند و به مسیر درست بازگردد که این رخداد با نام خطای پیش‌بینی شاخه (Branch Misprediction) شناخته می‌شود.

GCC-compiler-2.jpg

لیلی کوی دریافت که در پردازنده‌های مدرن که دارای پایپ‌لاین‌های عمیق‌تری هستند، هزینه وقوع این خطاهای پیش‌بینی بسیار سنگین‌تر از تصورات پیشین است. او با تغییر در بخشی از کد کامپایلر GCC که مسئول تعیین مقیاس هزینه برای خطاهای پیش‌بینی شاخه است و با افزودن عدد «۳» به این مقیاس، باعث شد کامپایلر در تولید کدهای استاندارد شاخه‌دار، محتاط‌تر عمل کند. این تغییر باعث می‌شود کامپایلر ترغیب شود تا کدها را به روش‌های بهینه‌تری (مانند استفاده از توالی‌های بدون شاخه) بازنویسی کند.

GCC-compiler-3.jpg

پس از اعمال این تغییر، پردازنده‌ها تحت بنچمارک SPEC CPU 2017 (بخش 544.nab_r که به شبیه‌سازی فیزیک و شیمی مولکول‌ها می‌پردازد) آزمایش شدند و نتایج نشان‌دهنده افزایش ۱۲ درصدی کارایی در تراشه‌های اینتل و AMD بود؛ چرا که پردازنده‌ها زمان کمتری را صرف اصلاح مسیرهای اشتباه کرده و زمان بیشتری را به پردازش مفید اختصاص دادند.

اگرچه این تغییر برای نسخه GCC 17 در نظر گرفته شده که سال آینده میلادی منتشر می‌شود، اما این رخداد نمونه‌ای درخشان از تأثیر شگفت‌انگیز بهینه‌سازی‌های کوچک در دنیای نرم‌افزار بر عملکرد سخت‌افزار است.

نظر خود را بنویسید...
شما مهمان هستید ( ثبت نام؟ )
ارسال نظر بدون عضویت در سایت
در حال بارگذاری نظرات... به‌روزرسانی نظرات پس از 00:00.
  • این نظر هنوز منتشر نشده است.
    · حدود 2 ماه قبل
    اقا قبول نیست تو تیتر زدین ۱ خط تو متن خبر زدین ۳ خط، لابد بریم نیگاه کنیم میبینیم ۵ خط بوده! :D
    • این نظر هنوز منتشر نشده است.
      · حدود 2 ماه قبل
      نه 3 خط نیست
      توی همون خط فقط یه « + 3» اضافه کرده;)
      • این نظر هنوز منتشر نشده است.
        · حدود 2 ماه قبل
        عزیز شوخی بود ولی جدیش اینه که طبیعیه تو هر برنامه ای همون یه خط میتونه تا چند صد درصد هم تفاوت ایجاد کنه :D