Local Random Number Buffer for Hardware Thread Arbitration

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Accessing and managing random numbers in processor execution cores is inefficient, leading to latency and thread starvation due to slow hardware-based random number generation and limited storage, especially when multiple hardware threads compete for these resources.

Innovation Solution

Implementing a local random number buffer with arbitration logic that dynamically allocates and manages random numbers, using a combination of dynamic and reserved pools, and employing wait queues to ensure fair resource usage and prevent starvation, allowing requests to be delayed rather than denied.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If random numbers are allocated to hardware threads on a first-come, first-serve basis, then allocation simplicity is improved, but thread starvation occurs and resource fairness deteriorates

Engineering Contradiction:
Improveallocation simplicityVSAvoidthread starvation prevention
Core Design Contradiction:
Ease of operationVSReliability

Solution Approach 1:

The random number buffer is segmented into multiple dedicated buffers, with each buffer assigned to a specific hardware thread. This segmentation ensures that each thread has its own dedicated storage space for random numbers, preventing thread starvation while maintaining simple first-come, first-serve allocation within each thread's dedicated buffer.

Inventive Principle:
Principle #1Segmentation

2Adaptability or versatility

If a central random number generator is used for all execution cores, then resource sharing is improved, but access latency increases

Engineering Contradiction:
Improveresource sharingVSAvoidaccess latency
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The system segments the random number distribution into a central generator that provides numbers to multiple local buffers in different execution cores. Each core has its own local buffer, enabling parallel access and eliminating the latency bottleneck of a single centralized access path.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Local buffers act as intermediaries between the central random number generator and the hardware threads. These buffers receive random numbers from the central generator and store them locally, allowing threads to access random numbers without direct access to the remote generator, thereby reducing latency.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Device complexity

If limited storage space for random numbers is used, then device complexity is reduced, but allocation efficiency deteriorates

Engineering Contradiction:
Improvestorage structure simplicityVSAvoidallocation efficiency
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The limited storage space is segmented into multiple dedicated buffers, with each buffer assigned to a specific hardware thread. This segmentation allows efficient allocation by ensuring each thread has dedicated space, preventing competition for limited resources, and maximizing utilization without requiring complex allocation algorithms.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS9971565B2Storage, access, and management of random numbers generated by a central random number generator and dispensed to hardware threads of cores
Publication Date: 2018.05.15 ORACLE INT CORP
  • US9971565B2 patent drawing
  • US9971565B2 patent drawing
  • US9971565B2 patent drawing

AI summary

Random numbers within a processor may be scarce, especially when multiple hardware threads are consuming them. A local random number buffer can be used by an execution core to better manage allocation and consumption of random numbers. The buffer may operate in a number of modes, and allow any hardware thread to use a random number under some conditions. In other conditions, only certain hardware threads may be allowed to consume a random number. The local random number buffer may have a dynamic pool of entries usable by any hardware thread, as well as reserved entries usable by only particular hardware threads. Further, a user-level instruction is disclosed that can be stored in a wait queue in response to a random number being unavailable, rather than having the instruction's request for a random number simply be denied. The random number buffer may also boost performance and reduce latency.