Midterm - Study Guide
Midterm - Study Guide
Study Guide
Topics
I. Foundations of Computer Systems
1. Why Parallelism?
2. Concurrency vs. Parallelism
3. Available vs. Utilized Parallelism
i. Functional vs. Data parallelism
4. Techniques
• Pipelining (Stages)
• Multithreading
• SIMD/CUDA/GPU acceleration
1. Low-Level APIs
2. High-Level Models
3. Functional Programming & Parallelism
1
VI. Instruction-Level Parallelism (ILP)
1. MESI Protocol
2. Register Renaming
3. Intel & ARM Microarchitecture
4. Edge AI & Heterogeneous Computing
5. Quantum and Neuromorphic Computing
2
Sample Questions
a. SIMD
b. SISD
c. MIMD
d. MISD
a. Fetch
b. Decode
c. Memory
d. Write-back
a. Hardware
b. Compiler
c. Operating system
d. Scheduler thread
3
Short Answer
1. Differentiate between functional parallelism and data parallelism with one ex-
ample each.
2. Explain briefly why parallelism is very hard to achieve with our current systems.
Assembly Coding
1. Convert the following code into an ASM program, do not use the MUL in-
struction:
def multiply (a , b , c ) :
result = a * b * c
return result
2. Write an Assembly program that will print out the word ‘success’ if the RAX
register contains a positive value and ‘failure’ if the RAX register contains a
negative value.