|
As USB makes its way into the
embedded world, it has begun to shape how we think of a system design. If you
were familiar with the PC/104 world, you'll recall that the CPU managed I/O
devices over the PC/104 bus by polling or using interrupt requests. The CPU
received a signal from an I/O device that a control function needed to be
serviced based on a given priority. In such a system, there would typically be
several tasks which the CPU was charged with managing such as: network
communication, data processing of a log file, writing to a disk drive, or even
maintaining a display screen.
Is it ever a good idea to have the same CPU that does data processing, network
servicing, displays of graphical interfaces, and many other tasks, also be
responsible for servicing an interrupt to shut down a conveyor belt that is
moving gravel into a dump truck or performing some other critical task? That
debate has gone on for years, and still continues. Truthfully, the marriage of
these two extremes, control and data processing, was the result of the
availability of excess computing power. In those days, it was easier and
cheaper to make advancements by simply pushing clock speeds to the extreme.
However, the world is changing. The excessive clock rates of the PC consume too
much power and generate too much heat in an era where the word "Green" is
starting to take precedence. But we cannot simply just reduce clock speeds and
compromise system performance. No, everything must perform better and faster
than its predecessors. So what can we do? Using serial buses to replace the
ancient parallel data bus is an obvious answer. Parallel buses seem passé when
compared to the ease of implementing faster serial interfaces such as USB. With
USB 2.0 High Speed data rates at 480 Mbits/s and USB 3.0 Super Speed expected
to enter the market at 4.8 Gbit/s, the speed increases are significant. But
what about heat and power consumption? Don't you still need a powerful CPU to
handle all this USB activity you ask? The solution comes from an ancient Latin
saying divide et impera or "Divide and Conquer." With devices as simple as
8-bit microcontrollers starting to include USB ports, why not make use of this
cheap, powerful tool to our benefit?
The advancements toward a better embedded system design proposed by
StackableUSB are inevitable and will be realized sooner or later. It is a
concept we are familiar with in all aspects of our lives but have traditionally
turned a blind eye to it in the computing world due to our hunger for fast and
powerful CPUs.
Think of an embedded system as your favorite restaurant for a moment. At some
point in time, someone had an idea to start a business selling food. To get his
dreams into motion, this person would have conducted most, if not all, of the
tasks required by himself and would have had very little to no help except for
a hired server perhaps. This was the PC/104 world, and the CPU was the person
who dreamt of starting a restaurant. It served all the requirements of the
system with very little to no help from the outside world. The hired server is
like an Analog-to-Digital converter, serving the system by bringing information
into the core just like the server at the restaurant brings an order back to
the kitchen.
Now, after a few years, the restaurant wants to expand, serve more people,
build a larger menu, and offer additional services it did not before. In order
to do this, the person who originally started the restaurant hires an
accountant, a sous chef, a floor manager, three more cooks, a decorator, and
more wait staff. This is the advancement that StackableUSB prides itself in. By
hiring these people, the owner is now able to divide all the tasks required to
run the restaurant (the system) between different people and focus his time on
doing a better job on more critical tasks, while not using as much energy and
time required previously. In doing so, the owner has also created a more
efficient system which allows the restaurant to operate more economically than
before.
Similarly, in an embedded system where USB is the primary bus, individual tasks
can be micro-managed by providing a low power MCU on the I/O side with very
little to no additional cost. Consider a GPS module meant to attach to a stack.
If equipped with an onboard MCU, all the data processing can now be handled on
the Client side and the Host CPU only needs to read some registers from the
Client to get the information it needs, freeing the Host's system bus for more
critical tasks than servicing and trying to make sense of raw GPS data. This
concept can be applied to any device side application, creating a perfect
Host-Client system harmony. With fewer cumbersome tasks needing to be handled
on the Host side, lower power CPUs can now be used to reduce the cost and power
consumption, while increasing the overall life and efficiency of the entire
system.
Mirroring the concept of multi-core processor technology at the system level in
this fashion has tremendous advantages. Breaking down each task into a
micro-architecture that distributes device functions and allows a more granular
power control at each level is becoming more popular in all aspects of
computing.
One reason this makes sense today is that it allows system designers to reduce
power consumption which reduces the costs of running a system in addition to
reducing the heat it may generate.
For many, board-to-board communication has been a poor man's version of
multi-core processing. Each board plugged into a stack has been charged with a
control, measurement and/or monitoring task for the embedded system. Now, with
StackableUSB, the embedded systems industry is one step closer to achieving the
perfect balance of task distribution between the Host and Client devices.
In the end, the concept of a multi-core architecture afforded by USB and more
specifically StackableUSB, can help design engineers develop more efficient,
targeted embedded control systems paired with highly modular software.
|
|
|
|