محاسبات ناهمگن

محاسبات ناهمگن به سیستم های اشاره دارد که در آنها از بیش از یک نوع پردازنده یا هسته استفاده شده است. این سیستم ها کارایی و بهره وری انرژی خودشان را فقط از طریق افزودن یک نوع پردازنده بدست نمی آورند، بلکه با افزودن پردازنده های متنوع، که معمولا برای هندل کردن وظایف خاص با استفاده از قابلیتهای پردازشی خاص بکار گرفته می شوند بدست خواهند آورد.  

## '''ناهمگنی (Heterogenity)'''
در بحث محاسبات معمولا ناهمگونی به معماریهای مجموعه- دستورالعمل ISA اشاره دارد که در آن پردازنده اصلی یک معماری و سایر پردازنده ها معماری دیگری ( شاید بیش از یک معماری)، که معمولا خیلی متفاوت است، نه فقط یک ریز معماری متفاوت  (پردازش اعداد ممیز شناور یک گونه خاص از این است- که معمولا به آن به عنوان ناهمگونی اشاره نمی شود) دارند.

در گذشته محاسبات ناهمگن به معنای ISA های متفاوتی بود که به طور متفاوتی اداره می شدند، در حالی که در نمونه های مدرن، سیستم های معماری سیستم ناهمگون HSA در عین حالی که از چندین نوع پردازنده (معمولا CPU و GPU )، که معمولا بر روی همان مدار مجتمع هستند، استفاده می کنند، این تفاوتها را (برای کاربر) از بین می برند تا بهترینها را در دو دنیای متفاوت فراهم کنند: پردازش عمومی GPU ( جدا از قابلیت های به خوبی شناخته شده GPU برای رندرینگ گرافیکی سه بعدی، به خوبی می تواند محاسبات سنگین ریاضی را بر روی مجموعه داده های سنگین انجام دهد) و CPU ها که می توانند سیستم عامل را اجرا کنند و وظایف سنتی سری را اجرا نمایند.

از آنجا که مقیاس پذیری فناورزهای ساخت جدید اجازه می دهد تا اجزای گسسته سابق به صورت قطعات یک سیستم بر روی برد SOC باشند، سطح ناهمگونی در سیستم های محاسباتی مدرن به تدریج افزایش می یابد.

به عنوان مثال، در حال حاضراغلب پردازنده های جدید شامل منطق درون ساخت برای ارتباط باسایر دستگاهها ( SATA, PCI, Ethernet, RFID, USB, UART ، رادیوها و کنترلرهای حافظه)، همچنین واحدهای عملیاتی قابل برنامه ریزی و شتاب دهنده های سخت افزاری هستند ( GPU ها، پردازنده های کمکی رمزنگاری، پردازنده های شبکه قابل برنامه ریزی، کدکننده/کدگشاهای A/V و غیره ).

یافته های اخیر نشان می دهد که یک تراشه چند پردازنده ناهمگون ISA که از تنوع ارائه شده توسط چندین ISA بهره می برد می تواند بهترین معماری همگن ISA با همان ساختار را با بهره وری بیش از 21% و صرفه جویی انرژی بیش از 23% و کاهش 32% در محصول تاخیر انرژی پشت سر بگذارد. بیانیه 2014 AMD برای تراشه های ARM و X86 SoC سازگار با پین خودش، با نام رمز پروژه Skybridge ، در ساختش یک تراشه چند پردازنده ناهمگن ISA (ARM+X86 ) را پیشنهاد می دهد.

## '''توپولوژی پردازنده ناهمگن:'''
یک سیستم با توپولوژی CPU ناهمگن، سیستمی است که در آن ISA یکسانی استفاده شده است، اما هسته های آن از نظر سرعت متفاوت هستند. تنظیمات این سیستم بیشتر شبیه یک سیستم چند پردازنده متقارن است. ( اگر چه این سیستم ها از نظر فنی چند پردازنده های نامتقارن هستند، هسته ها از نظر نقش و دستیابی به دستگاهها متفاوت نیستند). به طور معمول دونوع هسته داریم: هسته های با کارایی بالا که معمولا به عنوان "بزرگ" یا هسته P شناخته می شوند، و هسته های با مصرف انرژی کمتر که با نام "کوچک" یا هسته E شناخته می شوند. عبارات هسته های p و E معمولا در مورد پیاده سازی هسته های ناهمگن اینتل بکار می روند، در حالی که عبارات هسته های بزرگ و کوچک معمولا در مورد معماری ARM استفاده می شوند. برخی از پردازنده ها سه نوع هسته دارند، هسته های اصلی، کارایی و بهره ور، که هسته های اصلی کارایی بیشتری نسبت به هسته های کارایی دارند و به عنوان هسته بزرگ شناخته می شوند. هسته های کارایی به عنوان میانه و هسته های بهره ور به عنوان کوجک شناخته می شوند.

یکی از کاربردهای معمول چنین توپولوژی فراهم کردن راندمان بهتر، به ویژه در SoC های موبایل است.

* ARM big.LITTLE ( که توسط DynamicIQ جایگزین شده است) یک نمونه اولیه است که در آن هسته های با قدرت بالاتر و سریعتر با توان پایین تر و کندتر ترکیب شده اند.
* اپل نیز SoC های سیلیکون اپل را با سازماندهی مشابهی تولید نموده است.
* اینتل نیز تراشه های x86-64 هیبریدی با اسم Lakefield تولید کرده است، که بدون محدودیتهای اصلی در حمایت از مجموعه دستورات نبوده است. پردازنده جدیدتر Alder Lake توانست با افزودن حمایت بیشتر از مجموعه دستورالعمل ها به هسته های کوچک این محدودیت را برطرف سازد.

## '''چالشها:'''
سیستم های محاسبات ناهمگن چالش هایی دارند که در یک سیستم محاسبات همگن دیده نمی شود. عناصر پردازشی متعدد باعث می شود که تمامی مسائل موجود در سیستم های پردازشی همگن در این سیستم ها نیز وجود داشته باشد و در عین حال سطح ناهمگنی در سیستم می تواند باعث عدم یکنواختی در توسعه سیستم، روشهای برنامه نویسی و قابلیتهای کلی سیستم شود. حوزه های ناهمگنی می تواند شامل موارد زیر باشد:

### ISA یا معماری مجموعه-دستورالعمل
عناصر محاسباتی ممکن است معماریهای مجموعه دستورالعمل متفاوتی داشته باشند که می تواند منجر به ناسازگاری دودویی شود.

### ABI یا رابط دودویی برنامه
عناصر محاسباتی ممکن است محتوای حافظه را به روشهای متفاوتی تفسیر کنند. این ممکن است شامل نحوه چیدن داده ها، فراخوانی قراردادها، چارچوب حافظه باشد که هم به معماری و هم به کامپایلری که استفاده می شود دارد.

### API یا رابط برنامه نویسی برنامه های کاربردی
خدمات سیستم عامل و کتابخانه ممکن است برای تمامی عناصر محاسباتی به صورت یکنواخت در دسترس نباشند.

### پیاده سازی سطح پایین ویژگیهای زبان
ویژگیهای زبان مانند توابع و نخها، معمولا با استفاده از اشاره گرهای تابع پیاده سازی می شوند، مکانیزمی که جهت استفاده در محیط های ناهمگن نیاز به ترجمه یا انتزاع اضافه دارد.

### رابط و سلسله مراتب حافظه
عناصر محاسباتی ممکن است ساختارهای حافظه پنهان متفاوتی داشته باشند، پروتکلهای انسجام حافظه پنهان و دستیابی به حافظه آنها یکنواخت یا عیر یکنواخت باشد (NUMA). این تفاوتها همچنین می تواند در توانایی خواندن داده های با طول دلخواه باشد، زیرا برخی از پردازنده ها/واحدها فقط داده ها را به صورت بایت یا کلمه انجام دهند.

### اتصال با یکدیگر
عناصر محاسباتی ممکن است علاوه بر رابط اتصال گذرگاه/حافظه پایه، انواع مختلفی از اتصالات بین درونی را داشته باشند. این اتصالات ممکن است شامل رابط شبکه اختصاصی، دستگاههای دستیابی مستقیم به حافظه DMA ، صندوقهای پستی، صفهای FIFO ، حافظه های چرکنویس و .. باشد. علاوه بر این، بخشهای معینی از یک سیستم ناهمگن ممکن است دارای حافظه پنهان منسجم باشند ، در حالیکه سایر بخش ها ممکن است برای سازگاری و انسجام به دخالت صریح نرم افزار نیاز داشته باشند.

### کارایی
یک سیستم ناهمگن ممکن است CPU هایی داشته باشد که از نظر معماری مشابه باشند اما زیرلایه های ریزمعماری متفاوتی داشته باشند که منجر به سطوح متفاوت کارایی و مصرف انرژی می شود. قابلیتهای نامتقارن، به همراه مدلهای برنامه نویسی مبهم و انتزاعهای سیستم عامل، می تواند منجر به مسائل پیش بینی کارایی شود، به خصوص زمانی که بارکاریها به صورت میکس باشد.

### ابزارهای توسعه
معمولا پردازنده های متفاوت به ابزارهای متفاوتی ( ویرایشگرها، کامپایلرها،..) برای توسعه دهندگان نرم افزارها نیاز دارند، که این امر باعث پیجیدگی در افراز نرم افزارها بر روی آنها خواهد شد.

### افراز داده ها
در حالیکه افراز داده ها بر روی پلتفرم های همگن اعلب ساده است، نشان داده شده است که برای موارد ناهمگن، یک مساله NP-complete است. برای تعداد کمی از افرازها، افراز بهینه ای که بار را به صورت کامل بهینه نماید و حجم ارتباطات را کمینه نماید وجود دارد.

## نمونه سخت افزار
در هر دامنه محاسباتی ، از سرورهای پیشرفته و ماشین های محاسباتی با کارایی بالا گرفته تا دستگاههای تعبیه شده کم مصرف، شامل گوشی های همراه و تبلت ها، می توان سخت افزارهای ناهمگن را یافت.

### محاسبات با کارایی بالا

*     Cydra-5 (کمک پردازنده عددی)
*     Cray XD1  (FPGA)
*   کامپیوترهای SRC مانند SRC-6 و SRC-7 (FPGA)

### سیستم های تعبیه شده ( پلتفرم های موبایل و DSP )

*     Texas Instruments OMAP (کمک پردازنده رسانه)
*   دستگاههای آنالوگ Blackfin (کمک پردازنده های رسانه و DSP )
*     Qualcomm Snapdragon (کمک پردازنده های GPU، DSP، تصویر و گاهی AI؛ مودم و حسگرها)
*     Nvidia Tegra (GPU، مودم و حسگرها)
*     Samsung Exynos (GPU، مودم و حسگرها)
*     سری A اپل (GPU، مودم و حسگرها)
*     واحدهای پردازش بینایی Movidius Myriad ، که شامل چندین پردازنده متقارن که با واحدهای تابع-ثابت کامل شده اند و یک جفت کنترل کننده مبتنی بر SPARQL می باشد.
*     HiSilicon Kirin SoC (GPU، مودم و حسگرها)
*     Media Tek SoC (GPU، مودم و حسگرها)

*   سیستم های طراحی Cadence ، DSP های Tensilica

### محاسبات قابل پیکربندی مجدد

*    آرایه گیتهای قابل برنامه ریزی در یک فیلد Xilinx و پلتفرم های Versal و Zynq
*     Intel “Stellarton” ( Atom + Altera FPGA)

### شبکه

*     پردازنده های شبکه IXP اینتل

### دستگاههای سرگرمی، بازی و محاسبات همه منظوره

*     Intel Sandy Bridge، Ivy Bridge، و پردازنده های Haswell (CPU های یکپارچه، OpenCL-capable از Ivy Bridge)
*     AMD Excavato و APU های Ryzen (GPU های یکپارچه و Open-CL capable)
*     IBM Cell که در PlayStation 3 یافت می شود (کمک پردازنده های برداری)
*     SpursEngine، یک گونه خاص از پردازنده های IBM Cell
*     Emotion Engine، که در PlayStation 2 یافت می شود (کمک پردازنده های رسانه و برداری)
*   معماری پردازنده ARM big.LITTLE/DynamIQ (توپولوژی ناهمگن)
*     تقریبا تمامی فروشندگان ARM راه حل های ناهمگن پیشنهاد می دهند؛ ARM، Qualcomm، Nvidia، Apple، Samsung، HiSilicon، MediaTek و غیره.