دوهسته ای یا 8هسته ای؟
با رواج بهکارگیری پردازندههای هشت هستهای در پرچمداران جدید کمپانیها، دوباره بحث بر سر مزایا و معایب استفاده از این پردازشگرها بالا گرفته و حالا سوالاتی از قبیل این که کدام پردازشگر بهتر است؟ پردازشگرهای هشت هستهای را انتخاب کنیم یا چهار هستهای؟ اساسا افزایش تعداد هستهها با چه هدفی صورت میگیرد؟ و دهها سوال دیگر دوباره توجه کاربران را به این مقوله تکراری معطوف کرد. اما حتی اگر در افزایش تعداد هستهها از مشکل داغی و مصرف زیاد انرژی در پردازندهها صرفنظر کنیم، این پرسش باقی میماند که آیا پردازندههای بیشتر نقشی در افزایش بهرهوری اپلیکیشنها دارند یا نه؟
چه چیز پردازندهها را چند هستهای کرد؟
معمولا پردازندهها در اجرای یک وظیفه مشخص با مشکلی رو به رو نمیشوند اما اگر پای پردازش بیش از یک وظیفه در میان باشد، اوضاع دیگر به سادگی گذشته نیست. در این حالت باید به کمک نرمافزارهای مخصوص توالی وظایف مشخص شده و زمانهای خاصی به آنها اختصاص داده شود. در این حالت پردازشگر مطابق برنامه دریافتی پیش رفته و به ترتیب وظایف را یکی پس از دیگری پردازش میکند. هنگامیکه بیش از یک هسته در دسترس باشد میتوان وظایف را بین هستهها تقسیم کرد به طوری که چند پروسه در زمان واحد اجرا شود. در حقیقت اینجاست که تعداد هستهها در اجرای همزمان پروسهها و یا همان چند وظیفهگی نقش مهمی ایفا میکنند، مثلا اجرای برنامههای پسزمینه و استفاده از مرور گر به طور همزمان به بیش از یک هسته نیاز دارد.
اما تعداد هستههای بیشتر به معنای صرف انرژی بیشتر و بروز مشکل همیشگی است. فشار بر باتری و داغ شدن گوشی که از تبعات بهکارگیری پردازندههای قوی است، در حالی که در استفاده معمولی از گوشیهای هوشمند مانند جابهجایی بین منوها، خواندن پیامها و حتی گشتوگذار در اینترنت ، پردازشگرهای معمولی به خوبی از عهده کار، برمیآیند. اما تماشای ویدیوهای اچدی، بازیهای سنگین و کارهای گرافیکی عرصه را برای ظهور هستههای بیشتر در پردازشگرها هموار میکند.
به جز افزایش دما وکاهش طول عمر باتری، مشکل دیگری در افزایش هستهها خود را نشان میدهد و آن ایجاد ارتباط بین آنها و برقراری تعامل مناسب برای پردازش واقعی اطلاعات است. برای بدست آوردن بالاترین کارآیی هستهها در چنین پردازندههایی، نیاز به طراحی و مهندسی بسیار پیچیده وجود دارد در غیر این صورت بالا رفتن تعداد هستهها نه تنها نتیجه مثبتی به همراه ندارد بلکه باعث ایجاد اختلال و تحمیل فشار بیشتر بر عملکرد گوشی میشود.
بالاخره افزایش تعداد هستهها مفید است یا مضر؟
تعداد هستهها زمانی باعث ایجاد عملکرد مناسب پردازشگر میشود که سرعت کلاک تغییر نکند. دما و بار پردازشی دو متغیری هستند که بر سرعت کلاک تاثیر میگذارند. در سرعت کلاک ثابت، هستهها وضعیت پایدارتری دارند. اپل در آیفون 6 از چیپ دو هستهای استفاده کرده است. این شرکت بهکارگیری پردازندههای چند هستهای را در پردازش برنامههای معمولی بیفایده میداند و وجود آنها را عاملی برای افزایش دما و در نتیجه تاثیر نامطلوب بر عملکرد باتری قلمداد میکند. این در حالی است که هدف از بهکارگیری هستههای بیشتر در پردازندهها افزایش بازدهی انرژی است.
اپل به استفاده از هستههای بزرگتر با قدرت کنترل بالا بر بخشهای اجرایی تاکید دارد. هستههای پردازشگر A8 قدرتمند بوده و در عین حال توان مصرفی کمتری نیز دارند.
اما گروه دیگری از پردازندههای هشت هستهای نیز وجود دارند که استفاده از آنها رواج زیادی دارد. این پردازشگرها بر پایه ARM طراحی شده و همانطور که میدانید به این معماری بزرگ-کوچک (big-little)گفته میشود. قرار گرفتن هستههایی با کارایی بالا در کنار هستههایی با مصرف بهینه در کنار یکدیگر از مشخصههای این نوع طراحی است. هستههای با مصرف بهینه وظیفه انجام پردازشهای سبک و هستههای با کارایی بیشتر نیز مسوولیت اجرای پروسههای سنگین را را بر عهده دارند.
این معماری در سال 2011 معرفی شد و در آن چهار هسته Cortex A7 با قدرت پایین و چهار هسته Cortex A15 در کنار یکدیگر قرار گرفتند. پس از آن بسیاری از کمپانیهای فعال در زمینه تولید پردازشگر به این نوع طراحی علاقه نشان دادند و به توسعه آن پرداختند.
یکی از اولین و مطرحترین این کمپانیها سامسونگ بود که در چیپ Exynos خود از فناوری بیگ- لیتل استفاده کرد و اخیرا کوالکوم در اسنپدراگون 810 از این معماری بهره برد. Nvidia نیزTegra X1 از هشت هسته پردازنده مرکزی که شامل 2 گروه پردازنده 4 هستهای از نوع Cortex A53 و Cortex A57 است با فناوری مشابه بهره برد.
MediaTek نیز در چیپ MT6595 این نوع معماری را مد نظر قرار داده و آن را به کار گرفته است اما این کمپانی در تراشه Helio X20 ، ۳ گروه هسته برای سه حالت متفاوت توان مصرفی به کار برده است.
در حالی که اپل هرگز وارد جنگ هستهها نشد! کوالکوم نیز در سال 2013 میلادی اعلام کرد که رقابت بر سر تعداد هستهها کار بیهودهای است و قصد تولید پردازشگر هشت هستهای را ندارد. معاون ارشد این شرکت اعلام کرد که با به هم چسباندن هستهها نمیتوان به افزایش کارایی پردازندهها کمک کرد، این کار مانند این است که با به هم چسباندن موتورهای هشت ماشین چمنزنی، به موتور هشت سیلندر فراری دست یافت؛ این کار عملا غیر ممکن است.
در ادامه این مقام اجرایی کوالکوم اذعان داشت که هدف این شرکت ایجاد یک تجربه خوب برای کاربران است و تمامی تلاش این کمپانی در جهت رفع نیاز کاربران و ارتقای کارایی محصولات تمرکز دارد و این کار فقط با افزایش تعداد هستههای پردازشگر صورت نمیپذیرد.
اما چندی بعد کوالکوم نیز قدم به عرصه تولید پردازندههای هشت هستهای گذاشت تا شاید شانس خود را در به هم چسباندن هستهها بیازماید! این شرکت اعلام کرد که این کار را در واکنش به بازار چین انجام داده، گویا تعداد هستهها برای چینیها مهمتر از هر چیز دیگری است حتی اگر این کار تاثیر چندانی در بهبود کارایی نداشته باشد. با این تفاسیر به نظر میرسد تولید پردازشگرهای هشت هستهای بیشتر با انگیزههای تجاری صورت گرفته است.
اولین پردازشگرهای هشت هستهای کوالکوم در مقیاس انبوه در سال 2014 تولیدشد. اسنپدراگون 810 اولین بار در LG G Flex 2 گوشی قابل انعطاف الجی به کار رفت که نتیجه خوبی به همراه نداشت . داغی بیش از حد و پایین آمدن کارایی به تبع آن از مشکلات G Flex 2 عنوان شد، وجود تاخیر در اجرای برنامههای روزمره مثل استفاده از کیبورد، باز کردن پنجره جدید در کروم، باز کردن اپهای دوربین و حتی بازگشت به منوی اصلی به کندی صورت میگرفت؛ حرکت بین منوها نیز با تاخیر قابل توجهی صورت میگرفت که سبب نارضایتی کاربران شد.
سرانجام الجی اعلام کرد که این مشکل در نسخههای اولیه وجود داشته و بهزودی در نسخههای بعدی برطرف خواهد شد. بررسیهای بیشتر نشان داد که سرعت کلاک S810 پس از چند دقیقه از 2 به زیر 1 گیگاهرتز افت میکند. در پی این مشکلات، سامسونگ که قصد استفاده از همین پردازشگر را در پرچمدار جدید خود داشت بنا به دلایلی از این اقدام صرفنظر کرد تا گرفتار مشکلات مشابه آنچه الجی با آن دست و پنجه نرم میکرد، نشود.
کدام اپلیکیشنها بیش از یک هسته نیاز دارند؟
به طور کلی این که یک برنامه قابلیت تقسیم بین چندین هسته را داشته باشد یا نه در درجه اول به ساختار آن بستگی دارد. یعنی در حقیقت این نویسنده برنامه است که در این باره تصمیم میگیرد. در پردازشگرهای چندهستهای قابلیتی به نام Scheduler عهدهدار تقسیم وظایف بین هستههای پردازشگر است اما گاهی ماهیت وظایف به گونهای است که امکان تقسیم آنها وجود ندارد. برای مثال زمانی را در نظر بگیرید که باید خود را به سرعت به محل آتشسوزی برسانید، در این حالت استفاده از دو ماشین هیچ تاثیری در سرعت شما نخواهد داشت. شما برای جابهجایی از نقطه A به نقطه B هرگز به دو وسیله نقلیه نیاز ندارید. (دراین حالت وسایل نقلیه مشابه وضعیت مد نظر قرار دارند).
در همین مثال، اگر قرار باشد هشت نفر به طور همزمان خود را به محل حادثه برسانند با فرض این که هر ماشین امکان جابهجایی چهار نفر را دارد، وجود دو خودرو در بالا بردن سرعت تاثیر بسزایی دارد. دو خودرو امکان جابهجایی هر هشت نفر را به طور همزمان فراهم میکند. اما صرف موجود بودن دو خودرو (وجود دو هسته) به تنهایی مشکل را حل نمیکند بلکه باید افراد توانایی استفاده از آنها را داشته باشند. درصورت عدم توانایی این هشت نفر باید در دو گروه چهار نفره و در دو مرحله به محل مورد نظر انتقال یابند و این یعنی صرف زمان بیشتر، بنابراین باید در برنامهها قابلیت استفاده از چند هسته گنجانده شده باشد. پس در برنامههایی که قابلیت تقسیم وظایف به چند بخش مستقل در آن وجود نداشته باشد و یا در پروسههایی که ترتیب در آنها اهمیت دارد، استفاده از پردازندههای چند هستهای بیفایده است.
البته روشهای برنامهنویسی متفاوتی برای تعیین نحوه استفاده از هستهها وجود دارد. Single-threaded (مبتنی بر یک اجراکننده) و Multi-threaded (مبتنی بر چند اجراکننده مستقل) از جمله آنهاست، برنامههای اندروید توانایی استفاده از چندین هسته پردازشی و البته ترکیبهای بیگ-لیتل را دارا بوده و با کمک Scheduler امکان ترکیب هستهها و استفاده بهینه از آنها را دارد. بنابراین برنامههای اندروید ماهیتا قابلیت استفاده از بیش از یک هسته را دارند.
میزان استفاده ازهستهها چقدر است؟
آیا در اجرای برنامههای مختلف تمامی هستهها با حداکثر قدرت درگیر میشوند؟ مثلا در یک پردازشگر هشت هستهای، اپلیکیشنها برای اجرا نیاز به هر هشت هسته دارند؟
واقعیت این است که برخی اپلیکیشنها توانایی بهکارگیری تمامی هستههای به کار رفته در پردازشگر را دارند، اما این به معنای استفاده از حداکثر قدرت آنها نیست. آنچه رخ میدهد واگذاری وظایف از گروه هستههای لیتل به گروه هستههای بیگ یا برعکس بسته بر میزان بار است. به طور کلی اپلیکیشنها از همه هستهها به یک میزان استفاده نمیکنند. در برخی از اپلیکیشنها بخشی از توان هستهها به کار گرفته میشود که در پردازندههای چهار و هشت هستهای این میزان معمولا به صددرصد نمیرسد. در مواقعی نیز فقط دو یا سه هسته درگیر شده و بقیه به حال خود رها میشوند. میزان فعال بودن هستههای یک پردازشگر به عوامل زیادی از جمله معماری آنها بستگی دارد. ممکن است در یک پردازنده چهارهستهای 30 درصد چهار هسته مورد استفاده قرار گیرد در حالی که درپردازشگر چهار هستهای کمپانی دیگر فقط 60 درصد دو هسته به کار گرفته شود و دو هسته دیگر بدون استفاده باقی بمانند.
پردازشگر هشت هستهای از پردازشگر چهار هستهای قویتر است! این جدالی است که کمپانیها از مدتها پیش شروع کردهاند و تلاش میکنند با افزایش ارقامی که تاثیر چندانی بر کیفیت گوشی ندارند، ذهن کاربر را منحرف کرده و او را به خرید تشویق کنند، در حالی که آنها به خوبی میدانند که این ارقام برای خریداران مهم بوده و حتی میتواند مبنای تصمیمگیری آنها قرار گیرند. در هر حال دفعه بعد که قصد خرید گوشی داشتید، تعداد هستههای بیشتر ذهن شما را به خود مشغول نکند، بلکه با تحقیق از افراد متخصص، جستجو در سایتها و مطالعه نظرات دیگران و شناخت نوع نیازی که از یک گوشی دارید، آگاهانه قدم در عرصه انتخاب بگذاریم.
منبع:عصرارتباط