Firmware Memory Address Reallocation for Multi-Processor Systems
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
In multi-processor computing systems, the limited and fixed allocation of PCI I/O and PCI memory address resources can lead to an out-of-resource (OOR) condition, where some bus devices cannot be allocated memory address resources, resulting in device non-functionality and potential system boot failures.
Innovation Solution
A firmware, compliant with the UEFI Specification, is implemented to dynamically reallocate memory address resources by adjusting allocations at the stack and socket levels, and employing mechanisms such as lowering memory configuration base addresses and using pre-defined device tables to ensure resource allocation success.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If memory address resources are allocated to bus devices in multi-processor computing systems, then device functionality is enabled, but the limited and fixed resource pool leads to out-of-resource conditions when too many devices are present
Solution Approach 1:
The patent implements dynamic resource allocation by allowing the system to adjust and reallocate memory address resources during initialization based on actual device needs and available resources, rather than using static pre-allocated resources. The firmware monitors resource allocation status and performs dynamic adjustments to prevent OOR conditions.
Solution Approach 2:
The system changes allocation parameters by adjusting the distribution of memory address resources between different stacks and sockets. When an OOR condition is detected, the firmware modifies allocation parameters to redistribute resources from successfully allocated devices to those that failed allocation, thereby resolving the resource exhaustion problem.
2Productivity
If memory address resources are reallocated from successfully allocated stacks to unsuccessfully allocated stacks, then resource distribution is optimized, but system complexity increases
Solution Approach 1:
The patent implements a feedback mechanism where the firmware monitors the results of memory address resource allocation and uses this information to guide subsequent reallocation decisions. When allocation fails for certain stacks, the system receives feedback about the OOR condition and automatically triggers reallocation from successfully allocated stacks, creating a closed-loop control system that optimizes resource distribution.
3Reliability
If alignment requirements are enforced for memory address resources, then proper device operation is ensured, but available allocable resources are reduced
Solution Approach 1:
The system adjusts alignment parameters dynamically during resource allocation. When alignment requirements would prevent successful allocation due to resource constraints, the firmware modifies alignment parameters to allow allocation while maintaining sufficient operational correctness, thereby resolving the contradiction between strict alignment enforcement and resource availability.
Data Source
AI summary
A firmware attempts to allocate memory address resources, such as memory addresses in a PCI I/O and a PCI memory address space, to bus devices in a multi-processor computing system. If an out-of-resource (OOR) condition occurs during allocation of the memory address resources, memory address resources can be re-allocated from stacks that were successfully allocated requested resources to stacks that were not successfully allocated requested resources. Memory address resources can also, or alternately, be re-allocated from sockets that were successfully allocated requested resources to sockets that were not successfully allocated requested resources. If stack-level or socket-level readjustment of the memory address resource allocation fails, a base memory address of a configuration memory address space can be lowered, and the allocation can be retried. A pre-defined memory address resource allocation table can also be utilized to allocate the memory address resources following failure of the stack-level and socket-level allocation readjustment.


