Fundamentals of computer organization and architecture
This book is intended for students in computer engineering, computer science, and electrical engineering. The material covered in the book is suitable for a one semester course on “Computer Organization & Assembly Language” and a one semester course on “Computer Architecture.” The book assumes that students studying computer organization and/or computer architecture must have had exposure to a basic course on digital logic design and an introductory course on high-level computer language.
This book reflects the authors’ experience in teaching courses on computer organization and computer architecture for more than fifteen years. Most of the material used in the book has been used in our undergraduate classes.
The coverage in the book takes basically two viewpoints of computers. The first is the programmer’s viewpoint and the second is the overall structure and function of a computer.
The first viewpoint covers what is normally taught in a junior level course on Computer Organization and Assembly Language while the second viewpoint covers what is normally taught in a senior level course on Computer Architecture.
In what follows, we provide a chapter-by-chapter review of the material covered in the book. In doing so, we aim at providing course instructors, students, and practicing engineers/scientists with enough information that can help them select the appropriate chapter or sequences of chapters to cover/review.
Chapter 1 sets the stage for the material presented in the remaining chapters. Our coverage in this chapter starts with a brief historical review of the development of computer systems. The objective is to understand the factors affecting computing as we know it today and hopefully to forecast the future of computation. We also introduce the general issues related to general-purpose and special-purpose machines.
Computer systems can be defined through their interfaces at a number of levels of abstraction, each providing functional support to its predecessor.
The interface between the application programs and high-level language is referred to asLanguage Architecture.
The Instruction Set Architecture defines the interface between the basic machine instruction set and the RuntimeandI/O Control.A different definition of computer architecture is built on four basic viewpoints. These are the structure, the organization, the implementation, and the performance.
The structure defines the interconnection of various hardware components, the organization defines the dynamic interplay and management of the various components, the implementation defines the detailed design of hardware components, and the performance specifies the behavior of the computer system.
Architectura development and styles are covered in Chapter 1. We devote the last part of our coverage in this chapter to a discussion on the different CPU performance measures used.
The sequence consisting of Chapters 2 and 3 introduces the basic issues related to instruction set architecture and assembly language programming. Chapter 2 covers the basic principles involved in instruction set architecture and design.
We start by addressing the issue of storing and retrieving information into and from memory, followed by a discussion on a number of different addressing modes. We also explain instruction execution and sequencing in some detail.
We show the application of the presented addressing modes and instruction characteristics in writing sample segment codes for performing a number of simple programming tasks. Building on the material presented in Chapter 2, Chapter 3 considers the issues related to assembly language programming.
We introduce a programmer’s view of a hypothetical machine. The mnemonics and syntax used in representing the different instructions for the machine model are then introduced.
We follow that with a discussion on the execution of assembly programs and an assembly language example of theX86 Intel CISC family.
The sequence of chapters 4 and 5 covers the design and analysis of arithmetic circuits and the design of the Central Processing Unit (CPU).
Chapter 4 introduces the reader to the fundamental issues related to the arithmetic operations and circuits used to support computation in computers.
We first introduce issues such as number representations, base conversion, and integer arithmetic.
In particular, we introduce a number of algorithms together with hardware schemes that are used in performing integer addition, subtraction, multiplication, and division.
As far as floating-point arithmetic, we introduce issues such as floating-point representation, floating-point operations, and floating-point hardware schemes. Chapter 5 covers the main issues related to the organization and design of the CPU.
The primary function of the CPU is to execute a set of instructions stored in the computer’s memory. A simple CPU consists of a set of registers, Arithmetic Logic Unit (ALU), and Control Unit (CU).
The basic principles needed for the understanding of the instruction fetch-execution cycle, and CPU register set design are first introduced.
The use of these basic principles in the design of real machines such as the 80�86 and the MIPS are shown. A detailed discussion on a typical CPU data path and control unit design is also provided.
DOWNLOAD :- HERE