Hyper Threading در پردازنده ها چیست؟ Hyper-threading در پردازنده های اینتل چیست؟ حل همزمان وظایف مختلف

زمانی وجود داشت که ارزیابی عملکرد حافظه در زمینه فناوری Hyper-threading ضروری بود. ما به این نتیجه رسیدیم که تأثیر آن همیشه مثبت نیست. هنگامی که کوانتوم زمان آزاد ظاهر شد، تمایل به ادامه تحقیقات و بررسی فرآیندهای در حال انجام با دقت چرخه‌ها و بیت‌های ماشین وجود داشت. نرم افزار طراحی خود.

پلتفرم تحقیق شده

هدف آزمایش - لپ تاپ ایسوس N750JK با پردازنده اینتل Core i7-4700HQ. سرعت ساعت 2.4 گیگاهرتز قابل افزایش در حالت اینتل افزایش توربوتا 3.4 گیگاهرتز 16 گیگابایت رم DDR3-1600 (PC3-12800) نصب شده که در حالت دو کاناله اجرا می شود. سیستم عامل - ویندوز مایکروسافت 8.1 64 بیت.

شکل 1 پیکربندی سکوی مورد مطالعه.

پردازنده پلتفرم مورد مطالعه شامل 4 هسته است که با فعال شدن فناوری Hyper-Threading، پشتیبانی سخت افزاری از 8 رشته یا پردازنده های منطقی را فراهم می کند. این اطلاعات توسط سیستم عامل پلت فرم منتقل می شود سیستم عاملاز طریق جدول ACPI MADT (جدول توضیحات چندگانه APIC). از آنجایی که پلتفرم فقط یک کنترلر RAM دارد، هیچ SRAT (جدول قرابت منابع سیستم) وجود ندارد که نزدیکی هسته های پردازنده به کنترل کننده های حافظه را اعلام کند. بدیهی است که لپ‌تاپ مورد مطالعه یک پلتفرم NUMA نیست، اما سیستم عامل، به منظور یکسان سازی، آن را به عنوان یک سیستم NUMA با یک دامنه، همانطور که با خط NUMA Nodes = 1 نشان می‌دهد، در نظر می‌گیرد. واقعیتی که برای آزمایش‌های ما اساسی است این است که حافظه کش داده سطح اول دارای اندازه 32 کیلوبایت برای هر یک از چهار هسته است. دو پردازنده منطقی که هسته یکسانی دارند، حافظه نهان L1 و L2 را به اشتراک می گذارند.

عملیات مورد بررسی قرار گرفت

ما وابستگی سرعت خواندن بلوک داده به اندازه آن را بررسی خواهیم کرد. برای انجام این کار، ما سازنده ترین روش، یعنی خواندن عملوندهای 256 بیتی با استفاده از دستور VMOVAPD AVX را انتخاب می کنیم. در نمودارها، محور X اندازه بلوک را نشان می دهد و محور Y سرعت خواندن را نشان می دهد. در مجاورت نقطه X، که با اندازه حافظه نهان سطح اول مطابقت دارد، انتظار داریم یک نقطه عطف ببینیم، زیرا عملکرد باید پس از خروج بلوک پردازش شده از حافظه پنهان کاهش یابد. در آزمایش ما، در مورد multithreading، هر یک از 16 رشته شروع شده با یک محدوده آدرس جداگانه کار می کند. برای کنترل فناوری Hyper-Threading در یک برنامه، هر رشته از تابع SetThreadAffinityMask API استفاده می کند که ماسکی را تنظیم می کند که در آن هر پردازنده منطقی مربوط به یک بیت است. یک مقدار بیت اجازه استفاده از پردازنده مشخص شده توسط رشته مشخص را می دهد، یک مقدار صفر آن را ممنوع می کند. برای 8 پردازنده منطقی پلت فرم مورد مطالعه، ماسک 11111111b امکان استفاده از همه پردازنده ها را می دهد (Hyper-Threading فعال است)، ماسک 01010101b امکان استفاده از یک پردازنده منطقی را در هر هسته (Hyper-Threading غیرفعال است).

از اختصارات زیر در نمودارها استفاده می شود:

MBPS (مگابایت در ثانیه)مسدود کردن سرعت خواندن بر حسب مگابایت در ثانیه;

CPI (ساعت در هر دستورالعمل)تعداد چرخه در هر دستورالعمل;

TSC (شماره زمان)شمارنده چرخه پردازنده.

توجه: ممکن است سرعت کلاک رجیستر TSC با سرعت کلاک پردازنده هنگام اجرا در حالت Turbo Boost مطابقت نداشته باشد. این باید در هنگام تفسیر نتایج در نظر گرفته شود.

در سمت راست نمودارها، یک Dump هگزادسیمال از دستورالعمل هایی که بدنه چرخه عملیات هدف انجام شده در هر یک از رشته های برنامه یا 128 بایت اول این کد را تشکیل می دهند، مشاهده می شود.

تجربه شماره 1 یک رشته



شکل 2 خواندن در یک رشته

حداکثر سرعت 213563 مگابایت بر ثانیه است. نقطه عطف در اندازه بلوک حدود 32 کیلوبایت رخ می دهد.

تجربه شماره 2 16 رشته در 4 پردازنده، Hyper-Threading غیرفعال است



شکل 3 خواندن در شانزده موضوع. تعداد پردازنده های منطقی مورد استفاده چهار عدد می باشد

Hyper-threading غیرفعال است. حداکثر سرعت 797598 مگابایت بر ثانیه است. نقطه عطف در اندازه بلوک حدود 32 کیلوبایت رخ می دهد. همانطور که انتظار می رفت، در مقایسه با خواندن در یک رشته، سرعت از نظر تعداد هسته های کار حدود 4 برابر افزایش یافت.

تجربه شماره 3. 16 رشته در 8 پردازنده، Hyper-Threading فعال است



شکل 4 خواندن در شانزده موضوع. تعداد پردازنده های منطقی مورد استفاده هشت عدد است

Hyper-threading فعال شد. حداکثر سرعت 800722 مگابایت بر ثانیه، در نتیجه گنجاندن Hyper-Threading، تقریباً افزایش نیافته است. نکته منفی بزرگ این است که نقطه عطف در اندازه بلوک حدود 16 کیلوبایت رخ می دهد. فعال کردن Hyper-Threading کمی حداکثر سرعت را افزایش داد، اما اکنون کاهش سرعت در نصف اندازه بلوک رخ می دهد - حدود 16 کیلوبایت، بنابراین سرعت متوسط ​​به طور قابل توجهی کاهش یافته است. این تعجب آور نیست، هر هسته حافظه نهان L1 خود را دارد، در حالی که پردازنده های منطقی در همان هسته آن را به اشتراک می گذارند.

نتیجه گیری

عملیات بررسی شده در یک پردازنده چند هسته ای به خوبی مقیاس می شود. دلیل آن این است که هر یک از هسته ها دارای حافظه نهان سطح اول و دوم خود هستند، اندازه بلوک هدف با اندازه حافظه کش قابل مقایسه است و هر یک از رشته ها با محدوده آدرس های خاص خود کار می کنند. برای اهداف آکادمیک، ما چنین شرایطی را در یک آزمون مصنوعی ایجاد کردیم و متوجه شدیم که برنامه های کاربردی واقعی معمولاً از بهینه سازی ایده آل فاصله دارند. اما گنجاندن Hyper-Threading حتی در این شرایط نیز تأثیر منفی داشت، با افزایش جزئی در پیک سرعت، کاهش قابل توجهی در سرعت پردازش بلوک‌هایی که اندازه آن در محدوده 16 تا 32 کیلوبایت است، رخ می‌دهد.

در گذشته در مورد فناوری SMT (Simultaneous Multi-threading) صحبت کردیم که در پردازنده های اینتل. و اگرچه در ابتدا با نام رمز "Jackson Technology" به عنوان یک گزینه ممکن و قابل قبول ایجاد شد، اینتل به طور رسمی فناوری خود را در انجمن IDF در پاییز گذشته اعلام کرد. نام رمز جکسون با Hyper-Threading مناسب تر جایگزین شده است. بنابراین، برای درک چگونگی عملکرد فناوری جدید، به دانش اولیه نیاز داریم. یعنی باید بدانیم thread چیست، این نخ ها چگونه اجرا می شوند. چرا برنامه کار می کند؟ پردازنده چگونه می داند که چه عملیاتی و بر روی چه داده هایی باید انجام دهد؟ تمام این اطلاعات در کد کامپایل شده برنامه در حال اجرا موجود است. و به محض اینکه برنامه هر دستوری، هر داده ای را از کاربر دریافت کرد، رشته ها بلافاصله به پردازنده ارسال می شوند که در نتیجه آن کاری را که باید در پاسخ به درخواست کاربر انجام دهد، انجام می دهد. از دیدگاه پردازنده، نخ مجموعه ای از دستورالعمل هایی است که باید اجرا شوند. هنگامی که در Quake III Arena مورد اصابت یک پرتابه قرار می گیرید یا زمانی که یک سند را باز می کنید مایکروسافت ورد، مجموعه ای از دستورالعمل ها را به پردازنده ارسال می کند که باید آنها را اجرا کند.

پردازنده دقیقا می داند که این دستورالعمل ها را از کجا دریافت کند. یک رجیستر به ندرت به نام برنامه شمارنده (PC) برای این منظور طراحی شده است. این ثبات به مکانی در حافظه اشاره می کند که دستور بعدی که باید اجرا شود در آن ذخیره می شود. هنگامی که یک thread به پردازنده ارسال می شود، آدرس حافظه thread در این شمارنده برنامه بارگذاری می شود تا پردازنده دقیقاً بداند که اجرا را از کجا شروع کند. پس از هر دستور، مقدار این ثبات افزایش می یابد. کل این فرآیند تا زمانی که thread خاتمه یابد اجرا می شود. در پایان اجرای thread، شمارنده برنامه با آدرس به روز می شود دستورالعمل بعدیباید اجرا شود. رشته ها می توانند یکدیگر را قطع کنند، در حالی که پردازنده مقدار شمارنده برنامه را در پشته به خاطر می آورد و مقدار جدیدی را در شمارنده بارگذاری می کند. اما محدودیت در این فرآیند هنوز وجود دارد - فقط یک رشته را می توان در هر واحد زمان اجرا کرد.

یک راه شناخته شده برای حل این مشکل وجود دارد. این شامل استفاده از دو پردازنده است - اگر یک پردازنده بتواند یک رشته را در یک زمان اجرا کند، آنگاه دو پردازنده می توانند از قبل دو رشته را در یک واحد زمان اجرا کنند. توجه داشته باشید که این روش ایده آل نیست. با بسیاری از مشکلات دیگر همراه است. برخی از آنها احتمالاً قبلاً با آنها آشنا هستید. اول اینکه چندین پردازنده همیشه گرانتر از یک پردازنده هستند. ثانیا، مدیریت دو پردازنده نیز چندان آسان نیست. علاوه بر این، تقسیم منابع بین پردازنده ها را فراموش نکنید. به عنوان مثال، قبل از معرفی چیپست AMD 760MP، تمامی پلتفرم های x86 با پشتیبانی از چند پردازنده، کل پهنای باند گذرگاه سیستم را بین تمامی پردازنده های موجود به اشتراک می گذاشتند. اما اشکال اصلی متفاوت است - برای چنین کاری، هم برنامه و هم خود سیستم عامل باید از چند پردازش پشتیبانی کنند. توانایی توزیع اجرای چندین رشته در منابع کامپیوتری اغلب به عنوان چند رشته ای شناخته می شود. در عین حال، سیستم عامل باید از multithreading نیز پشتیبانی کند. همچنین برنامه ها باید چند رشته ای باشند تا بتوان به بهترین نحو از منابع کامپیوتری استفاده کرد. این را در نظر داشته باشید وقتی رویکرد دیگری برای حل مشکل چند رشته ای در نظر می گیریم، تکنولوژی جدید Hyper Threading از اینتل.

بهره وری هرگز کافی نیست

همیشه در مورد کارایی صحبت های زیادی وجود دارد. و نه تنها در یک محیط شرکتی، در برخی از پروژه های جدی، بلکه در زندگی روزمره. آنها می گویند که هوموساپین ها فقط تا حدی از توانایی های مغز خود استفاده می کنند. همین امر در مورد پردازنده های رایانه های مدرن نیز صدق می کند.

به عنوان مثال، پنتیوم 4 را در نظر بگیرید. این پردازنده در مجموع دارای هفت واحد اجرایی است که دو مورد از آنها می توانند با سرعت دو برابر کار کنند - دو عملیات (میکرو عملیات) در هر ساعت. اما در هر صورت، برنامه ای را پیدا نمی کنید که بتواند تمام این دستگاه ها را با دستورالعمل ها پر کند. برنامه های معمولی با محاسبات اعداد صحیح ساده به پایان می رسند و چند عملیات بارگیری و ذخیره سازی داده ها و عملیات ممیز شناور کنار گذاشته می شوند. سایر برنامه ها (به عنوان مثال، مایا) عمدتاً دستگاه را برای عملیات ممیز شناور بارگذاری می کنند.

برای نشان دادن وضعیت، بیایید پردازنده ای را با سه واحد اجرایی تصور کنیم: یک واحد منطقی حسابی (عدد صحیح - ALU)، یک واحد ممیز شناور (FPU) و یک واحد بار/ذخیره (برای نوشتن و خواندن داده ها از حافظه). همچنین، فرض کنیم که پردازنده ما می تواند هر عملیاتی را در یک سیکل ساعت انجام دهد و می تواند عملیات را در هر سه دستگاه به طور همزمان توزیع کند. بیایید تصور کنیم که رشته ای از دستورالعمل های زیر برای اجرا به این پردازنده ارسال می شود:

شکل زیر میزان حجم کار دستگاه های اجرایی را نشان می دهد (خاکستری نشان دهنده یک دستگاه بیکار، آبی نشان دهنده دستگاه در حال کار):

بنابراین، می توانید ببینید که تنها 33٪ از تمام محرک ها در هر چرخه استفاده می شود. این بار، FPU کاملاً بلا استفاده باقی می ماند. طبق گفته اینتل، اکثر برنامه های IA-32 x86 از 35 درصد واحدهای اجرایی پردازنده پنتیوم 4 استفاده نمی کنند.

یک رشته دیگر را تصور کنید، آن را برای اجرا به پردازنده ارسال کنید. این بار شامل بارگیری داده ها، افزودن و ذخیره داده ها خواهد بود. آنها به ترتیب زیر اجرا می شوند:

و باز هم حجم کار دستگاه های اجرایی فقط 33 درصد است.

یک راه خوب برای خروج از این وضعیت، موازی سازی سطح آموزش (ILP) خواهد بود. در این مورد، چندین دستورالعمل به طور همزمان اجرا می شوند، زیرا پردازنده قادر است چندین واحد اجرای موازی را به طور همزمان پر کند. متأسفانه اکثر برنامه های x86 به خوبی با ILP سازگار نیستند. بنابراین باید راه های دیگری برای افزایش بهره وری یافت. بنابراین، به عنوان مثال، اگر سیستم از دو پردازنده به طور همزمان استفاده می کند، می توان همزمان دو رشته را به طور همزمان اجرا کرد. این راه حل موازی سطح نخ (TLP) نامیده می شود. به هر حال، این راه حل بسیار گران است.

چه راه های دیگری برای افزایش قدرت اجرایی وجود دارد؟ پردازنده های مدرنمعماری x86؟

Hyper Threading

مشکل استفاده ناقص از دستگاه های اجرایی دلایل متعددی دارد. به طور کلی، اگر پردازنده نتواند داده ها را با سرعت مورد نظر دریافت کند (این به دلیل ناکافی بودن است پهنای باندگذرگاه سیستم و گذرگاه حافظه)، در این صورت واحدهای اجرایی به اندازه کارآمدی مورد استفاده قرار نخواهند گرفت. علاوه بر این، دلیل دیگری وجود دارد - عدم وجود موازی در سطح دستورالعمل در بیشتر رشته های دستورات اجرا شده.

در حال حاضر، اکثر سازندگان سرعت پردازنده ها را با افزایش فرکانس ساعت و اندازه کش بهبود می بخشند. البته از این طریق می توانید عملکرد را افزایش دهید، اما همچنان از پتانسیل پردازنده به طور کامل استفاده نمی شود. اگر بتوانیم چندین رشته را همزمان اجرا کنیم، می‌توانیم از پردازنده بسیار کارآمدتر استفاده کنیم. این دقیقاً ماهیت فناوری Hyper-Threading است.

Hyper-Threading نام فناوری است که خارج از دنیای x86 وجود داشت، فناوری SMT. ایده پشت این فناوری ساده است. یک پردازنده فیزیکی برای سیستم عامل به عنوان دو پردازنده منطقی به نظر می رسد و سیستم عامل هیچ تفاوتی بین یک پردازنده SMT و دو پردازنده معمولی نمی بیند. در هر دو مورد، سیستم عامل رشته ها را طوری هدایت می کند که گویی یک سیستم دو پردازنده است. علاوه بر این، تمام مشکلات در سطح سخت افزار حل می شود.

در پردازنده‌ای با Hyper-Threading، هر پردازنده منطقی مجموعه‌ای از ثبات‌های خاص خود را دارد (شامل یک شمارنده برنامه جداگانه) و برای اینکه فناوری را پیچیده نکند، اجرای همزمان دستورالعمل‌های fetch/decode را در دو رشته اجرا نمی‌کند. یعنی چنین دستوراتی به صورت متوالی اجرا می شوند. به موازات آن، فقط دستورات معمولی اجرا می شوند.

این فناوری به طور رسمی در پاییز گذشته در انجمن توسعه دهندگان اینتل معرفی شد. این فناوری در پردازنده Xeon نشان داده شد، جایی که رندر با استفاده از Maya انجام شد. در این تست، Xeon با Hyper-Threading 30 درصد بهتر از Xeon استاندارد عمل کرد. این یک افزایش عملکرد خوب است، اما جالب‌ترین چیز این است که این فناوری قبلاً در هسته‌های Pentium 4 و Xeon وجود دارد، فقط خاموش است.

این فناوری هنوز منتشر نشده است، اما کسانی از شما که یک Xeon 0.13 میکرومتری خریداری کرده‌اید و این پردازنده را روی مادربردهایی با بایوس به‌روز شده نصب کرده‌اید، احتمالاً از دیدن گزینه‌ای برای فعال/غیرفعال کردن Hyper-Threading در بایوس شگفت‌زده خواهید شد.

در حال حاضر، اینتل گزینه Hyper-Threading را به طور پیش فرض غیرفعال می کند. با این حال، برای فعال کردن آن، به سادگی بایوس را به روز کنید. همه اینها به ایستگاه های کاری و سرورها مربوط می شود، چه در مورد بازار کامپیوترهای شخصی، این شرکت هیچ برنامه ای برای این فناوری در آینده نزدیک ندارد. اگرچه این امکان وجود دارد، سازندگان مادربرد گزینه ای برای فعال کردن Hyper-Threading با استفاده از بایوس اختصاصی ارائه می دهند.

بسیار باقی می ماند علاقه بپرسچرا اینتل می خواهد این گزینه را غیرفعال بگذارد؟

غرق شدن در فناوری

آن دو موضوع از نمونه های قبلی را به خاطر دارید؟ بیایید این بار فرض کنیم که پردازنده ما به Hyper-Threading مجهز شده است. بیایید ببینیم اگر بخواهیم این دو رشته را همزمان اجرا کنیم چه اتفاقی می‌افتد:

مانند قبل، کادرهای آبی نشان دهنده اجرای دستور نخ اول و کادرهای سبز نشان دهنده اجرای دستورالعمل نخ دوم هستند. مستطیل‌های خاکستری دستگاه‌های اجرایی استفاده‌نشده را نشان می‌دهند و مستطیل‌های قرمز تضاد را نشان می‌دهند، زمانی که دو دستورالعمل مختلف از رشته‌های مختلف به طور همزمان به یک دستگاه رسیدند.

پس ما چه می بینیم؟ موازی سازی در سطح موضوعات شکست خورد - واحدهای اجرایی حتی با کارایی کمتری مورد استفاده قرار گرفتند. پردازنده به جای اجرای موازی رشته ها، آنها را آهسته تر از زمانی که آنها را بدون Hyper-Threading اجرا می کرد، اجرا می کند. دلیل آن بسیار ساده است. ما در تلاش بودیم تا دو موضوع بسیار مشابه را همزمان اجرا کنیم. به هر حال، هر دوی آنها شامل عملیات بارگذاری/ذخیره و عملیات اضافه می‌شوند. اگر بخواهیم یک برنامه "عدد صحیح" و یک برنامه ممیز شناور را به صورت موازی اجرا کنیم، وضعیت بسیار بهتری خواهیم داشت. همانطور که می بینید، اثربخشی Hyper-Threading به شدت به نوع بار روی رایانه شخصی بستگی دارد.

در حال حاضر، اکثر کاربران رایانه شخصی از رایانه خود به همان روشی که در مثال ما توضیح داده شد استفاده می کنند. پردازنده بسیاری از عملیات بسیار مشابه را انجام می دهد. متأسفانه، وقتی صحبت از همان نوع عملیات می شود، مشکلات بیشتری در مدیریت وجود دارد. شرایطی وجود دارد که دیگر دستگاه های اجرایی از نوع مورد نیاز وجود ندارد و متاسفانه دستورالعمل ها دو برابر معمول است. در بیشتر موارد، اگر پردازنده‌های کامپیوتر خانگی از فناوری Hyper-Threading استفاده می‌کردند، عملکرد از این افزایش نمی‌یابد و حتی ممکن است 0-10٪ کاهش یابد.

با این حال، در ایستگاه های کاری، Hyper-Threading فرصت های بیشتری برای افزایش عملکرد دارد. اما از طرف دیگر، همه چیز به استفاده خاص از رایانه بستگی دارد. ایستگاه کاری می تواند به معنای هر چیزی باشد، از یک کامپیوتر گرافیکی سه بعدی پیشرفته تا یک کامپیوتر با بارگذاری سنگین.

بیشترین سود عملکرد از استفاده از Hyper-Threading در مشاهده شده است برنامه های کاربردی سرور. این عمدتا به دلیل طیف گسترده ای از عملیات ارسال شده به پردازنده است. سرور پایگاه داده ای که از تراکنش ها استفاده می کند با فعال بودن گزینه Hyper-Threading می تواند 20 تا 30 درصد سریعتر اجرا شود. دستاوردهای عملکرد کمی کمتر در سرورهای وب و سایر زمینه ها مشاهده می شود.

حداکثر کارایی از Hyper-Threading

آیا فکر می کنید اینتل فقط Hyper-Threading را برای خط پردازنده های سرور خود توسعه داده است؟ البته که نه. اگر اینطور بود، آنها فضایی را برای پردازنده های دیگرشان هدر نمی دادند. در واقع، معماری NetBurst استفاده شده در پنتیوم 4 و زئون بهترین گزینه برای یک هسته با پشتیبانی از چند رشته ای همزمان است. بیایید دوباره پردازنده را تصور کنیم. این بار یک دستگاه اجرایی دیگر خواهد داشت - دستگاه عدد صحیح دوم. بیایید ببینیم اگر رشته ها توسط هر دو دستگاه اجرا شوند چه اتفاقی می افتد:

با استفاده از دستگاه عدد صحیح دوم، تنها درگیری تنها در آخرین عملیات رخ داد. پردازنده تئوری ما تا حدودی شبیه به پنتیوم 4 است. دارای سه دستگاه عدد صحیح (دو ALU و یک دستگاه عدد صحیح آهسته برای جابجایی های چرخه ای) است. مهمتر از آن، هر دو دستگاه عدد صحیح پنتیوم 4 قادر به کار با سرعت دو برابر اجرای دو میکرو عملیات در هر ساعت هستند. و این به نوبه خود به این معنی است که هر یک از این دو دستگاه Pentium 4/Xeon عدد صحیح می‌تواند آن دو اضافه را از رشته‌های مختلف در یک چرخه ساعت انجام دهد.

اما این مشکل ما را حل نمی کند. اضافه کردن واحدهای اجرایی اضافی به پردازنده به منظور افزایش کارایی از استفاده از Hyper-Threading، منطقی نیست. از نظر فضای اشغال شده روی سیلیکون، این بسیار گران خواهد بود. در عوض، اینتل پیشنهاد کرد که توسعه دهندگان برنامه ها را برای Hyper-Threading بهینه کنند.

با استفاده از دستور HALT می توان یکی از پردازنده های منطقی را متوقف کرد و در نتیجه عملکرد برنامه هایی را که از Hyper-Threading بهره نمی برند، بهبود بخشید. بنابراین، برنامه کندتر اجرا نمی شود، در عوض یکی از پردازنده های منطقی متوقف می شود و سیستم روی یک پردازنده منطقی اجرا می شود - عملکرد مانند رایانه های تک پردازنده خواهد بود. سپس، هنگامی که برنامه در نظر گرفت که از Hyper-Threading در عملکرد بهره خواهد برد، پردازشگر منطقی دوم به سادگی کار خود را از سر می گیرد.

ارائه‌ای در وب‌سایت اینتل وجود دارد که دقیقاً نحوه برنامه‌نویسی برای استفاده حداکثری از Hyper-Threading را توضیح می‌دهد.

نتیجه گیری

اگرچه همه ما از شنیدن شایعاتی در مورد استفاده از Hyper-Threading در هسته‌های تمام پنتیوم 4/Xeon‌های مدرن بسیار خوشحال شدیم، اما همچنان عملکرد رایگان آن برای همه موارد نخواهد بود. دلایل روشن است و این فناوری هنوز راه درازی در پیش دارد تا شاهد اجرای Hyper-Threading بر روی همه پلتفرم‌ها، از جمله رایانه‌های خانگی باشیم. و با حمایت توسعه دهندگان، این فناوری قطعاً می تواند متحد خوبی برای پنتیوم 4، زئون و پردازنده های نسل آینده اینتل باشد.

با توجه به محدودیت‌ها و فناوری بسته‌بندی موجود، Hyper-Threading انتخاب هوشمندانه‌تری برای بازار مصرف‌کننده به نظر می‌رسد تا مثلاً رویکرد SledgeHammer AMD - این پردازنده‌ها از دو هسته استفاده می‌کنند. و تا زمانی که فناوری‌های بسته‌بندی مانند لایه ایجاد شده بدون ضربه کامل شوند، هزینه توسعه پردازنده‌های چند هسته‌ای ممکن است بسیار بالا باشد.

جالب است ببینید که AMD و Intel در چند سال گذشته چقدر متفاوت شده اند. از این گذشته، زمانی AMD عملاً پردازنده های اینتل را کپی کرد. اکنون شرکت ها رویکردهای اساسی متفاوتی را برای پردازنده های آینده برای سرورها و ایستگاه های کاری ایجاد کرده اند. AMD در واقع کارهای زیادی انجام داده است یک راه طولانی. و اگر واقعاً از دو هسته در پردازنده های Sledge Hammer استفاده شود، از نظر کارایی چنین راه حلی کارآمدتر از Hyper-Threading خواهد بود. در واقع، در این مورد، علاوه بر دو برابر شدن تعداد تمام محرک ها، مشکلاتی که در بالا توضیح دادیم برطرف می شود.

Hyper-Threading هنوز برای مدتی وارد بازار اصلی رایانه های شخصی نخواهد شد، اما با پشتیبانی خوب توسعه دهندگان، می تواند فناوری بعدی باشد که از سطح سرور به رایانه های شخصی اصلی کاهش می یابد.

Hyper-Threading نامیده می شود.

واژه شناسی

اصطلاحات در دنیای فناوری می تواند گیج کننده و آسان باشد
فراموش شده است، بنابراین بیایید با روشن کردن معنای اصطلاحات شروع کنیم،
که در اینجا استفاده خواهم کرد. یک پردازنده چند هسته ای است
یک پردازنده حاوی بیش از یک هسته در یک مدار مجتمع.
چند تراشه به معنای ترکیب چند تراشه با هم است.
چند پردازنده به معنای چند پردازنده مجزا، با هم
روی همین سیستم کار میکنه و البته CPU به معنای مرکزی است
پردازنده ای که یک یا چند هسته دارد که هر کدام دارای
دستگاه اجرا (که تمام ریاضیات از آن انجام می شود).

Hyper Threading

بنابراین فناوری hyper-threading چیست؟ اصطلاح Hyper-threading
استفاده شده توسط اینتلبرای تعیین فناوری آنها، که
به سیستم عامل اجازه می دهد تا یک هسته CPU را به عنوان دو هسته در نظر بگیرد.
بنابراین، سیستم عامل با چنین هسته ای به همان روشی کار می کند
هر تراشه چند هسته ای، ارسال چندین
فرآیندها هر چند با این فناوری می توان سیستم را مجبور کرد
درک یک هسته به عنوان سه یا چند هسته، پیچیدگی معماری
اینتل را محدود به انتشار هسته های ابر رشته ای کرد که می تواند
فقط به عنوان دو هسته درک شود.

اینجا هیچ تمرکزی وجود ندارد. اینتل یک معماری توسعه داده است
یک تراشه برای پردازش فرآیندها به همان روش چند هسته ای
پردازنده ها در واقع، اینتل به شدت مورد استفاده قرار می گیرد
منطقه هسته CPU و استفاده از این بخش ها توسط چندین مورد تضمین شده است
فرآیندهای همزمان از آنجایی که این مناطق از هسته جدا هستند
(آنها روی یک قالب هستند اما از مناطق مختلفی استفاده می کنند
این کریستال)، این فرآیندها با یکدیگر تداخل ندارند. چنین
هسته های سازگار با hyperthreading کاملاً یکسان نیستند
همان چیز پردازنده های چند هسته ای; هر فرآیندی نمی تواند به طور همزمان
با فرآیند دیگری اجرا شود، باید از یک قسمت جداگانه استفاده کند
هسته برای عملیات آنها

Hyper-threading نمونه ای از همزمان است
چند رشته ای (Simultaneous Multi-Threading - SMT). SMT یکی است
از دو نوع چند رشته ای نوع دیگر موقت نامیده می شود
چند رشته ای (Temporal Multi-Threading - TMT). با هسته TMT
پردازنده دستورات را ابتدا از یک رشته و سپس از آن اجرا می کند
دیگری، و سپس دوباره از اول، و بنابراین به نظر کاربر که
دو رشته به طور همزمان در حال اجرا هستند، در حالی که در واقع موضوعات فقط به اشتراک گذاشته می شوند
زمان CPU بین خودشان. با SMT، دستورالعمل های هر رشته می تواند
به طور همزمان اجرا شود می توان از این فناوری ها استفاده کرد
ارتقای کارایی.

کاربران همچنین باید بدانند که همه سیستم عامل ها پشتیبانی نمی کنند
تکنولوژی hyper-threading به گفته اینتل، سیستم عامل های زیر از
مایکروسافت کاملاً برای پشتیبانی فناوری بهینه شده است
هایپر نخ:

    Microsoft Windows XP Professional Edition

    نسخه خانگی مایکروسافت ویندوز XP

    مایکروسافت ویندوز ویستا Home Basic

    Microsoft Windows Vista Home Premium

    Microsoft Windows Vista Home Ultimate

    Microsoft Windows Vista Home Business

و همانطور که اینتل می گوید، سیستم عامل های زیر به طور کامل نیستند
بهینه سازی شده برای فناوری هایپر رشته، و بنابراین این
فناوری باید در تنظیمات BIOS غیرفعال شود:

    مایکروسافت ویندوز 2000 (همه نسخه ها)

    مایکروسافت ویندوز NT 4.0

    مایکروسافت ویندوز ME

    مایکروسافت ویندوز 98

    مایکروسافت ویندوز 98 SE

گاهی اوقات برنامه هایی مانند فایرفاکس،
مشکلاتی در مورد هایپر نخ وجود دارد. بهترین راهاین
مشکل اجرای برنامه در حالت سازگاری برای ویندوز 98 است.
برای انجام این کار، روی نماد برنامه کلیک راست کنید،
به Properties بروید، compatibility را انتخاب کنید و کادر را علامت بزنید
"این برنامه را در حالت سازگاری اجرا کنید
حالت سازگاری)"، ویندوز 98 را انتخاب کنید. این فناوری را غیرفعال می کند
بیش از حد نخ برای این نرم افزارزیرا ویندوز 98 ندارد
از hyper-threading پشتیبانی می کند.

مزایای Hyper-Threading

هایپر نخ مزایای زیادی دارد. اینتل
ادعا می کند که تکراری است مناطق خاصهسته CPU افزایش می یابد
اندازه هسته حدود 5 درصد است، اما همچنان افزایش می دهد
عملکرد 30 درصد نسبت به سایر مشابه ها
هسته های پردازشگر بدون hyperthreading.

معایب Hyper-Threading

تبلیغات

//
//]]-->



اگرچه هسته‌های CPU با رشته‌ای بیش از حد کامل ارائه نمی‌شوند
مزایای پردازنده های چند هسته ای، آنها هنوز هم قابل توجه هستند
مزایایی نسبت به پردازنده های تک هسته ای معمولی قطعا،
همیشه خوب است بدانید معایب فناوری چیست،
قبل از استفاده از آن یکی از معایب بسیاری از برنامه ها این است
سطح بالامصرف انرژی. از آنجایی که تمام نواحی هسته نیاز دارند
روشن (حتی در حالت آماده به کار)، مصرف برق کلی
هسته های hyper-threading و همچنین تمام هسته های دارای SMT فعال در بالا. بدون
حداکثر استفاده از بهبود سرعت ارائه شده
هسته هایپر رشته ای، فقط هسته ای خواهد بود که بیشتر مصرف می کند
برق برای بسیاری از موقعیت ها، از جمله مزارع سرور، و تلفن همراه
کامپیوترها، چنین افزایش مصرف انرژی نامطلوب است.

علاوه بر این، اگر یک هسته CPU بیش از حد رشته ای را با یک هسته غیرهایپر رشته ای مقایسه کنیم.
کرنل، شاهد افزایش قابل توجهی در سرریز حافظه پنهان خواهید بود. ARM
ادعا می کند که این افزایش می تواند تا 42 درصد باشد. مقایسه کن
مقدار با پردازنده های چند هسته ای که سرریز حافظه پنهان کاهش می یابد
37 درصد و واقعاً مهم خواهد شد.

اکنون، پس از خواندن اطلاعات مربوط به تمام این کاستی ها، شما،
شاید تصمیم بگیرید که این هسته های پر رشته بی فایده هستند. و شما درست وارد هستید
برخی موقعیت ها به عنوان مثال، اگر مصرف برق اصلی باشد
جنبه ای در موقعیت شما، سپس هسته های ابر رشته ای (یا هر نوع دیگری
با پشتیبانی SMT) نامطلوب خواهد بود. با این حال، حتی اگر مصرف
قدرت در لیست نیازهای شما بالاست، هسته‌های ابر رشته‌ای
ممکن است گزینه مناسبی باشد بیایید یک مزرعه سرور را به عنوان مثال در نظر بگیریم.
به طور معمول، مصرف انرژی مزارع سرور در نظر گرفته می شود (این
صورتحساب ها می تواند هزاران دلار در ماه باشد!). با این حال، در
در مزارع سرورهای امروزی، بسیاری از سرورها مجازی هستند.
بنابراین، ممکن است شما چندین مورد داشته باشید سرورهای مجازی
در یک سرور فیزیکی، در حالی که الزامات عملکرد
این سرورها بالاتر از حد متوسط ​​نیستند. ممکن است که این نوع
پیکربندی اطمینان حاصل می کند که به اندازه کافی از CPU استفاده می شود
استفاده از حداکثر میزان کارایی هسته های پر رشته،
در حالی که مصرف برق به حداقل کاهش می یابد.

مثل همیشه، مهم است که به وضوح تمام شرایط کاری قبل را در نظر بگیرید
از اینکه تصمیم به استفاده از این فناوری بگیرید. تکنولوژی بدون نقص
عملا اتفاق نمی افتد. به طور کلی خوب یا بد
فقط یک تکنولوژی خاص در رابطه با موقعیت شما
پس از بررسی دقیق تمام مزایا و معایب آن.
Hyper-threading فقط یک فناوری است. برای اضافی
برای اطلاع از این موضوع، خواندن دو مقاله قبلی من را توصیه می کنم. ابتدا مقاله ای در مورد , که نحوه دسترسی پردازنده های چند هسته ای به حافظه کش را توضیح می دهد. دوم، مقاله من در مورد میل پردازنده،
که در مورد تعامل بین برنامه ها و
چندین هسته اگر در مورد مقاله من سوالی دارید،
آنها را برای من از طریق پست بفرستید و من سعی خواهم کرد در اسرع وقت پاسخ دهم.

راسل
هیچکاک (راسل هیچکاک) به عنوان مشاور در وظایف خود کار می کند
شامل شبکه سخت افزار(سخت افزار شبکه ای)، کنترل
سیستم ها و آنتن ها راسل همچنین مقالات فنی در مورد مختلف می نویسد

بسیاری از پردازنده های اینتل شامل ماژول هایی با پشتیبانی از فناوری Hyper-Threading هستند که مطابق با ایده توسعه دهندگان، باید به افزایش عملکرد تراشه و سرعت بخشیدن به رایانه شخصی به طور کلی کمک کند. این راه حل از یک شرکت آمریکایی چه ویژگی هایی دارد؟ چگونه می توانید از Hyper-Threading استفاده کنید؟

مبانی فناوری

بیایید نگاهی به جزئیات کلیدی در مورد Hyper-Threading بیندازیم. این فناوری چیست؟ توسط اینتل توسعه داده شد و اولین بار در سال 2001 به عموم معرفی شد. هدف از ایجاد آن افزایش عملکرد سرورها بود. اصل اصلی اجرا شده در Hyper-Threading، توزیع محاسبات پردازنده به چندین رشته است. علاوه بر این، حتی اگر فقط یک هسته روی نوع ریز مدار مربوطه نصب شده باشد، این امکان وجود دارد (به نوبه خود، اگر 2 یا بیشتر از آنها وجود داشته باشد، و رشته های موجود در پردازنده قبلاً توزیع شده باشند، این فناوری با موفقیت این مکانیسم را تکمیل می کند).

اطمینان از عملکرد تراشه اصلی رایانه شخصی در چندین رشته با ایجاد کپی از حالت های معماری در طول محاسبات انجام می شود. در این حالت از همان مجموعه منابع روی تراشه استفاده می شود. اگر برنامه از قابلیت مناسب استفاده کند، عملاً عملیات مهم بسیار سریعتر انجام می شود. همچنین مهم است که فناوری در سوال، از سیستم ورودی / خروجی کامپیوتر - BIOS پشتیبانی می کند.

فعال کردن Hyper-Threading

اگر پردازنده نصب شده در رایانه شخصی از استاندارد مناسب پشتیبانی می کند، معمولاً به طور خودکار فعال می شود. اما در برخی موارد باید این کار را به صورت دستی انجام دهید اقدامات لازمبرای به کار انداختن فناوری Hyper-Threading. چگونه آن را فعال کنیم؟ بسیار ساده.

باید وارد رابط اصلی BIOS شوید. برای انجام این کار، در همان ابتدای بوت رایانه، باید DEL، گاهی اوقات - F2، F10، کمتر - کلیدهای دیگر را فشار دهید، اما مورد دلخواه همیشه در یکی از خطوط متن نمایش داده شده روی صفحه بلافاصله پس از روشن کردن رایانه شخصی ظاهر می شود. در رابط BIOS، باید مورد Hyper-Threading را پیدا کنید: در نسخه های سیستم I / O که از آن پشتیبانی می کنند، معمولاً در یک مکان برجسته قرار دارد. پس از انتخاب گزینه مناسب، باید Enter را فشار داده و آن را فعال کنید و آن را به عنوان Enabled علامت بزنید. اگر این حالتاز قبل تنظیم شده است، سپس فناوری Hyper-Threading در حال اجرا است. می توانید از تمام مزایای آن استفاده کنید. پس از فعال کردن فناوری در تنظیمات، باید با انتخاب Save and Exit Setup، تمام ورودی های بایوس را ذخیره کنید. پس از آن، رایانه در حالتی که پردازنده با پشتیبانی Hyper-Theading کار می کند، دوباره راه اندازی می شود. به طور مشابه، Hyper-Threading غیرفعال است. برای انجام این کار، گزینه دیگری را در مورد مربوطه انتخاب کنید - غیرفعال شده و تنظیمات را ذخیره کنید.

پس از یادگیری نحوه فعال کردن Hyper-Threading و غیرفعال کردن آن این تکنولوژیبیایید نگاهی دقیق تر به ویژگی های آن بیندازیم.

CPU با پشتیبانی از Hyper Threading

طبق برخی منابع، اولین پردازنده ای که مفهوم این شرکت بر روی آن پیاده سازی شد، Intel Xeon MP است که به نام Foster MP نیز شناخته می شود. این تراشه در تعدادی از اجزای معماری مشابه Pentium 4 است که بعداً فناوری مورد بحث را نیز پیاده سازی کرد. پس از آن، تابع محاسبات چند رشته ای بر روی پیاده سازی شد پردازنده های سرور Xeon با هسته Prestonia.

اگر در مورد شیوع فعلی Hyper-Threading صحبت کنیم - کدام "طرفداران" از آن حمایت می کنند؟ در میان محبوب ترین ریز مدارها از این نوع- آنهایی که به خانواده Core و Xeon تعلق دارند. همچنین اطلاعاتی مبنی بر پیاده سازی الگوریتم های مشابه در پردازنده هایی مانند Itanium و Atom وجود دارد.

پس از مطالعه اطلاعات اولیه در مورد Hyper-Threading، پردازنده های با پشتیبانی آن، بیایید به قابل توجه ترین حقایق در مورد تاریخچه توسعه فناوری نگاه کنیم.

تاریخچه توسعه

همانطور که در بالا اشاره کردیم، اینتل مفهوم مورد بحث را در سال 2001 به عموم مردم نشان داد. اما اولین قدم ها در ایجاد فناوری در اوایل دهه 90 برداشته شد. مهندسان شرکت آمریکاییمتوجه شدیم که منابع پردازنده های رایانه شخصی هنگام انجام تعدادی از عملیات به طور کامل استفاده نمی شود.

همانطور که کارشناسان اینتل محاسبه کردند، در حین کار کاربر بر روی رایانه شخصی، ریز مدار به طور فعال برای فواصل قابل توجهی - تقریباً بیشتر اوقات - حدود 30٪ استفاده نمی شود. نظرات کارشناسان در مورد این رقم بسیار متفاوت است - کسی آن را به وضوح دست کم گرفته می داند، دیگران کاملاً با تز توسعه دهندگان آمریکایی موافق هستند.

با این حال، اکثر متخصصان فناوری اطلاعات موافق بودند که حتی اگر 70 درصد از ظرفیت پردازنده بیکار نباشد، اما مقدار بسیار قابل توجهی از آنها.

وظیفه اصلی توسعه دهندگان

اینتل تصمیم گرفته است این وضعیت را از طریق یک رویکرد کیفی جدید برای اطمینان از کارایی تراشه های اصلی رایانه شخصی اصلاح کند. پیشنهاد شد فناوری ایجاد شود که به استفاده فعال تر از قابلیت های پردازنده ها کمک کند. در سال 1996، متخصصان اینتل توسعه عملی خود را آغاز کردند.

بر اساس مفهوم شرکت آمریکایی، پردازشگر که داده‌های یک برنامه را پردازش می‌کند، می‌تواند منابع غیرفعال را به سمت برنامه کاربردی دیگر (یا جزئی از برنامه فعلی، اما دارای ساختار متفاوت و نیاز به استفاده از منابع اضافی) هدایت کند. الگوریتم مربوطه همچنین تعامل موثر با سایر اجزای سخت‌افزار رایانه شخصی را فرض کرد رم، چیپست و همچنین برنامه ها.

اینتل موفق شد مشکل را حل کند. در ابتدا این فناوری Willamette نام داشت. در سال 1999 وارد معماری برخی از پردازنده ها شد و تست آن آغاز شد. به زودی این فناوری نام مدرن خود را دریافت کرد - Hyper-Threading. سخت است بگوییم دقیقاً چه چیزی بود - یک تغییر نام تجاری ساده یا تنظیمات اساسی در پلتفرم. حقایق بیشتر در مورد ظهور فناوری در عموم و اجرای آن در مدل های مختلفپردازنده های اینتل از قبل برای ما شناخته شده اند. یکی از نام‌های توسعه که امروزه رایج است، فناوری Hyper-Threading است.

جنبه های سازگاری با تکنولوژی

پشتیبانی از فناوری Hyper-Threading چقدر در سیستم عامل ها اجرا می شود؟ می توان اشاره کرد که اگر ما در مورد مدرن صحبت می کنیم نسخه های ویندوزدر این صورت هیچ مشکلی برای کاربر برای استفاده کامل از مزایای فناوری اینتل Hyper-Threading وجود نخواهد داشت. البته، همچنین بسیار مهم است که سیستم I/O از فناوری پشتیبانی کند - ما در بالا در مورد این صحبت کردیم.

عوامل نرم افزاری و سخت افزاری

با توجه به نسخه های قدیمی سیستم عامل - ویندوز 98، NT و XP نسبتا قدیمی، شرط لازمسازگاری Hyper-Threading - پشتیبانی از ACPI. اگر در سیستم عامل پیاده سازی نشود، تمام جریان های محاسباتی که توسط ماژول های مربوطه تشکیل می شوند توسط کامپیوتر شناسایی نمی شوند. توجه داشته باشید که ویندوز XP به طور کلی استفاده از مزایای فناوری مورد نظر را تضمین می کند. همچنین بسیار مطلوب است که الگوریتم‌های چند رشته‌ای در برنامه‌هایی که توسط مالک رایانه شخصی استفاده می‌شوند، پیاده‌سازی شوند.

گاهی اوقات ممکن است به رایانه شخصی نیاز داشته باشید - اگر پردازنده هایی با پشتیبانی Hyper-Threading روی آن نصب کنید، به جای پردازنده هایی که در ابتدا روی آن بودند و با این فناوری سازگار نیستند. با این حال، همانطور که در مورد سیستم عامل ها، اگر کاربر یک رایانه شخصی مدرن یا حداقل قطعات سخت افزاری مربوط به اولین پردازنده ها را داشته باشد، مشکل خاصی وجود نخواهد داشت. Hyper Threading، همانطور که در بالا اشاره کردیم، در خط Core پیاده سازی شده است و چیپ ست های سازگار با آن در مادربردها به طور کامل از عملکردهای مربوطه ریز مدار پشتیبانی می کنند.

معیارهای شتاب

اگر کامپیوتر در سطح قطعات سخت افزاری و نرم افزاری با Hyper-Threading سازگار نباشد، این فناوری در تئوری حتی می تواند کار آن را کند کند. این وضعیت باعث شده است که برخی از متخصصان فناوری اطلاعات در مورد چشم انداز راه حل اینتل تردید کنند. آنها به این نتیجه رسیدند که این یک جهش تکنولوژیکی نیست، بلکه یک حرکت بازاریابی است که زیربنای مفهوم Hyper Threading است، که به دلیل معماری آن، قادر به افزایش سرعت قابل توجهی در رایانه شخصی نیست. اما تردیدهای منتقدان به سرعت توسط مهندسان اینتل برطرف شد.

بنابراین، شرایط اساسی برای استفاده موفقیت آمیز از فناوری:

پشتیبانی از Hyper-Threading توسط سیستم I/O؛

سازگاری مادربردبا یک پردازنده از نوع مربوطه؛

پشتیبانی از یک فناوری توسط سیستم عامل و برنامه خاصی که روی آن اجرا می شود.

اگر در دو نقطه اول مشکل خاصی وجود نداشته باشد، از نظر سازگاری برنامه ها با Hyper-Threading، ممکن است باز هم برخی از همپوشانی ها وجود داشته باشد. اما می توان اشاره کرد که اگر یک برنامه، به عنوان مثال، کار با پردازنده های دو هسته ای را پشتیبانی می کند، با فناوری اینتل تقریباً تضمین شده است.

حداقل مطالعاتی وجود دارد که افزایش عملکرد برنامه های سازگار با ریزمدارهای دو هسته ای را در حدود 15-18٪ در صورتی که ماژول های Hyper Threading اینتل در پردازنده کار کنند، تأیید می کند. ما قبلاً می دانیم که چگونه آنها را غیرفعال کنیم (در صورتی که کاربر در مورد توصیه استفاده از فناوری شک دارد). اما احتمالاً دلایل ملموس بسیار کمی برای ظاهر آنها وجود دارد.

سودمندی عملی Hyper-Threading

آیا فناوری مورد بحث تأثیر محسوسی بر اینتل گذاشته است؟ در این مورد نظرات مختلفی وجود دارد. اما بسیاری از مردم خاطرنشان می کنند که فناوری Hyper-Threading به قدری محبوب شده است که این راه حل برای بسیاری از تولید کنندگان سیستم های سرور ضروری شده است و همچنین مورد استقبال کاربران عادی رایانه شخصی قرار گرفت.

پردازش داده های سخت افزاری

مزیت اصلی این فناوری این است که در قالب سخت افزاری پیاده سازی شده است. یعنی بخش اصلی محاسبات در داخل پردازنده بر روی ماژول‌های خاص انجام می‌شود و نه به صورت الگوریتم‌های نرم‌افزاری که به سطح هسته اصلی ریز مدار منتقل می‌شوند - که به معنای کاهش است. عملکرد کلیکامپیوتر. به طور کلی، به گفته کارشناسان فناوری اطلاعات، مهندسان اینتل موفق شدند مشکلی را که در ابتدای توسعه فناوری شناسایی کرده بودند حل کنند - تا عملکرد پردازنده را کارآمدتر کنند. در واقع، همانطور که آزمایش‌ها نشان داده‌اند، هنگام حل بسیاری از کارهایی که عملاً برای کاربر مهم هستند، استفاده از Hyper-Threading باعث شده است تا سرعت کار به میزان قابل توجهی افزایش یابد.

می توان اشاره کرد که در بین 4 ریز مداری که به ماژول های پشتیبانی برای فناوری مورد نظر مجهز شده بودند بسیار کارآمدتر از اولین تغییرات کار می کردند. این تا حد زیادی در توانایی رایانه شخصی برای عملکرد در حالت چندوظیفه ای واقعی - زمانی که چندین نوع مختلف برنامه های کاربردی ویندوزو بسیار نامطلوب است که به دلیل افزایش مصرف منابع سیستم توسط یکی از آنها، سرعت سایرین کاهش یابد.

حل همزمان وظایف مختلف

بنابراین، پردازنده‌هایی که از Hyper-Threading پشتیبانی می‌کنند، بهتر از ریزمدارهایی که با آن سازگار نیستند، برای راه‌اندازی همزمان مرورگر، پخش موسیقی و کار با اسناد سازگار هستند. البته تمام این مزایا در عمل تنها در صورتی توسط کاربر احساس می شود که نرم افزار و قطعات سخت افزاری رایانه شخصی به اندازه کافی با این حالت کار سازگار باشد.

تحولات مشابه

Hyper-Threading تنها فناوری طراحی شده برای بهبود عملکرد رایانه شخصی از طریق محاسبات چند رشته ای نیست. او آنالوگ دارد.

برای مثال، پردازنده‌های POWER5 که توسط IBM عرضه شده‌اند، از multithreading نیز پشتیبانی می‌کنند. یعنی هر یک (در مجموع 2 عنصر متناظر روی آن نصب شده است) می تواند وظایفی را در 2 رشته انجام دهد. بنابراین، ریز مدار 4 جریان محاسبات را به طور همزمان پردازش می کند.

AMD نیز دارد نتایج عالیکار در زمینه مفاهیم چند رشته ای. بنابراین، مشخص است که معماری بولدوزر از الگوریتم‌هایی مشابه Hyper-Threading استفاده می‌کند. یکی از ویژگی های راه حل AMD این است که هر یک از رشته ها بلوک های پردازنده جداگانه را پردازش می کنند. هنگامی که سطح دوم رایج باقی می ماند. مفاهیم مشابهی در معماری Bobcat توسعه یافته توسط AMD، که برای لپ‌تاپ‌ها و رایانه‌های شخصی کوچک سازگار است، پیاده‌سازی شده است.

البته، آنالوگ های مستقیم مفهوم از AMD، IBM و Intel را می توان بسیار مشروط در نظر گرفت. و همچنین رویکردهای طراحی معماری پردازنده ها به طور کلی. اما اصول پیاده‌سازی شده در فناوری‌های مربوطه را می‌توان کاملاً مشابه در نظر گرفت و اهداف تعیین‌شده توسط توسعه‌دهندگان از نظر بهبود کارایی عملکرد ریزمدارها، اگر نگوییم یکسان، در اصل بسیار نزدیک هستند.

اینها حقایق کلیدی در مورد جالب ترین فناوری اینتل هستند. ما مشخص کرده ایم که چیست، چگونه Hyper-Threading را فعال کنیم یا برعکس، آن را غیرفعال کنیم. موضوع احتمالاً این است استفاده عملیمزایای آن، که می توان با اطمینان از اینکه کامپیوتر در سخت افزار و اجزای نرم افزاراز فناوری پشتیبانی می کند.

15.03.2013

فناوری Hyper-Threading بیش از 10 سال پیش در پردازنده‌های اینتل ظاهر شد که ترسناک بود. و در این لحظهاین یک عنصر ضروری از پردازنده های Core است. با این حال، سوال در مورد نیاز به HT در بازی ها هنوز به طور کامل درک نشده است. تصمیم گرفتیم آزمایشی انجام دهیم تا ببینیم گیمرها به Core i7 نیاز دارند یا بهتر است با Core i5 کنار بیایند. و همچنین بدانید که Core i3 چگونه از پنتیوم بهتر است.


فناوری Hyper-Threading که توسط اینتل توسعه یافته و به طور انحصاری در پردازنده‌های این شرکت استفاده می‌شود و با پنتیوم 4 به یاد ماندنی شروع می‌شود، اکنون چیزی مسلم است. به تعداد قابل توجهی از پردازنده های نسل فعلی و قبلی مجهز شده است. همچنین در آینده نزدیک مورد استفاده قرار خواهد گرفت.

و باید پذیرفت که فناوری Hyper-Threading مفید است و تأثیر مثبتی بر عملکرد دارد، در غیر این صورت اینتل از آن برای قرار دادن پردازنده های خود در خط استفاده نمی کرد. و نه به عنوان یک عنصر جزئی، بلکه یکی از مهم ترین، اگر نگوییم مهم ترین. برای اینکه مشخص شود در مورد چه چیزی صحبت می کنیم، جدولی تهیه کرده ایم که ارزیابی اصل تقسیم بندی پردازنده های اینتل را آسان می کند.


همانطور که می بینید، تفاوت های بسیار کمی بین پنتیوم و Core i3 و همچنین بین Core i5 و Core i7 وجود دارد. در واقع، مدل‌های i3 و i7 با پنتیوم و i5 تنها در اندازه حافظه نهان سطح سوم در هر هسته متفاوت هستند (البته فرکانس ساعت را در نظر نمی‌گیریم). جفت اول 1.5 مگابایت و دومی 2 مگابایت است. این تفاوت نمی تواند به طور اساسی بر عملکرد پردازنده ها تأثیر بگذارد، زیرا تفاوت در اندازه کش بسیار کوچک است. به همین دلیل است که Core i3 و Core i7 از فناوری Hyper-Threading پشتیبانی می کنند، که عنصر اصلی است که به این پردازنده ها اجازه می دهد به ترتیب نسبت به Pentium و Core i5 مزیت عملکردی داشته باشند.

در نتیجه، حافظه نهان کمی بزرگتر و پشتیبانی از Hyper-Threading به شما این امکان را می دهد که قیمت های بسیار بالاتری را برای پردازنده ها تعیین کنید. به عنوان مثال ، پردازنده های خط Pentium (حدود 10 هزار تنگه) تقریباً دو برابر ارزان تر از Core i3 (حدود 20 هزار تنگه) هستند و علیرغم این واقعیت که از نظر فیزیکی در سطح سخت افزار کاملاً یکسان هستند و بر این اساس هزینه یکسانی دارند. تفاوت قیمت Core i5 (حدود 30 هزار تنگه) و Core i7 (حدود 50 هزار تنگه) نیز بسیار زیاد است، البته در مدل های جوان تر کمتر از دو برابر.


چنین افزایش قیمتی چقدر توجیه دارد؟ Hyper-Threading چه سود واقعی ایجاد می کند؟ پاسخ مدتهاست که شناخته شده است: افزایش می تواند متفاوت باشد - همه اینها به برنامه کاربردی و بهینه سازی آن بستگی دارد. تصمیم گرفتیم بررسی کنیم که HT در بازی‌ها چه می‌کند، به‌عنوان یکی از درخواست‌کننده‌ترین برنامه‌های خانگی. علاوه بر این، این آزمایش افزودنی عالی به مواد قبلی ما در مورد تأثیر تعداد هسته های پردازنده بر عملکرد بازی خواهد بود.

قبل از اینکه به سراغ تست ها برویم، بیایید (خوب، یا دریابیم) فناوری Hyper-Threading چیست. همانطور که خود اینتل سال ها پیش هنگام معرفی این فناوری گفت، هیچ چیز پیچیده ای در مورد آن وجود ندارد. در واقع، تنها چیزی که برای معرفی HT در سطح فیزیکی لازم است این است که نه یک مجموعه رجیستر و یک کنترل کننده وقفه، بلکه دو تا را به یک هسته فیزیکی اضافه کنیم. که در پردازنده های پنتیوم 4، این عناصر اضافی تعداد ترانزیستورها را تنها پنج درصد افزایش دادند. در هسته‌های آیوی بریج امروزی (و همچنین در سندی بریج و هاسول آینده)، عناصر اضافی حتی برای چهار هسته حتی تا 1 درصد باعث افزایش دای نمی‌شوند.


رجیسترهای اضافی و یک کنترل کننده وقفه، همراه با پشتیبانی نرم افزاری، به سیستم عامل اجازه می دهد تا نه یک هسته فیزیکی، بلکه دو هسته منطقی را ببیند. در عین حال، پردازش داده‌های دو جریانی که توسط سیستم ارسال می‌شوند همچنان بر روی همان هسته، اما با برخی ویژگی‌ها ادامه می‌یابد. کل پردازنده هنوز در اختیار یک رشته باقی می ماند، اما به محض اینکه برخی از بلوک های CPU آزاد و بیکار شدند، بلافاصله در اختیار رشته دوم قرار می گیرند. به لطف این امکان استفاده همزمان از تمام واحدهای پردازنده و در نتیجه افزایش کارایی آن وجود داشت. همانطور که خود اینتل گفته است، افزایش عملکرد در شرایط ایده آل می تواند تا 30 درصد برسد. درست است، این ارقام تنها برای پنتیوم 4 با خط لوله بسیار طولانی آن صادق است، پردازنده های مدرن کمتر از HT بهره می برند.

اما شرایط ایده آل برای Hyper-Threading همیشه وجود ندارد. و از همه مهمتر بدترین نتیجه کار HT عدم افزایش عملکرد نیست بلکه کاهش آن است. یعنی تحت شرایط خاصی، عملکرد یک پردازنده با HT نسبت به یک پردازنده بدون HT کاهش می یابد، زیرا سربار تقسیم نخ و صف به طور قابل توجهی از سود حاصل از محاسبه رشته های موازی فراتر می رود، که در این مورد خاص امکان پذیر است. و چنین مواردی بسیار رایج تر از آنچه اینتل می خواهد است. علاوه بر این، چندین سال استفاده از Hyper-Threading باعث بهبود وضعیت نشد. این امر به ویژه برای بازی هایی که بسیار پیچیده هستند و به هیچ وجه از نظر محاسبه داده ها، برنامه های کاربردی غیر متعارف هستند صادق است.

برای پی بردن به تأثیر Hyper-Threading بر عملکرد بازی، ما دوباره از پردازنده آزمایشی Core i7-2700K با رنج طولانی خود استفاده کردیم و با غیرفعال کردن هسته ها و فعال / غیرفعال کردن HT چهار پردازنده را همزمان شبیه سازی کردیم. به طور معمول، می توان آنها را Pentium (2 هسته، HT خاموش)، Core i3 (2 هسته، HT روشن)، Core i5 (4 هسته، HT خاموش) و Core i7 (4 هسته، HT روشن) نامید. چرا مشروط؟ اول از همه، زیرا با توجه به برخی ویژگی ها آنها با محصولات واقعی مطابقت ندارند. به ویژه، غیرفعال کردن هسته ها منجر به کاهش متناظر در حجم حافظه نهان سطح سوم نمی شود - حجم آن برای همه 8 مگابایت است. و علاوه بر این، تمام پردازنده های "شرطی" ما در فرکانس یکسان 3.5 گیگاهرتز کار می کنند که هنوز توسط همه پردازنده های اینتل به دست نیامده است.


با این حال، این حتی برای بهتر است، زیرا به لطف تغییر ناپذیری همه پارامترهای مهم، ما قادر خواهیم بود بدون هیچ گونه رزروی به تأثیر واقعی Hyper-Threading بر عملکرد بازی پی ببریم. و درصد تفاوت عملکرد بین پنتیوم "شرطی" ما و Core i3 نزدیک به تفاوت بین پردازنده های واقعی خواهد بود، مشروط بر اینکه فرکانس ها برابر باشند. همچنین نباید خجالت آور باشد که ما از پردازنده Sandy Bridge استفاده می کنیم، زیرا آزمایش های کارایی ما که می توانید در مقاله "عملکرد خالی - بررسی کارایی ALU و FPU" بخوانید، نشان داد که تأثیر Hyper-Threading در آخرین نسل های پردازنده های Core بدون تغییر باقی مانده است. به احتمال زیاد مرتبط مواد داده شدههمچنین برای پردازنده های Haswell آینده در دسترس خواهد بود.

خوب، به نظر می رسد که تمام سؤالات مربوط به روش آزمایش، و همچنین ویژگی های عملکرد فناوری Hyper-Threading، مورد بحث قرار گرفته است، و بنابراین زمان آن رسیده است که به جالب ترین چیز - تست ها برویم.

در آزمایشی که در آن تأثیر تعداد هسته‌های پردازنده بر عملکرد بازی را مطالعه کردیم، متوجه شدیم که 3DMark 11 در مورد عملکرد CPU کاملاً آرام است و حتی روی یک هسته نیز کاملاً کار می‌کند. Hyper-Threading همان نفوذ "قدرتمند" را داشت. همانطور که می بینید، آزمایش مطلقاً متوجه تفاوت های پنتیوم و Core i7 نمی شود، نه به ذکر مدل های متوسط.

مترو 2033

اما مترو 2033 به وضوح متوجه ظهور Hyper-Threading شد. و واکنش منفی نشان داد! بله، درست است: فعال کردن HT در این بازی تأثیر منفی بر عملکرد دارد. البته یک تاثیر کوچک - 0.5 فریم در ثانیه با چهار هسته فیزیکی و 0.7 با دو هسته. اما این واقعیت دلایل زیادی برای گفتن این موضوع دارد که در مترو 2033 پنتیوم از Core i3 سریعتر است و Core i5 بهتر از Core i7 است. در اینجا تأیید این واقعیت است که Hyper-Threading نه همیشه و نه در همه جا کارایی خود را نشان نمی دهد.

Crysis 2

این بازی نتایج بسیار جالبی را نشان داد. اول از همه، ما متذکر می شویم که تأثیر Hyper-Threading به وضوح در پردازنده های دو هسته ای قابل مشاهده است - Core i3 تقریباً 9 درصد از Pentium بهتر عمل کرد که برای این بازی بسیار زیاد است. پیروزی اچ تی و اینتل؟ واقعاً نه، زیرا Core i7 هیچ پیشرفتی نسبت به Core i5 ارزان‌تر نشان نداد. اما یک توضیح منطقی برای این وجود دارد - Crysis 2 نمی داند که چگونه از بیش از چهار جریان داده استفاده کند. به همین دلیل، شاهد افزایش خوبی در دو هسته ای با HT هستیم - بالاخره چهار رشته، هرچند منطقی، بهتر از دو هستند. از طرف دیگر، جایی برای قرار دادن رشته های Core i7 اضافی وجود نداشت، چهار هسته فیزیکی در آنجا کافی بود. بنابراین، با توجه به نتایج این آزمایش، می‌توان به تأثیر مثبت HT در Core i3 اشاره کرد که در اینجا به طرز محسوسی بهتر از پنتیوم است. اما در میان Core i5 چهار هسته ای دوباره راه حل معقول تری به نظر می رسد.

میدان جنگ 3

در اینجا نتایج بسیار عجیب است. اگر در آزمایش تعداد هسته‌ها، میدان نبرد نمونه‌ای از افزایش میکروسکوپی اما خطی بود، پس گنجاندن Hyper-Threading نتایج را به آشوب کشاند. در واقع می توان گفت که Core i3 با دو هسته و HT خود از همه بهتر بود حتی از Core i5 و Core i7 جلوتر. البته عجیب است، اما در عین حال، Core i5 و Core i7 دوباره در یک سطح قرار گرفتند. چه چیزی این را توضیح می دهد، روشن نیست. به احتمال زیاد روش تست در این بازی در اینجا نقش داشته است که خطاهای بزرگتری نسبت به بنچمارک های استاندارد می دهد.

در آخرین آزمایش، F1 2011 خود را به عنوان یکی از بازی هایی نشان داد که به شدت به تعداد هسته ها انتقاد می کنند و در این مورد با تأثیر عالی بر عملکرد فناوری Hyper-Threading دوباره شگفت زده شد. و دوباره، مانند Crysis 2، گنجاندن HT در پردازنده‌های دو هسته‌ای بسیار خوب بود. به تفاوت بین Core i3 شرطی ما و Pentium نگاه کنید - بیش از دو برابر است! شما به وضوح می بینید که دو هسته بازی بسیار کم است و در عین حال کد آن به خوبی موازی شده است که تأثیر شگفت انگیزی دارد. از سوی دیگر، شما نمی توانید چهار هسته فیزیکی را شکست دهید - Core i5 به طور قابل توجهی سریعتر از Core i3 است. اما Core i7 باز هم مانند بازی های قبلی هیچ چیز برجسته ای را در پس زمینه Core i5 نشان نداد. دلیل یکسان است - بازی نمی تواند از بیش از 4 رشته استفاده کند و سربار HT عملکرد Core i7 را به زیر سطح Core i5 کاهش می دهد.

یک جنگجوی قدیمی بیشتر از اینکه یک جوجه تیغی به یک تی شرت نیاز دارد به Hyper-Threading نیاز ندارد - تأثیر آن به هیچ وجه به اندازه F1 2011 یا Crysis 2 نیست. در عین حال، ما هنوز توجه می کنیم که فعال کردن HT در یک پردازنده دو هسته ای 1 فریم اضافی به همراه داشت. البته این کافی نیست که بگوییم Core i3 بهتر از پنتیوم است. حداقل، این بهبود به وضوح با تفاوت قیمت این پردازنده ها مطابقت ندارد. و تفاوت قیمت بین Core i5 و Core i7 حتی ارزش یادآوری را ندارد ، زیرا پردازنده بدون پشتیبانی HT دوباره سریعتر شده است. و به طور قابل توجهی سریعتر - 7 درصد. چه بخواهیم چه نخواهیم، ​​دوباره این واقعیت را بیان می کنیم که چهار رشته برای این بازی حداکثر است و بنابراین HyperThreading در این مورد به Core i7 کمک نمی کند، بلکه تداخل دارد.