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

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

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

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

چرا 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 را اشغال می‌کنند.

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

مقالات مرتبط

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

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

ادامه

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

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

ادامه

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

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

ادامه

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

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

ادامه

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

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

ادامه

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

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

ادامه