پایپ‌لاین‌های دنیای واقعی: مقایسه ARM و Intel، و تسریع ضرب ماتریس

مفاهیم نظری پایپ‌لاین در پردازنده‌های تجاری واقعی شکل مشخصی به خود می‌گیرند، که بسته به اهداف طراحی‌شان از نظر عمق پایپ‌لاین و عرض صدور به‌طور گسترده متفاوت‌اند. این مقاله مقایسه می‌کند ARM Cortex-A53 و Intel Core i7 چگونه پایپ‌لاینینگ را متفاوت برای کارایی توان در مقابل کارایی خام پیاده‌سازی می‌کنند، سپس نشان می‌دهد موازی‌سازی سطح دستور چگونه ضرب ماتریس را در عمل تسریع می‌کند.

ARM CortexA53, Intel Core i7بهینه‌سازی ضرب ماتریس

~3 دقیقه مطالعه · آخرین به‌روزرسانی ۱۵ شهریور ۱۴۰۵

چرا پردازنده‌های واقعی با پایپ‌لاین کتاب‌درسی متفاوت‌اند

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

ARM Cortex-A53: طراحی‌شده برای کارایی توان

ARM Cortex-A53، که معمولاً در دستگاه‌های موبایل استفاده می‌شود، از یک پایپ‌لاین نسبتاً کوتاه و in-order با قابلیت صدور چندگانه محدود استفاده می‌کند. این انتخاب طراحی مصرف توان پایین و کارایی معقول به‌ازای هر وات را ترجیح می‌دهد، چون دستگاه‌های موبایل بسیار بیشتر توسط عمر باتری و دفع گرما محدود می‌شوند تا رسیدن به بالاترین کارایی مطلق ممکن در هر ساعت.

Intel Core i7: طراحی‌شده برای کارایی خام

Intel Core i7، در مقابل، از یک پایپ‌لاین بسیار عمیق‌تر، اجرای out-of-order تهاجمی، و پیش‌بینی شاخه پویای گسترده استفاده می‌کند، که همگی پیش‌تر از نظر مفهومی در این مجموعه پوشش داده شدند. این انتخاب‌های طراحی حداکثر کارایی تک‌رشته‌ای را در اولویت قرار می‌دهند، به قیمت مصرف توان به‌طور قابل‌توجه بالاتر و مساحت سیلیکون بزرگ‌تر و پیچیده‌تر اختصاص‌یافته به هسته پردازنده.

مقایسه طراحی:
ARM Cortex-A53: پایپ‌لاین کوتاه‌تر، اجرای in-order،
                عرض صدور باریک‌تر، مصرف توان پایین‌تر

Intel Core i7:  پایپ‌لاین عمیق‌تر، اجرای out-of-order،
                عرض صدور پهن‌تر، مصرف توان بالاتر

هیچ رویکردی به‌طور جهانی برتر نیست؛ هرکدام مبادله‌ای عمدی و هماهنگ با هدف مورد نظر دستگاه را نشان می‌دهد، که مستقیماً دیوار توان که پیش‌تر در این مجموعه بحث شد را منعکس می‌کند.

به‌کارگیری این ایده‌ها: تسریع ضرب ماتریس

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

اجرای پی‌درپی:
result[0] = a[0]*b[0] (سیکل 1)
result[1] = a[1]*b[1] (سیکل 2)

با موازی‌سازی سطح دستور:
result[0] و result[1] به‌طور هم‌زمان
در همان سیکل محاسبه می‌شوند،
با استفاده از دو ALU جداگانه

ترکیب این با موازی‌سازی زیرکلمه‌ای که پیش‌تر بحث شد، بهره را بیشتر تشدید می‌کند، چون هرکدام از دستورات موازی صادرشده در یک سیکل واحد می‌توانند خودشان چند مقدار داده را از طریق عملیات‌های سبک SIMD پردازش کنند.

چرا مطالعه تراشه‌های واقعی اهمیت دارد

مقایسه این دو پردازنده واقعی نشان می‌دهد پایپ‌لاینینگ و موازی‌سازی سطح دستور فرمول‌های ثابتی نیستند که در همه‌جا یکسان اعمال شوند، بلکه ابزارهای انعطاف‌پذیری هستند که طراحان بر اساس اهداف مشخص تنظیم می‌کنند، و یک محاسبه رایج مانند ضرب ماتریس از تقریباً هر تکنیک سخت‌افزاری پوشش‌داده‌شده در سراسر این فصل که با هم کار می‌کنند بهره می‌برد.

نوشته و پژوهش‌شده توسط دکتر شاهین صیامی

مقالات مرتبط

اصول کش: حافظه کوچک و سریع چگونه پیش‌بینی می‌کند بعداً چه چیزی نیاز است

یک کش فقط به این دلیل کار می‌کند که برنامه‌ها تمایل دارند داده یکسان یا نزدیک به هم را به‌طور تکراری دسترسی کنند نه به‌صورت تصادفی. این مقاله اصل محلیت که کش را مؤثر می‌کند را توضیح می‌دهد، یک کش مستقیم‌نگاشت‌شده چگونه داده را با استفاده از یک آدرس مکان‌یابی می‌کند، و در یک hit کش در مقابل یک miss کش چه اتفاقی می‌افتد.

ادامه

سلسله‌مراتب حافظه: چرا کامپیوترها از چند نوع حافظه استفاده می‌کنند

هیچ فناوری حافظه واحدی هم‌زمان سریع، بزرگ، و ارزان نیست. این مقاله مفهوم سلسله‌مراتب حافظه که چند فناوری حافظه مختلف را ترکیب می‌کند تا به سرعت سریع‌ترین آن‌ها با هزینه ارزان‌ترین نزدیک شود را معرفی می‌کند، سپس فناوری‌های اصلی که هر سطح را می‌سازند مرور می‌کند.

ادامه

تصورات غلط رایج درباره طراحی پردازنده و تصویر کلی فصل چهارم

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

ادامه

موازی‌سموازی‌سازی سطح دستور: اجرای بیش از یک دستور به‌طور هم‌زمانازی سطح دستور: اجرای بیش از یک دستور به‌طور هم‌زمان

موازی‌سازی سطح دستور: اجرای بیش از یک دستور به‌طور هم‌زمان

ادامه

یک پردازنده پایپ‌لاین‌شده چگونه استثناها را مدیریت می‌کند

هر دستوری آن‌طور که انتظار می‌رود اجرا نمی‌شود — برخی شرایط خطایی مانند یک opcode نامعتبر یا سرریز محاسباتی را فعال می‌کنند که پردازنده باید با امنیت به آن‌ها پاسخ دهد. این مقاله توضیح می‌دهد استثناها چه هستند، یک پردازنده پایپ‌لاین‌شده چگونه آن‌ها را بدون خراب کردن وضعیت برنامه تشخیص داده و مدیریت می‌کند، و چرا استثناها مشابه خطرهای کنترلی رفتار می‌شوند.

ادامه

خطرهای کنترلی: مدیریت شاخه‌ها در یک پردازنده پایپ‌لاین‌شده

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

ادامه