Cell software development

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.

## Contents

* 1 Linux on Cell
* 2 Octopiler
* 3 Software portability
* 3.1 Adapting VMX for SPU
* 3.1.1 Differences between VMX and SPU
* 3.1.2 Intrinsics
* 3.1.3 Porting VMX code for SPU
* 4 Local store exploitation
* 5 References

## Linux on 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.[1]

## Octopiler

Octopiler is IBM's prototype compiler to allow software developers to write code for Cell processors.[2][3][4]

## Software portability

### Adapting VMX for SPU

#### Differences between VMX and SPU

The VMX (Vector Multimedia Extensions) technology is conceptually similar to the vector model provided by the SPU processors, but there are a number of significant differences.

VMX to SPU Comparison[1]
unfinished feature | VMX | SPU

|
|

word size  | 32 bits | 32 bits
number of registers | 32 | 128
register width  | 128-bit quadword | 128-bit quadword
integer formats  | 8, 16, 32 | 8, 16, 32, 64
saturation support  | yes | no
byte ordering  | big (default), little | big endian
floating point modes  | Java, non-Java | single precision, IEEE double
Memory alignment | quadword only | quadword only

The VMX Java mode conforms to the Java Language Specification 1 subset of the default IEEE Standard, extended to include IEEE and C9X compliance where the Java standard falls silent. In a typical implementation, non-Java mode converts denormal values to zero but Java mode traps into an emulator when the processor encounters such a value.

The IBM PPE Vector/SIMD manual does not define operations for double-precision floating point, though IBM has published material implying certain double-precision performance numbers associated with the Cell PPE VMX technology.

#### Intrinsics

Compilers for Cell[who?] 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.

#### Porting VMX code for SPU

A substantial amount of VMX (Altivec) code developed for IBM Power microprocessors, particularly under the PowerPC version of macOS, can potentially be adapted for use on the SPU. The feasibility of porting depends on the extent of VMX-specific features used—ranging from straightforward to impractical. However, key workloads typically map well to the SPU architecture.

In some cases, existing VMX code can be ported 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's development toolkit includes compiler intrinsics that automate much of this mapping.

In multiple 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.

## Local store exploitation

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.[5]

Streaming computations can be efficiently accommodated using software pipelining of memory block transfers using a multi-buffering strategy.[1]

The software cache offers a solution for random accesses.[6]

More sophisticated applications can use multiple strategies for different data types.[7]

## References

* 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

1. ↑ 1.0 1.1 "An Open Source Environment for Cell Broadband Engine System Software". June 2007. http://www.research.ibm.com/people/m/mikeg/papers/2007_ieeecomputer.pdf.
2. ↑ Using advanced compiler technology to exploit the performance of the Cell Broadband Engine architecture, IBM Systems Journal, 2017-10-23, http://www.research.ibm.com/journal/sj/451/eichenberger.html
3. ↑ "Compiler Technology for Scalable Architectures" (in en-us). 2006-01-20. https://www.empat.tech/services.
4. ↑ Stokes, Jon (2006-02-26). "IBM's Octopiler, or, why the PS3 is running late". https://arstechnica.com/uncategorized/2006/02/6265-2/.
5. ↑ "Synergistic Processing in Cell's Multicore Architecture". March 2006. http://www.research.ibm.com/people/m/mikeg/papers/2006_ieeemicro.pdf.
6. ↑ "Using advanced compiler technology to exploit the performance of the Cell Broadband Engine architecture". January 2006. http://www.research.ibm.com/journal/sj/451/eichenberger.pdf.
7. ↑ "Cell GC: Using the Cell Synergistic Processor as a Garbage Collection Coprocessor". March 2008. http://www.research.ibm.com/cell/papers/2008_vee_cellgc.pdf.

* v
* t
* e

Cell BE architecture

* Sony
* Toshiba
* IBM

Architecture|

* Synergistic Processing Element
* SpursEngine
* Power Processing Element
* Xenon
* Vector Multimedia Extension

Implementations|

* Fabrication
* Sony PlayStation 3
* models
* clusters
* Toshiba Qosmio F50, G50, G55
* IBM BladeCenter QS
* IBM Roadrunner
* Namco System 357
* Zego

Software|

* Apulet
* Folding@home
* Initiative for a Common Engine
* OtherOS
* PhyreEngine
* Software development

People|

* David Bader
* Peter Hofstee
* James A. Kahle
* Ken Kutaragi
* STI Center of Competence

Misc|

* Gameframe
* Heterogeneous computing
* Power ISA
* Scratchpad memory
* SIMD
* Simultaneous multithreading
* Vector processor

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/Cell software development. Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Cell_software_development&oldid=4348674"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template