Store Buffer Allocation for Variable Length Operations

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Efficient allocation of store buffer resources becomes challenging for high-performance processors when dealing with variable length store operations, as existing methods either reject data due to insufficient resources or incur higher latency by moving allocation back to the issuing unit.

Innovation Solution

A method and system for implementing store buffer allocation that involves receiving store address and data requests, determining alignment and data steering information, maintaining a reservation list for each storage buffer, and reserving buffers based on available entries to handle multiple data operations aligned by memory address, allowing partial data operations and intelligent buffer allocation.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If store buffer allocation is performed at address generation time with fixed data length, then resource allocation is simple, but it cannot handle variable length store operations efficiently

Engineering Contradiction:
Improvevariable length store operation supportVSAvoidbuffer allocation complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The store buffer is segmented into multiple fixed-size entries (e.g., 64-byte entries) that can be individually allocated and released. This segmentation allows variable length store operations to be broken down into discrete buffer entries, enabling flexible allocation without requiring the entire buffer to be reserved at once.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The buffer allocation system dynamically adjusts the number of buffer entries reserved based on the actual data length being stored. Instead of static allocation, the system reserves only the necessary number of entries for each store operation, allowing the buffer management to adapt to varying data lengths while maintaining efficient resource utilization.

Inventive Principle:
Principle #15Dynamics

2Reliability

If all buffer resources are reserved prior to starting the operation, then resource availability is guaranteed, but it reduces productivity when resources are insufficient

Engineering Contradiction:
Improvebuffer availabilityVSAvoidstore operation throughput
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The system performs preliminary allocation of buffer entries at address generation time, reserving the necessary number of entries based on the expected data length. This preliminary action ensures that when the store operation begins, the buffer resources are already prepared and available, eliminating delays caused by resource unavailability during execution.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The buffer allocation parameters (number of entries to reserve) are dynamically adjusted based on the data length parameter. By changing the allocation parameter to match the actual storage needs, the system ensures sufficient buffer availability while maximizing productivity by not over-reserving resources that would block other operations.

Inventive Principle:
Principle #35Parameter changes

3Productivity

If allocation is moved back to the issuing unit, then partial data can get through, but latency increases due to distance from allocation to releasing logic

Engineering Contradiction:
Improvepartial data throughputVSAvoidallocation latency
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The store execution unit acts as an intermediary between the issuing unit and the store buffer. It receives allocation requests from the issuing unit, manages the buffer entry reservations, and coordinates with the releasing logic. This intermediary role allows partial data to be processed while maintaining efficient latency by keeping the allocation logic close to the buffer management hardware.

Inventive Principle:
Principle #24Intermediary (Mediator)

4Ease of manufacture

If buffer resources are allocated based on fixed data length, then allocation is straightforward, but it cannot optimize for variable length operations

Engineering Contradiction:
Improveallocation simplicityVSAvoidbuffer utilization efficiency
Core Design Contradiction:
Ease of manufactureVSProductivity

Solution Approach 1:

The allocation system dynamically determines the number of buffer entries to reserve based on the actual data length parameter of each store operation. For variable length operations, it calculates and reserves the appropriate number of entries (e.g., ceil(data_length/64) entries for 64-byte aligned buffers), optimizing buffer utilization while maintaining straightforward allocation logic.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system changes the allocation parameter (number of buffer entries) based on the data length parameter. By adjusting this parameter dynamically, the system achieves both simplicity (through a clear calculation rule) and efficiency (through optimized buffer usage that matches actual storage needs).

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS7870314B2Method and system for implementing store buffer allocation
Publication Date: 2011.01.11 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US7870314B2 patent drawing
  • US7870314B2 patent drawing
  • US7870314B2 patent drawing

AI summary

A method and system for implementing store buffer allocation for variable length store data operations are provided. The method includes receiving a store address request and at least one store data request and stepping through data operations for each of the store data requests and an address range for the store data requests to determine alignment and data steering information used to select a storage buffer destination for the data in the store data requests. The method further includes determining availability of the storage buffer by maintaining a reservation list for each storage buffer, maintaining a count of the number of available entries for each storage buffer, updating the reservation list to reflect a reservation acceptance for designated available entries, and clearing entries upon completion of the processing of store data operations. The method also includes reserving the selected storage buffer when the number of available entries meets or exceeds the number of entries required for the data.