Skip to main content

CBP2025 Simulator Framework

Simulator

  • The simulator reads instructions from a trace in .gz format directly.
  • Each instruction from the trace may generate several “pieces”. The number of pieces depends on the number of 64-bit output values and the number of output registers. For instance :
    • A vector instruction that writes 128-bit registers will cause two pieces to be generated.
    • A scalar instruction that writes two general-purpose registers will cause two pieces to be generated.
    • A vector instruction that writes two 128-bit registers will cause four pieces to be generated.
    • A scalar load instruction with base update will produce two pieces: 1 load and 1 ALU for the base-register update.
  • The simulator schedules instructions according to register dependencies, memory dependencies (note: oracle memory disambiguation is modeled), instruction execution latencies, and structural constraints:
    • Window size
    • Superscalar width
    • Execution lanes
    • 3-level cache hierarchy
  • Contestants are provided with a hook to predict conditional branches.
  • All other branches are predicted perfectly.
  • The simulator reports instruction count, cycle count, conditional branch mispredictions, and other relevant measurements, both for the full simulation and post-warmup simulation
    • The first half of the simulation is considered warmup.
    • The second half is what’s used for measuring results.
  • Also see the README for more detailed information.

Training Traces

  • There are 105 training traces.
  • A trace is between 10 million and 130 million instructions.
  • To untar the traces: tar -xvf foo.tar.xz
  • Contestants may also download the traces using gdown:
    • pip install gdown
    • gdown –folder //drive.google.com/drive/folders/10CL13RGDW3zn-Dx7L0ineRvl7EpRsZDW
  • The CBP2025 organizers characterized data-dependent conditional branches in the training traces, which may inspire interesting directions for branch predictor design. Access the PDF file containing this characterization.

All Traces (released after the workshop)

We are pleased to announce that all traces (both the training traces and the test traces used for scoring) are now available: https://zenodo.org/records/15883615