چندریسمانی همزمان

چند ریسمانی همزمان (به انگلیسی: Simultaneous Multithreading یا SMT) روشی برای افزایش بهره‌وری کل سیستم، شامل طراحی پردازنده‌هایی است که می‌توانند هم‌زمان چندین دستورالعمل را اجرا کنند. این پردازنده‌ها که به سوپراسکالر معروف هستند؛ با سخت‌افزار‌های مجهز به قابلیت «چند ریسمانی سخت‌افزاری» کار می‌کنند. فناوری SMT این امکان را فراهم می‌کند تا ریسه‌هایِ مستقل، بهینه‌تر از منابع پردازنده استفاده کنند.

پردازنده‌های سوپر اسکالر، به‌گونه‌ای طراحی شده‌اند که می‌توانند در هر چرخهٔ ساعت چندین دستورالعمل را به‌صورت هم‌زمان اجرا کنند؛ با این حال، در عمل بسیاری از واحدهای اجرایی پردازنده ممکن است به‌طور کامل در هر چرخه استفاده نشوند؛ زیرا همه دستورالعمل‌ها به منابع یکسانی نیاز ندارند. در اینجا فناوری SMT (چند ریسمانی هم‌زمان) به کمک می‌آید و بهبودهای زیادی ارائه می‌دهد.Kuck, David. “The Intel Hyper-Threading Technology. ” IEEE Computer Society, 2004.

 اصول کارکرد SMT 
در فناوری SMT (چند ریسمانی همزمان)، چندین ریسه (thread) یا فرایند (process) می‌تواند به‌طور همزمان روی یک پردازنده اجرا شود. این ریسه‌ها از منابع مشترک پردازنده،مانند واحدهای محاسباتی،ثبات‌ها (registers) و حافظه پنهان (cache) استفاده‌می‌کنند. هدف اصلی SMT بهبود بهره‌وری منابع پردازنده است که در یک ریسه منفرد ممکن است به‌طور کامل استفاده نشوند.

فناوری SMT، این امکان را فراهم می‌کند که اگر یک ریسه به دلیل انتظار برای دسترسی به حافظه یا سایر منابع معطل شود، ریسه‌های دیگر بتوانند از منابع پردازشی بدون فعالیت استفاده کنند و بدون وقفه به اجرای خود ادامه دهند. این ویژگی به بهبود بازدهی کلی پردازنده و کاهش زمان تأخیر کمک می‌کند.Schmidt, Douglas C. , et al. “The Real-Time Strategy for Hyper-Threading. ” ACM Transactions on Embedded Computing Systems, 2013.

یکی از نمونه‌های برجسته استفاده از فناوری SMT، پردازنده‌های سری Intel Hyper-Threading است. این پردازنده‌ها با استفاده از SMT می‌توانند دو ریسه را به‌طور همزمان روی هر هسته فیزیکی اجرا کنند. این یعنی یک پردازنده چهار هسته‌ای با Hyper-Threading می‌تواند همزمان هشت ریسه را اجرا کند که منجر به بهبود چشمگیر عملکرد در برنامه‌هایی می‌شود که قابلیت اجرای موازی دارند.

پردازنده‌های AMD نیز از فناوری مشابهی به نام Simultaneous Multi-Threading (چند رشته‌ای همزمان) استفاده می‌کنند. این فناوری در پردازنده‌های Ryzen این شرکت به کار گرفته شده و عملکرد بالاتری را در برنامه‌های چند ریسمانی ارائه می‌دهد.

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

یکی از چالش‌های اصلی SMT، مدیریت منابع مشترک بین ریسه‌ها است. اگرچه این فناوری می‌تواند بهبودهای بزرگی در عملکرد ایجاد کند، اما در صورت مدیریت نادرست منابع ممکن است به کاهش عملکرد یا تداخل بین ریسه‌ها منجر شود؛ بنابراین ریسه‌ها باید به‌طور مؤثری مدیریت شوند تا رقابت بر سر منابع مشترک به حداقل برسد و منجر به کاهش عملکرد سیستم نشود. به عنوان مثال، اگر دو ریسه به‌طور همزمان به یک منبع خاص نیاز داشته باشند، ممکن است باعث ایجاد تأخیر در اجرا شوند.Patterson, David A. , and John L. Hennessy. “Computer Organization and Design: The Hardware/Software Interface. ” Morgan Kaufmann, 2017.

برنامه‌نویسان باید الگوریتم‌های خود را برای بهره از مزایای چندریسمانی، بهینه‌سازی کنند تا عملکرد بهتری در برنامه‌های موازی داشته باشند.Mattson, Tim G. , et al. “Patterns for Parallel Programming. ” Addison-Wesley, 2004.

مزایای استفاده از SMT شامل افزایش بازدهی پردازنده، بهبود عملکرد در برنامه‌های چند ریسمانی، و کاهش زمان تأخیر است. این فناوری به ویژه در برنامه‌هایی که به شدت به پردازش موازی متکی هستند، مانند شبیه‌سازی‌ها، محاسبات علمی، و پردازش داده‌های بزرگ، بسیار مؤثر است.

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

در نتیجه، فناوری چند ریسمانی همزمان یک ابزار قدرتمند برای بهبود عملکرد پردازنده‌ها و افزایش بازدهی سیستم‌های کامپیوتری است. این فناوری با به‌کارگیری همزمان چندین ریسه در یک پردازنده، می‌تواند بهره‌وری از منابع سخت‌افزاری را به حداکثر برساند و عملکرد سیستم را در برنامه‌های چندریسمانی بهبود ببخشد. با این حال، بهره‌برداری بهینه از این فناوری نیازمند طراحی دقیق سخت‌افزار و نرم‌افزار و مدیریت مؤثر منابع مشترک بین ریسه‌ها است.

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

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

با این‌که این روش فنی بسیار سودمند است و با اشتراک‌گذاری منابع درگیر است، اندازه‌گیری و تأیید اثربخشی آن می‌تواند دشوار باشد. به هر حال، اندازه‌گیری اثربخشی انرژی SMT توسط موازی‌سازی بومی و مدیریت میزان کار در تاریخ از 130nm به 32nm در پیاده‌سازی SMT شرکت اینتل نشان داده است که SMT در انرژی بسیار کارآمد است، به خصوص در پیاده‌سازی‌های 45nm و 32nm. حتّی در پردازنده‌های اتمی در سیستم‌های مدرن، SMT به‌طور همزمان با نیروی پویای کم اضافی کار می‌کند و حتی در حداقل بازده، می‌توان به صرفه‌جویی در مصرف برق دست یافت.

برخی محققان نشان داده‌اند که رشته‌های اضافی می‌تواند به عنوان منبع اشتراک‌گذاری فعال مانند مخزن مورد استفاده قرار گیرد و عملکرد رشته‌های دیگر را بهبود بخشد. این ادعا نشان می‌دهد که SMT تنها یک راه حل مفید نیست. استفاده دیگر از SMT ارائه محاسبات اضافی برای کشف و ترمیم خطاها است.

در نهایت، در بسیاری از موارد، SMT برای پوشش تأخیر در کار حافظه، افزایش کارایی و توان محاسباتی سخت‌افزار مفید است.

 طبقه‌بندی 
در طراحی پردازنده، دو روش برای تقارن تراشه با کمترین منابع مورد نیاز وجود دارد: یک روش سوپر است، که سعی بر به‌کارگیری سطح دستورالعمل به‌طور موازی (ILP) و دیگر رویکرد چندرشتگی در به‌کارگیری سطح رشته به‌طور موازی است (TLP).

سوپر به معنای اجرای چندین دستورالعمل می‌باشد، در حالی که سطح رشته موازی (TLP) اجرای دستورالعمل دستورالعمل‌ها در چندین رشته همراه با یک تراشهٔ پردازنده به‌طور همزمان می‌باشد.
 قرار دادن چند رشته در یک لایه: این عمل در چند دستورالعمل از چندین رشته، به چند رشته زمانی نیز اشاره دارد که بیشتر می‌تواند به ریز و درشت بخش‌های چندرشتگی مربوط به فرکانس عمل در یک لایه قرار دادن تقسیم شود. چندرشتگی ریز بخش -برای مثال در پردازنده در بسته – دستورالعمل‌ها را برای رشته‌های مختلف بعد از هر دوره زمانی انجام می‌دهد، در حالی که چندرشتگی درشت بخش تنها زمانی برای انجام دستورالعمل از دیگر رشته تغییر می‌کند که رشته عملیاتی فعلی باعث ایجاد تأخیر زیادی شده‌باشد (مانند صفحه گسل و غیره). چندرشتگی درشت بیشتر برای حداقل تغییرات زمینه بر روی رشته‌ها به‌کار برده می‌شود. برای مثال پردازنده مُنتسیتو شرکت اینتل از چندرشتگی درشت استفاده می‌کند در حالی که UltraSPARC T1 شرکت سان از چندرشتگی ریز استفاده می‌کند. برای چنین پردازنده‌هایی که تنها یک خط لوله (pipeline) در هر هسته دارد، قرار دادن چند رشته در یک لایه تنها راه ممکن است، به دلیل آن که می‌تواند بر روی حداکثر یک دستورالعمل در دوره زمانی کار کند.
 چندرشتگی هم‌زمان (SMT): عملیات چند دستورالعملی را از چندین رشته در یک دورهٔ زمانی انجام می‌دهد. پردازنده باید بسیار بزرگ (سوپر) باشد تا بتواند انجام دهد.
 چند پردازشگری در سطح تراشه (CMP یا چند هسته ای): دو یا چند پردازنده را در یک تراشه ادغام می‌کند. در این حالت هر عملیات به‌طور مستقل انجام می‌دهد.
 هر صورت دیگری از ترکیب چندرشتگی SMT/CMP.
فاکتور کلیدی تشخیص دادن آن‌ها، توجه به تعداد دستورالعمل‌هایی که یک پردازنده می‌تواند در یک دوره زمانی انجام دهد و تعداد رشته‌هایی که از هر دستورالعمل به عمل می‌آید. ریزسیستم UltraSPARC T1 شرکت سان (شناخته شده با عنوان «نیاگارا» تا زمان پخش آن در ۱۴ نوامبر ۲۰۰۵) یک پردازنده چندهسته‌ای است که به جای چندرشتگی هم‌زمان با روش چندرشتگی درشت ترکیب شده است به دلیل آن که هر هسته در یک لحظه تنها می‌تواند یک دستورالعمل را انجام دهد.

 پیاده‌سازی در طول تاریخ 
مادامی که چندرشتگی CPUها که از حدود سال ۱۹۵۰ وجود دارند، چندرشتگی همزمان اولین تحقیق شرکت IBM به عنوان بخشی از پروژهٔ ACS-360 در سال ۱۹۶۸ بود. اولین تجارت بزرگ ریز پردازنده‌ها توسعه یافته توسط SMT, Alpha 21464 (EV8) می‌باشد. این ریز پردازنده توسط DEC با هماهنگی دین تُلسن ازدانشگاه کالیفرنیا در سن دیگو و سوزان ایگرز و هنری لِوی از دانشگاه واشینگتن توسعه یافت. از زمانی که خط Alpha ریز پردازنده‌ها به مدت کوتاهی متوقف شد، ریز پردازنده هیچگاه عرضه نشد؛ قبل از اینکه HP, Compaq را به دست آورد DEC را به‌دست آورده بود. کار دین تُلسن همچنین توسعه دادن نسخه‌های فوق رشته‌ای (تکنولوژی فوق رشته‌ای یا HTT) ریز پردازندههای پنتیوم ۴ شرکت اینتل بود، به عنوان مثال"Northwood" و "Prescott ".

 پیاده‌سازی مدرن تجاری 
پنتیوم ۴ شرکت اینتل اولین پردازنده میزی مدرن برای پیاده‌سازی چندرشتگی هم‌زمان بود، که با ۳٫۰۶ گیگاهرتز در سال ۲۰۰۲ به‌دست آمد و در آن زمان تعدادی از پردازنده‌هایشان را معرفی کردند. اینتل آن را عملکرد فوق رشته‌ای می‌نامد و موتور دو رشته‌ای اس‌ام‌تی را تدارک دید. اینتل تا افزایش ۳۰ درصدی سرعت در مقایسه با موارد یکسان در پنتیوم بدون SMT پیش رفت. دید نسبت به بهبود عملکرد بسیار وابسته به نرم‌افزار است؛ در حالی که دو برنامه را اجرا می‌کنید که به توجه کامل پردازنده نیاز دارید که امکان دارد بنظر برسد یک یا هر دو برنامه زمانی که فوق رشته‌ای روشن شده، به‌طور محسوسی (سرعتشان) پایین آمده است؛ که این ناشی از بسته شدن منابع اجرایی ارزشمند سیستم پاسخ‌دهی پنتیوم ۴ است. افزایش مغایرت منابع مثل پهنای باند، مخزن (cache), TLBها، دوباره مرتب کردن ورودی‌های بافر، تساوی منابع پردازنده بین دو برنامه که میزان زمان متغیر برای اجرا را اضافه می‌کند. پنتیوم ۴ با هسته پرساکت صف پاسخگویی به‌دست‌آورد، که زمان اجرا مورد نیاز برای سیستم پاسخگویی را افزایش می‌دهد. این کافی است تا به‌طور کامل در برابر عملکرد تصادم‌ها غلبه کند.

آخرین طراحی در معماری MIPS شامل سیستم اس‌ام‌تی است که با عنوان MIPS MT شناخته شده است.
MIPS MT، وزن سنگین عناصر پردازش مجازی و وزن کم ریزرشته‌های سخت‌افزار بهبود داد. RMI، راه انداز برپایهٔ کوپرتینو، اولین فروشنده MIPS برای بهبود پردازنده برپایهٔ SOC بر روی ۸ هسته می‌باشد که هرکدام ۴ رشته را اجرا می‌کند. رشته‌ها می‌توانند در حالت ریز بخش اجرا شوند که یک سری رشته مختلف می‌توانند در یک دوره زمانی انجام شوند. رشته‌ها می‌توانند به یک سری اولویت‌ها اختصاص داده شوند. تکنولوژی تصوری MIPS در CPU دارای 2 SMT رشته در یک هسته می‌باشند.

IBM ژن آبی / Q دارای ۴ راه SMT است.

5 IBM POWER، معرفی شده در ماه مه سال ۲۰۰۴، هم به عنوان ماژول دو هسته‌ای دو تراشه‌ای (DCM) و هم به عنوان ماژول چهار یا هشت هسته‌ای دو تراشه‌ای (MCM)، همراه هر هسته دو رشته موتور SMT است. پیاده‌سازی IBM بسیار پیچیده‌تر از قبلی‌هایش است، به دلیل اینکه می‌تواند عملیات مختلفی را به رشته‌های متفاوت اعمال کند، بیشتر ریز بخش است و موتور SMT به صورت پویا می‌تواند خاموش و روشن شود تا بهتر آن ظرفیت کاری را که پردازنده SMT نمی‌تواند افزایش کارایی دهد، اجرا کند. این دومین پیاده‌سازی چندرشتگی سخت‌افزاری در دسترس عموم شرکت IBM است. در ۲۰۱۰، شرکت آی‌بی‌ام سیستمی بر پایهٔ پردازنده 7POWER با هشت هسته معرفی کرد که هر هسته دارای ۴ رشته هوشمند هم‌زمان می‌باشد. این جابه‌جایی‌ها (تغییرات) در رشته‌ها بین یک رشته، دو رشته و چهار رشته به تعداد رشته‌های فرایند (پروسه) ای که زمان‌بندی شده‌اند بستگی دارد. این کار، استفاده از هسته را در پاسخگویی در حداقل زمان یا برای حداکثر خروجی بهینه می‌کند. 8IBM POWER دارای ۸ رشتهٔ هم‌زمان هوشمند می‌باشد. (SMT8).

IBM Z13 دارای ۲ رشته در هر هسته می‌باشد (SMT-2).

همچنین بسیاری از مردم گزارش کرده‌اند که ریزسیستم UltraSPARC T1 شرکت سان (که در ۱۴ نوامبر سال ۲۰۰۵ با نام "نیاگاراً شناخته شد) و در حال حاضر پردازنده موسوم به "راک" که از بین رفته است (که در سال ۲۰۰۵ به معرف عموم رسید اما بعدی کلی تأخیر در سال ۲۰۰۹ تعطیل شد) پیاده‌سازی SPARC اغلب بر بهره‌برداری از روش SMT و CMP متمرکز شده است، در حالی که "نیاگاراً از SMT استفاده نمی‌کند. شرکت سان تمایل به این رویکرد ترکیبی با نام "CMT" و مفهوم کلی "توان محاسباتی" دارد.
"نیاگاراً دارای ۸ هسته می‌باشد، اما هر هسته تنها یک خط لوله (pipeline) داراست، در واقع از چندرشتگی ریز بخش استفاده می‌کند. برخلاف SMT که دستورالعمل‌های چندرشتگی که پنجره عملیات را در هر دوره زمانی به اشتراک می‌گذارد، پردازنده از سیاست دور رابین برای اعمال دستورالعمل‌ها از رشته فعال بعدی در هر دوره زمانی استفاده می‌کند. این باعث می‌شود تا بیشتر شبیه به پردازنده بسته باشد. پردازنده "راک" شرکت سان متفاوت است، دارای چند هسته پیچیده است که دارای بیش از یک خط لوله (pipeline) می‌باشد.

محصول SPARC T3 شرکت اوراکل (Oracle) دارای ۸ رشته ریز بخش در هر هسته می‌باشد ،4 SPARC T ،5 SPARC T،5M SPARC و 6Sparc M دارای ۸ رشته درشت بخش در هر هسته می‌باشد که هر دو می‌توانند به‌طور هم‌زمان عملیات انجام دهند.

شرکت فوجیتسو (FUJITSU) مدل SPARC 64VI دارای چندرشتگی درشت بخش عمودی(VMT) و SPARCVII و جدیدتر دارای اس‌ام‌تی دو روشی هستند.

شرکت اینتل (Intel) در مونته سیتو ایتانیوم خود از چندرشتگی درشت بخش استفاده کرده است و توکویلا و جدیدتر از اس‌ام‌تی دو روشی استفاده می‌کند (همراه با چندرشتگی دو-دامنه‌ای).

شرکت اینتل در زئون فای از SMT 4-روشی (همراه با چندرشتگی زمان تسهیم شده) با سخت‌افزاری که برپایهٔ رشته‌ها است برخلاف فوق رشته‌ای منظم نمی‌تواند غیرفعال شود.

اتمِ اینتل، در سال ۲۰۰۸ معرفی شد، اولین محصول برای آیندهٔ SMT دو روشی (فروخته‌شده به عنوان فوق رشته‌ای) بدون معین کردن مرتب‌سازی دستورالعمل، اجرای حدسی یا تغییر نام رجیستر است.
اینتل فوق رشته‌ای را همراه با ریزساختار «نهالم» بعد از غیاب آن در معماری هسته باز معرفی کرد.

معماری بولدوزر AMD، تراشه FLEX TPU و Shared L2 چندرشتگی هستند اما هسته‌های عدد صحیح ماژول، تک‌رشته‌ای هستند، بنابراین این تنها یک پیاده‌سازی جزئی از اس‌ام‌تی می‌باشد.

ریز ساختار «زِن» AMD, SMT دو روشی دارد.

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

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

 جستارهای وابسته 
 چندریسمانی
 الگوریتم‌های چندریسمانی
 فراریسمانی
 چند نخی

 منابع 

رده:ریزپردازنده‌ها
رده:ریسه‌ها (رایانش)
رده:طبقه‌بندی فلین
رده:معماری رایانه
رده:واحد پردازشگر مرکزی