Computer architecture defines how a computer’s components communicate through electronic signals
to perform input, processing, and output operations.
It covers the design and organization of the CPU, memory, storage, and input/output devices.
Describes how these components interact through buses, control signals, and data pathways.
It directly influences the overall speed, functionality, and reliability of a computer system.
Basic Computer Structure
This section introduces the fundamentals of computer organisation and architecture, explaining system
components, design issues, and different architectural models.
What is Computer?
Issues in Computer Design
A Computer involves many components that have their own speed, size and power consumption
requirements. There are different operating systems that use these computers. Due to different
kind of devices and software, the following issues arise in design.
Performance
Maximising processing speed, memory speed, and I/O performance.
Designing energy-efficient systems for reducing environmental impact and improving battery life.
Processors operate much faster than memory and IO devices, creating a bottleneck that can
significantly slow down the overall system.
Security
Protecting sensitive data from unauthorized access and breaches through robust encryption and
authentication.
Compatibility and User Experience
Ensuring that systems run seamlessly across various operating systems and hardware
configurations.
Designing systems that are intuitive and easy for users to operate.
System Architecture and Infrastructure
Building fault tolerant systems that can withstand and recover from failures without significant
downtime.
Modern systems are highly complex, requiring careful management of design, optimization, and
integration to avoid excessive costs and development time.
Resource and Technical Constraints
It must work within the constraints of physical limitations, acknowledging that both computer
speed and memory capacity are finite.
Effective techniques are needed to manage memory usage, especially when dealing with large
applications or datasets, to prevent slowdowns and crashes.
Von Neumann Architecture
Von Neumann architecture is a computer design where instructions and data are stored in the
same memory space. This means the CPU fetches both instructions and data from the same
memory, using the same pathways. Historically there have been 2 types of Computers:
Fixed Program Computers - Their function is very specific, and they couldn't be reprogrammed,
e.g., calculators.
Stored Program Computers - These can be programmed to carry out many different tasks;
applications are stored on them, hence the name.
Components of Von Neumann Architecture
The structure described in the figure outlines the basic components of a computer system,
particularly focusing on the memory and processor. It is made up with three main components:
CPU
Memory
I/O Devices
We have these 3 components lets us see more about them in detail:
CPU (Central Processing Unit)
The central processing unit (CPU) is the main part of a computer that controls how it works. It is
made up of the control unit, main memory, and the arithmetic logic unit (ALU). The CPU handles
instructions from programs, processes data, stores information, and produces results. Without
the CPU, a computer cannot perform tasks or run any applications.
Basic CPU structure, illustrating ALU
CU (Control Unit)
The control unit manages how the processor works by sending control signals. It decides how
data should move inside the computer, controls input and output operations, and fetches the
instructions from memory for execution.
ALU (Arithmetic and Logic Unit)
The arithmetic and logic unit is the part of the CPU that handles the calculations and decision-
making tasks. It performs arithmetic operations like addition and subtraction, logical operations
such as comparisons, and tasks like shifting bits in data.
Registers
Registers are the fastest type of memory located inside the CPU. They temporarily store
information that the processor is currently working on, making program execution and
operations faster and more efficient. Register serve as the CPU's primary working memory.
PC (Program Counter): Keeps track of the address of the next instruction to be executed.
IR (Instruction Register): Holds the current instruction being executed.
MAR (Memory Address Register): Stores the address of the memory location being accessed.
MDR (Memory Data Register): Temporarily holds data being transferred to or from memory.
Accumulator: A register that stores intermediate results of arithmetic and logic operations.
General Purpose Registers: Used for temporary storage of data during processing.
Bus
The bus is a communication system that transfers data, addresses, and control signals between
the CPU, memory, and I/O devices. In Von Neumann architecture, a single bus is shared for both
data and instructions, which can create a bottleneck (known as the Von Neumann bottleneck).
I/O Bus
I/O Interface: Connects the CPU and memory to input/output devices.
Device: Refers to external hardware like keyboards, monitors, or storage devices.
Key Characteristics
1. Single Memory for Data and Instructions: Both data and program instructions are stored in the
same memory.
2. Shared Bus: A single bus is used for transferring data, addresses, and control signals, which can
limit performance.
3. Sequential Execution: Instructions are executed one at a time in a sequential manner.
Von Neumann bottleneck
Whatever we do to enhance performance, we cannot get away from the fact that instructions
can only be done one at a time and can only be carried out sequentially. Both of these factors
hold back the competence of the CPU. This is commonly referred to as the 'Von Neumann
bottleneck'. We can provide a Von Neumann processor with more cache, more RAM, or faster
components but if original gains are to be made in CPU performance then an influential
inspection needs to take place of CPU configuration.
Applications
Von Neumann architecture is the foundation of most modern computing systems, where both
instructions and data are stored in the same memory. Here are the some applications:
Personal Computers and Laptops: Most PCs and laptops (Intel/AMD) use a shared memory that
stores both programs and data, enabling efficient running of software like Windows and
browsers. Example: Intel Core i7, AMD Ryzen processors.
Smartphones and Tablets: ARM-based devices use the shared memory model to support
multitasking and power efficiency in apps on iOS and Android. Example: Qualcomm Snapdragon,
Apple A-series chips
Embedded Systems:Microcontrollers in cars, IoT devices, and appliances use Von Neumann
architecture for simple, cost-effective processing of instructions and data in the same
memory. Example Arduino Uno (ATmega328), older ARM Cortex-M designs.
Servers and Cloud Computing: Servers utilize shared memory systems to handle large-scale
software and data tasks for services like AWS and Netflix.
Gaming Consoles: Consoles like PS5 and Xbox use unified memory to run game code and
manage inputs, enabling smooth gameplay.
Harvard Architecture
Flynn's Taxonomy
Flynn's Taxonomy
Flynn's Taxonomy classifies computer architectures according to how many instruction streams
(processes) and data streams they can process simultaneously, dividing them into four
categories: SISD, SIMD, MISD, and MIMD.
Single-Instruction, Single-Data (SISD) Systems
An SISD computing system is a uniprocessor machine which is capable of executing a single
instruction, operating on a single data stream. In SISD, machine instructions are processed in a
sequential manner, and computers adopting this model are popularly called sequential
computers. Most conventional computers have SISD architecture. All the instructions and data to
be processed have to be stored in primary memory.
The speed of the processing
element in the SISD model is limited(dependent) by the rate at which the computer can transfer
information internally. Dominant representative SISD systems are IBM PC, workstations.
Single-Instruction, Multiple-Data (SIMD) Systems
An SIMD system is a multiprocessor machine capable of executing the same instruction on all the
CPUs but operating on different data streams. Machines based on an SIMD model are well suited
to scientific computing since they involve lots of vector and matrix operations.
So that the information can be passed to all the processing elements (PEs) organized data
elements of vectors can be divided into multiple sets(N-sets for N PE systems) and each PE can
process one data set. Dominant representative SIMD systems is Cray’s vector processing
machine.
Multiple-Instruction, Single-Data (MISD) systems
An MISD computing system is a multiprocessor machine capable of executing different
instructions on different PEs but all of them operating on the same dataset.
Example Z = sin(x)+cos(x)+tan(x) The system performs different operations on the same data set.
Machines built using the MISD model are not useful in most of the application, a few machines
are built, but none of them are available commercially.
Multiple-Instruction, Multiple-Data (MIMD) Systems
An MIMD system is a multiprocessor machine which is capable of executing multiple instructions
on multiple data sets. Each PE in the MIMD model has separate instruction and data streams;
therefore machines built using this model are capable to any kind of application. Unlike SIMD
and MISD machines, PEs in MIMD machines work asynchronously.
MIMD machines are classified into shared-memory and distributed-memory models depending
on how processors connect to memory. In a shared-memory MIMD system (tightly coupled), all
processors use the same global memory, and communication happens through it. Any change
made by one processor is visible to all others. Examples include Silicon Graphics and Sun/IBM’s
SMP systems.
In a distributed-memory MIMD system (loosely coupled), each processor has its own local
memory, and they communicate through an interconnection network (like tree or mesh).
Shared-memory systems are easier to program but harder to scale and more vulnerable to
failures, since a fault can affect the whole system. In contrast, distributed-memory systems are
more scalable and fault-tolerant, since each processor is independent. For real-world use,
distributed-memory MIMD is generally considered superi
Number System and Data Representation
Covers how data, numbers, and characters are represented inside a computer, along with techniques to
ensure accuracy and reliability in storage and communication.
Number Systems
Base Conversions
Character Representation
Error Detection and Correction Codes
Fixed & Floating-Point Formats
Representing numbers in digital systems using fixed-point and floating-point formats for precision and
range.
Fixed Point Representation
Floating Point Representation
Digital Logic & Circuits
Designing digital systems using logic gates, Boolean algebra, and combinational/sequential circuits.
Digital Electronic and Logic Gate
Boolean Algebra
Combinational Circuits and Sequential Circuits
Register Transfer & Micro-Operations
Managing data movement and operations in registers using bus/memory transfers, arithmetic, and shift
micro-operations.
Register Transfer Language
Data Transfers (Bus/Memory)
Arithmetic Micro-Operations
Shift Micro-Operations
Microoperations
Hardwired vs. Microprogrammed Control Unit
Instruction Set Architecture (ISA) & Control Flow
Defining the set of instructions, formats, and addressing modes for processor communication.
Instruction Format
Addressing Modes
Microarchitecture and Instruction Set Architecture
Timing and Control
RISC vs CISC Architectures
Computer Arithmetic
Explore all the concepts of computer arithmetic, including ALU operations, number complements,
division algorithms, Booth’s method, overflow handling, and negative number representation.
ALU and Data Path
Difference between 1’s complement and 2’s complement
Restoring Division Algorithm
Non-Restoring Division
Booth’s Algorithm
Overflow in Arithmetic Addition
Memory Organization
This section explains memory organization, covering types of memory, storage hierarchy, addressing
methods, virtual memory techniques, and key architectural differences.
Memory & Memory Units
Paging
Segmentation
Virtual Memory
Page Replacement Algorithms
Translation Lookaside Buffer
NUMA vs UMA Architectures
Memory Interleaving
Byte Addressable & Word Addressable Memory
Simultaneous vs Hierarchical Access Memory
Input/Output Organization
This section covers input/output organization, including interfaces, interrupts, DMA, peripheral devices,
synchronization methods, bus systems, and processor communication.
Introduction to I/O Interface
I/O Interface (Interrupt and DMA Mode)
Memory mapped I/O and Isolated I/O
Interrupts
DMA
Modes of DMA Transfer
DMA controller 8257/8237
Programmable peripheral interface 8255
Asynchronous & Synchronous I/O Synchronization
Interface 8255 with 8085 microprocessor for 1’s and 2’s complement of a number
Microcomputer system
Working of 8085-based Single board microcomputer
Interface 8254 PIT with 8085 microprocessor
Synchronous Data Transfer
Input-Output Processor
Bus Systems
MPU Communication
BUS Arbitration
Pipelining & Hazards
This section explains pipelining and parallel processing, covering ILP, execution stages, hazards, VLIW,
branch prediction, and Amdahl’s law.
Pipelining Set 1 (Execution, Stages and Throughput)
Pipelining Set 2 (Dependencies and Data Hazard)
Instruction Level Parallelism
Very Long Instruction Word (VLIW) Architecture
Types and Stalling
Dependencies and Data Hazard
Branch Prediction in Pentium
Amdahl's law and its Proof