Guide to RISC Processors

Similar documents
Guide to RISC Processors

Guide to RISC Processors

LOGICAL DATA MODELING

Scheduling in Distributed Computing Systems Analysis, Design & Models

Optical Burst Switched Networks

Microprocessor Theory

Functional Programming in R

Using MSC/NASTRAN: Statics and Dynamics

UNDERSTANDING IPv6. Youngsong Mun 1 and Hyewon K. Lee 2 'Soongsil University, Seoul, Korea; 2 Daejin University, Kyungki, Korea.

SOFTWARE-IMPLEMENTED HARDWARE FAULT TOLERANCE

Hierarchical Scheduling in Parallel and Cluster Systems

Yves Nievergelt. Wavelets Made Easy. Springer Science+Business Media, LLC

Windows 10 Revealed. The Universal Windows Operating System for PC, Tablets, and Windows Phone. Kinnary Jangla

Modeling and Simulation in Scilab/Scicos with ScicosLab 4.4

On-Chip Instrumentation

Open Source Software for Digital Forensics

A Practical Introduction to Hardware/Software Codesign

Handbook of Face Recognition

COMPONENT-ORIENTED PROGRAMMING

COMPUTATIONAL DYNAMICS

Reader's Guide Outline of the Book A Roadmap For Readers and Instructors Why Study Computer Organization and Architecture Internet and Web Resources

Java Quick Syntax Reference. Second Edition. Mikael Olsson

Essential Angular for ASP.NET Core MVC

Pro MERN Stack. Full Stack Web App Development with Mongo, Express, React, and Node. Vasan Subramanian

Programming with Turing and Object Oriented Turing

Structure of Computer Systems

XML for Bioinformatics

MATLAB Programming for Numerical Analysis. César Pérez López

Research on Industrial Security Theory

THE VERILOG? HARDWARE DESCRIPTION LANGUAGE

Database Performance Tuning and Optimization. Using Oracle

Inside Relational Databases with Examples in Access

Chunjie Duan Brock J. LaMeres Sunil P. Khatri. On and Off-Chip Crosstalk Avoidance in VLSI Design

JavaScript Essentials for SAP ABAP Developers

C Quick Syntax Reference

Objective-C Quick Syntax Reference

Learn PHP 7. Object-Oriented Modular Programming using HTML5, CSS3, JavaScript, XML, JSON, and MySQL. Steve Prettyman

Fundamentals of Operating Systems. Fifth Edition

Computer Organization and Design THE HARDWARE/SOFTWARE INTERFACE

Hardware Acceleration of EDA Algorithms

ITSM: An Interactive Time Series Modelling Package for the pe

JavaScript Quick Syntax Reference

Practical Amazon EC2, SQS, Kinesis, and S3

George Grätzer. Practical L A TEX

Introduction to Computer Networking

Building Custom Tasks for SQL Server Integration Services

Chapter 2 Logic Gates and Introduction to Computer Architecture

An Introduction to Programming with IDL

Microsoft Computer Vision APIs Distilled

The Verilog Hardware Description Language. Fifth Edition

PERFORMANCE ANALYSIS OF REAL-TIME EMBEDDED SOFTWARE

TEXTS IN COMPUTER SCIENCE

Windows and Graphics Programming with Visual C ++

Computer Organization and Design

LEGITIMATE APPLICATIONS OF PEER-TO-PEER NETWORKS

M (~ Computer Organization and Design ELSEVIER. David A. Patterson. John L. Hennessy. University of California, Berkeley. Stanford University

SpringerBriefs in Computer Science

A Structured Programming Approach to Data

Computer Organization and Design, 5th Edition: The Hardware/Software Interface

TASK SCHEDULING FOR PARALLEL SYSTEMS

Honorary Professor Supercomputer Education and Research Centre Indian Institute of Science, Bangalore

INFORMATION RETRIEVAL SYSTEMS: Theory and Implementation

Application-Specific Mesh-based Heterogeneous FPGA Architectures

Stefan Waldmann. Topology. An Introduction

Interfacing with C++

Visualization in Supercomputing

Impressive Microprocessor Lab Manual With Theory

Unlocking the Power of OPNET Modeler

MATLAB Numerical Calculations. César Pérez López

ASP.NET Core Recipes

C++ Quick Syntax Reference

FUNDAMENTALS OF COMPUTER ORGANIZATION AND ARCHITECTURE

LEGITIMATE APPLICATIONS OF PEER-TO-PEER NETWORKS DINESH C. VERMA IBM T. J. Watson Research Center A JOHN WILEY & SONS, INC., PUBLICATION

The Windows 10 Productivity Handbook

The MATLAB 5 Handbook

WIRELESS ATM AND AD-HOC NETWORKS. Protocols and Architectures

Modeling and Analysis of Computer Communications Networks

Mobile Phone Security and Forensics

PROBLEM SOLVING WITH FORTRAN 90

EMBEDDED SYSTEMS: Jonathan W. Valvano INTRODUCTION TO THE MSP432 MICROCONTROLLER. Volume 1 First Edition June 2015

Foundations of 3D Graphics Programming

Digital Signal Processing System Design: LabVIEW-Based Hybrid Programming Nasser Kehtarnavaz

Web Development with Java

MODERN MULTITHREADING

William Paterson University of New Jersey Department of Computer Science College of Science and Health Course Outline

MULTIMEDIA DATABASE MANAGEMENT SYSTEMS

Object-Oriented Programming and Data Structures

Data Warehousing and Data Mining Techniques for Cyber Security

Preface. This Book and Simulation Software Bundle Project

Android Continuous Integration

URL: Offered by: Should already know: Will learn: 01 1 EE 4720 Computer Architecture

,ch Page ix Friday, December 1, :56 AM. Chapter 2. Preface

Guide to OSI and TCP/IP Models

SQL Server AlwaysOn Revealed

Pro.NET 4 Parallel Programming in C#

URL: Offered by: Should already know: Will learn: 01 1 EE 4720 Computer Architecture

COSO Enterprise Risk Management

Beginning Robotics Programming in Java with LEGO Mindstorms

Android Continuous Integration

SOME ASSEMBLY REQUIRED

Transcription:

Guide to RISC Processors

Sivarama P. Dandamudi Guide to RISC Processors for Programmers and Engineers

Sivarama P. Dandamudi School of Computer Science Carleton University Ottawa, ON K1S 5B6 Canada sivarama@scs.carleton.ca Library of Congress Cataloging-in-Publication Data Dandamudi, Sivarama P., 1955 Guide to RISC processors / Sivarama P. Dandamudi. p. cm. Includes bibliographical references and index. ISBN 0-387-21017-2 (alk. paper) 1. Reduced instruction set computers. 2. Computer architecture. 3. Assembler language (Computer program language) 4. Microprocessors Programming. I. Title. QA76.5.D2515 2004 004.3 dc22 2004051373 ISBN 0-387-21017-2 Printed on acid-free paper. 2005 Springer Science+Business Media, Inc. All rights reserved. This work may not be translated or copied in whole or in part without the written permission of the publisher (Springer Science+Business Media, Inc., 233 Spring Street, New York, NY 10013, USA), except for brief excerpts in connection with reviews or scholarly analysis. Use in connection with any form of information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed is forbidden. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. Printed in the United States of America. (HAM) 9 8 7 6 5 4 3 2 1 SPIN 10984949 springeronline.com

To my parents, Subba Rao and Prameela Rani, my wife, Sobha, and my daughter, Veda

Preface Popular processor designs can be broadly divided into two categories: Complex Instruction Set Computers (CISC) and Reduced Instruction Set Computers (RISC). The dominant processor in the PC market, Pentium, belongs to the CISC category. However, the recent trend is to use the RISC designs. Even Intel has moved from CISC to RISC design for their 64-bit processor. The main objective of this book is to provide a guide to the architecture and assembly language of the popular RISC processors. In all, we cover five RISC designs in a comprehensive manner. To explore RISC assembly language, we selected the MIPS processor, which is pedagogically appealing as it closely adheres to the RISC principles. Furthermore, the availability of the SPIM simulator allows us to use a PC to learn the MIPS assembly language. Intended Use This book is intended for computer professionals and university students. Anyone who is interested in learning about RISC processors will benefit from this book, which has been structured so that it can be used for self-study. The reader is assumed to have had some experience in a structured, high-level language such as C. However, the book does not assume extensive knowledge of any high-level language only the basics are needed. Assembly language programming is part of several undergraduate curricula in computer science, computer engineering, and electrical engineering departments. This book can be used as a companion text in those courses that teach assembly language. vii

viii Preface Features Here is a summary of the special features that set this book apart. This probably is the only book on the market to cover five popular RISC architectures: MIPS, SPARC, PowerPC, Itanium, and ARM. There is a methodical organization of chapters for a step-by-step introduction to the MIPS assembly language. This book does not use fragments of code in examples. All examples are complete in the sense that they can be assembled and run giving a better feeling as to how these programs work. Source code for the MIPS assembly language program examples is available from the book s Web site (www.scs.carleton.ca/ sivarama/risc_book). The book is self-contained and does not assume a background in computer organization. All necessary background material is presented in the book. Interchapter dependencies are kept to a minimum to offer maximum flexibility to instructors in organizing the material. Each chapter provides an overview at the beginning and a summary at the end. An extensive set of programming exercises is provided to reinforce the MIPS assembly language concepts discussed in Part III of the book. Overview and Organization We divide the book into four parts. Part I presents introductory topics and consists of the first three chapters. Chapter 1 provides an introduction to CISC and RISC architectures. In addition, it introduces assembly language and gives reasons for programming in assembly language. The next chapter discusses processor design issues including the number of addresses used in processor instructions, how flow control is altered by branches and procedure calls, and other instruction set design issues. Chapter 3 presents the RISC design principles. The second part describes several RISC architectures. In all, we cover five architectures: MIPS, PowerPC, SPARC, Itanium, and ARM. For each architecture, we provide many details on its instruction set. Our discussion of MIPS in this part is rather brief because we devote the entire Part III to its assembly language. The third part, which consists of nine chapters, covers the MIPS assembly language. This part allows you to get hands-on experience in writing the MIPS assembly language programs. You don t need a MIPS-based system to do this! You can run these programs on your PC using the SPIM simulator. Our thanks go to Professor James Larus for writing the simulator, for which we provide details on installation and use. The last part consists of several appendices. These appendices give reference information on various number systems, character representation, and the MIPS instruction set. In addition, we also give several programming exercises so that you can practice writing MIPS assembly language programs.

Preface ix Acknowledgments Several people have contributed, either directly or indirectly, to the writing of this book. First and foremost, I would like to thank Sobha and Veda for their understanding and patience! I want to thank Ann Kostant, Executive Editor and Wayne Wheeler, Associate Editor, both at Springer, for their enthusiastic support for the project. I would also like to express my appreciation to the staff at the Springer production department for converting my camera-ready copy into the book in front of you. I also express my appreciation to the School of Computer Science, Carleton University for providing a great atmosphere to complete this book. Feedback Works of this nature are never error-free, despite the best efforts of the authors, editors, and others involved in the project. I welcome your comments, suggestions, and corrections by electronic mail. Carleton University Ottawa, Canada April 2004 Sivarama Dandamudi sivarama@scs.carleton.ca http://www.scs.carleton.ca/ sivarama

Contents Preface vii PART I: Overview 1 1 Introduction 3 Processor Architecture.... 3 RISCVersusCISC... 5 What Is Assembly Language?..... 7 Advantages of High-Level Languages... 9 Why Program in Assembly Language?... 10 Summary... 11 2 Processor Design Issues 13 Introduction.... 13 Number of Addresses..... 14 TheLoad/StoreArchitecture... 20 Processor Registers...... 22 FlowofControl... 22 ProcedureCalls... 26 HandlingBranches... 28 InstructionSetDesignIssues... 32 Summary... 36 3 RISC Principles 39 Introduction.... 39 Evolution of CISC Processors..... 40 WhyRISC?... 41 RISCDesignPrinciples... 43 Summary... 44 xi

xii Contents PART II: Architectures 45 4 MIPS Architecture 47 Introduction.... 47 Registers... 48 RegisterUsageConvention... 48 Addressing Modes...... 50 InstructionFormat... 51 MemoryUsage... 52 Summary... 53 5 SPARC Architecture 55 Introduction.... 55 Registers... 56 Addressing Modes...... 58 InstructionFormat... 59 InstructionSet... 59 Procedures and Parameter Passing... 69 Summary... 76 6 PowerPC Architecture 79 Introduction.... 79 RegisterSet... 81 Addressing Modes...... 83 InstructionFormat... 84 InstructionSet... 86 Summary... 96 7 Itanium Architecture 97 Introduction.... 97 Registers... 98 Addressing Modes...... 100 ProcedureCalls... 101 InstructionFormat... 102 Instruction-LevelParallelism... 105 InstructionSet... 106 HandlingBranches... 112 SpeculativeExecution... 114 BranchPredictionHints... 119 Summary... 119

Contents xiii 8 ARM Architecture 121 Introduction.... 121 Registers... 123 Addressing Modes...... 125 InstructionFormat... 128 InstructionSet... 131 Summary... 145 PART III: MIPS Assembly Language 147 9 SPIM Simulator and Debugger 149 Introduction.... 149 SimulatorSettings... 152 Running a Program...... 153 Debugging.... 154 Summary... 157 10 Assembly Language Overview 159 Introduction.... 159 Assembly Language Statements.... 160 SPIMSystemCalls... 161 SPIM Assembler Directives... 162 MIPSProgramTemplate... 165 DataMovementInstructions... 165 LoadInstructions... 166 StoreInstructions... 167 Addressing Modes...... 167 SampleInstructions... 168 OurFirstProgram... 172 Illustrative Examples..... 174 Summary... 182 11 Procedures and the Stack 183 Introduction.... 183 ProcedureInvocation... 186 ReturningfromaProcedure... 188 Parameter Passing...... 189 OurFirstProgram... 189 StackImplementationinMIPS... 192 Parameter Passing via the Stack..... 196 Illustrative Examples..... 200 Passing Variable Number of Parameters...... 207 Summary... 210

xiv Contents 12 Addressing Modes 211 Introduction.... 211 Addressing Modes...... 212 Processing Arrays... 214 OurFirstProgram... 217 Illustrative Examples..... 219 Summary... 224 13 Arithmetic Instructions 225 Introduction.... 225 Addition...... 226 Subtraction... 226 Multiplication... 228 Division... 229 OurFirstProgram... 230 Illustrative Examples..... 232 Summary... 242 14 Conditional Execution 243 Introduction.... 243 ComparisonInstructions... 244 UnconditionalBranchInstructions... 246 ConditionalBranchInstructions... 248 OurFirstProgram... 249 Illustrative Examples..... 252 IndirectJumps... 259 IndirectProcedures... 262 Summary... 267 15 Logical and Shift Operations 269 Introduction.... 269 LogicalInstructions... 270 ShiftInstructions... 276 RotateInstructions... 280 OurFirstProgram... 281 Illustrative Examples..... 284 Summary... 290 16 Recursion 291 Introduction.... 291 OurFirstProgram... 292 Illustrative Examples..... 295

Contents xv RecursionVersusIteration... 303 Summary... 304 17 Floating-Point Operations 305 Introduction.... 305 FPURegisters... 306 Floating-PointInstructions... 307 OurFirstProgram... 312 Illustrative Examples..... 314 Summary... 322 Appendices 323 A Number Systems 325 PositionalNumberSystems... 325 ConversiontoDecimal... 327 ConversionfromDecimal... 328 Binary/Octal/HexadecimalConversion... 329 UnsignedIntegers... 330 SignedIntegers... 331 Floating-Point Representation..... 334 Summary... 336 B Character Representation 339 Character Representation... 339 ASCIICharacterSet... 340 C MIPS Instruction Set Summary 343 D Programming Exercises 365 Bibliography 375 Index 379

PART I Overview