با مفهوم Pipeline بهتر آشنا شوید ;
عامل محدود کننده سرعت
در الکترونیک شاید بارها شنیده باشید که حداکثر سرعت این سیستم فلان مقدار است، دقیقا چه عواملی باعث میشوند که حداکثر سرعت یک سیستم محدود شود؟ اگر بخواهیم یک تعریف ساده و مفهومی از سرعت داشته باشیم، میگوییم که سرعت در رابطه است با مقدار زمانی که طول میکشد تا دیتا یا اطلاعات (فرض کنید یک بیت دیتا با مقدار 0 یا 1) از یک نقطه به نقطه دیگر برسد. اما همیشه محدودیتهایی وجود دارند که ما نتوانیم دیتا را سریع منتقل کنیم. اگر شما به عنوان یک فرد آشنا به الکترونیک یا حتی یک فرد معمولی که حداقل یک بار برایش سوال شده که وقتی میگوییم CPU کامپیوترمان 2.4GHZ است، دقیقا به چه معناست؟ به احتمال زیاد مفهوم فرکانس را میدانید.بله عامل محدود کننده سرعت همین فرکانس است، حالا یک سری پارامتر دیگر نیز وجود دارد که خود عامل محدود کننده فرکانس میباشند، مثل نوع موادی که در ساخت همان CPU کامپیوترمان به کار رفته است.
Throughput و Latency
به مدت زمانی که طول میکشد تا دیتا از ورودی به خروجی برسد Latency و به تعداد خروجی در واحد زمان Throughput میگویند. فرض کنید یک لوله آب وجود دارد که یک ثانیه طول میکشد تا یک مولکول آب از ابتدا به انتهای آن برسد که همان مفهوم Latency را تداعی میکند و در خروجی در هر یک ثانیه ده مولکول آب خارج میشود و این موضوع نیز مفهوم Throughput را میرساند. حتما توجه دارید که هیچ لزومی ندارد که وقتی میخواهیم در خروجی مولکولهای آب را ببینیم به اندازه زمان Latency صبر کنیم، بلکه فقط برای اولین بار باید به اندازه زمان Latency صبر کرد تا در خروجی مولکول آبی ظاهر گردد ولی پس از آن میتوان با زمان بسیار کمتری مولکولهای آب را در خروجی دید. ما قبل از اینکه هر مولکول آب بخواهد به خروجی برسد، مولکول دیگری را وارد لوله خواهیم کرد. راه حل دیگر این بود که ما صبر کنیم تا زمانی که هر مولکول آب به خروجی رسید مولکول دیگری را وارد لوله کنیم. مقایسه این دو روش ما را به مفهوم Pipeline نزدیکتر میکند.دقیقا به همین عملی که ما بین دو حافظه، یک حافظه دیگر قرار دادیم Pipeline میگویند.
Throughput و Latency چه تغییری می کنند؟
توجه کنید که با پایپ لاین کردن Throughput بیشتر خواهد شد (بهبود مییابد) اما Latency یا تغییر نمیکند یا بیشتر خواهد شد! حتما دارید به این فکر میکنید که چگونه ممکن است Latency بیشتر شود؟ عجله نکنید با مثالی که در ادامه برای شما خواهیم آورد کاملا متوجه این موضوع خواهید شد. پس اگر کمی گیج شدهاید برگردید و دوباره تعاریف را بخوانید چون شاید فکر کنید قصد ما این است که Latency را کاهش بدهیم اما این گونه نیست و قصد ما کاهش مسیر بحرانی میباشد. Latency تنها در صورتی تغییر نمیکند که حافظه را دقیقا در وسط مسیر بحرانی قرار دهیم که همچین چیزی در عمل غیر ممکن خواهد بود، مثلا وقتی شما دارید با FPGA سیستمی را طراحی میکنید نهایتا در گزارشها به شما حداکثر فرکانس اعمالی گزارش خواهد شد، حال اگر این فرکانس خواسته شما را برآورده نکند شما باید به دنبال پایپ لاین کردن باشید و وقتی که پایپ لاین میکنید تقریبا هیچ احتمالی وجود ندارد که الگوریتم ها بتوانند حافظه میانی را دقیقا در وسط مسیر بحرانی قرار بدهند. در ادامه قصد داریم که پایپ لاین کردن را با استفاده از مراحل تولید یک دوچرخه بیان کنیم تا هر سوالی در مورد این موضوع در ذهنتان برطرف شود. فرض کنید در کارخانه ی دوچرخه سازی در پنج مرحله یک دوچرخه کامل خواهد شد و هر کدام از این مراحل یک ساعت طول میکشد.Throughput = 1/5 Latency = 5
یک ایده جالب، ما به جای اینکه در هر مرحله پس از اتمام کار بیکار باشیم، نتیجه کار مرحله خودمان را به مرحله بعد میدهیم و نتیجه کار مرحله قبل را تحویل میگیریم. به تصویر زیر دقت کنید:معماری Pipeline که در برخی از میکروکنترلرها یا بعضا جاهای دیگر استفاده شده است، قطعا پیچیدگیهای بیشتری نسبت به توضیحات بالا خواهد داشت، اما مفهوم کلی Pipeline به طور کاملا صحیحی در این مقاله توضیح داده شده است. پس از خواندن این مقاله انتظار میرود وقتی از ما در مورد Pipeline سوال شود، به جای این که کتابهای آقای مانو را کنکاش کنیم و با یه عالمه مدار دیجیتال، معماری را بررسی کنیم و در نهایت به طرف بگوییم که Pipeline یعنی خط لوله، خیلی راحت Pipeline را با همین مثال خط تولید دوچرخه برایش توضیح بدهیم.
سلام برادر
عالی بود
مفهوم را به زیبایی منتقل کردید
بسیار ممنونم
سلام حمید جان. سپاس از نظر مثبت شما. خوشحالم که این مقاله توانسته است این مفهوم مهم رو به سادگی و زیبایی به شما منتقل کنه.
ممنون. ساده و کاربردی بود.
سپاس از شما. خوشحالم از اینکه این مقاله برایتان مفید بوده است.
خیلی عالی بیان کردید
ممنون
سپاس از نظر مثبت شما.
سلام
مفهوم موضوع اصلی به همراه موضوعات جنبی آن، بسیار زیبا، روان و عمیق بیان شده، یعنی شما در طول این متن تونستید چندین موضوع رو به خوبی تحلیل و بیان کنید و این خودش یک نوع هنره، سپاسگزارم.
سلام دوست نازنینم. شما لطف دارید.
به قول انیشتین اگر نتوانید چیزی را به سادگی توضیح دهید، پس آن را خیلی خوب نفهمیدهاید.
یکی از مجهولات ذهنیم رو جالب و ساده حل کردی ممنون
قلمتون عالی و روان هست
این مدل مقالات مفهومی باعث میشه سایت تون از بقیه متمایز بشه
موفق باشید
سپاس از توجه شما، ما بسیار خرسندیم که توانستهایم موضوعی را شرح دهیم که حتی کوچکترین کمک به شما باشد.
هدف کلی مقاله این بود که مفهوم Pipline به ساده ترین نحو ممکن و البته به صورت کاربردی توضیح داده شود. و ظاهرا با فیدبکی که از طرف شما دریافت کردیم هدف مقاله به نتیجه انجامید. هدف ما قبل از متمایز بودن ارتقای علم الکترونیک به صورت متن باز در ایران عزیز میباشد و یقینا خود این موضوع در طول زمان تمایز ایجاد خواهد کرد.
فوق العاده بود ممنون
سپاس از توجه شما، امیدوارم که مفید بوده باشه براتون.