پردازنده های Hyper Threading یا Simultaneous Multithreading چی هستن؟
هسته هایی که ما در پردازنده ها میشناسیم ، به عنوان "هسته های فیزیکی" شناخته میشن . هر هسته ی فیزیکی ، حداقل دارای یک "هسته ی منطقی" هست . در واقع وقتی میگیم کدهای مون در هسته اجرا میشه ، یعنی در یک هسته ی منطقی اجرا میشه .
هسته ها ، 4 نوع حافظه ی رجیستر و حافظه ی کش L1 و L2 و L3 دارند (به ترتیب سرعت شون نام برده شدن) .
هر هسته ی فیزیکی ، حافظه ی رجیستری و حافظه ی کش l1 و l2 جداگانه ای برای خودش داره (بسته به طراحی و نسل پردازنده ها دارن) اما در هسته های منطقی بجز حافظه ی رجیستر (و در شرایطی هم حافظه ی کش L1) ، این حافظه ها مشترک هستند (یعنی حافظه ی کش L2 و در شرایطی حافظه ی کش L1 ، مشترک هستند) (البته بستگی به معماری پردازنده ، میتونه متفاوت باشه) .
حافظه ی کش l3 که برای کل هسته های فیزیکی هم مشترک هست .
اما برای اینکه پردازش سریعتر انجام بشه ، در بعضی از پردازنده ها ، درون هر هسته ی فیزیکی ، بجای اینکه فقط یک هسته ی منطقی تعبیه کنن ، دو تا هسته ی منطقی تعبیه کردند و از اونجایی هم که کدها در هر هسته ی منطقی اجرا میشه ، بنابراین در این نوع پردازنده ها ، هر هسته ی فیزیکی ، همزمان بجای اینکه فقط بتونه یک نخ را اجرا کنه ، میتونه همزمان دو نخ را اجرا کنه .
منتها تفاوتش با نخ هایی که در دو هسته ی فیزیکی مجزا اجرا میشن اینه که چون حافظه ی کش l2 (و در شرایطی هم کش L1) در دو هسته ی منطقی ای که در یک هسته ی فیزیکی هستند ، مشترک هستند ، زمانی که نیاز به خوندن یا نوشتن اطلاعات در این حافظه ی مشترک بصورت همزمان باشه ، یک هسته ی منطقی (که در یک هسته ی فیزیکی هست) ، منتظر میمونه تا کارِ اون هسته ی منطقیِ دیگه (که در همون هسته ی فیزیکی هست) تمام بشه و بعد اجرای کدهای نخ اش را ادامه بده .
بنابراین همین موضوع حافظه ی مشترک در دو هسته ی منطقی ای که در یک هسته ی فیزیکی هستند ، باعث میشه وقتی کدها(یی که در دو هسته ی منطی ای که در یک هسته ی فیزیکی قرار دارند) بجای اینکه کارایی و سرعت اجراشون 2 برابر بیشتر بشه ، فقط 30 درصد کارایی و سرعت شون افزایش پیدا میکنه (البته بین 12 تا نهایتا 50 درصد میتونه متفاوت باشه که معمولا بین 25 تا 30 درصد افزایش کارایی هست) .
لازم به ذکر هست که سوئیچ بین نخ ها در دو هسته ی منطقی ای که در یک هسته ی فیزیکی هست ، بخاطر همین حافظه ی مشترک و بنابراین تبادل سریعتر اطلاعات ، سریعتر انجام میشه .
به اینکه 2 هسته ی منطقی درون هر هسته ی فیزیکی تعبیه کنن (بجای اینکه فقط یک هسته ی منطقی درون هر هسته ی فیزیکی باشه) را اینتل اسم این نوع پردازنده اش را Hyper Threading (یا مختصرا HT) و AMD هم اسم این نوع پردازنده اش را Simultaneous Multithreading (یا مختصرا SMT) نامید .
بنابراین در یک پردازنده ای که 6 هسته ی فیزیکی با 12 هسته ی منطقی داره ، در یک لحظه میتونه 12 نخ بصورت همزمان اجرا بشه . اما این توانستن ، به این معنا نیست که به معنی واقعی کلمه ، این عمل قطعا و همیشه در حال اجرا شدن هست و همیشه و در همه ی لحظات ، 12 نخ میتونن اجرا بشن بخاطر همون قضیه ی حافظه ی مشترکی که گفته شد .