What is a core in computing?
A single processing unit that executes instructions, containing components that fetch, decode, and execute instructions, plus functional units for arithmetic operations
What does MIMD stand for in Flynn’s taxonomy?
Multiple Instruction Multiple Data - single cores are SISD (Single Instruction Single Data)
What are some examples of MIMD systems?
Multi-core CPUs, clusters/supercomputers
How many cores does the SW26010 chip have?
260 cores - used in China’s Sunway TaihuLight supercomputer
What is simultaneous multithreading (SMT)?
A technique where multiple threads run on the same core; if one thread waits for memory access, another takes over
What are the benefits of simultaneous multithreading?
Requires only 5% increase in chip area but provides 15-30% performance improvement
When does simultaneous multithreading show its benefits?
When threads frequently wait for memory access or other operations
What is the processor-memory gap?
Memory access rates have been increasing far slower than processor performance
What are the three levels of cache in modern CPUs?
L1 (closest to core), L2 (shared between cores), L3 (shared across all cores)
What is cache coherency?
Maintaining consistent memory views for all cores when multiple cores access the same memory location
What happens when Core 1 modifies data in its L1 cache?
Core 2’s view of that data becomes stale until cache coherency protocols update it
What is cache snooping?
A common method for maintaining cache coherency where cache controllers detect and propagate writes to higher-level caches
What is false sharing?
When cores access different variables that happen to be in the same cache line, causing unnecessary coherence traffic and performance loss
What is the benefit of cache sharing between cores?
A core can access data already loaded into a shared cache by another core, reducing memory access time
What is superlinear speedup?
When parallel performance exceeds the number of cores due to cache sharing benefits
What are the differences between processes and threads?
Processes: separate address space, expensive to create, explicit communication; Threads: shared address space, cheap to create, implicit communication
What are kernel threads vs user-level threads?
Kernel threads: managed by OS, direct hardware access; User-level threads: managed by thread library, mapped to kernel threads by OS scheduler
What frameworks support multi-core programming?
Java (Thread class), C++ (std::thread), C (pthread), Python (threading), OpenMP
What is the limitation of Python’s threading module?
Prior to Python 3.14, had Global Interpreter Lock (GIL) limiting execution to single thread
What is the advantage of OpenMP over explicit threading?
Higher-level directives that reduce development time and explicit thread management