Microbench

Microbench

MICROBENCH: Extremely Simple Microbenchmarks

The following is a collection of micro-benchmarks inspired by Measuring Experimental Error in Microprocessor Simulation Rajagopalan (Desikan, Doug Burger, and Stephen W. Keckler).

The github link is here: https://github.com/VerticalResearchGroup/microbench

Its intended purpose is in the validation of general purpose out-of-order cores, by targetting individual micro-architectural features or effects. The table below shows the benchmark name, and brief description of the intended architectural effect or behavior. Please note this is by no means an exhaustive collection of mechanisms in an OOO processor.

Benchmark Type Benchmark Codename Description
Control CCa Always Branch
CCe Alternating Control Flow -- Easy to predict with Patern Table
CCh Random Control Flow -- Impossible to predict
CCh_st Control with stores
CCm Control which "mostly" goes in one direction. (heavily biased)
CCl Control with large basic-blocks (potentially larger flush penalty)
CRd Recursive Control Flow -- 1000 Deep
CRf Recursive Control Flow -- Fibonacci
CS1 Switch Case Statement of Size 10-- Different Case Each Time
CS3 Switch Case Statement of Size 10 -- Different Case Every third Time
Data Parallel DP1d Simple Data Parallel Loop -- Double Arithmatic
DP1f Simple Data Parallel Loop -- Float Arithmatic
DPcvt Simple Data Parallel Loop -- Converts Between Double/Float Arithmatic
DPT Simple Data Parallel Loop -- Float Sin Computation
DPTd Simple Data Parallel Loop -- Double Sin Computation
Execution ED1 Integer Execution -- Length 1 Dependency Chain each Loop
EF Floating Execution -- 8 Independent computations Per Loop
EI Integer Execution -- 8 Independent Computations Per Loop
EM1 Integer Execution -- Length 1 Dependency Chain each Loop (with multiplies)
EM5 Integer Execution -- Length 5 Dependency Chain each Loop (with multiplies)
Memory MC Generates Many Conflict Misses
MD Data Cache Resident Linked List Traversal
MI 8 Streams of independent memory access, all cache resident.
MIP Many Instruction Cache Misses
ML2 L2 resident linked list traversal.
Mlsq Dependent Load Store Access
MM Non-Cache resident linked list traversal.
Store Intense STc Repeatedly Store In Consective Addresses, L1 Cache Resident
(stresses WB buffer) STL2 Repeatedly Store In Consective Addresses, L2 Cache Resident
STL2b Repeatedly Store In Consective Addresses, performs load every 512 stores)