موضوع مقاله: محاسبات ناهمگن | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # محاسبات ناهمگن | مقدمه: محاسبات ناهمگن به سیستم های اشاره دارد که در آنها از بیش از یک نوع پردازنده یا هسته استفاده شده است. | ## بخش 1: محاسبات ناهمگن | این سیستم ها کارایی و بهره وری انرژی خودشان را فقط از طریق افزودن یک نوع پردازنده بدست نمی آورند، بلکه با افزودن پردازنده های متنوع، که معمولا برای هندل کردن وظایف خاص با استفاده از قابلیتهای پردازشی خاص بکار گرفته می شوند بدست خواهند آورد. ناهمگنی (Heterogenity) در بحث محاسبات معمولا ناهمگونی به معماریهای مجموعه- دستورالعمل ISA اشاره دارد که در آن پردازنده اصلی یک معماری و سایر پردازنده ها معماری دیگری ( شاید بیش از یک معماری)، که معمولا خیلی متفاوت است، نه فقط یک ریز معماری متفاوت (پردازش اعداد ممیز شناور یک گونه خاص از این است- که معمولا به آن به عنوان ناهمگونی اشاره نمی شود) دارند. در گذشته محاسبات ناهمگن به معنای ISA های متفاوتی بود که به طور متفاوتی اداره می شدند، در حالی که در نمونه های مدرن، سیستم های معماری سیستم ناهمگون HSA در عین حالی که از چندین نوع پردازنده (معمولا CPU و GPU )، که معمولا بر روی همان مدار مجتمع هستند، استفاده می کنند، این تفاوتها را (برای کاربر) از بین می برند تا بهترینها را در دو دنیای متفاوت فراهم کنند: پردازش عمومی GPU ( جدا از قابلیت های به خوبی شناخته شده GPU برای رندرینگ گرافیکی سه بعدی، به خوبی می تواند محاسبات سنگین ریاضی را بر روی مجموعه داده های سنگین انجام دهد) و CPU ها که می توانند سیستم عامل را اجرا کنند و وظایف سنتی سری را اجرا نمایند. از آنجا که مقیاس پذیری فناورزهای ساخت جدید اجازه می دهد تا اجزای گسسته سابق به صورت قطعات یک سیستم بر روی برد SOC باشند، سطح ناهمگونی در سیستم های محاسباتی مدرن به تدریج افزایش می یابد. یافته های اخیر نشان می دهد که یک تراشه چند پردازنده ناهمگون ISA که از تنوع ارائه شده توسط چندین ISA بهره می برد می تواند بهترین معماری همگن ISA با همان ساختار را با بهره وری بیش از 21% و صرفه جویی انرژی بیش از 23% و کاهش 32% در محصول تاخیر انرژی پشت سر بگذارد. توپولوژی پردازنده ناهمگن: یک سیستم با توپولوژی CPU ناهمگن، سیستمی است که در آن ISA یکسانی استفاده شده است، اما هسته های آن از نظر سرعت متفاوت هستند. ( اگر چه این سیستم ها از نظر فنی چند پردازنده های نامتقارن هستند، هسته ها از نظر نقش و دستیابی به دستگاهها متفاوت نیستند). به طور معمول دونوع هسته داریم: هسته های با کارایی بالا که معمولا به عنوان "بزرگ" یا هسته P شناخته می شوند، و هسته های با مصرف انرژی کمتر که با نام "کوچک" یا هسته E شناخته می شوند. عبارات هسته های p و E معمولا در مورد پیاده سازی هسته های ناهمگن اینتل بکار می روند، در حالی که عبارات هسته های بزرگ و کوچک معمولا در مورد معماری ARM استفاده می شوند. برخی از پردازنده ها سه نوع هسته دارند، هسته های اصلی، کارایی و بهره ور، که هسته های اصلی کارایی بیشتری نسبت به هسته های کارایی دارند و به عنوان هسته بزرگ شناخته می شوند. | ## بخش 2: محاسبات ناهمگن | یکی از کاربردهای معمول چنین توپولوژی فراهم کردن راندمان بهتر، به ویژه در SoC های موبایل است. اینتل نیز تراشه های x86-64 هیبریدی با اسم Lakefield تولید کرده است، که بدون محدودیتهای اصلی در حمایت از مجموعه دستورات نبوده است. پردازنده جدیدتر Alder Lake توانست با افزودن حمایت بیشتر از مجموعه دستورالعمل ها به هسته های کوچک این محدودیت را برطرف سازد. چالشها: سیستم های محاسبات ناهمگن چالش هایی دارند که در یک سیستم محاسبات همگن دیده نمی شود. عناصر پردازشی متعدد باعث می شود که تمامی مسائل موجود در سیستم های پردازشی همگن در این سیستم ها نیز وجود داشته باشد و در عین حال سطح ناهمگنی در سیستم می تواند باعث عدم یکنواختی در توسعه سیستم، روشهای برنامه نویسی و قابلیتهای کلی سیستم شود. حوزه های ناهمگنی می تواند شامل موارد زیر باشد: ISA یا معماری مجموعه-دستورالعمل عناصر محاسباتی ممکن است معماریهای مجموعه دستورالعمل متفاوتی داشته باشند که می تواند منجر به ناسازگاری دودویی شود. ABI یا رابط دودویی برنامه عناصر محاسباتی ممکن است محتوای حافظه را به روشهای متفاوتی تفسیر کنند. این ممکن است شامل نحوه چیدن داده ها، فراخوانی قراردادها، چارچوب حافظه باشد که هم به معماری و هم به کامپایلری که استفاده می شود دارد. API یا رابط برنامه نویسی برنامه های کاربردی خدمات سیستم عامل و کتابخانه ممکن است برای تمامی عناصر محاسباتی به صورت یکنواخت در دسترس نباشند. پیاده سازی سطح پایین ویژگیهای زبان ویژگیهای زبان مانند توابع و نخها، معمولا با استفاده از اشاره گرهای تابع پیاده سازی می شوند، مکانیزمی که جهت استفاده در محیط های ناهمگن نیاز به ترجمه یا انتزاع اضافه دارد. | ## بخش 3: محاسبات ناهمگن | رابط و سلسله مراتب حافظه عناصر محاسباتی ممکن است ساختارهای حافظه پنهان متفاوتی داشته باشند، پروتکلهای انسجام حافظه پنهان و دستیابی به حافظه آنها یکنواخت یا عیر یکنواخت باشد (NUMA). این تفاوتها همچنین می تواند در توانایی خواندن داده های با طول دلخواه باشد، زیرا برخی از پردازنده ها/واحدها فقط داده ها را به صورت بایت یا کلمه انجام دهند. اتصال با یکدیگر عناصر محاسباتی ممکن است علاوه بر رابط اتصال گذرگاه/حافظه پایه، انواع مختلفی از اتصالات بین درونی را داشته باشند. این اتصالات ممکن است شامل رابط شبکه اختصاصی، دستگاههای دستیابی مستقیم به حافظه DMA ، صندوقهای پستی، صفهای FIFO ، حافظه های چرکنویس و .. علاوه بر این، بخشهای معینی از یک سیستم ناهمگن ممکن است دارای حافظه پنهان منسجم باشند ، در حالیکه سایر بخش ها ممکن است برای سازگاری و انسجام به دخالت صریح نرم افزار نیاز داشته باشند. کارایی یک سیستم ناهمگن ممکن است CPU هایی داشته باشد که از نظر معماری مشابه باشند اما زیرلایه های ریزمعماری متفاوتی داشته باشند که منجر به سطوح متفاوت کارایی و مصرف انرژی می شود. قابلیتهای نامتقارن، به همراه مدلهای برنامه نویسی مبهم و انتزاعهای سیستم عامل، می تواند منجر به مسائل پیش بینی کارایی شود، به خصوص زمانی که بارکاریها به صورت میکس باشد. ابزارهای توسعه معمولا پردازنده های متفاوت به ابزارهای متفاوتی ( ویرایشگرها، کامپایلرها،..) برای توسعه دهندگان نرم افزارها نیاز دارند، که این امر باعث پیجیدگی در افراز نرم افزارها بر روی آنها خواهد شد. افراز داده ها در حالیکه افراز داده ها بر روی پلتفرم های همگن اعلب ساده است، نشان داده شده است که برای موارد ناهمگن، یک مساله NP-complete است. برای تعداد کمی از افرازها، افراز بهینه ای که بار را به صورت کامل بهینه نماید و حجم ارتباطات را کمینه نماید وجود دارد. | ## جمع‌بندی | نمونه سخت افزار در هر دامنه محاسباتی ، از سرورهای پیشرفته و ماشین های محاسباتی با کارایی بالا گرفته تا دستگاههای تعبیه شده کم مصرف، شامل گوشی های همراه و تبلت ها، می توان سخت افزارهای ناهمگن را یافت.