  This article raises an important and challenging workload characterization
issue: can we uncover each critical component across the stacks contributing
what percentages to any specific bottleneck? The typical critical components
include languages, programming frameworks, runtime environments, instruction
set architectures (ISA), operating systems (OS), and microarchitecture.
Tackling this issue could help propose a systematic methodology to guide the
software and hardware co-design and critical component optimizations. We
propose a whole-picture workload characterization (WPC) methodology to answer
the above issue. In essence, WPC is an iterative ORFE loop consisting of four
steps: Observation, Reference, Fusion, and Exploration. WPC observes different
level data (observation), fuses and normalizes the performance data (fusion)
with respect to the well-designed standard reference workloads suite
(reference), and explores the software and hardware co-design space
(exploration) to investigate the impacts of critical components across the
stacks. We build and open-source the WPC tool. Our evaluations confirm WPC can
quantitatively reveal the contributions of the language, framework, runtime
environment, ISA, OS, and microarchitecture to the primary pipeline efficiency.
