تبدیل یک Datapath تک‌سیکلی به یک Datapath پایپ‌لاین‌شده

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

سیگنال‌های کنترلی پایپ‌لاینرجیسترهای پایپ‌لاینDatapath پایپ‌لاین‌شده

~3 min read · Updated Sep 6, 2026

چرا Datapath تک‌سیکلی نمی‌تواند صرفاً سریع‌تر اجرا شود

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

رجیسترهای پایپ‌لاین: حفظ وضعیت بین مراحل

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

رجیستر IF/ID: دستور واکشی‌شده و PC افزایش‌یافته را نگه می‌دارد
رجیستر ID/EX: مقادیر رجیستر decode‌شده، فوری، و سیگنال‌های کنترلی را نگه می‌دارد
رجیستر EX/MEM: نتیجه ALU، مقدار رجیستر برای store ها، و سیگنال‌های کنترلی را نگه می‌دارد
رجیستر MEM/WB: مقداری که باید write back شود و سیگنال‌های کنترلی را نگه می‌دارد

هرکدام از این رجیسترها یک‌بار در هر سیکل ساعت به‌روزرسانی می‌شوند، که اجازه می‌دهد نتایج جزئی یک دستور با امنیت درون یک رجیستر بنشیند در حالی که نتایج دستور بعدی هم‌زمان یک مرحله قبل‌تر محاسبه می‌شوند.

سیگنال‌های کنترلی باید همراه با دستور حرکت کنند

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

یک مثال: دنبال کردن یک دستور Load در سراسر پایپ‌لاین

یک دستور load را در نظر بگیرید که در طول پنج سیکل ساعت از تمام پنج مرحله عبور می‌کند.

سیکل ۱ (IF): واکشی دستور load
سیکل ۲ (ID): decode آن، خواندن رجیستر پایه، تولید سیگنال‌های کنترلی
سیکل ۳ (EX): ALU رجیستر پایه و آفست را جمع می‌کند تا آدرس بسازد
سیکل ۴ (MEM): خواندن مقدار از حافظه داده در آن آدرس
سیکل ۵ (WB): نوشتن مقدار بازیابی‌شده در رجیستر مقصد

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

چرا این تغییر ساختاری اهمیت دارد

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

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