Top Banner
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.
20

CSO Unit 1

Nov 28, 2014

Download

Documents

Rishabh Shukla
Welcome message from author
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
Page 1: CSO Unit 1

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.

Page 2: CSO Unit 1

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

Page 3: CSO Unit 1

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.

Page 4: CSO Unit 1

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.

Page 5: CSO Unit 1

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. 

Page 6: CSO Unit 1

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.

Page 7: CSO Unit 1
Page 8: CSO Unit 1

Primary storage (or main memory or internal memory), often referred to simply as memory, is the

only one directly accessible to the CPU. The CPU continuously reads instructions stored there and

executes them as required. Any data actively operated on is also stored there in uniform manner.

Historically, early computers used delay lines, Williams tubes, or rotating magnetic drums as primary

storage. By 1954, those unreliable methods were mostly replaced by magnetic core memory. Core

memory remained dominant until the 1970s, when advances in integrated circuit technology

allowed semiconductor memory to become economically competitive.

This led to modern random-access memory (RAM). It is small-sized, light, but quite expensive at the

same time. (The particular types of RAM used for primary storage are also volatile, i.e. they lose the

information when not powered).

Secondary storage (also known as external memory or auxiliary storage), differs from primary storage in

that it is not directly accessible by the CPU. The computer usually uses its input/output channels to

access secondary storage and transfers the desired data using intermediate area in primary storage.

Secondary storage does not lose the data when the device is powered down—it is non-volatile. Per unit, it

is typically also two orders of magnitude less expensive than primary storage. Consequently, modern

computer systems typically have two orders of magnitude more secondary storage than primary storage

and data is kept for a longer time there.

In modern computers, hard disk drives are usually used as secondary storage. The time taken to access

a given byte of information stored on a hard disk is typically a few thousandths of a second, or

milliseconds. By contrast, the time taken to access a given byte of information stored in random access

memory is measured in billionths of a second, or nanoseconds. This illustrates the significant access-time

difference which distinguishes solid-state memory from rotating magnetic storage devices: hard disks are

typically about a million times slower than memory. Rotating optical storage devices, such

as CD and DVD drives, have even longer access times. With disk drives, once the disk read/write head

reaches the proper placement and the data of interest rotates under it, subsequent data on the track are

very fast to access.

Tertiary storage or tertiary memory,[4] provides a third level of storage. Typically it involves a

robotic mechanism which will mount (insert) and dismount removable mass storage media into a storage

device according to the system's demands; this data is often copied to secondary storage before use. It is

primarily used for archiving rarely accessed information since it is much slower than secondary storage

(e.g. 5–60 seconds vs. 1-10 milliseconds). This is primarily useful for extraordinarily large data stores,

accessed without human operators. Typical examples include tape libraries and optical jukeboxes.

Off-line storage is a computer data storage on a medium or a device that is not under the control

of a processing unit.[5] The medium is recorded, usually in a secondary or tertiary storage device, and

Page 9: CSO Unit 1

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

Page 10: CSO Unit 1

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

Page 11: CSO Unit 1

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.

Page 12: CSO Unit 1

– 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

Page 13: CSO Unit 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

Page 14: CSO Unit 1

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

when the computer is shut down.

Page 15: CSO Unit 1

Instruction cycle

Each computer's CPU can have different cycles based on different instruction sets, but will be similar to

the following cycle:

[edit]1. Fetch the instruction

The next instruction is fetched from the memory address that is currently stored in the Program

Counter (PC), and stored in the Instruction register (IR). At the end of the fetch operation, the PC points to

the next instruction that will be read at the next cycle.

Clock Pulse: T0-T1

[edit]2. Decode the instruction

The decoder interprets the instruction. During this cycle the instruction inside the IR (instruction register)

gets decoded.

Clock Pulse: T2

[edit]3. Read the effective address

In case of a memory instruction (direct or indirect) the execution phase will be in the next clock pulse. If

the instruction has an indirect address, the effective address is read from main memory, and any required

data is fetched from main memory to be processed and then placed into data registers(Clock Pulse: T3). If

the instruction is direct, nothing is done at this clock pulse. If this is an I/O instruction or a Register

instruction, the operation is preformed (executed) at clock Pulse: T3.

Clock Pulse: T3

[edit]4. Execute the instruction

The CU passes the decoded information as a sequence of control signals to the relevant function units of

the CPU to perform the actions required by the instruction such as reading values from registers, passing

them to the ALU to perform mathematical or logic functions on them, and writing the result back to a

register. If the ALU is involved, it sends a condition signal back to the CU.

Clock Pulse: T3-T6 (Up to T6)

The result generated by the operation is stored in the main memory, or sent to an output device. Based

on the condition of any feedback from the ALU, Program Counter may be updated to a different address

from which the next instruction will be fetched.

The cycle is then repeated.

Page 16: CSO Unit 1