یک جدول‌رتبه‌بندی جدید با هدفِ نمایش «کاهش بهینه‌سازی CPU»، دستور fxrstor64 را به‌عنوان کندترین اجرای ممکن در x86 ثبت کرد: این دستور بیش از 198 میلیارد چرخه، معادل تقریبی 62 ثانیه، طول کشید تا اجرا شود.

چطور fxrstor64 به 62 ثانیه رسید

کریستوفر دومانس از طریق پروژهٔ CPU Deoptimization دامنهٔ تأخیر تک‌دستورات را بررسی کرد. هدف او نه کاهش زمان اجرای دستورها، بلکه طراحی شرایطی است که اجرای یک دستور واحد را تا جای ممکن به تأخیر بیندازد و سپس زمان‌ها را بر اساس ساعت پایهٔ پردازنده نرمال‌سازی کند.

روش آزمایش برای fxrstor64

  • کارکرد دستور: fxrstor64 وضعیت رجیسترهای SIMD را از بلوک حافظهٔ 512 بایتی بازیابی می‌کند.
  • یافتن نقطهٔ گلوگاه: با ابزار mmiotic دومانس، ناحیه‌ای با تأخیر بالا در مسیر داخلی PCIe شناسایی شد.
  • بارگذاری از MMIO: پردازنده مجبور شد وضعیت 512 بایتی را از MMIO (ورودی/خروجی نگاشته‌شده به حافظه؛ MMIO) بارگذاری کند که حدود 74 میلیارد چرخه (≈23 ثانیه) صرف آن شد.
  • اشباع ریشهٔ PCIe: اجرای پی‌درپی خوانش‌های 4 بایتی از یک رجیستر MMIO دیگر منجر به اشباع مجتمع ریشهٔ PCIe و صف‌بندی عملیات بازگرداندن وضعیت شد؛ این ترکیب مجموع زمان را به بیش از 198 میلیارد چرخه رساند.
نمونه‌برداری از ساختار مادربورد و مسیرهای PCIe

بدتر از آن: AMX و xrstore64

دومانس نشان داده است که با استفاده از مجموعهٔ دستورهای AMX روی تراشه‌های اینتل Sapphire Rapids می‌توان وضعیت را وخیم‌تر کرد. دستور xrstore64 در این معماری اندازهٔ ناحیهٔ وضعیت را از 512 بایت به 8 کیلوبایت افزایش می‌دهد و در چنین وضعیتی احتمال دارد اجرای دستور بیش از 1,000,000,000,000 چرخه (بیش از یک تریلیون چرخه) به تأخیر بیفتد.

قوانین آزمایش، پلتفرم‌ها و نتایج قابل توجه

  • هر تنظیم آزمایشی مجاز است به شرط آن‌که تنها اجرای یک دستور نمره‌گذاری شود.
  • دستورهای قابل قطع (interruptible) یا شده‌شبیه‌سازی‌شده روی هندلر پذیرفته نمی‌شوند.
  • تمام زمان‌ها بر اساس کلاک پایهٔ CPU نرمال‌سازی شده و پلتفرم‌ها بدون تغییر سخت‌افزاری اجرا شده‌اند.

دومانس عمدتاً از دو پردازنده برای آزمایش استفاده کرد: Intel Core i7-8559U و AMD Ryzen 7 5800H (موجود در Trigkey S5). برای ثبت زمان دستور rdmsr او به یک تراشهٔ VIA Eden مراجعه کرد؛ در آن نمونه، rdmsr که رجیسترهای مدل (MSR) را می‌خواند، با رجیستر نامستندسازی‌شده در آدرس 0x133 پاسخ بسیار طولانی و حدود 202 میکروثانیه (161,602 چرخه) داد.

ابزارهای بررسی تأخیر و محیط آزمایشگاهی پردازنده

پیامدها و کاربردهای عملی

این مجموعهٔ آزمایش‌ها نشان می‌دهد تعامل میان دستورها، مسیرهای I/O و جزئیات پیاده‌سازی سخت‌افزاری می‌تواند رفتارهایی با تأخیر بسیار بالا تولید کند. بنابراین تحلیل تأخیر باید فراتر از تعریف دستورات در مستندات رفته و سناریوهای واقعی تعامل با زیرسیستم‌های I/O را نیز پوشش دهد.

نتایج همچنین زمینهٔ بررسی‌های امنیتی را فراهم می‌کنند؛ صف‌بندی‌ها و اشباع منابع در برخی شرایط می‌تواند به سوءاستفاده یا حملات منع سرویس منجر شود. برای مرور مجموعهٔ دستورهای x86 می‌توانید به صفحهٔ مربوطه در ویکی‌پدیا مراجعه کنید.

گام بعدی پروژه

صفحهٔ جدول‌رتبه‌بندی x86 در گیت‌هاب زنده است و دومانس قصد دارد جدول‌های مشابه برای ARM و RISC-V راه‌اندازی کند. این حرکت دیدی عمیق‌تر نسبت به نقاط ضعف معماری‌های مختلف ارائه می‌دهد و توسعه‌دهندگان و طراحان سخت‌افزار را به بازنگری در پیاده‌سازی‌ها و سناریوهای گوشه‌ای وادار می‌کند.

مجموعهٔ دستورهای پیشرفته می‌توانند نه تنها برای افزایش کارایی، بلکه برای آشکارسازی گوشه‌های کندی نیز مورد استفاده قرار بگیرند؛ موضوعی که طراحان سخت‌افزار باید آن را جدی بگیرند.