کل این صفرو خوندم هیچی نفهمیدم!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!
Printable View
کل این صفرو خوندم هیچی نفهمیدم!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!
با چی هیچی نفهمیدی Core ها تعداد هسته های حقیقی توی پردازنده هست.نقل قول:
Thread هم تعداد پردازش هایی هست که هر پردازنده در یک لحظه انجام میده.
تعداد Thread با تعدا core برابر هستش مگر آنکه اون پردازنده از تکنولوژی HyperThtrad
استفاده کنه که در این صورت تعداد thread ها دو برابر تعداد Core ها هستش
یعنی در حالت معمول هر هسته فقط یک پردازش در لحظه انجام میده ولی اگر این
تکنولوژی را داشته باشه میتونه دو پردزش را همزمان انجام بده
تمام شد و رفت
سلام ..
فکر می کنم بهتر باشه به Thread بصورت یک مفهوم نگاه کنید. Thread اصلا ربطی به Core ( یا همون هسته ) نداره و یک مفهومه .
Thread یا به قول دوستان همون رشته " اصلی ترین واحد پردازش در پردازنده هست " بعنوان مثال شما قراره یک پروسه مثل : 2*3+2-(2+1) رو در پردازنده انجام بدین. اسم این رو گذاشتیم Process .
بنابراین شما نمی تونید این پروسس رو بسته بندی کنید و تحت لوای یک دستور یا یک واحد پردازش بدید به پردازنده تا پردازش بشه.
این پروسس خودش شما مجموعه ای از Instruction هاس. برای آنکه پردازنده بتونه این Process رو پردازش کنه باید این پروسس تبدیل بشه به یک یا چند Thread ( حالا شاید بهتر متوجه بشید که Thread به نوعی کوچکترین واحد پردازشی در پردازنده هست )
اونوقه این پروسس تبدلیل میشه به چند Thread و برای پردازش به هسته پردازشگر می ره.
مفهوم Multi Threading هم بر همین اساس است. این چیزی که بهش هسته مجازی می گن شاید کمی ذهن رو از واقعیت قضیه دور کنه. ما فقط یک هسته فیزیکی داریم با قابلیت Multi Threading .
در این صورت وقتی رشته اول وارد Core و پس از طی مقداری از پردازش , رشته دوم هم وارد میشه. یعنی هسته صبر نمی کنه تا پردازش رشته اول کامل تموم بشه و رشته دوم رو بگیره.
نهایتا از این پردازنده چند رشته ای باید به مفهوم پردازش موازی برسیم. یعنی منابع " تا زمان تمام شدن پردازش یک واحد قابل پردازش یا همون رشته " نباید بیکار باشن و پردازش رشته دوم رو شروع می کنن.
امیدوارم درست توضیح داده باشم !
ممنون
سلام رئیس بزرگ،نقل قول:
برادر این توضیحاتی که دادید تا جایی که ما می دونستیم به مفهوم 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 است.
امیدوارم کمک کرده باشه.
مخلصیم