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

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

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

~3 min read · Updated Sep 6, 2026

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

در پیاده‌سازی تک‌سیکلی که پیش‌تر در این مجموعه پوشش داده شد، هر دستور دقیقاً یک سیکل ساعت طول می‌کشد، اما آن سیکل باید به‌اندازه کافی طولانی باشد تا کندترین دستوری که پردازنده پشتیبانی می‌کند را پوشش دهد، معمولاً یک دستور 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، تمرکز بخش‌های بعدی در این مجموعه خواهند بود.

Written & researched by Dr. Shahin Siami

Related Articles

تصورات غلط رایج درباره محاسبات موازی و درس‌های نهایی کتاب

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

Continue

واقعیت‌های عملی: بنچمارک CPU در مقابل GPU و ضرب ماتریس چندپردازنده‌ای

مقایسه منصفانه یک CPU و یک GPU نیازمند مدلی است که هم توان عملیاتی محاسباتی و هم محدودیت‌های پهنای باند حافظه را با هم در نظر بگیرد. این مقاله مدل roofline مورد استفاده برای مقایسه سخت‌افزار واقعی مانند Intel Core i7 و NVIDIA Tesla GPU را معرفی می‌کند، سپس نشان می‌دهد ضرب ماتریس چگونه در سراسر چند پردازنده تسریع می‌شود، به‌عنوان کاربرد عملی نهایی مفاهیم موازی این فصل.

Continue

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

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

Continue

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

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

Continue

کلاسترها، کامپیوترهای در مقیاس انبار، و توپولوژی‌های شبکه

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

Continue

مقدمه‌ای بر GPU: موازی‌سازی عظیم برای بارهای کاری سنگین از نظر داده

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

Continue