Some challenges in heterogeneous multi-core systems Capstone - Fall 2012 Some challenges in heterogeneous multi-core systems
Multi-core system evolution Big core Big core Big core Big core Big core Big core Small core Small core Small core Small core Small core Small core Small core Small core Traditional homogenous multi-core system Asymmetric/heterogeneous multi-core system
Heterogeneous platform Thread Big core Big core Thread Thread Small core Small core Small core Small core . . . Small core Small core Small core Small core Thread Compute-intensive vs memory/IO-intensive threads Single-ISA high-performance "big” vs low-power "small” types of cores
Challenges Big core Big core Characterization of thread behavior when running on different core types: is it CPU-bound or memory-bound? Or something else altogether? Optimized thread allocation on the different core types Thread allocation/scheduling within each core type Big core Big core ? Thread ? Small core Small core Small core Small core Small core Small core Small core Small core
Characterizing thread behavior Monitor thread performance, measuring counters Cache misses Number of instructions per cycle Predict thread performance in “the other” core type Cores differing in clock speed/frequency Cores differing in micro-architectural characteristics (in-order vs out-of-order) Does big/small core bias influence speed up of threads? Contention in shared resources (cache/memory) Bottleneck identification in multithreaded apps Threads likely on critical path Context switches, cache pollution, hyperthreading?
Scheduling threads to cores Power and performance trade-off Big core consumes more power but shorten execution time Energy = Power x Time Real-time/performance guarantees Latency-sensitive apps Fairness Avoid big core monopolization Power/energy reduction Explicitly account for core power consumption Thread consolidation in few cores as possible power off unused cores energy savings vs. performance degradation (resource contention) Acceleration of critical path in multithreaded apps HPC apps