Dynamic Memory Allocation for SRIOV Virtual Functions

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In Single Root I/O Virtualization (SRIOV) environments, existing methods inefficiently allocate PCIe device memory, dividing it evenly among virtual functions regardless of their memory needs, leading to suboptimal utilization and lack of isolation between functions.

Innovation Solution

A memory allocating framework dynamically partitions physical memory by mapping available target locations in Base Address Registers (BARs) to virtual functions, allowing exclusive access and efficient allocation based on request, using identifiers and offsets to manage access requests and ensure isolation.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If memory is divided evenly among virtual functions, then each virtual function receives a predefined size of memory, but memory utilization becomes inefficient when some virtual functions require little or no memory

Engineering Contradiction:
Improvememory allocation reliabilityVSAvoidmemory utilization efficiency
Core Design Contradiction:
ReliabilityVSLoss of energy

Solution Approach 1:

The patent segments the parent virtual function's memory space into multiple child virtual functions, allowing each child to receive only the memory portion it actually needs. The memory management unit divides the parent VF's address space and allocates specific segments to individual child VFs based on their requirements, rather than allocating equal memory to all VFs. This segmentation enables efficient memory utilization while maintaining reliable allocation for each virtual function.

Inventive Principle:
Principle #1Segmentation

2Productivity

If memory is allocated to multiple virtual functions, then more virtual functions can simultaneously use device memory, but isolation between virtual functions becomes challenging

Engineering Contradiction:
Improveconcurrent virtual function operationsVSAvoidvirtual function isolation
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent introduces a memory management unit as an intermediary between virtual functions and the physical device memory. This MMU maintains translation tables that map virtual addresses from multiple child VFs to distinct physical memory regions. The MMU intercepts and translates memory access requests, ensuring that each child VF can simultaneously access memory while the intermediary enforces isolation by preventing unauthorized access to other VFs' memory spaces through address translation and permission checking.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Ease of manufacture

If a predefined size of memory is assigned to each virtual function, then allocation is simple, but it becomes impossible to dynamically adjust memory allocation based on actual needs

Engineering Contradiction:
Improvememory allocation simplicityVSAvoidmemory allocation flexibility
Core Design Contradiction:
Ease of manufactureVSAdaptability or versatility

Solution Approach 1:

The patent implements dynamic memory allocation where the memory management unit can adjust the size and distribution of memory segments allocated to child virtual functions based on their actual needs. When a child VF is created or its requirements change, the MMU dynamically recalculates and redistributes the parent VF's memory space among child VFs. This dynamic adjustment maintains operational simplicity through automated management while providing the flexibility to adapt memory allocation to changing virtual function requirements.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS10852967B2Facilitating virtual functions using memory allocation in a virtualization environment
Publication Date: 2020.12.01 MELLANOX TECHNOLOGIES LTD(IL)
  • US10852967B2 patent drawing
  • US10852967B2 patent drawing
  • US10852967B2 patent drawing

AI summary

Apparatuses and methods are described that provide for a mechanism for allocating physical device memory for one or more virtual functions. In particular, a memory allocating framework is provided to utilize device memory more efficiently by mapping at least one target location of the physical memory in a Base Address Register (BAR) associated with the virtual function from a plurality of available target locations based on an allocation request. The memory allocating framework is further configured to compare an indication associated with the requesting virtual function to an identifier of the requested target location. Moreover, the memory allocating framework is further configured to allow the simultaneous use of more than one virtual function at a time while providing isolation between multiple virtual functions.