چندرشتگی همزمان

چندرشتگی همزمان یا اس‌ام‌تی (SMT) یک روش برای بهبود دادن بازدهی کل واحدهای پردازش مرکزی (سی‌پی‌یو) ابرمقیاس‌پذیر با چندرشتگی سخت‌افزار است. SMT اجازه می‌دهد چندین رشته مستقل به شکل بهتری از منابع فراهم‌شده توسط معماری‌های جدید پردازنده بهره ببرند.
جزئیات
نام چندرشتگی مبهم است، نه تنها چون چندین رشته بلکه چون چندین وظیفه (با جداول صفحه مختلف، سطح‌های وضعیت وظیفه مختلف، حلقه‌های حفاظت مختلف، اجازه‌های ورود و خروج مختلف و …) می‌توانند به‌طور هم‌زمان روی یک هسته سی‌پی‌یواجرا شوند. علی‌رغم اجراشدن روی یک هسته، آن‌ها کاملا از یکدیگر جدا و مستقل هستند. چندرشتگی از نظر مفهومی مشابه چندوظیفگی انحصاری است ولی در سطح رشته اجرا در پردازنده‌های ابرمقیاس‌پذیر جدید پیاده‌سازی شده‌است.
چندرشتگی هم‌زمان یکی از دو پیاده‌سازی اصلی چندرشتگی است، شکل دیگر چندرشتگی زمانی است (که همچنین با عنوان ابررشتگی شناخته می‌شود). در چندرشتگی زمانی، در هر سطح زمانی داده‌شده تنها یک رشته دستورالعمل‌ها قابل اجراست. در چندرشتگی همزمان، دستورات بیش از یک رشته در هر سطح زمانی داده‌شده قابل اجرا هستند. این، بدون تغییرات عمده‌ای نسبت به معماری پایه پردازنده انجام شده است:
ضمائم اصلی مورد نیاز شامل توانایی واکشی (حمل) دستورالعمل‌ها از چندرشتگی در یک دوره زمانی و یک فایل رجیستر (ثبت‌کننده) بزرگ‌تر برای نگه‌داری داده‌ها از طرف چندرشتگی است. تعداد رشته‌های متقارن (همزمان) توسط طراحان تراشه قابل تصمیم‌گیری است. دو رشته متقارن در هر هسته سی‌پی‌یو نوع رایج آن است اما بعضی از پردازنده‌ها ۸ رشته متقارن را در یک هسته در خود دارند
به دلیل آن‌که روش فنی راه‌حل بسیار سودمندی است و درگیری رو به افزایش اجتناب ناپذیر در به اشتراک‌گذاری منابع، اندازه‌گیری یا تایید اثربخشی راه حل می‌تواند دشوار باشد.
به‌هرحال اندازه‌گیری اثربخشی انرژی اس‌ام‌تی توسط بومی‌موازی و مدیریت میزان کار در تاریخ ازnm130 به nm32 در پیاده‌سازی اس‌ام‌تی شرکت intel به این رسیدند که در پیاده‌سازی در 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 خواستار این مقصود و برای جلوگیری از پردازش همراه با اولویت مختلف با گرفتن منابع از یکدیگر هستند.
همچنین در مورد پیاده‌سازی چندرشتگی هم‌زمان کنونی، نگرانی‌های امنیتی وجود دارد. پیاده‌سازی فوق رشته‌ای شرکت اینتل این آسیب‌پذیری را دارد که یک نرم‌افزار ممکن است کلید رمزنگاریش از اجرای یک نرم‌افزار دیگر با پردازنده‌ای مشابه توسط نظارت بر استفاده تراشه دزدیده شود.
چندپردازشی متقارن
چندرشته زمانی