Optimization Manuals Updated
Agner Fog have updated his amazing set of optimization manuals, do check them out!
- 1. Optimizing software in C++:
An optimization guide for Windows, Linux and Mac platforms
- This is an optimization manual for advanced C++ programmers.
Topics include: The choice of platform and operating system. Choice of
compiler and framework. Finding performance bottlenecks.
The efficiency of different C++ constructs. Multi-core systems.
Parallelization with vector operations. CPU dispatching. Efficient
container class templates. Etc.
File name: optimizing_cpp.pdf, size: 703576, last modified: 2009-Jan-23.
Download.
- 2. Optimizing subroutines in assembly language:
An optimization guide for x86 platforms
- This is an optimization manual for advanced assembly language programmers
and compiler makers.
Topics include: C++ instrinsic functions, inline assembly and stand-alone assembly.
Linking optimized assembly subroutines into high level language programs.
Making subroutine libraries compatible with multiple compilers and operating systems.
Optimizing for speed or size. Memory access. Loops. Vector programming (XMM, SIMD).
CPU-specific optimization and CPU dispatching.
File name: optimizing_assembly.pdf, size: 757202, last modified: 2009-Jan-23.
Download.
- 3. The microarchitecture of Intel and AMD CPU’s:
An optimization guide for assembly programmers and compiler makers
- This manual contains details about the internal working of various microprocessors
from Intel and AMD. Topics include: Out-of-order execution, register renaming,
pipeline structure, execution unit organization and branch prediction algorithms
for each type of microprocessor. Describes many details that cannot be found
in manuals from microprocessor vendors or anywhere else. The information is
based on my own research and measurements rather than on official sources.
This information will be useful to programmers who want to make CPU-specific
optimizations as well as to compiler makers and students of microarchitecture.
File name: microarchitecture.pdf, size: 1093888, last modified: 2009-Jan-23.
Download.
- 4. Instruction tables:
Lists of instruction latencies, throughputs and micro-operation
breakdowns for Intel and AMD CPU's
- Contains detailed lists of instruction latencies, execution unit throughputs,
micro-operation breakdown and other details for all application instructions
of most microprocessors from Intel and AMD. Intended as an appendix to the
preceding manuals.
File name: instruction_tables.pdf, size: 982795, last modified: 2008-Aug-24.
Download.
- 5. Calling conventions for different C++ compilers and operating systems
- This document contains details about data representation,
function calling conventions, register usage conventions, name mangling schemes,
etc. for many different C++ compilers and operating systems. Discusses compatibilities
and incompatibilities between different C++ compilers. Includes information that
is not covered by the official Application Binary Interface standards (ABI's).
The information provided here is based on my own research and therefore
descriptive rather than normative.
Intended as a source of reference for programmers who want to make function
libraries compatible with multiple compilers or operating systems and for
makers of compilers and other development tools who want their tools to be
compatible with existing tools.
File name: calling_conventions.pdf, size: 328903, last modified: 2009-Jan-23.
Download.
Cheers,
