Dynamic USB Endpoint Memory Reuse
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current USB endpoint memory allocation is inefficient as it uses fixed, exclusive memory blocks for each endpoint, leading to underutilization of memory space when endpoints are not actively used, particularly in devices with multiple configurations and interfaces.
Innovation Solution
Implementing a system to reallocate USB endpoint memory dynamically based on active configurations and interfaces, allowing the same memory space to be reused across multiple endpoints, reducing the overall memory array size required.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If fixed, exclusive memory blocks are allocated for each USB endpoint, then memory allocation is simple and reliable, but memory utilization is inefficient and overall memory size increases
Solution Approach 1:
The patent implements dynamic memory allocation for USB endpoints by introducing a memory management unit that monitors endpoint activity status and reallocates memory blocks accordingly. Active endpoints retain their memory allocations while inactive endpoints have their memory released for reuse by other endpoints, transforming the static memory allocation scheme into a dynamic one that adapts to changing endpoint states.
Solution Approach 2:
The patent applies the discarding and recovering principle by identifying inactive endpoints and discarding their memory allocations. The freed memory blocks are then recovered and made available for allocation to endpoints in other configurations or interfaces, thereby reducing the total memory array size required while maintaining sufficient memory for active endpoints.
2Adaptability or versatility
If maximum packet size memory is allocated for each endpoint, then all endpoints can be supported, but memory space is wasted when endpoints are not actively used
Solution Approach 1:
The patent implements universality by creating a pool of reusable memory blocks that can be allocated to any endpoint requiring them. Instead of dedicating maximum packet size memory to each endpoint permanently, the system maintains a universal memory pool that serves multiple endpoints across different configurations and interfaces, allowing the same memory space to fulfill multiple functions and support various endpoint requirements.
Solution Approach 2:
The system dynamically adjusts memory allocation based on endpoint activity status. When endpoints become inactive, their memory allocations are released back to the pool. When endpoints become active, memory is allocated from the pool as needed. This dynamic allocation ensures that memory is always available for active endpoints while preventing waste on inactive ones.
3Reliability
If separate memory blocks are allocated for each configuration and interface, then endpoint access is reliable, but memory efficiency decreases due to unused memory portions
Solution Approach 1:
The patent merges the memory allocation schemes for different configurations and interfaces into a unified memory pool. Instead of maintaining separate memory blocks for each configuration and interface, the system combines all endpoint memory requirements into a single pool that is dynamically allocated based on which endpoints are currently active across any configuration or interface, thereby eliminating redundant memory allocations.
Solution Approach 2:
The unified memory pool serves as a universal resource that can be allocated to endpoints from any configuration or interface. The memory blocks in the pool are not tied to specific configurations or interfaces but are available to any endpoint that requires them, making the memory system universal and adaptable to any combination of active endpoints regardless of their configuration or interface affiliations.
Data Source
AI summary
In a system in which individual memory banks may be under individual power control, a subsequent need for a memory bank that is currently in a low power state may be anticipated, so that the memory bank may be powered up in advance of when it is needed, to reduce or eliminate delays caused by waiting for the memory bank to power up and become operational. The anticipation may be based on accessing a predetermined location in another memory bank.


