سازندگان پردازنده‌های کامپیوتری، به‌طور پیوسته محصولاتی با تعداد هسته و رشته‌ بیشتری را نسبت به گذشته معرفی می‌کنند. در حالی که چند سال پیش پردازنده‌های کامپیوتری تنها با یک هسته (Core) و یک رشته (Thread) به بازار عرضه می‌شدند. هم‌اکنون، پردازنده‌هایی قدرتمندی با ۸، ۱۲، ۱۶  یا تعداد بیشتری رشته در دسترس خریداران قرار دارند. اما مفهوم رشته در پردازنده‌ها چیست و این فاکتور چه اهمیتی در انتخاب یک پردازنده دارد؟

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

رشته cpu

هسته پردازنده چیست؟

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

در همین رابطه بخوانید:

- تاریخچه پردازنده های کامپیوتر و معرفی انواع CPU های PC
مقایسه پردازنده موبایل و دسکتاپ

پردازش موازی دستورات

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

معنی Thread

تصویر فوق به خوبی عملکرد یک روند پردازشی برای سه دستور را نشان می‌دهد. پردازش دستورات در زمان T-0 آغاز شده و هر سه دستور به‌طور همزمان پردازش می‌شوند. در نهایت در زمان T-2  پردازش دستورات پایان می‌یابد. به کمک این روش می‌توان دستورات متعددی را به‌طور همزمان پردازش کرد.

رشته پردازشی چیست؟

یک رشته پرادازشی را می‌توان کوتاه‌ترین توالی دستورات مورد نیاز برای انجام یک وظیفه (Task) محاسباتی تعریف کرد. به عبارت ساده، رشته‌ها به عنوان بخشی از فرایند پردازش، امکان انجام همزمان چندین کار را می‌دهند که این امکان با مفاهیم انجام همزمان دستورات در هسته‌ها متفاوت است..

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

در همین رابطه بخوانید:

- مقایسه i7 ،Core i9 و i5 ؛ کدام پردازنده اینتل برای شما مناسب است؟
رده بندی بهترین پردازنده های موبایل در سال 2022

هر هسته در پردازنده قابلیت تبدیل شدن به دو رشته پردازشی را دارد؛ در واقع می‌توان یک پردازنده 4 هسته‌ای را به پردازنده‌ای با 8 ترد تشبیه کرد و این روند برای دیگر پردازنده‌ها نیز به شرط فراهم کردن شرایط توسط تولیدکننده پردازنده، صادق است. فراموش نکنید که ترد یا رشته یک واحد مجازی است و عملاً بخشی در Die پردازنده برای رشته پیدا نخواهید کرد. 

تاثیر رشته‌ها و هسته‌ها بر عملکرد کامپیوتر

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

از طرفی توان مصرفی پردازنده با افزایش یا کاهش تعداد رشته‌ و هسته‌ رابطه مستقیمی دارد. یعنی پردازنده‌هایی که هسته‌های بیشتری دارند، توان مصرفی بیشتری نیز خواهند داشت.

چند نخی و چند وظیفه ای

 چندرشته‌ای یا Multithreading چیست؟

چندرشته‌‌ای (Multithreading)، روشی است که امکان اجرای وظایف متعدد یک دستور به‌طور همزمان را امکان‌پذیر می‌کند. این مفهوم، به دستورات متداولی اشاره دارد که چندین رشته را در سیستم‌عامل اجرا می‌کنند و می‌تواند چندین پردازش سیستمی را نیز شامل گردد.

مالتی تردینگ چگونه کار می‌کند؟

اغلب پردازنده‌های مدرن امروزی از قابلیت مولتی‌تردینگ پشتیبانی می‌کنند. زمانی که یک اپلیکیشن را بر روی دستگاه (گوشی هوشمند یا کامپیوتر) خود اجرا می‌کنید که به واکشی (Fetch) داده‌ها از شبکه اینترنت نیاز دارد، بخش نمایش محتوای اپلیکیشن با یک پیغام یا تصویر یک چرخنده (لودینگ یا در حالت بارگذاری) جایگزین می‌شود تا زمانی که داده‌ها دریافت و نمایش داده شوند. در این حالت می‌توان گفت که در پس زمینه دو رشته وجود دارد؛رشته مربوط به واکشی داده‌ها از شبکه اینترنت و رشته مربوط به رندرینگ رابط گرافیکی (GUI) که تصویر چرخنده را نمایش می‌دهد. هر دو رشته یکی پس از دیگری اجرا می‌شوند تا حس اجرای همزمان را در مخاطبان ایجاد کنند.

هسته و رشته چه تفاوتی با یکدیگر دارند؟

همانطور که در بخش‌های قبلی نیز عنوان شد هسته و رشته علی‌رغم مفاهیم نزدیک و اینکه در بیشتر اوقات در کنار هم استفاده می‌شوند، عملکرد و رویکرد متفاوتی دارند. در حالت کلی می‌توان پارامترهای رشته و هسته را مانند جدول زیر با هم مقایسه کرد:

Daria BondXiaomi Poco X4 Pro 5GSamsung Galaxy A34Xiaomi Redmi Note 11 ProMotorola Moto G72Xiaomi Redmi Note 12 Pro 4G
شبکهGSM / HSPA / LTE / 5GGSM / HSPA / LTE / 5GGSM / HSPA / LTE / 5GGSM / HSPA / LTEGSM / HSPA / LTEGSM / HSPA / LTE
تاریخ رونمایی2023, 16 July2022, February 282023, March 142022, January 262022, September 292023, March 03
ابعاد8 x 74 x163164.2 x 76.1 x 8.1 میلی‌متر161.3 x 78.1 x 8.2 میلی‌متر 164.2 x 76.1 x 8.1 میلی‌متر 160.5 x 74.4 x 7.9 میلی‌متر 164.2 x 76.1 x 8.1 میلی‌متر
وزن210.0 گرم205 گرم199 گرم202 گرم166 گرم201.8 گرم
نمایشگرSuper AMOLED, 120 HzSuper AMOLED, 120HzSuper AMOLED, 120HzSuper AMOLED, 120HzP-OLED, 120HzAMOLED, 120Hz
6.78 اینچ، 1080 در 2400 پیکسل6.67 اینچی, 1080 در 2400 پیکسل6.6 اینچ، 1080 در 2340 پیکسل6.67 اینچ، 1080 در 2400 پیکسل6.6 اینچ، 1080 در 2400 پیکسل6.67 اینچ، 1080 در 2400 پیکسل
سیستم عاملاندروید 13, DariaOS 4.0اندروید 11, MIUI 13 for POCOاندروید 13, One UI 5.1اندروید 11, MIUI 13اندروید 12, planned upgrade to اندروید 13اندروید 11, MIUI 13
تراشهDimensity 7050 (6نانومتری)اسنپدراگون 695 5G (6 نانومتری)مدیاتک Dimensity 1080 (6 نانومتری)مدیاتک هلیو G96 (12 نانومتری)مدیاتک هلیو G99 (6نانومتری)اسنپدراگون 732G (8 نانومتری)
پشتیبانی کارت حافظهنداردmicroSDXC (مشترک با سیم کارت دوم)microSDXC (مشترک با سیم کارت دوم)microSDXC (مشترک با سیم کارت دوم)microSDXC (مشترک با سیم کارت دوم)microSDXC (مشترک با سیم کارت دوم)
حافظه داخلی و رم256GB 8GB RAM64GB 6GB RAM, 128GB 6GB RAM, 128GB 8GB RAM, 256GB 6GB RAM, 256GB 8GB RAM128GB 6GB RAM, 128GB 8GB RAM, 256GB 8GB RAM64GB 6GB RAM, 128GB 6GB RAM, 128GB 8GB RAM128GB 6GB RAM, 128GB 8GB RAM128GB 6GB RAM, 128GB 8GB RAM, 256GB 8GB RAM
دوربین اصلی50 MP, f/1.9, OIS108 MP, f/1.948 MP, f/1.8, OIS108 MP, f/1.9108 MP, f/1.7108 MP, f/1.9
8 MP, f/2.2, 123˚, (اولترا واید)64 MP, f/1.8, 26mm (واید)8 MP, f/2.2, 123˚ (اولترا واید)8 MP, f/2.2, 118˚ (اولترا واید)8 MP, f/2.2, 118˚ (اولترا واید)8 MP, 120˚, (اولترا واید)
2 MP, f/2.4, (ماکرو)8 MP, f/2.2, 118˚ (اولترا واید)5 MP, f/2.4, (ماکرو)2 MP, f/2.4, (ماکرو)2 MP, f/2.4, (ماکرو)2 MP, f/2.4, (ماکرو)
2 MP, f/2.4, (ماکرو)2 MP, f/2.4, (depth)2 MP, f/2.4, (depth)
دوربین سلفی16 MP, f/2.5, (واید)16 MP, f/2.5, (واید)13 MP, f/2.2, (واید)16 MP, f/2.5, (واید)16 MP, f/2.5, (واید)16 MP, f/2.4, (واید)
باتریلیتیوم یون 4700 میلی‌آمپر ساعتلیتیوم پلیمر 5000 میلی‌آمپر ساعتلیتیوم پلیمر 5000 میلی‌آمپر ساعتلیتیوم پلیمر 5000 میلی‌آمپر ساعتلیتیوم پلیمر 5000 میلی‌آمپر ساعتلیتیوم پلیمر 5000 میلی‌آمپر ساعت
شارژر66 وات67 وات25 وات67 وات33 وات67 وات
رنگ بدنهمشکی مشکی، آبی، زردلیمویی، گرافیتی، بنفش، نقره ایخاکستری، سفید قطبی، آبی خاکستری، آبی، سفید بنفش، آبی، سیاه، سفید
محدوده قیمتاز 10،000 تا 13،000 میلیون توماناز 12،000 تا 13،000 میلیون توماناز 10،700 تا 12،700 میلیون توماناز 10،300 تا 12،300 میلیون تومانحدود 9،800 میلیون تومانحدود 10،250 میلیون تومان

هایپر تردینگ چیست و چه کاربردهایی دارد؟

هایپر تردینگ (Hyper-Threading)، نخستین تلاش اینتل برای استفاده از مفهوم محاسبات موازی بر روی کامپیوترهای شخصی محسوب می‌شود که برای نخستین مرتبه در سال ۲۰۰۲ میلادی و در پردازنده‌های پنتیوم ۴ مورد استفاده قرار گرفت.

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

در همین رابطه بخوانید:

- تراشه اسنپدراگون چیست؟
مقایسه تعداد هسته با سرعت کلاک پردازنده

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

معنی thread در کامپیوتر

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

چرا پردازنده‌های کامپیوترهای شخصی حداکثر به دو رشته مجهز می‌گردند؟

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

در مقابل، هر هسته از پردازنده‌های سرور همانند پردازنده‌های Xeon Phi اینتل یا جدیدترین سری از پردازنده‌های POWER شرکت IBM، از تعداد زیادی خطوط لوله تشکیل شده و به‌همین دلیل ۴ تا ۸ رشته را در هر هسته مدیریت می‌کنند.

در حقیقت، رویکرد متفاوت در طراحی پردازنده‌های مورد استفاده در کامپیوترهای شخصی و پردازنده‌های سرور از تفاوت گسترده در حجم کاری این پردازنده‌ها سرچشمه می‌گیرد.

مقایسه نخ‌ها با پروسه‌ها
پردازنده Power10 شرکت IBM، حداکثر به ۱۵ هسته مجهز شده است

چگونه از پردازش‌های در حال اجرا و تعداد رشته‌ها در کامپیوتر خود مطلع شویم؟

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

نخ در CPU

درصورتی که به تب Performance در تسک‌منیجر بروید و سپس از منوی سمت چپ بر روی تب Proces کلیک کنید، تعداد پردازش‌های در حال اجرا و همچنین تعداد کل رشته‌های فعال را مشاهده خواهید کرد.

تفاوت بین thread و task

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

در همین رابطه بخوانید:

- تفاوت پردازنده های تری (Tray) و پردازنده های باکس (Boxed)
سوکت CPU چیست؟ آشنایی با انواع سوکت پردازنده

هسته مجازی چیست؟

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

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

پردازنده‌های امروزی، رشته‌ها را هوشمندانه اجرا می‌کنند

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

پردازنده‌ها می‌توانند برای به‌حداکثر رساندن کارایی، دستورالعمل‌های رشته را کمی تغییر دهند. بعلاوه، پردازنده‌های امروزی به ابزارهای پیچیده‌ای برای مدیریت رشته‌ها مجهز شده‌اند که علاوه بر تغییر دستورا‌لعمل‌ها، نتیجه احتمالی را نیز پیش‌بینی می‌کنند. این ویژگی به پردازنده کمک می‌کند تا توابع شرطی را با سرعت بالاتری پردازش کند.

پردازنده‌ گرافیکی و رشته ها

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

به‌عنوان مثال، کارت گرافیک Radeon RX 6800 به تراشه Navi 21 مجهز شده است. این تراشه، از ۶۰ واحد محاسباتی (CU) تشکیل شده که هر یک می‌توانند ۶۴ رشته مجزا را در یک لحظه و به‌طور همزمان ایجاد کنند. بنابراین، تعداد رشته‌ها حداکثر به ۳۸۴۰ رشته می‌رسد. همانطور که پیش‌تر در این مقاله اشاره شد، هر هسته از پردازنده‌های مرکزی کامپیوترهای شخصی حداکثر دو رشته را مدیریت می‌کنند.

رشته در cpu چیست
تراشه Navi 21

پردازنده گرافیکی چگونه رشته‌ها را مدیریت می‌کند؟

هر واحد محاسباتی، دو مجموعه SIMD (دستورالعمل منفرد، داده‌های متعدد) را در اختیار دارد و هر یک از SIMD‌ها می‌توانند به‌طور همزمان بر روی ۳۲ داده مجزا کار کنند. داده‌ها می‌توانند از رشته‌های متفاوت دریافت شوند اما واحد پردازشی باید همان دستورالعمل را در هر رشته اجرا کند.

ترد سی پی یو

پردازنده‌های گرافیکی، طوری طراحی شده‌اند که می‌توانند عملیات‌های تکراری را بارها انجام دهند که معمولاً از دستورات مشابهی سرچشمه می‌گیرند که به‌طور گسترده و در حجم وسیع پردازش می‌شوند.

در همین رابطه بخوانید:

- حافظه کش پردازنده چیست؟ چرا Cache در سی پی یو مهم است؟
تفاوت پردازنده های لپ تاپ AMD Ryzen U با H و HS یا HX

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

پردازنده‌های آینده چگونه خواهد بود؟

امروزه، پردازنده‌های قدرتمندی همانند Ryzen 9 7950X در دسترس خریداران قرار دارند که می‌تواند ۳۲ رشته را مدیریت کند. در حالی که ده سال پیش تصور در اختیار داشتن چنین پردازنده‌ای برای کامپیوترهای شخصی یک رویا به‌نظر می‌رسید. در آن زمان، بهترین پردازنده‌ها حداکثر از ۸ رشته پشتیبانی می‌کردند، در حالی که پردازنده‌های ارائه شده برای کامپیوتر‌های شخصی حداکثر از ۴ رشته پشتیبانی می‌کردند. هم‌اکنون، می‌توان پردازنده‌های ارزان قیمتی را خریداری کرد که تعداد هسته، رشته و در نهایت عملکرد بسیار بهتری در مقایسه با بهترین پردازنده‌های یک دهه گذشته دارند.

کمپانی AMD، نخستین شرکتی محسوب می‌شود که پردازنده‌های مقرون به‌صرفه با تعداد نسبتاً زیادی از هسته و رشته‌ها را به بازار ارائه کرده و هم‌اکنون نیز رقابت تنگاتنگ اینتل و AMD برای پیشنهاد تعداد هسته‌ها و رشته‌های بالاتر به خریداران پردازنده‌های مرکزی ادامه دارد.

اگرچه، استفاده از یک پردازنده مرکزی با ۱۲۸ رشته برای اجرای بازی‌های کامپیوتری به‌دلیل کاهش بازدهی پردازنده متناسب با افزایش تعداد هسته بعید به‌نظر می‌رسد، اما سازندگان حرفه‌ای محتوا هم‌اکنون برنامه‌های خود را به نحوی طراحی می‌کنند که می‌توان از حداکثر توان پردازشی پردازنده‌های مشابهی همانند Threadripper Pro 5995WX با ۶۴ هسته و ۱۲۸ رشته نیز استفاده می‌کنند.

در همین رابطه بخوانید:

- مقایسه پردازنده های پنتیوم (Pentium) و سلرون (Celeron)
تفاوت بین هسته‌های P-Cores و E-Cores در پردازنده‌های اینتل

جمع‌بندی

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

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

نظر خود را اضافه کنید.

ارسال نظر بدون عضویت در سایت

0

نظرات (4)

  • مهمان - علیرضا

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

  • مهمان - SajjadKhati

    سلام
    زحمت کشیدید اما مقاله اشکالات اساسی داشت .

    مفهوم نخ یا رشته ، مفهوم نرم افزاری هست . مفهوم سخت افزاری نیست . در منابع رسمی مثل سایت Intel هم که مراجعه کنید ، در کنار نام Thread ای که برای پردازنده میبرند ، توضیح میدند که نخ ، مفهوم نرم افزاری هست .

    هر نخ (که توسط برنامه به سیستم عامل و از اون ، به پردازنده ارائه میشه) ، ممکنه در یک هسته ی منطقی مجزا در cpu اجرا بشه (یا حتی ممکنه چندین نخ ، در یک هسته ی منطقی اجرا بشن که به خیلی از عوامل بستگی داره و مبحث اش بسیار طولانی هست) .

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

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

  • مهمان - SajjadKhati

    در پاسخ به: وحید علی‌محمدی

    سلامی مجدد .

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

    درباره ی اینکه آیا اصلا مفهوم thread در cpu و کلا سخت افزار هم وجود داره (هر چند نام دیگه اش هسته ی منطقی هست) ، من مجددا تحقیق کردم . دقیقا به جواب خاصی نرسیدم که فرضا قطعا بگم که همچین مفهومی نیست . اما میتونم بگم که مقالات قابل توجه (نه همه شون) در سایت هایی مثل intel و ... ، thread را به عنوان مفهوم نرم افزاری معرفی میکنن مثل مقاله ی "What Is Hyper-Threading" در اینتل که در بخشی میگه :

    "Multithreading is a form of parallelization or dividing up work for simultaneous processing. Instead of giving a large workload to a single core, threaded programs split the work into multiple software threads. These threads are processed in parallel by different CPU cores to save time" .

    اما باز هم در مقالاتی در همین اینتل هست که هر چند من از صحبت اش ، صریحا برداشت نکردم که thread در سخت افزار باشه اما تلویحا به این مورد اشاره کرد . مثل مقاله ی "How Many Virtual Processors (vCPUs) are Within an Intel® Xeon® Processor" .

    پس ، عذرخواهی میکنم ازتون چون هنوز مطمئن نیستم که آیا مفهوم thread در cpu واقعا هست یا اینکه به همان هسته ی منطقی گفته میشه (البته میدونم در مقالات دیگه ، thread در cpu را معرفی ، و به عنوان هسته ی منطقی میشناسن) .

    اما خوب ، چه مفهوم سخت افزاری thread در cpu وجود داشته باشه یا نه ، مفهوم نرم افزاری thread ، وجود داره که توضیح بسیار مختصری درباره اش در پست قبلی ام دادم .

    =======================

    اینکه چرا عملکرد هسته های منطقی (که رشته های نرم افزاری در اونها اجرا میشن) ای که درون یک هسته ی فیزیکی قرار دارن ، سرعت پایین تری نسبت به اجرای کدها در هسته های منطقی ای که درون یک هسته ی فیزیکی مجزا قرار دارن ، هست ؛ یا بصورت ساده تر اینکه چرا عملکرد هسته های منطقی ، کندتر از عملکرد هسته های فیزیکی هست ، مهمترین دلیلش ، اشتراک حافظه ی cache ای که بین هسته های منطقی ای که در یک هسته ی فیزیکی هستن ، هست . حافظه ی کش L2 و در شرایطی ، حتی حافظه ی کش L1 هم بین هسته های منطقی ای که در یک هسته ی فیزیکی قرار دارن ، به اشتراک گذاشته میشه در صورتی که این دو حافظه در هسته های فیزیکی ، مجزا هستند . اینکه در چه شرایطی ، حافظه کش L1 در هسته های منطقی ای که در یک هسته ی فیزیکی هستن ، به اشتراک گذاشته میشه ، بسته به حالت L1 Data Cache Context Mode در پردازنده داره که در مقاله ی "Intel® 64 and IA-32 Architectures Developer's Manual: Vol. 3A" در سایت اینتل و در صفحه ی 432 از فایل pdf ای که در اون صفحه موجود هست ، میگه .

    =======================

    درباره ی توضیحات مقاله که گفته بودم گاها کامل نبود و یا گیج کننده و مبهم بود ، میشه چندین مثال زد . در واقع اگر توضیحات بیشتر و واضح تر که البته مقاله را طولانی تر میکرد ، میدادید ، خیلی بهتر میشد .
    مثلا چند نمونه :

    1) در بخش "پردازش موازی دستورات" گفته بودین که :

    "در نهایت در زمان T-2 پردازش دستورات پایان می‌یابد"

    و در تصویری هم که رسم کردید ، T-2 ، زمانی هست که هر 3 نخ ، با هم خاتمه پیدا میکنند در صورتی که در واقعیت ، همچین چیزی یا نشدنی هست یا بسیار بسیار به ندرت پیش میاد .

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

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

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

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

    به همین دلیل هست که میبینید که اغلب بازی ها یا نرم افزارها (نه همه شون و هر نوع نرم افزار یا بازی ای) ، اگر تعداد هسته ها از یک مقدار خاصی بیشتر بشه (فرضا از 8 یا 10 هسته بیشتر بشه) ، هیچ تاثیری در افزایش سرعت و کارایی شون نداره .

    =======================

    2) یا در بخش "رشته پردازشی چیست؟" گفته بودید :

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

    هر چند اگر برنامه نویس ، اون مواردی که گفتم (یا بعضی ها را نگفتم) رعایت کنه ، حرف تون درسته اما اگر رعایت نکنه ، کاملا ممکنه برعکس هم بشه .

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

    =======================

    3) در بخش "مالتی تردینگ چگونه کار می‌کند؟" گفته بودید :

    "هر دو رشته یکی پس از دیگری اجرا می‌شوند تا حس اجرای همزمان را در مخاطبان ایجاد کنند" .

    اینکه هر دوی رشته هایی که مثال زده بودید ، همزمان با هم کار کنند یا نه ، یا در واقع این بهتر هست که بگیم تا چقدر و چه بخش و چه مدت از اجرای اون دو رشته ، همزمان با هم اجرا بشن یا نه ، بسته به نوع کدنویسی نخ ، تکنولوژی مورد استفاده در ui و خیلی از عوامل داره اما اگه برنامه نویس ، از تکنولوژی های خوب در ui و طرفندهای خوبی استفاده کنه (مثل binding و ...) و نخ های خوبی هم بنویسه و اون شرایط را در نخ هاش رعایت کنه ، در بخش هایی از زمان (نه در همه ی زمان) ، اون دو نخ ، واقعا همزمان اجرا میشن .

    ما در نخ ، کلا 2 نوع نخ داریم :

    یکی نخ های بر پایه ی کارهای داده ای (که این مثالی که زدید ، از این دست نخ هاست) . معمولا هم نخ هاشون بسیار سبک هستند و صرفا برای اینکه نخ ui را منتظر نخ واکشی داده از دیتابیس یا شبکه و ... نذارن ، درست میکنن . و معمولا هم بار بسیار کم برای هسته ی پردازنده داره .

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

    =======================

    4) بخش "هسته و رشته چه تفاوتی با یکدیگر دارند" ، در جدولش که حداقل من که اصلا متوجه ی تقریبا هیچ کدوم از نوشته هاتون در اون جدول نشدم .
    متن توضیح داده شده در جدول ، به نظرم بسیار بسیار نامشخص هست .

    =======================

    5) در بخش "پردازنده‌های آینده چگونه خواهد بود؟" گفتید :

    "اما سازندگان حرفه‌ای محتوا هم‌اکنون برنامه‌های خود را به نحوی طراحی می‌کنند که می‌توان از حداکثر توان پردازشی پردازنده‌های مشابهی همانند Threadripper Pro 5995WX با ۶۴ هسته و ۱۲۸ رشته نیز استفاده می‌کنند" .

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

    فرضا فتوشاپ ، در یک ابزارش یا در یک شرایط و حتی تنظیماتش ، در فلان پردازنده ، میتونه به مدت فلان میلی ثانیه (یا ثانیه یا دقیقه) ، فلان تعداد از هسته اش را استفاده کنه اما همین نرم افزار در شرایط و تنظیمات و یا ابزار دیگه اش ، در فلان مدت از زمان ، میتونه کاملا تعداد استفاده از هسته هاش بصورت بسیار چشمگیری متفاوت باشه .
    چه برسه به اینکه یک ژانر نرم افزار بتونه اون طور که گفتید از اون پردازنده استفاده کنه .

    =======================

    6) در بخش "جمع بندی" گفتید :

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

    اصلا همچین چیزی درست نیست مخصوصا برای کسایی که میخوان نسبت به قیمت ، کارایی مناسبی داشته باشند .

    ببینید ، یک نرم افزار ، در یک شرایط A ، و در زمان A ، ممکنه فرضا 20 نخ را بصورت همزمان اجرا کنه (که مدت زمان اجرای هر نخ را که قبلا توضیح داده بودم که کاملا بستگی به شرایط مختلف داره) .
    اما همین نرم افزار ، در شرایط B و زمان B ، ممکنه فقط یک نخ برای اجرا داشته باشه .

    ضمن اینکه این مورد بسیار مهم هست که سنگینی نخ ، چه میزان باشه . یعنی ممکنه اون 20 نخ ای که ایجاد شد ، بسیار سبک باشه و مدت زمان اجرای کل اون 20 نخ در cpu ی حتی 2 هسته ای در فلان مدل ، به 2 میلی ثانیه هم نرسه .

    هر چند در این حالت که 20 نخ باشه ، در صورتی که نخ ها بهینه نوشته شده باشن و کلا اصول رعایت بشه ، بهترین پردازنده برای اجرا ، پردازنده ای با 20 هسته ی فیزیکی (و نه 20 هسته ی منطقی) هست . که در این صورت ، با رعایت اون شرایط ، در پردازنده ی 20 هسته ی فیزیکی با همون میزان فرکانس و شرایط دیگه ، بجای 2 میلی ثانیه ، سرعت اجرا به 200 میکروثانیه کاهش پیدا میکنه .

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

    ممکنه در 0.1 درصد از زمان استفاده از نرم افزار ، اون نرم افزار فرضا از 23 هسته و در 2 درصد از مواقع ، از یک هسته و در 50 درصد از مواقع از 2 هسته و در بقیه ی مواقع از 4 هسته استفاده کنه که معمولا در این صورت ، کسایی که نسبت کارایی به بودجه را در نظر دارن ، بخاطر 0.1 درصد از زمان استفاده ی نرم افزار ، نمیرن پردازنده ی با 20 هسته ی منطقی بخرن .

    =======================

    البته مبحث نخ های نرم افزاری ، بسیار زیاد هست . در این کامنت ، صرفا چند نکته را مطرح کردم .

    نهایتا مجددا از مقاله تون که وقت گذاشتید ، تشکر میکنم .
    ولی باز بهتر میشد که توضیحات واضح تر مخصوصا برای کاربران عادی و با مثال های مختلف میشد .
    حتی مثالی از متدها و نخ ها و کدهای برنامه نویسی ساده می بود که درکش راحت تر میشد .

    موفق باشید .

ورود به شهرسخت‌افزار

ثبت نام در شهر سخت افزار
ورود به شهر سخت افزار

ثبت نام در شهر سخت افزار

نام و نام خانوادگی(*)
لطفا نام خود را وارد کنید

ایمیل(*)
لطفا ایمیل خود را به درستی وارد کنید

رمز عبور(*)
لطفا رمز عبور خود را وارد کنید

شماره موبایل
Invalid Input

جزو کدام دسته از اشخاص هستید؟(*)

لطفا یکی از موارد را انتخاب کنید