| 
|
| |
Articles |
| |
download
this article |
| |
Why
Multiprocessor DSP Systems Need CORBA
CORBA enables software components in a multiprocessor
system to easily communicate--regardless of what language
they are written in, what OS they run on, or where they
are located. Even better, COBRA makes it easy to move
functionality between DSPs, GPPs, and FPGAs.
- By
Joseph M. Jacob
Signal processing systems often include multiple
types of processors, such as Digital Signal Processors
(DSPs), General Purpose Processors (GPPs), and Field
Programmable Gate Arrays (FPGAs). These disparate processors
must interoperate with one another, which presents several
challenges.
In larger development projects, DSP programming groups
often operate in a separate silo from the GPP and FPGA
programmers. This is a problem because the groups must
coordinate their efforts in order to design an optimal
system architecture and to allocate functionality optimally.
This coordination can be time-consuming and challenging.
What's more, any changes to the system architecture
or functional allocation can result in substantial code
re-writes for each programming group, greatly slowing
time-to-market.
These challenges, important as they are, are not unique
to DSP systems. Many other industries must integrate
disparate platforms into a single system. To meet this
goal, these industries rely on a distributed communication
architecture known as the Common Object Request Broker
Architecture (CORBA). Thanks to recent developments,
programmers can now take advantage of this technology
in real-time signal-processing systems.
What is CORBA?
CORBA is an open, vendor-neutral standard created by
the Object Management Group (OMG) consortium. CORBA
enables pieces of programs, called objects, to communicate
with one another over networks—regardless of what
programming language they are written in, what operating
system they are running on, or where they are located
in the system.
CORBA is often described as a "software
bus" because it is a software-based communications
interface through which objects are located and accessed.
The basic idea behind CORBA is the concept of location
transparency: It makes no difference whether an object
is called within the same processor or on a remote processor.
This concept is illustrated in Figure 1. |
| |
 |
| |
CORBA uses a client-server model to manage communications
between objects. The client/server interfaces are defined
using the Interface Definition Language (IDL). The IDL
is language-neutral and platform-independent: IDL definitions
can be mapped into any popular programming language, such
as C or Java. This allows objects to communicate regardless
of the language and platform underlying the objects.
Data communication from client to server is accomplished
through a well-defined object-oriented interface. The
Object Request Broker (ORB) determines the location of
the target object, sends a request to that object, and
returns any response back to the caller. Through this
object-oriented technology, developers can take advantage
of features such as inheritance, encapsulation, polymorphism,
and runtime dynamic binding. These features allow applications
to be changed, modified and re-used with minimal changes
to the original object. The illustration below identifies
how a client sends a request to a server through the ORB:
|
| |
 |
| |
There
is much mystique in the software development community
around "object-oriented development." But the
reality is much more mundane and straightforward. Objects
package both data (called properties) and the procedures
(called methods) that operate on that data. As a result,
these packages become convenient units of processing for
the purposes of distribution and reuse. Object Oriented
Design encourages the definition of objects based on the
application problem, e.g., "power spectrum"
rather than solution, e.g., DFT. An object-oriented approach
is ideal for homogenous, multi-processor systems, as it
allows developers to focus on the desired functionality
rather than the details of the underlying hardware.
Real-Time CORBA
Real-time CORBA adds deterministic behavior—its
primary goal is achieving end-to-end predictability in
a distributed system. Predictability is relatively easy
to achieve on a single-processor system through use of
priority-base scheduling. Predictability is harder to
achieve in a multiprocessor, networked system because
the processors do not share information about the priorities
of their tasks. Real-time Object Request Brokers (ORBs)
solve this problem by propagating the priority information.
The result is distributed priority inheritance and the
ability to schedule distributed processes to achieve predictability.
The heterogeneous nature of CORBA is important in priority
propagation. Consider the fact that every Real-Time Operating
System (RTOS) has its own range of priorities. In one
RTOS, the priority range may be 0 to 255, where 255 is
the highest precedence. Another RTOS may have a range
from 0 to 63, where 0 is the highest precedence. Manually
coordinating priorities across different operating systems
is challenging because your code has to know which operating
systems you're using. The Real-time CORBA standard simplifies
matters by defining a universal priority range—just
one way CORBA provides a portable and transparent approach
to building distributed systems.
Real-Time CORBA introduces a range of Real-Time CORBA
Priorities. Real-Time CORBA Priority maps into native
operating system priority throughout the system in a consistent
manner, and specifies how to reconcile communication requests
from the client application, through the middleware layer,
over the network, and up to the server application without
unexpected priority inversions. When a client invokes
an operation to a server, the client's native operating
system priority is mapped to a Real-Time CORBA Priority,
which is carried as part of the message to the server.
The following illustration shows the real-time priority
mapping function of the client/server application, through
a CORBA implementation. |
| |
 |
| |
When
the Server receives a message, the server-side ORB maps
the priority to the server's operating system native priority
level, and invokes the operation on the server at the
same relative priority level as the client. The result
is distributed priority inheritance, providing end-to-end
predictability in the same manner that would be expected
for an operation in a single process.
Priority propagation ensures that the RTOSes can be scheduled
consistent with overall priority. However, the network
can still be a source of priority inversions. A high-priority
message may have to await the completion of a large low-priority
message. That represents a message-based priority inversion.
To avoid this bottleneck, Real-time CORBA supports Priority-Banded
Connections. Priority banded connections allow the software
developer to separate different types of traffic by priority,
and to dedicate separate connections between the client
and server for each priority "band", where a
band can encompass any set of CORBA Priority levels. This
allows greater predictability for traffic, and allows
for a mix of real-time and non real-time data on the communications
transport. Priority banding also helps to bound and minimize
the chances for any priority inversions.
(More information on Real-Time CORBA is available at http://www.ois.com/resources/corb-3.asp.
For more information on CORBA in general, see
http://www.ois.com/resources/corb-2.asp.)
What is CORBA/e?
For systems that need small memory footprint and deterministic
execution, DSP programmers can use the latest generation
of CORBA: CORBA/e (CORBA for embedded). An Object Management
Group (OMG) standard, CORBA/e provides an architecture
for distributed processing that fits systems from the
largest server farms to the smallest networked DSPs.
The CORBA/e Compact Profile fits easily on a typical 32-bit
microprocessor running a standard Real-Time Operating
System (RTOS). The CORBA/e Micro Profile is even smaller
and fits on the kind of low-powered microprocessor or
DSP found on mobile or hand-held equipment. As with standard
CORBA, CORBA/e provides the benefit of code reuse. Developers
do not need to re-write code for all systems on a network
when they want to make changes, thus preserving their
investment in existing applications.
Why CORBA/e for DSPs?
CORBA/e enables DSPs to become first-class devices
in mixed systems. This means that the portability of the
CORBA interface provided to DSPs lets DSP developers and
the system architect optimize functionality in the DSP
with the same ease they now have in the GPP. CORBA/e is
ideally suited to the challenges of today's mission-critical
environments:
Standalone systems are a thing of the past. DSPs
need to communicate and interoperate with GPPs, FPGAs
and other DSPs. The systems in which they operate are
networked and highly interconnected. Software must cope
with communications and interoperability issues, while
delivering the same reliability and performance as the
isolated embedded systems of the past. Even systems that
appear to be standalone often need a communications infrastructure
to merely report their status to a central control system.
CORBA/e makes this interoperation manageable. What's more,
it provides easy access to a variety of sophisticated
transports tuned to embedded targets including Shared
Memory, PCI, PCI Express, Rapid IO, Firewire, and Ethernet.
CORBA/e also allows DSP programmers to "plug-in"
their own custom transports.
Platform flexibility is essential. It was once
acceptable to target embedded software to a specific processor
on a particular board. Today, there is increased pressure
to preserve investment through development of reusable
code that can be used with different targets. DSP programmers
may need to target many different processors at the same
time, and they may need or migrate to new compilers, operating
systems and processors over time. Without an appropriate
infrastructure, these requirements make a project susceptible
to repeated code changes. CORBA/e insulates DSP developers
from the headaches of rewriting code with every processor
and system change.
Multicore Processors. Embedded systems increasingly
use multicore DSP processors. Developers currently writing
code for single-core systems will need to migrate their
applications from single core processors to processors
containing two or more DSP cores. CORBA/e enables a seamless
migration to multiple cores through the benefits of location
transparency.
Embedded systems interact with the real world in real-time.
Devices with DSPs require interactions that are predictable
in time as well as in function. CORBA/e provides distributed
predictability by recognizing and propagating priority
in its own processing and across the system.
Power, weight, size and speed are constrained.
CORBA/e is specifically designed to support board-based
and networked systems with the smallest footprint and
the highest performance requirements.
Reliability must be built-in. DSP programmers
are rightly skeptical about adopting code they don't write
themselves. Robust implementations of CORBA/e like ORBexpress
RT and ORBexpress DSP have been field-tested in the toughest
environments, proving their reliability time and time
again.
Application flexibility through refactoring.
DSP programmers and their GPP programmer counterparts
can build a CORBA/e application as if it were a standalone
application. They can then distribute the application
across multiple resources with minimal effort. The programmers
can also change the distribution of the application with
ease, making it possible to defer deployment decisions
until late in the design process. Deferring deployment
decisions enables optimized resource allocation and the
flexibility to adjust to changing conditions. Most importantly,
it allows DSP programmers to easily move unnecessary algorithms
off of a DSP to a GPP or FPGA in order to ensure that
the DSP performs only those tasks for which it is optimized.
Time to market is critical. Economic pressures
are requiring greater productivity from systems development.
By supplying a high-performance communications framework,
CORBA/e enables greater productivity because it is no
longer necessary for DSP programmers to write their own
communications protocols and to re-write those communications
protocols every time there is a change in software or
hardware architecture. By providing a reliable, flexible
architecture, CORBA/e eliminates one of the most tedious
and time-consuming parts of distributed application development.
This ensures that a system architect can move algorithms
among a DSP and a GPP to achieve greater total system
efficiency without incurring any significant code or communications
protocol rewriting—even if these moves come very
late in the development process.
Conclusion
Embedded systems are called upon to interoperate in many
ways: An automobile, a circuit-board assembly unit, or
even a sophisticated office copy machine may contain multiple
embedded DSPs and GPPs, connected by a network. In an
assembly plant or chemical refinery, process controllers
may interoperate with many small sensor units, and one
or a few large servers or mainframes.
When embedded in automobiles, airplanes, weapons systems,
hand-held radios and cellular telephones, and other devices,
software must work as reliably as the hardware. This is
challenging because the typical embedded DSP environment
is networked, forcing its software to deal with communications
and interoperability issues without compromising reliability
and performance.
The interoperability and dependability of networked embedded
applications can only come from a proven, standard middleware.
The new availability of CORBA/e-based ORBs for DSPs is
exactly what is needed for these applications.
CORBA/e offers an architectural solution for DSP programmers
and embedded system architects to keep up with the rapid
pace of technological change " in processors, models,
and particularly communications bus types. CORBA/e lets
developers protect their investment in development work
despite rapidly accelerating change.
The benefits of CORBA/e for DSPs may be summed up this
way:
• A proven, high-performance architecture used in
the most demanding environments.
• DSPs become first-class devices in system processing.
• High-performance and speed within a small footprint.
• Reduced risk—changes can be made late in
the software development process without rewriting code,
while preserving existing investments in application development.
About the author
Joseph M. Jacob is the Senior Vice President,
Sales and Marketing of Objective Systems, Inc. Since joining
Objective Interface in 2003, Joe has led the company's
sales, marketing, business development and product management
teams. Prior to joining Objective Interface, Joe's professional
experience included leading the international business
development and strategy function for America On Line.
During his career, Joe has worked and lived throughout
Europe, including England, France and the Czech Republic.
Joe holds a B.A. from the University of Illinois at Urbana-Champaign
with a double major in economics and political science.
He also holds a Juris Doctor degree from Harvard Law School.
|
| |
Go
to articles home click here.
|
|