Preface
Acknowledgments
Introduction
Structure of computer architecture (r)evolution
Importance of performance evaluation
Book outline
Performance Metrics
Single-threaded workloads
Multi-threaded workloads
Multiprogram workloads
System throughput
Average normalized turnaround time
Comparison to prevalent metrics
STP versus ANTT performance evaluation
Average performance
Harmonic and arithmetic average: Mathematical viewpoint
Geometric average: Statistical viewpoint
Final thought on averages
Partial metrics
Workload Design
From workload space to representative workload
Reference workload
Towards a reduced workload
PCA-based workload design
General framework
Workload characterization
Principal component analysis
Cluster analysis
Applications
Plackett and Burman based workload design
Limitations and discussion
Analytical Performance Modeling
Empirical versus mechanistic modeling
Empirical modeling
Linear regression
Non-linear and spline-based regression
Neural networks
Mechanistic modeling: interval modeling
Interval model fundamentals
Modeling I-cache and I-TLB misses
Modeling branch mispredictions
Modeling short back-end miss events using Little's law
Modeling long back-end miss events
Miss event overlaps
The overall model
Input parameters to the model
Predecessors to interval modeling
Follow-on work
Multiprocessor modeling
Hybrid mechanistic-empirical modeling
Simulation
The computer architect's toolbox
Functional simulation
Alternatives
Operating system effects
Full-system simulation
Specialized trace-driven simulation
Trace-driven simulation
Execution-driven simulation
Taxonomy
Dealing with non-determinism
Modular simulation infrastructure
Need for simulation acceleration
Sampled Simulation
What sampling units to select?
Statistical sampling
Targeted Sampling
Comparing design alternatives through sampled simulation
How to initialize architecture state?
Fast-forwarding
Checkpointing
How to initialize microarchitecture state?
Cache state warmup
Predictor warmup
Processor core state
Sampled multiprocessor and multi-threaded processor simulation
Statistical Simulation
Methodology overview
Applications
Single-threaded workloads
Statistical profiling
Synthetic trace generation
Synthetic trace simulation
Multi-program workloads
Multi-threaded workloads
Other work in statistical modeling
Parallel Simulation and Hardware Acceleration
Parallel sampled simulation
Parallel simulation
FPGA-accelerated simulation
Taxonomy
Example projects
Concluding Remarks
Topics that this book did not cover (yet)
Measurement bias
Design space exploration
Simulator validation
Future work in performance evaluation methods
Challenges related to software
Challenges related to hardware
Final comment
Bibliography
Author's Biography