فرکانس بالاتر یا هسته بیشتر؟
نوشته شده به وسیله ی محمد ک در تاریخ 87/3/13:: 11:54 عصر
فرکانس بالاتر یا هسته بیشتر؟
نگاهی به دلایل انتخاب پردازندههای چندهستهای و مقوله پردازش موازی در آنها
مقدمه
آیا یک پردازنده دو هستهای با فرکانس کاری 8/1 گیگاهرتز برابر با یک پردازنده تک هستهای با فرکانس کاری 3،6 گیگاهرتزی است؟ اساس کار پردازنده های دو هستهای چیست؟
سوالاتی از قبیل این هنوز هم در ذهن کاربران در هنگام خرید پردازنده مطرح میشود. در این مطلب سعی میکنیم با توضیح کوتاهی دید شما را نسبت به پردازندههای چند هستهای بازتر کنیم.
پردازندههای چند هستهای
در دنیای امروز در صنعت ساخت پردازندهها،رقابت بر سر افزایش فرکانس کاری متوقف شده وجنگ بر سر تعداد هستههای پردازشگر و میزان کارایی آنها شکل گرفتهاست. در این حالت تنها سازندهای موفق است که بتواند تعادلی مناسب بین سرعت کلاک و تعداد واحدهای پردازشگر برقرار کند. به لطف تکنولوژیهای ساخت 90نانو و یا 65نانو پردازندههایی با بیش از یک واحد پردازشگر ممکن شدند.پروسههای ساخت مذکور با کاهش اندازه سطح Die و نیز قابلیت مدیریت بهتر توان مصرفی و در نتیجه کاهش حرارت ایجاد شده، تعداد بیشتری از واحدهای پردازشگر را در پردازنده ممکن ساختهاند. هماکنون نیز 4 واحد پردازشگر را در یک پردازنده دیدهایم و در آینده نیز قطعاً این مقدار افزایش خواهد یافت. اما آنچه کا مهم جلوه میکند این است که نرمافزارها چگونه میتوانند گذر از تک هستهای به دو هستهای ویا چهار هستهای را پذیرفته و خود را با آن هماهنگ سازند.
در این مطلب به بررسی این موضوع پرداخته و گوشهای از جریان پردازش موازی را مورد بررسی قرار میدهیم.
در حالت ایدهآل نرمافزاری را در نظر میگیریم که میتواند از قابلیت Multi-Threading به درستی استفاده کند. البته علت اینکه عبارت «به درستی» را بکار بردیم در ادامه ارائه خواهد شد.بدین ترتیب این نرمافزار بار کاری خود را به چندین رشته قابل پردازش (Thread) بصورت کاملاً یکسان از لحاظ حجم کاری تقسیم کرده و آنها را برای پردازش به سمت هستههای پردازشگر ارسال کند. حال این هستههای پردازشگر میتواند در یک پردازنده بوده و یا ترکیبی از از چندین پردازنده باشد. بدین ترتیب هر رشته قابل پردازش را یک هسته پردازشگر مورد پردازش قرار داده و سرعت انجام کار افزایش مییابد. بهتر است این پروسه را با ذکر مثالی بیان کنیم.
به عنوان مثال عبارت محاسباتی ریاضی زیر را درنظر بگیرید: (2+1)X(3+4)
اگر فرض کنیم هر عملیات ریاضی در یک سیکل به انجام برسد آنگاه برای انجام این عبارت به 3 سیکل کاری احتیاج خواهیم داشت(با فرض اینکه پردازندهای تک هستهای، این عملیات در 3 سیکل کاری انجام میگیرد). اما اگر پردازنده دو هستهای در اختیار داشته باشیم در یک سیکل زمانی بطور موازی محاسبه مقادیر داخل پرانتز صورت گرفته و در یک سیکل دیگر نتایج داخلی دو پرانتز در هم ضرب میگردند.
بعبارت دیگر میتوان گفت پردازش نتیجه داخلی دو پرانتز در یک سیکل و بطور همزمان و موازی توسط دو هسته صورت میگیرد و سپس عمل ضرب انجام میپذیرد. ملاحظه میکنید که در این حالت فرکانس کاری در جریان کلی کار در نظر گرفته نشدهاست. این بدین معنی است که با افزایش تعداد هستههای پردازشگر به سبب خاصیت «پردازش موازی» کارایی و سرعت انجام کار افزایش مییابد. کاملاً واضح است که تعداد کارگرهای بیشتر،همواره از تعداد کارگرهای سریع ولی کمتر، پر سرعتتر است. به همین دلیل در هنگام ورود پردازندههای دو هستهای شاهد بودیم که فرکانس کاری آنها در مقایسه با پردازندههای تک هستهای بطور قابل توجهی کاهش یافته بود.
یکی از مسائلی که اکثر کاربران را دچار مشکل کردهبود کاهش فرکانسهای کاری در پردازندههای دو هستهای است. در واقع سؤال خیلیها این بود که برای مثال پردازنده 3،6 گیگاهرتزی پنتیوم4 قویتر است یا پردازنده 1،8 گیگاهرتزی Core 2؟
شاید با مثال بالا کمی شبهات برطرف شدهباشد. البته تمام برتری پردازندههای دو هستهای جدید به پردازش موازی آنها نیست اما میتوان گفت بارزترین علت این برتری همین توانایی و قابلیت پردازش موازی است.
اما این قضیه تمام جریان نیست. با ورود پردازندههای چند هستهای مشکلات و نقاط ضعف جدید نیز مطرح شدند.در واقع همیشه میزان بار کاری لازم برای استفاده از دو یا چهار هسته پردازنده وجود ندارد.همچنین در تقسیم و انتشار بار کاری بین هستههای پردازشگر نیز هنوز مکانیزم صحیحی دیده نمیشد. به عبارت بهتر واسطهای فیزکی ( Hyper transportدر AMD و Front Side Buss و Intel) ممکن است سبب ایجاد گلوگاه در این امر شوند. اگر به لایهای بالاتر نیز دقت کنیم سیستمعامل هم به به عنوان فرستنده و توزیع کننده، خود میتوانند سبب ایجاد گلوگاه گردد.
جدال نرمافزارها با پردازندههای چند هستهای
در بخش قبلی اشاره کردیم که یک نرمافزار در حالت ایدهآل میتواند به درستی از قابلیت Multi-Threading بهره گرفته و توانایی پردازش چند هستهای را به طرز درستی مورد استفاده قرار دهد.بحث بر سر این است که این استفاده درست از قابلیت Multi-Threading چگونه است. به خاطر بیاورید زمانی را که پردازندههای دو هستهای تازه به بازار عرضه شدهبودند. در آن زمان بازیهای وقت به خوبی بر روی پردازندههای تک هستهای اجرا میشدند اما بر روی پردازندههای دو هستهای کمی با مشکل مواجه شدهبودند. آنچه در زمان ورود پردازندههای دو هستهای مطرح میشد عدم توانایی نرمافزارها در استفاده از تمام قابلیتهای یک پردازنده دو هستهای بود. چراکه نرمافزارها نمیتوانستند بار کاری خود را به رشتههای قابل پردازش یکسان از لحاظ حجم کاری تقسیم کرده و بدین ترتیب سرعت انجام پردازش را افزایش دهند. در مقابل عبارت Multi-Threading میتوان مفهوم Multi-tasking را مطرح کرد. به عنوان مثال استفاده از یک مرورگر برای دیدن صفحات اینترنتی و همزمان با آن گوش دادن به موسیقی،مفهوم چندوظیفهای را توجیه میکند. جریانی که پردازندههای دو هستهای ویا چند هستهای به خوبی از عهده آن برمیآید.چرا که دیگر بحث بار کاری یک نرمافزار مستقل مطرح نیست. اما همانطور هم که قبلاً اشاره کردیم Multi-Threading بصورت ایدهآل(حداقل در بین خیل زیادی از نرمافزارهای فعلی)وجود ندارد.اما به نوعی هم گوشهای از عملیات Multi-Threading دیده میشود. برای مثال آنتیویروس را میتوان یک رشته قابل پردازش و دستور اسکن سیستم را رشتهای دیگر فرض کرد. اما آنچه مسلم است ایت است که حجم کاری این دو رشته یکسان نیست و لذا Multi-Threading به معنا و مفهوم ایدهآل خود اجرا نخواهد شد.
با توضیحات فوق میتوان به این نتیجه رسید که یکی دیگر از عواملی که قابلیتهای یک پردازنده چندهستهای را محدود میکند وجود نرمافزارهای اینچنینی است. در واقع در هنگام اجرای یک نرمافزار آنتی ویروس و در کنار آن تماشای یک DVD میتوانید به افزایش کارآیی سیستم خود پی ببرید(Multi-tasking) اما در هنگام اجرای یک یک نرمافزار بر روی پردازنده چندهستهای خود شاید این تفاوت را اصلاً احساس نکنید.
توسعه نرمافزارها در حالت Multi-Threading ایدهآل، کار سختی است. در کنار کار سخت، هزینه بالا نیز ناگزیر خواهد بود. به همین دلیل است که هنوز اکثر نرمافزارها به این سمت کشیدهنشدهاند. هرچند در بین بازیهای جدید و بهروز مواردی دیده میشود که سازندگان آنها توانایی پشتیبانی از پردازندههای چندهستهای را در ساختار اجرایی بازی لحاظ کردهاند.
سخن پایانی
همانطور که ملاحظه کردید پردازندههای دو هستهای و نیز چندهستهای از لحاظ سرعت انجام کار(بدون توجه به فرکانس کاری) برتری خود را ثابت کردهاند. تنها عاملی که میتوان در سطح کاربردی آن را مهم دانست وجود نرم افزارهای سازگار با پردازندههای چندهستهای است.مشکلی که در ابتدای ورود آنها دیده میشد و به تدریج در حال رفع شدن است. در واقع سازندگان نرمافزار ناچار به پذیرش این ساختار جدید هستند. تمام حالات فوق سبب نمیشود که در خرید پردازندههای چندهستهای شک کنید. چرا که در آیندهای نهچندان دور «پردازش موازی» و «پردازش چند وظیفهای» مهمترین عامل در پروسه پردازش خواهد بود.بنابراین اگر قصد خرید پردازندههای چند هستهای را دارید در مورد آن تردید نکنید. آینده از آن پردازندههای چند هستهای است.
منبع: ماهنامه رایانه خبر
کلمات کلیدی : مقاله، سختافزار، Hardware