رایانش موازی از طریق پردازنده های چند هسته ای و چند تاری( Multithreaded)
پردازنده های چند هسته ای و چند تاری( Multithreaded)، به یک رویکرد جدید، برای دستیابی به افزایش عملکرد CPU تبدیل شده اند. اکثر نرم افزارهای کاربردی عددی، از افزایش تعداد هسته های محاسباتی قدرتمند سود می برند. در مورد سرورها، معمولاً اگر مدار تراشه برای به حداکثر رساندن توان عملیاتی، از طریق اجرای تارهای ( threads) متعدد در هر هسته مورد استفاده قرار گرفته باشد، مزیت بیشتری را به همراه خواهد داشت.
ما در این مقاله به بررسی پردازنده های چند هسته ای و چند تاری خواهیم پرداخت که امروزه در بازار حضور دارند. در عین حال، ارزیابی تصمیم گیری های زیربنائی در حوزه طراحی پردازنده ها، بازدهی مصرف برق و موضوعات نرم افزاری مرتبط با خصوصیات فشار کاری و نرم افزارهای کاربردی نیز بخشی از مقاله حاضر را تشکیل می دهند.
بطور سنتی، قدرت عملکرد پردازنده ها، هر 18 ماه یکبار تقریباً دو برابر شده است، زیرا پیشرفتهای بدست آمده در حوزه فناوری های تولید تراشه به افزایش سرعت های کلاک پردازنده ها و همچنین پیچیدگی طراحی آنها منتهی گردیده اند. با اینحال، موانعی در مسیر تداوم ارتقاء چشمگیر فرکانس های کاری این تراشه ها وجود دارند که به مشکلاتی نظیر نشت ولتاژ در بین مؤلفه های داخلی تراشه و همچنین محدودیت های انتشار حرارتی مربوط می شوند.
قانون مور( Moore Law که پیش بینی کرد چگالی مدارات داخل تراشه ها هر 18 ماه یکبار دو برابر خواهد شد) هنوز اعتبار خود را حفظ کرده و توانائی افزایش پیچیدگی تراشه ها را در اختیار طراحان سخت افزاری قرار می دهد. در واقع این اعتبار تا زمانی که CPUها به محدودیتهای سخت فیزیکی در رابطه با چگالی مدار برخورد نکرده اند، ادامه خواهد داشت.
در گذشته، تولیدکنندگان از ظرفیت اضافی برای توسعه CPUهای سوپراسکالر با واحدهای اجرائی تکراری و خط لوله های عمیق( به منظور بهره برداری از موازی سازی یا Parallelism در سطح دستورالعمل)، استفاده می کردند. با اینحال، آنها به این ترتیب تنها 25 درصد از فضای اضافی تراشه که در هر سال با اضافه شدن ویژگی های جدید معماری در دسترس قرار می گرفت را به بازدهی می رساندند. بعلاوه، فاصله عملکردی مابین پردازنده ها و حافظه، بهره احتمالی از افزایش دائمی فرکانس پردازنده ها را محدود می کند. بنابراین، مسیر طراحی که در حال حاضر به منظور افزایش عملکرد دنبال می شود، از فضای قابل دسترسی تراشه برای توسعه CPU های چند هسته ای و چند تاری استفاده می نماید. این طراحیها از چند وظیفگی( Multitasking) از طریق برنامه های موازی و یا اجرای همزمان نرم افزارهای کاربردی متعدد، پشتیبانی می کنند.
طراحان در ابتدا CPUهای چند تاری( Multithreaded) را معرفی نمودند که Content-Switching( سویچینگ لایه چهار تا هفت) مابین تارها را در سطح سخت افزار، پیاده سازی می کردند تا زمان بی باری منابع در پردازنده های سوپراسکالار پیچیده را کاهش دهند. پس از مدت کوتاهی، طراحان بیش از یک هسته پردازنده را بر روی یک تراشه واحد ترکیب نمودند و حالا ما پردازنده های 8 هسته ای را در اختیار داریم. با این فرض که قانون مور همچنان معتبر باشد، می توانیم انتظار داشته باشیم که تعداد هسته های پیاده سازی شده بر روی تراشه ها هر دو سال یکبار دو برابر شده و به این ترتیب در آینده نزدیک شاهد ارائه CPUهائی با 16 پردازنده ( و یا بیشتر) باشیم.
هر رشته On-chip به مؤلفه های وضعیت مخصوص به خود نظیر نشانگر (Pointer) دستورالعمل و سایر رجیسترهای کنترلی نیاز دارد. بنابراین، تعداد تکرارهای مورد نیاز از مؤلفه های وضعیت( State Components) و متعاقباً بالاترین درجه پشتیبانی سخت افزاری از همزمانی و اشباع واحدهای اجرائی براساس تعداد تارهای On-chip تعیین می گردد. تارهای بیشتر در عین حال امکان پنهان سازی تأخیرهای دسترسی و یا وقفه های ایجاد شده بخاطر خطای پیش بینی انشعاب را فراهم می کنند. پردازنده زئون اینتل برای پشتیبانی از یک رشته سخت افزاری ثانویه، تنها به 5 درصد فضای تراشه بیشتر نیاز دارد، اما پس از این افزایش، بطور آشکارا Super-Linear خواهد بود.
تعداد تارهای On-chip در هر هسته که بطور معمول توسط پردازنده های تجاری پشتیبانی می شوند، از 2 در پردازنده های Xeon اینتل تا 8 در پردازنده های Sun UltraSPARC T2 متغیر است. عدد فوق العاده 128 تار در Tera/Cray MTA نشان دهنده یکی از اولین طراحیهای موفق عملی( و نه تجاری) است. این پردازنده به تعداد زیادی از تارها نیاز داشت تا تأخیرهای دسترسی حافظه را پنهان نموده و فقدان یک کاشه در معماری خود را جبران کند. طراحان از همین طراحی در واحد پردازنده گرافیکی فوق العاده چند تاری Nvidia GT200 استفاده کرده اند که در آن از حداقل کاشه ممکن استفاده شده است تا منابع محاسباتی اضافی به حداکثر برسند.
جدول [1] نشان می دهد که تولیدکنندگان از تنوعی از روشها برای سوئیچ مابین تارهای داخل هر هسته استفاده می نمایند. این روشها از ایجاد تناوب مابین تارها( Alternating) تا صدور واقعی دستورالعملها از تارهای متعدد در هر سیکل را در بر می گیرند. جدیدترین پردازنده ها، از روش دوم استفاده می کنند که معمولاً تحت عنوان SMT(Simultaneous MultiThreading) شناخته می شود، هرچند که اینتل آن را تحت عنوان فناوری HTT(Hyperthreading Technology) معرفی نموده است. SMT در هر سیکل، دستورالعملهائی که قبلاً کدگشائی شده اند را از تنها یک زیرمجموعه از تارهای On-chip ارسال می کند. تعداد تارهای داخل این زیرمجموعه در عین حال بر میزان بکارگیری واحدهای اجرائی تأثیر می گذارد، خصوصاً اگر تارها، استفاده یکدیگر از این واحدها را تکمیل نمایند. با اینحال، در حال حاضر هیچ پردازنده تجاری در دسترس قرار ندارد که بتواند صدور دستورالعملها را از بیش از دو رشته در هر هسته و هر سیکل انجام دهد.
گرایش های موجود در حوزه توسعه معماری ها، بیانگر یک حرکت به سمت تکرار مؤلفه های اضافی On-chip ( نظیر کنترلر حافظه و کاشه ها) هستند که می توانند خصوصی بوده و یا به اشتراک گذاشته شوند. برای مثال، هریک از پردازنده های IBM Power6 و AMD Opteron دارای کاشه های L2 اختصاصی هستند، اما چند کنترلر حافظه را به اشتراک می گذارند.
بعضی از طراحی ها از چند کنترلر حافظه مجتمع پشتیبانی می کنند تا امکان مقیاس پذیری پهنای باند دسترسی حافظه با تعداد هسته ها را فراهم نمایند. هر دو پردازنده
IBM Power6 و Sun UltraSPARC T2 در این گروه قرار دارند. ادغام یک هسته GPU بر روی تراشه، گزینه دیگری به حساب می آید که برای نسل بعدی CPUها مطرح شده است. یک روش مشابه، قبلاً در بازارهای موبایل و Embedded مورد استفاده قرار گرفته و به دفعات هر دو هسته همه منظوره ( General-Purpose) و هسته پردازنده سیگنال دیجیتال را بر روی یک تراشه واحد ادغام کرده است. سیستم Blu Gene/P شرکت IBM بر یک طراحی SoC(System on-chip) فوق العاده مجتمع تکیه دارد و به 4 هسته، 5 اینترفیس شبکه، 2 کنترلر حافظه و 8 مگابایت کاشه L3 مجهز می باشد که به سیستم امکان می دهند به صدها هزار پردازنده مقیاس دهی گردد. کنترلرهای حافظه مجتمع، I/O، توابع امنیتی و یک اینترفیس شبکه پیشرفته در پردازنده های UltraSparc، می تواند مثال بسیار خوب دیگری باشد.
سازماندهی حافظه کاشه، یکی از ملاحظات بسیار مهم به حساب می آید. جدیدترین طراحیهای تراشه های چند هسته ای، دارای یک کاشه L1 اختصاصی برای هر هسته می باشند تا میزان رقابت برای این سطح حیاتی از کاشه را به حداقل ممکن برسانند. اگر هسته از تارهای سخت افزاری متعددی پشتیبانی کند، کاشه L1 مابین تارهای داخل هر هسته به اشتراک گذاشته می شود. تخصیص کاشه L2 در طراحیهای چند هسته ای دارای تنوع بیشتری می باشد. این کاشه می تواند بطور خصوصی یا اختصاصی برای هر هسته پیاده سازی گردیده و یا مابین هسته ها به اشتراک گذاشته شود. کاشه L3 بطور تاریخی یک ساختار خارج از تراشه ( Off-chip) و اشتراکی بوده است، اما طراحیهای جدیدتری نظیر Itanium شرکت اینتل و Opteron چهار هسته ای شرکت AMD به کاشه های L3 از نوع on-chip مجهز هستند.
اینکه کاشه های اشتراکی مفیدتر هستند یا کاشه های خصوصی، نه تنها به مصالحه های مرتبط با استفاده از فضای تراشه، بلکه به خصوصیات نرم افزارهای کاربردی بستگی خواهد داشت. کاشه های اشتراکی در صورتی اهمیت بیشتری خواهند یافت که تارهای یک نرم افزار کاربردی واحد بر روی هسته های متعددی اجرا گردیده و مقدار قابل ملاحظه ای از داده ها را به اشتراک بگذارند. در این صورت، یک کاشه اشتراکی بسیار اقتصادی تر خواهد بود زیرا از ایجاد کپی های متعدد داده ها و انتقالهای مکرر« کاشه به کاشه» اجتناب خواهد کرد. با اینحال، کاشه های اشتراکی می توانند تقاضاهای بسیار زیادی را بر اتصالات داخلی( Interconnects) تحمیل نمایند.
تارهای نرم افزاری که داده های زیادی را به اشتراک نمی گذارند، می توانند به رقابت برای کاشه بپردازند. این وضعیت، پیش بینی سرویس مورد نیاز هر رشته را دشوار خواهد نمود زیرا اینکار به جزئیات الگوهای دسترسی حافظه، مکان دسترسی حافظه و همچنین بار کاری سیستم بستگی خواهد داشت. کاشه های خصوصی، یک راه حل آسان برای تفکیک عملکرد و تضمین قابلیت پیش بینی سرویسها را فراهم می کنند.
بعنوان یک روش انعطاف پذیرتر، یک طراحی دو رگه( Hybrid) تعداد مختلفی از بانکهای کاشه را فراهم می نماید که برحسب نیازهای تارهای در حال اجرا به کاشه، بعنوان کاشه های خصوصی و یا اشتراکی تخصیص داده شوند. این روش می تواند از هر گروه تارهائی که داده ها را به اشتراک می گذارند و تارهائی که داده ها را به اشتراک نمی گذارند، پشتیبانی کند. همانطور که در تحقیقات اخیر پیشنهاد شده است، طراحی دو رگه می تواند برای تقسیم بندی متناسب بصورت دینامیک، بهسازی گردد. این ویژگی، امکان تأمین یک سطح سرویس معادل یک تراشه تک هسته ای با مقدار متناظری از منابع کاشه تدارک دیده شده را برای هر هسته تأمین می کند.
برای مثال، بعضی از طراحی ها تقسیم بندی را برای بافرهای دستورالعمل پیاده سازی می نمایند. تقسیم بندی ثابت، مرزهای قطعی را ایجاد می کند در حالیکه تقسیم بندی دینامیک می تواند مرزها را بطور انعطاف پذیری انتخاب نموده و در نتیجه یک حداقل سهم را برای هریک از تارهای در حال اجرا حفظ کند. اشتراک گذاری، انعطاف پذیری بسیار بیشتری را در استفاده از منابع امکانپذیر می سازد، اما باعث افزایش احتمال رقابت گردیده و می تواند به مکانیزمهائی برای جلوگیری از انحصارطلبی ( Monopolization) نیاز داشته باشد. اکثر طراحیهای چند تاری، از ترکیبی از اشتراک گذاری، تکرار و تقسیم بندی استفاده می کنند. تصمیم گیری طراحی براساس میزان رقابت بر سر یک منبع خاص در بین تارها، ملاحظات بی طرفی و هزینه انجام می شود.
با کاشه های صرفاً خصوصی بر روی تراشه، تبادل داده ها مابین تارهای در حال اجرا بر روی هسته های مختلف، بطور تاریخی استفاده از Interconnect های خارج از تراشه( Off-chip) را اجباری ساخته است. کاشه های On-chip اشتراکی بطور طبیعی از تبادل داده ها مابین تارهای در حال اجرا بر روی هسته های مختلف پشتیبانی می کنند. بنابراین، معرفی یک سطح از کاشه اشتراکی بر روی تراشه ( عموماً L2 و یا در گرایشهای تازه تر، L3) و یا پشتیبانی از میان برهای تبادل داده نظیر انتقال کاشه به کاشه، به کاهش ترافیک Off-chip کمک خواهد نمود. با اینحال، تعداد بیشتر سطوح کاشه On-chip، اتصالات داخلی بر روی تراشه را ملزم به پشتیبانی از ملزومات بسیار بیشتری در زمینه پهنای باند و پیچیدگی می نماید.
با افزایش پردازش داده ها از طریق موازی سازی بیشتر در سطح رشته، معمولاً تقاضا برای بافت ارتباطی Off-chip نیز برای دسترسی های حافظه، I/O و یا ارتباطات مابین پردازنده ها افزایش می یابد. به منظور برآورده نمودن این ضرورت، ارتباطات Off-chip از ساختارهای مبتنی بر گذرگاه به Interconnectهای نقطه به نقطه مبتنی بر بسته گرایش پیدا کرده اند AMD اولین بار این مفهوم را بصورت HyperTransport پیاده سازی کرد و سپس اینتل نیز با QuickPath مسیر مشابهی را دنبال نمود. اتصالات Off-chip و پشتیبانی از وابستگی داده ها( data-coherency) در عین حال بر مقیاس پذیری سرورهای مبتنی بر CPUهای متعدد، تأثیر می گذارد.
GPU یک مثال فوق العاده از طراحی چند هسته ای اختصاصی به حساب می آیند.GPUهای مدرن دارای 10 هسته یا بیشتر هستند که هریک از آنها برای پردازش SIMD داده ها که از طریق صدها و یا هزاران رشته ساده شده در هر هسته انجام می گردد، بهینه سازی شده اند. این ویژگی، آنها را برای پردازش شدیداً عددی نظیر راندوی ویدیوئی، ژن شناسی، مدلسازی علمی و یا رمزنگاری مناسب می سازد.
در رابطه با توان عملیاتی برای نرم افزارهای کاربردی عددی SPECfp، پردازنده Opteron در هنگام استفاده از کد شدیداً بهینه سازی شده تنها اندکی بهتر از Sun UltraSPARC T2 خواهد بود، اما با استفاده از بهینه سازی استاندارد به یک برتری 26 درصدی دست پیدا می کند. با اینحال، UltraSPARC T2 پردازنده Opteron را در مقایسه چند تاری SPECweb 2005 برای زمانهای پاسخ و توان عملیاتی سرورهای وب با سرویس دهی به 36 درصد درخواستهای بیشتر در طول یک دوره زمانی مشابه، پشت سر می گذارد.
مطالعات شبیه سازی با نرم افزارهای کاربردی بانک اطلاعاتی، خصوصاً OLTP و DSS، چهل درصد کاهش در زمان پاسخدهی را برای POWER5 در مقایسه با UltraSPARC T1 نشان داده اند، البته در صورتی که یک بار کاری اشباع نشده بر آنها تحمیل گردد. با اینحال، UltraSPARC T1 تحت فشارهای کاری اشباع شده توانست 70 درصد برتری توان عملیاتی را به نمایش بگذارد.
عملکرد چند تاری: مزایای تعدد تارهای سخت افزاری، تا حدودی به این موضوع بستگی خواهند داشت که نرم افزار کاربردی از Multithreading استفاده می کند یا Multiprocessing. فعال نمودن Hyperthreading دو تاری بر روی پردازنده Xeon اینتل با یک افزایش عملکرد 33 درصدی نسبت به اجرای تک تاری برای نسخه OpenMP مقایسه NAS FT همراه بود. در مقایسه، نسخه Multiprocess مقایسه NAS FT شاهد کاهش عملکرد بود. نسخه OpenMP مقایسه FT با 8 درصد افت عملکرد نسبت به اجرای تک تاریای مواجه شد، در حالیکه نسخه چند پردازشی استاندارد FT شاهد یک افت 50 درصدی در عملکرد بود که تا حدود زیادی به رقابت بر سر حافظه توسط ارتباطات شدید Interprocess مربوط می شد.
عملکرد چند هسته ای: مثال پردازنده های دو هسته ای AMD Opteron، با دستیابی به 37 درصد عملکرد بهتر هنگام بکارگیری هسته دوم در اندازه گیریهای مقایسه استاندارد چند پردازشی NAS CG/FT، بهره عملکردی هسته های متعدد را به نمایش می گذارد. همین مطالعه در عین حال نشان داد که یک تراشه دو هسته ای در مقایسه CG تنها 5/8 و در مقایسه FT تنها 9 درصد کندتر از دو تراشه که هرکدام در حال استفاده از یک هسته واحد هستند، عمل می کند. این در حالی است که یک تراشه دو هسته ای بازدهی بسیار بالاتری در زمینه هزینه ها و مصرف برق را به همراه دارد.یک مطالعه دیگر با نرم افزارهای کاربردی چند پردازشی خالص که بر روی کلاسترهای بزرگی با حداکثر 4096 پردازنده اجرا می شدند، مزیتهائی مابین 20 تا 50 درصد را با استفاده از یک هسته ثانویه به نمایش گذاشت.
UltraSPARC T1 از شرکت Sun که تعداد FPUهای موجود بر روی تراشه را کاهش می دهد و یا پردازنده Atom اینتل که اجرای خارج از ترتیب را حذف می نماید، مثالهای خوبی در این زمینه می باشند. در پردازنده Cell که یک مورد غائی در این زمینه به حساب می آید، گرایش مذکور به کاهش چشمگیر مجموعه دستورالعملها و حذف پیش بینی دینامیک انشعاب یا بازچینی( Reordering) دستورالعملها منتهی گردیده است. سایر تراشه ها( نظیر Power6 که واحدهای FPU و Integer شدیداً بهینه سازی شده نظیر یک FPU دسیمال را ارائه می کند)، پیچیدگی را افزایش داده اند تا عملکرد هر هسته را به حداکثر برسانند. پردازنده های Mainframe در عین حال به پشتیبانی از پردازش نقل و انتقالات سنگین نیز احتیاج دارند. به همین دلیل، پردازنده z10 شرکت IBM معماری Power6 را با پیش بینی پیشرفته انشعاب و مدیریت کاشه، توسعه داده است.
افزایش پهنای صدور( Issue-Width) در عین حال باعث حداکثر سطح عملکرد نیز خواهد شد، همانند معماری POWER5 که 5 دستورالعمل را در هر سیکل صادر می کند و یا تراشه های AMD که تنها 3 دستورالعمل را در هر سیکل صادر می کنند. پردازنده هائی که بر روی عملکرد هر رشته تمرکز دارند، بطور کلی دارای سرعتهای کلاک بسیار بالاتری در مقایسه با پردازنده هائی می باشند که بر پشتیبانی از تعداد بیشتر تارها متمرکز هستند. این تمایز بخوبی در نرخ کلاک 5 گیگاهرتزی پردازنده IBM POWER6 و سرعت کلاک 3/73 گیگاهرتزی پردازنده PentiumExtremeEdition در مقایسه با سرعت کلاک 1/6 گیگاهرتزی پردازنده شدیداً چند تاری UltraSPARC T2 قابل مشاهده است.
با اینحال، استفاده از فضای اضافی تراشه برای ارتقاء عملکرد هر رشته، به بهره های غیر خطی منتهی می شود. بعبارت ساده تر، تجربه نشان می دهد که چهار برابر شدن پیچیدگی تنها با دو برابر شدن عملکرد همراه خواهد بود. یکی از ملاحظات مهم در زمینه سطح عملکرد برای هر نرم افزار کاربردی، این است که برنامه های سریال نمی توانند از همزمانی تراشه بهره برداری کنند. حتی در برنامه های موازی نیز بعضی از قسمتهای الگوریتم بایستی بصورت ترتیبی ( Sequential) اجرا شوند و قانون Amdahl اشاره می کند که حداکثر سرعت یک الگوریتم براساس درصد بخش ترتیبی آن مشخص می گردد. متوازن نمودن پیچیدگی هسته و تعداد هسته ها، به همراه بازخوردهای کاهش دهنده از عملکرد بالاتر هر رشته را می توان بعنوان ضمیمه ای از این قانون، به رسمیت شناخت. در عین حال، این ضمیمه در کنار سایر ملاحظات به نتیجه گیریهای زیر منتهی خواهد شد:
- تعداد زیاد هسته های ساده دارای ارجحیت خواهد بود، مادامیکه بخش سریال نرم افزار کاربردی بسیار کوچک باشد. در غیر اینصورت، هسته های پیچیده تر بسیار مفیدتر هستند.
- با افزایش تقاضا برای فضای تراشه به منظور پیاده سازی اتصالات داخلی مابین تعداد بیشتری از هسته ها و مقیاس پذیری محدود نرم افزار کاربردی بخاطر فقدان موازی سازی کافی، سربار هماهنگ سازی و یا عدم توازن بار کاری، هسته های پیچیده تر ارجحیت پیدا می کنند.
- نرم افزارهای کاربردی که می توانند سطح بالائی از حداکثر عملکرد تئوریک را بکار بگیرند( نظیر نرم افزارهای کاربردی با تأکید بر محاسبات ممیزی شناور و یا نرم افزارهای کاربردی عددی شدیداً موازی)، می توانند نتایجی بالاتر از آنچه که معمولاً پیش بینی می شود را از پیچیدگی بیشتر بدست آورند.
با اینحال، علاوه بر عملکرد هر نرم افزار کاربردی، بار کاری کلی نیز بایستی در نظر گرفته شود. عملکرد هر نرم افزار کاربردی زمانی اهمیت خواهد داشت که بار کاری کلی تنها حاوی اندکی از نرم افزارهای کاربردی بوده یا با نرم افزارهای کاربردی حساس به عملکرد سر و کار داشته باشیم. در غیر اینصورت، به آسانی می توان بکارگیری مناسب را از بارهای کاری با چندین وظیفه سریال و نرم افزارهای کاربردی موازی که تنها به کسری از تعداد هسته های مقیاس دهی شده اند، بدست آورد. این ترکیب می تواند به یک توان عملیاتی (Throughput) بالا و همچنین زمانهای برگشت ( Turnaround) مناسب منتهی گردد که از اهداف طراحی سرورهای تجاری نظیر سرورهای وب و یا سرورهای بانک اطلاعاتی به حساب می آیند. برای ایجاد توازن مابین عملکرد هر رشته و توان عملیاتی، مقیاس اول زمانی افزایش خواهد یافت که امکان تخصیص منابع بیشتری بر روی تراشه بصورت دینامیک وجود داشته باشد( مثلاً برای اجرای قضاوتی یا Speculative Execution). این وضعیت احتمالاً برای نرم افزارهای کاربردی با وابستگی بالا به داده ها و « Miss»های کاشه مفید خواهد بود. پردازنده Rock شرکت Sun که در مراحل پیش از تولید قرار دارد، این ایده را با استفاده انتخابی از دو رشته سخت افزاری در هر هسته برای اجرای یک رشته نرم افزار کاربردی، پیاده سازی می نماید. یک روش ساده تر که قبلاً در بعضی از پردازنده های چند تاریای اعمال شده است، در صورت اجرا در حالت تک وظیفگی( Single-Task) منابع تقسیم بندی شده را به یک رشته تخصیص می دهند. این روش برای مثال در پردازنده های Xeon و PentiumExtremeEdition اینتل پیاده سازی شده است.
بعنوان یک احتمال دیگر، طراحی تراشه می تواند شامل تنوعی در رابطه با پیچیدگی هسته ها باشد( نظیر پردازنده Cell شرکت IBM). چند هسته با پیچیدگی بالا می توانند بخشهای ترتیبی نرم افزارهای کاربردی سنگین را اجرا کنند. اگرچه اینگونه پردازنده ها هنوز قابل دسترسی نیستند، اما تحقیقات نشان می دهند که پردازنده های حاوی تعداد زیادی از هسته های ساده و تعداد کمی هسته های دارای عملکرد بالا می توانند بالاترین قدرت کلی پردازش را برای سطح معینی از فضای تراشه و مصرف برق فراهم نمایند. با اینحال، طراحی و برنامه ریزی این پردازنده ها می تواند بسیار دشوارتر باشد.
از آنجائیکه هسته ها ساده تر شده اند، مصرف برق آنها بطور خطی کاهش می یابد که یک برتری مهم برای پردازنده های چند هسته ای به حساب می آید. افزایش بازدهی مصرف برق و کاهش گرمای تولید شده، امکان ادغام هسته های بیشتر در داخل یک پردازنده واحد را فراهم می سازد، البته با این مصالحه که مصرف برق اتصالات داخلی با تعداد هسته های یک پردازنده افزایش پیدا می کند. مصرف برق بر انتخاب مابین طراحیهای چند هسته ای و طراحیهای چند تاری تک هسته ای تأثیر می گذارد: گزینه اول از بازدهی مصرف برق بالاتری برخوردار است، اما طراحیهای دو رگه با هسته های SMT متعدد همان سطح از عملکرد برای هر وات معادل با طراحیهای CMP خالص را تأمین می کنند. پردازنده های چند هسته ای در عین حال گزینه های بیشتری را برای مدیریت مصرف برق ارائه می کنند، زیرا امکان مدیریت مصرف برق هسته های CMP بطور جداگانه از طریق خاموش کردن آنها و یا کاهش فرکانس کاری در مواقعی که سیستم با بار کاری سبکی درگیر است، وجود خواهد داشت. تنظیم مصرف برق یک موضوع حیاتی در حوزه Computing موبایل به حساب می آید، اما سرورها نیز می توانند تا حدود زیادی از آن سود ببرند.
از یک نقطه نظر کلی، افزایش هزینه های الکتریکی باعث تقاضا برای افزایش بازدهی مصرف برق پردازنده ها و سایر مؤلفه های سیستم می گردد، با این مزیت اضافی که هزینه های خنک کنندگی را کاهش می دهد. با وجود آنکه CPU تنها 25 تا 45 درصد از برق مصرفی یک سرور را به خود اختصاص می دهد، هزینه های الکتریکی تحمیل شده برای یک دوره 4 ساله می توانند به قیمت خرید خود سیستم نزدیک شوند. در مورد ماشینهای Computing با عملکرد بالا، ساخت راه حلهای سفارشی سازی شده خنک کنندگی می تواند درست به اندازه خود کامپیوتر هزینه در بر داشته باشد. بعلاوه، کاهش مصرف برق امکان افزایش چگالی Rack را در اتاقهای سرور فراهم می سازد.
بهینه سازی مقیاس عملکرد برای هر وات و هر دلار، در عین حال امکان دستیابی به معماریهای فوق العاده مقیاس پذیر را فراهم می سازد. IBM Blu Gene/P و IBM Blu Gene/L که با سرعت کلاک 850 مگاهرتز کار می کنند، مثالهای فوق العاده ای در این زمینه هستند. معماری Blu Gene/p که برای سادگی، هزینه تولید پائین، یکپارچه سازی بالا و مقیاس پذیری قابل ملاحظه طراحی شده است، با بهره گیری از 40960 پردازنده به قدرت 450 ترافلاپس دست پیدا می کند. IBM hybrid QS22/LS21 که در فهرست Top 500 سال 2009 بعنوان سریعترین معماری با بالاترین سطح بازدهی مصرف برق معرفی شده، در سوپر کامپیوتر Roadrunner آزمایشگاه های ملی Los Alamos مورد استفاده قرار گرفته است. این معماری در عین حال بالاترین رتبه را در فهرست Green 500 که در نوامبر سال 2008 منتشر شده بود را به خود اختصاص داده است. کسب این رده بندیهای عالی با بهره گیری از بازدهی مصرف برق و هزینه تراشه های Cell بعنوان پردازنده های محاسباتی اصلی امکانپذیر گردیده است.
نرم افزار سرور می تواند دارای ساختار چند تاری باشد تا توان عملیاتی بالاتری را با جایگذاری ( Interleaving) در خواستها و احتمالاً بهره برداری از CPUهای متعدد فراهم نمایند. با اینحال، اکثر نرم افزارهای عادی برای همزمانی آماده نشده اند. امکانات موجود برای استخراج موازی سازی بطور خودکار در حال حاضر بسیار محدود هستند و موازی سازی معمولاً بایستی صراحتاً بیان گردد. به همین دلیل، Herb Sutter معتقد است که تغییر به سمت برنامه نویسی موازی برای ماشینهای معمولی، تحول بزرگ بعدی پس از معرفی برنامه نویسی شیء گرا خواهد بود. نوشتن برنامه های موازی صحیح و کارآمد، یک چالش مهم است که به ابزارهای بهتر و مدلهای برنامه نویسی انتزاعی تری نیاز دارد تا سلامت و راحتی برنامه نویسی رشته را افزایش دهند. راه حلهای احتمالی براساس تجربیات بدست آمده در Computing با عملکرد بالا ارائه خواهند شد، در حالیکه بازار فوق العاده گسترش یافته این حوزه نیز انگیزه لازم برای بهبود بیشتر تکنیکهای HPC را فراهم می سازد.
توسعه دهندگان نرم افزارهای عمومی می توانند از مدل برنامه نویسی حافظه اشتراکی OpenMP اقتباس نمایند که بطور گسترده ای در HPC مورد استفاده قرار می گیرد. یک مسیر نویدبخش دیگر، حافظه تراکنشی ( Transactional) است که مفهوم تراکنش را از بانکهای اطلاعاتی عاریه گرفته و هماهنگ سازی دسترسی به داده ها را از طریق مکانیزمهای خودکار Rollback و Checkpointing تسهیل می نماید. Sun Rock اولین پردازنده ای است که از این مدل بصورت سخت افزاری برای موارد عمومی پشتیبانی می نماید. بجای صرف زمان بیشتر برای توسعه نرم افزار موازی، یک روش اقتصادی تر از کامپایلرها و کتابخانه های موازی سازی شده نظیر کتابخانه BLAS(Basic Linear Algebra Subprograms) استفاده می کند. نیاز به ابزارها و مدلهای برنامه نویسی بهتر، در عین حال بر HPC نیز تأثیر می گذارد. در حال حاضر، حتی اگر امکان به اشتراک گذاشتن داده ها نیز وجود داشته باشد، بسیاری از برنامه نویسان موازی انحصاراً از پردازشها استفاده می کنند، علیرغم آنکه عملکرد کلی از پیاده سازی چند تاری نرم افزاری بر روی گره های SMP(Symmetric Multiprocessing) حافظه اشتراکی سود می برد. کلاسترهای HPC با گره های چندین هسته ای برای دستیابی به مقیاس پذیری و بازدهی بالاتر احتمالاً نیازمند استفاده از مدلهای برنامه نویسی Thread/Process دو رگه هستند. خوشبختانه، کاربران Multithreading را ترجیح می دهند و احتمالاً گامهای اضافی به سمت پیاده سازی آن را آسانتر از اولین گامهای برداشته شده از پردازش سریال به Multiprocessing خواهند یافت. بعلاوه، نرم افزارهای کاربردی HPC به نمایش سطح بالاتری از موازی سازی در مقایسه با گذشته نیاز دارند تا از همزمانی سخت افزاری تأمین شده توسط پردازنده های چند هسته ای بهره گیری نمایند. اینکار احتمالاً تنها تا سطح معینی امکانپذیر خواهد بود زیرا مقیاس پذیری نرم افزارهای کاربردی محدود است، مگر آنکه اندازه مسائل افزایش پیدا کند. یک عامل محدود کننده دیگر این است که افزایش تعداد هسته ها کمتر از افزایش تعداد پردازنده ها برای عملکرد سودمند خواهد بود، به استثناء زمانی که تارها داده هائی را به اشتراک می گذارند. بنابراین، CPU های چند هسته ای عملاً SMPهای جدید نیستند.
چالش نرم افزاری در عین حال بر کامپایلرهای عمومی را که احتمالاً نیاز دارند هسته های ساده شده یا اختصاصی ( نظیر هسته های داخل تراشه Cell و یا یک GPU) را آدرس دهی نمایند، تحت تأثیر قرار می دهد.
در حالیکه در گذشته خود سخت افزار تا حدود زیادی موازی سازی سطح دستورالعمل را استخراج می کرد، هسته های ساده شده اکنون به تلاش بیشتری از سوی کامپایلر برای بازچینی دستورالعملها، درج اشارات پیش بینی انشعاب استاتیک و Vectorize نمودن پردازش داده ها برای استخراج دستورالعملهای SIMD نیاز دارند.
در رابطه با سیستم عامل، Schedulerهای سنتی پردازنده به تغییراتی نیاز داشتند تا عدم تجانس و تفاوتهای عملکردی در سلسله مراتب cpu ها، هسته ها و تارهای سخت افزاری را هماهنگ نمایند. بعلاوه، تحقیقات نشان داده اند که زمانبندی( Sdheduling) با هدف به حداقل رساندن رقابت برای منابع، در صورتی اهمیت خواهد داشت که ماشین کاملاً تحت فشار بار کاری قرار گرفته باشد.
چالش بعدی، تطبیق نرم افزارهای کاربردی با نیازهای موجود به منابع تکمیلی در مواردی است که منابع به اشتراک گذاشته می شوند( نظیر نرم افزارهای کاربردی نسبتاً حساس به کاشه در شرایطی که کاشه ها به اشتراک گذاشته می شوند و یا نرم افزارهای کاربردی متکی بر محاسبات ممیزی شناور یا Integer در شرایطی که FPUها به اشتراک گذاشته شده اند). از آنجائیکه تارهای یک نرم افزار کاربردی واحد احتمالاً همگن هستند، امکان دستیابی به گزینه های انطباقی بهتر با تاریهای نرم افزارهای کاربردی مختلف وجود خواهد داشت. برای کلاسترهای HPC، این گزینه تا امروز در سطح بالائی مورد استفاده قرار نگرفته است زیرا برآورد تأثیرات رقابتی مابین برنامه هائی با تعداد زیادی از پردازشهای به هم پیوسته بسیار دشوار بوده و بایستی پیش از اجرای وظایف بر روی ماشین پیش بینی شوند. تحقیقات اخیر، تأثیرات رقابتی نسبتاً اندکی را برای اکثر ترکیبهای برنامه ها بر روی کلاسترهای 64 گره ای را با پتانسیل دستیابی به دقت پیش بینی بالاتر نشان داده اند.
در رابطه با محدودیتهای نرم افزاری، تعداد نسبتاً اندکی از نرم افزارهای کاربردی می توانند از همزمانی بسیار بالا برای افزایش عملکرد خود استفاده کنند. توان عملیاتی با اجرای چندین وظیفه سریال و یا چند نرم افزار کاربردی نسبتاً موازی( که بر روی سرورها قابل انجام است) افزایش می یابد، هرچند که ممکن است ماشینهای عمومی از این وضعیت سود نبرند. از سوی دیگر، موفقیت طراحیهای چندین هسته ای تا حدود زیادی به در دسترس قرار گرفتن مدلها، کتابخانه ها و ابزارهای برنامه نویسی مناسب بستگی خواهد داشت.
در حال حاضر CPUهای موجود گزینه های متفاوتی را در رابطه با طراحی خود و استفاده از فضای تراشه، ترکیب می کنند. ملاحظات طراحی نه تنها تعیین تعداد هسته ها و تارها، بلکه پیچیدگی هسته ها، اتصالات داخلی، اندازه کاشه ها و همچنین میزان و نوع مؤلفه های به اشتراک گذاشته شده را نیز در بر می گیرند. از آنجائیکه گزینه های طراحی با مصالحه های گوناگونی سر و کار دارند، یک طراحی کلی نگرانه که با نرم افزارهای کاربردی هدف و معیارهای بهینه سازی اضافی نظیر مصرف برق، انتشار حرارتی، تحمل نقص و هزینه هدایت می شود، ضرورت خواهد داشت.
در رابطه با تصمیم گیری میان تارهای سخت افزاری و هسته ها، به نظر می رسد که نقطه مناسب برای Computing عمومی در طراحیهای دو رگه نهفته است. امکان اضافه کردن تعداد کمی از تارهای On-chip در ازای افزایش نسبتاً اندکی در مدارات اضافی وجود خواهد داشت و می تواند بهبود چشمگیری را در توان عملیاتی به همراه داشته باشد. با اینحال، بازگشتهای کاهنده در عملکرد و افزایش هزینه های مدار، بهره بدست آمده از تارهای سخت افزاری را محدود خواهند کرد. بنابراین، عموماً بهتر است از فضای تراشه در ورای چند رشته سخت افزاری برای پیاده سازی تعداد بیشتری از هسته ها، کاشه بیشتر و سایر مؤلفه ها مورد بهره برداری قرار گیرد. CPUهای دو رگه در عین حال نشان داده اند که درست به اندازه طراحیهای چند هسته ای خالص دارای بازدهی انرژی مناسبی می باشند.
توازن مابین هسته ها و تارهای سخت افزاری برای سرورها که به حداکثر توان عملیاتی نیاز داشته و از تعداد بیشتر تارهای سخت افزاری در هر هسته سود می برند، تغییر خواهد کرد. سرورها عموماً تعداد زیادی از برنامه های غیر عددی را اجرا می کنند که بطور معمولی با تأخیر بیشتری سر و کار دارند اما امکان پنهان سازی آن با استفاده از Multithreading وجود خواهد داشت. در مقابل، نرم افزارهای کاربردی عددی به ندرت از Multithreading سخت افزاری سود می برند، در حالیکه عملکرد بهتری را بر روی طراحیهای چندین هسته ای به نمایش می گذارند.
با در نظر گرفتن این واقعیت که هر CPU گزینه متفاوتی را جهت بهینه سازی انتخاب کرده است، تصمیم گیری در مورد مناسب ترین پردازنده برای یک ترکیب بخصوص از نرم افزارهای کاربردی بر عهده مصرف کننده است.
منبع: بزرگراه رایانه، شماره 129
ما در این مقاله به بررسی پردازنده های چند هسته ای و چند تاری خواهیم پرداخت که امروزه در بازار حضور دارند. در عین حال، ارزیابی تصمیم گیری های زیربنائی در حوزه طراحی پردازنده ها، بازدهی مصرف برق و موضوعات نرم افزاری مرتبط با خصوصیات فشار کاری و نرم افزارهای کاربردی نیز بخشی از مقاله حاضر را تشکیل می دهند.
بطور سنتی، قدرت عملکرد پردازنده ها، هر 18 ماه یکبار تقریباً دو برابر شده است، زیرا پیشرفتهای بدست آمده در حوزه فناوری های تولید تراشه به افزایش سرعت های کلاک پردازنده ها و همچنین پیچیدگی طراحی آنها منتهی گردیده اند. با اینحال، موانعی در مسیر تداوم ارتقاء چشمگیر فرکانس های کاری این تراشه ها وجود دارند که به مشکلاتی نظیر نشت ولتاژ در بین مؤلفه های داخلی تراشه و همچنین محدودیت های انتشار حرارتی مربوط می شوند.
قانون مور( Moore Law که پیش بینی کرد چگالی مدارات داخل تراشه ها هر 18 ماه یکبار دو برابر خواهد شد) هنوز اعتبار خود را حفظ کرده و توانائی افزایش پیچیدگی تراشه ها را در اختیار طراحان سخت افزاری قرار می دهد. در واقع این اعتبار تا زمانی که CPUها به محدودیتهای سخت فیزیکی در رابطه با چگالی مدار برخورد نکرده اند، ادامه خواهد داشت.
در گذشته، تولیدکنندگان از ظرفیت اضافی برای توسعه CPUهای سوپراسکالر با واحدهای اجرائی تکراری و خط لوله های عمیق( به منظور بهره برداری از موازی سازی یا Parallelism در سطح دستورالعمل)، استفاده می کردند. با اینحال، آنها به این ترتیب تنها 25 درصد از فضای اضافی تراشه که در هر سال با اضافه شدن ویژگی های جدید معماری در دسترس قرار می گرفت را به بازدهی می رساندند. بعلاوه، فاصله عملکردی مابین پردازنده ها و حافظه، بهره احتمالی از افزایش دائمی فرکانس پردازنده ها را محدود می کند. بنابراین، مسیر طراحی که در حال حاضر به منظور افزایش عملکرد دنبال می شود، از فضای قابل دسترسی تراشه برای توسعه CPU های چند هسته ای و چند تاری استفاده می نماید. این طراحیها از چند وظیفگی( Multitasking) از طریق برنامه های موازی و یا اجرای همزمان نرم افزارهای کاربردی متعدد، پشتیبانی می کنند.
طراحان در ابتدا CPUهای چند تاری( Multithreaded) را معرفی نمودند که Content-Switching( سویچینگ لایه چهار تا هفت) مابین تارها را در سطح سخت افزار، پیاده سازی می کردند تا زمان بی باری منابع در پردازنده های سوپراسکالار پیچیده را کاهش دهند. پس از مدت کوتاهی، طراحان بیش از یک هسته پردازنده را بر روی یک تراشه واحد ترکیب نمودند و حالا ما پردازنده های 8 هسته ای را در اختیار داریم. با این فرض که قانون مور همچنان معتبر باشد، می توانیم انتظار داشته باشیم که تعداد هسته های پیاده سازی شده بر روی تراشه ها هر دو سال یکبار دو برابر شده و به این ترتیب در آینده نزدیک شاهد ارائه CPUهائی با 16 پردازنده ( و یا بیشتر) باشیم.
● طیف طراحی
● هسته های چند تاری
هر رشته On-chip به مؤلفه های وضعیت مخصوص به خود نظیر نشانگر (Pointer) دستورالعمل و سایر رجیسترهای کنترلی نیاز دارد. بنابراین، تعداد تکرارهای مورد نیاز از مؤلفه های وضعیت( State Components) و متعاقباً بالاترین درجه پشتیبانی سخت افزاری از همزمانی و اشباع واحدهای اجرائی براساس تعداد تارهای On-chip تعیین می گردد. تارهای بیشتر در عین حال امکان پنهان سازی تأخیرهای دسترسی و یا وقفه های ایجاد شده بخاطر خطای پیش بینی انشعاب را فراهم می کنند. پردازنده زئون اینتل برای پشتیبانی از یک رشته سخت افزاری ثانویه، تنها به 5 درصد فضای تراشه بیشتر نیاز دارد، اما پس از این افزایش، بطور آشکارا Super-Linear خواهد بود.
تعداد تارهای On-chip در هر هسته که بطور معمول توسط پردازنده های تجاری پشتیبانی می شوند، از 2 در پردازنده های Xeon اینتل تا 8 در پردازنده های Sun UltraSPARC T2 متغیر است. عدد فوق العاده 128 تار در Tera/Cray MTA نشان دهنده یکی از اولین طراحیهای موفق عملی( و نه تجاری) است. این پردازنده به تعداد زیادی از تارها نیاز داشت تا تأخیرهای دسترسی حافظه را پنهان نموده و فقدان یک کاشه در معماری خود را جبران کند. طراحان از همین طراحی در واحد پردازنده گرافیکی فوق العاده چند تاری Nvidia GT200 استفاده کرده اند که در آن از حداقل کاشه ممکن استفاده شده است تا منابع محاسباتی اضافی به حداکثر برسند.
جدول [1] نشان می دهد که تولیدکنندگان از تنوعی از روشها برای سوئیچ مابین تارهای داخل هر هسته استفاده می نمایند. این روشها از ایجاد تناوب مابین تارها( Alternating) تا صدور واقعی دستورالعملها از تارهای متعدد در هر سیکل را در بر می گیرند. جدیدترین پردازنده ها، از روش دوم استفاده می کنند که معمولاً تحت عنوان SMT(Simultaneous MultiThreading) شناخته می شود، هرچند که اینتل آن را تحت عنوان فناوری HTT(Hyperthreading Technology) معرفی نموده است. SMT در هر سیکل، دستورالعملهائی که قبلاً کدگشائی شده اند را از تنها یک زیرمجموعه از تارهای On-chip ارسال می کند. تعداد تارهای داخل این زیرمجموعه در عین حال بر میزان بکارگیری واحدهای اجرائی تأثیر می گذارد، خصوصاً اگر تارها، استفاده یکدیگر از این واحدها را تکمیل نمایند. با اینحال، در حال حاضر هیچ پردازنده تجاری در دسترس قرار ندارد که بتواند صدور دستورالعملها را از بیش از دو رشته در هر هسته و هر سیکل انجام دهد.
● پردازنده های چند هسته ای
گرایش های موجود در حوزه توسعه معماری ها، بیانگر یک حرکت به سمت تکرار مؤلفه های اضافی On-chip ( نظیر کنترلر حافظه و کاشه ها) هستند که می توانند خصوصی بوده و یا به اشتراک گذاشته شوند. برای مثال، هریک از پردازنده های IBM Power6 و AMD Opteron دارای کاشه های L2 اختصاصی هستند، اما چند کنترلر حافظه را به اشتراک می گذارند.
● ادغام مؤلفه ها
بعضی از طراحی ها از چند کنترلر حافظه مجتمع پشتیبانی می کنند تا امکان مقیاس پذیری پهنای باند دسترسی حافظه با تعداد هسته ها را فراهم نمایند. هر دو پردازنده
IBM Power6 و Sun UltraSPARC T2 در این گروه قرار دارند. ادغام یک هسته GPU بر روی تراشه، گزینه دیگری به حساب می آید که برای نسل بعدی CPUها مطرح شده است. یک روش مشابه، قبلاً در بازارهای موبایل و Embedded مورد استفاده قرار گرفته و به دفعات هر دو هسته همه منظوره ( General-Purpose) و هسته پردازنده سیگنال دیجیتال را بر روی یک تراشه واحد ادغام کرده است. سیستم Blu Gene/P شرکت IBM بر یک طراحی SoC(System on-chip) فوق العاده مجتمع تکیه دارد و به 4 هسته، 5 اینترفیس شبکه، 2 کنترلر حافظه و 8 مگابایت کاشه L3 مجهز می باشد که به سیستم امکان می دهند به صدها هزار پردازنده مقیاس دهی گردد. کنترلرهای حافظه مجتمع، I/O، توابع امنیتی و یک اینترفیس شبکه پیشرفته در پردازنده های UltraSparc، می تواند مثال بسیار خوب دیگری باشد.
● کاشه های اختصاصی در مقابل کاشه های اشتراکی
سازماندهی حافظه کاشه، یکی از ملاحظات بسیار مهم به حساب می آید. جدیدترین طراحیهای تراشه های چند هسته ای، دارای یک کاشه L1 اختصاصی برای هر هسته می باشند تا میزان رقابت برای این سطح حیاتی از کاشه را به حداقل ممکن برسانند. اگر هسته از تارهای سخت افزاری متعددی پشتیبانی کند، کاشه L1 مابین تارهای داخل هر هسته به اشتراک گذاشته می شود. تخصیص کاشه L2 در طراحیهای چند هسته ای دارای تنوع بیشتری می باشد. این کاشه می تواند بطور خصوصی یا اختصاصی برای هر هسته پیاده سازی گردیده و یا مابین هسته ها به اشتراک گذاشته شود. کاشه L3 بطور تاریخی یک ساختار خارج از تراشه ( Off-chip) و اشتراکی بوده است، اما طراحیهای جدیدتری نظیر Itanium شرکت اینتل و Opteron چهار هسته ای شرکت AMD به کاشه های L3 از نوع on-chip مجهز هستند.
اینکه کاشه های اشتراکی مفیدتر هستند یا کاشه های خصوصی، نه تنها به مصالحه های مرتبط با استفاده از فضای تراشه، بلکه به خصوصیات نرم افزارهای کاربردی بستگی خواهد داشت. کاشه های اشتراکی در صورتی اهمیت بیشتری خواهند یافت که تارهای یک نرم افزار کاربردی واحد بر روی هسته های متعددی اجرا گردیده و مقدار قابل ملاحظه ای از داده ها را به اشتراک بگذارند. در این صورت، یک کاشه اشتراکی بسیار اقتصادی تر خواهد بود زیرا از ایجاد کپی های متعدد داده ها و انتقالهای مکرر« کاشه به کاشه» اجتناب خواهد کرد. با اینحال، کاشه های اشتراکی می توانند تقاضاهای بسیار زیادی را بر اتصالات داخلی( Interconnects) تحمیل نمایند.
تارهای نرم افزاری که داده های زیادی را به اشتراک نمی گذارند، می توانند به رقابت برای کاشه بپردازند. این وضعیت، پیش بینی سرویس مورد نیاز هر رشته را دشوار خواهد نمود زیرا اینکار به جزئیات الگوهای دسترسی حافظه، مکان دسترسی حافظه و همچنین بار کاری سیستم بستگی خواهد داشت. کاشه های خصوصی، یک راه حل آسان برای تفکیک عملکرد و تضمین قابلیت پیش بینی سرویسها را فراهم می کنند.
بعنوان یک روش انعطاف پذیرتر، یک طراحی دو رگه( Hybrid) تعداد مختلفی از بانکهای کاشه را فراهم می نماید که برحسب نیازهای تارهای در حال اجرا به کاشه، بعنوان کاشه های خصوصی و یا اشتراکی تخصیص داده شوند. این روش می تواند از هر گروه تارهائی که داده ها را به اشتراک می گذارند و تارهائی که داده ها را به اشتراک نمی گذارند، پشتیبانی کند. همانطور که در تحقیقات اخیر پیشنهاد شده است، طراحی دو رگه می تواند برای تقسیم بندی متناسب بصورت دینامیک، بهسازی گردد. این ویژگی، امکان تأمین یک سطح سرویس معادل یک تراشه تک هسته ای با مقدار متناظری از منابع کاشه تدارک دیده شده را برای هر هسته تأمین می کند.
● تفاوت منابع اختصاصی و اشتراکی رشته سخت افزاری
برای مثال، بعضی از طراحی ها تقسیم بندی را برای بافرهای دستورالعمل پیاده سازی می نمایند. تقسیم بندی ثابت، مرزهای قطعی را ایجاد می کند در حالیکه تقسیم بندی دینامیک می تواند مرزها را بطور انعطاف پذیری انتخاب نموده و در نتیجه یک حداقل سهم را برای هریک از تارهای در حال اجرا حفظ کند. اشتراک گذاری، انعطاف پذیری بسیار بیشتری را در استفاده از منابع امکانپذیر می سازد، اما باعث افزایش احتمال رقابت گردیده و می تواند به مکانیزمهائی برای جلوگیری از انحصارطلبی ( Monopolization) نیاز داشته باشد. اکثر طراحیهای چند تاری، از ترکیبی از اشتراک گذاری، تکرار و تقسیم بندی استفاده می کنند. تصمیم گیری طراحی براساس میزان رقابت بر سر یک منبع خاص در بین تارها، ملاحظات بی طرفی و هزینه انجام می شود.
● تحمل نقص
● اتصالات داخلی
با کاشه های صرفاً خصوصی بر روی تراشه، تبادل داده ها مابین تارهای در حال اجرا بر روی هسته های مختلف، بطور تاریخی استفاده از Interconnect های خارج از تراشه( Off-chip) را اجباری ساخته است. کاشه های On-chip اشتراکی بطور طبیعی از تبادل داده ها مابین تارهای در حال اجرا بر روی هسته های مختلف پشتیبانی می کنند. بنابراین، معرفی یک سطح از کاشه اشتراکی بر روی تراشه ( عموماً L2 و یا در گرایشهای تازه تر، L3) و یا پشتیبانی از میان برهای تبادل داده نظیر انتقال کاشه به کاشه، به کاهش ترافیک Off-chip کمک خواهد نمود. با اینحال، تعداد بیشتر سطوح کاشه On-chip، اتصالات داخلی بر روی تراشه را ملزم به پشتیبانی از ملزومات بسیار بیشتری در زمینه پهنای باند و پیچیدگی می نماید.
با افزایش پردازش داده ها از طریق موازی سازی بیشتر در سطح رشته، معمولاً تقاضا برای بافت ارتباطی Off-chip نیز برای دسترسی های حافظه، I/O و یا ارتباطات مابین پردازنده ها افزایش می یابد. به منظور برآورده نمودن این ضرورت، ارتباطات Off-chip از ساختارهای مبتنی بر گذرگاه به Interconnectهای نقطه به نقطه مبتنی بر بسته گرایش پیدا کرده اند AMD اولین بار این مفهوم را بصورت HyperTransport پیاده سازی کرد و سپس اینتل نیز با QuickPath مسیر مشابهی را دنبال نمود. اتصالات Off-chip و پشتیبانی از وابستگی داده ها( data-coherency) در عین حال بر مقیاس پذیری سرورهای مبتنی بر CPUهای متعدد، تأثیر می گذارد.
● طراحی های اختصاصی
GPU یک مثال فوق العاده از طراحی چند هسته ای اختصاصی به حساب می آیند.GPUهای مدرن دارای 10 هسته یا بیشتر هستند که هریک از آنها برای پردازش SIMD داده ها که از طریق صدها و یا هزاران رشته ساده شده در هر هسته انجام می گردد، بهینه سازی شده اند. این ویژگی، آنها را برای پردازش شدیداً عددی نظیر راندوی ویدیوئی، ژن شناسی، مدلسازی علمی و یا رمزنگاری مناسب می سازد.
● عملکرد پردازنده های چند هسته ای و چند تاری
در رابطه با توان عملیاتی برای نرم افزارهای کاربردی عددی SPECfp، پردازنده Opteron در هنگام استفاده از کد شدیداً بهینه سازی شده تنها اندکی بهتر از Sun UltraSPARC T2 خواهد بود، اما با استفاده از بهینه سازی استاندارد به یک برتری 26 درصدی دست پیدا می کند. با اینحال، UltraSPARC T2 پردازنده Opteron را در مقایسه چند تاری SPECweb 2005 برای زمانهای پاسخ و توان عملیاتی سرورهای وب با سرویس دهی به 36 درصد درخواستهای بیشتر در طول یک دوره زمانی مشابه، پشت سر می گذارد.
مطالعات شبیه سازی با نرم افزارهای کاربردی بانک اطلاعاتی، خصوصاً OLTP و DSS، چهل درصد کاهش در زمان پاسخدهی را برای POWER5 در مقایسه با UltraSPARC T1 نشان داده اند، البته در صورتی که یک بار کاری اشباع نشده بر آنها تحمیل گردد. با اینحال، UltraSPARC T1 تحت فشارهای کاری اشباع شده توانست 70 درصد برتری توان عملیاتی را به نمایش بگذارد.
عملکرد چند تاری: مزایای تعدد تارهای سخت افزاری، تا حدودی به این موضوع بستگی خواهند داشت که نرم افزار کاربردی از Multithreading استفاده می کند یا Multiprocessing. فعال نمودن Hyperthreading دو تاری بر روی پردازنده Xeon اینتل با یک افزایش عملکرد 33 درصدی نسبت به اجرای تک تاری برای نسخه OpenMP مقایسه NAS FT همراه بود. در مقایسه، نسخه Multiprocess مقایسه NAS FT شاهد کاهش عملکرد بود. نسخه OpenMP مقایسه FT با 8 درصد افت عملکرد نسبت به اجرای تک تاریای مواجه شد، در حالیکه نسخه چند پردازشی استاندارد FT شاهد یک افت 50 درصدی در عملکرد بود که تا حدود زیادی به رقابت بر سر حافظه توسط ارتباطات شدید Interprocess مربوط می شد.
عملکرد چند هسته ای: مثال پردازنده های دو هسته ای AMD Opteron، با دستیابی به 37 درصد عملکرد بهتر هنگام بکارگیری هسته دوم در اندازه گیریهای مقایسه استاندارد چند پردازشی NAS CG/FT، بهره عملکردی هسته های متعدد را به نمایش می گذارد. همین مطالعه در عین حال نشان داد که یک تراشه دو هسته ای در مقایسه CG تنها 5/8 و در مقایسه FT تنها 9 درصد کندتر از دو تراشه که هرکدام در حال استفاده از یک هسته واحد هستند، عمل می کند. این در حالی است که یک تراشه دو هسته ای بازدهی بسیار بالاتری در زمینه هزینه ها و مصرف برق را به همراه دارد.یک مطالعه دیگر با نرم افزارهای کاربردی چند پردازشی خالص که بر روی کلاسترهای بزرگی با حداکثر 4096 پردازنده اجرا می شدند، مزیتهائی مابین 20 تا 50 درصد را با استفاده از یک هسته ثانویه به نمایش گذاشت.
● پیچیدگی هسته در مقابل تعداد هسته ها
UltraSPARC T1 از شرکت Sun که تعداد FPUهای موجود بر روی تراشه را کاهش می دهد و یا پردازنده Atom اینتل که اجرای خارج از ترتیب را حذف می نماید، مثالهای خوبی در این زمینه می باشند. در پردازنده Cell که یک مورد غائی در این زمینه به حساب می آید، گرایش مذکور به کاهش چشمگیر مجموعه دستورالعملها و حذف پیش بینی دینامیک انشعاب یا بازچینی( Reordering) دستورالعملها منتهی گردیده است. سایر تراشه ها( نظیر Power6 که واحدهای FPU و Integer شدیداً بهینه سازی شده نظیر یک FPU دسیمال را ارائه می کند)، پیچیدگی را افزایش داده اند تا عملکرد هر هسته را به حداکثر برسانند. پردازنده های Mainframe در عین حال به پشتیبانی از پردازش نقل و انتقالات سنگین نیز احتیاج دارند. به همین دلیل، پردازنده z10 شرکت IBM معماری Power6 را با پیش بینی پیشرفته انشعاب و مدیریت کاشه، توسعه داده است.
افزایش پهنای صدور( Issue-Width) در عین حال باعث حداکثر سطح عملکرد نیز خواهد شد، همانند معماری POWER5 که 5 دستورالعمل را در هر سیکل صادر می کند و یا تراشه های AMD که تنها 3 دستورالعمل را در هر سیکل صادر می کنند. پردازنده هائی که بر روی عملکرد هر رشته تمرکز دارند، بطور کلی دارای سرعتهای کلاک بسیار بالاتری در مقایسه با پردازنده هائی می باشند که بر پشتیبانی از تعداد بیشتر تارها متمرکز هستند. این تمایز بخوبی در نرخ کلاک 5 گیگاهرتزی پردازنده IBM POWER6 و سرعت کلاک 3/73 گیگاهرتزی پردازنده PentiumExtremeEdition در مقایسه با سرعت کلاک 1/6 گیگاهرتزی پردازنده شدیداً چند تاری UltraSPARC T2 قابل مشاهده است.
با اینحال، استفاده از فضای اضافی تراشه برای ارتقاء عملکرد هر رشته، به بهره های غیر خطی منتهی می شود. بعبارت ساده تر، تجربه نشان می دهد که چهار برابر شدن پیچیدگی تنها با دو برابر شدن عملکرد همراه خواهد بود. یکی از ملاحظات مهم در زمینه سطح عملکرد برای هر نرم افزار کاربردی، این است که برنامه های سریال نمی توانند از همزمانی تراشه بهره برداری کنند. حتی در برنامه های موازی نیز بعضی از قسمتهای الگوریتم بایستی بصورت ترتیبی ( Sequential) اجرا شوند و قانون Amdahl اشاره می کند که حداکثر سرعت یک الگوریتم براساس درصد بخش ترتیبی آن مشخص می گردد. متوازن نمودن پیچیدگی هسته و تعداد هسته ها، به همراه بازخوردهای کاهش دهنده از عملکرد بالاتر هر رشته را می توان بعنوان ضمیمه ای از این قانون، به رسمیت شناخت. در عین حال، این ضمیمه در کنار سایر ملاحظات به نتیجه گیریهای زیر منتهی خواهد شد:
- تعداد زیاد هسته های ساده دارای ارجحیت خواهد بود، مادامیکه بخش سریال نرم افزار کاربردی بسیار کوچک باشد. در غیر اینصورت، هسته های پیچیده تر بسیار مفیدتر هستند.
- با افزایش تقاضا برای فضای تراشه به منظور پیاده سازی اتصالات داخلی مابین تعداد بیشتری از هسته ها و مقیاس پذیری محدود نرم افزار کاربردی بخاطر فقدان موازی سازی کافی، سربار هماهنگ سازی و یا عدم توازن بار کاری، هسته های پیچیده تر ارجحیت پیدا می کنند.
- نرم افزارهای کاربردی که می توانند سطح بالائی از حداکثر عملکرد تئوریک را بکار بگیرند( نظیر نرم افزارهای کاربردی با تأکید بر محاسبات ممیزی شناور و یا نرم افزارهای کاربردی عددی شدیداً موازی)، می توانند نتایجی بالاتر از آنچه که معمولاً پیش بینی می شود را از پیچیدگی بیشتر بدست آورند.
با اینحال، علاوه بر عملکرد هر نرم افزار کاربردی، بار کاری کلی نیز بایستی در نظر گرفته شود. عملکرد هر نرم افزار کاربردی زمانی اهمیت خواهد داشت که بار کاری کلی تنها حاوی اندکی از نرم افزارهای کاربردی بوده یا با نرم افزارهای کاربردی حساس به عملکرد سر و کار داشته باشیم. در غیر اینصورت، به آسانی می توان بکارگیری مناسب را از بارهای کاری با چندین وظیفه سریال و نرم افزارهای کاربردی موازی که تنها به کسری از تعداد هسته های مقیاس دهی شده اند، بدست آورد. این ترکیب می تواند به یک توان عملیاتی (Throughput) بالا و همچنین زمانهای برگشت ( Turnaround) مناسب منتهی گردد که از اهداف طراحی سرورهای تجاری نظیر سرورهای وب و یا سرورهای بانک اطلاعاتی به حساب می آیند. برای ایجاد توازن مابین عملکرد هر رشته و توان عملیاتی، مقیاس اول زمانی افزایش خواهد یافت که امکان تخصیص منابع بیشتری بر روی تراشه بصورت دینامیک وجود داشته باشد( مثلاً برای اجرای قضاوتی یا Speculative Execution). این وضعیت احتمالاً برای نرم افزارهای کاربردی با وابستگی بالا به داده ها و « Miss»های کاشه مفید خواهد بود. پردازنده Rock شرکت Sun که در مراحل پیش از تولید قرار دارد، این ایده را با استفاده انتخابی از دو رشته سخت افزاری در هر هسته برای اجرای یک رشته نرم افزار کاربردی، پیاده سازی می نماید. یک روش ساده تر که قبلاً در بعضی از پردازنده های چند تاریای اعمال شده است، در صورت اجرا در حالت تک وظیفگی( Single-Task) منابع تقسیم بندی شده را به یک رشته تخصیص می دهند. این روش برای مثال در پردازنده های Xeon و PentiumExtremeEdition اینتل پیاده سازی شده است.
بعنوان یک احتمال دیگر، طراحی تراشه می تواند شامل تنوعی در رابطه با پیچیدگی هسته ها باشد( نظیر پردازنده Cell شرکت IBM). چند هسته با پیچیدگی بالا می توانند بخشهای ترتیبی نرم افزارهای کاربردی سنگین را اجرا کنند. اگرچه اینگونه پردازنده ها هنوز قابل دسترسی نیستند، اما تحقیقات نشان می دهند که پردازنده های حاوی تعداد زیادی از هسته های ساده و تعداد کمی هسته های دارای عملکرد بالا می توانند بالاترین قدرت کلی پردازش را برای سطح معینی از فضای تراشه و مصرف برق فراهم نمایند. با اینحال، طراحی و برنامه ریزی این پردازنده ها می تواند بسیار دشوارتر باشد.
● هزینه و مصرف برق
از آنجائیکه هسته ها ساده تر شده اند، مصرف برق آنها بطور خطی کاهش می یابد که یک برتری مهم برای پردازنده های چند هسته ای به حساب می آید. افزایش بازدهی مصرف برق و کاهش گرمای تولید شده، امکان ادغام هسته های بیشتر در داخل یک پردازنده واحد را فراهم می سازد، البته با این مصالحه که مصرف برق اتصالات داخلی با تعداد هسته های یک پردازنده افزایش پیدا می کند. مصرف برق بر انتخاب مابین طراحیهای چند هسته ای و طراحیهای چند تاری تک هسته ای تأثیر می گذارد: گزینه اول از بازدهی مصرف برق بالاتری برخوردار است، اما طراحیهای دو رگه با هسته های SMT متعدد همان سطح از عملکرد برای هر وات معادل با طراحیهای CMP خالص را تأمین می کنند. پردازنده های چند هسته ای در عین حال گزینه های بیشتری را برای مدیریت مصرف برق ارائه می کنند، زیرا امکان مدیریت مصرف برق هسته های CMP بطور جداگانه از طریق خاموش کردن آنها و یا کاهش فرکانس کاری در مواقعی که سیستم با بار کاری سبکی درگیر است، وجود خواهد داشت. تنظیم مصرف برق یک موضوع حیاتی در حوزه Computing موبایل به حساب می آید، اما سرورها نیز می توانند تا حدود زیادی از آن سود ببرند.
از یک نقطه نظر کلی، افزایش هزینه های الکتریکی باعث تقاضا برای افزایش بازدهی مصرف برق پردازنده ها و سایر مؤلفه های سیستم می گردد، با این مزیت اضافی که هزینه های خنک کنندگی را کاهش می دهد. با وجود آنکه CPU تنها 25 تا 45 درصد از برق مصرفی یک سرور را به خود اختصاص می دهد، هزینه های الکتریکی تحمیل شده برای یک دوره 4 ساله می توانند به قیمت خرید خود سیستم نزدیک شوند. در مورد ماشینهای Computing با عملکرد بالا، ساخت راه حلهای سفارشی سازی شده خنک کنندگی می تواند درست به اندازه خود کامپیوتر هزینه در بر داشته باشد. بعلاوه، کاهش مصرف برق امکان افزایش چگالی Rack را در اتاقهای سرور فراهم می سازد.
بهینه سازی مقیاس عملکرد برای هر وات و هر دلار، در عین حال امکان دستیابی به معماریهای فوق العاده مقیاس پذیر را فراهم می سازد. IBM Blu Gene/P و IBM Blu Gene/L که با سرعت کلاک 850 مگاهرتز کار می کنند، مثالهای فوق العاده ای در این زمینه هستند. معماری Blu Gene/p که برای سادگی، هزینه تولید پائین، یکپارچه سازی بالا و مقیاس پذیری قابل ملاحظه طراحی شده است، با بهره گیری از 40960 پردازنده به قدرت 450 ترافلاپس دست پیدا می کند. IBM hybrid QS22/LS21 که در فهرست Top 500 سال 2009 بعنوان سریعترین معماری با بالاترین سطح بازدهی مصرف برق معرفی شده، در سوپر کامپیوتر Roadrunner آزمایشگاه های ملی Los Alamos مورد استفاده قرار گرفته است. این معماری در عین حال بالاترین رتبه را در فهرست Green 500 که در نوامبر سال 2008 منتشر شده بود را به خود اختصاص داده است. کسب این رده بندیهای عالی با بهره گیری از بازدهی مصرف برق و هزینه تراشه های Cell بعنوان پردازنده های محاسباتی اصلی امکانپذیر گردیده است.
● چالش نرم افزاری
نرم افزار سرور می تواند دارای ساختار چند تاری باشد تا توان عملیاتی بالاتری را با جایگذاری ( Interleaving) در خواستها و احتمالاً بهره برداری از CPUهای متعدد فراهم نمایند. با اینحال، اکثر نرم افزارهای عادی برای همزمانی آماده نشده اند. امکانات موجود برای استخراج موازی سازی بطور خودکار در حال حاضر بسیار محدود هستند و موازی سازی معمولاً بایستی صراحتاً بیان گردد. به همین دلیل، Herb Sutter معتقد است که تغییر به سمت برنامه نویسی موازی برای ماشینهای معمولی، تحول بزرگ بعدی پس از معرفی برنامه نویسی شیء گرا خواهد بود. نوشتن برنامه های موازی صحیح و کارآمد، یک چالش مهم است که به ابزارهای بهتر و مدلهای برنامه نویسی انتزاعی تری نیاز دارد تا سلامت و راحتی برنامه نویسی رشته را افزایش دهند. راه حلهای احتمالی براساس تجربیات بدست آمده در Computing با عملکرد بالا ارائه خواهند شد، در حالیکه بازار فوق العاده گسترش یافته این حوزه نیز انگیزه لازم برای بهبود بیشتر تکنیکهای HPC را فراهم می سازد.
توسعه دهندگان نرم افزارهای عمومی می توانند از مدل برنامه نویسی حافظه اشتراکی OpenMP اقتباس نمایند که بطور گسترده ای در HPC مورد استفاده قرار می گیرد. یک مسیر نویدبخش دیگر، حافظه تراکنشی ( Transactional) است که مفهوم تراکنش را از بانکهای اطلاعاتی عاریه گرفته و هماهنگ سازی دسترسی به داده ها را از طریق مکانیزمهای خودکار Rollback و Checkpointing تسهیل می نماید. Sun Rock اولین پردازنده ای است که از این مدل بصورت سخت افزاری برای موارد عمومی پشتیبانی می نماید. بجای صرف زمان بیشتر برای توسعه نرم افزار موازی، یک روش اقتصادی تر از کامپایلرها و کتابخانه های موازی سازی شده نظیر کتابخانه BLAS(Basic Linear Algebra Subprograms) استفاده می کند. نیاز به ابزارها و مدلهای برنامه نویسی بهتر، در عین حال بر HPC نیز تأثیر می گذارد. در حال حاضر، حتی اگر امکان به اشتراک گذاشتن داده ها نیز وجود داشته باشد، بسیاری از برنامه نویسان موازی انحصاراً از پردازشها استفاده می کنند، علیرغم آنکه عملکرد کلی از پیاده سازی چند تاری نرم افزاری بر روی گره های SMP(Symmetric Multiprocessing) حافظه اشتراکی سود می برد. کلاسترهای HPC با گره های چندین هسته ای برای دستیابی به مقیاس پذیری و بازدهی بالاتر احتمالاً نیازمند استفاده از مدلهای برنامه نویسی Thread/Process دو رگه هستند. خوشبختانه، کاربران Multithreading را ترجیح می دهند و احتمالاً گامهای اضافی به سمت پیاده سازی آن را آسانتر از اولین گامهای برداشته شده از پردازش سریال به Multiprocessing خواهند یافت. بعلاوه، نرم افزارهای کاربردی HPC به نمایش سطح بالاتری از موازی سازی در مقایسه با گذشته نیاز دارند تا از همزمانی سخت افزاری تأمین شده توسط پردازنده های چند هسته ای بهره گیری نمایند. اینکار احتمالاً تنها تا سطح معینی امکانپذیر خواهد بود زیرا مقیاس پذیری نرم افزارهای کاربردی محدود است، مگر آنکه اندازه مسائل افزایش پیدا کند. یک عامل محدود کننده دیگر این است که افزایش تعداد هسته ها کمتر از افزایش تعداد پردازنده ها برای عملکرد سودمند خواهد بود، به استثناء زمانی که تارها داده هائی را به اشتراک می گذارند. بنابراین، CPU های چند هسته ای عملاً SMPهای جدید نیستند.
چالش نرم افزاری در عین حال بر کامپایلرهای عمومی را که احتمالاً نیاز دارند هسته های ساده شده یا اختصاصی ( نظیر هسته های داخل تراشه Cell و یا یک GPU) را آدرس دهی نمایند، تحت تأثیر قرار می دهد.
در حالیکه در گذشته خود سخت افزار تا حدود زیادی موازی سازی سطح دستورالعمل را استخراج می کرد، هسته های ساده شده اکنون به تلاش بیشتری از سوی کامپایلر برای بازچینی دستورالعملها، درج اشارات پیش بینی انشعاب استاتیک و Vectorize نمودن پردازش داده ها برای استخراج دستورالعملهای SIMD نیاز دارند.
در رابطه با سیستم عامل، Schedulerهای سنتی پردازنده به تغییراتی نیاز داشتند تا عدم تجانس و تفاوتهای عملکردی در سلسله مراتب cpu ها، هسته ها و تارهای سخت افزاری را هماهنگ نمایند. بعلاوه، تحقیقات نشان داده اند که زمانبندی( Sdheduling) با هدف به حداقل رساندن رقابت برای منابع، در صورتی اهمیت خواهد داشت که ماشین کاملاً تحت فشار بار کاری قرار گرفته باشد.
چالش بعدی، تطبیق نرم افزارهای کاربردی با نیازهای موجود به منابع تکمیلی در مواردی است که منابع به اشتراک گذاشته می شوند( نظیر نرم افزارهای کاربردی نسبتاً حساس به کاشه در شرایطی که کاشه ها به اشتراک گذاشته می شوند و یا نرم افزارهای کاربردی متکی بر محاسبات ممیزی شناور یا Integer در شرایطی که FPUها به اشتراک گذاشته شده اند). از آنجائیکه تارهای یک نرم افزار کاربردی واحد احتمالاً همگن هستند، امکان دستیابی به گزینه های انطباقی بهتر با تاریهای نرم افزارهای کاربردی مختلف وجود خواهد داشت. برای کلاسترهای HPC، این گزینه تا امروز در سطح بالائی مورد استفاده قرار نگرفته است زیرا برآورد تأثیرات رقابتی مابین برنامه هائی با تعداد زیادی از پردازشهای به هم پیوسته بسیار دشوار بوده و بایستی پیش از اجرای وظایف بر روی ماشین پیش بینی شوند. تحقیقات اخیر، تأثیرات رقابتی نسبتاً اندکی را برای اکثر ترکیبهای برنامه ها بر روی کلاسترهای 64 گره ای را با پتانسیل دستیابی به دقت پیش بینی بالاتر نشان داده اند.
● مسیرهای آینده نگرانه CPUهای چند هسته ای و چند تاری
در رابطه با محدودیتهای نرم افزاری، تعداد نسبتاً اندکی از نرم افزارهای کاربردی می توانند از همزمانی بسیار بالا برای افزایش عملکرد خود استفاده کنند. توان عملیاتی با اجرای چندین وظیفه سریال و یا چند نرم افزار کاربردی نسبتاً موازی( که بر روی سرورها قابل انجام است) افزایش می یابد، هرچند که ممکن است ماشینهای عمومی از این وضعیت سود نبرند. از سوی دیگر، موفقیت طراحیهای چندین هسته ای تا حدود زیادی به در دسترس قرار گرفتن مدلها، کتابخانه ها و ابزارهای برنامه نویسی مناسب بستگی خواهد داشت.
در حال حاضر CPUهای موجود گزینه های متفاوتی را در رابطه با طراحی خود و استفاده از فضای تراشه، ترکیب می کنند. ملاحظات طراحی نه تنها تعیین تعداد هسته ها و تارها، بلکه پیچیدگی هسته ها، اتصالات داخلی، اندازه کاشه ها و همچنین میزان و نوع مؤلفه های به اشتراک گذاشته شده را نیز در بر می گیرند. از آنجائیکه گزینه های طراحی با مصالحه های گوناگونی سر و کار دارند، یک طراحی کلی نگرانه که با نرم افزارهای کاربردی هدف و معیارهای بهینه سازی اضافی نظیر مصرف برق، انتشار حرارتی، تحمل نقص و هزینه هدایت می شود، ضرورت خواهد داشت.
در رابطه با تصمیم گیری میان تارهای سخت افزاری و هسته ها، به نظر می رسد که نقطه مناسب برای Computing عمومی در طراحیهای دو رگه نهفته است. امکان اضافه کردن تعداد کمی از تارهای On-chip در ازای افزایش نسبتاً اندکی در مدارات اضافی وجود خواهد داشت و می تواند بهبود چشمگیری را در توان عملیاتی به همراه داشته باشد. با اینحال، بازگشتهای کاهنده در عملکرد و افزایش هزینه های مدار، بهره بدست آمده از تارهای سخت افزاری را محدود خواهند کرد. بنابراین، عموماً بهتر است از فضای تراشه در ورای چند رشته سخت افزاری برای پیاده سازی تعداد بیشتری از هسته ها، کاشه بیشتر و سایر مؤلفه ها مورد بهره برداری قرار گیرد. CPUهای دو رگه در عین حال نشان داده اند که درست به اندازه طراحیهای چند هسته ای خالص دارای بازدهی انرژی مناسبی می باشند.
توازن مابین هسته ها و تارهای سخت افزاری برای سرورها که به حداکثر توان عملیاتی نیاز داشته و از تعداد بیشتر تارهای سخت افزاری در هر هسته سود می برند، تغییر خواهد کرد. سرورها عموماً تعداد زیادی از برنامه های غیر عددی را اجرا می کنند که بطور معمولی با تأخیر بیشتری سر و کار دارند اما امکان پنهان سازی آن با استفاده از Multithreading وجود خواهد داشت. در مقابل، نرم افزارهای کاربردی عددی به ندرت از Multithreading سخت افزاری سود می برند، در حالیکه عملکرد بهتری را بر روی طراحیهای چندین هسته ای به نمایش می گذارند.
با در نظر گرفتن این واقعیت که هر CPU گزینه متفاوتی را جهت بهینه سازی انتخاب کرده است، تصمیم گیری در مورد مناسب ترین پردازنده برای یک ترکیب بخصوص از نرم افزارهای کاربردی بر عهده مصرف کننده است.
منبع: بزرگراه رایانه، شماره 129