Introduction.
Computing machines have been around for a long time, hundreds of years. The Chinese abacus, the calculators with gears and wheels and the first analog computers are all examples of computing machinery; in some cases quite complex, that predates the introduction of digital computing systems. The computing machines that we’re interested in came about in the 1940s because World War II artillery needed a more accurate way to calculate the trajectories of the shells fired from battleships. Today, the primary reason that computers have become so pervasive is the advances made in integrated circuit manufacturing technology. The modern computer has become faster and more powerful but the basic architecture of a computing machine has essentially stayed the same for many years.
Most of us use computers for a variety of tasks, from serious scientific computations to entertainment. The computer system can be divided into computer hardware and computer software. 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.
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 the Internet Explorer. For you, the system appears as though it is executing the application program (i.e., Web browser).
The computer hardware, as represented by a desktop PC, can be thought of as being comprised of four basic parts:
1. Input devices can include components such as the mouse, keyboard, microphone, disks, modem and the network.
2. Output devices are components such as the display, disk, modem, sound card and speakers, and the network.
3. The memory system is comprised of internal and external caches, main memory, video memory and disk.
4. The central processing unit, or CPU, is comprised of the arithmetic and logic unit (ALU), control system and busses.
Computer architecture deals with the functional behavior of a computer system as viewed by a programmer. This view includes aspects such as the sizes of data types (e.g. using 16 binary digits to represent an integer), and the types of operations that are supported (like addition and subtraction). Also deals with the selection of the basic 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. Computer organization deals with structural relationships that are not visible to the programmer, such as interfaces to peripheral devices and the technology used for the memory.
Computers are complex systems. How do we manage complexity of these systems? We can get clues from looking at how we manage complex systems in life. Think of how a large corporation is managed. We use a hierarchical structure to simplify the management: president at the top and employees at the bottom. Each level of management filters out unnecessary details into the lower levels and presents only an abstracted version to the higher-level management. This is what we refer to as abstraction.
Different people view computer systems differently depending on the type of their interaction. We use the concept of abstraction to look at only the details that are necessary from a particular viewpoint. For example, if you are a computer architect, you are interested in the internal details that do not interest a normal user of the system. One can look at computer systems from several different perspectives. We have already talked about the user’s view. We concentrate on the following views: (i) a programmer’s view, (ii) an architect’s view, and (iii) an implementer’s view.
A programmer’s view of a computer system depends on the type and level of language she intends to use. From the programmer’s viewpoint, there exists a hierarchy from low-level languages to high-level languages.
A computer architect looks at the design aspect from a high level. She uses higher-level building blocks to optimize the overall system performance. A computer architect is much like an architect who designs buildings. For example, when designing a building, the building architect is not concerned with designing the elevator; as far as the architect is concerned, the elevator is a building block someone else designs. Similarly, a computer architect does not focus on low-level issues. From the architect’s viewpoint, a computer system consists of three main components: a processor or central processing unit (CPU), a memory unit, and input/output (I/O) devices.
Implementers are responsible for implementing the designs produced by computer architects. This group works at the digital logic level. At this level, logic gates and other hardware circuits are used to implement the various functional units.