The Cell Processor


Published on

Published in: Technology
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • VMX AltiVec SIMD instructions on IBM PowerPC processors Less speculative logic
  • VMX AltiVec SIMD instructions on IBM PowerPC processors Less speculative logic
  • Switch gibt es noch nicht
  • Dr. V. S. Pande, Distributed Computing Project, Stanford University (permission given for showing the video as well) Folding@Home on the PS3: the Cure@PS3 project INTRODUCTION Since 2000, Folding@Home (FAH) has led to a major jump in the capabilities of molecular simulation. By joining together hundreds of thousands of PCs throughout the world, calculations which were previously considered impossible have now become routine. FAH has targeted the study of of protein folding and protein folding disease, and numerous scientific advances have come from the project. Now in 2006, we are looking forward to another major advance in capabilities. This advance utilizes the new Cell processor in Sony’s PLAYSTATION 3 (PS3) to achieve performance previously only possible on supercomputers. With this new technology (as well as new advances with GPUs ), we will likely be able to attain performance on the 100 gigaflop scale per computer. With about 10,000 such machines, we would be able to achieve performance on the petaflop scale . With software from Sony, the PlayStation 3 will now be able to contribute to the Folding@Home project, pushing Folding@Home a major step forward. Our goal is to apply this new technology to push Folding@Home into a new level of capabilities, applying our simulations to further study of protein folding and related diseases, including Alzheimer’s Disease, Huntington's Disease, and certain forms of cancer. With these computational advances, coupled with new simulation methodologies to harness the new techniques, we will be able to address questions previously considered impossible to tackle computationally, and make even greater impacts on our knowledge of folding and folding related diseases. ADVANCED FEATURES FOR THE PS3 The PS3 client will also support some advanced visualization features. While the Cell microprocessor does most of the calculation processing of the simulation, the graphic chip of the PLAYSTATION 3 system (the RSX) displays the actual folding process in real-time using new technologies such as HDR and ISO surface rendering. It is possible to navigate the 3D space of the molecule using the interactive controller of the PS3, allowing us to look at the protein from different angles in real-time. For a preview of a prototype of the GUI for the PS3 client, check out a screenshot or one of these videos ( 355K avi , 866K avi , 6MB avi , 6MB avi -- more videos and formats to come). There is also a "bootleg" video of Sony's presentation on FAH that is now on YouTube (although the audio and video quality is pretty bad).
  • Cell Blade systems compute and compress images. These images are then delivered via the network to clients for decompression and display. GPStream framework can be used to deliver the images to mobile clients via wireless. This is really an example of situational awareness. In this specific case, the Predator Unmanned Aerial Vehicle has a small camera mounted in the nose (blue circle would be live video), the surroundings would be rendered for the remote pilot to help them avoid turning into a mountain or no fly zone. We this this is also valid for commercial aircraft for night, poor weather, etc.
  • Ein erfahrener Arzt kann aus Schnittbildern sehr viel herauslesen. Aber 3dimensionale Bilder, dynamisch, d.h. Unter Einschluß des Faktors Zeit eröffnen völlig neue Diagnosemöglichkeiten. Medical imaging is another area that is progressing rapidly and creating a new more demanding workload. Today an average exam generates 1GByte of data you can’t go to the future adding time dependent analysis without an application-optimized system. An average exam generates 1GBytes of data (for one Digital x-ray or simple CT scan - much more for complicated CT or MRI studies) We estimate that 10^2-10^4 floating point operations are used to capture, process and analyze a Byte of medical data So, a typical exam requires 10^11- 10^13 operations Assume an exam must be completed in “real time” (5 minutes?) to be of diagnostic use This requires 0.3- 33GF/s of compute power – delivered today by single processor Intel workstations Scanner technology will rapidly evolve to generate 10-20x the amount of data in the same scan time Sixteen Slice CT Scanner 600-2000 slices per exam  300 MB – 1 GB per exam CT Scan workflow – typical helical scan multi-slice acquisition Stage 1: Interpolate data to generate equivalent “step-and-shoot” slices Stage 2: Filtered Back-Projection to generate 2D slice view (Fourier filter + numerical integration) Stage 3: Volume rendering (optional—many radiologists prefer to look at slices, but with increasing resolution/slice count, it may become mandatory) Note (1) Stage 2 should be trivially parallelizable (scale out) Note (2) Increase in the number of slices acquired simultaneously  increased computational cost for “cone-effect” corrections. Note (3) There are claims that improved algorithms can reduce the computational burden enormously (UIUC Technology Licensing Office) Example: 313MB of raw scan data  5 x 1MB images (cross-sections?). Each image takes 19 seconds to process on a 3GHz Wintel box. High resolution 3000 slice run (from machines like the new Siemens Somatom 64) might take ~16 hours to process on such a commodity system. Note that the 3GB of 2D image data can be accommodated within main memory. PV-4D ( Showcase at Supercomputing 2005 / Cebit 2006 About 4 times faster than Opteron with same algorithm If fully optimized, projected about > 6 times faster than Opteron Last minute prototype running on four Cell blades Stereo display using shutter glasses, 8-10 frames per second - Achieving this frame rate using two blades at a time - Four blades required for data set size Data sets about 1.6GB in size - Beating heart (400x400x400 voxels, 6 samples) - CFD simulation (~600x200x100 voxels, 40 samples)
  • Handling large data Handling large code SIMD aspect?
  • Q: What’s the parameters to spe_create_thread…
  • Handling large data Handling large code SIMD aspect?
  • Handling large data Handling large code SIMD aspect?
  • Middleware / libraries likely to be optimized - media, e.g., mplayer - encryption, e.g., OpenSSH PPE = P ower P rocessor E lement
  • The Cell Processor

    1. 1. The Cell Processor Computing of tomorrow or yesterday? Open Systems Design and Development 2007-04-12 | Heiko J Schick <> © 2007 IBM Corporation
    2. 2. Agenda <ul><li>Introduction </li></ul><ul><li>Limiters to Processor Performance </li></ul><ul><li>Cell Architecture </li></ul><ul><li>Cell Platform </li></ul><ul><li>Cell Applications </li></ul><ul><li>Cell Programming </li></ul><ul><li>Appendix </li></ul>
    3. 3. 1 Introduction
    4. 4. Cell History <ul><li>IBM, SCEI / Sony and Toshiba Alliance formed in 2000 </li></ul><ul><li>Design Center opened in March 2001 (Based in Austin, Texas) </li></ul><ul><li>Single Cell BE operational Spring 2004 </li></ul><ul><li>2-way SMP operational Summer 2004 </li></ul><ul><li>February 7, 2005: First technical disclosures </li></ul><ul><li>November 9, 2005: Open Source SDK Published </li></ul>
    5. 5. The problem is… … the view from the computer room!
    6. 6. Outlook Source: Kurzweil “ Computer performance increases since 100 years exponential !!!”
    7. 7. But what could you do if all objects were intelligent… … and connected?
    8. 8. What could you do with unlimited computing power… for pennies? Could you predict the path of a storm down to the square kilometer? Could you identify another 20% of proven oil reserves without drilling one hole?
    9. 9. 2 Limiters to Processor Performance
    10. 10. Power Wall / Voltage Wall <ul><li>Power components: </li></ul><ul><ul><li>Active Power </li></ul></ul><ul><ul><li>Passive Power </li></ul></ul><ul><ul><ul><li>Gate leakage </li></ul></ul></ul><ul><ul><ul><li>Sub-threshold leakage (source-drain leakage) </li></ul></ul></ul>Source: Tom’s Hardware Guide 1
    11. 11. Memory Wall <ul><li>Main memory now nearly 1000 cycles from the processor </li></ul><ul><ul><li>Situation worse with (on-chip) SMP </li></ul></ul><ul><li>Memory latency penalties drive inefficiency in the design </li></ul><ul><ul><li>Expensive and sophisticated hardware to try and deal with it </li></ul></ul><ul><ul><li>Programmers that try to gain control of cache content are hindered by the hardware mechanisms </li></ul></ul><ul><li>Latency induced bandwidth limitations </li></ul><ul><ul><li>Much of the bandwidth to memory in systems can only be used speculatively </li></ul></ul>2
    12. 12. Frequency Wall <ul><li>Increasing frequencies and deeper pipelines have reached diminishing returns on performance </li></ul><ul><li>Returns negative if power is taken into account </li></ul><ul><li>Results of studies depend on issue width of processor </li></ul><ul><ul><li>The wider the processor the slower it wants to be </li></ul></ul><ul><ul><li>Simultaneous Multithreading helps to use issue slots efficiently </li></ul></ul><ul><li>Results depend on number of architected registers and workload </li></ul><ul><ul><li>More registers tolerate deeper pipeline </li></ul></ul><ul><ul><li>Fewer random branches in application tolerates deeper pipelines </li></ul></ul>3
    13. 13. Microprocessor Efficiency <ul><li>Gelsinger’s law </li></ul><ul><ul><li>1.4x more performance for 2x more </li></ul></ul><ul><li>Hofstee’s corollary </li></ul><ul><ul><li>1/1.4x efficiency loss in every generation </li></ul></ul><ul><ul><li>Examples: Cache size, Out-of-Order, Super-scalar, etc. </li></ul></ul>Source: Tom’s Hardware Guide Increasing performance requires increasing efficiency !!!
    14. 14. Attacking the Performance Walls <ul><li>Multi-Core Non-Homogeneous Architecture </li></ul><ul><ul><li>Control Plane vs. Data Plane processors </li></ul></ul><ul><ul><li>Attacks Power Wall </li></ul></ul><ul><li>3-level Model of Memory </li></ul><ul><ul><li>Main Memory, Local Store, Registers </li></ul></ul><ul><ul><li>Attacks Memory Wall </li></ul></ul><ul><li>Large Shared Register File & SW Controlled Branching </li></ul><ul><ul><li>Allows deeper pipelines (11FO4 helps power) </li></ul></ul><ul><ul><li>Attacks Frequency Wall </li></ul></ul>
    15. 15. 3 Cell Architecture
    16. 16. Cell BE Processor <ul><li>~250M transistors </li></ul><ul><li>~235mm2 </li></ul><ul><li>Top frequency >3GHz </li></ul><ul><li>9 cores, 10 threads </li></ul><ul><li>> 200+ GFlops (SP) @3.2 GHz </li></ul><ul><li>> 20+ GFlops (DP) @3.2 GHz </li></ul><ul><li>Up to 25.6GB/s memory B/W </li></ul><ul><li>Up to 76,8GB/s I/O B/W </li></ul><ul><li>~400M$(US) design investment </li></ul>
    17. 17. Key Attributes of Cell <ul><li>Cell is Multi-Core </li></ul><ul><ul><li>Contains 64-bit Power Architecture TM </li></ul></ul><ul><ul><li>Contains 8 Synergistic Processor Elements (SPE) </li></ul></ul><ul><li>Cell is a Flexible Architecture </li></ul><ul><ul><li>Multi-OS support (including Linux) with Virtualization technology </li></ul></ul><ul><ul><li>Path for OS, legacy apps, and software development </li></ul></ul><ul><li>Cell is a Broadband Architecture </li></ul><ul><ul><li>SPE is RISC architecture with SIMD organization and Local Store </li></ul></ul><ul><ul><li>128+ concurrent transactions to memory per processor </li></ul></ul><ul><li>Cell is a Real-Time Architecture </li></ul><ul><ul><li>Resource allocation (for Bandwidth Measurement) </li></ul></ul><ul><ul><li>Locking Caches (via Replacement Management Tables) </li></ul></ul><ul><li>Cell is a Security Enabled Architecture </li></ul><ul><ul><li>SPE dynamically reconfigurable as secure processors </li></ul></ul>
    18. 18.
    19. 19. Power Processor Element (PPE) <ul><li>64-bit Power Architecture™ with VMX </li></ul><ul><li>In-order, 2-way hardware Multi-threading </li></ul><ul><li>Coherent Load/Store with 32KB I & D L1 and 512KB L2 </li></ul><ul><li>Controls the SPEs </li></ul>
    20. 20. Synergistic Processor Elements (SPEs) <ul><li>SPE provides computational performance </li></ul><ul><ul><li>Dual issue, up to 16-way 128-bit SIMD </li></ul></ul><ul><ul><li>Dedicated resources: 128 128-bit register file, 256KB Local Store </li></ul></ul><ul><ul><li>Each can be dynamically configured to protect resources </li></ul></ul><ul><ul><li>Dedicated DMA engine: Up to 16 outstanding request </li></ul></ul><ul><ul><li>Memory flow controller for DMA </li></ul></ul><ul><ul><li>25 GB/s DMA data transfer </li></ul></ul><ul><ul><li>“ I/O Channels” for IPC </li></ul></ul><ul><li>Seperate Cores </li></ul><ul><li>Simple Implementation (e.g. no branch prediction) </li></ul><ul><li>No Caches </li></ul><ul><li>No protected instructions </li></ul>
    21. 21. SPE BLOCK DIAGRAM Permute Unit Load-Store Unit Floating-Point Unit Fixed-Point Unit Branch Unit Channel Unit Result Forwarding and Staging Register File Local Store (256kB) Single Port SRAM 128B Read 128B Write DMA Unit Instruction Issue Unit / Instruction Line Buffer 8 Byte/Cycle 16 Byte/Cycle 128 Byte/Cycle 64 Byte/Cycle On-Chip Coherent Bus
    22. 22. Element Interconnect Bus <ul><li>Four 16 byte data rings, supporting multiple transfers </li></ul><ul><li>96B/cycle peak bandwidth </li></ul><ul><li>Over 100 outstanding requests </li></ul><ul><li>300+ GByte/sec @ 3.2 GHz </li></ul>Element Interconnect Bus (EIB)
    23. 23. <ul><li>Four 16B data rings connecting 12 bus elements </li></ul><ul><ul><li>Two clockwise / Two counter-clockwise </li></ul></ul><ul><li>Physically overlaps all processor elements </li></ul><ul><li>Central arbiter supports up to three concurrent transfers per data ring </li></ul><ul><ul><li>Two stage, dual round robin arbiter </li></ul></ul><ul><li>Each element port simultaneously supports 16B in and 16B out data path </li></ul><ul><ul><li>Ring topology is transparent to element data interface </li></ul></ul>Element Interconnect Bus (EIB) 16B 16B 16B 16B Data Arb 16B 16B 16B 16B 16B 16B 16B 16B 16B 16B 16B 16B 16B 16B 16B 16B 16B 16B 16B 16B SPE0 SPE2 SPE4 SPE6 SPE7 SPE5 SPE3 SPE1 MIC PPE BIF/IOIF0 IOIF1
    24. 24. Example of eight concurrent transactions MIC SPE0 SPE2 SPE4 SPE6 BIF / IOIF1 Ramp 7 Controller Ramp 8 Controller Ramp 9 Controller Ramp 10 Controller Ramp 11 Controller Controller Ramp 0 Controller Ramp 1 Controller Ramp 2 Controller Ramp 3 Controller Ramp 4 Controller Ramp 5 Controller Ramp 6 Controller Ramp 7 Controller Ramp 8 Controller Ramp 9 Controller Ramp 10 Controller Ramp 11 Data Arbiter Ramp 7 Controller Ramp 8 Controller Ramp 9 Controller Ramp 10 Controller Ramp 11 Controller Controller Ramp 5 Controller Ramp 4 Controller Ramp 3 Controller Ramp 2 Controller Ramp 1 Controller Ramp 0 PPE SPE1 SPE3 SPE5 SPE7 IOIF1 PPE SPE1 SPE3 SPE5 SPE7 IOIF1 PPE SPE1 SPE3 SPE5 SPE7 IOIF1 MIC SPE0 SPE2 SPE4 SPE6 BIF / IOIF0 Ring1 Ring3 Ring0 Ring2 controls
    25. 25. I/O and Memory Interfaces <ul><li>I/O Provides wide bandwidth </li></ul><ul><ul><li>Dual XDR TM controller (25.6GB/s @ 3.2Gbps) </li></ul></ul><ul><ul><li>Two configurable interfaces (76.8GB/s @6.4Gbps) </li></ul></ul><ul><ul><ul><li>Configurable number of Bytes </li></ul></ul></ul><ul><ul><ul><li>Coherent or I/O Protection </li></ul></ul></ul><ul><ul><li>Allows for multiple system configurations </li></ul></ul>
    26. 26.
    27. 27. 4 Cell Platform
    28. 28. <ul><li>Game console systems </li></ul><ul><li>Blades </li></ul><ul><li>HDTV </li></ul><ul><li>Home media servers </li></ul><ul><li>Supercomputers </li></ul><ul><li>...... ? </li></ul>Cell processor can support many systems Cell BE Processor XDR tm XDR tm IOIF0 IOIF1 Cell BE Processor XDR tm XDR tm IOIF BIF Cell BE Processor XDR tm XDR tm IOIF Cell BE Proessor XDR tm XDR tm IOIF BIF Cell BE Processor XDR tm XDR tm IOIF Cell BE Processor XDR tm XDR tm IOIF BIF Cell BE Processor XDR tm XDR tm IOIF SW
    29. 29. <ul><li>Chassis </li></ul><ul><ul><li>Standard IBM BladeCenter with: </li></ul></ul><ul><ul><ul><li>7 Blades (for 2 slots each) with full performance </li></ul></ul></ul><ul><ul><ul><li>2 switches (1Gb Ethernet) with 4 external ports each </li></ul></ul></ul><ul><ul><li>Updated Management Module Firmware. </li></ul></ul><ul><ul><li>External Infiniband Switches with optional FC ports. </li></ul></ul><ul><li>Blade (400 GFLOPs) </li></ul><ul><ul><li>Game Processor and Support Logic: </li></ul></ul><ul><ul><ul><li>Dual Processor Configuration </li></ul></ul></ul><ul><ul><ul><li>Single SMP OS image </li></ul></ul></ul><ul><ul><ul><li>1GB XDRAM </li></ul></ul></ul><ul><ul><ul><li>Optionally PCI-exp attached standard graphics adapter </li></ul></ul></ul><ul><ul><li>BladeCenter Interface ( Based on IBM JS20): </li></ul></ul><ul><ul><ul><li>New Blade Power System and Sense Logic Control </li></ul></ul></ul><ul><ul><ul><li>Firmware to connect processor & support logic to H8 service processor </li></ul></ul></ul><ul><ul><ul><li>Signal Level Converters for processor & support logic </li></ul></ul></ul><ul><ul><ul><li>2 Infiniband (IB) Host Adapters with 2x IB 4x each </li></ul></ul></ul><ul><ul><ul><li>Physical link drivers (GbE Phy etc) </li></ul></ul></ul>Chassis 2x (+12V RS-485,USB,GbEn) Rambus Design: DRAM 1/2GB Cell BE Processor H8 SP Blade Input Power &Sense Level Convert GbE Phy BladeCenter Interface Blade Cell BE Processor South Bridge Rambus Design: DRAM 1/2GB South Bridge IB 4X IB 4X Blade QS20 Hardware Description
    30. 30. QS20 Blade (w/o heatsinks)
    31. 31. QS20 Blade Assembly <ul><li>ATA Disk </li></ul><ul><li>Service Proc. </li></ul><ul><li>South Bridges </li></ul><ul><li>InfiniBand Cards </li></ul><ul><li>Blade Bezel </li></ul>
    32. 32. <ul><li>Up to 2 InfiniBand Cards can be attached. </li></ul><ul><li>Standard PC InfiniBand Card with special bezel </li></ul><ul><ul><li>MHEA28-1TCSB Dual-Port HCA </li></ul></ul><ul><ul><li>PCI Express x8 interface </li></ul></ul><ul><ul><li>Dual 10 Gb/s InfiniBand 4X Ports </li></ul></ul><ul><ul><li>128 MB Local Memory </li></ul></ul><ul><ul><li>IBTA v1.1 Compatible Design </li></ul></ul>Options - InfiniBand
    33. 33. Cell Software Stack Firmware Applications SLOF powerpc architecture dependent code Cell Broadband Engine Linux memory management device drivers gcc ppc64, spu backend glibc Hardware RTAS Secondary Boot Loader powerpc- and cell- specific Linux code Low-level FW scheduler (pSeries) (PMac) cell User space Linux common code device drivers
    34. 34. Cell BE Development Platform Cell BE Firmware Graphics Std Devices Developer Workstation Cell Linux kernel Lower-level programming interface Basic Cell runtime: lib_spe, spelibc, … Basic Cell toolchain: gcc, binutils, gdb, oprofile, … Cell aware tooling Application Framework (segment specific) Standard Linux Development Environment  ppc64 Cell optimized libraries Cell specialized compilers Higher-level programming interface Application-level programming interface Tooling Libraries Cell enablement Cell exploitation <ul><li>Cell is an exotic platform and hard to program </li></ul><ul><li>Challenging to exploit SPEs: Limited local memory (256 KB) – need to DMA data and code fragments back and forth Multi-level parallelism – 8 SPEs, 128-bit wide SIMD units in each SPE If done right, the result is impressive performance… </li></ul><ul><li>Make Cell easier to program </li></ul><ul><li>Hide complexity in critical libraries </li></ul><ul><li>Compiler support for standard tasks, e.g., overlays, global data access, SW-managed cache, auto vectorization, auto parallelization, … </li></ul><ul><li>Smart tooling </li></ul><ul><li>Make Cell a standard platform </li></ul><ul><li>Middleware and frameworks provide architecture-specific components and hide Cell –specifics from application developer </li></ul>
    35. 35. <ul><li>Alpha Quality </li></ul><ul><ul><li>SDK hosted on FC4 / X86 </li></ul></ul><ul><li>OS: Initial Linux Cell 2.6.14 patches </li></ul><ul><li>SPE Threads runtime </li></ul><ul><li>XLC Cell C Compiler </li></ul><ul><li>SPE gdb debugger </li></ul><ul><li>Cell Coding Sample Source </li></ul><ul><li>Documentation </li></ul><ul><ul><li>Installation Scripts </li></ul></ul><ul><ul><li>Cell Hardware Specs </li></ul></ul><ul><ul><li>Programming Docs </li></ul></ul>SDK1.0 <ul><li>GCC Tools from SCEA </li></ul><ul><ul><li>gcc 3.0 for Cell </li></ul></ul><ul><ul><li>Binutils for Cell </li></ul></ul><ul><li>Alpha Quality </li></ul><ul><ul><li>SDK hosted on FC5 / X86 </li></ul></ul><ul><li>Critical Linux Cell Performance Enhancements </li></ul><ul><ul><li>Cell Enhanced Functions </li></ul></ul><ul><li>Critical Cell RAS Functions </li></ul><ul><ul><li>Machine Check, System Error </li></ul></ul><ul><li>Performance Analysis Tools </li></ul><ul><ul><li>Oprofile – PPU Cycle only profiling (No SPU) </li></ul></ul><ul><li>GNU Toolchain updates </li></ul><ul><li>Mambo Updates </li></ul><ul><li>Julia Set Sample </li></ul>SDK1.1 Execution platform: Cell Simulator Hosting platform: Linux/86 (FC4) 11/2005 7/2006 SDK 2.0 12/2006 <ul><li>XL C/C++ </li></ul><ul><ul><li>Linux/x86, LoP </li></ul></ul><ul><ul><li>Overlay prototype </li></ul></ul><ul><ul><li>Auto-SIMD enhancements </li></ul></ul><ul><li>Linux Kernel updates </li></ul><ul><ul><li>Performance Enhancements </li></ul></ul><ul><ul><li>RAS/ Debug support </li></ul></ul><ul><ul><li>SPE runtime extensions </li></ul></ul><ul><ul><li>Interrupt controller enhancements </li></ul></ul><ul><li>GNU Toolchain updates </li></ul><ul><ul><li>FSF integration </li></ul></ul><ul><ul><li>GDB multi-thread support </li></ul></ul><ul><ul><li>Newlib library optimization </li></ul></ul><ul><ul><li>Prog model support for overlay </li></ul></ul><ul><li>Programming Model Preview </li></ul><ul><ul><li>Overlay support </li></ul></ul><ul><ul><li>Accelerated Libraries Framework </li></ul></ul><ul><li>Library enhancements </li></ul><ul><ul><li>Vector Math Library – Phase 1 </li></ul></ul><ul><ul><li>MASS Library for PPU, MASSV Library for PPU/SPU </li></ul></ul><ul><li>IDE </li></ul><ul><ul><li>Tool integration </li></ul></ul><ul><ul><li>Remote tool support </li></ul></ul><ul><li>Performance Analysis </li></ul><ul><ul><li>Visualization tools </li></ul></ul><ul><ul><li>Bandwidth, Latency, Lock analyzers </li></ul></ul><ul><ul><li>Performance debug tools </li></ul></ul><ul><ul><li>Oprofile – SDK 1.1 plus PPU event based profiling </li></ul></ul><ul><li>Mambo </li></ul><ul><ul><li>Performance model correlation </li></ul></ul><ul><ul><li>Visualization </li></ul></ul>SDK1.0.1 Execution platform: Cell Simulator Cell Blade 1 rev 2 Hosting platform: Linux/86 (FC4) Linux/Cell (FC4)* Linux/Power (FC4)* Execution platform: Cell Simulator Cell Blade 1 rev 3 Hosting platform: Linux/86 (FC5) Linux/Cell (FC5)* Linux/Power (FC5)* Refresh Execution platform: Cell Simulator Cell Blade 1 rev 3 Hosting platform: Linux/86 (FC5) Linux/Cell (FC5)* Linux/Power (FC5)* 2/2006 Refresh 9/2006 SDK1.1.1 <ul><li>Documentation </li></ul><ul><li>Mambo updates for CB1 and 64-bit hosting </li></ul><ul><li>ISO image update </li></ul>* Subset of tools
    36. 36. Cell library content (source) ~ 156k loc <ul><li>Standard SPE C library subset </li></ul><ul><ul><li>optimized SPE C functions including stdlib c lib, math and etc. </li></ul></ul><ul><li>Audio resample - resampling audio signals </li></ul><ul><li>FFT - 1D and 2D fft functions </li></ul><ul><li>gmath - mathematic functions optimized for gaming environment </li></ul><ul><li>image - convolution functions </li></ul><ul><li>intrinsics - generic intrinsic conversion functions </li></ul><ul><li>large-matrix - functions performing large matrix operations </li></ul><ul><li>matrix - basic matrix operations </li></ul><ul><li>mpm- multi-precision math functions </li></ul><ul><li>noise - noise generation functions </li></ul><ul><li>oscillator - basic sound generation functions </li></ul><ul><li>sim- providing I/O channels to simulated environments </li></ul><ul><li>surface - a set of bezier curve and surface functions </li></ul><ul><li>sync - synchronization library </li></ul><ul><li>vector - vector operation functions </li></ul>
    37. 37. 5 Cell Applications
    38. 38. Peak GFLOPs FreeScale DC 1.5 GHz PPC 970 2.2 GHz AMD DC 2.2 GHz Intel SC 3.6 GHz Cell 3.0 GHz
    39. 39. Cell Processor Example Application Areas <ul><li>Cell is a processor that excels at processing of rich media content in the context of broad connectivity </li></ul><ul><ul><li>Digital content creation (games and movies) </li></ul></ul><ul><ul><li>Game playing and game serving </li></ul></ul><ul><ul><li>Distribution of (dynamic, media rich) content </li></ul></ul><ul><ul><li>Imaging and image processing </li></ul></ul><ul><ul><li>Image analysis (e.g. video surveillance) </li></ul></ul><ul><ul><li>Next-generation physics-based visualization </li></ul></ul><ul><ul><li>Video conferencing (3D?) </li></ul></ul><ul><ul><li>Streaming applications (codecs etc.) </li></ul></ul><ul><ul><li>Physical simulation & science </li></ul></ul>
    40. 40. Opportunities for Cell BE Blade <ul><li>Aerospace & Defense </li></ul><ul><ul><li>Signal & Image Processing </li></ul></ul><ul><ul><li>Security, Surveillance </li></ul></ul><ul><ul><li>Simulation & Training, … </li></ul></ul><ul><li>Petroleum Industry </li></ul><ul><ul><li>Seismic computing </li></ul></ul><ul><ul><li>Reservoir Modeling, … </li></ul></ul><ul><li>Communications Equipment </li></ul><ul><ul><li>LAN/MAN Routers </li></ul></ul><ul><ul><li>Access </li></ul></ul><ul><ul><li>Converged Networks </li></ul></ul><ul><ul><li>Security, … </li></ul></ul><ul><li>Medical Imaging </li></ul><ul><ul><li>CT Scan </li></ul></ul><ul><ul><li>Ultrasound, … </li></ul></ul><ul><li>Consumer / Digital Media </li></ul><ul><ul><li>Digital Content Creation </li></ul></ul><ul><ul><li>Media Platform </li></ul></ul><ul><ul><li>Video Surveillance, … </li></ul></ul><ul><li>Public Sector / Gov’t & Higher Educ. </li></ul><ul><ul><li>Signal & Image Processing </li></ul></ul><ul><ul><li>Computational Chemistry, … </li></ul></ul><ul><li>Finance </li></ul><ul><ul><li>Trade modeling </li></ul></ul><ul><li>Industrial </li></ul><ul><ul><li>Semiconductor / LCD </li></ul></ul><ul><ul><li>Video Conference </li></ul></ul>Petroleum Industry A&D Comm Industrial Cell Assets Consumer Public Finance
    41. 41. <ul><li>Since 2000, Folding@Home (FAH) has led to a major jump in the capabilities of molecular simulation of: </li></ul><ul><ul><li>Protein folding and related diseases, including Alzheimer’s Disease, Huntington's Disease, and certain forms of cancer. </li></ul></ul><ul><ul><li>By joining together hundreds of thousands of PCs throughout the world, calculations which were previously considered impossible have now become routine. </li></ul></ul><ul><li>Folding@Home utilizes the new Cell processor in Sony’s PLAYSTATION 3 (PS3) to achieve performance previously only possible on supercomputers. </li></ul><ul><ul><li>14,000 PlayStation 3’s are literally outperforming 159,000 Windows Computers by more than Double! </li></ul></ul><ul><ul><li>In fact they out perform all the other clients combined. </li></ul></ul> Dr. V. S. Pande, folding@home, Distributed Computing Project, Stanford University
    42. 42. Ported by 235 584 tetrahedra 48 000 nodes 28 iterations in NKMG solver In 3.8 seconds Sustained Performance for large Objects: 52 GFLOP/s Multigrid Finite Element Solver on Cell using the free SDK
    43. 43. Computational Fluid Dynamics Solver on Cell Ported by Sustained Performance for large Objects: Not yet benchmarked (3/2007) using the free SDK
    44. 44. Computational Fluid Dynamics Solver on Cell A Lattice-Boltzmann Solver Developed by Fraunhofer IWTM
    45. 45. Terrain Rendering Engine (TRE) and IBM Blades Systems and Technology Group Commodity Cell BE Blade Add Live Video, Aerial Information, Combat Situational Awareness Next-Gen GCS Combine Data & Render Aircraft data / Field Data BladeCenter-1 Chassis QS20
    46. 46. Example: Medical Computer Tomography (CT) Scans Image whole heart in 1 rotation 4D CT – includes time 2 slices 4 slices 8 slices 16 slices 32 slices 64 slices 128 slices 256 slices Current CT Products Future CT Products
    47. 47. The moving image is aligned to the fixed image as the registration proceeds. Fixed Image Moving Image Registration Process “ Image Registration” Using Cell
    48. 48. 6 Cell Programming
    49. 49. Small single-SPE models – a sample <ul><li>/* spe_foo.c: * A C program to be compiled into an executable called “spe_foo” */ int main( int speid, addr64 argp, addr64 envp ) { char i; /* do something intelligent here */ i = func_foo ( argp ); /* when the syscall is supported */ printf ( “Hello world! my result is %d ”, i); return i ; } </li></ul>
    50. 50. <ul><li>extern spe_program_handle spe_foo ; /* the spe image handle from CESOF */ int main() { int rc, status; speid_t spe_id; /* load & start the spe_foo program on an allocated spe */ spe_id = spe_create_thread (0, &spe_foo, 0, NULL, -1, 0); /* wait for spe prog. to complete and return final status */ rc = spe_wait (spe_id, &status, 0); return status; } </li></ul>Small single-SPE models – PPE controlling program
    51. 51. Using SPEs <ul><li>(1) Simple Function Offload </li></ul><ul><ul><li>Remote Procedure Call Style </li></ul></ul><ul><ul><li>SPE working set fits in Local Store </li></ul></ul><ul><ul><li>PPE initiates DMA data/code transfers </li></ul></ul><ul><ul><li>Could be easily supported by a programming env, e.g., </li></ul></ul><ul><ul><ul><li>RPC Style IDL Compiler </li></ul></ul></ul><ul><ul><ul><li>Compiler Directives (pragmas) </li></ul></ul></ul><ul><ul><ul><li>Libraries </li></ul></ul></ul><ul><ul><ul><li>Or even automatic scheduling of code/data to SPEs </li></ul></ul></ul><ul><li>(2) Typical (Complex) Function Offload </li></ul><ul><ul><li>SPE working set larger than Local Store </li></ul></ul><ul><ul><li>PPE initially loads SPE LS with small startup code </li></ul></ul><ul><ul><li>SPE initiates DMAs (code/data staging) </li></ul></ul><ul><ul><ul><li> Stream data through code </li></ul></ul></ul><ul><ul><ul><li> Stream code through data </li></ul></ul></ul><ul><ul><li>Latency hiding required in most cases </li></ul></ul><ul><ul><li>Requires &quot;high locality of reference&quot; characteristics </li></ul></ul><ul><ul><li>Can be extended to a “services offload model” </li></ul></ul>PowerPC (PPE) SPU Local Store MFC N SPE Puts Results PPE Puts Text Static Data Parameters SPE executes PowerPC (PPE) SPU Local Store MFC N SPE Puts Results PPE Puts Initial Text Static Data Parameters System Memory SPE Independently Stages Text & Intermediate Data Transfers while executing
    52. 52. Using SPEs <ul><li>(3) Pipelining for complex functions </li></ul><ul><ul><li>Functions split up in processing stages </li></ul></ul><ul><ul><li>Direct LS to LS communication possible </li></ul></ul><ul><ul><ul><li>Including LS to LS DMA </li></ul></ul></ul><ul><ul><ul><li>Avoid PPE / System Memory bottlenecks </li></ul></ul></ul><ul><li>(4) Parallel stages for very compute-intense functions </li></ul><ul><ul><li>PPE partitions and distributes work to multiple SPEs </li></ul></ul>SPU Local Store MFC N SPU Local Store MFC N Parallel-stages PowerPC (PPE) System Memory PowerPC (PPE) System Memory SPU Local Store MFC N SPU Local Store MFC N Multi-stage Pipeline SPU Local Store MFC N
    53. 53. Large single-SPE programming models <ul><li>Data or code working set cannot fit completely into a local store </li></ul><ul><li>The PPE controlling process, kernel, and libspe runtime set up the system memory mapping as SPE’s secondary memory store </li></ul><ul><li>The SPE program accesses the secondary memory store via its software-controlled SPE DMA engine - Memory Flow Controller (MFC) </li></ul>SPE Program System Memory PPE controller maps system memory for SPE DMA trans. DMA transactions Local Store
    54. 54. Large single-SPE programming models – I/O data <ul><li>System memory for large size input / output data </li></ul><ul><ul><li>e.g. Streaming model </li></ul></ul>System memory int ip[32] int op[32] SPE program: op = func(ip) DMA DMA Local store int g_ip[512*1024] int g_op[512*1024]
    55. 55. Large single-SPE programming models <ul><li>System memory as secondary memory store </li></ul><ul><ul><li>Manual management of data buffers </li></ul></ul><ul><ul><li>Automatic software-managed data cache </li></ul></ul><ul><ul><ul><li>Software cache framework libraries </li></ul></ul></ul><ul><ul><ul><li>Compiler runtime support </li></ul></ul></ul>System memory SW cache entries SPE program Local store Global objects
    56. 56. Large single-SPE programming models <ul><li>System memory as secondary memory store </li></ul><ul><ul><li>Manual loading of plug-in into code buffer </li></ul></ul><ul><ul><ul><li>Plug-in framework libraries </li></ul></ul></ul><ul><ul><li>Automatic software-managed code overlay </li></ul></ul><ul><ul><ul><li>Compiler generated overlaying code </li></ul></ul></ul>System memory Local store SPE plug-in b SPE plug-in a SPE plug-in e SPE plug-in a SPE plug-in b SPE plug-in c SPE plug-in d SPE plug-in e SPE plug-in f
    57. 57. Large single-SPE prog. models – Job Queue <ul><li>Code and data packaged together as inputs to an SPE kernel program </li></ul><ul><li>A multi-tasking model – more discussion later </li></ul>Job queue System memory Local store code/data n code/data n+1 code/data n+2 code/data … Code n Data n SPE kernel DMA
    58. 58. Large single-SPE programming models - DMA <ul><li>DMA latency handling is critical to overall performance for SPE programs moving large data or code </li></ul><ul><li>Data pre-fetching is a key technique to hide DMA latency </li></ul><ul><ul><li>e.g. double-buffering </li></ul></ul>Time I Buf 1 (n) O Buf 1 (n) I Buf 2 (n+1) O Buf 2 (n-1) SPE program: Func (n) output n-2 input n Output n-1 Func (input n ) Input n+1 Func (input n+1 ) Func (input n-1 ) output n Input n+2 DMAs SPE exec. DMAs SPE exec.
    59. 59. Large single-SPE programming models - CESOF <ul><li>C ell E mbedded S PE O bject F ormat (CESOF) and PPE/SPE toolchains support the resolution of SPE references to the global system memory objects in the effective-address space. </li></ul>_EAR_g_foo structure Local Store Space Effective Address Space DMA transactions CESOF EAR symbol resolution Char g_foo[512] Char local_foo[512]
    60. 60. Parallel programming models – Job Queue <ul><li>Large set of jobs fed through a group of SPE programs </li></ul><ul><li>Streaming is a special case of job queue with regular and sequential data </li></ul><ul><li>Each SPE program locks on the shared job queue to obtain next job </li></ul><ul><li>For uneven jobs, workloads are self-balanced among available SPEs </li></ul>PPE SPE1 Kernel() SPE0 Kernel() SPE7 Kernel() System Memory I n . I 7 I 6 I 5 I 4 I 3 I 2 I 1 I 0 O n . O 7 O 6 O 5 O 4 O 3 O 2 O 1 O 0 … ..
    61. 61. Parallel programming models – Pipeline / Streaming <ul><li>Use LS to LS DMA bandwidth, not system memory bandwidth </li></ul><ul><li>Flexibility in connecting pipeline functions </li></ul><ul><li>Larger collective code size per pipeline </li></ul><ul><li>Load-balance is harder </li></ul>PPE SPE1 Kernel 1 () SPE0 Kernel 0 () SPE7 Kernel 7 () System Memory I n . . I 6 I 5 I 4 I 3 I 2 I 1 I 0 O n . . O 6 O 5 O 4 O 3 O 2 O 1 O 0 … .. DMA DMA
    62. 62. Multi-tasking SPEs – LS resident multi-tasking <ul><li>Simplest multi-tasking programming model </li></ul><ul><li>No memory protection among tasks </li></ul><ul><li>Co-operative, Non-preemptive, event-driven scheduling </li></ul>Task a Task b Task c Task d Task x Event Dispatcher Local Store SPE n Event Queue a c a d x a c d
    63. 63. Multi-tasking SPEs – Self-managed multi-tasking <ul><li>Non-LS resident </li></ul><ul><li>Blocked job context is swapped out of LS and scheduled back later to the job queue once unblocked </li></ul>System memory Local store task n task n+1 task n+2 Task … Code n Data n SPE kernel task n’ task queue Job queue
    64. 64. libspe sample code <ul><li>#include <libspe.h> </li></ul><ul><li>int main(int argc, char *argv[], char *envp[]) </li></ul><ul><li>{ </li></ul><ul><li>spe_program_handle_t *binary; </li></ul><ul><li>speid_t spe_thread; </li></ul><ul><li>int status; </li></ul><ul><li>binary = spe_open_image(argv[1]); </li></ul><ul><li>if (!binary) </li></ul><ul><li>return 1; </li></ul><ul><li>spe_thread = spe_create_thread(0, binary, argv+1, </li></ul><ul><li> envp, -1, 0); </li></ul><ul><li>if (!spe_thread) </li></ul><ul><li>return 2; </li></ul><ul><li>spe_wait(spe_thread, &status, 0); </li></ul><ul><li>spe_close_image(binary); </li></ul><ul><li>return status; </li></ul><ul><li>} </li></ul>
    65. 65. libspe sample code <ul><li>#include <libspe.h> </li></ul><ul><li>int main(int argc, char *argv[], char *envp[]) </li></ul><ul><li>{ </li></ul><ul><li>spe_program_handle_t *binary; </li></ul><ul><li>speid_t spe_thread; </li></ul><ul><li>int status; </li></ul><ul><li>binary = spe_open_image(argv[1]); </li></ul><ul><li>if (!binary) </li></ul><ul><li>return 1; </li></ul><ul><li>spe_thread = spe_create_thread(0, binary, argv+1, </li></ul><ul><li> envp, -1, 0); </li></ul><ul><li>if (!spe_thread) </li></ul><ul><li>return 2; </li></ul><ul><li>spe_wait(spe_thread, &status, 0); </li></ul><ul><li>spe_close_image(binary); </li></ul><ul><li>return status; </li></ul><ul><li>} </li></ul>
    66. 66. libspe sample code <ul><li>#include <libspe.h> </li></ul><ul><li>int main(int argc, char *argv[], char *envp[]) </li></ul><ul><li>{ </li></ul><ul><li>spe_program_handle_t *binary; </li></ul><ul><li>speid_t spe_thread; </li></ul><ul><li>int status; </li></ul><ul><li>binary = spe_open_image(argv[1]); </li></ul><ul><li>if (!binary) </li></ul><ul><li>return 1; </li></ul><ul><li>spe_thread = spe_create_thread(0, binary, argv+1, </li></ul><ul><li> envp, -1, 0); </li></ul><ul><li>if (!spe_thread) </li></ul><ul><li>return 2; </li></ul><ul><li>spe_wait(spe_thread, &status, 0); </li></ul><ul><li>spe_close_image(binary); </li></ul><ul><li>return status; </li></ul><ul><li>} </li></ul>
    67. 67. Linux on Cell/B.E. kernel components <ul><li>Platform abstraction arch/powerpc/platforms/{cell,ps3,beat} </li></ul><ul><li>Integrated Interrupt Handling </li></ul><ul><li>I/O Memory Management Unit </li></ul><ul><li>Power Management </li></ul><ul><li>Hypervisor abstractions </li></ul><ul><li>South Bridge drivers </li></ul><ul><li>SPU file system </li></ul>
    68. 68. SPU file system <ul><li>Virtual File System </li></ul><ul><li>/spu holds SPU contexts as directories </li></ul><ul><li>Files are primary user interfaces </li></ul><ul><li>New system calls: spu create and spu run </li></ul><ul><li>SPU contexts abstracted from real SPU </li></ul><ul><li>Preemptive context switching (W.I.P) </li></ul>
    69. 69. PPE on Cell is a 100% compliant ppc64! <ul><li>A solid base… </li></ul><ul><ul><li>Everything in a distribution, all middleware runs out of the box </li></ul></ul><ul><ul><li>All tools available </li></ul></ul><ul><ul><li>BUT: not optimized to exploit Cell </li></ul></ul><ul><li>Toolchain needs to cover Cell aspects </li></ul><ul><li>Optimized, critical “middleware” for Cell needed </li></ul><ul><ul><li>Depending on workload requirements </li></ul></ul>
    70. 70. Using SPEs: Task Based Abstraction  APIs provided by user space libraries <ul><li>SPE programs controlled via PPE-originated thread function calls </li></ul><ul><ul><li>spe_create_thread(), ... </li></ul></ul><ul><li>Calls on PPE and SPE </li></ul><ul><ul><li>Mailboxes </li></ul></ul><ul><ul><li>DMA </li></ul></ul><ul><ul><li>Events </li></ul></ul><ul><li>Simple runtime support (local store heap management, etc.) </li></ul><ul><li>Lots of library extensions </li></ul><ul><ul><li>Encryption, signal processing, math operations </li></ul></ul>
    71. 71. spu_create <ul><li>int spu create(const char *pathname, int flags, mode t mode); </li></ul><ul><ul><li>creates a new context in pathname </li></ul></ul><ul><ul><li>returns an open file descriptor </li></ul></ul><ul><ul><li>context is gets destroyed when fd is closed </li></ul></ul>
    72. 72. spu_run <ul><li>uint32 t spu run(int fd, uint32 t *npc, uint32 t *status); </li></ul><ul><ul><li>transfers flow of control to SPU context fd </li></ul></ul><ul><ul><li>returns when the context has stopped for some reason, e.g. </li></ul></ul><ul><ul><ul><li>exit or forceful abort </li></ul></ul></ul><ul><ul><ul><li>callback from SPU to PPU </li></ul></ul></ul><ul><ul><ul><li>can be interrupted by signals </li></ul></ul></ul>
    73. 73. PPE programming interfaces <ul><li>Asynchronous SPE thread API (“libspe 1.x”) </li></ul><ul><li>spe_create_thread </li></ul><ul><li>spe_wait </li></ul><ul><li>spe_kill </li></ul><ul><li>. . . </li></ul>
    74. 74. spe create thread implementation <ul><li>Allocate virtual SPE (spu create) </li></ul><ul><li>Load SPE application code into context </li></ul><ul><li>Start PPE thread using pthread create </li></ul><ul><li>New thread calls spu run </li></ul>
    75. 75. More libspe interfaces <ul><li>Event notification </li></ul><ul><ul><li>int spe get event(struct spe event *, int nevents, int timeout); </li></ul></ul><ul><li>Message passing </li></ul><ul><ul><li>spe read out mbox(speid t speid); </li></ul></ul><ul><ul><li>spe write in mbox(speid t speid); </li></ul></ul><ul><ul><li>spe write signal(speid t speid, unsigned reg, unsigned data); </li></ul></ul><ul><li>Local store access </li></ul><ul><ul><li>void *spe get ls(speid t speid); </li></ul></ul>
    76. 76. GNU tool chain <ul><li>PPE support </li></ul><ul><ul><li>Just another PowerPC variant. . . </li></ul></ul><ul><li>SPE support </li></ul><ul><ul><li>Just another embedded processor. . . </li></ul></ul><ul><li>Cell/B.E. support </li></ul><ul><ul><li>More than just PPE + SPE! </li></ul></ul>
    77. 77. Object file format <ul><li>PPE: regular ppc/ppc64 ELF binaries </li></ul><ul><li>SPE: new ELF flavour EM SPU </li></ul><ul><ul><li>32-bit big-endian </li></ul></ul><ul><ul><li>No shared libraries </li></ul></ul><ul><ul><li>Manipulated via cross-binutils </li></ul></ul><ul><ul><li>New: Code overlay support </li></ul></ul><ul><li>Cell/B.E.: combined object files </li></ul><ul><ul><li>embedspu: link into one binary </li></ul></ul><ul><ul><li>.rodata.spuelf section in PPE object </li></ul></ul><ul><ul><li>CESOF: SPE− >PPE symbol references </li></ul></ul>
    78. 78. gcc on the PPE <ul><li>handled by “rs6000” back end </li></ul><ul><li>Processor-specific tuning </li></ul><ul><li>pipeline description </li></ul>
    79. 79. gcc on the SPE <ul><li>Merged Jan 3rd </li></ul><ul><li>Built as cross-compiler </li></ul><ul><li>Handles vector data types, intrinsics </li></ul><ul><li>Middle-end support: branch hints, aggressive if-conversion </li></ul><ul><li>GCC 4.1 port exploiting auto-vectorization </li></ul><ul><li>No Java </li></ul>
    80. 80. Existing proprietary applications <ul><li>Games </li></ul><ul><li>Volume rendering </li></ul><ul><li>Real-time Raytracing </li></ul><ul><li>Digital Video </li></ul><ul><li>Monte Carlo simulation </li></ul>
    81. 81. Obviously missing <ul><li>ffmpeg, mplayer, VLC </li></ul><ul><li>VDR, mythTV </li></ul><ul><li>Xorg acceleration </li></ul><ul><li>OpenSSL </li></ul><ul><li>Your project here !!! </li></ul>
    82. 82. Questions! Thank you very much for your attention.
    83. 83. 7 Appendix
    84. 84. Documentation (new or recently updated) <ul><li>Cell Broadband Engine </li></ul><ul><ul><li>Cell Broadband Engine Architecture V1.0 </li></ul></ul><ul><ul><li>Cell Broadband Engine Programming Handbook V1.0 </li></ul></ul><ul><ul><li>Cell Broadband Engine Registers V1.3 </li></ul></ul><ul><ul><li>SPU C/C++ Language Extensions V2.1 </li></ul></ul><ul><ul><li>Synergistic Processor Unit (SPU) Instruction Set Architecture V1.1 </li></ul></ul><ul><ul><li>SPU Application Binary Interface Specification V1.4 </li></ul></ul><ul><ul><li>SPU Assembly Language Specification V1.3 </li></ul></ul><ul><li>Cell Broadband Engine Programming using the SDK </li></ul><ul><ul><li>Cell Broadband Engine SDK Installation and User's Guide V1.1 </li></ul></ul><ul><ul><li>Cell Broadband Engine Programming Tutorial V1.1 </li></ul></ul><ul><ul><li>Cell Broadband Engine Linux Reference Implementation ABI V1.0 </li></ul></ul><ul><ul><li>SPE Runtime Management library documentation V1.1 </li></ul></ul><ul><ul><li>SDK Sample Library documentation V1.1 </li></ul></ul><ul><ul><li>IDL compiler documentation V1.1 </li></ul></ul><ul><li>New developerWorks Articles </li></ul><ul><ul><li>Maximizing the power of the Cell Broadband Engine processor </li></ul></ul><ul><ul><li>Debugging Cell Broadband Engine systems </li></ul></ul>
    85. 85. Documentation (new or recently updated) <ul><li>IBM Cell Broadband Engine Full-System Simulator </li></ul><ul><ul><li>IBM Full-System Simulator Users Guide </li></ul></ul><ul><ul><li>IBM Full-System Simulator Command Reference </li></ul></ul><ul><ul><li>Performance Analysis with the IBM Full-System Simulator </li></ul></ul><ul><ul><li>IBM Full-System Simulator BogusNet HowTo </li></ul></ul><ul><li>PowerPC Architecture Book </li></ul><ul><ul><li>Book I: PowerPC User Instruction Set Architecture Version 2.02 </li></ul></ul><ul><ul><li>Book II: PowerPC Virtual Environment Architecture Version 2.02 </li></ul></ul><ul><ul><li>Book III: PowerPC Operating Environment Architecture Version 2.02 </li></ul></ul><ul><ul><li>Vector/SIMD Multimedia Extension Technology Programming Environments Manual Version 2.06c </li></ul></ul>
    86. 86. Links <ul><li>Cell Broadband Engine </li></ul><ul><li>IBM BladeCenter QS20 </li></ul><ul><li>Cell Broadband Engine resource center </li></ul><ul><li>Cell Broadband Engine resource center - Documentation archive </li></ul><ul><li>Cell Broadband Engine technology </li></ul><ul><li>'s Cell Developers Corner </li></ul><ul><li>Barcelona Supercomputer Center - Linux on Cell </li></ul><ul><li>Barcelona Supercomputer Center - Documentation </li></ul><ul><li>Heiko J Schick's Cell Bookmarks </li></ul>