The von Neumann architecture is a design model for a stored-program digital computer that uses a central processing unit (CPU) and a single separate storage structure ("memory") to hold both instructions and data . It is named after the mathematician and earlycomputer scientist John von Neumann . Such computers implement a universal Turing machine and have a sequential architecture . A stored-program digital computer is one that keeps its programmed instructions, as well as its data, in read-write , random-access memory (RAM). Stored-program computers were an advancement over the program- controlled computers of the 1940s, such as the Colossus and the ENIAC , which were programmed by setting switches and inserting patch leads to route data and to control signals between various functional units. In the vast majority of modern computers, the same memory is used for both data and program instructions. The mechanisms for transferring the data and instructions between the CPU and memory are, however, considerably more complex than the original von Neumann architecture. The terms "von Neumann architecture" and "stored-program computer" are generally used interchangeably, and that usage is followed in this article.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
The von Neumann architecture is a design model for a stored-program digital computer that uses
a central processing unit (CPU) and a single separate storage structure ("memory") to hold both
instructions and data. It is named after the mathematician and earlycomputer scientist John von
Neumann. Such computers implement a universal Turing machine and have a sequential architecture.
A stored-program digital computer is one that keeps its programmed instructions, as well as its data,
in read-write, random-access memory (RAM). Stored-program computers were an advancement over the
program-controlled computers of the 1940s, such as the Colossus and the ENIAC, which were
programmed by setting switches and inserting patch leads to route data and to control signals between
various functional units. In the vast majority of modern computers, the same memory is used for both data
and program instructions. The mechanisms for transferring the data and instructions between the CPU
and memory are, however, considerably more complex than the original von Neumann architecture.
The terms "von Neumann architecture" and "stored-program computer" are generally used
interchangeably, and that usage is followed in this article.
Description
The earliest computing machines had fixed programs. Some very simple computers still use this design,
either for simplicity or training purposes. For example, a desk calculator (in principle) is a fixed program
computer. It can do basic mathematics, but it cannot be used as a word processor or a gaming console.
Changing the program of a fixed-program machine requires re-wiring, re-structuring, or re-designing the
machine. The earliest computers were not so much "programmed" as they were "designed".
"Reprogramming", when it was possible at all, was a laborious process, starting with flowcharts and paper
notes, followed by detailed engineering designs, and then the often-arduous process of physically re-
wiring and re-building the machine. It could take three weeks to set up a program on ENIACand get it
working.[1]
The idea of the stored-program computer changed all that: a computer that by design includes
an instruction set and can store in memory a set of instructions (a program) that details thecomputation.
A stored-program design also allows for self-modifying code. One early motivation for such a facility was
the need for a program to increment or otherwise modify the address portion of instructions, which had to
be done manually in early designs. This became less important when index registers and indirect
addressing became usual features of machine architecture. Self-modifying code has largely fallen out of
favor, since it is usually hard to understand and debug, as well as being inefficient under modern
processor pipelining and caching schemes.
On a large scale, the ability to treat instructions as data is what makes assemblers, compilers and other
automated programming tools possible. One can "write programs which write programs".[2] On a smaller
scale, I/O-intensive machine instructions such as the BITBLT primitive used to modify images on a bitmap
display, were once thought to be impossible to implement without custom hardware. It was shown later
that these instructions could be implemented efficiently by "on the fly compilation" ("just-in-time
compilation") technology, e.g., code-generating programs—one form of self-modifying code that has
remained popular.
There are drawbacks to the von Neumann design. Aside from the von Neumann bottleneck described
below, program modifications can be quite harmful, either by accident or design. In some simple stored-
program computer designs, a malfunctioning program can damage itself, other programs, or the operating
system, possibly leading to a computer crash. Memory protection and other forms of access control can
usually protect against both accidental and malicious program modification.
[edit]Von Neumann bottleneck
The separation between the CPU and memory leads to the von Neumann bottleneck, the
limited throughput (data transfer rate) between the CPU and memory compared to the amount of
memory. In most modern computers, throughput is much smaller than the rate at which the CPU can
work. This seriously limits the effective processing speed when the CPU is required to perform minimal
processing on large amounts of data. The CPU is continuously forced to wait for needed data to be
transferred to or from memory. Since CPU speed and memory size have increased much faster than the
throughput between them, the bottleneck has become more of a problem, a problem whose severity
increases with every newer generation of CPU.
The term "von Neumann bottleneck" was coined by John Backus in his 1977 ACM Turing Award lecture.
According to Backus:
Surely there must be a less primitive way of making big changes in the store than by pushing vast
numbers of words back and forth through the von Neumann bottleneck. Not only is this tube a literal
bottleneck for the data traffic of a problem, but, more importantly, it is an intellectual bottleneck that has
kept us tied to word-at-a-time thinking instead of encouraging us to think in terms of the larger conceptual
units of the task at hand. Thus programming is basically planning and detailing the enormous traffic of
words through the von Neumann bottleneck, and much of that traffic concerns not significant data itself,
but where to find it.[13]
The performance problem can be alleviated (to some extent) by several mechanisms. Providing
a cache between the CPU and the main memory, providing separate caches with separate access paths
for data and instructions (the so-called Harvard architecture), and using branch predictor algorithms and
logic are three of the ways performance is increased. The problem can also be sidestepped somewhat by
using parallel computing, using for example the NUMA architecture—this approach is commonly
employed by supercomputers. It is less clear whether the intellectual bottleneck that Backus criticized has
changed much since 1977. Backus's proposed solution has not had a major influence.[citation
needed] Modern functional programming and object-oriented programming are much less geared towards
"pushing vast numbers of words back and forth" than earlier languages like Fortran were, but internally,
that is still what computers spend much of their time doing, even highly parallel supercomputers.
CPU (Central Processing Unit)
Also known as a processor, is an electronic circuit that executes computer programs. It is responsible for carrying out arithmetic and logic functions as well as executing instructions to other components. The components of a CPU work together, and depending on how they are made, determine exactly how fast these operations can be carried out along with how complex the operations can be.
Operation of CPU
The primary responsibility of a computer processor is to execute a sequential set of instructions that constitute a program. CPU operation can be divided into four basic steps, namely, fetch, decode, execute and write back. During the fetch step, the processor retrieves program instructions from memory. In the decode step, the instruction is broken down into parts. The instruction set architecture of the CPU defines the way in which an instruction is decoded. In the execute step, CPU performs the operation implied by the program instruction. During the write back step, the CPU writes back the results of execution, to the computer's memory.
Main Components of a CPU
1. Arithmetic Logic Unit2. Control Unit 3. Registers
Arithmetic Logic Unit: It is the component of central processing unit which contains the basic operations or set of instruction and applies them to data. As clear from the name, it performs arithmetic which includes addition, subtraction, multiplication and division and logical operations which includes compare numbers, letters and special characters.
As shown in the picture above, the accumolator is used to accumulate results. It is the place where the answers from many operations are stored temporarily before being put out to the computer's memory while the other genral-pupose registers hold data on which operations are to be performed by the ALU.
Control Unit:The component of CPU of a computer which organizes the processing of data or commands is called Control Unit. Control Unit is an internal part of the CPU which co-ordinates the input and output devices of a computer. The functions performed by the control unit vary by the internal architecture of the CPU. However basically its funtion is to directs the entire computer system to carry out stored program instructions by communicating with ALU and register. The CU uses instructions contained in Instruction resgiter in order to decide which circuit needs to be activated. Moreover it also instruct the ALU to either perform the arithmetic or logical operation.
When a program is run, one register called the program counter keeps track of which
program instruction comes next.
Register:
These are special, high-speed storage area within the Central processing unit. The data must
be represented in a register before it can be processed e.g. if two numbers are to be
multiplied, both numbers must be in registers, and the result is also placed in a register.
The number of registers that a CPU has and the size of each (number of bits) help determine
the power and speed of a CPU i.e. 32-bit CPU is one in which each register is 32 bits wide.
Therefore, each CPU instruction can manipulate 32 bits of data.
Memory In Computer
Computer data storage, often called storage or memory, refers to computer components and recording
media that retain digital dataused for computing for some interval of time. Computer data storage
provides one of the core functions of the modern computer, that of information retention. It is one of the
fundamental components of all modern computers, and coupled with a central processing unit (CPU, a
processor), implements the basic computer model used since the 1940s.
then physically removed or disconnected. It must be inserted or connected by a human operator before a
computer can access it again. Unlike tertiary storage, it cannot be accessed without human interaction.
In modern personal computers, most secondary and tertiary storage media are also used for off-line
storage. Optical discs and flash memory devices are most popular, and to much lesser extent removable
hard disk drives. In enterprise uses, magnetic tape is predominant. Older examples are floppy disks, Zip
disks, or punched cards.
System BUS
A set of conductors (wires, PCB tracks or connections in an integrated circuit) connecting the various functional units in a computer. There are busses both within the CPU and connecting it to external memory and peripheral devices. The width of the bus, i.e. the number of parallel connectors, determines the size in bits of the largest data item which it can carry. The bus width and the number of data items per second which it can transmit are one of the factors limiting a computer's performance. Most current microprocessors have 32-bit busses both internally and externally.
Some processors have internal buses which are wider than their external busses (usually twice the width) since the width of the internal bus affects the speed of all operations and has less effect on the overall system cost than the width of the external bus.
The term is almost certainly derived from the electrical engineering term "bus bar" - a substantial, rigid power supply conductor to which several connections are made. This was once written "'bus bar" as it
was a contraction of "omnibus bar" - a connection bar "for all", by analogy with the passenger omnibus - a conveyance "for all".
Data BusThe connections between and within the CPU, memory and peripherals used to carry data. Other connections are the address bus and control signals.
The width of the data bus is one of the main factors determining the processing power of a computer. Most current processor designs use a 32-bit bus, meaning that 32 bits of data can be transferred at once. Some processors have an internal data bus which is wider than their external bus in order to make external connections cheaper while retaining some of the benefits in processing power of a wider bus.
Address Bus The connections between the CPU and memory which carry the address from/to which the CPU wishes to read or write. The number of bits of address bus determines the maximum size of memory which the processor can access.
Accumulator
In a computer's central processing unit (CPU), an accumulator is a register in which
intermediate arithmetic and logic results are stored. Without a register like an accumulator, it would be
necessary to write the result of each calculation (addition, multiplication, shift, etc.) to main memory,
perhaps only to be read right back again for use in the next operation. Access to main memory is slower
than access to a register like the accumulator because the technology used for the large main memory is
slower (but cheaper) than that used for a register.
The canonical example for accumulator use is summing a list of numbers. The accumulator is initially set
to zero, then each number in turn is added to the value in the accumulator. Only when all numbers have
been added is the result held in the accumulator written to main memory or to another, non-accumulator,
CPU register.
Program counterThe program counter, or PC (also called the instruction pointer) holds either the address of the
instruction being executed, or the address of the next instruction to be executed. In most processors,
the program counter is incremented automatically after fetching a program instruction, so that
instructions are normally retrieved sequentially from memory, with certain instructions, such
as branches, jumps and subroutine calls and returns, interrupting the sequence by placing a new
value in the program counter.
Working of a simple program counter
The central processing unit (CPU) of a simple computer contains the hardware (control unit and ALU) that
executes the instructions, as they are fetched from the memory unit. Most instruction cycles[3] consist of
the CPU sending an address, on the address bus, to the memory unit, which then responds by sending
the contents of that memory location as data, on the data bus. (This is tied up with the idea of the stored-
program computer in which executable instructions are stored alongside ordinary data in the memory
unit, and handled identically by it[4]). The Program Counter (PC) is just one of the many registers in the
hardware of the CPU. It, like each of the other registers, consists of a bank of binary latches (a binary
latch is also known as a flip-flop), with one flip-flop per bit in the integer that is to be stored[5] (32 for a 32-
bit CPU, for example). In the case of the PC, the integer represents the address in the memory unit that
is to be fetched next.
Memory Address Register (MAR)
The Memory Address Register (MAR) is a CPU register that either stores the memory address from
which data will be fetched to the CPU or the address to which data will be sent and stored.
In other words, MAR holds the memory location of data that needs to be accessed. When reading from
memory, data addressed by MAR is fed into the MDR (memory data register) and then used by the CPU.
When writing to memory, the CPU writes data from MDR to the memory location whose address is stored
in MAR.
Micro operations
The operations executed on data stored in registers are called microoperations
A microoperation is an elementary operation performed on the information stored in one or more
registers • Examples are shift, count, clear, and load • Some of the digital components from before are registers that implement microoperations
REGISTER TRANSFER LOGIC
The symbolic notations used to describe the microoperations transfer among registers are called Register Transfer Language. The term Register Transfer language implies the availability of hardware logic circuit that can perform stated operations to same ot another register
A register Transfer Language is a system for expressing in symbolic form the microoperations sequence among the registers of a digital module.
– Register Transfer • Designate computer registers by capital letters to denote its function
• The register that holds an address for the memory unit is called MAR
• The program counter register is called PC
• IR is the instruction register and R1 is a processor register
• The individual flip-flops in an n-bit register are numbered in sequence from 0 to n-1
• Refer to Figure 4.1 for the different representations of a register
Designate information transfer from one register to another by R2 ← R1 • This statement implies that the hardware is available
o The outputs of the source must have a path to the inputs of the destination o The destination register has a parallel load capability
• If the transfer is to occur only under a predetermined control condition, designate it by If (P = 1) then (R2 ← R1)
or, P:R2← R1, where P is a control function that can be either 0 or 1
• Every statement written in register transfer notation implies the presence of the required hardware construction
It is assumed that all transfers occur during a clock edge transition • All microoperations written on a single line are to be executed at the same time T: R2 ← R1, R1 ← R2
Instruction cycle
An instruction cycle (sometimes called fetch-and-execute cycle, fetch-decode-execute cycle, or FDX) is the basic operation cycle of a computer. It is the process by which a computer retrieves a program instruction from its memory, determines what actions the instruction requires, and carries out those actions. This cycle is repeated continuously by thecentral processing unit (CPU), from bootup to