Digital Signal Processing Reference
In-Depth Information
The software code should contain detailed description of the parallelization process
since the application developer has the complete control to manage the process.
The meticulous message passing management by the software becomes slower than
shared memory. However, this approach enables robust communication employment
providing the complete control to the software developer to make this job. Message
Passing Interface (MPI) [ 14 ] is a widely used standard protocol that employs
message passing communication mechanism. MPI provides an application pro-
gramming interface (API) that specifies a set of routines to manage inter processes
communication. The advantage of MPI employment over other mechanisms is that
both data and task parallelism can be explored, with the cost of more code changes
to achieve parallel software. In addition, MPI relies on network communication
hardware, which guides the performance of the entire system.
Shared memory communication uses a storage mechanism to hold the nec-
essaries information for threads communication. This approach provides simpler
software development, since thanks to a global addressing system most of the
communication drawbacks are transparent to the software team. The main drawback
of shared memory employment is the bottleneck between processing element and
memory, since several threads could try to concurrently access the same storage
element at a certain time. Memory coherency also can be a bottleneck for shared
memory employment, since some mechanism should be applied to guarantee data
coherency. OpenMP [ 4 ] employs shared memory communication mechanism to
manage the parallelization process. This approach is based on a master and slave
mechanism, where the master thread forks a specified number of slave threads
to execute in parallel. Thus, each thread executes a parallelized section of the
application into a processing element independently. OpenMP provides easier
programming than MPI, with greater scalability, since a smaller number of code
changes should be done to increase the number of spawned threads. However, in
most cases OpenMP code coverage is limited to highly parallel parts and loops.
This approach is strongly based on a compiler, which must translate the OpenMP
directives to recognize what section should be parallelized.
6
Future Research Challenges
As discussed throughout this chapter, although MPSoCs can be considered a
consolidated strategy for the development of high performance and low energy
products, there are still many open problems that required extra research effort.
Software partitioning is one of the most important open issues. That is, taking a
program developed in the way programs have been developed for years now, and
making it work in an MPSoC environment by the use of automatic partitioning is
very difficult already for the homogeneous case, not to mention the heterogeneous
one. Matching a program to an ISA and to a certain MPSoC organization is an open
and challenging problem.
Search WWH ::




Custom Search