انجمن چند هسته ای

**انجمن چند هسته ای** در سال ۲۰۰۵ تاسیس شد. این انجمن،یک کنسرسیوم صنعتی غیر انتفاعی عضو محور است که بر ایجاد استاندارد باز واسط های برنامه نویسی نرم افزار،مشخصات فنی و راهنمایی هایی متمرکز است که به توسعه دهندگان سیستم و برنامه نویسان بتوانند راحت تر فناوری چند هسته ای را در نرم افزار های کاربردی  خود به کار بگیرند.

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

## پروژه های تکمیل شده
در سال ۲۰۰۸، گروه کاری **ارتباطات چند هسته ای** اولین مشخصات فنی کنسرسیوم را به عنوان MCAPI منشر کرد.MCAPI یک API مبتنی بر ارسال پیام است که عناصر اصلی ارتباط و هماهنگ سازی مورد نیاز برای سیستم های نهفته با توزیع نزدیک (چندین هسته روی یک تراشه و/یا تراشه روی برد مدار) را در برمیگیرد. سیستم های هدف برای MCAPI ابعاد چندگانه ای از ناهمگونی را در برمیگیرند (برای مثال: ناهمگونی در هسته پردازشی،ناهمگونی در شبکه اتصال داخلی،ناهمگونی در حافظه،ناهمگونی در سیستم عامل،ناهمگونی در زنجیره ابزار نرم افزاری و ناهمگونی در زبان برنامه نویسی).

در سال ۲۰۱۱، گروه کاری **MCAPI**(ارتباطات چند هسته ای)، نسخه ۲.۰ آن را منتشر کرد. نسخه بهبود یافته، ویژگی‌های جدیدی از قبیل دامنه‌ها را برای اهداف مسیریابی به آن افزود. MCAPI نسخه ۲.۰ با معرفی «دامنه‌ها»، سطحی از سلسله مراتب را به آن شبکه از گره‌ها اضافه می‌کند.دامنه ها را می‌توان به روش‌های مختلف و خاصِ هر پیاده‌سازی استفاده کرد؛ برای مثال، می‌توانند برای نمایش تمامی هسته‌های موجود روی یک تراشه خاص به کار روند یا برای تقسیم یک توپولوژی به مناطق عمومی و امن مورد استفاده قرار گیرند. MCAPI 2.0 همچنین سه نوع جدید از پارامترهای مقدار دهی اولیه را اضافه می‌کند (ویژگی‌های گره، پیکربندی‌های مختص پیاده‌سازی، اطلاعات پیاده‌سازی مانند توپولوژی اولیه شبکه یا نسخه MCAPI در حال اجرا).ریاست این گروه کاری بر عهده اسون برمر (Sven Brehmer) است.

در سال ۲۰۱۱، گروه کاری **مدیریت منابع چند هسته‌ای** اولین مشخصات خود را با نام MRAPI منتشر کرد. MRAPI یک استاندارد صنعتی است که قابلیت‌های ضروری مدیریت منابع در سطح برنامه را مشخص می‌کند. برنامه‌های چند هسته‌ای برای دسترسی همزمان هماهنگ به منابع سیستم در موقعیت‌هایی که: (1) منابع کافی برای اختصاص به وظایف یا پردازنده‌های منفرد وجود ندارد، و/یا (2) سیستم زمان اجرا (مرحله چرخه عمر برنامه) مکانیسم دسترسی یکنواخت برای هماهنگی اشتراک منابع را فراهم نمی‌کند، به این API نیاز دارند. این API برای پیاده‌سازی‌های چند هسته‌ای تعبیه‌شده SMP و AMP قابل اجرا است (که در آن AMP هم از نظر نرم‌افزار و هم از نظر سخت‌افزار به ناهمگن اشاره دارد). MRAPI (همراه با سایر APIهای انجمن چند هسته‌ای) می‌تواند به عنوان ابزاری ارزشمند برای پیاده‌سازی برنامه‌ها و همچنین برای پیاده‌سازی چنین مدیران منابع کامل و سایر انواع خدمات لایه‌بندی شده عمل کند.این گروه کاری توسط جیم هولت (Jim Holt) ریاست می‌شد.

در سال ۲۰۱۳ گروه کاری **روابط برنامه نویسی مدیریت وظایف چند هسته ای(MTAPI)** اولین مشخصات فنی خود را منشر کرد.MTAPI یک استاندارد برای رابط برنامه نویسی نرم افزار است که هماهنگی وظایف را در سیستم های توکار موازی با هسته های همگن و ناهمگن پشتیبانی میکند.. از ویژگی های اصلی MTAPI میتوان به زمانبندی در اجرا و تخصیص وظایف هسته اشاره کرد. MTAPI به دلیل رفتار پویای آن برای بهینه سازی حجم کار در سیستم های چند هسته ای طراحی شده است و به توسعه دهنده نرم افزار اجازه میدهد تا استراتژی زمان بندی وظایف را برای تاخیر و عدالت در تخصیص منابع بهینه سازی کند. ریاست این گروه بر عهده اورس گلیم (Urs Gleim)از شرکت زیمنس بود.

در سال ۲۰۱۳ کارگروه **تمرینات برنامه نویسی چندهسته ای (MPP)** یک راهنما برنامه نویسی نرم افزاری چندهسته ای برای این صنعت ارائه کرد که به فهم و سازگاری مسئله های برنامه نویسی چندهسته ای کمک میکند. این راهنمای MPP با استفاده از زبان های C و ++C تمرین های خوبی برای ایجاد راهنماهایی با ارزش های واقعی برای مهندسانی که به برنامه نویسی چندهسته ای روی می آورند، ارائه می دهد. این کارگروه توسط Rob Oshana از شرکت NXP و David Stewart از شرکت CriticalBlue ریاست می شد.

درسال 2015 کارگروه **رابط نرم/سخت افزار برای سیستم های چند/بسیار هسته ای (SHIM)** یک استاندارد توصیف معماری را برای استفاده در طراحی نرم افزار ارائه کرد. بعضی از ویژگی های معماری که SHIM توصیف میکند عبارتند از: توپولوژی سخت افزار ازجمله هسته های پردازنده،شتاب دهنده ها،حافظه های نهان و کانال های ارتباطی بین هسته ای همراه با جزئیات دلخواه هر عنصر، حافظه و اطلاعات عملکرد ارتباطی. این کارگروه توسط Masaki Gondo از شرکت eSOL مدیریت می شد.

## کارگروه های فعال

* کارگروه رابط برنامه نویسی ارتباطات چندهسته ای(MCAPI) درحال حاضر مشغول اضافه کردن قابلیت ها و عملکرد های بیشتری برای گسترش کاربرد MCAP در نسخه دوم است.این کارگروه درحال کار بر روی ویژگی های Interoperability و Zero copy است. این اقدامات شامل تعامل دوطرفه بین برنامه و برنامه با استفاده از حافظه مشترک و تعامل دو طرفه بین برنامه و درایور است. هدایت این فعالیت ها برعهده Sven Brehmer از شرکت PolyCore Software است.

* کارگروه مجازی سازی (Virtualization) بر روی تعریف و بهینه سازی مجموعه ای از اطلاعات و توابع نیمه مجازی شده (Paravirtualization) تمرکز خواهد کرد تا امکان برقراری ارتباط با Hypervisor فراهم شود.همچنین هدف این کارگروه، ایجاد یک سیستم برای دسته بندی ویژگی ها و عملکردهای مختلف مجازی سازی در محیط های چندهسته ای است. ریاست این کارگروه برعهده Rajan Goyal از شرکت Cavium Networks و Surender Kumar از Nokia Networks است.
* کارگروه پردازش چندگانه نامتقارن باز (OpenAMP) بر روی استانداردسازی رابطه های برنامه نویسی (APIها)، ارائه مستندات دقیق برای مشخصات فنی و همچنین توسعه قابلیت های OpenAMP تمرکز خواهد کرد.ریاست این گروه برعهده Tomas Evensen از شرکت Xilinx است.

## OpenAMP
فریم ورک چندهسته ای OpenAMP یک فریم ورک متن باز برای توسعه نرم افزار کاربردی در سیستم های پردازش چندگانه نامتقارن(AMP) است که عملکردی مشابه OpenMP برای سیستم های پردازش چندگانه متقارن دارد.

پیاده سازی های مختلفی از فریم ورک چندهسته ای OpenAMP وجود دارد که هدف همگی این است که از طریق API استاندارد OpenAMP بتوانند با یکدیگر همکاری داشته باشند. یکی از پیاده سازی های این فریم ورک که در اصل برای تراشه Zynq شرکت Xilinx توسعه یافته بود،تحت پروژه های متن باز OpenAMP منتشر شده است.فریم ورک چندهسته ای شرکت منتور(MEMF) یک پیاده سازی اختصاصی از استاندارد OpenAMP است.

استاندارد API مربوط به OpenAMP تحت پوشش انجمن چندهسته ای مدیریت می شود.

## منابع