In many applications, the processor throughput is an important consideration. In
the imaging example just mentioned, most of the functionality was performed in
hardware because the available microprocessors could not keep up. As processor
speeds increase, more functionality is pushed into the software. There are several
key factors that you must consider to determine your throughput requirements.
Interrupts
How oftenmust the interrupts occur, and howmuch processing must be performed
in each interrupt service routine (ISR)? What is the maximum allowable latency for
servicing an interrupt?Will interrupts need to be turned off for an extended length
of time, and how will that affect the latency of other interrupts? You may find that
you need two (ormore) processors—one to handle high-speed interrupts with short
latency requirements but low complexity processing needs, and another to handle
low-rate interrupts with more complex processing requirements.
Interfaces
What must the system talk to? How will the data be passed around or get to the
outside world? How much hardware support will there be for the interface and
how much of the functionality will be performed in software? To take a simple
example, an I2C interface that is implemented on a microcontroller by flipping
bits in software will impact overall throughput more than an I2C interface that is
implemented in hardware. This issue will likely be related to the interrupt considerations,
because the interface will probably use interrupts. (If you don’t know
what I2C is, it will be covered in Chapter 2.)
Hardware Support
An imaging application that has a direct memory access (DMA) controller to move
large amounts of data around will not need as much processor horsepower as one
that has to move the data in software. A processor that has to move the data in
software but has some kind of block-move instruction in the hardware will
probably be faster than one that has to have a series of instructions to construct
a loop. Similarly, if the CPU has an on-chip floating point unit (FPU) coprocessor,
then floating point operations will be much faster than they would be if they had
to be executed in software
Processing Requirements
If you are working on an imaging application, having a processor move the data
from one process (such as the camera interface logic) to another (such as filtering
logic) takes some degree of processing. If the processor has to actually implement
the filtering algorithm in software, this takes a lot more processing horsepower. It
is amazing how often systems are designed with little or no analysis of the amount
of processing the CPU actually has to do.
Operating System Requirements
If you use an operating system (OS), how long will interrupts be turned off? Is
this compatible with the interrupt latency requirements? What if the OS occasionally
stops processing to spend a few seconds thrashing the hard disk? Will this
cause data to be lost? Does the system have real-time requirements that will make
a real-time operating system necessary?
Language/Compiler
If you plan to use an object-oriented language such as Cþþ, what happens when
the CPU has to do garbage collection on the memory? Will data be lost? Does
choosing this approach mean you have to go from a 100MHz processor to a
1GHz processor just to keep the garbage collection interval short?