Computer architecture, which underpins computer science, is a topic in which "getting things done" is paramount: The ability to understand trade-offs before selecting between and implementing well-considered design options is often as important as the study of those options at a more theoretical level. This easy-to-follow __**A Practical Introduction to Computer Architecture**__ blends traditional teaching approaches with the use of mathematics, together with the use of a hardware description language (Verilog) and a concrete processor (MIPS32) as vehicles for "hands-on" modelling and experimenting with digital logic and processor design. This unique approach encourages readers to derive their own conclusions via experimentation, enabling them to discover for themselves the fundamental and exciting topics of computer architecture. The book is divided into three parts, covering each of the three levels of abstraction: the digital logic layer, the instruction set and micro-architecture layer, and the hardware/software interface. The first part deals with the basic tools and techniques which underpin the rest of the book, whereas the second part deals with the broad topic of processor design and implementation. The final part bridges the gap between hardware and software by examining the programming tools and operating-system concepts that support the development and execution of programs. Topics and features: • Includes a wide-ranging introductory chapter, familiarising the reader with both the subject and the book’s contents • Outlines basic methods for evaluating processors, with a focus on performance • Investigates advanced topics in processor design, such as superscalar and vector processors • Presents a detailed description of a development tool-chain • Provides a stand-alone tutorial on using SPIM, a MIPS32 simulator • Focuses on aspects of compilers which are closely tied to the processor, covering register allocation, instruction selection and scheduling • Explores real implementations of concepts such as scheduling and interrupt handling • Examines the concept of efficient programming • Concludes every chapter with a set of example problems, and contains an appendix that discusses solutions • Supplies additional supportive material, such as example source code and electronic lecture slides, at http://www.cs.bris.ac.uk/home/page/teaching/pica.html This practical, reader-friendly textbook has been written with undergraduates in mind, and is suitable for self-study. The book can also be used by postgraduate students as a supportive reference for use in combination with more specialised textbooks. Dr. Dan Page is a lecturer at the University of Bristol, affiliated with both the Languages and Architecture Group and the Cryptography and Information Security Group. He was one of the founders of Identum (now part of Trend Micro), which is involved in delivering cryptographic expertise and products to industrial customers. It is a great pleasure to write a preface to this book. In my view, the content is unique in that it blends traditional teaching approaches with the use of mathematics and a mainstream Hardware Design Language (HDL) as formalisms to describe key concepts. The book keeps the “machine” separate from the “application” by strictly following a bottom-up approach: it starts with transistors and logic gates and only introduces assembly language programs once their execution by a processor is clearly de ned. Using a HDL, Verilog in this case, rather than static circuit diagrams is a big deviation from traditional books on computer architecture. Static circuit diagrams cannot be explored in a hands-on way like the corresponding Verilog model can. In order to understand why I consider this shift so important, one must consider how computer architecture, a subject that has been studied for more than 50 years, has evolved. In the pioneering days computers were constructed by hand. An entire computer could (just about) be described by drawing a circuit diagram. Initially, such d- grams consisted mostly of analogue components before later moving toward d- ital logic gates. The advent of digital electronics led to more complex cells, such as half-adders, ip- ops, and decoders being recognised as useful building blocks. Blends Traditional Teaching Approaches With The Use Of Mathematics, Together With The Use Of A Hardware Description Language (verilog) And A Concrete Processor (mips32) As Vehicles For Hands-on Modelling And Experimenting With Digital Logic And Processor Design -- From Cover. Pt. 1. Tools And Techniques -- Mathematical Preliminaries -- Basics Of Digital Logic -- Hardware Design Using Verilog -- Pt. 2. Processor Design -- A Historical And Functional Perspective -- Basic Processor Design -- Measuring Performance -- Arithmetic And Logic -- Memory And Storage -- Advanced Processor Design -- Pt. 3. The Hardware/software Interface -- Linkers And Assemblers -- Compilers -- Operating Systems -- Efficient Programming -- Pt. 4. Appendices -- Spim : A Mips32 Simulator -- Example Solutions. Daniel Page. Includes Bibliographical References (p. 629-631) And Index. Front Matter....Pages I-XXII Front Matter....Pages 1-1 Mathematical Preliminaries....Pages 3-42 Basics of Digital Logic....Pages 43-95 Hardware Design Using Verilog....Pages 97-139 Front Matter....Pages 141-141 A Historical and Functional Perspective....Pages 143-167 Basic Processor Design....Pages 169-212 Measuring Performance....Pages 213-221 Arithmetic and Logic....Pages 223-267 Memory and Storage....Pages 269-330 Advanced Processor Design....Pages 331-393 Front Matter....Pages 395-395 Linkers and Assemblers....Pages 397-450 Compilers....Pages 451-493 Operating Systems....Pages 495-534 Efficient Programming....Pages 535-557 Front Matter....Pages 559-559 SPIM: A MIPS32 Simulator....Pages 561-628 Back Matter....Pages 529-641