خط لوله (رایانش)

محاسبات موازی

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

مفهوم و انگیزه

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

هزینه‌ها واشکالات

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

ملاحظه‌های طراحی

یکی از جنبه‌های کلیدی طراحی خط لوله برقراری تعادل در مراحل موازی سازی است. به عنوان مثال با استفاده از خط مونتاژ، ما می‌توانیم زمان بیشتری را ذخیره کنیم اگرچه دو موتور و چرخها تنها پانزده دقیقه داشته باشند. اگرچه تأخیر سیستم هنوز۳۵دقیقه‌است اما خروجی ماشین جدیدما می‌تواند هر۱۵دقیقه باشد.
یکی دیگر ملاحظه‌های طراحی، ارائه بافر کافی بین مراحل خط لوله‌است—به ویژه هنگامی که پردازش زمان نامنظم است، یا زمانی که داده‌های موردی ممکن است ایجاد شده یا در امتداد خط لوله تخریب شوند.

پیاده‌سازی

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

بافر، خطوط لوله آسنکرون

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

خطوط لوله پرنشده

خطوط لوله پرنشده، را خط لوله موج می‌نامند. رجیسترها در بین مراحل خط لوله ثبت نشدند. در عوض، تأخیر در خط لوله متوازن است به طوری که، برای هر مرحله، تفاوت بین اولین داده خروجی تثبیت شده و آخرین داده به حداقل رسیده‌است. به این ترتیب، جریان داده در «امواج» را از طریق خط لوله، و هر موج کوتاه (همزمان) را ممکن است نگه دارد.
میزان حداکثر داده‌ای که می‌تواند در یک موج خط لوله تغذیه شود از طریق حداکثراختلاف در تأخیر بین اولین قطعه داده‌ای که از خط لوله بیرون آمده و آخرین قطعه از داده‌ها تعیین می‌شود. برای هرگیرنده موج اگرداده زودتر ازاین استفاده شود ممکن است برای امواجی از داده با دیگر داده‌ها تداخل داشته باشد.