بخشی از مقاله
تکنولوژی multi core
تکنولوژی multi core چیست؟
multi core به معنی در کنار هم قراردادن دو یا تعدادی ماشین محاسباتی تحت عنوان هسته به همراه یک single-processor می باشد در واقع تکنولوژی multi core زمانی توسعه پیدا کرد که افزایش سرعت در تراشه های تک هسته ای منجر به تولید گرمای فراوانی در سیستم می شد و دیگر نمی توانستند اصلاحاتی در مدلهای قبلی پردازنده ها ایجاد کنند چرا که با افزایش سرعت میزان تولید حرارت بسیار بالا می رفت. به جز مسئله حرارت افزایش قیمت نیز مشکل دیگری بود چرا که با اندکی بالا بردن سرعت در پرازنده ها قیمت به طور چشمگیری بالا می رفت.
به جای این تغییرات اندک مهندسین ساخت تراشه های چند هسته ای را توسعه دادند. از امکانات این ساختار استراتژی تقسیم و غلبه از طریق مجزا کردن کارها می باشد و همچنین این ساختار شامل مزیتهایی چون هسته های چند منظوره است و می تواند چند کار را در یک زمان انجام دهد.
پردازنده های multi core یک single chip هستند (که با اسم die شناخته می شود) و مستقیما به سوکت single-processor وصل می شوند. اما سیستم عامل هر هسته اجرایی را به صورت یک پردازنده منطقی مجزا به همراه کلیه منابع وابسته به آن در نظر می گیرد با تقسیم کار بین دو هسته اجرایی یک پردازنده چند هسته ای می تواند کار را در یک سیکل زمانی مشخص انجام دهد.
تکنولوژی multi core چه کارهایی انجام می دهد؟
multi core کار با نرم افزارهای کنونی را بهتر و شرایطی را مهیا می کند که نرم افزارهایی که در آینده تولید می شوند نیز ویژگیهای کارآمدتری را داشته باشند با حرکت به سمت پردازنده های چند هسته ای نرم افزارهای سابق نیز در این plat form پشتیبانی خواهند شد و نیازی به اصلاح نخواهند داشت هر چند که فروشندگان همواره به دنبال مدلهای جدیدتر در نرم افزارها می باشند .
سیستم عامل ها همگی طوری طراحی شده اند که بتوانند از مزیتهای پردازنده های چند هسته ای استفاده کنند و بدون نیاز به اصلاح با آنها کار کنند. و تنها لازم است که توسعه دهندگان به منظور استفاده از تمامی قابلیتهای پردازنده های چند هسته ای تغییراتی در ساختار این سیستم عامل ها ایجاد کنند.
اما پردازنده ها باید مطابق با طراحی نرم افزارهایی برای سیستــــم هایsymmetric multi preprocessing(smp) (چند پردازشی متقارن) باشند. و عملیات threaded single نیز همچنان به کار خود ادامه خواهند داد چون این عملیات نیز به خاطر داشتن ساختار threaded امروزه بسیار سودمند هستند و اجرای بسیار عالی را در سیستم های چند پردازنده ای از خود نشان داده اند نرم افزارهای این رده بیشتر شامل کاربردهای multi media (خلق محتوا ویرایش و به جریان انداختن مدیا) می باشند و مهندسی و سایر عملیات محاسباتی تکنیکی جزء سطح متوسط این عملیات خدماتی قرار دارند و کمتر شامل مواردی چون پایگاه داده و یا سرور می باشند.
تکنولوژی multi core به سرورها این امکان را می دهد که وظایف را به طور موازی انجام دهند و کار با سیستم های multi core بسیار آسانتر بوده و می توان توان پردازش را در حجم کمتری بالاتر برد و همچنین با استفاده از این تکنولوژی می توان مصرف برق را کاهش داد و باعث کاهش گرمای تولیدی به هنگام محاسبات و پردازش شد.
تکنولوژی multi core و تکنولوژی hyper-threading :
تکنولوژی multi core با تکنولوژی((HT hyper-threading متفاوت است چرا که بسیار وسیع تر از آن می باشد و انعطاف پذیری و سرعت آن به مراتب بیشتر می باشد تکنولوژی HT به این معناست که برنامه نویسان باید آگاهی کامل از آن داشته باشند گرچه در thread می توانند یکبار و یا با هر دستیابی به سخت افزار اجرا شوند به منظور استفاده کامل از مزیتهای تکنولوژی HT باید با تمامی threadها کارانجام شود چرا که هر یک با دیگری تفاوت اندکی در منابع پردازنده دارد.
در multi core هر هسته با یک Cache سخت افزاری واحد ریاضی انحصاری ماشین های صحیح و یک thread برنامه نویسی که می تواند از همه منابع استفاده کند کامل می شود و تازمانیکه thread دیگری استفاده از منابع را از هسته دیگر درخواست نکرده باشد از این امکانات استفاده خواهد کرد بنابراین برخی از threadهای شبیه سازی شده وجود دارند که وابسته به تعدادی از هسته ها هستند و منابع در خود هسته ها موجود نیستند همچنین هیچ احتیاجی به ثبت برنامه هایی که با تکنولوژی HT فعال می شوند برای پردازنده های چند هسته ای وجود ندارد.
عملیات سازگار با تکنولوژی HT از هسته های واقعی استفاده می کنند که به عنوان پردازنده های مجازی تلقی می شوند تکنولوژی multi core وHT هیچیک از تکنیکهای برنامه نویسی را که نیاز به تغییر دارند اجرا نمی کنند.
تکنولوژی multi core به عملیات تکنولوژی HT و multi thread اجازه می دهد که استفاده از مزیتهای منابع مختلف را افزایش دهند برای توسعه اجرای عملیات سیستم تکنیکهایی وجود دارد که از جمله موارد آن می توان به نوشتن عملیات اجرایی که مزیتها را از پردازنده های multi core که شبیه سیستم های چند پردازنده جاری می باشند استخراج می کنند اشاره کرد.
سرعت:
در مقایسه با پردازنده های تک هسته ای یک پردازنده multi core با دو هسته سرعتش نزدیک به دو برابر سرعت پردازنده تک هسته ای می باشد آزمایشها نشان می دهند که اضافه کردن یک پردازنده ثانویه می تواند سرعت پردازش را تا 93% افزایش دهد با آزمایش ساختار پردازنده های دو هسته ای از گروه اینتل مانند intel e7525 chipset و پردازنده 64 بیتی intel xeon tm processor 3.6 GHZ با 2ML2 به این نتیجه دست یافتیم که با اضافه کردن یک پردازنده ثانویه قدرت اجرایی پردازنده تا 93% افزایش می یابد.
همچنین این قدرت اجرایی به نرم افزارها و سخت افزارهای استفاده شده در سیستم نیز وابسته است این کاربری ها فقط باری ساختار socket-to-socket وcore-to-core داخلی در چند هسته ای ها طراحی نشده اند.
برای مثال نسبت core-to-core تا80% تخمین زده شده است که بیانگر این مطلب است که استفاده از یک هسته ثانویه باعث افزایش قدرت پردازش تا 80% می شود پردازنده دو هسته ای 2.2GHZ مانند یک پردازنده تک هسته ای 3.6GHZ می باشد که خصوصیات مشابهی از لحاظ قیمت ، مصرف برق ، سیستم خنک کننده دارند.
نرم افزارهای وابسته و توسعه آنها:
بیشتر سیستم عامل های مارکت امروزی شامل نسخه های مختلفی از windows-linux و unix می باشند که از پردازنده هایی که به عنوان سیستم های چند هسته ای تلقی می شوند پشتیبانی می کنند. تمامی نزم افزارهایی که از تکنولوژی HT استفاده می کنند می تواند فورا با تکنولوژی multi core نیز سازگار شده و مزیتهای آنرا نیز کسب کنند و اکنون نیز که تعداد کثیری ازclientها HT-enable هستند می توانند با سیستم های multi core به راحتی سازگار شوند بسیاری از طراحان و توسعه دهندگان منابع ترجیح می دهند که روی پردازنده های اینتل که بر پایه سیستم های چند هسته ای می باشند سرمایه گذاری کنند به همین خاطر روند تولید و توسعه نرم افزارها نیز طوری ادامه می یابد که در آینده همگی با multi core سازگاری داشته باشند تا بلکه بتوانند از تمامی قابلیتهای multi core استفاده کنند.
جامعه برنامه نویسان همگی از تکنولوژی multi core پشتیبانی می کنند و تمامی تلاشهای آنها در راستای افزایش پشتیبانی نرم افزارهایشان از سیستم های molti core می باشد.
به عنوان مثال برای نوشتن یک برنامه بتواند از تمامی قابلیتهای multi core استفاده کند، Peter Buhrپروفسور دانشگاه waterloo در رشته کامپیوتر ، 4 کلاس جدید در زبان اصلی C++ ایجاد کرد او می گوید تا پنج سال آینده دیگر کامپیوتری را نمی توانید خریداری کنید که سیستم آن dual core نباشد. همچنین کمیته استانداردهای C++ در نظر دارد که قابلیتهای multi threading را نیز در این زبان بگنجاند.
Multi coreیک مزیت بزرگ برای نرم افزارهای از رده خارج شده می باشد:
بیشتر نرم افزارها طوری طراحی شده اند که با multiple threadها اجرا می شود برخی دیگر که قدیمی ترند با single-threadها روی پردازنده های تک هسته ای اجرا می شوند اما می توانند از قابلیتهای تکنولوژی multi core در محیط های چند وظیفه ای (multi tasking) استفاده کنند. سیستم عاملهایی که از فن آوری چند هسته ای استفاده می کنند بر پایه چند پردازنده ای ها زمانبندی شده اند و توان عملیاتی سیستم آنها به صورت قابل توجهی افزایش یافته است.
سیستم عامل یک CPU Scheduler دارد که شامل trackهایی از تمامی وظایف سیستم است که اجرا می شوند و یا trackهایی که بین فرآیند ها سوییچ می شوند زیرا هر وظیفه در زمانی کوتاه به CPU ارجاع داده می شود و این نشان می دهد که تمامی عملیات در زماینکه یک CPU را به خود اختصاص می دهند به طور شبیه سازی شده ای اجرا می شوند به هر سوییچ حاصل از اجرای وظایف context گفته می شود که شامل رویه های زیر است:
- ایجاد پشتیبان از تمامی داده های ذخیره شده در رجیسترهایی که با وظایف قبلی در رابطه بودند.
- loadکردن رجیسترهایی که زمانبند CPU سیستم عامل به آنها اجازه اجرا شدن داده است.
- اجرای روشهای زمانبندی برای اخذ تصمیم در مورد اینکه وظیفه بعدی که باید اجرا شود کدام است.
- load کردن رجیسترهای مربوط به وظیفه بعدی.
با استفاده از تکنولوژی multi core میزان سرریزی ثابت ناشی از switching وظایف به میزان قابل توجهی کاهش می یابد و به همین دلیل میزان پردازش کدها نیز زیادتر می شود.
میزان استفاده از سخت افزار در سیستم:
تکنولوژی multi core به راحتی با یک single socket پیاده سازی می شود به جای تعویض کامپیوترها و برای تعداد پردازنده ها شما می توانید به راحتی یک پردازنده multi core را جایگزین تعدادی پردازنده single core کنید.
سازگاری:
هیچ مشکلی برای ترکیب برنامه های multiple thread وsingle روی یک کامپیوترmulti core به وجود نخواهد آمد سیستم عامل می تواند پردازنده های multi core را مانند سایر سیستم ها بیند و وظایف مربوط به آنرا به درستی زمانبندی کند.