EEE440 Computer Architecture
EEE440 Computer Architecture
EEE440 Computer Architecture
Computer Architecture
Lecture 01
INTRODUCTION
Muhammad Kamran Fiaz (kamran@cuiwah.edu.pk)
What will we Learn
What is Computer Architecture
Computer architecture is the study of building entire computer systems.
Processor Memory
Input/Output
Why Should You Care?
Computer science majors are often expected to know something about hardware and
computer architecture.
What are caches, Memories, DDR, GPUs?
Is a 3.2 GHz 8-core processor or a SSD hard disk worth it?
Architecture for Programmers
Knowing about architecture helps to explain why programming languages are designed the way they
are.
What happens when we compile our source code?
Why is computer arithmetic sometimes wrong?
What is a bus error or segmentation fault?
You can also learn how to make your code run faster.
Inlined functions are faster than normal function calls.
Where and how you store your data makes a big difference.
Just rearranging the order of statements can sometimes help!
A lot of software development requires knowledge of architecture.
Compilers generate optimized code for specific processors.
Operating systems manage hardware resources for applications.
Good I/O systems are important for databases and networking.
We’ll touch upon concurrent and parallel programming issues like data dependencies and memory
consistency.
About the Course
This Computer Architecture course is roughly split into three parts.
The first third discusses instruction set architectures—the bridge
between hardware and software.
Next, we introduce more advanced processor implementations. The
focus is on pipelining, which is one of the most important ways to
improve performance.
Finally, we talk about large and fast memory systems, I/O, and how
to connect it all together.
Some of it will be the same topics as DLD, but in more depth.
Processor Memory
Input/Output
Instruction Set Architecture
An instruction set describes the basic functions that a processor can perform. It serves as
an interface between hardware and software; programs are sequences of instructions that
get executed by hardware.
We (i.e., you) do more assembly-language programming too.
Processor Memory
Input/Output
Processor Design
The second part of the semester will address some limitations of the basic computer
design.
Supporting more complex instructions would increase the cycle time.
The CPU hardware is not fully utilized, so it runs slower than it could.
We will focus on pipelining, which is one of the most important ways of speeding up
processors.
The idea behind pipelining is very simple, but there are many details and special cases that must
be handled.
Every modern processor uses pipelining.
Processor Memory
Input/Output
Memory and I/O
Memory and I/O are often bottlenecks in modern machines.
Processor speeds far outpace memory and I/O speeds.
A 4GHz core i7 processor won’t help you browse the web any faster if you’re stuck on a low
speed internet connection.
We’ll study some of the issues associated with memory and I/O.
How caches can dramatically improve the speed of memory accesses.
How processors, memory and peripheral devices can be connected, and CPU support for I/O
communications.
Processor Memory
Input/Output
Performance
We will see how to make processors fast.
We will talk about how to measure performance accurately.
Quantifying performance improvements is critical in evaluating the costs and benefits of different
system designs.
Unfortunately, many companies provide misleading or incomplete information about the
performance of their products.
Our knowledge of performance will help us figure out just how good pipelining and
caching can be.