Reorder Buffer Dynamic Allocation for Multi-Processor Systems
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing digital multi-processor systems face challenges in efficiently scheduling jobs due to increased algorithm complexity, leading to excessive processing power and chip area requirements, as well as low utilization and high power consumption in reorder buffer architectures, particularly when dealing with large job descriptors and multiple processing devices.
Innovation Solution
A reorder buffer with dynamic allocation of memory space through a free pool buffer and deadlock avoidance buffer, allowing for flexible allocation of entries based on consumer demand, and the use of a lookup table to manage tag information and optimize data reordering.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If a reorder buffer is used to reorder out-of-order data from memory, then data reordering capability is improved, but memory utilization efficiency deteriorates due to low utilization of buffer entries
Solution Approach 1:
The patent implements dynamic allocation of reorder buffer entries through a free pool buffer mechanism. Instead of static allocation where entries are fixed to specific consumers, the system dynamically assigns free entries to consumers based on实际需求. This allows the system to adapt buffer utilization to actual workloads, preventing wasted memory resources while ensuring sufficient buffer capacity for data reordering operations.
Solution Approach 2:
The patent changes the allocation parameter from fixed/static to dynamic/variable. By introducing a free pool buffer that tracks available entries and allows consumers to claim entries dynamically, the system transforms the rigid memory allocation into a flexible parameter that responds to real-time demands, thereby improving memory utilization efficiency while maintaining reordering capability.
2Productivity
If multiple processing devices are added to increase processing power, then productivity is improved, but device complexity increases due to more processing devices and job managers
Solution Approach 1:
The patent divides the system into multiple independent processing devices, each with its own job manager, creating a distributed architecture. This segmentation allows the system to scale productivity by adding more processing devices without creating a single point of complexity. Each module operates independently, reducing the complexity burden on any single component while maintaining overall system capability.
Solution Approach 2:
The patent designs a universal job manager architecture that can manage multiple processing devices using the same core mechanisms. The distributed job manager system uses standardized protocols and data structures across all processing devices, allowing the same software framework to handle diverse hardware configurations. This multi-functionality reduces complexity by reusing proven patterns rather than creating device-specific solutions.
3Adaptability or versatility
If job descriptors are buffered for all processing devices, then job scheduling flexibility is improved, but chip area increases due to excessive buffering requirements
Solution Approach 1:
The patent implements partial buffering by maintaining job descriptors only for actively processing devices rather than buffering for all possible devices. The system buffers job descriptors to the extent necessary for current operations, using the free pool mechanism to allocate buffer space dynamically. This partial action approach reduces chip area requirements while preserving scheduling flexibility for actively used processing devices.
Solution Approach 2:
The patent introduces dynamic buffering where the amount of buffered job descriptor data adapts to actual system needs. Instead of fixed buffering capacity for all devices, the system dynamically allocates buffer resources based on which devices are currently active and what their buffering requirements are. This dynamic approach reduces overall chip area requirements while maintaining the flexibility to handle diverse job scheduling needs.
4Productivity
If pre-fetching job descriptor sections is implemented to reduce waiting time, then productivity is improved, but device complexity increases due to additional buffering and coordination requirements
Solution Approach 1:
The patent implements pre-fetching of job descriptor sections before they are actually needed by processing devices. The system anticipates future needs and fetches data in advance, reducing waiting time during critical operations. This preliminary action is coordinated through the distributed job manager that tracks which sections need to be pre-fetched and manages the pre-fetching process, thereby improving productivity without creating unmanageable complexity.
Solution Approach 2:
The patent uses feedback mechanisms where processing devices signal when they need specific job descriptor sections, and the system responds by pre-fetching those sections. The feedback loop includes tracking which sections are currently being processed, which are ready, and which need to be fetched. This feedback-driven pre-fetching coordinates complexity through structured information flow, improving productivity while keeping the coordination manageable through clear state tracking.
Data Source
AI summary
A method utilizing a system encompassing a free pool buffer; a deadlock avoidance buffer; and a controller communicatively coupled to the free pool buffer and the deadlock avoidance buffer to reorder out-of-order responses to fetch requests into correct order by: receiving a fetch request on behalf of a consumer; allocating space first in the free pool buffer and when such space is not available then allocating space in a division associated with the consumer in the deadlock avoidance buffer. Issuing segment(s) of the fetch request including associated tag(s) to one of one or more memories; writing response data for each of the segment(s) to the allocated space in the free buffer or the deadlock avoidance buffer according to each of the associated tag(s); and transferring the response data to the consumer according to an entry in an ordering first-in, first-out buffer and an entry in a pending request array.


