Virtual Memory Mapping via Sub-Block Allocation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional computer systems waste memory and restrict minimum allocation size due to fixed page sizes, leading to suboptimal memory usage and complexity in managing memory across different types of memory.

Innovation Solution

Implementing a memory management system that allows virtual addresses to map to sub-blocks of memory smaller than the processor's page size, enabling efficient allocation and management of smaller memory chunks, and allowing multiple virtual addresses to map to a single physical block, thereby optimizing memory usage.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If fixed page size allocation is used to maintain application transparency, then application simplicity is preserved, but memory waste increases and minimum allocation is restricted to page size

Engineering Contradiction:
Improveapplication transparencyVSAvoidmemory waste
Core Design Contradiction:
Ease of operationVSLoss of substance

Solution Approach 1:

The patent divides a physical memory page into multiple sub-blocks (e.g., 512-byte sub-blocks within a 4KB page). The memory control layer can allocate individual sub-blocks to applications rather than entire pages, reducing memory waste while maintaining application transparency through virtual address mapping.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a new dimension of granularity between page and byte levels by creating sub-blocks. This intermediate level allows precise memory allocation (e.g., 512 bytes) without requiring full page allocation (4KB), resolving the contradiction between transparency and waste.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

2Ease of operation

If fixed page size allocation is used, then application transparency is maintained, but minimum allocated block size is restricted to page size

Engineering Contradiction:
Improveapplication transparencyVSAvoidminimum allocated block size
Core Design Contradiction:
Ease of operationVSAdaptability or versatility

Solution Approach 1:

By segmenting pages into sub-blocks, the system enables flexible allocation sizes (e.g., 512 bytes, 1KB, 2KB) while maintaining page-level transparency for applications. The memory control layer handles sub-block management invisibly to applications.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system dynamically allocates sub-blocks of varying sizes within pages based on application needs. The memory control layer can allocate different sub-block sizes (512 bytes, 1KB, etc.) from the same physical page to different applications, providing adaptability while maintaining transparency.

Inventive Principle:
Principle #15Dynamics

3Productivity

If applications manage data movement between memory types, then memory usage can be optimized, but application complexity increases

Engineering Contradiction:
Improvememory usage efficiencyVSAvoidapplication complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The memory control layer acts as an intermediary between applications and physical memory. It transparently manages data movement between fast and slow memory types, allowing applications to use simple virtual addresses while the intermediary optimizes memory usage efficiency.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The memory control layer autonomously manages memory allocation, mapping, and data movement without application intervention. Applications simply request memory using virtual addresses, and the system self-manages the complex tasks of allocating sub-blocks and moving data between memory types.

Inventive Principle:
Principle #25Self-service

4Productivity

If applications have global view of memory need, then memory allocation can be optimized, but memory management becomes non-transparent to applications

Engineering Contradiction:
Improvememory allocation optimizationVSAvoidmemory management transparency
Core Design Contradiction:
ProductivityVSEase of operation

Solution Approach 1:

The memory control layer serves as a global intermediary that has visibility of all memory needs across applications. It optimizes allocation by allocating sub-blocks from the same physical page to multiple applications, achieving global optimization while maintaining transparency through virtual address mapping.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The memory control layer provides universal management for all applications, handling allocation, mapping, and data movement for multiple applications simultaneously. It can allocate sub-blocks from shared physical pages to multiple applications, achieving global optimization while each application experiences simple, transparent access.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS7594093B1Virtual memory mapping for efficient memory usage
Publication Date: 2009.09.22 AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LTD
  • US7594093B1 patent drawing
  • US7594093B1 patent drawing
  • US7594093B1 patent drawing

AI summary

A processor (e.g. utilizing an operating system and/or circuitry) may access physical memory by paging, where a page is the smallest partition of memory mapped by the processor from a virtual address to a physical address. An application program executing on the processor addresses a virtual address space so that the application program may be unaware of physical memory paging mechanisms. A memory control layer manages physical memory space in units of sub-blocks, wherein a sub-blocks is smaller than a size of the page. Multiple virtual address blocks may be mapped to the same physical page in memory. A sub-block can be moved from a page (e.g. from one physical memory to a second physical memory) without moving other sub-blocks within the page in a manner that is transparent to the application program.