مروری بر پایپ‌لاینینگ: هم‌پوشانی اجرای دستورات

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

پایپ‌لاینینگ,توان عملیاتی دستور,پایپ‌لاین پنج‌مرحله‌ای

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

ضعف اصلی یک طرح تک‌سیکلی

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

تشبیه خط تولید

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

پایپ‌لاین استاندارد پنج‌مرحله‌ای

یک پایپ‌لاین کلاسیک RISC، از جمله آنچه برای RISC-V در این فصل استفاده می‌شود، اجرای دستور را به پنج مرحله متمایز تقسیم می‌کند:

  • IF (Instruction Fetch): خواندن دستور بعدی از حافظه دستور.
  • ID (Instruction Decode): decode کردن دستور و خواندن مقادیر مورد نیاز از فایل رجیستر.
  • EX (Execute): انجام عملیات محاسباتی یا محاسبه یک آدرس حافظه با استفاده از ALU.
  • MEM (Memory Access): خواندن از یا نوشتن به حافظه داده، که فقط برای دستورات load و store مرتبط است.
  • WB (Write Back): نوشتن نتیجه نهایی دوباره در فایل رجیستر.

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

تصویرسازی اجرای هم‌پوشان

سیکل:      1    2    3    4    5    6    7
دستور 1:   IF   ID   EX   MEM  WB
دستور 2:        IF   ID   EX   MEM  WB
دستور 3:             IF   ID   EX   MEM  WB

در سیکل ۳ در این نمودار، سه دستور متفاوت به‌طور هم‌زمان پردازش می‌شوند، هرکدام در مرحله‌ای متفاوت — این هم‌پوشانی کل منبع مزیت کارایی پایپ‌لاینینگ است.

توان عملیاتی بهبود می‌یابد، اما تأخیر منفرد نه

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

چرا این ایده نیازمند مدیریت دقیق است

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

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

مقالات مرتبط

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

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

ادامه

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

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

ادامه

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

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

ادامه

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

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

ادامه

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

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

ادامه

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

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

ادامه