در علوم محاسبات، خط لوله یا pipeline مجموعه ای از عناصر پردازش داده است که به ترتیب به یکدیگر متصل هستند، بنابراین خروجی یک عنصر ، ورودی عنصر دیگر است. عناصر یک خط لوله به صورت موازی یا زمان بندی شده اجرا می شوند؛ در این صورت بخشی از حافظه ی بافر بین عناصر الحاق می شود. خط لوله های مرتبط با کامپیوتر می توانند از مواد زیر باشند :
- خط لوله های دستور عمل. مانند خط لوله های کلاسیک معماری "ریسک" (RISC) که در پردازنده ها برای اجرای دارای اشتراک دستورعمل های چندگانه در یک مدار، به کار می روند. ( RISC : معماری که در آن از دستورعمل های کمتر و بهینه سازی شده برای افزایش سرعت پردازش استفاده می شود.)
- خط لوله های گرافیکی . که در اکثر کارت گرافیک ها پیدا می شود که شامل واحد های چند گانه محاسباتی یا CPU های کامل هستند که مراحل مختلفی از عملیات رندرینگ را انجام می دهند.
- خط لوله های نرم افزاری . جایی که می توان دستورات را به گونه ای نوشت که خروجی یک عملیات به طور خودکار به عنوان ورودی یک عملیات دیگر استفاده شود.
pipelining یک مفهوم طبیعی در هر روز زندگی است، برای مثال در یک خط تولید. تولید یک خودرو را در نظر بگیرید، در نظر بگیرید که مراحل ساخت خاص شامل نصب موتور ، نصب کاپوت و نصب چرخ ها هستند. بر روی یک خودرو در خط تولید در در آن واحد تنها یکی از سه مرحله می تواند انجام شود. بعد از این که موتور خودرو نصب شد به قسمت بعدی برای نصب کاپوت می رود و تاسیسات نصب موتور را برای نصب موتور ماشین بعدی رها می کند. پس خودرو اول که به بخش نصب چرخ می رود، خودرو دوم به مرحله نصب کاپوت می رسد و خودرو سوم به قسمت نصب موتور می رود. اگر نصب موتور 20 دقیقه ، نصب کاپوت 5 دقیقه و نصب چرخ 10 دقیقه طول بکشد، پس ساخت سه خودرو اگر در آن واحد فقط بر روی یک خود رو کار کنیم 105 دقیقه زمان می برد. در حالی که اگر از خط تولید ذکر شده استفاده کنیم، زمان تکمیل کار 75 دقیقه خواهد بود. در کامپیوتر نیز خط لوله تکنیک و معماری است برای افزایش سرعت کامپیوتر استفاده می شود.
همان گونه که مثال بالا توضیح داد ، pipelining زمان انجام پردازش بر روی یک داده را کاهش نمی دهد ، ولی بازده ی کل سیستم در پردازش جریانی از داده ها را افزایش می دهد. خط لوله بزرگ به افزایش "تاخیر" ها (زمانی که یک سیگنال نیاز دارد تا در یک خط لوله کامل منتشر شود) منجر میشود. یک سیستم خط لوله ای عموما به منابع بیشتری نیازمند است (عناصر مداری ، واحد های پردازش ، حافظه و..) تا یک سیستم که فقط یک دسته دستورعمل را اجرا می کند؛ به این خاطر که هر مرحله نمی تواند از منابع مرحله ی قبل استفاده کند. به علاوه خط لوله ای کردن می تواند باعث افزایش زمان پایان یافتن یک دستورعمل شود ...