تالار گفتمان مانشت
سوال در مورد پایپ لاین - نسخه‌ی قابل چاپ

سوال در مورد پایپ لاین - mary1234 - 15 مهر ۱۳۹۲ ۰۳:۱۹ ب.ظ

چرا در جواب سه دستوری که با هم وارد پردازنده میشنو همزمان با هم اجرا کرده؟؟؟؟ چون گفته "با هر واکشی میتوان ۳دستور را وارد پردازنده کرد" ما باید همزمان واکشی هارو در نظر بگیریم؟؟

RE: سوال در مورد پایپ لاین - h_kh - 25 دى ۱۳۹۲ ۱۱:۱۹ ب.ظ

توی جواب گفته برای سه دستور اول ۵ کلاک میخواد. واسه چی؟ من اصلا متوجه جواب نشدم ممنون اگه دوستی بیاد کامل بگه/

RE: سوال در مورد پایپ لاین - jahanmanesh - 26 دى ۱۳۹۲ ۱۲:۵۷ ب.ظ

(۱۵ مهر ۱۳۹۲ ۰۳:۱۹ ب.ظ)mary1234 نوشته شده توسط:  چرا در جواب سه دستوری که با هم وارد پردازنده میشنو همزمان با هم اجرا کرده؟؟؟؟ چون گفته "با هر واکشی میتوان ۳دستور را وارد پردازنده کرد" ما باید همزمان واکشی هارو در نظر بگیریم؟؟

سلام وقت بخیر.
اول ابنکه اگر به فصل پردازنده مرکزی دقت کنید، میتونیم از یه ثبات حداقل۲۴بیتی برای IR استفاده کنیمکه در این صورت اگر دستوراتمون ۸ بیتی باشن،با یه بار مراجعه به حافظه میتونیم ۳تا دستور رو توی این ثبات لود کنیم. مثلا از بیت ۰ تا ۷ برای دستور اول.۸-۱۵دستور دوم و ۱۶- ۲۳ دستور سوممون باشه.

با توجه به گفته مسئله وقتی ۳تا دستورالعمل لود میشه پس یعنی در هر مرحلع ۳ دستور روی پاپلاین قرار میگیره.
خب با توجه به گفته مسئله فقط دوتا از این ۳دستور میتونن همزمان Execute شن. خب شکلو که ببینیم ۲دستور اول همزمان Ex میشن که توو شکلم مشخصه دستور سوم قسمت Exش نمیتونه زیر اون دوتای دیگه باشه چرا؟(چون گفته فقط دوتاشون همزمان اجرا میشه)
در نتیجه باید به اندازه یه کلاک مکث کنه تا اوندوتا اجرا شن پس در نهایت سه دستور اول ۵ کلاک طول کشیدن(۲تا دستور اول ۴ کلاک و دستور سوم با یه کلاک مکث،مجموعا ۵ کلاک)
خب الان ما ۳ تا دستورو توو ۵ کلاک انجام دادیم.میمونه چنتا دستور دیگه؟۳۳-۳ برابر ۳۰ دستور دیگه.

به شکل نیگاه کنید.ما با یهدستور فچ ۳ دستورالعمل اوردیم روی پایپلاین،برای بعدی Fetch های بعدی هم هر دفعه ۳ دستور میاریم که توو شکل با fetch دوم ۳تا دستور دیگه اومده.همونطور که میدونیم در هر زمان فقط یه دسترسی به حافظه میتونیم داشته باشیم برای fetch .پس fetch دوم زیر خونه F هیچکدوم از اون سه تا بالایی نمیتونه باشه،
یه نکته کوچیکم بگم، ببینید توی دستوراتی که ثبات ir میتونه چند دستورالعمل رو روی خودش بریزه،هر دفعه با شیفت به راست یه دستورالعمل اجرا میشه مثلا
ثبات ما ۲۴ بیتی هستش،و دستوراتمون ۸ بیتی پس ما روی این ثبات میتونیم ۳ دستور بیاریم.حالا اگه فقط یه پردازنده داشته باشیم،باید در هر کلاک یکی از این دستوراتو اجرا کنیم.مثلا در کلاک اول دستور اول که ۰-۷ هستش رو اجرا میکنیم.بعد کل ثبات ۸ بیت به راست شیفت میخوره ودو دستور دیگه که توو خونه ۸-۱۵ و ۱۶ تا ۲۳ هستن ۸ بیت میرن سمت راست و توو خونه ۰-۷و ۸-۱۵ قرار میگیرن به همین ترترییب با هر کلاک یه دستور اجرا میشه.
حالا برگردیم به مسئله خودمون چون دوتا دستور همزمان اجرا میشن،پس دو دستور اول زیر هم و با هم مثلا رو دوتا پردازنذه اجرا میشن ولی دستور سوممون باید مکث کنه تا دیکود و اجرای دوتا بالایی تمام بشه واسه همین دستور سوم خونه Dش حاشور خورده و منتظره تا اوندوتا دیکودشون تمام شه و بعدش شیفت پیدا کنه تا بتونه اجرا شه.
خب دستورات بعدیم که گفتیم زیر F نمیتونه باشه، یه مکثم که دادیم اون بالا .کلا سه دستور بعدی توو قسمت Dی دستور اخر میتونن Fetch بشن که توو عکس مشخصه و مثه بالایی ها هم اجرا میشه که توو شکل میبینم فقط دو کلاک اضافه داره دیگه.
خب نتیجه گیری ۳ دستور اول که کلا ۵ کلاک شد.میمونه ۳۰ دستور دیگه. توو هر فچ ۳ دستور میخونیم و میاریم رو پایپ پس کلا برای ۳۰ دستور تقسیم بر ۳ میشه ۱۰ بار باید به حافظه مراجعه کنیم.یعنی ۳۰ تا دستور ۳ تا ۳تا میخونیمشون.
خب برای این ده بار هم که گفتیم هر بار ۲ کلاک اضافه میشه. در نهایت ۲*۱۰ میشه ۲۰ کلاک اضافع.یرای این ۳۰ دستور باقی مانده
۵ کلاک که ۳ دستور اول طول کشید
۲۰ کلاکم ۳۰ دستور بعدی طول کشید
۲۰+۵ برابره ۲۵

هرجاشو متوجه نشدین راحت باشین و سوال کنید

RE: سوال در مورد پایپ لاین - h_kh - 27 دى ۱۳۹۲ ۱۰:۵۶ ب.ظ

سلام ممنون بابت جواب. فقط یه سوال. اون ۴ کلاک مربوط به ۲ دستور اول دقیقا مربوط به کدوم قسمتها هست؟

Re: RE: سوال در مورد پایپ لاین - jahanmanesh - 28 دى ۱۳۹۲ ۱۲:۴۷ ق.ظ

(۲۷ دى ۱۳۹۲ ۱۰:۵۶ ب.ظ)h_kh نوشته شده توسط:  سلام ممنون بابت جواب. فقط یه سوال. اون ۴ کلاک مربوط به ۲ دستور اول دقیقا مربوط به کدوم قسمتها هست؟

سلام خواهش میکنم
۴ کلاک میشه، Fetch,Decode,Execute,Store هرکدوم توو یه کلاک انجام میشه که سرجمع میشه ۴ کلاک برای دو دستور اول

Sent from my GT-N5100 using Tapatalk HD