Multiprocessor Memory Allocation via Local Linked List Codeword Tracking

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In multiprocessor environments, existing memory allocation methods lead to inefficiencies due to the need to avoid allocating memory already in use by other processors and the risk of 'starving' other processors for memory, especially in systems with limited high-performance memory, where allocating and utilizing memory resources conflict and result in low overhead and low utilization.

Innovation Solution

Each processor maintains a local linked list to track allocated pages and free codewords, allowing for efficient allocation and reuse of memory by only returning pages to the pool when no codewords remain allocated, and allocating new pages only when necessary, thereby reducing overhead and increasing overall memory utilization.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of manufacture

If memory is divided into fixed sized pages and allocated to processors, then memory allocation is simple and low overhead, but memory utilization becomes inefficient when processors need only small fractions of pages

Engineering Contradiction:
Improvememory allocation simplicityVSAvoidmemory utilization efficiency
Core Design Contradiction:
Ease of manufactureVSQuantity of substance

Solution Approach 1:

The patent segments a memory page into multiple codewords (e.g., 4 codewords per page). Instead of allocating entire pages as the basic unit, the system allocates individual codewords within pages. This segmentation allows processors to allocate only the specific number of codewords needed rather than entire pages, thereby improving memory utilization while maintaining allocation simplicity through the structured division of pages into manageable codeword units.

Inventive Principle:
Principle #1Segmentation

2Ease of manufacture

If processors allocate entire pages even when needing only small fractions, then allocation overhead remains low, but other processors may starve for memory in systems with limited high-performance memory

Engineering Contradiction:
Improveallocation overheadVSAvoidoverall memory utilization
Core Design Contradiction:
Ease of manufactureVSProductivity

Solution Approach 1:

The patent implements dynamic memory allocation where the granularity of allocation is adjusted from entire pages to individual codewords within pages. Processors can dynamically allocate the exact number of codewords needed (e.g., 1-3 codewords) rather than fixed page-sized blocks. This dynamic approach allows better adaptation to varying memory needs across multiple processors, improving overall utilization while maintaining low overhead through efficient tracking of codeword availability within each page.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system changes the allocation parameter from page-sized units to codeword-sized units (where page size is a multiple of codeword size, e.g., 4x). This parameter change enables finer-grained control over memory allocation, allowing processors to allocate smaller fractions of pages when needed. The invention maintains low overhead by using data structures that efficiently track codeword availability within pages, thus resolving the contradiction between allocation simplicity and utilization efficiency.

Inventive Principle:
Principle #35Parameter changes

3Productivity

If pages are returned to the pool immediately when allocation is complete, then memory availability for other processors is improved, but overhead increases due to frequent page swaps

Engineering Contradiction:
Improvememory availabilityVSAvoidallocation overhead
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent implements preliminary tracking of codeword allocation status within pages. Instead of returning entire pages to the pool immediately when allocation operations complete, the system maintains records of which codewords are allocated and which are free within each page. This preliminary action allows the system to retain pages in an allocated state longer, avoiding frequent page swaps to and from the free pool, thereby reducing overhead while still making individual codewords available for reuse within the same page.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10289330B2Allocating shared memory among multiple tasks in a multiprocessor environment
Publication Date: 2019.05.14 SANDISK TECHNOLOGIES LLC
  • US10289330B2 patent drawing
  • US10289330B2 patent drawing
  • US10289330B2 patent drawing

AI summary

The present disclosure generally relates to a method and system for efficiently sharing limited memory among multiple processors. Each processor has a local linked list. The local linked list identifies the pages allocated to the specific processor as well as the number of free codewords for each allocated page. Additionally, the local linked list includes the location of the next free codeword(s) for each allocated page. When all codewords are available, the page is considered free and may be sent back to the page pool used by all of the processors. If there are a sufficient number of contiguous free codewords on an allocated page, then new codeword data may be stored in the page. If there is not a sufficient number of contiguous free codewords on any allocated page, then a new page is allocated from the page pool. Thus, efficient allocate of memory resources is achieved.