Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Cell микропроцессоры үшін бағдарламалық жасақтаманы әзірлеу PowerPC-ге үйлесімді PPU өзегі үшін дәстүрлі әзірлеу әдістерін және функционалды түрде қысқартылған SPU копроцессорларына қатысты бағдарламалық жасақтаманы әзірлеудің жаңа қиындықтарын қамтиды.
Software development for the Cell microprocessor involves a mixture of conventional development practices for the PowerPC compatible PPU core, and novel software development challenges with regard to the functionally reduced SPU coprocessors.
Linux on Cell-те орнату
Cell BE экожүйесінің дамуын жеделдету және GCC негізделген Cell компиляторы, бинутилдер және Linux операциялық жүйесінің порты бар Cell қосымшаларын әзірлеу үшін ортаны қамтамасыз ету үшін ашық бастапқы кодты бағдарламалық қамтамасыз ету стратегиясы қабылданды.
An open source software based strategy was adopted to accelerate the development of a Cell BE ecosystem and to provide an environment to develop Cell applications, including a GCC based Cell compiler, binutils and a port of the Linux operating system.
Сегізбалық
Octopiler - бағдарламалық жасақтама әзірлеушілерге Cell процессорлары үшін код жазуға мүмкіндік беретін IBM прототиптік компиляторы.
Octopiler is IBM's prototype compiler to allow software developers to write code for Cell processors.
Ішкі қасиеттері
Cell компиляторлары C және C++ тілдеріндегі пайдалы SPU нұсқауларын ашу үшін ішкі деректерді ұсынады. Операндтың түрімен ғана ерекшеленетін нұсқаулар (мысалы, a, ai, ah, ahi, fa және dfa қосу үшін) әдетте операндтың түріне байланысты дұрыс нұсқауды таңдайтын бір C / C ++ ішкі нұсқауымен бейнеленеді.
Compilers for Cell provide intrinsics to expose useful SPU instructions in C and C++. Instructions that differ only in the type of operand (such as a, ai, ah, ahi, fa, and dfa for addition) are typically represented by a single C/C++ intrinsic which selects the proper instruction based on the type of the operand.
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 архитектурасына да сәтті бейімделеді.
There is a great body of code which has been developed for other IBM Power microprocessors that could potentially be adapted and recompiled to run on the SPU. This code base includes VMX code that runs under the PowerPC version of Apple's Mac OS X, where it is better known as Altivec. Depending on how many VMX specific features are involved, the adaptation involved can range anywhere from straightforward, to onerous, to completely impractical. The most important workloads for the SPU generally map quite well. In some cases it is possible to port existing VMX code directly. If the VMX code is highly generic (makes few assumptions about the execution environment) the translation can be relatively straightforward. The two processors specify a different binary code format, so recompilation is required at a minimum. Even where instructions exist with the same behaviors, they do not have the same instruction names, so this must be mapped as well. IBM provides compiler intrinsics which take care of this mapping transparently as part of the development toolkit. In many cases, however, a directly equivalent instruction does not exist. The workaround might be obvious or it might not. For example, if saturation behavior is required on the SPU, it can be coded by adding additional SPU instructions to accomplish this (with some loss of efficiency). At the other extreme, if Java floating point semantics are required, this is almost impossible to achieve on the SPU processor. To achieve the same computation on the SPU might require that an entirely different algorithm be written from scratch. The most important conceptual similarity between VMX and the SPU architecture is supporting the same vectorization model. For this reason, most algorithms adapted to Altivec will usually adapt successfully to the SPU architecture as well.
Жергілікті дүкендерді пайдалану
Әр түрлі SPU-ның жергілікті дүкендері арасындағы деректерді беру үлкен өнімділік шығындары болуы мүмкін. Жеке ЖӨБ-нің жергілікті қоймаларын әр түрлі стратегияларды қолдану арқылы пайдалануға болады. Тығыз матрицалық есептеулер сияқты жоғары жергіліктілік бар қосымшалар БЭ жасушасындағы жергілікті дүкендер үшін идеалдық жұмыс жүктемесі класын білдіреді. Ағызатын есептеулерді бірнеше буферлеу стратегиясын қолдана отырып, жад блоктарын берудің бағдарламалық жасақтамаларын пайдалану арқылы тиімді түрде орналастыруға болады. Нарықталған қосымшалар әр түрлі деректер үшін бірнеше стратегияны қолдана алады.
Transferring data between the local stores of different SPUs can have a large performance cost. The local stores of individual SPUs can be exploited using a variety of strategies. Applications with high locality, such as dense matrix computations, represent an ideal workload class for the local stores in Cell BE. Streaming computations can be efficiently accommodated using software pipelining of memory block transfers using a multi buffering strategy. More sophisticated applications can use multiple strategies for different data types.