We have come a long way from Computers being considered as powerful Calculation devices for automation, Data Entry and Storage systems, Data processing Systems to being considered as Artificial Intelligence Devices. Unimaginable! Computers were considered as devices to do routine jobs error-free, unlimited times, without fatigue, where humans are most likely to be tired of monotonous and repetitive work. Some of us know the computers to be executing any programmed logic for a solution, while the Millenials are introduced to intelligent computers. The Millenials will be amazed to know the chronological invention and development of computers.
If you don’t know history, then you don’t know anything. You are a leaf that doesn’t know it is part of a tree
One of the first calculation tool available was the Abacus, presumably invented sometime between 1000-500 B.C.
Around 1600, John Napier invented the Napier bones, a tool to find products and quotients. 1621, William Oughtred’s slide rule exploited Napier’s logarithms calculations.
In 1822, Charles Babbage proposed a machine to calculate tables for logarithms and trigonometric functions, called the Difference Engine. Before completing the machine, in 1833, he invented a more sophisticated Analytic Engine that used Jacquard punch cards to control the arithmetic calculations. This machine was programmable, had storage capabilities, and control flow mechanisms. It was a general-purpose computer. The Analytic Engine was never completed. Augusta Ada Lovelace wrote the first program for the Analytical Engine (to calculate Bernoulli numbers). Some consider her as the first programmer. Charles Babbage is credited for first conceiving the idea of Digital Programmable Computer.
In 1935, Konrad Zuse designs a special purpose electro-mechanical computer, the Z1. The Z1 computer was clocked at 1 Hz. The memory consisted of 64 words with 22 bits. A punch tape reader and a punch tape writer did input and output to the computer. The computer had two registers of 22 bits length and was able to perform additions and subtractions (it was not a general-purpose computer).
Zuse constructed the Z3, a fully programmable general-purpose computer, in 1939-1941. Remarkably, it contained a binary floating-point arithmetic. It was clocked at 5.33 Hz, based on relays, and had 64 words of 22 bits length. The small memory was not sufficient for storage of the program.
Presper Eckert and John Mauchly designed Electronic Numerical Integrator and Computer (ENIAC) during 1943-1946 with the following features:
- All-electronic general purpose
- Intended to calculate ballistic firing tables
- Designed and constructed during Programming by rewiring
- 5000 additions per second, 357 multiplications per second, and 38 divisions per second Decimal, not binary!
Von Neumann joined Eckert and Mauchly in the design of Electronic Discrete variable Automatic Computer (EDVAC). This was the first Stored Program Computer ever designed. The stored program design is usually attributed to von Neumann.
The Microprocessors came into life from Intel. Intel 4004 was the first Microprocessor in the market around the year 1971 with the features:
- 108 kHz, 0.06 MIPS
- 2300 transistors (10 microns)
- Bus width: 4 bits
- Memory: 640 bytes
In 1980, VLSI invention facilitated new processor architecture called RISC (Reduced Instruction Set Computer). Since 1985, commercial RISC Processors were introduced by many players creating Competition for the design of powerful computers of the day. Few worth mentioning are MIPS from MIPS Corporation, Sparc from Sun Corporation, Power RISC from IBM, PA-RISC from HP, Alpha from DEC. At the same time, Intel came up with its CISC (Complex Instruction Set Computer) processors, Intel x86 Microprocessor. Everyone knows today that a simple PC clocks 3+ Mhz, 4MB Cache, 2GB RAM.
Lots of information has been given here for the reader to appreciate how computers have evolved over a long period. It is like man has evolved from the stone age! The reader has to take a deep breath and come out to today’s reality of amazingly powerful systems.
With this introduction of evolution, let us see, how the so-called computers are designed for common man’s use. the below figure depicts the mapping of computer which we all see to the technical functional components that make up the box. Essentially the computer has three major components namely CPU, Memory and I/O. CPU is the brain that executes the program. Memory is where the programs and data for the programs are stored during execution. I/O is the external interface of the computer to the world and also mass storage devices. Monitor, Keyboard, Scanner, Printer, Barcode reader, USB devices are all I/O devices. Hard Disk, Compact Disk are storage devices.
Physically a computer is made up of some visible items and their interconnection as listed here.
- CPU, Memory, Hard Disk, Monitor, Keyboard, Mouse, Printer, Scanner, etc.
- Integrated Circuits (ICs) such as CPU, Display boards, Combinational logic circuits, analog and digital interfaces
- Printed Circuits (PCB) boards and its relevant parameters like a substrate for ICs and interconnection, distribution of CLK, Vdd, and GND signals, heat dissipation.
- Power Supplies that convert line AC voltage to regulated DC low voltage levels.
- Chassis (rack, card case, ...) that holds boards, power supply, provides the physical interface to a user or other systems.
- Connectors and Cables.
A computer has to be designed so that it can be useful to the user. Let me bring in an analogy here. Let us say a Shopping Mall is to be built. An architect makes the design. The Civil Engineer implements the design using bricks and mortar. The tenants are the users of the Mall. Further let us understand that the architect is concerned with the efficient structure of the building in terms of space utilization, lighting, energy, etc. The civil engineer is concerned with the rules and procedures of the construction. The tenant is bothered about his facilities and cost to the purse. Similarly, a Computer Architect designs the computer for desired performance, a logic designer implements the design by choosing the suitable components. The performance requirement is described by the user if it is not a generic system. In other words, for example, an organization could describe that it requires a computer with 100million transactions per second and that he will use XXX Transactional DBMS on YYY Operating System.
As we understand, there are three stakeholders in the making of a computer .i.e. User, Computer Architect and Logic Designer.
From the User's view, one is concerned about the :
- Storage capacity
- Peripheral devices functionality
From the Computer Architect’s (one who designs the computer) view, he is concerned with :
- Design for performance
- Optimum programming utility and implementation performance
- Design of hardware to execute instructions
- Use of benchmarking tools and other measures
- Balanced performance of different building blocks
- Performance requirements satisfied at the lowest cost possible
From the Logic designer’s (one who implements the architects’ design of computer) view, he is concerned with the :
- Design and Implementation of the machine at the logic gate level
- Whether the architect meets cost and performance goals
As seen the Computer architect’s job is to identify a system that will provide the desired performance for the user’s needs. This includes prescribing the right hardware for the software chosen by a user. The software includes the application program, Operating system and possibly a compiler i.e the user specifies that he wants to run application A on OS B and get performance C. The architect designs hardware that will give performance C on OS B for the application A. This is conceptually depicted in figure 1.2. It is important to note that the architect essentially identifies or designs the Instruction set Architecture that will meet user needs.
A program is a code written to solve a problem. Generally written in a higher-level language like C, C++, Java, COBOL, FORTRAN, etc. The program has logic and logical flow to solve a problem. It follows the syntax and semantic rules of the chosen language. This program is executed on the computer hardware. The steps involved in executing a higher level code on specific hardware is detailed in figure 1.3.
Computer architecture involves the design of computers. The first point that must be known about Computer architecture is that there is no standard design of computers, in the same way as there is no such thing as a standard building architecture or standard motorcar design. However, just as all cars have some basic features in common, so does computers. We have already dealt with the components of a computer that are common to all computers, noting that any particular computer will differ in various details from the general model presented. We have also dealt with what makes a working computer and how a program gets executed in a computer. Computer architecture is the study of building computer systems for a performance expectation.
Computer Architecture is broadly split into three parts.
- Instruction Set Architecture—the bridge between hardware and software (includes instruction set, CPU data path and internal architecture- refer to figure 1.2 ). Instruction Set Architecture (ISA) describes the processor (CPU) in terms of what the assembly language programmer sees, i.e. the instructions and registers and memory addressing capability of the CPU. Processor design involves the instruction set design and the organisation of the processor.
- More advanced processor implementations. The focus is on Pipelining, which is one of the most important ways to improve performance.
- Finally, Memory Systems and I/O design, and how to connect these with CPU.
In the context of computer hardware, frequently another term Computer Organization is used. Computer Organization is concerned with the internal design of the processor, the design of the bus system and its interfaces, the design of memory and so on with the chosen logic devices. It is possible for any two machines can have the same ISA, but different organizations.
To have a complete understanding of Computer Architecture, we will be studying in detail about various topics like Data Types of Computer Hardware, Instruction Set, Addressing Modes, Performance, Arithmetic and Logical Unit, Control Unit, Memory Design, I/O Design.