Early Branch Target Cache Lookup for Power Reduction

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Data processing systems face inefficiencies in power consumption due to unnecessary instruction accesses caused by latency in branch prediction, leading to pipeline bubbles and increased energy expenditure.

Innovation Solution

The proposed solution involves initiating a branch target cache lookup at least one clock cycle before fetching an instruction from memory, allowing early prediction of branch instructions and preventing unnecessary fetches by accessing and storing prediction information ahead of time, thereby reducing power consumption and pipeline bubbles.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If branch target cache lookup is performed at the same time as instruction fetch, then the system structure is simple, but pipeline bubbles are introduced and power consumption increases due to unnecessary instruction accesses

Engineering Contradiction:
Improveinstruction fetch efficiencyVSAvoidpower consumption
Core Design Contradiction:
ProductivityVSLoss of energy

Solution Approach 1:

The patent performs branch target cache lookup in advance of the instruction fetch operation. Specifically, the lookup is initiated one or more clock cycles before the instruction fetch, allowing the system to determine whether a branch will be taken before actually fetching the instruction. This preliminary action prevents unnecessary instruction fetches and eliminates pipeline bubbles, directly resolving the contradiction between productivity and energy loss

Inventive Principle:
Principle #10Preliminary action

2Loss of energy

If branch target cache lookup is delayed until instruction fetch time, then power consumption is reduced, but pipeline bubbles are introduced reducing processor performance

Engineering Contradiction:
Improvepower consumptionVSAvoidprocessor performance
Core Design Contradiction:
Loss of energyVSProductivity

Solution Approach 1:

The patent initiates the branch target cache lookup one or more clock cycles before the instruction fetch operation. This timing allows the lookup to complete before the instruction is actually fetched, ensuring that pipeline bubbles are eliminated and processor performance is maintained at maximum levels, while still controlling power consumption by avoiding unnecessary fetches

Inventive Principle:
Principle #10Preliminary action

3Productivity

If unnecessary instruction accesses are performed to resolve branch prediction, then processor performance is maintained, but power consumption increases significantly

Engineering Contradiction:
Improveprocessor performanceVSAvoidenergy used by prefetch unit
Core Design Contradiction:
ProductivityVSUse of energy by moving object

Solution Approach 1:

The patent performs the branch target cache lookup in advance, one or more clock cycles before instruction fetch. This early lookup provides the branch prediction information needed to determine whether subsequent instruction fetches are necessary. By knowing the branch outcome beforehand, the prefetch unit can avoid unnecessary instruction accesses, directly reducing energy consumption while maintaining processor performance

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS7797520B2Early branch instruction prediction
Publication Date: 2010.09.14 ARM LTD
  • US7797520B2 patent drawing
  • US7797520B2 patent drawing
  • US7797520B2 patent drawing

AI summary

A data processing apparatus including a prefetch unit for prefetching the instructions from a memory, branch prediction logic and a branch target cache for storing predetermined information about branch operations executed by the processor. The information includes identification of an instruction specifying a branch operation, a target address for said branch operation and a prediction as to whether said branch operation is taken or not. The prefetch unit accesses said branch target cache at least one clock cycle prior to fetching an instruction from said memory, to determine if there is predetermined information corresponding to said instruction stored within said branch target cache.