What a computer is used for,
what tasks it must perform, and
how it interacts with humans and other systems determine the
functionality of the machine, and therefore its architecture, memory,
and I/O.
An arbitrary desktop computer (not necessarily a PC) is shown in
Figure 1-13. It has a large main memory to hold the
operating system, applications, and data and an interface to mass
storage devices (disks and DVD/CD-ROMs). It will have a variety of
I/O devices for user input (keyboard, mouse, and audio), user output
(display interface and audio), and connectivity (networking and
peripherals). The fast processor requires a system manager to monitor
its core temperature and supply voltages and to generate a system
reset.
Large-scale embedded computers may also take the same form. For
example, they may act as a network router or gateway and so will
require one or more network interfaces, large memory, and fast
operation. They may also require some form of user interface as part
of their embedded application and, in many ways, may simply be a
conventional computer dedicated to a specific task. Thus, in terms of
hardware, many high-performance embedded systems are not that much
different from a conventional desktop machine.
Smaller embedded systems use microcontrollers as their processor,
with the advantage that this processor will incorporate much of the
computer's functionality on a single chip. An
arbitrary embedded system, based on a generic microcontroller, is
shown in Figure 1-14.
The microcontroller has, at a minimum, a CPU, a small amount of
internal memory (ROM and/or RAM), and some form of I/O, which is
implemented within a microcontroller as subsystem blocks. These
subsystems provide the additional functionality for the processor and
are common across many processors. The subsystems that you will
typically find in microcontrollers will be discussed in the coming
chapters. For the moment though, let's take a quick
tour and see the purposes for which they can be used.