Computer Evolution and Performance
Introduction
The evolution of computers refers to the gradual development and improvement of computer
systems over time. Early computers were very large, slow, and expensive. However, modern
computers are much faster, smaller, and more powerful. Over the years, several major
improvements have occurred in computer systems. The speed of processors has increased, the
size of components has decreased, memory capacity has grown significantly, and input/output
devices have become faster and more efficient.
One of the main reasons for the increase in processor speed is the shrinking size of
microprocessor components. When components become smaller, the distance between them is
reduced. As a result, electrical signals travel faster between components, which increases the
overall speed of the processor.
Another important improvement in modern computers is the better organization of processors.
Techniques such as pipelining and parallel execution allow computers to perform multiple
operations at the same time. These techniques significantly improve the performance and
efficiency of computer systems.
ENIAC (Electronic Numerical Integrator and Computer)
Background of ENIAC
ENIAC was one of the first general-purpose electronic computers. The full form of ENIAC is
Electronic Numerical Integrator and Computer. It was designed by J. Presper Eckert and John
Mauchly at the University of Pennsylvania.
The main purpose of ENIAC was to calculate trajectory tables for weapons during World War II.
The development of ENIAC started in 1943 and it was completed in 1946. However, by the time it
was completed, the war had already ended, so it was not used during the war. ENIAC continued to
be used for scientific and research calculations until 1955.
Details of ENIAC
ENIAC had several important characteristics that made it a significant development in computer
history.
It used the decimal number system instead of the binary system.
It contained 20 accumulators, each capable of storing 10-digit numbers.
The machine was programmed manually using switches and cables.
It used approximately 18,000 vacuum tubes.
The computer weighed about 30 tons.
It occupied around 1500 square feet of space.
It consumed approximately 140 kilowatts of electrical power.
It was capable of performing about 5,000 additions per second.
Although ENIAC was extremely large and consumed a large amount of power, it represented a
major breakthrough in the development of electronic computers.
Von Neumann / Turing Concept
The next major development in computer architecture was the stored program concept, proposed
by John von Neumann and Alan Turing. This concept became the foundation of modern computer
systems.
According to the stored program concept:
The main memory stores both programs and data.
The Arithmetic Logic Unit (ALU) performs arithmetic and logical operations on binary data.
The Control Unit fetches instructions from memory, interprets them, and controls their execution.
The computer also includes input and output devices that communicate with the system through
the control unit.
A computer based on this architecture was developed at the Institute for Advanced Studies (IAS) in
Princeton and was completed in 1952. This architecture became the basic model for most modern
computers.
Structure of the Von Neumann Machine
The Von Neumann machine consists of several important components that work together to
perform computations.
Main Memory
Main memory stores both instructions and data that are used by the computer during program
execution.
Arithmetic Logic Unit (ALU)
The Arithmetic Logic Unit performs arithmetic operations such as addition and subtraction, as well
as logical operations such as comparisons.
Control Unit
The Control Unit controls the execution of instructions by directing the operations of the processor.
Input Devices
Input devices allow users to enter data and instructions into the computer system.
Output Devices
Output devices display or produce the results generated by the computer.
All these components work together to execute programs and process data efficiently.
IAS Computer Details
The IAS computer used a memory system consisting of 1000 words, where each word contained
40 bits. Each memory word could store two instructions, with each instruction containing 20 bits.
The IAS computer also contained several registers inside the CPU. Registers are small storage
locations that temporarily store data and instructions during processing.
Important registers used in the IAS computer include:
Memory Buffer Register (MBR)
Memory Address Register (MAR)
Instruction Register (IR)
Instruction Buffer Register (IBR)
Program Counter (PC)
Accumulator (AC)
Multiplier Quotient (MQ)
Functions of IAS Registers
Memory Buffer Register (MBR)
The Memory Buffer Register temporarily stores the data that is being transferred to or from
memory. It may contain a word that will be stored in memory, sent to an input/output device, or
received from memory or I/O units.
Memory Address Register (MAR)
The Memory Address Register stores the address of the memory location that the computer needs
to access for reading or writing data.
Instruction Register (IR)
The Instruction Register stores the instruction that is currently being executed by the processor.
Instruction Buffer Register (IBR)
The Instruction Buffer Register temporarily stores the right-hand instruction from a memory word
until it is executed.
Program Counter (PC)
The Program Counter stores the address of the next instruction that the processor will execute.
Accumulator (AC)
The Accumulator is used to store intermediate results produced during arithmetic and logical
operations.
Multiplier Quotient (MQ)
The Multiplier Quotient register stores the results of multiplication and division operations. When
two 40-bit numbers are multiplied, the result is an 80-bit number. The most significant 40 bits are
stored in the Accumulator (AC) and the least significant 40 bits are stored in the Multiplier Quotient
(MQ).
Techniques for Increasing Speed
Modern processors use several techniques to increase system performance.
Pipelining
Pipelining is a technique in which multiple instructions are processed simultaneously. The
instruction execution process is divided into stages, and each stage performs a specific part of the
instruction. This method is similar to an assembly line in a factory.
Cache Memory
Cache memory is a small and very fast memory located close to the CPU. It stores frequently used
data so that the processor can access it quickly instead of retrieving it from the slower main
memory.
L1 and L2 Cache
L1 and L2 are two levels of cache memory used in modern processors.
L1 Cache is built directly inside the processor chip and is the fastest type of cache memory.
L2 Cache is larger but slightly slower than L1 and may be located on a separate chip.
These caches help reduce the time required to access data and improve processor performance.
Branch Prediction
Branch prediction is a technique where the processor predicts the outcome of decision instructions
in advance so that it can continue executing instructions without waiting.
Data Flow Analysis
Data flow analysis examines how data moves through a program and determines which
instructions can be executed simultaneously.
Speculative Execution
Speculative execution allows the processor to execute instructions before it is certain that they are
required. If the prediction is correct, execution continues normally. If the prediction is incorrect, the
results are discarded.
Performance Balance
In modern computer systems, processor speed has increased very rapidly. Memory capacity has
also increased significantly. However, memory speed has not increased as quickly as processor
speed. This difference creates a performance imbalance between the processor and memory.
Logic and Memory Performance Gap
As processors become faster, the time required to access memory becomes relatively longer. This
difference between processor speed and memory speed is known as the logic and memory
performance gap.
Solutions to the Performance Gap
Several solutions are used to reduce the gap between processor speed and memory speed:
Increasing the number of bits retrieved from memory at one time.
Making DRAM wider instead of deeper.
Improving the interface between DRAM and the processor.
Using cache memory.
Reducing the number of times the processor accesses main memory.
Increasing interconnection bandwidth using high-speed buses.
Input/Output Devices
Input/Output devices also play an important role in system performance. Many modern peripherals
require the transfer of large amounts of data, which is known as high throughput.
The main challenge is not the processor’s ability to process data but the ability to move data
efficiently between devices and memory.
Solutions for I/O Problems
Some common solutions include:
Using caching
Using buffering
Using higher-speed interconnection buses
Using more advanced bus structures
Using multiple processor configurations
Buffering means temporarily storing data in a reserved area of memory before it is processed.
Improvements in Chip Organization and Architecture
Modern processors have improved significantly due to changes in chip organization and
architecture.
These improvements include:
Increasing the hardware speed of processors
Shrinking the size of logic gates
Packing more transistors into a single chip
Increasing the clock rate
Increasing the size and speed of cache memory
Using parallel execution techniques
Problems with Increasing Clock Speed
Although increasing clock speed improves performance, it also creates several challenges.
Power consumption increases.
Heat generation becomes difficult to manage.
RC delay increases, which limits signal speed.
Memory latency becomes a significant problem.
Due to these issues, modern processor design focuses more on architectural improvements rather
than only increasing clock speed.
Increased Cache Capacity
Modern processors typically use multiple levels of cache memory such as L1, L2, and L3 cache.
As chip density increased, more cache memory could be placed directly on the processor chip.
This significantly reduced the time required to access frequently used data.
For example, earlier processors used only about 10% of chip area for cache memory, while modern
processors may use about 50% of the chip area for cache.
More Complex Execution Logic
Parallel Execution
Parallel execution allows multiple instructions to be executed at the same time.
Superscalar Processors
Superscalar processors contain multiple pipelines that allow several instructions to be processed
simultaneously, provided that the instructions do not depend on each other.
Diminishing Returns
As processors become more complex, it becomes increasingly difficult to achieve large
improvements in performance. Increasing clock speed also creates problems related to power
consumption and heat generation. Therefore, further performance improvements become smaller
and more difficult to achieve.
New Approach – Multiple Cores
To overcome these limitations, modern processors use multi-core architecture.
In this approach:
Multiple processors (cores) are placed on a single chip.
These cores share a large cache memory.
Software programs can run tasks on multiple cores simultaneously.
If software is designed to use multiple processors effectively, increasing the number of processors
can significantly improve system performance. For example, doubling the number of processors
can nearly double the performance of the system.