تنها چند روز پس از آنکه مشخص شد تغییر سه خط کد در هسته لینوکس باعث افزایش ۵ درصدی سرعت حافظه شده است، اکنون گزارشها حاکی از آن است که تغییر تنها یک خط کد در کامپایلر GCC، منجر به بهبود ۱۲ درصدی عملکرد پردازندههای مدرن AMD و اینتل در بنچمارک SPEC CPU 2017 میشود.
بر اساس گزارش وبسایت Phoronix و به نقل از XDA Developers، Lili Cui، مهندس نرمافزار اینتل، راهکاری برای بهبود عملکرد سیستم با اعمال حداقل تغییرات در کامپایلر GCC یافته است.
برای درک بهتر این دستاورد، باید نگاهی به نحوه عملکرد پردازندهها داشت. پردازندهها هنگام اجرای کدها برای افزایش سرعت، از قابلیتی به نام اجرای پیشبینانه (Speculative Execution) استفاده میکنند. در این فرآیند، پردازنده پیشبینی میکند که برنامه در مواجهه با دستورات شرطی (مانند if/else) کدام مسیر را طی خواهد کرد و پیش از رسیدن به آن نقطه، شروع به پردازش مسیر پیشبینیشده میکند.
اگر پیشبینی پردازنده درست باشد، سرعت کار افزایش مییابد، اما اگر اشتباه باشد، پردازنده ناچار است عملیات انجامشده را متوقف کرده، پاکسازی کند و به مسیر درست بازگردد که این رخداد با نام خطای پیشبینی شاخه (Branch Misprediction) شناخته میشود.

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

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













نظر خود را اضافه کنید.
برای ارسال نظر وارد شوید
ارسال نظر بدون عضویت در سایت