A CPU abstract resource mapping model

Palmed Demo explained

Basic blocks

A basic block is a block of assembly, in GAS syntax on this page, that contains no branches. Any branching instruction send in the basic block input form will be ignored while plugging it into the model.

Supported instructions

For various reasons, our models are not supporting every single instruction in the ISA. When an inputed basic block contains an unsupported instruction, it is plainly ignored while computing the output — and a banner states this clearly. Plainly ignored means that the computation will proceed as if this instruction was not present in the output at all.

Here follows a list of unsupported instruction classes.

Unsupported on every ISA

Unsupported in x86-64

Output

Throughput measurement

Our model is focused on throughput. This means that every insight infered on a basic block is computed assuming:

Metrics

Cycles. The number of CPU cycles needed to execute the basic block once. This number might be fractional, since we assume we are in steady state (see above).

IPC (Instructions Per Cycle). The number of instructions executed per CPU cycle, on average over this basic block. This metric is relevant to HPC experts as it describes how busy the CPU is.

Resources

Each abstract resource used by the given basic block is shown on this part. Each resource can be used up to 1 per CPU cycle; thus, the Cycles metric for this basic block is the maximal use of a resource.

The bottleneck resource for a given basic block is the most used one; finding a way to alleviate the use of this resource will improve the runtime of this basic block.

The use of each resource is the sum of its use by each individual instruction. This detail can be seen by clicking on a resource in the output, and can be used to focus the efforts on the instructions that actually contribute significantly to a bottleneck.