Overview of Computer Organization 1.1 Introduction

advertisement
Overview of Computer Organization
1.1 Introduction
Computer systems are complex. To manage this complexity, we use a series
of abstractions.
The kind of abstraction used depends on what you want to do with the
system.
A computer system consists of three major components: a processor, a
memory unit, and an input/output (I/O) subsystem. A system bus
interconnects these three components.
Figure 1.1 A user’s view of a computer system
Computer hardware is the electronic circuitry that performs the actual work.
Hardware includes things with which you are already familiar such as the
processor, memory, keyboard, CD burner, and so on. Miniaturization of
hardware is the most recent advance in the computer hardware area. This
miniaturization gives us such compact things as Pocket PCs and Flash
memories.
1
Computer software can be divided into application software and system
software. A user interacts with the system through an application program.
For the user, the application is the computer! For example, if you are
interested in browsing the Internet, you interact with the system through a
Web browser such as Mozilla Firefox or Internet Explorer. For you, the
system appears as though it is executing the application program (i.e., Web
browser), as shown in Figure 1.1.
At the core is the basic hardware, over which a layer of system software
hides the gory details about the hardware. Early ancestors of the Pentium
and other processors were called microprocessors because they were less
powerful than the processors used in the computers at that time.
The system software manages the hardware resources efficiently and also
provides nice services to the application software layer. What is the system
software? Operating systems such as Windows™, UNIX™, and Linux are
the most familiar examples. System software also includes compilers,
assemblers, and linkers. You are probably more familiar with application
software, which includes Web browsers, word processors, music players,
and so on.
Computer architecture refers to the aspects with which a programmer is
concerned. The most obvious one is the design of an instruction set for the
computer. For example, should the processor understand instructions to
process multimedia data? The answer depends on the intended use of the
system. Clearly, if the target applications involve multimedia, adding
multimedia instructions will help improve the performance. Computer
architecture, in a sense, describes the computer system at a logical level,
from the programmer’s viewpoint. It deals with the selection of the basic
2
functional units such as the processor and memory, and how they should be
interconnected into a computer system.
Computer organization is concerned with how the various hardware
components operate and how they are interconnected to implement the
architectural specifications. For example, if the architecture specifies a
divide instruction, we will have a choice to implement this instruction either
in hardware or in software. In a high-performance model, we may
implement the division operation in hardware to provide improved
performance at a higher price. In cheaper models, we may implement it in
software. But cost need not be the only deciding criterion.
For example, the Pentium processor implements the divide operation in
hardware whereas the next generation Itanium processor implements
division in software. If the next version of Itanium uses a hardware
implementation of division, that does not change the architecture, only
its organization.
Computer design is an activity that translates architectural specifications of a
system into an implementation using a particular organization. As a result,
computer design is sometimes referred to as computer implementation. A
computer designer is concerned with the hardware design of the computer.
Computer programming involves expressing the problem at hand in a
language that the computer can understand. As we show later, the native
language that a computer can understand is called the machine language. But
this is not a language with which we humans are comfortable. So we use a
language that we can easily read and understand. These languages are called
high-level languages, and include languages such as Java and Visual Basic.
3
1.2 Basic Terms and Notation
The alphabet of computers, more precisely digital computers, consists of 0
and 1. Each is called a bit, which stands for the binary digit. The term byte is
used to represent a group of 8 bits. The term word is used to refer to a group
of bytes that is processed simultaneously.
The exact number of bytes that constitute a word depends on the system. For
example, in the Pentium, a word refers to four bytes or 32 bits. On the other
hand, eight bytes are grouped into a word in the Itanium processor. The
reasons for this difference are explained later. We use the abbreviation “b”
for bits, “B” for bytes, and “W” for words. Sometimes we also use
doubleword and quadword. A doubleword has twice the number of bits as
the word and the quadword has four times the number of bits in a word.
Bits in a word are usually ordered from right to left, as you would write
digits in a decimal number. The rightmost bit is called the least significant
bit (LSB), and the leftmost bit is called the most significant bit (MSB).
We use standard terms such as kilo (K), mega (M), giga (G), and so on to
represent large integers. Unfortunately, we use two different versions of
each, depending on the number system, decimal or binary. Table 1.1
summarizes the differences between the two systems. Typically,
computer-related attributes use the binary version. For example, when we
say 128 megabyte (MB) memory, we mean 128*2^20 bytes.
4
Download