In part 2, BDTI looks at the innovative new tools for massively parallel processors.
[Part 1 explains the inner workings of processors like IBM's Cell, Stretch's reconfigurable chip, and MathStar's FPOA.]
The number of vendors offering massively parallel processors for digital signal processing is growing. As independent technology analysis company BDTI explained in its earlier article, there are a wide range of architectural approaches, each with unique pros and cons. Regardless of the approach taken, these chips are all highly complex, and they all face a similar challenge: making it easier for users to get their applications up and running. In this article BDTI will discuss some of the new development tools that massively parallel processor companies have developed to help their customers implement signal processing applications.
Augmented Design Flows
In a single-core chip, the process of implementing a signal-processing application typically involves the following steps:
- Designing the software architecture and choosing algorithms
- Implementing the software in a high-level language or assembly code (or often, a mixture of both, and possibly incorporating off-the-shelf software components)
- Testing and debugging the code
- If necessary, optimizing the code to improve performance or efficiency.
Figure 1 shows the typical application development process and tools used for a single-core chip.

Figure 1. Typical software development tasks and associated tools for single-core chips. Optimization is typically an iterative process.
For many massively parallel processors, the application implementation process involves tasks similar to those shown in Figure 1, but these tasks tend to be more complicated because of the complexity of the target architecture. For example, one key difference between implementing an application on a single-core chip versus a massively parallel chip lies in the level of difficulty associated with developing an appropriate software architecture. SSoftware architecture encompasses a range of software design choices that affect how an application will be implemented and executed on the chip. For example, software architecture decisions include how the functionality of the application will be organized into software modules, how those modules will communicate which each other, and how the execution of the modules will be controlled and coordinated.
For a massively parallel chip, it's crucial to develop an architecture (and algorithms) that is highly parallel and well-suited to the underlying chip. This software architecture will almost certainly be quite different from one that might be used for the same application on a single-core chip. As things currently stand, this is still mostly a manual process, and it remains a critical challenge for users of massively parallel chips.
Another difference between the single-core application development process described in Figure 1 and the process for developing an application on a massively parallel chip is that the latter typically requires an additional step—partitioning the application across an array of processing elements. As discussed in the next section, many vendors offer tools to help with this task.