چندریسمانی همزمان (به انگلیسی: Simultaneous Multithreading یا SMT)، روشی برای افزایش بازدهی کل سیستم است. این روش به ساختار پردازندههایی میپردازد، که بیشتر از یک دستورالعمل را بهصورت همزمان اجرا میکنند؛ این مجموعه از پردازندهها به سوپراسکالر (به انگلیسی: superscalar) معروف هستند. آنها در کنار سختافزار با قابلیت «چندریسمانی سختافزاری» کار میکنند. این فناوری به ریسههایِ مستقل، اجازه میدهد از منابعی که در طراحیِ پردازنده در اختیار آنها قرار داده شده است، بهتر استفاده کنند.[۱]
پردازندههای سوپراسکالر به گونهای طراحی شدهاند که میتوانند چندین دستورالعمل را در هر چرخه ساعت اجرا کنند. با این حال، در عمل، بسیاری از واحدهای اجرایی پردازنده ممکن است در هر چرخه بهطور کامل مورد استفاده قرار نگیرند، زیرا همه دستورالعملها به منابع یکسانی نیاز ندارند. اینجاست که فناوری SMT وارد عمل میشود و بهبودهای قابل توجهی را ارائه میدهد.
در فناوری SMT، چندین ریسه (thread) یا فرایند (process) میتوانند بهطور همزمان بر روی یک پردازنده اجرا شوند. این ریسهها از منابع سختافزاری مشترک پردازنده، مانند واحدهای محاسباتی، ثباتها (registers)، و حافظه نهان (cache) استفاده میکنند. هدف اصلی SMT بهبود بهرهوری از منابع پردازنده است که بهطور معمول ممکن است در یک ریسه منفرد بهطور کامل استفاده نشوند.
فناوری SMT این امکان را فراهم میکند که اگر یک ریسه به دلیل انتظار برای دسترسی به حافظه یا سایر منابع معطل باشد، ریسههای دیگر بتوانند از منابع بیکار استفاده کنند و به اجرا ادامه دهند. این ویژگی به بهبود بازدهی کلی پردازنده و کاهش زمان تأخیر کمک میکند.
یکی از مثالهای برجسته استفاده از فناوری SMT در پردازندههای مدرن، پردازندههای سری Intel Hyper-Threading است. این پردازندهها با استفاده از فناوری SMT قادرند دو ریسه را بهطور همزمان بر روی هر هسته فیزیکی اجرا کنند. این به معنای این است که یک پردازنده چهار هستهای با Hyper-Threading میتواند بهطور همزمان هشت ریسه را اجرا کند. این موضوع منجر به بهبود چشمگیر عملکرد در برنامههایی میشود که قابلیت اجرای موازی دارند.
پردازندههای AMD نیز از فناوری مشابهی به نام Simultaneous Multi-Threading بهره میبرند. این فناوری در پردازندههای Ryzen این شرکت به کار گرفته شده و عملکرد بالاتری را در برنامههای چندریسمانی ارائه میدهد.
فناوری SMT نیازمند تغییرات و بهبودهای قابل توجهی در طراحی سختافزاری پردازندهها است. از جمله این تغییرات میتوان به مدیریت پیچیدهتر ثباتها، افزایش تعداد واحدهای اجرایی، و بهبود سیستم حافظه نهان اشاره کرد. علاوه بر این، نرمافزار نیز باید به گونهای طراحی شود که بتواند از مزایای SMT بهرهبرداری کند. این به معنای برنامهنویسی برای اجرای موازی و بهینهسازی الگوریتمها برای استفاده از چندین ریسه بهطور همزمان است.
یکی از چالشهای اصلی SMT مدیریت منابع مشترک بین ریسهها است. اگرچه این فناوری میتواند بهبودهای بزرگی در عملکرد ایجاد کند، اما در صورت مدیریت نادرست منابع، ممکن است به کاهش عملکرد یا تداخل بین ریسهها منجر شود. به عنوان مثال، اگر دو ریسه بهطور همزمان به یک منبع خاص نیاز داشته باشند، ممکن است باعث ایجاد تأخیر در اجرا شوند.
مزایای استفاده از SMT شامل افزایش بازدهی پردازنده، بهبود عملکرد در برنامههای چندریسمانی، و کاهش زمان تأخیر است. این فناوری به ویژه در برنامههایی که به شدت به پردازش موازی متکی هستند، مانند شبیهسازیها، محاسبات علمی، و پردازش دادههای بزرگ، بسیار مؤثر است.
با این حال، همه برنامهها نمیتوانند از مزایای SMT بهرهبرداری کنند. برنامههایی که به صورت ترتیبی اجرا میشوند و نیاز به پردازش موازی ندارند، ممکن است بهبود قابل توجهی در عملکرد مشاهده نکنند. به همین دلیل، توسعهدهندگان نرمافزار باید بهطور دقیق نیازها و الگوهای کاری برنامههای خود را بررسی کنند تا بتوانند از فناوری SMT بهرهبرداری کنند.
در نتیجه، فناوری چندریسمانی همزمان یک ابزار قدرتمند برای بهبود عملکرد پردازندهها و افزایش بازدهی سیستمهای کامپیوتری است. این فناوری با بهکارگیری همزمان چندین ریسه در یک پردازنده، میتواند بهرهوری از منابع سختافزاری را به حداکثر برساند و عملکرد سیستم را در برنامههای چندریسمانی بهبود بخشد. با این حال، بهرهبرداری بهینه از این فناوری نیازمند طراحی دقیق سختافزار و نرمافزار و مدیریت مؤثر منابع مشترک بین ریسهها است.
نام چند رشتگی مبهم است چون چندین رشته و وظیفه (با جداول صفحهٔ مختلف، سطحهای وضعیت وظیفهٔ مختلف، حلقههای حفاظت مختلف، اجازههای ورود و خروج مختلف و …) میتوانند بهطور همزمان روی یک هستهٔ سیپییو اجرا شوند. علیرغم اجرا شدن روی یک هسته، پردازندهٔ آنها کاملاً از یکدیگر جدا و مستقل است. چند رشتگی از نظر مفهومی مشابه چند وظیفهٔ مختلف انحصاری است، ولی در سطح رشته اجرا در پردازندههای ابر مقیاسپذیر جدید پیادهسازی شده است.
چند رشتگی همزمان یکی از دو مورد از پیادهسازی اصلی چند رشتگی است، و شکل دیگر آن چند رشتگی زمانی است. در چند رشتگی زمانی، در هر سطح زمانی داده شده، تنها یک رشتهٔ دستور العملها قابل اجرا است. در چند رشتگی همزمان، دستورهای بیش از یک رشته در هر سطح زمانی داده شده قابل اجرا هستند. این، بدون تغییرات عمدهای نسبت به معماری پایهٔ پردازنده انجام شده است. ضمائم اصلی مورد نیاز، شامل توانایی واکشی (حمل) دستورالعملها از چند رشتگی در یک دوره زمانی و یک فایل رجیستر (ثبتکننده) بزرگتر برای نگهداری دادهها از طرف چند رشتگی است. تعداد رشتههای متقارن (همزمان)، توسط طراحان تراشه قابل تصمیمگیری است. دو رشته متقارن در هر هسته CPU نوع رایج آن است، اما بعضی از پردازندهها ۸ رشته متقارن را در یک هستهٔ خود دارند.
به دلیل آن که روش فنی راهحل بسیار سودمندی است، و درگیری رو به افزایش اجتنابناپذیر در اشتراکگذاری منابع، اندازهگیری یا تأیید اثربخشی راهحل میتواند دشوار باشد. به هر حال اندازهگیری اثربخشی انرژی اسامتی(SMT) توسط بومی موازی و مدیریت میزان کار در تاریخ از 130nm به 32nm در پیادهسازی اسامتی(SMT) شرکت اینتل به این رسیدند که در پیادهسازی در 45nm و 32nm ,SMT در انرژی بسیار کارآمد است. حتی در مورد پردازندههای اتمی در سیستمهای مدرن، اسامتی بهطور همزمان همراه با یک نیروی پویای کوچک اضافی کار میکند و حتی زمانی که بازده حداقل است، میتوان به صرفهجویی در مصرف برق توجه داشت.
برخی از محققان نشان دادند که رشتههای اضافی میتواند به عنوان عنصری فعال منبع اشتراکگذاری همانند مخزن مورد استفاده قرار بگیرند. برای بهبود کارایی تک رشته دیگر و این ادعا نشان میدهد که اسامتی(SMT) تنها یک راه حل مفید نیست. استفاده دیگر از اسامتی (SMT) ارائه محاسبات اضافی برای برخی سطوح کشف خطا و ترمیم آن است.
در هر حال، در بسیاری از موارد متداول، اسامتی (SMT) برای پوشاندن تأخیر در کار حافظه، افزایش کارایی و افزایش توان محاسبات در هر مدت استفاده از سختافزار میباشد.
در طراحی پردازنده، دو روش برای تقارن تراشه با کمترین منابع مورد نیاز وجود دارد: یک روش سوپر است، که سعی بر بهکارگیری سطح دستورالعمل بهطور موازی (ILP) و دیگر رویکرد چند رشتگی در بهکارگیری سطح رشته بهطور موازی است (TLP).
سوپر به معنای اجرای چندین دستورالعمل میباشد، در حالی که سطح رشته موازی (TLP) اجرای دستورالعملها در چندین رشته همراه با یک تراشهٔ پردازنده بهطور همزمان میباشد.
فاکتور کلیدی تشخیص دادن آنها، توجه به تعداد دستورالعملهایی که یک پردازنده میتواند در یک دوره زمانی انجام دهد و تعداد رشتههایی که از هر دستورالعمل به عمل میآید. ریزسیستم 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 خواستار این مقصود و برای جلوگیری از پردازش همراه با اولویت مختلف با گرفتن منابع از یکدیگر هستند.
همچنین در مورد پیادهسازی چند رشتگی همزمان کنونی، نگرانیهای امنیتی وجود دارد. پیادهسازی فوق رشتهای شرکت اینتل این آسیبپذیری را دارد که یک نرمافزار ممکن است کلید رمزنگاری آن از اجرای یک نرمافزار دیگر با پردازندهای مشابه توسط نظارت بر استفاده تراشه دزدیده شود.