پردازنده چندهسته‌ای: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
Behzad Ranjbari (بحث | مشارکت‌ها)
بدون خلاصۀ ویرایش
برچسب: نیازمند بازبینی
خط ۳:
[[پرونده:Athlon64x2-6400plus.jpg|بندانگشتی|150px|یک پردازندهٔ دوهسته‌ای Athlon X2 6400+ [[ای‌ام‌دی]]]]
 
'''پردازندهٔ چند هسته‌ای ''' از اجزای [[رایانش|رایانشی]] و محاسباتی است که دو یا چند [[پردازنده]] مستقل واقعی (به نام «هسته») دارد، که واحدهایی برای خواندن و اجرای دستورالعمل‌های برنامه هستند. این دستورالعمل‌ها عموما دستورالعمل‌های معمولی CPU از قبیل اضافه کردن، انتقال داده‌ها، و انشعاب است، اما هسته های متعدد می توانند در همان زمان دستورالعمل های بیشتری را اجرا کنند که موجب افزایش سرعت کلی برای برنامه های تابع [[رایانش موازی]] می‌شود. تولید کنندگان معمولا هسته‌ها را بر روی یک قطعه [[مدار مجتمع]] (CMPIC) ادغام می‌کنند، و یا بر روی چند قطعه در یک بسته تراشه عرضه می‌کنند.
 
== توسعه ==
خط ۲۹:
روند افزایش سرعت پردازنده‌ها برای بالا بردن کارایی یک روش قدیمی است. پردازنده‌های چندهسته‌ای مسیر و جهت جدیدی برای تولیدکنندگانی است که روی آن متمرکز شده‌اند. استفاده از هسته‌های چندگانه روی یک تراشه در توان پردازشی اولیه سودمند است اما این راحت بدست نمی‌اید.
با اضافه کردن هسته اتلاف توان و گرما به یک نگرانی تبدیل می‌شود و باید قبل از چینش به بهترین نحوی که گرما را در سطح تراشه پخش کند تعیین شود تا نقاط داغ در سطح تراشه ایجاد نشوند.
حافظه نهان مشترک و توزیعی روی یک تراشه باید برای منسجم کردن پروتکل‌ها باید با هم یکپارچه باشند تا این اطمینان را ایجاد کنند که وقتی یک هسته از حافظه می‌خواند در واقع در حال خواندن از قطعه جاری است نه مقداری که توسط یک هسته متفاوت به روز شده‌است.
در کنار مسایل مربوط به پردازنده‌های چنذچند هسته‌ای مسایلی که قبلا قابل پیش بینی نبودند اهمیت پیدا کرده‌اند.
هسته‌های چندگانه چطور با یکدیگر ارتباط برقرار خواهند کرد؟آیا باید هسته‌ها از یک نوع باشند و یا اینکه هریک کار خاصی را انجام دهند تا کاراتر باشند؟و موضوع مهم بعدی این است کهاست، آیا برنامه نویسان قادر خواهند بود تا کدهای چند نخی را که می‌توانند روی هسته‌های چندگانه اجرا شوند را بنویسند؟
 
== تاریخچه مختصری از ریزپردازنده‌ها: ==
اینتل اولین میکروپروسسوری به نام ۴-bit ۴۰۰۴ در اوایل ۱۹۷۰ که اساسا فقط یک ماشین متراکم بود را تولید کرد.
به طور خلاصه بعد ازآن ۸۰۰۸ و۸۰۸۰ را تولید کرد که هر دو ۸بیتی۸ بیتی بودند و موتورلا نیز با ارائه ۶۸۰۰ که مانند اینتل ۸۰۸۰بود۸۰۸۰ بود خود را با بازار تطبیق داد. شرکت‌ها سپس ریزپردازنده ۱۶ بیتی را ساختند.
 
== قانون مور ==
خط ۴۲:
== نیازمندی به چند هسته‌ای‌ها ==
به دلیل پیشرفت در تکنولوژی مداری و محدودیت کارایی در زمینه‌های گسترده پردازنده‌های انتزاعی تراشه‌های چند پردازنده یا تکنولوژی چند هسته‌ای مسیر اصلی در طراحی یک cpu شده‌است.
تسریع فرکانس پردازنده نقش خودش را در اوایل این دهه اجرا کرده‌است. ساختارهای کامپیوتری به یک راه حل برای افزایش کارایی نیاز داشتند اضافه کردن یک هسته پردازشی علاوه بر یک تراشه مشابه به صورت تئوری کارایی دو برابر را نتیجه می‌دهد و گرما را کمتر هدر می‌دهد. اگرچه که در عمل سرعت واقعی هر هسته کمتر از سریعترین پردازندهٔ تک هسته‌ای در سپتامبر ۲۰۰۵ شرکت IEEE Reviewer کاملا متوجه این نکته شد که تا افزایش کلاک بهMHZ ۴۰۰ (در سرعت کلاک)توان مصرفی۶۰٪ افزایش پیدا می‌کند اما رویکرد دو هسته‌ای به این معنی است که شما می‌توانید به اهمیت بالا بردن کارایی بدون نیاز به اجرا در سرعت کلاک ویرانگر دست پیدا کنید.
چند هسته‌ای یک مفهوم جدید نیست. به عنوان مفهومی که قبلا در سیستم‌های جاسازی شده و برای برنامه‌های کاربردی خاص برای مدتی استفاده شده‌است می‌باشد. اما اخیرا تکنولوژی به یک جریان اصلی با استفاده از اینتل و دستگاههای ریز پیشرفته AMD)) که بسیاری از تراشه‌های چند هسته‌ای موجود تجاری را معرفی می‌کند تبدیل شده‌است. برخلاف ماشین‌های ۲یا۴ هسته‌ای در دسترس تجاری در سال ۲۰۰۸ بعضی از متخصصین بر این باورند که به وسیله پردازنده‌های تعبیه شده در سال ۲۰۱۷ می‌توانند ۴۰۹۶ هسته را پشتیبانی کنند. پردازنده‌های سرور می‌توانند از ۵۱۲ هسته و تراشه‌های کامپیوتر‌های رو میزی می‌توانند از ۱۲۸ هسته استفاده کنند. این نرخ رشد گیج کننده‌است چراکه تراشه‌های رومیزی جاری در اوج استفاده از۴از ۴ هسته هستند و تک هسته‌ای‌ها در ۳۰ سال گذشته استفاده می‌شدند.
 
== مبناهای چند هسته ای ==
شرح زیر مخصوص هر طرح چند هسته‌ای نیست اما تقریبا یک مرور کلی از ساختارهای چند هسته‌ای است اگرچه تولید کننده طراحی را متفاوت از دیگری انجام می‌دهد ساختارهای چند هسته‌ای نیاز دارند تا با جنبه‌های معین تطابق یابند. پیکربندی پایه یک ریزپردازنده در شکل ۲ دیده می‌شود.
حافظه نهان سطح ۱ نزدیکترین به پردازنده‌است. این یک حافظه خیلی سریع است که اغلب برای ذخیره کردن داده به وسیله پردازنده استفاده‌است. حافظه نهان سطح ۲ بزرگتر از حافظه نهان سطح ۱ است و برای یک هدف یکسان طراحی شده‌است. حافظه اصلی بزرگتر و کند تر از حافظه نهان است. یک مثال برای حافظه اصلی:ذخیره کردن یک فایل word ای که الان درحال ویرایش آن هستیم.
بسیاری از سیستم‌ها بین ۱ GB۱GB تا ۴GB از حافظه اصلی و تقریبا ۳۲KB از حافظه نهان سطح ۱ و ۲MB از حافظه نهان سطح ۲ را دارند. سرانجام زمانیکه داده در حافظه نهان یا حافظه اصلی موجود نیست سیستم باید آن را از دیسک سخت بدست آورد که زمان بیشتری را نسبت به خواندن از حافظه اصلی می‌برد. اگر ما دو هسته را کنار هم قرار دهیم کاملا واضح است که یک روش ارتباطی بین هسته و حافطه اصلی نیاز است که این موضوع معمولا یا به وسیله استفاده از یک باس ارتباطی تک یا شبکه به هم متصل بدست میاید.
رویکرد گذرگاه در مدل حافظه مشترک استفاده می‌شود در حالیکه رویکرد شبکه درون ارتباطی در مدل حافظه‌ای توزیع شده استفاده می‌شود.
و تقریبا بعد از ۳۲ هسته، گذرگاه سربار زیادی به وسیله مقداری از پردازش ارتباط، رقابت که باعث کاهش کارایی می‌شود، پیدا می‌کند. بنابراین یک گذرگاه ارتباطی یک مقیاس پذیر محدودی دارد.
خط ۶۲:
اینتل و ای. ام. دی تولید کننده‌های اصلی ریز پردازنده‌ها هستند.
اینتل تعداد زیادی پردازنده چند هستهٔ متفاوت تولید می‌کند: پنتیوم D در کامپیوترهای رومیزی استفاده می‌شود. Core 2 Due هم در محیط لب تاپ و هم در رومیزی و پردازنه Xeon در سرویس دهنده‌ها استفاده می‌شود.
AMD دارای صیفطیف Althon برای کامپیوترهای رومیزی Tution برای لب تاپ‌ها و Opteron برای سرویس دهنده‌ها و ایستگاه‌های کاری است.
اگر چه Core 2 Due و Althon 64x۲ هر دو برروی یک پایه‌اند ولی ساختارهای آنها بسیار متفاوت اند.
 
خط ۶۸:
Core 2 Due با مدل حافظه اشتراکی با حافظه نهان سطح ۱ و حافظه نهان سطح ۲ که حداکثر نرخ GB/sec ۹۶ را فراهم می‌کند منطبق هستند.
اگر یک حافظه نهان سطح، miss کند هر دوی حافظه نهان سطح ۲ و دومین هستهٔ حافظه نهان سطح ۱ را به صورت موازی قبل از ارسال تقاضا به حافظه اصلی، بررسی می‌کند.
در مقابل AthilonAthlon مدل حافظه توزیعی با حافظه نهان سطح ۲ مجزا را دنبال می‌کند. این حافظه‌های نهان سطح ۲ واسط درخواست‌های سیستمی را به اشتراک می‌گذارند و نیاز به گذرگاه را حذف می‌کند.
واسط درخواست سیستم هسته هارا با یک کنترلر حافظه روی تراشه متصل می‌کند و یک اتصال داخلی که Hyper transport (فرا انتقال) نامیده شده‌است، به طور موثر تعداد باسن‌های مورد نیاز در یک سیستم را کاهش می‌دهد و تنگناها را کاهش و پهنای باند را افزایش می‌دهد و در عوض Core 2 Due در یک واسط باس استفاده می‌کند. Core 2 Due همچنین کنترل حرارتی و توان واحدهای روی تراشه را دارد.
هیچ فایدهٔ کارایی قطعی از باس در مقابل اتصال داخلی وجود ندارد.
خط ۸۰:
 
== چالش‌های چند هسته‌ای ==
داشتن هسته‌های چند گانه روی یک تراشه باعث غلبه کردن بر چندین مشکل است. مدیریت توان و دما دو نگرانی هستند که به صورت بالقوه با افزایش هسته‌های چند گانه افزایش می‌یابند. انسجام حافظه نماننهان و حافظه اصلی یک چالش دیگر است به طوریکه همه طرح‌هایی که در بالا بحث شد دارای حافظه نماننهان توزیع شده سطح و در بعضی موارد حافظه‌های نماننهان سطح ۲ که باید هماهنگ باشند و سرانجام استفاده کامل از پردازنده چند هسته مساله دیگری است. اگر برنامه نویسان برنامه‌های کاربردی که از فایده هسته‌های چند گانه استفاده می‌کنند را ننویسند هیچ بهره‌ای نخواهند برد و در بعضی موارد این به معنای از دست دادن کارایی است.
برنامه کاربردی نیاز دارند تا نوشته شوند بنابراین اجزای متفاوت می‌توانند به صورت موازی اجرا شوند بدون هیچ ارتباطی با اجرای دیگر آن برنامه کاربردی که به صورت همزمان اجرا می‌شوند.
 
==توان و دما==
اگر دو هسته روی یک تراشه بدون هیچ تغییری قرار داده شوند. تراشه در تئوری ده برابر یک تراشه تنها توان مصرف می‌کند و حرارت تولید می‌کند. در مثال نمایی اگر یک پردازنده بسیار گرم شود این امکان وجود دارد که حتی کامپیوتر شما بسوزد. برای تخمین زدن هر طرح بالا هسته‌های چند گانه در یک فرکانس پایین تر برای کاهش مصرف توان اجرا می‌شوند. برای کاهش مصرف توان غیر ضروری خیلی طرح‌ها با یک واحد کنترل توان که وظیفه خاموش کردن هسته‌هایی که استفاده نمی‌شوند را دارند یا موظف به محدود کردن مقدار توان هستند ترکیب می‌شوند. با خاموش کردن هسته‌هایی که استفاده نمی‌شوند و استفاده از Clock going مقدارزیادیمقدار زیادی از نشست تراشه کاهش می‌یابد. برای کمتر شدن گرمای تولیدی به وسیله هسته‌های چند گانه روی یک تراشه تنها تراشه به طور ساختار یافته‌است تعداد نقاط زیاد نشود و حرارت روی خام تراشه پخش می‌شوند.
همانطور که در شکل ۷ دیده می‌شود اکثریت گرما در پردازنده‌های CELL در عنصر پردازش توان پراکنده شده‌است. و مابقی در سطح عناصر پردازشی همکار پخش می‌شوند.
یک پردازنده CELL یک روند متداول برای ساخت نشان دهندهٔ دمای سیستم با یک خسگر خطی و ده حسگر دیجیتال داخلی را طی می‌کند.
خط ۱۰۲:
 
== چند نخی: ==
در نهایت مهمترین موضوع استفاده به صورت چند نخی و یا تکنیکیه‌ایتکنیک پردازش موازی برای رسیدن به بالاترین کارایی یک پردازنده چند هسته می‌باشد. به استثناء جاجاوا و اعدردر زبان‌های پیشرفته تجاری کمتر از گسترش چند نخی استفاده می‌شود. ساختن دوباره برنامه کاربردی تا چند نخی شوند، به معنی دوباره کاری برنامه نویس در بیشتر موارد است. برنامه نویسان باید برنامه‌های کاربردی را به صورت زیر برنامه‌های مختلف بنویسند تا بتوانند روی هسته‌های مختلف اجرا کنند این بدان معنی است که وابستگی‌های داده باید حل شود (برای مثال، تاخیر در ارتباطات یا استفاده از حافظه نهان مشترک) برنامه‌های کاربردی باید متعادل باشند. اگر یک هسته خیلی بیشتر از هسته دیگر مورد استفاده قرار گیرد برنامه نویس نمی‌تواند به تمام فواید یک سیستم چند هسته‌ای برسد.
بعضی شرکت‌ها محصولات جدید خود را با قابلیت چند هسته‌ای تولید می‌کنند مانند سیستم عامل‌های جدید ماکروسافتمایکروسافت و Apple که می‌توانند تا ۴ هسته را پشتیبانی کنند.
 
== مسائل باز ==
تعداد زیادی هسته روی یک تراشه تنها، یک نیاز بزاگبزرگ برای افزایش حافظه وجود دارد. پردازنده‌های ۳۲ بیتی مثل پنتیوم ۴، می‌توانند تا ۴۶ از حافظه اصلی آدرس دهی کنند. با هسته‌هایی که امروز از آدرس‌های ۶۴ بیتی استفاده می‌کنند میزان حافظه قابل آدرس دهی تقریبا نامحدود است یک سیستم حافظه بهبود یافته ضروری است. تعدادی حافظه اصلی و حافظه نهان بزرگتر برای چند پردازنده‌های چند نخی نیاز است.
 
==سیستم باس و شبکه‌های به هم متصل==
خط ۱۱۵:
== نتیجه گیری: ==
قبل از پردازنده‌های چند هسته‌ای افزایش کارایی از یک نسل به نسل دیگری مثل افزایش فرکانس، خیلی ساده دیده می‌شود. وقتی که فرکانس‌های بالا سبب می‌شوند که پردازنده‌های در سرعتی که باعث افزایش اتلاف توان و اتلاف حرارت در سطوح زیان بار می‌شود اجرا شوند فسوخ شد.
اضافه کردن هسته‌های چندگانه در خلال یک پردازنده، یک راه حل از اجرا در فرکانس‌های پایین تر می‌دارد. اما مشکلات جدید جالبی را اضافه کرد. پردازنده‌های چند هسته‌ای به منظور اینکه اتلاف توان معقولی اتلاف گرمای معقولی و پروتکل‌های انسجام حافظه نهان دست یا بندیابند ساخته شدند.
اگر چه خیلی از مسائل حل نشده باقی ماند به منظور استفاده از پردازنده‌های چند هسته‌ای با ۳ ظرفیت شامل برنامه‌های کاربردی روی سیستم‌های چند نخی اجرا می‌شوند. تقریبا برنامه‌های کاربردی کمی وجود دارد که در هر سطحی از موازی سازی نوشته شده‌اند (سیستم‌های حافظه و شبکه‌های به هم متصل نیاز به بهبود دارند و همچنان هنوز مشخص نیست که آیا هسته‌های یکنواخت کاراترند یا هسته‌های ناهمگون.
با طرح‌های زاید و گوناگون تقریبا غیر ممکن است که هر استانداردی را برای انسجام حافظه نهان، اتصالات داخلی و چینش آن‌ها تنظیم کنیم. بزرگترین سختی که در آموزش تکنیک‌های برنامه نویسی موازی (چون بیشتر برنامه نویسان در برنامه نویسی ترتیبی خیلی منظم هستند) و دوباره طراحی کردن برنامه‌های کاربردی جاری باقی می‌ماند این است که روی سیستم‌های چند هسته به طور بهینه اجرا کنیم.