Введение

Разработка программного обеспечения для микропроцессора Cell включает в себя смесь обычных методов разработки для совместимого с PowerPC ядра PPU и новых проблем разработки программного обеспечения в отношении функционально уменьшенных сопроцессоров SPU.

Linux на мобильном устройстве

Была принята стратегия, основанная на открытом программном обеспечении, для ускорения разработки экосистемы Cell BE и обеспечения среды для разработки приложений Cell, включая компилятор Cell на основе GCC, бинутилы и порт операционной системы Linux.

Октапилер

Octopiler - прототипный компилятор IBM, позволяющий разработчикам программного обеспечения писать код для процессоров Cell.

Внутренние черты

Компиляторы для Cell предоставляют внутренние данные для выявления полезных инструкций SPU на C и C++. Инструкции, которые отличаются только типом операнда (например, a, ai, ah, ahi, fa и dfa для сложения), обычно представлены одной внутренней инструкцией C/C++, которая выбирает правильную инструкцию на основе типа операнда.

Портирование кода VMX для SPU

Существует большой объем кода, который был разработан для других микропроцессоров IBM Power, которые потенциально могут быть адаптированы и перекомпилированы для работы на SPU. Эта кодовая база включает в себя код VMX, который работает под версией PowerPC Mac OS X от Apple, где он более известен как Altivec. В зависимости от того, сколько конкретных функций VMX задействовано, адаптация может варьироваться от простой, до обременительной, до совершенно непрактичной. Наиболее важные рабочие нагрузки для SPU, как правило, достаточно хорошо отображаются. В некоторых случаях возможно непосредственное портирование существующего кода VMX. Если код VMX является весьма общим (предполагает несколько предположений о среде исполнения), перевод может быть относительно простым. Два процессора определяют разный формат двоичного кода, поэтому повторная компиляция требуется как минимум. Даже там, где инструкции существуют с одинаковым поведением, у них нет одинаковых имен инструкций, поэтому это также должно быть отображено. IBM предоставляет внутренние компоненты компилятора, которые обеспечивают прозрачность этой картировки в рамках набора инструментов разработки. Однако во многих случаях не существует прямого эквивалента. Решение может быть очевидным, а может и нет. Например, если на ППУ требуется поведение насыщения, его можно кодировать, добавив дополнительные инструкции ППУ для достижения этого (с некоторой потерей эффективности). С другой стороны, если требуется семантика плавающей запятой Java, это почти невозможно достичь на процессоре SPU. Для достижения того же вычисления на SPU может потребоваться, чтобы совершенно другой алгоритм был написан с нуля. Наиболее важное концептуальное сходство между VMX и архитектурой SPU - поддержка одной и той же модели векторизации. По этой причине большинство алгоритмов, адаптированных к Altivec, обычно успешно адаптируются и к архитектуре SPU.

Эксплуатация местных магазинов

Передача данных между локальными хранилищами различных СПУ может иметь большие затраты на производительность. Местные запасы отдельных СПУ могут использоваться с использованием различных стратегий. Приложения с высокой локальностью, такие как вычисления с плотной матрицей, представляют собой идеальный класс рабочей нагрузки для локальных хранилищ в ячейке BE. Потоковые вычисления могут быть эффективно выполнены с использованием программного обеспечения для передачи блоков памяти с использованием стратегии многократного буферизации. Более сложные приложения могут использовать несколько стратегий для различных типов данных.