Annotated Instructions for Hardware Performance Counter Segmentation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

When using binary translators for performance analysis, the additional instructions in modified code can distort hardware counter values, making it difficult to accurately measure the performance of original and translated code separately.

Innovation Solution

The method involves annotating instructions with prefixes to distinguish between original application instructions and profiler instructions, configuring hardware performance counters to count only annotated instructions, and using model-specific registers to accurately track events such as retired instructions and cache misses.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Extent of automation

If binary translators are used to instrument applications with additional instructions for performance analysis, then performance monitoring capability is improved, but hardware counter values become distorted and measurement precision deteriorates

Engineering Contradiction:
Improveperformance monitoring capabilityVSAvoidhardware counter values accuracy
Core Design Contradiction:
Extent of automationVSMeasurement precision

Solution Approach 1:

The patent segments instructions into two distinct categories: original application instructions and profiler instrumentation instructions. This segmentation is achieved by annotating original instructions with specific prefixes that hardware performance counters can recognize. The counters are then configured to count only the segmented original instructions, excluding the profiler instructions, thereby maintaining measurement precision while enabling comprehensive performance monitoring.

Inventive Principle:
Principle #1Segmentation

2Productivity

If profiler instructions are added to instrument the application, then performance analysis coverage is improved, but the overhead and complexity of the system increases

Engineering Contradiction:
Improveperformance analysis coverageVSAvoidsystem overhead
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent introduces an intermediary mechanism in the form of prefix annotations that serve as markers between the original instructions and the hardware performance counters. These prefixes act as a communication interface, allowing the counters to selectively identify and count only original application instructions without being affected by profiler instructions. This intermediary approach enables comprehensive performance analysis while minimizing system overhead by using simple prefix bytes rather than complex filtering logic.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Quantity of substance

If hardware performance counters are configured to count all instructions including profiler instructions, then complete instruction tracking is achieved, but the ability to measure original code performance separately is lost

Engineering Contradiction:
Improvetotal instruction countVSAvoidoriginal code performance data
Core Design Contradiction:
Quantity of substanceVSLoss of information

Solution Approach 1:

The patent applies local quality by giving different characteristics to different parts of the instruction stream. Original application instructions are annotated with specific prefixes that make them locally distinguishable from profiler instructions. Hardware performance counters are then configured with selective counting behavior that applies different quality filters: they count instructions with original code prefixes while ignoring instructions with profiler prefixes. This local differentiation preserves original code performance data while still allowing complete instruction tracking.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS9342429B1Counting events using hardware performance counters and annotated instructions
Publication Date: 2016.05.17 GOOGLE LLC
  • US9342429B1 patent drawing
  • US9342429B1 patent drawing
  • US9342429B1 patent drawing

AI summary

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for receiving a plurality of instructions, where the plurality of instructions comprise one or more first instructions from an application and one or more second instructions from a profiler that instruments the application with the one or more second instructions; identifying, for each of one or more instructions in the plurality of instructions, a respective prefix from one or more prefixes based on a category of the respective instruction; annotating each of the one or more instructions with the respective prefix; and for at least one of one or more hardware performance counters, configuring the respective hardware performance counter to count each instruction in the plurality of instructions that is annotated by one or more of the respective prefixes.