چندریسمانی همزمان
چندریسمانی همزمان (به انگلیسی:Simultaneous multithreading یا SMT) روشی برای افزایش بازدهی کلی پردازندههایی که بیشتر از یک دستورالعمل را همزمان اجرا میکنند و به سوپراسکالر (به انگلیسی: superscalar) معروف هستند، همراه با «چند ریسمانی سختافزاری» است. این فناوری به ریسههای مستقل اجازه میدهد که از منابعی که در طراحی پردازنده در اختیار آنها قرار داده شدهاست، بهتر استفاده کنند.
جزئیات
نام چند رشتگی مبهم است چون چندین رشته و وظیفه (با جداول صفحهٔ مختلف، سطحهای وضعیت وظیفهٔ مختلف، حلقههای حفاظت مختلف، اجازههای ورود و خروج مختلف و …) میتوانند بهطور همزمان روی یک هستهٔ سیپییو اجرا شوند. علیرغم اجرا شدن روی یک هسته پردازنده، آنها کاملاً از یکدیگر جدا و مستقل هستند. چندرشتگی از نظر مفهومی مشابه چندوظیفه گی انحصاری است، ولی در سطح رشتهٔ اجرا در پردازندههای ابرمقیاسپذیر جدید پیادهسازی شدهاست.
چندرشتگی همزمان یکی از دو مورد از پیادهسازی اصلی چندرشتگی است و شکل دیگر آن چندرشتگی زمانی است. در چندرشتگی زمانی، در هر سطح زمانی داده شده، تنها یک رشتهٔ دستورالعملها قابل اجراست. در چندرشتگی همزمان، دستورهای بیش از یک رشته در هر سطح زمانی دادهشده قابل اجرا هستند. این، بدون تغییرات عمدهای نسبت به معماری پایهٔ پردازنده انجام شدهاست: ضمائم اصلی مورد نیاز، شامل توانایی واکشی (حمل) دستورالعملها از چندرشتگی در یک دوره زمانی و یک فایل رجیستر (ثبتکننده) بزرگتر برای نگهداری دادهها از طرف چندرشتگی است. تعداد رشتههای متقارن (همزمان)، توسط طراحان تراشه قابل تصمیمگیری است. دو رشته متقارن در هر هسته سیپییو نوع رایج آن است اما بعضی از پردازندهها ۸ رشته متقارن را در یک هسته در خود دارند.
به دلیل آن که روش فنی راهحل بسیار سودمندی است و درگیری رو به افزایش اجتنابناپذیر در اشتراکگذاری منابع، اندازهگیری یا تأیید اثربخشی راه حل میتواند دشوار باشد. بههرحال اندازهگیری اثربخشی انرژی اسامتی توسط بومیموازی و مدیریت میزان کار در تاریخ از nm130 به nm32 در پیادهسازی اسامتی شرکت اینتل به این رسیدند که در پیادهسازی در nm45 وnm 32، 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 است. در ۲۰۱۰، شرکت 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.