فرکانس بالاتر یا هسته بیشتر؟ مسئله این است .
آیا یک پردازنده دو هستهای با فرکانس کاری 1.8 گیگاهرتز برابر با یک
پردازنده تک هستهای با فرکانس کاری 3.6 گیگا هرتزی است ؟آیا پردازنده دو
هستهای با فرکانس کمتر ، قویتر از پردازنده تک هستهای با فرکانس بالاتر
است ؟ اساس کار پردازندههای دو هستهای چیست ؟
سوالاتی از این قبیل هنوز هم در ذهن کاربران در هنگام خرید پردازنده مطرح
میشود. در این مطلب سعی میکنیم با توضیح کوتاهی دید شما را نسبت به
پردازندههای چند هستهای باز تر کنیم.
پردازندههای چند هستهای
در دنیای امروز و در صنعت ساخت پردازندهها ، رقابت بر سر افزایش فرکانس
کاری متوقف شده و جنگ بر سر تعداد هستههای پردازشگر و میزان کارآیی آنها
شکل گرفته است. در این حالت تنها سازندهای موفق است که بتواند تعادلی
مناسب بین سرعت کلاک و تعداد واحدهای پردازشگر برقرار کند. به لطف
تکنولوژیهای ساخت 90 نانو و یا 65 نانو پردازندههایی با بیش از یک واحد
پردازشگر ممکن شدند. پروسههای ساخت مذکور با کاهش اندازه سطح Die و نیز
قابلیت مدیریت بهتر توان مصرفی و در نتیجه کاهش حرارت ایجاد شده ، تعداد
بیشتری از واحدهای پردازشگر را در پردازنده ممکن ساخته اند.هم اکنون نیز 4
واحد پردازشگر را در یک پردازنده دیدهایم و در آینده نیز قطعا این مقدار
افزایش خواهد یافت. اما آنچه که مهم جلوه میکند این است که نرمافزارها
چگونه میتوانند گذر از تک هستهای به دوهسته و یا چهار هستهای را
پذیرفته و خود را با آن هماهنگ سازند.
در این مطلب به بررسی این موضوع پرداخته و گوشهای از جریان پردازش موازی
را مورد بررسی قرار میدهیم.
در حالت ایدهآل نرمافزاری را در نظر میگیریم که میتواند از قابلیت
Multi-Threading به درستی استفاده کند. البته علت اینکه عبارت " به درستی "
را بکار بردیم در ادامه ارایه خواهد شد. بدین ترتیب این نرمافزار
میتواند بار کاری خود را به چندین رشته قابل پردازش (Thread) بصورت کاملا
یکسان از لحاظ حجم کاری تقسیم کرده و آنها را برای پردازش به سمت هستههای
پردازشگر ارسال کند. حال این هستههای پردازشگر میتواند در یک پردازنده
بوده و یا ترکیبی از چندین پردازنده باشد. بدین ترتیب هر رشته قابل پردازش
را یک هسته پردازشگر مورد پردازش قرار داده و سرعت انجام کار افزایش
مییابد. بهتر است این پروسه را با ذکر مثالی بیان کنیم .
به عنوان مثال عبارت محاسباتی زیر را در نظر بگیرید : (1+2)x(3+4)
اگر فرض کنیم هر عملیات ریاضی در یک سیکل به انجام برسد آنگاه برای انجام
این عبارت به 3 سیکل کاری احتیاج خواهیم داشت(با فرض اینکه پردازندهای تک
هستهای، این عملیات در 3 سیکل کاری انجام میگیرد).اما اگر پردازنده دو
هستهای در اختیار داشته باشیم در یک سیکل بطور موازی محاسبه مقادیر داخل
پرانتز صورت گرفته و در یک سیکل دیگر نتایج داخلی دو پرانتر در هم ضرب
میگردند.
بعبارتی دیگر میتوان گفت پردازش نتیجه داخلی دو پرانتز در یک سیکل و بطور
همزمان و موازی توسط دو هسته صورت میگیرد و سپس عمل ضرب انجام میپذیرد.
ملاحظه میکنید که در این حالت فرکانس کاری در جریان کلی کار در نظر
گرفته نشده است. این بدین معنی است که با افزایش تعداد هستههای پردازشگر
به سبب خاصیت " پردازش موازی " کارآیی و سرعت انجام کار افزایش مییابد.
کاملا واضح است که تعداد کارگرهای بیشتر، همواره از تعداد کارگرهای سریع
ولی کمتر ، پر سرعت تر است. به همین دلیل در هنگام ورود پردازندههای دو
هستهای شاهد بودیم که فرکانس کاری آنها در مقایسه با پردازندههای تک
هسته بطور قابل توجهی کاهش یافته بود.
یکی از مسایلی که اکثر کاربران را دچار مشکل کرده بود کاهش فرکانس کاری
در پردازندههای دو هستهای است. درواقع سوال خیلیها این بود که برای
مثال، پردازنده 3.6 گیگا هرتزی پنتیوم 4 قویتر است یا پردازنده 1.8
گیگاهزتزی Core 2 ؟
شاید با مثال بالا کمی شبهات بر طرف شده باشد. البته تمام برتری
پردازندههای دو هستهای جدید به پردازش موازی آنها نیست اما میتوان گفت
بارزترین علت این برتری همین توانایی و قابلیت پردازش موازی است.
اما این قضیه تمام جریان نیست. با ورود پردازندههای چند هستهای مشکلات و
نقاط ضعف جدید نیز مطرح شدند. در واقع همیشه میزان بار کاری لازم برای
استفاده از دو یا چهار هسته پردازنده وجود ندارد. همچنین در تقسیم و
انتشار بار کاری بین هستههای پردازشگر نیز هنوز مکانیسم صحیحی دیده
نمیشود. به عبارت بهتر واسطهای فیزیکی ( HyperTransport در AMD و Front
Side Bus در Intel ) ممکن است سبب ایجاد گلوگاه در این امر شوند. اگر به
لایههای بالاتر نیز دقت کنیم سیستم عامل هم به عنوان فرستنده و توزیع
کننده ، خود میتواند سبب ایجاد گلوگاه گردد.
جدال نرمافزارها با پردازندههای چند هستهای
در بخش قبلی اشاره کردیم که یک نرمافزار در حالت ایدهآل میتواند به
درستی از قابلیت Multi-Threading بهره گرفته و توانایی پردازنده چند
هستهای را به طرز درستی مورد استفاده قرار دهد. بحث بر سر این است که این
استفاده درست از قابلیت Multi-Threading چگونه است. به خاطر بیاورید
زمانی را که پردازندههای دو هستهای تازه به بازار عرضه شده بودند. در آن
زمان بازیهای وقت به خوبی بر روی پردازندههای تک هستهای اجرا میشدند
اما بر روی پردازندههای دو هستهای کمیبا مشکل مواجه شده بودند. آنچه در
زمان ورود پردازندههای دو هستهای مطرح میشد عدم توانایی نرمافزارها
در استفاده از تمام قابلیتهای یک پردازندههای دو هستهای بود. چرا که
نرمافزارها نمیتوانستند بار کاری خود را به رشتههای قابل پردازش یکسان
از لحاظ حجم کاری تقسیم کرده و بدین ترتیب سرعت انجام پردازش را افزایش
دهند. در مقابل عبارت Multi-Threading میتوان مفهوم Multi Tasking را مطرح
کرد. به عنوان مثال استفاده از یک مرورگر برای دیدن صفحات اینترنتی و هم
زمان با آن گوش دادن به موسیقی ، مفهموم چند وظیفهای را توجیه میکند.
جریانی که پردازندههای دو هستهای و یا چند هستهای به خوبی از عهده آن بر
میآیند. چرا که دیگر بحث بار کاری یک نرمافزار مستقل مطرح نیست. اما
همانطور هم که قبلا اشاره کردیم Multi-Threading بصورت ایده آل ( حداقل در
بین خیل زیادی از نرمافزارهای فعلی ) وجود ندارد. اما به نوعی هم
گوشهای از عملیات Multi-Threading دیده میشود. برای مثال آنتی ویروسی
را در نظر بگیرید. واسط گرافیکی این آنتی ویروس را میتوان یک رشته قابل
پردازش و دستور اسکن سیستم را رشته ای دیگر فرض کرد. اما آنچه که مسلم است
این است که حجم کاری این دو رشته یکسان نیست و لذا Multi-Threading به
معنا و مفهوم ایده آل خود اجرا نخواهد شد.
با توضیحات فوق میتوان به این نتیجه رسید که یکی دیگر از عواملی که
قابلیتهای یک پردازنده چند هستهای را محدود میکند وجود نرمافزارهای
این چنینی است. در واقع در هنگام اجرای یک نرمافزار آنتی ویروس و در کنار
آن تماشای یک DVD میتوانید به افزایش کارآیی سیستم خود پی ببرید ( Multi
Tasking ) اما در هنگام اجرای یک نرمافزار بر روی پردازنده چند هستهای
خود شاید این تفاوت را اصلا احساس نکنید.
توسعه نرمافزارها در حالت Multi-Threading ایده آل ، کار سختی است. در
کنار کار سخت ، هزینه بالا نیز نا گزیر خواهد بود. به همین دلیل است که
هنوز اکثر نرمافزارها به این سمت کشیده نشدهاند. هر چند در بین
بازیهای جدید و به روز مواردی دیده میشود که سازندگان آنها توانایی
پشتیبانی از پردازندههای چند هستهای را در ساختار اجرایی بازی لحاظ کرده
اند.
سخن پایانی
همانطور که ملاحظه کردید پردازندههای دو هستهای و نیز چند هستهای از
لحاظ سرعت انجام کار ( بدون توجه به فرکانس کاری ) برتری خود را ثابت کرده
اند. تنها عاملی که میتوان در سطح کاربری آن را مهم دانست وجود
نرمافزارهای سازگار با پردازندههای چند هستهای است. مشکلی که در
ابتدای ورود آنها دیده میشد و به تدریج در حال رفع شدن است. در واقع
سازندگان نرمافزار ناچار به پذیرش این ساختار جدید هستند. تمام حالات فوق
سبب نمیشود که در خرید پردازندههای چند هستهای شک کنید. چرا که در
آینده ای نه چندان دور " پردازش موازی " و " پردازش چند وظیفهای "
مهمترین عوامل در پروسه پردازش خواهند بود. بنابراین اگر قصد خرید
پردازنده ای چند هستهای را دارید در مورد آن تردید نکنید. آینده از آن
پردازندههای چند هستهای است .