Кіріспе

Cell микропроцессоры үшін бағдарламалық жасақтаманы әзірлеу PowerPC-ге үйлесімді PPU өзегі үшін дәстүрлі әзірлеу әдістерін және функционалды түрде қысқартылған SPU копроцессорларына қатысты бағдарламалық жасақтаманы әзірлеудің жаңа қиындықтарын қамтиды.

Linux on Cell-те орнату

Cell BE экожүйесінің дамуын жеделдету және GCC негізделген Cell компиляторы, бинутилдер және Linux операциялық жүйесінің порты бар Cell қосымшаларын әзірлеу үшін ортаны қамтамасыз ету үшін ашық бастапқы кодты бағдарламалық қамтамасыз ету стратегиясы қабылданды.

Сегізбалық

Octopiler - бағдарламалық жасақтама әзірлеушілерге Cell процессорлары үшін код жазуға мүмкіндік беретін IBM прототиптік компиляторы.

Ішкі қасиеттері

Cell компиляторлары C және C++ тілдеріндегі пайдалы SPU нұсқауларын ашу үшін ішкі деректерді ұсынады. Операндтың түрімен ғана ерекшеленетін нұсқаулар (мысалы, a, ai, ah, ahi, fa және dfa қосу үшін) әдетте операндтың түріне байланысты дұрыс нұсқауды таңдайтын бір C / C ++ ішкі нұсқауымен бейнеленеді.

SPU үшін VMX кодын порттау

Басқа IBM Power микропроцессорлары үшін жасалған үлкен код бар, оны SPU-да жұмыс істеуге бейімдеу және қайта компиляциялау мүмкін. Бұл код базасына Apple-дің Mac OS X-тің PowerPC нұсқасында жүретін VMX коды кіреді, онда ол Altivec ретінде жақсы танымал. VMX-тің қанша ерекшеліктеріне байланысты, бейімделу кез-келген жерде, тікелей, ауыр немесе мүлдем практикалық емес болуы мүмкін. SPU үшін ең маңызды жұмыс жүктемелері әдетте жақсы картаға түсіріледі. Кейбір жағдайларда қолданыстағы VMX кодын тікелей порттау мүмкін. Егер VMX коды өте жалпы болса (орындалу ортасы туралы бірнеше болжам жасаса), аударма салыстырмалы түрде қарапайым болуы мүмкін. Екі процессор екілік кодтың әртүрлі форматын анықтайды, сондықтан кем дегенде қайта құрастыру қажет. Тіпті бірдей мінез-құлықпен нұсқаулар бар жерде, олардың бірдей нұсқау атаулары жоқ, сондықтан бұл да картаға түсірілуі керек. IBM бұл картаны ашықтықты қамтамасыз ететін компилятордың ішкі компоненттерін әзірлеу құралының бөлігі ретінде ұсынады. Алайда, көптеген жағдайларда тікелей теңестірілген нұсқаулар жоқ. Бұл мәселені шешудің жолы анық немесе анық емес болуы мүмкін. Мысалы, егер SPU-да қанығу мінез-құлқы қажет болса, оны орындау үшін қосымша SPU нұсқауларын қосу арқылы кодтауға болады (біраз тиімділігін жоғалтып). Екінші жағынан, егер Java-да жылжымалы нүкте семантикасы қажет болса, оны SPU процессорында жүзеге асыру мүмкін емес. SPU-да бірдей есептеуді жүзеге асыру үшін нөлден бастап мүлдем басқа алгоритмді жазу қажет болуы мүмкін. VMX мен SPU архитектурасының арасындағы ең маңызды тұжырымдамалық ұқсастық - бірдей векторлық модельді қолдау. Осы себепті, Altivec-ке бейімделген алгоритмдердің көпшілігі әдетте SPU архитектурасына да сәтті бейімделеді.

Жергілікті дүкендерді пайдалану

Әр түрлі SPU-ның жергілікті дүкендері арасындағы деректерді беру үлкен өнімділік шығындары болуы мүмкін. Жеке ЖӨБ-нің жергілікті қоймаларын әр түрлі стратегияларды қолдану арқылы пайдалануға болады. Тығыз матрицалық есептеулер сияқты жоғары жергіліктілік бар қосымшалар БЭ жасушасындағы жергілікті дүкендер үшін идеалдық жұмыс жүктемесі класын білдіреді. Ағызатын есептеулерді бірнеше буферлеу стратегиясын қолдана отырып, жад блоктарын берудің бағдарламалық жасақтамаларын пайдалану арқылы тиімді түрде орналастыруға болады. Нарықталған қосымшалар әр түрлі деректер үшін бірнеше стратегияны қолдана алады.