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