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