Разработка программного обеспечения для сотовой связи
Разработка программного обеспечения для микропроцессора Cell включает в себя сочетание традиционных методов разработки PowerPC -совместимого ядра PPU и новых задач разработки программного обеспечения, связанных с функционально уменьшенными сопроцессорами SPU.
Linux на сотовом телефоне
[ редактировать ]Стратегия на основе программного обеспечения с открытым исходным кодом была принята для ускорения развития экосистемы Cell BE и предоставления среды для разработки приложений Cell, включая компилятор Cell на основе GCC, binutils и порт операционной системы Linux. [1]
Октопилер
[ редактировать ]Octopiler — это IBM прототип компилятора , позволяющий разработчикам программного обеспечения писать код для процессоров Cell . [2] [3] [4]
Переносимость программного обеспечения
[ редактировать ]Адаптация VMX для SPU
[ редактировать ]Различия между VMX и SPU
[ редактировать ]Технология VMX (Vector Multimedia Extensions) концептуально аналогична векторной модели, обеспечиваемой процессорами SPU, но имеет множество существенных отличий.
особенность | ВМХ | СПУ |
---|---|---|
слова размер | 32 бита | 32 бита |
количество регистров | 32 | 128 |
ширина регистра | 128-битное четверное слово | 128-битное четверное слово |
целочисленные форматы | 8, 16, 32 | 8, 16, 32, 64 |
поддержка насыщения | да | нет |
порядок байтов | большой (по умолчанию), маленький | с прямым порядком байтов |
с плавающей запятой режимы | Java, не-Java | одинарная точность, двойная IEEE |
Выравнивание памяти | только четверное слово | только четверное слово |
VMX Java Режим соответствует подмножеству спецификации языка Java по умолчанию 1 стандарта IEEE , расширенному за счет включения соответствия IEEE и C9X , где стандарт Java не работает. В типичной реализации режим, отличный от Java, преобразует ненормальные значения в ноль, но режим Java перехватывает эмулятор, когда процессор встречает такое значение.
В руководстве IBM PPE Vector/SIMD не определены операции для операций с плавающей запятой двойной точности, хотя IBM опубликовала материал, подразумевающий определенные показатели производительности двойной точности, связанные с технологией Cell PPE VMX.
Внутренности
[ редактировать ]Компиляторы для Cell [ ВОЗ? ] предоставить встроенные функции для предоставления полезных инструкций SPU на C и C++. Инструкции, которые различаются только типом операнда (например, a, ai, ah, ahi, fa и dfa для сложения), обычно представляются одной встроенной функцией C/C++, которая выбирает правильную инструкцию в зависимости от типа операнда.
Портирование кода VMX для SPU
[ редактировать ]был разработан большой объем кода Для других микропроцессоров IBM Power , который потенциально можно адаптировать и перекомпилировать для работы на SPU. Эта база кода включает в себя код VMX, который работает под PowerPC- версией Apple Mac OS X , где он более известен как Altivec . В зависимости от того, сколько специфических функций VMX задействовано, адаптация может варьироваться от простой до обременительной или совершенно непрактичной. Наиболее важные рабочие нагрузки для SPU обычно отображаются довольно хорошо.
В некоторых случаях можно напрямую портировать существующий код VMX. Если код VMX является очень общим (делает мало предположений о среде выполнения), трансляция может быть относительно простой. Два процессора определяют разный формат двоичного кода , поэтому требуется как минимум перекомпиляция. Даже если существуют инструкции с одинаковым поведением, они имеют разные имена, поэтому это также необходимо отобразить. IBM предоставляет встроенные функции компилятора , которые прозрачно заботятся об этом сопоставлении, как часть набора инструментов разработки.
Однако во многих случаях прямо эквивалентной инструкции не существует. Обходной путь может быть очевидным, а может и нет. Например, если для SPU требуется поведение насыщения, его можно запрограммировать, добавив для этого дополнительные инструкции SPU (с некоторой потерей эффективности). С другой стороны, если требуется семантика Java с плавающей запятой, этого практически невозможно достичь на процессоре SPU. Для достижения тех же вычислений на SPU может потребоваться совершенно другой алгоритм написать с нуля.
Наиболее важное концептуальное сходство между VMX и архитектурой SPU — поддержка одной и той же модели векторизации . По этой причине большинство алгоритмов, адаптированных к Altivec, обычно успешно адаптируются и к архитектуре SPU.
Эксплуатация местного магазина
[ редактировать ]Передача данных между локальными хранилищами разных SPU может иметь большие потери производительности. Локальные хранилища отдельных SPU можно использовать с использованием различных стратегий.
Приложения с высокой локальностью, такие как вычисления с плотной матрицей, представляют собой идеальный класс рабочей нагрузки для локальных хранилищ в Cell BE. [5]
Потоковые вычисления могут быть эффективно реализованы с помощью программной конвейерной передачи блоков памяти с использованием стратегии мультибуферизации. [1]
Программный кеш предлагает решение для произвольного доступа. [6]
Более сложные приложения могут использовать несколько стратегий для разных типов данных. [7]
Ссылки
[ редактировать ]- Проект Cell в IBM Research
- Оптимизация компилятора для процессора CELL
- Использование передовой технологии компилятора для повышения производительности архитектуры Cell Broadband Engine.
- Технология компилятора для масштабируемых архитектур
- ^ Jump up to: а б «Среда с открытым исходным кодом для программного обеспечения системы сотовой широкополосной связи» (PDF) . Июнь 2007.
- ^ Исследовательский проект IBM - Технология компилятора для масштабируемых архитектур
- ^ IBM Systems Journal - Использование передовой технологии компилятора для использования производительности архитектуры Cell Broadband Engine , 23 октября 2017 г., заархивировано из оригинала 11 апреля 2006 г.
- ^ IBM Octopiler, или Почему PS3 опаздывает , ArsTechnica, 26 февраля 2006 г.
- ^ «Синергетическая обработка в многоядерной архитектуре ячейки» (PDF) . Март 2006 года.
- ^ «Использование передовой технологии компилятора для повышения производительности архитектуры Cell Broadband Engine» (PDF) . Январь 2006 года.
- ^ «Cell GC: использование синергетического процессора Cell в качестве сопроцессора сборки мусора» (PDF) . Март 2008 года.