چندریسمانی همزمان
چندریسمانی همزمان (به انگلیسی:Simultaneous Multithreading یا SMT)، روشی برای افزایش بازدهی کل سیستم است. این روش به ساختار پردازندههایی میپردازد، که بیشتر از یک دستورالعمل را بهصورت همزمان اجرا میکنند؛
این مجموعه از پردازندهها به سوپراسکالر (به انگلیس : superscalar) معروف هستند. آنها در کنار سختافزار با قابلیت «چندریسمانی سختافزاری» کار میکنند. این فناوری به ریسههایِ مستقل، اجازه میدهد از منابعی که در طراحیِ پردازنده در اختیارِ آنها قَرار داده شده است، بهتر استفاده کنند.[۱]
جزئیات
نام چند رشتگی مبهم است چون چندین رشته و وظیفه (با جداول صفحهٔ مختلف، سطحهای وضعیت وظیفهٔ مختلف، حلقههای حفاظت مختلف، اجازههای ورود و خروج مختلف و …) میتوانند بهطور همزمان روی یک هستهٔ سیپییو اجرا شوند. علیرغم اجرا شدن روی یک هستهٔ پردازندهٔ آنها کاملاً از یکدیگر جدا و مستقل هستند. چند رشتگی از نظر مفهومی مشابه چند وظیفهٔ مختلف انحصاری است، ولی در سطح رشتهٔ اجرا در پردازندههای ابر مقیاس پذیر جدید پیادهسازی شده است.
چند رشتگی همزمان یکی از دو مورد از پیادهسازی اصلی چند رشتگی است، و شکل دیگر آن چند رشتگی زمانی است. در چند رشتگی زمانی، در هر سطح زمانی داده شده، تنها یک رشتهٔ دستور العملها قابل اجرا است. در چند رشتگی همزمان، دستورهای بیش از یک رشته در هر سطح زمانی داده شده قابل اجرا هستند. این، بدون تغییرات عمدهای نسبت به معماری پایهٔ پردازنده انجام شده است. ضمائم اصلی مورد نیاز، شامل توانایی واکشی (حمل) دستورالعملها از چند رشتگی در یک دوره زمانی و یک فایل رجیستر (ثبتکننده) بزرگتر برای نگهداری دادهها از طرف چندرشتگی است. تعداد رشتههای متقارن (همزمان)، توسط طراحان تراشه قابل تصمیمگیری است. دو رشته متقارن در هر هسته سیپییو نوع رایج آن است، اما بعضی از پردازندهها ۸ رشته متقارن را در یک هستهٔ خود دارند.
به دلیل آن که روش فنی راهحل بسیار سودمندی است، و درگیری رو به افزایش اجتنابناپذیر در اشتراکگذاری منابع، اندازهگیری یا تأیید اثربخشی راهحل میتواند دشوار باشد. به هر حال اندازهگیری اثربخشی انرژی اسامتی توسط بومی موازی و مدیریت میزان کار در تاریخ از nm130 به nm32 در پیادهسازی اسامتی شرکت اینتل به این رسیدند که در پیادهسازی در nm45 و nm32 ،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 دارای ۸ رشته درشت بخش در هر هسته میباشد که هر دو میتوانند بهطور همزمان عملیات انجام دهند.
شرکت فوجیتسو (FUJITSO) مدل SPARC 64VI دارای چندرشتگی درشت بخش عمودی(VMT) و SPARCVII و جدیدتر دارای اسامتی دو روشی هستند.
شرکت اینتل (Intel) در مونتسیتو ایتانیوم خود از چندرشتگی درشت بخش استفاده کرده است و توکویلا و جدیدتر از اسامتی دو روشی استفاده میکند (همراه با چندرشتگی دو-دامنهای).
شرکت اینتل در زیئون فای از SMT 4-روشی (همراه با چندرشتگی زمان تسهیم شده) با سختافزاری که برپایهٔ رشتهها است برخلاف فوق رشتهای منظم نمیتواند غیرفعال شود.
اتمِ اینتل، در سال ۲۰۰۸ معرفی شد، اولین محصول برای آیندهٔ SMT دو روشی (فروختهشده به عنوان فوق رشتهای) بدون معین کردن مرتبسازی دستورالعمل، اجرای حدسی یا تغییر نام رجیستر است. اینتل فوق رشتهای را همراه با ریزساختار «نهالم» بعد از غیاب آن در معماری هسته بازمعرفی کرد.
معماری بولدوزر AMD، تراشه FLEXFPU و Shared L2 چند رشتگی هستند اما هستههای عدد صحیح ماژول، تکرشتهای هستند، بنابراین این تنها یک پیادهسازی جزئی از اسامتی میباشد.
ریز ساختار «زِن» AMD, SMT دو روشی دارد.
معایب این سیستم
براساس طراحی و معماری پردازنده، چندرشتگی همزمان میتواند کارکرد را کاهش دهد. اگر هر یک از منابع به اشتراک گذاشته شده تنگناهایی برای کارایی باشند. منتقدان در مورد این موضوع با هم گفتگو کردهاند که بار قابل توجهی وجود دارد که به توسعه دهندگان نرمافزارها بهپذیراند که آنها مجبور هستند که چه چند رشتگی همزمان خوب باشد و چه بد، بر روی نرمافزارش در موقعیتهای مختلف و با اضافه کردن (جملات) منطقی به آن، آزمایش انجام دهند تا اگر کارایی را کاهش میدهد. آن را خاموش کنند (از دور خارج کنند). سیستم عاملهای نامناسب کنونی API خواستار این مقصود و برای جلوگیری از پردازش همراه با اولویت مختلف با گرفتن منابع از یکدیگر هستند.
همچنین در مورد پیادهسازی چند رشتگی همزمان کنونی، نگرانیهای امنیتی وجود دارد. پیادهسازی فوق رشتهای شرکت اینتل این آسیبپذیری را دارد که یک نرمافزار ممکن است کلید رمزنگاری آن از اجرای یک نرمافزار دیگر با پردازندهای مشابه توسط نظارت بر استفاده تراشه دزدیده شود.
جستارهای وابسته
منابع
- ↑ Wikipedia contributors, "Simultaneous multithreading,", December 16, 2012.