environment. The environment is complex and changing and these interactions can become
very complex. Many real-time systems don’t just interact with one, but many different
entities in the environment, with different characteristics and rates of interaction. A cell-
phone base station, for example, must be able to handle calls from literally thousands of
cell-phone subscribers at the same time. Each call may have different requirements for
processing and in different sequences of processing. All of this complexity must be
managed and coordinated.
Response time
Real-time systems must respond to external interactions in the environment within a
predetermined a mount of time. Real-time s ystems must produce the correct result and
produce it in a timely way. Th e respons e time is a s important a s produc ing co rrect r esults .
Real-time systems must be engineered to meet these response times. Hardwar e and
software must be desig ned to suppo rt respon se time requ ireme nts for the se systems.
Optimal p artitioning of the system requirements into hardware and software is also
important.
Real-time systems must be architected to meet system response time requirements. Using
combinations of hardware and software components, engineering makes architecture
decisions such as interconnectivity of the system processors, system link speeds, processor
speeds, memory size, I/O bandwidth, etc. Key questions to be answered include:
• Is the architecture suitable? To meet the system response time requirements, the system
can be architected using one powerful processor or several smaller processors. Can the
application be partitioned among the several smaller processors without imposing large
communication bottlenecks throughout the system? If the designer decides to use one
powerful processor, will the system meet its power requirements? Sometimes a simpler
architecture may be the better approach more complexity can lead to unnecessary
bottlenecks which cause response time issues.
• Are the processing elements powerful enough? A processing element with high
utilization (greater than 90%) will lead to unpredictable run-time behavior. At this
utilization level lower-priority tasks in the system may get starved. As a general rule,
real-time systems that are loaded at 90% take approximately twice as long to develop
due to the cycles of optimization and integration issues with the system at these
utilization rates. At 95% utilization, systems can take three times longer to develop due
to these same issues. Using multiple processors will help but the inter-processor
communication must be managed.
• Are the communication speeds adequate? Communication and I/O is a common
bottleneck in real-time embedded systems. Many response time problems come not
from the processor being overloaded but in latencies in getting data into and out of the
Software Engineering of Embedded and Real-Time Systems 19