1.1 Evolution of computer systems architectures
Computers came into being with the development of the ENIAC computer system in the late 1940s. The early ENIAC and subsequent computers were constructed of vacuum tubes and filled a large room. These early computer systems were dedicated to a single task and had no operating system. The power of these early computers was less than that of the handheld calculators in use today. These computers were used mainly for ballistic missile trajectory projections and military research. The architecture of these early computers was based on the von Neumann stored program, single-stream instruction flow architecture (Figure 1.1). This basic architecture and philosophy is still in use today in most computer systems.
Figure 1.1 Basic computer system.
These early computer systems had no sophisticated operating systems, databases, networks, or high-level programming languages to simplify their operations. They stored program instructions and data needed for computation in the same place. Instructions were read from memory one at a time and were mostly associated with the loading and storage of program data from memory to registers where the data were to be operated on. Data in these early systems were not shared by programs. If a program needed data produced by another program, these data items were typically copied into a region near the end of a programâs space, and the end addresses were hard-coded for use by the application program in which they were embedded.
A user application resides on a computer system. The computer system provides the physical medium on which the data and programs are stored and the processing capacity to manipulate the stored data. A processing unit of a computer system consists of five main elements: the memory, an arithmetic logic unit, an input unit, an output unit, and a control element. The memory unit stores both the data for programs and the instructions of a program that manipulates stored data.
The programâs individual elements or instructions are fetched from the memory one at a time and are interpreted by the control unit. The control unit, depending on the interpretation of the instruction, determines what computer operation to perform next. If the instruction requires no additional data, the control indicates to the arithmetic logic unit what operation to perform and with what registers. (See Figure 1.1.)
If the instruction requires additional data, the control unit passes the appropriate command to the memory (MAR, memory address register) to fetch a data item from memory (MDR, memory data register) and to place it in an appropriate register in the ALU (data register bank) (Figure 1.2). This continues until all required operands are in the appropriate registers of the ALU. Once all operands are in place, the control unit commands the ALU to perform the appropriate instructionâfor example, multiplication, addition, or subtraction. If the instruction indicated that an input or output were required, the control element would transmit a word from the input unit to the memory or ALU, depending on the instruction. If an output instruction were decoded, the control unit would command the transmission of the appropriate memory word or register to the output channel indicated. These five elements comprise the fundamental building blocks used in the original von Neumann computer system and are found in most contemporary systems in some form or another.
Figure 1.2 Low-level memory access.
A computer system is comprised of the five building blocks previously described, as well as additional peripheral support devices, which aid in data movement and processing. These basic building blocks are used to form the general processing, control, storage, and input and output units that make up modern computer systems. Devices typically are organized in a manner that supports the application processing for which the computer system is intendedâfor example, if massive amounts of data need to be stored, then additional peripheral storage devices such as disks or tape units are required, along with their required controllers or data channels.
To better describe the variations within architectures we will discuss some details brieflyâfor example, the arithmetic logic unit (ALU) and the control unit are merged together into a central processing unit, or CPU. The CPU controls the flow of instructions and data in the computer system. Memories can be broken down into hierarchies based on nearness to the CPU and speed of accessâfor example, cache memory is small, extremely fast memory used for instructions and data actively executing and being used by the CPU. The primary memory is slower, but it is also cheaper and contains more memory locations. It is used to store data and instructions that will be used during the execution of applications presently running on the CPUâfor example, if you boot up your word processing program on your personal computer, the operating system will attempt to place the entire word processing program in primary memory. If there is insufficient space, the operating system will partition the program into segments and pull them in as needed.
The portion of the program that cannot be stored in memory is maintained on a secondary storage device, typically a disk drive. This device has a much greater storage capacity than the primary memory, typically costs much less per unit of storage, and has data access times that are much slower than the primary memory. An additional secondary storage device is the tape drive unit. A tape drive is a simple storage device that can store massive amounts of dataâagain, at less cost than the disk units but at a reduced access speed. Other components of a computer system are input and output units. These are used to extract data from the computer and provide these data to external devices or to input data from the external device. The external devices could be end-user terminals, sensors, information network ports, video, voice, or other computers.
A computer systemâs architecture is constructed using basic building blocks, such as CPUs, memories, disks, I/O, and other devices as needed.
In the following sections we will examine each of the components of a computer system in more detail, as we examine how these devices can be interconnected to support data processing applications.
1.1.1 CPU architectures
The central processing unit (CPU) is the core of a computer system and consists of the arithmetic logic unit (ALU) and the control unit. The ALU can come in a variety of configurationsâfrom a single simple unit, up to extremely complex units that perform complex operations. The primary operation of the ALU is to take zero or more operands and perform the function called for in the instruction. In addition to the ALU, the CPU consists of a set of registers to store operands and intermediate results of computations and to maintain information used by the CPU to determine the state of its computations. For example, there are registers for the status of the ALUâs operation, for keeping count of the instruction to be performed next, to keep data flowing in from memory or out to memory, to maintain the instruction being executed, and for the location of operands being operated on by the CPU. Each of these registers has a unique function within the CPU, and each is necessary for various classes of computer architectures. A typical minimal architecture for a CPU and its registers is shown in Figure 1.3 and consists of a primary memory connected to the CPU via buses. There are r...