توسعه نرم‌افزار سلولی

**توسعهٔ نرم‌افزار** برای ریزپردازنده سلولی شامل ترکیبی از روش‌های مرسوم توسعه برای هستهٔ PPU سازگار با پاورپی‌سی و چالش‌های جدید توسعهٔ نرم‌افزار با توجه به کاهش عملکرد پردازنده‌های مشترک SPU است.

## لینوکس بر روی سلول
یک استراتژی مبتنی بر نرم‌افزار متن‌باز برای تسریع توسعه اکوسیستم Cell BE و فراهم کردن محیطی برای توسعه برنامه‌های کاربردی سلول، از جمله یک کامپایلر سلولی مبتنی بر GCC، binutils و یک پورت از سیستم عامل لینوکس اتخاذ شد.

## اکتوپایلر
اکتوپایلر نمونه اولیه کامپایلر آی‌بی‌ام است که به توسعه دهندگان نرم‌افزار اجازه می دهد تا برای پردازنده های سلولی کد بنویسند.

## قابلیت انتقال نرم‌افزار

### وفق دادن VMX بر SPU

#### تفاوت های VMX و SPU
فناوری VMX از نظر مفهومی شبیه به مدل برداری ارائه شده توسط پردازنده های SPU است، اما تفاوت های قابل توجه زیادی وجود دارد.


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

کتابچه راهنمای IBM PPE عملیاتی را برای ممیز شناور با دقت دوگانه تعریف نمی‌کند، اگرچه آی‌بی‌ام مطالبی را منتشر کرده است که به اعداد عملکرد با دقت دوگانه مرتبط با فناوری سل PPE VMX اشاره دارد.

##### ذاتی
کامپایلرها برای سل موارد ذاتی را برای نمایش دستورالعمل های مفید SPU در زبان C  و ++C ارائه می دهند. دستورالعمل هایی که فقط در نوع عملوند متفاوت هستند، معمولاً با یک C/C++ ذاتی نشان داده می شوند که دستورالعمل مناسب را بر اساس نوع عملوند انتخاب می کند.

##### انتقال کد VMX به SPU
مجموعه ای عالی از کدها برای سایر پردازنده های IBM توسعه یافته است که به طور بالقوه می توانند برای اجرا در SPU تطبیق داده شوند و دوباره کامپایل شوند. این پایه کد شامل کد VMX است که تحت نسخه Apple Mac OS PowerPC اجرا می شود، جایی که بیشتر با نام التیوک شناخته می شود.بسته به تعداد ویژگی‌های خاص وی‌ام‌ایکس، انطباق درگیر می‌تواند از ساده، دشوار، تا کاملا غیرعملی باشد.مهم ترین بارهای کاری برای اس‌پی‌یو عموماً به خوبی نقشه برداری می شوند.

در برخی موارد امکان پورت کردن مستقیم کد VMX موجود وجود دارد.اگر کد VMX بسیار عمومی باشد، ترجمه می تواند نسبتاً ساده باشد.دو پردازنده فرمت کد باینری متفاوتی را مشخص می‌کنند، بنابراین حداقل نیاز به کامپایل مجدد است.حتی در جایی که دستورالعمل‌ها با رفتارهای یکسانی وجود دارند،آنها نام دستورالعمل‌های یکسانی ندارند، بنابراین این نیز باید نگاشت شود.IBM خودش این کامپایلر را فراهم می کند که از این Mapping به صورت شفاف به عنوان بخشی از جعبه ابزار توسعه مراقبت می کند.

با این حال، در بسیاری از موارد، دستورالعملی معادل مستقیم وجود ندارد. راه حل ممکن است واضح باشد یا نه.به عنوان مثال، اگر رفتار اشباع در SPU مورد نیاز باشد، می توان با افزودن دستورالعمل های SPU اضافی برای انجام این کار، آن را کدگذاری کرد.از طرف دیگر، اگر معنایی نقطه شناور جاوا مورد نیاز باشد، دستیابی به این امر در پردازنده SPU تقریبا غیرممکن است.برای دستیابی به محاسبات مشابه در SPU ممکن است نیاز باشد که یک الگوریتم کاملاً متفاوت از ابتدا نوشته شود.مهمترین شباهت مفهومی بین VMX و معماری SPU پشتیبانی از مدل برداری یکسان است.به همین دلیل، اکثر الگوریتم‌های سازگار با التیوک معمولاً با معماری SPU نیز با موفقیت سازگار می‌شوند.

## استخراج از ذخایر محلی
انتقال داده ها بین ذخایر محلی SPU های مختلف می تواند هزینه عملکرد بالایی داشته باشد. ذخایر محلی تک تک SPU ها را می توان با استفاده از انواع استراتژی ها مورد سوء استفاده قرار داد.برنامه های کاربردی با محلی بودن بالا، مانند محاسبات ماتریس متراکم، یک کلاس حجم کاری ایده آل برای ذخایر محلی در Cell BE را نشان می دهد.

محاسبات جریان را می توان با استفاده از خط لوله گذاری نرم افزاری انتقال بلوک های حافظه با استفاده از یک استراتژی چند بافری به طور موثر انجام داد.

کش نرم افزار راه حلی برای دسترسی های تصادفی ارائه می دهد.برنامه های پیچیده تر می توانند از چندین استراتژی برای انواع داده های مختلف استفاده کنند.

## پانویس

## منابع

* The Cell Project at IBM Research
* Optimizing Compiler for a CELL Processor
* Using advanced compiler technology to exploit the performance of the Cell Broadband Engine architecture
* Compiler Technology for Scalable Architectures

رده:کامپایلرها
رده:پوچ‌افزار