Hardware Multithreading: پنهان کردن تأخیر با جابه‌جایی بین وظایف

Hardware Multithreading: پنهان کردن تأخیر با جابه‌جایی بین وظایف

Hardware MultithreadingSimultaneous Multithreadingموازی‌سازی سطح رشته

~3 min read · Updated Sep 6, 2026

مسئله: زمان بی‌کاری در انتظار عملیات‌های کند

حتی با پایپ‌لاینینگ و موازی‌سازی سطح دستور، که هر دو پیش‌تر در این مجموعه بحث شدند، یک هسته پردازنده مکرراً متوقف می‌شود در حالی که منتظر تکمیل یک عملیات کند است، مانند یک cache miss که نیازمند واکشی داده از حافظه اصلی است. در طول این توقف‌ها، سخت‌افزار اجرایی که در غیر این صورت می‌توانست کار مفیدی انجام دهد بی‌کار می‌ماند.

ایده اصلی: چند رشته که یک هسته را به اشتراک می‌گذارند

Hardware Multithreading اجازه می‌دهد یک هسته پردازنده فیزیکی واحد، وضعیت چند Thread مستقل (جریان‌های جداگانه دستورات) را به‌طور هم‌زمان نگه دارد، و بین آن‌ها جابه‌جا شود تا سخت‌افزار اجرایی را حتی وقتی یک رشته منتظر یک عملیات حافظه کند است، مشغول نگه دارد.

Fine-Grained Multithreading

Fine-Grained Multithreading بین رشته‌ها در هر سیکل ساعت جابه‌جا می‌شود، و به‌صورت round-robin در رشته‌های موجود چرخش می‌کند. این رویکرد می‌تواند به‌طور مؤثری تأخیر ناشی از توقف‌های کوتاه را پنهان کند، چون دستور یک رشته دیگر می‌تواند در همان سیکل بعدی صادر شود، اما سرعت اجرای هر رشته منفرد در حال اجرای مجزا را کمی کاهش می‌دهد، چون آن رشته فقط کسری از سیکل‌ها را دریافت می‌کند.

Coarse-Grained Multithreading

Coarse-Grained Multithreading رشته‌ها را فقط زمانی جابه‌جا می‌کند که رشته در حال اجرای فعلی با یک توقف پرهزینه مواجه شود، مانند یک cache miss که نیازمند دسترسی به حافظه اصلی است. این کار از سربار کوچک هر-سیکل جابه‌جایی هر سیکل اجتناب می‌کند، اما به توقف‌های کوتاه‌تر کندتر واکنش نشان می‌دهد، چون یک تأخیر کوتاه ممکن است ارزش هزینه یک جابه‌جایی کامل رشته را نداشته باشد.

Simultaneous Multithreading: صدور از چند رشته به‌طور هم‌زمان

Simultaneous Multithreading (SMT)، ترکیب‌شده با سخت‌افزار سوپراسکالر و صدور چندگانه که پیش‌تر در این مجموعه بحث شد، فراتر می‌رود با صادر کردن دستورات از چند رشته مختلف درون همان سیکل ساعت، و پر کردن اسلات‌های صدور در غیر این صورت استفاده‌نشده‌ای که یک رشته به‌تنهایی نمی‌توانست به‌طور کامل اشغال کند.

بدون SMT (یک رشته):
سیکل 1: 2 از 4 اسلات صدور استفاده‌شده، 2 بی‌کار

با SMT (دو رشته که هسته را به اشتراک می‌گذارند):
سیکل 1: رشته A از 2 اسلات استفاده می‌کند،
         رشته B از 2 اسلات در غیر این صورت-بی‌کار استفاده می‌کند

چرا این با افزودن هسته‌های بیشتر متفاوت است

Hardware multithreading همان رویکرد چندهسته‌ای که پیش‌تر در این مجموعه بحث شد نیست. Multithreading همان منابع اجرایی فیزیکی، مانند ALU ها، را بین چند رشته درون یک هسته واحد به اشتراک می‌گذارد، در حالی که طرح‌های چندهسته‌ای کل هسته‌ها را تکرار می‌کنند. Multithreading معمولاً از نظر مساحت تراشه ارزان‌تر است اما بهبود کارایی متوسط‌تری فراهم می‌کند، چون رشته‌های روی همان هسته همچنان برای منابع مشترکی مانند فضای کش رقابت می‌کنند.

چرا این تکنیک برای پردازنده‌های امروزی اهمیت دارد

Hardware multithreading به‌طور گسترده در پردازنده‌های تجاری پیاده‌سازی می‌شود به‌طور خاص چون بارهای کاری دنیای واقعی مکرراً روی دسترسی حافظه توقف می‌کنند، که پیش‌تر در این مجموعه درباره سلسله‌مراتب حافظه بحث شد، و multithreading راهی نسبتاً کم‌هزینه برای بازیابی بخش معناداری از آن ظرفیت اجرایی در غیر این صورت هدررفته فراهم می‌کند.

Written & researched by Dr. Shahin Siami

Related Articles

تصورات غلط رایج درباره محاسبات موازی و درس‌های نهایی کتاب

پس از پوشش هر چیزی از موازی‌سازی سطح رشته تا محاسبات در مقیاس انبار، ارزش دارد تصورات غلط پایداری درباره سیستم‌های موازی که حتی مهندسان باتجربه هم گاهی به آن‌ها دارند را اصلاح کنیم. این مقاله به مغالطات رایج درباره مقیاس‌پذیری و سخت‌افزار موازی می‌پردازد، سپس فصل پردازش موازی را با پیوند دادن مسیر کامل از یک دستور منفرد تا یک ساختمان پر از ماشین‌های همکار به پایان می‌رساند.

Continue

واقعیت‌های عملی: بنچمارک CPU در مقابل GPU و ضرب ماتریس چندپردازنده‌ای

مقایسه منصفانه یک CPU و یک GPU نیازمند مدلی است که هم توان عملیاتی محاسباتی و هم محدودیت‌های پهنای باند حافظه را با هم در نظر بگیرد. این مقاله مدل roofline مورد استفاده برای مقایسه سخت‌افزار واقعی مانند Intel Core i7 و NVIDIA Tesla GPU را معرفی می‌کند، سپس نشان می‌دهد ضرب ماتریس چگونه در سراسر چند پردازنده تسریع می‌شود، به‌عنوان کاربرد عملی نهایی مفاهیم موازی این فصل.

Continue

بنچمارک کردن چندپردازنده‌ها و مدل‌سازی کارایی موازی

سنجش کارایی یک سیستم موازی نیازمند ابزارها و سنجه‌های متفاوتی نسبت به سنجش یک پردازنده تک‌هسته‌ای است. این مقاله بنچمارک‌های تخصصی مورد استفاده برای ارزیابی سیستم‌های چندپردازنده را پوشش می‌دهد، توضیح می‌دهد چگونه رفتار مقیاس‌پذیری را با افزودن پردازنده‌های بیشتر مدل‌سازی کنیم، و قانون آمدال را در زمینه سنجش کارایی دنیای واقعی بازبینی می‌کند.

Continue

شبکه‌سازی کلاستر: ارتباط با دنیای بیرون

یک کلاستر از ماشین‌ها فقط زمانی مفید است که بتواند به‌طور کارآمد هم داخلی و هم با دنیای بیرون ارتباط برقرار کند. این مقاله لایه‌های شبکه‌سازی درگیر در ارتباط کلاستر، مبادلات بین تأخیر و پهنای باند در مقیاس، و اینکه کلاسترها چگونه به شبکه‌های خارجی و کاربران متصل می‌شوند را پوشش می‌دهد.

Continue

کلاسترها، کامپیوترهای در مقیاس انبار، و توپولوژی‌های شبکه

فراتر از یک تراشه واحد، موازی‌سازی به کل ساختمان‌های پر از کامپیوترهای مستقلی که با هم کار می‌کنند گسترش می‌یابد. این مقاله گذار از چندپردازنده‌سازی حافظه مشترک به کلاسترهایی از ماشین‌های جداگانه را توضیح می‌دهد، مفهوم محاسبات در مقیاس انبار را معرفی می‌کند، و توپولوژی‌های شبکه که این ماشین‌های مستقل را به‌طور کارآمد متصل می‌کنند را پوشش می‌دهد.

Continue

مقدمه‌ای بر GPU: موازی‌سازی عظیم برای بارهای کاری سنگین از نظر داده

یک GPU ایده SIMD که پیش‌تر در این مجموعه پوشش داده شد را به یک مقیاس افراطی می‌برد، و هزاران رشته سبک را به‌طور هم‌زمان اجرا می‌کند تا حجم عظیمی از داده مستقل را پردازش کند. این مقاله توضیح می‌دهد چرا GPU ها از نظر معماری این‌قدر با CPU متفاوت‌اند، مدل اجرای رشته آن‌ها چگونه کار می‌کند، و چه نوع بارهای کاری بیشترین بهره را از این طراحی می‌برند.

Continue