Computer as Components
s
Principles of Embedded
Computing System Design
Computer as Components
s
Principles of Embedded
Computing System Design
Third Edition
Marilyn Wolf
AMSTERDAM • BOSTON • HEIDELBERG • LONDON
NEW YORK • OXFORD • PARIS • SAN DIEGO
SAN FRANCISCO • SINGAPORE • SYDNEY • TOKYO
Morgan Kaufman is an imprint of Elsevier
Acquiring Editor: Todd Green
Development Editor: Nate McFadden
Project Manager: Andre Cuello
Designer: Mark Rodgers
Morgan Kaufmann is an imprint of Elsevier
225 Wyman Street, Waltham, MA 02451, USA
© 2012 Elsevier, Inc. All rights reserved.
Designations used by companies to distinguish their products are often claimed as trademarks or registered trademarks.
In all instances in which Morgan Kaufmann Publishers is aware of a claim, the product names appear in initial capital or
all capital letters. Readers, however, should contact the appropriate companies for more complete information regarding
trademarks and registration.
No part of this publication may be reproduced or transmitted in any form or by any means, electronic or mechanical,
including photocopying, recording, or any information storage and retrieval system, without permission in writing from
the publisher. Details on how to seek permission, further information about the Publisher’s permissions policies and our
arrangements with organizations such as the Copyright Clearance Center and the Copyright Licensing Agency, can be
found at our website: www.elsevier.com/permissions.
This book and the individual contributions contained in it are protected under copyright by the Publisher (other than as
may be noted herein).
Notices
Knowledge and best practice in this field are constantly changing. As new research and experience broaden our
understanding, changes in research methods or professional practices, may become necessary.
Practitioners and researchers must always rely on their own experience and knowledge in evaluating and using any
information or methods described herein. In using such information or methods they should be mindful of their own
safety and the safety of others, including parties for whom they have a professional responsibility.
To the fullest extent of the law, neither the Publisher nor the authors, contributors, or editors, assume any liability for any
injury and/or damage to persons or property as a matter of products liability, negligence or otherwise, or from any use or
operation of any methods, products, instructions, or ideas contained in the material herein.
Library of Congress Cataloging-in-Publication Data
Application submitted.
British Library Cataloguing-in-Publication Data
A catalogue record for this book is available from the British Library.
ISBN: 978-0-12-388436-7
For information on all MK publications
visit our website at www.mkp.com
Printed in the United States of America
12 13 14 10 9 8 7 6 5 4 3 2 1
Typeset by diacriTech, India
To Dad, for everything he taught me
Foreword to the First Edition
Digital system design has entered a new era. At a time when the design of micro-
processors has shifted into a classical optimization exercise, the design of embedded
computing systems in which microprocessors are merely components has become a
wide-open frontier. Wireless systems, wearable systems, networked systems, smart
appliances, industrial process systems, advanced automotive systems, and biologically
interfaced systems provide a few examples from across this new frontier.
Driven by advances in sensors, transducers, microelectronics, processor perfor-
mance, operating systems, communications technology, user interfaces, and pack-
aging technology on the one hand, and by a deeper understanding of human needs
and market possibilities on the other, a vast new range of systems and applications is
opening up. It is now up to the architects and designers of embedded systems to make
these possibilities a reality.
However, embedded system design is practiced as a craft at the present time.
Although knowledge about the component hardware and software subsystems is clear,
there are no system design methodologies in common use for orchestrating the overall
design process, and embedded system design is still run in an ad hoc manner in most
projects.
Some of the challenges in embedded system design come from changes in underly-
ing technology and the subtleties of how it can all be correctly mingled and integrated.
Other challenges come from new and often unfamiliar types of system requirements.
Then too, improvements in infrastructure and technology for communication and
collaboration have opened up unprecedented possibilities for fast design response to
market needs. However, effective design methodologies and associated design tools
haven’t been available for rapid follow-up of these opportunities.
At the beginning of the VLSI era, transistors and wires were the fundamental com-
ponents, and the rapid design of computers on a chip was the dream. Today the CPU
and various specialized processors and subsystems are merely basic components, and
the rapid, effective design of very complex embedded systems is the dream. Not only
are system specifications now much more complex, but they must also meet real-time
deadlines, consume little power, effectively support complex real-time user interfaces,
be very cost-competitive, and be designed to be upgradable.
Wayne Wolf has created the first textbook to systematically deal with this array
of new system design requirements and challenges. He presents formalisms and a
methodology for embedded system design that can be employed by the new type of
“tall-thin” system architect who really understands the foundations of system design
across a very wide range of its component technologies.
Moving from the basics of each technology dimension, Wolf presents formalisms
for specifying and modeling system structures and behaviors and then clarifies these
ideas through a series of design examples. He explores the complexities involved and
how to systematically deal with them. You will emerge with a sense of clarity about
xv
xvi
Foreword to the First Edition
the nature of the design challenges ahead and with knowledge of key methods and
tools for tackling those challenges.
As the first textbook on embedded system design, this book will prove invaluable
as a means for acquiring knowledge in this important and newly emerging field. It will
also serve as a reference in actual design practice and will be a trusted companion in
the design adventures ahead. I recommend it to you highly.
Lynn Conway
Professor Emerita, Electrical Engineering and
Computer Science, University of Michigan
Preface to the First Edition
Microprocessors have long been a part of our lives. However, microprocessors have
become powerful enough to take on truly sophisticated functions only in the past few
years. The result of this explosion in microprocessor power, driven by Moore’s Law,
is the emergence of embedded computing as a discipline. In the early days of micro-
processors, when all the components were relatively small and simple, it was neces-
sary and desirable to concentrate on individual instructions and logic gates. Today,
when systems contain tens of millions of transistors and tens of thousands of lines
of high-level language code, we must use design techniques that help us deal with
complexity.
This book tries to capture some of the basic principles and techniques of this new
discipline of embedded computing. Some of the challenges of embedded computing
are well known in the desktop computing world. For example, getting the highest
performance out of pipelined, cached architectures often requires careful analysis
of program traces. Similarly, the techniques developed in software engineering for
specifying complex systems have become important with the growing complexity of
embedded systems. Another example is the design of systems with multiple processes.
The requirements on a desktop general-purpose operating system and a real-time
operating system are very different; the real-time techniques developed over the past
30 years for larger real-time systems are now finding common use in microprocessor-
based embedded systems.
Other challenges are new to embedded computing. One good example is power
consumption. While power consumption has not been a major consideration in tra-
ditional computer systems, it is an essential concern for battery-operated embedded
computers and is important in many situations in which power supply capacity is lim-
ited by weight, cost, or noise. Another challenge is deadline-driven programming.
Embedded computers often impose hard deadlines on completion times for programs;
this type of constraint is rare in the desktop world. As embedded processors become
faster, caches and other CPU elements also make execution times less predictable.
However, by careful analysis and clever programming, we can design embedded pro-
grams that have predictable execution times even in the face of unpredictable system
components such as caches.
Luckily, there are many tools for dealing with the challenges presented by com-
plex embedded systems: high-level languages, program performance analysis tools,
processes and real-time operating systems, and more. But understanding how all these
tools work together is itself a complex task. This book takes a bottom-up approach to
understanding embedded system design techniques. By first understanding the funda-
mentals of microprocessor hardware and software, we can build powerful abstractions
that help us create complex systems.
xvii