Vertical Pre-fetch Random Data Buffer for Multi-core Latency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In multi-core processors, existing Random Number Generator (RNG) hardware generates random data with increased latency due to serialized PIO accesses, leading to unfair bandwidth allocation among cores, especially when multiple cores require random data simultaneously.

Innovation Solution

A vertical pre-fetch random data buffer structure is implemented, comprising first, second, and third level buffers, allowing constant generation and dynamic distribution of random data, reducing latency and increasing throughput by enabling cores to fetch data directly from pre-fetch buffers rather than triggering PIO accesses.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of time

If PIO accesses are used to fetch random data from RNG hardware, then random data can be obtained, but latency increases and bandwidth allocation becomes unfair among cores

Engineering Contradiction:
Improverandom data latencyVSAvoidrandom data bandwidth
Core Design Contradiction:
Loss of timeVSProductivity

Solution Approach 1:

The patent implements a pre-fetch buffer that continuously generates and stores random data before it is actually needed by the cores. This preliminary action eliminates the need for cores to wait for RNG hardware when random data is required, as the data is already available in the pre-fetch buffer, thereby reducing latency while maintaining high bandwidth allocation.

Inventive Principle:
Principle #10Preliminary action

2Ease of operation

If multiple cores simultaneously request random data through serialized PIO accesses, then random data can be fetched, but bandwidth allocation becomes unfair and latency increases

Engineering Contradiction:
Improvebandwidth allocation fairnessVSAvoidrandom data latency
Core Design Contradiction:
Ease of operationVSLoss of time

Solution Approach 1:

The patent divides the single RNG hardware resource into multiple independent pre-fetch buffers, one for each core. This segmentation allows each core to have its own dedicated buffer that is independently populated with random data, eliminating the serialization problem when multiple cores simultaneously request random data. Each core can fetch data from its own buffer without waiting for other cores, ensuring fair bandwidth allocation and reduced latency.

Inventive Principle:
Principle #1Segmentation

3Productivity

If RNG hardware generates random data only after a request is made, then data generation is on-demand, but latency increases

Engineering Contradiction:
Improverandom data throughputVSAvoidrandom data latency
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The pre-fetch buffer continuously generates and accumulates random data in advance, maintaining a ready supply of data. This preliminary generation of random data ensures that when cores need random data, it is already available in the buffer, thereby increasing throughput while minimizing the latency that would otherwise occur if data generation waited for requests.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10289331B2Acceleration and dynamic allocation of random data bandwidth in multi-core processors
Publication Date: 2019.05.14 ORACLE INT CORP
  • US10289331B2 patent drawing
  • US10289331B2 patent drawing
  • US10289331B2 patent drawing

AI summary

Systems and methods for use in enhancing and dynamically allocating random data bandwidth among requesting cores in multi-core processors to reduce system latencies and increase system performance. In one arrangement, a multicore processor includes a vertical pre-fetch random data buffer structure that stores random data being continuously generated by a random data generator (RNG) so that such random data is ready for consumption upon request from one or more of a plurality of processing cores of the multicore processor. Random data received at one data buffer from a higher level buffer may be automatically deposited into the lower level buffer if room exists in the lower level buffer. Requesting strands of a core may fetch random data directly from its corresponding first level pre-fetch buffer on demand rather than having to trigger a PIO access or the like to fetch random data from the RNG.