به درون هسته Linux نسخه ۶.۰ که انتظار میرود دوشنبه آینده منتشر شود، شامل تغییری است که مشکلات عملکرد پردازندههای AMD Zen را برطرف میکند. منبع افت عملکرد، کدی بود که ۲۰ سال پیش برای حل یک مشکل سختافزاری در برخی از چیپستها اضافه شده بود. مشکل سختافزاری مدتهاست که برطرف شده و دیگر در چیپستهای فعلی ظاهر نمیشود، اما راه حل قدیمی کنار گذاشته شده و به منبع افت عملکرد در سیستمهای مبتنی بر CPUهای مدرن AMD تبدیل شده است. سیستمهای جدیدتر با CPUهای اینتل تحت تأثیر راه حل قدیمی قرار نمیگیرند، زیرا آنها با استفاده از یک درایور جداگانه intel_idle به ACPI دسترسی پیدا میکنند، نه درایور مشترک processor_idle.
در مارس 2002 راهحلی به هسته اضافه شد تا از بروز یک اشکال در چیپستهای مرتبط با عدم تنظیم صحیح حالت بیکار به دلیل تاخیر در پردازش سیگنال STPCLK# جلوگیری کند. برای حل مشکل، پیادهسازی ACPI یک دستورالعمل WAIT اضافه کرد که سرعت پردازنده را کند میکند تا چیپست زمان داشته باشد تا به حالت بیکار برود. هنگام نمایهسازی با استفاده از دستورالعملهای IBS (نمونهگیری مبتنی بر دستورالعمل) روی پردازندههای AMD Zen3، مشخص شد که پردازنده زمان قابلتوجهی را برای اجرای خرد صرف میکند، که منجر به تفسیر نادرست از وضعیت بار پردازنده و تنظیم حالتهای خواب عمیقتر میشود (C- State) توسط cpuidle پردازنده.
این رفتار در کاهش عملکرد تحت بارهای کاری که اغلب به طور متناوب بین حالت های بیکار و مشغول تغییر می کند، منعکس می شود. به عنوان مثال، هنگام استفاده از وصله ای که مانور بای پس را غیرفعال می کند، میانگین تست tbench از 32191 مگابایت بر ثانیه به 33805 مگابایت بر ثانیه افزایش می یابد.
منبع: opennet.ru
