سلام رئیس بزرگ،برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط Xtreme برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
برادر این توضیحاتی که دادید تا جایی که ما می دونستیم به مفهوم Instruction Pipeline برمی گشت. یعنی با بالا بردن Stage های Pipeline باعث میشن در کل Throughput پردازنده (تعداد Instruction ها در هر Cycle) بالا بره... مثل عکس زیر:
برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
در Cycle اول Instruction اول وارد میشه، ولی پردازش Instruction اول 5 Clock Cycle طول می کشه، به جای اینکه صبر کنند تا Instruction اول کل پردازشش تموم بشه، بعد از یک Cycle ؛ Instruction بعدی رو وارد می کنند. اگه دقت کنید پردازش هر Instruction پنج مرحله داره (در این مثال) ، و این مراحل همگی توسط قسمت متفاوتی از پردازنده انجام میشن. برای همین هم در یک Clock Cycle خاص هیچ گاه دو نوع پردازش همنوع دیده نمیشه (خطوط عمودی) ... این کار باعث میشه موقع پردازش موقعی که Instruction هایی برای پردازش وجود دارند قسمتی از پردازنده بیکار باقی نمونه و اصطلاح علمی Instruction Starvation در قسمتی از پردازنده بوجود نیاد. عکس بالا یک Five Stage Pipeline رو نشون میده.
مثلا مایکروکنترلر های AVR/PIC اکثرا 2 مرحله Pipeline دارند، و بعضی پردازنده های Intel Pentium 4 حتی 20 مرحله Pipeline هم داشتند. Intel Core i7 ها هم که کلا مراحل Pipeline اشون کاملا Dynamic شده ... این به این معنی نیست به تعداد مرحله ها Thread داریم.
زمانی می تونیم بگیم این پردازنده دو Thread داره، که بتونه در یک Clock Cycle ، دو پردازش مثل هم رو پردازش کنه. مثلا اگه می تونست در Cycle اول ، Instruction 1 و Instruction 2 رو همزمان وارد کنه، و مثلا دو پردازش مختلف IF یا EX یا ... رو در یک Cycle انجام بده، اون جا می تونستیم بگیم این به معنی Multithreading است.
امیدوارم کمک کرده باشه.
مخلصیم






پاسخ با نقل قول
Bookmarks