4t Module (1) - Computer Organization
4t Module (1) - Computer Organization
Lecture Notes on
LOGIC DESIGN AND COMPUTER ORGANIZATION
(M23BCS302)
Prepared by
NIDARSH M P
Department of AIML
LDCO Department of AIML
Workstations
• These have more computational-power than PC.
• These are used for business data-processing.
• These have large computational-power and larger storage-capacity than workstations.
• These are referred to as
→ Server at low-end and
→ Super-computers at high end.
Servers
• These have large database storage-units and can also execute requests from other computers.
• These are used in banks & educational institutions.
• These are used for very complex numerical-calculations.
• These are used in weather forecasting, aircraft design and military applications.
FUNCTIONAL UNITS
• A computer consists of 5 functionally independent main parts:
1) input, 2) memory,3) arithmetic & logic, 4) output and 5) control units.
Input Unit
• The computer accepts the information in the form of program & data through an input-device.
Eg: keyboard
• Whenever a key is pressed, the corresponding letter/digit is automatically translated into its
corresponding binary-code and transmitted over a cable to either the memory or the processor.
Memory Unit
• This unit is used to store programs & data.
• There are 2 classes of storage:
Nidarsh M P, Asst. Professor, AIML, MIT, MYSORE Page 1
LDCO Department of AIML
2) Secondary-storage is used when large amounts of data & many programs have to be
stored. Eg: magnetic disks and optical disks(CD-ROMs).
• The memory contains a large number of semiconductor storage cells(i.e. flip-flops), each
capable of storing one bit of information.
• The memory is organized so that the contents of one word can be stored or retrieved in one
basic operation.
• Memory in which any location can be reached in a short and fixed amount of time after
specifying its address is called RAM (Random Access Memory).
• Any arithmetic operation is initiated by bringing the required operand into the processor (i.e.
registers), where the operation is performed by the ALU.
Output Unit
• This unit is used to send processed-results to the outside world.
Eg: printer, graphic displays etc.
Control Unit
• This unit is used for controlling the activities of the other units (such as memory, I/O device).
• This unit sends control-signals (read/write) to other units and senses their states.
• Data transfers between processor and memory are also controlled by the control-unit through
timing-signals.
• Timing-signals are signals that determine when a given action is to take place.
• The instruction is then passed to the control-unit, which generates the timing-signals that
determine when a given action is to take place
• During the execution of an instruction, the contents of PC are updated to point to next
instruction.
• The MAR (Memory Address Register) holds the address of the memory-location to be
accessed.
• The MDR (Memory Data Register) contains the data to be written into or read out of the
addressed location.
• The contents of PC(i.e. address) are transferred to the MAR & control-unit issues Read signal
to memory.
• After certain amount of elapsed time, the first instruction is read out of memory and placed
into MDR.
• Next, the contents of MDR are transferred to IR. At this point, the instruction can be decoded
& executed.
• To fetch an operand, it's address is placed into MAR & control-unit issues Read signal. As a
result, the operand is transferred from memory into MDR, and then it is transferred from MDR
to ALU.
• If the result of this operation is to be stored in the memory, then the result is sent to the MDR.
• The address of the location where the result is to be stored is sent to the MAR and a Write
cycle is initiated.
• At some point during execution, contents of PC are incremented to point to next instruction in
the program. [The instruction is a combination of opcode and operand].
BUS STRUCTURES
• A bus is a group of lines that serves as a connecting path for several devices.
• Bus must have lines for data transfer, address & control purposes.
• Because the bus can be used for only one transfer at a time, only 2 units can actively use the
bus at any given time.
• Bus control lines are used to arbitrate multiple requests for use of the bus.
• Main advantage of single bus: Low cost and flexibility for attaching peripheral devices.
• Systems that contain multiple buses achieve more concurrency in operations by allowing 2 or
more transfers to be carried out at the same time. Advantage: better performance. Disadvantage:
increased cost.
• The devices connected to a bus vary widely in their speed of operation. To synchronize their
operational speed, the approach is to include buffer registers with the devices to hold the
information during transfers.
Buffer registers prevent a high-speed processor from being locked to a slow I/O device during
a sequence of data transfers.
PROCESSOR CLOCK
• Processor circuits are controlled by a timing signal called a clock.
• The clock defines regular time intervals called clock cycles.
• To execute a machine instruction, the processor divides the action to be performed into a
sequence of basic steps such that each step can be completed in one clock cycle.
• Let P=length of one clock cycle R=clock rate. Relation between P and R is given by R=1/P
which is measured in cycles per second.
• To achieve high performance, the computer designer must reduce the value of T, which
means reducing N and S, and increasing R.
→ The value of N is reduced if source program is compiled into fewer machine instructions.
→ The value of S is reduced if instructions have a smaller number of basic steps to perform.
→ The value of R can be increased by using a higher frequency clock.
• Care has to be taken while modifying the values since changes in one parameter may affect
the other.
Clock Rate
PIPELINING & SUPERSCALAR OPERATION
• Normally, the computer executes the instruction in sequence one by one. An improvement in
performance can be achieved by overlapping the execution of successive instructions using a
technique called pipelining.
As shown in above figure, 6 clock cycles are required to complete two operations.
• As shown in above figure, if we use pipelining & prefetching, only 4 cycles are required to
complete same two operations.
• While executing the Add instruction, the processor can read the Move instruction from
memory.
• In the ideal case, if all instructions are overlapped to the maximum degree possible, execution
proceeds at the rate of one instruction completed in each clock cycle.
• With Superscalar arrangement, it is possible to complete the execution of more than one
instruction in every clock cycle.
PERFORMANCE MEASUREMENT
• If SPEC rating=50 means that the computer under test is 50times as fast as
reference computer.
• The test is repeated for all the programs in the SPEC suite, and the geometric mean of the
results is computed.
Let SPECi be the rating for program i in the suite. The overall SPEC rating for the
computer is given by
• The memory consists of many millions of storage cells (flip-flops), each of which can store a
bit of information having the value 0 or 1 (Figure 2.5).
• Each group of n bits is referred to as a word of information, and n is called the word length.
• If 2k=number of addressable locations, then 2k addresses constitute the address space of the
computer. For example, a 24-bit address generates an address space of 224 locations (16MB).
Characters can be letters of the alphabet, decimal digits, punctuation marks and so on.
• Characters are represented by codes that are usually 8 bits long. E.g. ASCII code
• The three basic information quantities are: bit, byte and word.
• A byte is always 8 bits, but the word length typically ranges from 1 to 64 bits.
BYTE ADDRESSABILITY
• In byte addressable memory, successive addresses refer to successive byte locations in the
memory.
• If the word length is 32 bits, successive words are located at addresses 0, 4, 8. .with each
word having 4 bytes.
1) Big-endian assignment: lower byte addresses are used for the more
significant bytes of the word (Figure 2.7).
2) Little-endian: lower byte addresses are used for the less significant bytes of the word
• In both cases, byte addresses 0, 4, 8. ........are taken as the addresses of successive words in
the memory.
WORD ALIGNMENT
• Words are said to be aligned in memory if they begin at a byte address that is a multiple of
the number of bytes in a word.
• For example, if the word length is 16(2 bytes), aligned words begin at byte addresses 0, 2, 4
. . . . . And for a word length of 64, aligned words begin at byte addresses 0, 8, 16. . . . . . .
• Words are said to have unaligned addresses, if they begin at an arbitrary byte address.
• A number usually occupies one word. It can be accessed in the memory by specifying its
word address. Similarly, individual characters can be accessed by their byte address.
→ a special control character with the meaning "end of string" can be used as the last
character in the string, or
→ a separate memory word location or processor register can contain a number indicating the
length of the string in bytes.
MEMORY OPERATIONS
• Two basic operations involving the memory are: Load(Read/Fetch) and Store(Write).
• The Load operation transfers a copy of the contents of a specific memory location to the
processor. The memory contents remain unchanged.
• The Store operation transfers the information from the processor register to the specified
memory location. This will destroy the original contents of that memory location.
1) Data transfers between the memory and the processor registers (MOV, PUSH, POP,
XCHG),
2) Arithmetic and logic operations on data (ADD, SUB, MUL, DIV, AND, OR, NOT),
• For example,
R<-[LOC] means that the contents of memory location LOC are transferred into processor
register R1 (The contents of a location are denoted by placing square brackets around the
name of the location). R3<-[R1]+[R2] indicates the operation that adds the contents of
registers R1 and R2 ,and then places their sum into register R3.
• For example,
Move LOC, R1; This instruction transfers data from memory-location LOC to processor- register
R1. The contents of LOC are unchanged by the execution of this instruction, but the old contents
of register R1 are overwritten.
Add R1, R2, R3; This instruction adds 2 numbers contained in processor-registers R1 and R2,
and places their sum in R3.
• A computer performs its task according to the program stored in memory. A program is a
collection of instructions which tell the processor to perform a basic operation like addition,
reading from keyboard etc.
• Possible locations that may be involved in data transfers are memory locations, processor
registers or registers in the I/O subsystem.
• C=A+B; This statement is a command to the computer to add the current values of the two
variables A and B, and to assign the sum to a third variable C.
• When the program is compiled, each variable is assigned a distinct address in memory.
• The contents of these locations represent the values of the three variables
• The statement C<-[A]+[B] indicates that the contents of memory locations A and B are fetched
from memory, transferred to the processor, sum is computed and then result is stored in memory
location C.
Three-Address Instruction
• The instruction has general format
• For example, Add A, B, C; operands A and B are called the source operands, C is called the
destination operand, and Add is the operation to be performed.
Two-Address Instruction
• The instruction has general format
• When the sum is calculated, the result is sent to the memory and stored in location B, replacing
the original contents of this location. This means that operand B is both a source and a
destination.
Add A, C
One-Address Instruction
• For example, Add A ; Add the contents of memory location A to the contents of the
accumulator register and place the sum back into the accumulator.
• Load A; This instruction copies the contents of memory location A into the accumulator and
Store A; This instruction copies the contents of the accumulator into memory location
A.
The operation C<-[A]+[B] can be performed by executing the sequence of instructions
Load A
• The operand may be a source or a destination depending on the instruction. In the Load
instruction, address A specifies the source operand, and the destination location, the accumulator,
is implied. On the other hand, C denotes the destination location in the Store instruction, whereas
the source, the accumulator, is implied.
Zero-Address Instruction
• The locations of all operands are defined implicitly. The operands are stored in a structure
called pushdown stack. In this case, the instructions are called zero-address instructions.
• Access to data in the registers is much faster than to data stored in memory locations because
the registers are inside the processor.
are generalizations of the Load, Store and Add Instructions for the single-accumulator case,
in which register Ri performs the function of the accumulator.
• In processors where arithmetic operations as allowed only on operands that are in processor
registers, the C=A+B task can be performed by the instruction sequence
1) Initially, the address of the first instruction is loaded into PC (Program counter is a
register which holds the address of the next instruction to be executed)
2) Then, the processor control circuits use the information in the PC to fetch and execute
instructions, one at a time, in the order of increasing addresses. This is called straight-line
sequencing (Figure 2.8)
i) In fetch phase, the instruction is fetched from the memory location (whose address is in the
PC) and placed in the IR of the processor
BRANCHING
• Consider the task of adding a list of n numbers (Figure 2.10).
• The loop is a straight line sequence of instructions executed as many times as needed. It
starts at location LOOP and ends at the instruction Branch>0.
• During each pass through this loop, the address of the next list entry is determined, and that
entry is fetched and added to R0.
• Register R1 is used as a counter to determine the number of times the loop is executed.
Hence, the contents of location N are loaded into register R1 at the beginning of the program.
• Within the body of the loop, the instruction Decrement R1 reduces the contents of R1 by 1
each time through the loop.
• Then Branch instruction loads a new value into the program counter. As a result, the
processor fetches and executes the instruction at this new address called the branch target.
CONDITION CODES
• The processor keeps track of information about the results of various operations. This is
accomplished by recording the required information in individual bits, called condition code
flags.
• These flags are grouped together in a special processor-register called the condition code
register (or statue register).
• The different ways in which the location of an operand is specified in an instruction are
referred to as addressing modes (Table 2.1).
• Variables & constants are the simplest data-types and are found in almost every computer
program.
Register Mode
• The operand is the contents of a register.
• The name (or address) of the register is given in the instruction.
• Registers are used as temporary storage locations where the data in a register are accessed.
• For example, the instruction,
Immediate Mode
• The operand is given explicitly in the instruction.
• For example, the instruction,
• Clearly, the immediate mode is only used to specify the value of a source-operand.
• In this case, the instruction does not give the operand or its address explicitly; instead, it
provides information from which the memory-address of the operand can be determined. We
refer to this address as the effective address(EA) of the operand.
Indirect Mode
• The register (or memory-location) that contains the address of an operand is called a
pointer. {The indirection is denoted by ( ) sign around the register or memory-location}.
E.g: Add (R1),R0;The operand is in memory. Register R1 gives the effective-address(B) of the
operand. The data is read from location B and added to contents of register R0
* To execute the Add instruction in fig (a), the processor uses the value which is in register R1,
as the EA of the operand.
* It requests a read operation from the memory to read the contents of location B. The value
read is the desired operand, which the processor adds to the contents of register R0.
* Indirect addressing through a memory location is also possible as shown in fig (b). In this case,
the processor first reads the contents of memory location A, then requests a second read operation
using the value B as an address to obtain the operand
• In above program, Register R2 is used as a pointer to the numbers in the list, and the
operands are accessed indirectly through R2.
• The first two instructions in the loop implement the unspecified instruction block starting at
LOOP.
• The first time through the loop, the instruction Add (R2), R0 fetches the operand at location
NUM1 and adds it to R0.
• The second Add instruction adds 4 to the contents of the pointer R2, so that it will contain the
address value NUM2 when the above instruction is executed in the second pass through the loop.
• A different kind of flexibility for accessing operands is useful in dealing with lists and arrays.
• The contents of the index-register are not changed in the process of generating the effective-
address.
→ as an explicit number or
→ as a symbolic-name representing a numerical value.
* Fig(a) illustrates two ways of using the Index mode. In fig(a), the index register, R1, contains
the address of a memory location, and the value X defines an offset(also called a displacement)
from this address to the location where the operand is found.
• Another version of the Index mode uses 2 registers which can be denoted as (Ri, Rj)
• This form of indexed addressing provides more flexibility in accessing operands, because
both components of the effective address can be changed.
• Another version of the Index mode uses 2 registers plus a constant, which
can be denoted as X(Ri, Rj)
• This added flexibility is useful in accessing multiple components inside each item in a record,
where the beginning of an item is specified by the (Ri, Rj) part of the addressing-mode. In other
words, this mode implements a 3-dimensional array.
RELATIVE MODE
• This is similar to index-mode with an exception: The effective address is determined using
the PC in place of the general purpose register Ri.
• X(PC) denotes an effective-address of the operand which is X locations above or below the
current contents of PC.
• Since the addressed-location is identified "relative" to the PC, the name Relative mode is
associated with this type of addressing.
• An instruction such as
• The following 2 modes are useful for accessing data items in successive locations in the
memory.
• The effective-address of operand is the contents of a register specified in the instruction (Fig:
2.16).
• After accessing the operand, the contents of this register are automatically incremented to
point to the next item in a list.
• The contents of a register specified in the instruction are first automatically decremented and
are then used as the effective address of the operand.
• These 2 modes can be used together to implement an important data structure called a stack.
• The set of rules for using the mnemonics in the specification of complete instructions and
programs is called the syntax of the language.
• The user program in its original alphanumeric text formal is called a source program, and the
assembled machine language program is called an object program.
ADD #5,R3 ;Adds the number 5 to the contents of register R3 and puts the
result back into register R3.
ASSEMBLER DIRECTIVES
• EQU informs the assembler about the value of an identifier (Figure: 2.18).
Ex: SUM EQU 200 ; This statement informs the assembler that the name SUM
should be replaced by the value 200 wherever it appears in the program.
• ORIGIN tells the assembler about the starting-address of memory-area to place the data
block.
• DATAWORD directive tells the assembler to load a value (say 100) into
the location (say 204). Ex: N DATAWORD 100
• RESERVE directive declares that a memory-block of 400 bytes is to be reserved for data and
that the name NUM1 is to be associated with address 208.
• RETURN directive identifies the point at which execution of the program should be
terminated.
• Any statement that makes instructions or data being placed in a memory-location may be
given a label.
• The label(say N or NUM1) is assigned a value equal to the address of that location.
→ The Operation field contains the OP-code mnemonic of the desired instruction or
assembler → The
• Assembler program
• As the assembler scans through a source-program, it keeps track of all names of numerical-
values that correspond to them in a symbol-table. Thus, when a name appears a second time, it
is replaced with its value from the table. Hence, such an assembler is called a two-pass assembler.
• Debugger program is used to help the user find the programming errors.
NUMBER NOTATION
When dealing with numerical values, it is often convenient to use familiar decimal notation.
Example: consider the number 93, which is represented by the 8- bit binary number 01011101.
If this value is to be used as an immediate operand, it can be given as a decimal number, as the instruction
ADD #93,R1
ADD #%01011101,R1
Binary numbers can be written more compactly as hexadecimal number. In hexadecimal representation ,
the decimal value 93 becomes 5D.
In assembly language, a hex representation is often identified by a dollar sign prefix. Thus we would write,
ADD #$5D,R1.