Академический Документы
Профессиональный Документы
Культура Документы
It describes the function and design of the various units of digital computers that store
and process information.
It also deals with the units of computer that receive information from external sources
and send computed results to external destinations.
“Computer Organization” & “Computer Architecture”
“Computer Organization” and “Computer Architecture” are the terms used in
describing digital computer systems.
Computer architecture deals with the instruction sets, address fields, operation
codes, addressing modes, effective utilization of I/O mechanisms and such other
aspects which would interest the users of computers.
Computer organization include hardware details such as generation of control
signals, interface between the computer and peripherals, memory technologies used,
modular design, flow of data, control mechanisms and so on.
In brief, a programmer is generally more concerned about the architectural features
and a designer of computer systems is more concerned about the organizational
aspects.
Computer types
Digital computer : It is a fast electronic calculating machine that accepts digitized input
information, processes it according to a list of internally stored instructions, and produces the
resulting output information.
(1) Personal computer: It is the most common form of desktop computers. Desktop
computers have processing and storage units, visual display and audio output units, and a
keyboard that can all be located easily on a home or office desk. The storage media include
hard disks, CD-ROMs and diskettes.
Portable notebook computers are a compact version of the personal computers with all of
these components packaged into single unit the size of a thin briefcase.
(2) Workstations: Work stations with high resolution graphics input/output capability,
although still retaining the dimensions of desktop computers, have significantly more
computational power than personal computers. Workstations are often used in engineering
applications, especially for interactive design works.
(3) Enterprise systems or mainframes: These are used for business data processing in
medium to large corporations that require much more computing power and storage capacity
than workstations can provide.
(4) Servers: Servers contain sizable database storage units and are capable of handling large
volumes of requests to access the data. The Internet and its associated servers have become a
dominant world wide source of all types of information.
(5) Super Computers: Super Computers are used for the large scale numerical calculations
required in applications such as weather forecasting, aircraft design and simulation.
Functional units
A computer consists of five functionally independent main parts:
Input unit
Memory unit
Arithmetic and logic unit (ALU)
Output unit
Control unit
The structure of a digital computer is shown below
Operation of a computer
The computer accepts information in the form of programs and data through an input
unit and stores it in the memory.
Information stored in the memory is fetched, under program control, into an
arithmetic and logic unit, where it is processed.
Processed information leaves through an output.
All activities inside the machine are directed by the control unit.
Input unit
Computers accept coded information through input units.
The most well known input device is key board.
Whenever a key is pressed, the corresponding letter or digit is automatically translated
into its corresponding binary code and transmitted over a cable to either the memory
or the processor.
Memory unit
The function of the memory is to store programs and data. There are two classes of storage,
called primary and secondary.
Primary storage is a fast memory that operates at electronic speeds. Programs must stay in
memory while they are being executed. The memory contains a large number of
semiconductor storage cells, each capable of storing one bit of information.
Random access memory: Memory in which any location can be reached in a short and fixed
amount of time after specifying its address is called random access memory (RAM).
The time required to access one word is called the memory access time.
Cache memory: The small, fast, Ram units are called caches. They are tightly coupled with
the processor and are often contained on the same integrated circuit chip to achieve high
performance.
Main memory: The largest and slowest unit is referred to as the main memory.
Secondary storage: Although primary storage is essential, it tends to be expensive.
Thus additional, cheaper, secondary storage is used when large amounts of data and many
programs have to be stored, particularly for information that is accessed infrequently.
A wide selection of secondary storage devices is available, including magnetic disks,tapes
and optical disks (CD-ROMs)
Arithmetic and logic unit (ALU)
Most computer operations are executed in the arithmetic and logic unit (ALU) of the
processor.
For example, Suppose two numbers are to be added. They are brought into the processor, and
the actual addition is carried out by the ALU.
The sum may then be stored in the memory or retained in the processor for immediate use.
When operands are brought into the processor, they are stored in high-speed storage elements
called registers.
Output unit
The output unit is the counterpart of input unit. Its function is to send processed results to the
outside world. The most familiar example of such a device is a printer.
Some units, such as graphic displays, provide an input function and an output function. The
dual role of such units is the reason for using the single name I/O unit in many cases.
Control unit
The memory, arithmetic and logic, and I/O units store and process information and perform
input and output operations. The operations of these units are coordinated by control unit.
The control unit is effectively the nerve center that sends control signals to other units and
senses their states.
Basic operational concepts
To perform a given task, an appropriate program consisting of a list of instructions is stored
in the memory.
Individual instructions are brought from the memory into the processor, which execute the
specified operations. Data to be used as operands are also stored in the memory.
Consider, the two instruction sequence
Load LOCA, R1
Add R1, R0
The first of these instructions transfers the contents of memory location LOCA into processor
register R1, and second instruction adds the contents of register R1 as well as those of R0 and
places the sum into R0.
Note that this destroys the former contents of R1 as well as R0, where as the original contents
of memory location LOCA are preserved.
Connections between processor and memory
The operating system is a collection of routines that is used to control the sharing of
and interaction among various computer units as they execute application programs. The OS
routines perform the tasks required to assign computer resources to individual application
programs. These tasks include assigning memory and magnetic disk space to program and
data files, moving data between memory and disk units, and handling I/O operations.
Let us consider a system with one processor, one disk, and one printer. Assume that
part of the program’s task involves reading a data file from the disk into the memory,
performing some computations on the data, and printing the results.
A convenient way to illustrate the sharing of the processor time is by a time-line
diagram, as shown in the following diagram.
During the time period t0 to t1, OS routine initiates loading the application program from
disk to memory, waits until the transfer is completed, and then passes execution control to the
application program. A similar pattern of activity occurs during period t2 to t3 and period t4
to t5, when the operating system transfers the data file from the disk and prints the results. At
t5, the operating system may load and execute another application program.
The computer resources can be used more efficiently if several application programs are to be
processed. Notice that the disk and the processor are idle during most of the time period t4 to
t5. The operating system can load the next program to be executed into the memory from the
disk while the printer is operating. Similarly, during t0 to t1, the operating system can arrange
to print the previous program’s results while the current program is being loaded from the
disk.
Thus, the operating system manages the concurrent execution of several application programs
to make the best possible use of computer resources. This pattern of concurrent execution is
called multiprogramming or multitasking.
Translators
Compiler:
A compiler converts high level languages program into a machine level languages
program (byte code). The compiler takes a high level languages program as input and checks
the syntax errors of each statement and generates object code (Machine languages equivalent
of source code).
After compilation a linker combined our object code with other required object codes
and finally gives executable file.
A loader copies this executable file into memory and executed by the microprocessor.
The high level languages are platform independent. So a single compiler that
produces different objects code for different platforms.
Assembler:
An assembler converts assembly languages program into a machine language program (byte
code).Assembler is less complex that that compilers. Because each assembles language
instruction corresponds to anon unique machine code instruction.
The assembler takes an assembly languages program as input and converts into object
code. After it follows the linking and loading procedures for execution. Some small
applications written in assembly languages do not need linking other object files directly the
object file get after assembly can be executed.
Interpreters:
An interpreter decodes each line of source code to machine language. If any errors occur
while interpreting the code, immediately the error is thrown. Interpreters are faster in
debugging the code. It consumes less memory space. Some of the famous programming
languages using interpreters are Python and Ruby. The interpreter procedure is shown in the
following figure:
Linker
A linker is a computer program that takes one or more object files generated by
a compiler and combines them into one, executable program. Computer programs are usually
made up of multiple modules that span separate object files, each being a compiled computer
program. The program as a whole refers to these separately-compiled object files using
symbols. The linker combines these separate files into a single, unified program; resolving
the symbolic references as it goes along.
Dynamic linking is a similar process, available on many operating systems, which postpones
the resolution of some symbols until the program is executed. When the program is run,
these dynamic link libraries are loaded as well. Dynamic linking does not require a linker.
The linker bundled with most Linux systems is called ld;
Loaders
A loader is the part of an operating system that is responsible for
loading programs and libraries. It is one of the essential stages in the process of starting a
program, as it places programs into memory and prepares them for execution.
Loading a program involves reading the contents of the executable file containing the
program instructions into memory, and then carrying out other required preparatory tasks to
prepare the executable for running.
Once loading is complete, the operating system starts the program by passing control
to the loaded program code.
All operating systems that support program loading have loaders, apart from highly
specialized computer systems that only have a fixed set of specialized programs.
Embedded systems typically do not have loaders, and instead the code executes directly from
ROM.
In order to load the operating system itself, as part of booting, a specialized boot
loader is used. In many operating systems the loader is permanently resident in memory,
although some operating systems that support virtual memory may allow the loader to be
located in a region of memory that is page table.
Text editor: Another important system program that all programmers use is a text editor. It is
used for entering and editing application programs. The user of this program interactively
execute commands that allow statements of a source program entered at a keyboard to be
accumulated in a file.
Computer Levels of Programming Languages:
Language Categories: Computer programming languages are divided into three type
categories.
Multiprocessors
Large computer systems may contain a number of processor units, in which case they
are called multiprocessor systems.
These systems either execute a number of different application tasks in parallel, or
they execute subtasks of a single large task in parallel.
All processors usually have access to all of the memory in such systems, and the term
shared-memory multiprocessor systems is often used to make this clear.
The high performance of these systems comes with much increased complexity and
cost. In addition to multiple processors and memory units, cost is increased because of
the need for more complex interconnection networks.
Multi-computers
In contrast to multiprocessor systems, it is possible to use an interconnected group of
complete computers to achieve high total computational power.
The computers normally have access only to their own memory units. When the
tasks they are executing need to communicate data, they do so by exchanging
messages over a communication network.
This property distinguishes them from shared-memory multiprocessors, leading to the
name message-passing multi- computers.
Data Representation
Data types : The data types found in the registers of digital computers are classified into three
categories.
1) Numbers used in arithmetic computations.
2) Letters used in data processing.
3) Other symbols used for specific purpose.
All types of data, except binary numbers, are represented in computer registers in binary-
coded form.
Number systems
A number system of base (or radix) r, uses r distinct symbols for its digits.
Base 10 uses 10 symbols (Decimal system). 0 1 2 3 4 5 6 7 8 9
The number 892.5 is 8 (10)2 + 9(10)1 + 2 (10)0 + 5 (10)-1
Common base values
Binary : 0,1
Octal : 0,1,2,3 4,5,6,7
Hexadecimal : 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , A , B , C , D , E , F A,B,C,D,E,F
correspond to the decimal numbers 10,11,12,13,14,15 respectively.
Convert to decimal
(101101)2 = 1(25) + 0(24) + 1(23) + 1(22) + 0(21) + 1(20)
= (45)10
(672.4)8 = 6(82)+7 (81)+ 2 (80) + 7(80) + 4.(8-1)
= 6(64) + 7(8) + 2(1) + 4 (1/8)
= (442.5)10
(FADE)16 = 15.(16)3+10.(16)2+13.(16)1+14.(16)0
= 15.(4096)+10.(256)+13.(16) + 14
= (64222)10
(DEAF)16= (57007)10
Decimal integer to base r
Repeatedly divide decimal integer by r and collect reminders
First remainder a is ar0
Second remainder b is br1 and so on
(11)10 = (1011)2
11/2 = 5 remainder 1
5/2 = 2 remainder 1
2/2 = 1 remainder 0
1/2 = 0 remainder 1
(11)10 = (1011)2
Decimal fraction to base r
Repeatedly multiply decimal fraction by r and collect integers.
First integer a is a.r -1.
Second integer b is b.r-2 and so on.
Ex. (.375)10 = (.011)2
(.375) /2 = 0 . 750
(.750)/ 2 = 1 . 500
(.500)/ 2 = 1 . 000
(.375)10 = (.011)2
Binary Coded Decimal (BCD) system
Need 4 bits to represent decimal digits
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
Alphanumeric Character Set
Need codes to represent every character
Lectures of the alphabet A B C a b c
Special symbols $@%*({[
Numbers 0 1 2
ASCII (American Standard Code for Information Interchange) dominates 7-bit
code Truncate 3 left bits to get BCD value for numbers
EBCDIC (Extended BCD Interchange Code) still used on IBM mainframes.
(r - 1)’s Complement
Number N in base r having n digits
Complement of N is (rn - 1) – N
9’s complement for base 10
Complement of 1000 = (104 - 1) -1000 = 8999
Complement of 1234 = 9999 – 1234 = 8765
1’s complement for base 2
Complement of 1000 = (24 - 1) – 1000 = 0111
Complement of 10110 = 11111 – 10110 = 01001
Complement of 0 = (21 - 1) - 0 = 1
r’s Complement
Number N is base r having n digits
r’s Complement of N = rn – N for N ≠0, else 0
Add 1 to ( r– 1)’s complemented value of N.
Gray code
Only one bit flip flops for each successive number in the sequence.
The advantage of Gray code over straight binary numbers is that the Gray code
changes by only one bit as it sequences from one number to the next.
In other words, the change from any number to the next in sequence is recognized by
a change of only one bit from 0to1 or from 1 to 0.
A typical application of the Gray code occurs when the analog data is represented by
the continuous change of a shaft position.
The shaft is partitioned in to segments with each segment is assigned a number.
If adjacent segments are made to correspond to adjacent gray code numbers,
ambiguity is reduced when the shaft position is in the line that separates any two
segments.
Error detection codes
Binary information transmitted through some form of communication medium is
subject to external noise that could change bits from 1 to 0, and vice versa.
An error detection code is a binary code that detects digital errors during
transmission.
The most common error detection code used is the parity bit.
A parity bit is an extra bit included with a binary message to make the total number
of 1’s either odd or even.
A message of three bits and two possible parity bits is shown below.
The P(odd) bit is chosen in such a way as to make sum of 1’s (all four bits) odd.
The P(even) bit is chosen to make sum of all 1’s even.
In either case the sum is taken over the message and the P bit.
At the sending end, the message is applied to a parity generator, where the required
parity bit is generated.
The message, including the parity bit, is transmitted to its destination.
At the receiving end, all the incoming bits are applied to a parity checker that checks
the proper parity adopted (odd or even).
An error is detected if the checked parity does not conform to the adopted parity.
The parity method detects the presence of one, three, or any odd number of errors.An
even number of errors is not detected.
The even- parity scheme has disadvantage of having a bit combination of all 0’s,
while in the odd parity there is always one bit that is 1.
Note that P(odd) is the complement of P(even)
MEMORY LOCATIONS & ADDRESSES:
Memory is a storage device in computers. It stores information like numbers, characters,
operands and instructions.
Before, we are going to learn about memory locations and address. We need to know about
memory – The memory consists millions of storage cells, each cell stores a bit of information
i.e. the value 0 or 1.
The cell stores the value 0 or 1 which is small amount of information, so it is difficult
to handle individual cells.
So, The general approach to follow is store information in groups of fixed size.
The memory is organized so that a group of n bits to store or retrieve in a single
operation.
Each group of n bits is referred to as a word of information.
Here n is called memory word length.
The memory of computer systematically represented as collection of words as shown
below.
Memory Words
Modern computers have word length of 16 to 64 bits.
Example:-
A computer memory word of 32 bits stores 4 ASCII characters each ASCII character takes 8
bits.
In the same way a computer memory word 32 bits also stores a number in 2’s complement
form.
A unit of 8 bits is called byte.
Accessing the memory to store or retrieve a single item of information, either a word
or a byte, required distinct name or address for each item location.
It is customary to use numbers from 0 to 2k-1 for some suitable value k, as the address
of successive locations in the memory.
The memory with 2k address is called address space and the memory can have up to
2k addressable locations.
Example:-
A 24 bit address generates 224 address space and 16,777,216 memory locations.
BYTE ADDRESSABILITY
The memory divide into successive n bit memory words. Each memory word consists of
successive memory locations or addresses. But, in modern computers we assign a address for
each byte in a memory word. This assignment to memory is called byte addressable memory.
Example:-
The name big-endian is used when lower byte addresses are used for the more significant
bytes (the leftmost bytes) of the word.
The name little-endian is used for the opposite ordering, where the lower byte addresses are
used for the less significant bytes (the rightmost bytes) of the word.
In addition to specifying the address ordering of bytes within a word, it is also necessary to
specify the labelling of bits within a byte or a word. The same ordering is also used for
labelling bits within a byte, that is, b7, b6, …., b0, from left to right.
WORD ALIGNMENT:-
In the case of a 32-bit word length, natural word boundaries occur at addresses 0, 4, 8, …, as
shown in above fig. We say that the word locations have aligned addresses. in general, 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. The memory of bytes in a word is a power of 2. Hence, if the
word length is 16 (2 bytes), aligned words begin at byte addresses 0,2,4,…, and for a word
length of 64 (23 bytes), aligned words begin at bytes addresses 0,8,16 ….
There is no fundamental reason why words cannot begin at an arbitrary byte address. In that
case, words are said to have unaligned addresses. While the most common case is to use
aligned addresses, some computers allow the use of unaligned word addresses.
Accessing Numbers, Characters and Character Strings:
- A number usually occupies one memory word. It can be accessed in the memory by
specifying the address.
Ex: an 8 bit memory word stores a number 5
- In the same way individual character can be accessed by their byte address.
Ex: The ascii decimal value of A is 65 and binary number 0100 0001
- Characters string of variable length. The beginning of the string is indicated by giving
the address of the byte containing its first character and successive location of
successive characters.
- End of the string represented by using special character or special memory word
location or processor register can contain a number indicating length of the string in
bytes.
Ex: “hello” string storing into the memory as shown below.
Memory Operations:
Whatever the instruction executing in the processor either data operand or program
instruction, the program controller transfers those from memory to processor and vice
versa.
There are two basic operations we have to perform this.
a) Load
b) Store
Load/Read/Fetch
This operation transfers a copy of the contents memory to processor.
To start Load operation the processor send a address of the desired location tot
the memory and request to read its contents.
The memory reads data stored at that address and send them to the processor.
In this operation memory contents are not destroyed.
Store/Write
The Store operation transfers an item of information from the processor to a
specific memory location.
It destroying former contents of that location.
The processor sends the address of the desired location to the memory together
with data to be written into the location.
Note: The data transfer may be one memory word or one byte for single operation.
2. Arithmetic Operations
1. Addition of two 8-bit numbers
2. Subtraction of two 8-bit numbers
3. Increment/ Decrement a 8-bit number
Example Arithmetic Operations / Instructions
4.Branching Operations
These operations are used to control the flow of program execution
1.Jumps
• Conditional jumps
• Unconditional jumps
2.Call & Return
• Conditional Call & Return
• Unconditional Call & Return
Example Branching Operations / Instructions
By using these names we can perform operations. For example to read the contents of location into a
register R1 [LOC]
another example
R3 [R1] + [R2]
The operation is add the contents of R1,R2 and store into R3.
Addressing Modes:
The term addressing modes refers to the way in which the operand of an instruction is
specified. Information contained in the instruction code is the value of the operand or the
address of the result/operand.
The different ways in which the location of an operand is specified in an instruction is
referred as addressing modes.
Immediate
Register
Direct
Indirect
Displacement (Indexed)
Auto Increment mode
Auto Decrement mode
Immediate:
Instruction format:
Displacement (Indexed):
Autoincrement mode – the effective address of the operand is the contents of a register
specified in the instruction. After accessing the operand, the contents of this register are
automatically to point to the next item in a list.
(Ri)+
Autodecrement mode – the contents of a register specified in the instruction are first
automatically decremented and are then used as the effective address of the operand.
-(Ri)
Example:
From the above diagram, We will see that input operation is done in separate block
and output in separate block.
The operation of reading a character code is from the keyboard to the processor.
Striking a key stores the corresponding character code in 8 bit buffer register
associated with keyboard. This is called DATAIN register.
To inform about that the status control flag SIN is set to 1.
The program controller checks SIN is 1 and processor read that character and it clear
SIN to 0.
The operation of display from the processor a buffer register DATAOUT and status
flag SOUT used.
When SOUT equals to 1, the display is ready to receive a character and the processor
send a character to DATAOUT.
Note: The buffer registers DATAIN and DATAOUT and status flags SIN and SOUT are prat
of hardware circuitry commonly known as device interface. This circuit connected through
bus.
Memory mapped I/O:
In this I/O operation some memory address values are used to refer to peripherals
device buffers registers, such as DATAIN and DATAOUT.
The status flags SIN and SOUT are automatically cleared when the buffer register
DATAIN and DATAOUT are referenced respectively.
Here two DATA register two address locations. In the same way status flags also two
distinct addresses.
Let us assume that bit b3 the status bit the following read and write operation by using
memory mapped I/O.
The Call instruction is just a special branch instruction that performs the following
operations
Subroutine nesting can be carried out to any depth. Eventually, the last subroutine called
completes its computations and returns to the subroutine that called it. The return address
needed for this first return is the last one generated in the nested call sequence. That is,
return addresses are generated and used in a last-in-first-out order. This suggests that the
return addresses associated with subroutine calls should be pushed onto a stack. A particular
register is designated as the stack pointer, SP, to be used in this operation. The stack pointer
points to a stack called the processor stack. The Call instruction pushes the contents of the
PC onto the processor stack and loads the subroutine address into the PC. The Return
instruction pops the return address from the processor stack into the PC.
The purpose of the subroutines is to add a list of numbers. Instead of passing the actual list
entries, the calling program passes the address of the first number in the list. This technique
is called passing by reference. The second parameter is passed by value, that is, the actual
number of entries, n, is passed to the subroutine.
THE STACK FRAME:- Now, observe how space is used in the stack in the example.
During execution of the subroutine, six locations at the top of the stack contain entries that
are needed by the subroutine. These locations constitute a private workspace for the
subroutine, created at the time the subroutine is entered and freed up when the subroutine
returns control to the calling program. Such space is called a stack frame. Fig a A subroutine
stack frame example.
The above figure shows an example of a commonly used layout for information in a stack
frame. In addition to the stack pointer SP, it is useful to have another pointer register, called
the frame pointer (FP), for convenient access to the parameters passed to the subroutine and
to the local memory variables used by the subroutine. These local variables are only used
within the subroutine, so it is appropriate to allocate space for them in the stack frame
associated with the subroutine. We assume that four parameters are passed to the subroutine,
three local variables are used within the subroutine, and registers R0 and R1 need to be saved
because they will also be used within the subroutine.
The pointers SP and FP are manipulated as the stack frame is built, used, and dismantled for a
particular of the subroutine. We begin by assuming that SP point to the old top-of-stack
(TOS) element in fig b. Before the subroutine is called, the calling program pushes the four
parameters onto the stack. The call instruction is then executed, resulting in the return address
being pushed onto the stack. Now, SP points to this return address, and the first instruction of
the subroutine is about to be executed. This is the point at which the frame pointer FP is set to
contain the proper memory address. Since FP is usually a general-purpose register, it may
contain information of use to the Calling program. Therefore, its contents are saved by
pushing them onto the stack. Since the SP now points to this position, its contents are copied
into FP.
After these instructions are executed, both SP and FP point to the saved FP contents.
Subtract #12, SP
Finally, the contents of processor registers R0 and R1 are saved by pushing them onto the
stack. At this point, the stack frame has been set up as shown in the fig.
The subroutine now executes its task. When the task is completed, the subroutine pops the
saved values of R1 and R0 back into those registers, removes the local variables from the
stack frame by executing the instruction.
Add #12, SP
And pops the saved old value of FP back into FP. At this point, SP points to the return
address, so the Return instruction can be executed, transferring control back to the calling
program.
Stack Frame for Nested Subroutines