آشنایی با چگونگی استفاده ی ویندوز و سایر سیستم عامل ها از چند هسته در پردازنده

وجود چند هسته در پردازنده، تا حدی به افزایش سرعت انجام وظایف و فعالیت های پردازشی کمک می کند؛ اما سیستم ها چگونه هسته های گوناگون را به کار می گیرند؟

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

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

پیش از اجرای سیستم عامل، پردازنده و مادربرد اطلاعاتی را برای تنظیمات ابتدایی رد و بدل می کنند

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

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

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

با سریع تر شدن کامپیوترها، توسعه دهنده ها به مرور نرم افزارهای پیچیده تری تولید کردند. همین روند نیاز به پردازش در چند رشته را افزایش داد. در ساده ترین شیوه ی پردازش چندرشته ای (موسوم به Coarse-Grained)، سیستم عامل به جای منتظر ماندن برای نتیجه ی یک حساب در یک رشته، از رشته ای دیگر برای انجام وظیفه استفاده می کند. چنین روندی در دهه ی ۱۹۸۰ مرسوم شد که کلاک CPU و RAM در حال جداسازی از یکدیگر بود. در آن دوران، سرعت حافظه و پهنای باند آن، هر دو با سرعتی بسیار آهسته تر از سرعت کلاک پردازنده رشد می کردند. تولد حافظه ی کش به این معنا بود که پردازنده ها می توانند مجموعه های کوچک دستورالعمل را برای انجام حساب سریع و کوتاه، نزد خود نگه دارند. همچنین، پردازش چندرشته ای مطمئن می شد پردازنده ها همیشه وظیفه ای برای انجام دادن داشته باشند.

توسعه و انتشار نرم افزارهای پیچیده تر، نیاز به پردازنده های چندهسته ای را به وجود آورد

فراموش نکنید توضیحات مذکور همگی پردازش در پردازنده ی تک هسته ای را شرح می دهند. امروزه، اصطلاح های چندرشته ای و چندپردازشی اغلب با معنای مشترکی به کار می روند. البته چنین معنای مشترکی همیشه استفاده نمی شود و دو مفهوم جدا به  نام های Symmetric Multiprocessing و Symmetric Multithreading داشتیم که در ادامه هر کدام را شرح می دهیم.

SMT: پردازنده می تواند هم زمان بیش از یک رشته را اجرا کند. این فرایند با برنامه ریزی رشته ی دوم به صورتی انجام می شود که رشته ی مذکور بتواند از واحدهای اجرایی خالی استفاده کند که رشته ی اول اشغال نکرده است. اینتل فناوری مذکور را به نام Hyper-Threading می شناسد و AMD همان نام SMT را استفاده می کند. درحال حاضر، هر دو تیم آبی و قرمز از SMT برای افزایش کارایی پردازنده استفاده می کنند و روند استراتژیک خاص خود را برای پیاده سازی فناوری داشتند و آن را در محصولات خاصی ارائه می کردند. امروزه، اکثر محصولات از اینتل و AMD به قابلیت SMT مجهز هستند. پیاده سازی SMT در محصولات مصرف کننده، یعنی پردازنده های با تعداد دوبرابر رشته نسبت به هسته ها داریم (مثلا پردازنده  ای با هشت هسته و شانزده رشته ی پردازشی).

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

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

بهینه سازی جریان کاری و نقش سیستم عامل

پردازنده های مدرن حتی آن هایی که بیست سال پیش با معماری x86 ساخته شدند، مفهومی به نام Out of Order Execution یا OoOE را به کار می گیرند. تمامی هسته های پردازنده ی مدرن و قدرتمند، همچون هسته های big در معماری big.LITTLE پردازنده های گوشی هوشمند، طراحی OoOE دارند. این پردازنده ها دستور العمل های دریافتی را به صورت آنی در ساختار جدید مرتب می کنند تا اجرای آن ها بهینه سازی شود.

پردازنده ی مرکزی کدی را اجرا می کند که از سمت سیستم عامل ارسال شده است؛ اما سیستم عامل نقشی در اجرای دستورالعمل ها ندارد. وظیفه ی مذکور به صورت داخلی در پردازنده مدیریت می شود. پردازنده های مدرن x86 هر دو از بازتنظیم ترتیب دستورالعمل های دریافتی استفاده و دستورالعمل های x86 را به فعالیت های کوچک تر سبک RISC تبدیل می کنند. اختراع OoOE باعث شد مهندسان بتوانند بدون وابستگی به توسعه دهندگان برای نوشتن کد عالی و بهینه، بهره وری مناسب و مشخصی در پردازنده ها تضمین کنند. اجازه دادن به پردازنده ی مرکزی برای مرتب کردن مجدد دستورالعمل ها، حتی در مفهوم تک هسته ای هم به افزایش بهره وری سیستم چندرشته ای هم می انجامد. فراموش نکنید پردازنده ی مرکزی همیشه درحال جابه جا شدن بین وظایف است؛ حتی اگر شما متوجه آن نشوید.

پردازنده ی مرکزی با وجود تمام قابلیت هایی که در سطح مهندسی دریافت می کند، نقشی در برنامه ریزی خودش ایفا نمی کند و سیستم عامل این وظیفه را برعهده دارد. ظهور پردازنده های چندرشته ای نیز این مفهوم و ترتیب را تغییر نداد. وقتی اولین برد دوپردازنده ای مخصوص مصرف کننده (ABIT BP6) معرفی شد، علاقه مندان به پردازش های چندرشته ای مجبور شدند از ویندوز NT یا ویندوز ۲۰۰۰ استفاده کنند. خانواده ی Win9X از پردازش چندهسته ای پشتیبانی نمی کرد.

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

پردازنده های چندهسته ای مدرن لزوما به «واحد برنامه ریز مرجع» مجهز نیستند؛ واحدی که بتواند وظیفه ها را بین هسته ها تقسیم یا به نوعی جریان کاری توزیع کند. درنتیجه چنین وظیفه ای را سیستم عامل برعهده دارد.

می توان ویندوز را با هدف بهره برداری بهتر از هسته ها پیکربندی کرد؟

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

پردازنده  AMD 2990WX به نوعی استثنایی برای قانون مذکور محسوب می شود. این پردازنده عملکردی تقریبا ضعیف در ویندوز دارد؛ چون مایکروسافت وجود بیش از یک نود NUMA را در پردازنده تفسیر نمی کند و درنتیجه، از تمامی منابع 2990WX استفاده نمی شود. در برخی موارد، راهکارهایی برای بهبود کارایی این پردازنده در ویندوز وجود دارد که به پیکربندی های دستی نیاز دارد. البته همه ی کارشناسان این تغییرات دستی در رشته های پردازشی را تأیید نمی کنند و آن ها استفاده از لینوکس را برای پردازنده ی مذکور پیشنهاد می دهند.

پردازنده ی 3990X استثنای بزرگ تری در قانون تغییر پیکربندی برای بهره وری بیشتر است. ویندوز ۱۰ گروه های پردازنده را به ۶۴ رشته محدود می کند؛ درنتیجه، نمی توانید بیش از ۵۰ درصد از منابع اجرایی 3990X را به جریان کاری واحد اختصاص دهید؛ مگر اینکه اپلیکیشن مدنظر از برنامه ریز اختصاصی استفاده کند. به دلیل همین محدودیت ها، 3990X برای اکثر اپلیکیشن ها پیشنهاد نمی شود و تنها در ابزارهای رندر و دیگر اپلیکیشن های حرفه ای کاربرد دارد که از برنامه ریز اختصاصی بهره می برد.

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

منبع: زومیت.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

بیست − یک =

لطفا پاسخ عبارت امنیتی را در کادر بنویسید. *